IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Ubuntu中fabric2.1测试网络部署 -> 正文阅读

[区块链]Ubuntu中fabric2.1测试网络部署

1、fabric测试网络

1.1.启动测试网络
首先回到clone好项目的目录,执行如下命令进入测试网络所在文件夹
启动前先运行,这一步,否则必出错误(虽然我也不知道为什么这样做就不错误,但是我试了两遍,都没错)

systemctl start docker
cd fabric-samples/test-network

在这里可以看到一个network.sh文件,执行./network.sh -h可以看到它的使用说明

下面这条命令会移除先前所有运行中的容器

sudo ./network.sh down

然后执行如下的命令,会创建一个Fabric网络。

sudo ./network.sh up

这个网络由两个peer节点,一个order节点组成,当使用这个命令的时候,不会有channel被建立,如果成功的话可以看到如下的输出。

可以通过如下命令查看当前运行的三个Docker容器,这三个容器就是由刚才的up命令创建的

sudo docker ps -a

每个与Fabric网络交互的节点需要属于一个作为网络成员的组织,这些组织所组成的组被称为consortium(联盟),这个测试网络有两个联盟成员Org1和Org2,还有一个为网络提供排序服务的排序组织。

Peers是Fabric网络的基础组件,它存储区块链的账本,并在交易提交到账本之前验证交易,Peers也运行包含着业务逻辑的智能合约,由此来管理账本上的资产。

网络中的每个Peer都属于联盟的一个成员,在测试网络中peer0.org1.example.com和peer0.org2.example.com各有一个peer。

每个Fabric网络也包含一个排序服务,用于将交易进行排序,这样可以让peer节点专注于验证交易和提交到账本。在order节点收到来自客户端的交易之后,会按照顺序添加到一个块中,然后分发到各个peer中,加入区块链账本。此外order节点还可以操作系统的channel,定义哪些组织是联盟成员。

测试网络中用了一个Raft排序节点来提供排序服务,这个节点所属组织为orderer.example.com,在测试网络中只有一个order节点,但是在真实的网络中,可能会有被多个组织操作的多个排序节点,不同的排序节点会利用Raft共识算法在网络中来达成交易的一致。

1.2.创建一个Channel
Channel是一个用于特定网络成员之间通信的私有层,只有被邀请加入Channel的成员才能够使用它,对网络中其他成员不可见,每个Channel都有一个单独的区块链账本,被邀请加入Channel的peer可以存储Channel的账本然后验证Channel的交易。

运行如下命令可以创建一个名为mychannel的Channel连接Org1和Org2。

./network.sh createChannel

只要最后打印出========= Channel successfully joined ===========就说明创建成功了,也可以利用-c来自定义Channel的名称,通过指定不同的名称可以创建多个Channel。

如果想要在启动测试网络的同时创建Channel,可以同时使用up和createChannel两个参数。

1.3.在管道中使用chaincode(智能合约)
在创建channel之后,可以使用智能合约来和channel的账本交互,运行在网络成员上的应用可以调用智能合约来改变账本上的资产,也可以查询智能合约来读取账本上的数据。

多重签名用于保证利用智能合约创建的交易的有效性,在提交到账本之前,智能合约会被多个组织签名,这样可以防止一个组织篡改账本,只有交易是连续的,而且被足够多的组织签名之后,才会提交到账本中。指明channel中组织的策略也是chaincode定义的部分。

在Fabric中,只能合约以chaincode的形式部署在网络中,一个智能合约会安装在一个组织的peers中,之后才能部署在Channel中,这样才可以用于和区块链账本交互和交易背书,Channel中的成员需要同意chaincode中的定义,这些定义建立了chaincode的治理,只有足够多的成员同意了定义,才能将这个定义提交到channel中,来进行使用。

这里运行如下命令可以启动一个用于刚刚创建好的channel的chaincode

./network.sh deployCC

这个命令会创建一个名为fabcar的chaincode到两个peer上,然后用在两个peer所属的channel上。看到如下的输出说明已经创建完毕。

这里默认是使用go语言的chaincode,不过事实上fabric也支持Java等语言,用-l参数指明即可

在fabcar chaincode的定义提交到channel之后,这个脚本会调用init函数来初始化这个chaincode,然后调用这个chaincode来防止初始化的车辆列表到账本中,然后会使用查询chaincode的方式来确认数据已经被添加了,这些数据将会用于之后的测试。

2、添加节点

参考链接

https://blog.csdn.net/zekdot/article/details/106977734

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:38:32  更:2021-08-15 15:38:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:28:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码