基本概念与第一个区块链应用

基本概念与第一个区块链应用

区块链原理admin2020-11-21 13:54:5831A+A-

  为您提供了一种经济的方式来启动区块链网络。然后,您可以轻松部署区块链应用,比如这里描述的投票应用。

  区块链(Blockchain)技术正在迅速发展,各行各业都正以极大的热情拥抱它。作者相信区块链将成为对信息科技领域产生革命性影响的一项新技术。目前,Hyperledger Fabric 正是此领域一个重要的技术框架与平台。

  本文既是 Hyperledger Fabric(以下简称 Fabric)的实用教程,也是其学习、研究笔记。读者可以与作者一起,一步一步地学习 Fabric 基础知识,利用 Hyperledger Composer(以下简称 Composer)搭建 Fabric 本地开发环境,运行示例应用;并进一步分析、深入了解其技术结构与特点。

  本文尽量不去简单复述其他相关文档,着重从实用角度与读者一起迅速建立对 Fabric 的直观认识,并在实践中逐渐理解区块链技术。本系列文章有三个部分,此为第一部分。

  在本文示例中,Fabric 的版本为 1.1.0,Composer 的版本为 0.19.1。在以后的学习过程,它们可能随时有版本更新,而 micro 版本的改动应该对示例操作不会有影响。但仍请注意版本更新可能带来的变化。

  用一句话来描述区块链:区块链是一个共享的不可修改的账本,可用来记录一个网络上所有交易的历史。这里所说的交易翻译自 Transaction。也可以将之称为事务,本文将之统一称为交易。

  Hyperledger 是 Linux 基金会主持的一个开源项目,启动于 2015 年,其核心目标是建立开放的、标准化的、企业级的、能支持商业交易的分布式账本的框架与基础代码。

  Hyperledger Composer 也是 Hyperledger 项目的一个组成部分。通过它,人们可以更快速、容易地建立区块链业务模型,进行区块链网络及应用的开发、部署,并与现有系统、数据进行集成。

  本文中,对于 Fabric 的学习,正是以 Composer 作为入口与基础工具,这样学习的效率更高。在学习初期,Fabric 与 Composer 的知识是紧密结合的,在后期,我们会对这两项技术分别深入学习、研究。

  区块链技术涉及到的技术比较多,本文希望能帮助读者将焦点一直放在区块链本身上,即使对某项技术学习得不是非常深入,也不会影响对于 Fabric 的学习。一般来说,希望读者还是能对以下知识预先有所了解:Ubuntu,Docker,Node.js,Javascript,npm,CA。

  现在,我们使用Ubuntu 16.04 LTS 64-bit,作为我们的区块链部署系统。对于 Ubuntu 系统的安装与管理,这里不再详述,但可以通过以下命令确认版本信息:

  我们在学习过程中,几乎所有操作都通过一个专门的用户来完成(在本文示例中,使用的用户名为:fabric;读者可以根据需要使用自己的用户名,但请注意在后续示例中要相应修改)。请不要使用 root 用户。

  安装成功后,会显示以下内容,包括安装的软件名称及版本号。(后续版本可能会有变化。)

  请 退出 当前用户会话, 关闭客户端工具与 Ubuntu 的连接; 并 重新 以用户 fabric 登录 U b untu , 以 使系统设置生效。

  如果是自行手动安装这几项软件但版本号并不完全一致,可能会给后续过程带来一些障碍。所以,为节约时间,请尽量使用这个自动安装脚本;或手动安装这些版本的软件。

  Hyperledger Composer 是一个开放的开发框架、工具集,可以帮助人们更容易地开发、部署区块链应用。它支持 Fabric,并提供 Javascript SDK。我们可以通过 npm 来安装它的一系列组件。

  我们之后许多操作(安装、部署、管理)都将通过 Composer CLI 完成。

  Composer REST server 可以根据我们开发、部署的区块链应用自动生成一些 RESTful API 接口,以方便通过浏览器、curl 等工具对之进行访问。

  它包含了一组 Yeoman generator,可以在 Yeoman 中执行,以根据模板生成我们将要部署的区块链网络文件。

  Yeoman 能根据定义好的 generator 迅速生成我们所需要的项目、应用的框架。

  fabric-tools 目录是我们以后的工作目录,读者可以按需要改成自己期望的目录名。

  到这里,我们就非常迅速、方便的完成了 Fabric 的下载,及部署环境的安装,得益于 Docker Container 技术,并不需要我们做复杂的配置。接下来将要开始部署一个示例应用。在之前,我们要先启动 Fabric,并生成 PeerAdmin card。

  通道(Channel)是 Fabric 中的重要概念与设计,它是网络成员间通讯的私有的子网络;网络中会有多个通道同时存在;每个交易都在认证、授权后在某个通道里执行;所有数据、交易、成员、通道信息都只对此通道的授权成员可见。

  这个脚本会生成一个 Card 文件,它包含了 Fabric 网络的信息以及管理员 PeerAdmin 与之连接所必须的信息;即管理员的身份证明文件;生成后这个文件会被导入到 Composer,你可以在~/.composer/cards/ 目录下找到被导入的 PeerAdmin Card 的文件内容。之后,Composer 会利用这个 Card 文件建立起到 Fabric 网络的连接。

  Fabric runtime 已经被成功安装、启动了,现在我们要部署第一个 Fabric 区块链业务网络。

  为使学习过程更容易,我们直接利用 Yeoman 及已经下载的 Generator 生成区块链网络框架。

  运行会提示输入相关信息,为方便学习,建议 Business network name 定义为:tutorial-network;Namespace 定义为:et,其他信息可以自行决定内容。将定义的内容如下:

  composer network install 命令会部署指定的 .bna 文件到 Fabric 网络。.bna 文件包括了这个业务网络的 Assets 模型、交易事务逻辑、访问控制规则等定义,但它并不能直接在 Fabric 上运行。.bna 文件是由 Composer 生成的,它是用 Composer 提供支持的一系列建模语言、规范定义的业务网络定义,我们必须将它先安装在 Fabric Peer 节点上。然后才可以在这个节点上启动运行这个业务网络。

  此时再查看 ~/.composer/cards 会发现新导入的 Card 文件。也可以直接通过命令查看。

  $ composer card list ┌────────────────────────┬───────────┬──────────────────┐ │ Card Name │ UserId │ Business Network │ ├────────────────────────┼───────────┼──────────────────┤ │ ork │ admin │ tutorial-network │ ├────────────────────────┼───────────┼──────────────────┤ │ │ PeerAdmin │ │ └────────────────────────┴───────────┴──────────────────┘

  composer-rest-server 会根据部署的业务网络生成一系列 REST API,以方便用户通过浏览器或其他类似 curl 的应用程序访问这个区块链业务网络。如果在本机,我们可以通过这样的地址访问:

  SampleAsset 是这个区块链业务网络中定义的资产模型 (Asset)。表示一种有形或无形的可改变、转移的商品。

  SampleTransaction 是一种交易或事务 (Transaction),由成员提交到业务网络,用以改变、转移商品,或触发其他操作。

  这些内容都可点击展开,显示 REST API 中对于此项内容的所有操作。

  添加成功后,再点击第一个操作GET,展开后点击Try it out!按钮,即可列出所有 SampleAsset。

  按上述方法,我们们可以浏览这个简单的区块链网络所提供服务的所有 REST API。

  以上介绍的在浏览器中对 REST Service 及区块链网络的访问,都可以通过 curl 及其他类似应用程序,通过控制台进行。

  为方便起见,这里并没有指定任何用户信息,因为目前没有加入安全验证机制,我们会在以后的学习中专门讨论用户安全、权限控制问题。

  我们一起学习了 Hyperledger Fabric,Composer 的基本概念,并使用 Composer 部署了一个 Fabric 开发环境,安装并运行了第一个区块链业务网络与应用。最后通过 REST Service 访问了这个区块链应用。

  本文对于 Fabric 的的学习内容还是初步的,旨在帮助大家迅速建立对 Fabric 的直观映像,以便为下一步深入研究打好基础。

点击这里复制本文地址 免责声明:本站内容由程序自动采集于互联网,无人工干预,只作交流和学习使用,本站不储存任何资源内容,如有侵权请联系qq邮箱798244092@qq.com立刻删除,谢谢!

支持Ctrl+Enter提交

区块链 © All Rights Reserved.  
Powered by 多多资源网 Themes by 多多资源网
联系我们| 关于我们| 留言建议| 网站管理