![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Fabric
看聊效
这个作者很懒,什么都没留下…
展开
-
区块链实验室(30) - 区块链期刊:Distributed Ledger Technologies: Research and Practice
区块链期刊:Distributed Ledger Technologies: Research and Practice原创 2023-12-09 13:50:55 · 1072 阅读 · 0 评论 -
区块链实验室(27) - 区块链+物联网应用案例
区块链+物联网应用案例原创 2023-09-26 10:01:25 · 1402 阅读 · 0 评论 -
区块链实验室(26) - 区块链期刊Blockchain: Research and Applications
Blockchain: Research and Applications原创 2023-09-25 14:53:15 · 794 阅读 · 0 评论 -
区块链实验室(13) - 在PBFT中节点的度与其流量的特征
节点的度与流量原创 2023-07-31 15:48:13 · 428 阅读 · 0 评论 -
区块链实验室(12) - 网络拓扑对PBFT共识流量的影响
网络拓扑对pbft的共识流量影响原创 2023-07-25 22:02:44 · 810 阅读 · 0 评论 -
区块链实验室(11) - PBFT耗时与流量特征
PBFT的耗时与流量特征原创 2023-07-25 18:42:36 · 899 阅读 · 0 评论 -
区块链实验室(10) - 实例说明PBFT的共识过程
3:节点1验证preprepare报文后,创建自己的prepare报文,发给节点0和节点2。5:向节点0转发prepare报文,该报文由节点2或者节点3创建,由节点2转发而来。6:向节点0转发prepare报文,该报文由节点3或者节点2创建,由节点2转发而来。3:从0节点开始的共识请求,马上向它的邻居节点1节点发送preprepare报文。2:来自0节点的preprepare报文,由1节点转发给2节点。2:来自节点1的preprepare报文,由节点2转发给节点3。7:创建commit报文,发给节点1。原创 2023-07-24 09:45:28 · 706 阅读 · 2 评论 -
区块链实验室(7) - Fabric实验环境
Fabric实验环境原创 2023-06-15 08:42:40 · 180 阅读 · 0 评论 -
区块链实验室(6) - 交叉编译peer到Arm架构CPU
交叉编译Peer到Arm架构原创 2023-06-14 14:30:33 · 99 阅读 · 0 评论 -
区块链实验室(5) - 将区块链账本存储到云
区块链节点将账本共享存储到云原创 2023-06-12 15:21:29 · 338 阅读 · 0 评论 -
区块链实验室(4) – 对比区块大小总合及账本大小
对比区块大小总合及账本大小原创 2023-06-07 14:30:37 · 84 阅读 · 0 评论 -
区块链实验室(3) – 用Go语言仿真PBFT算法
用Go语言仿真PBFT算法原创 2023-06-01 11:24:57 · 1225 阅读 · 13 评论 -
区块链实验室(2) - 编译自定义peer并构建Docker镜像
在Hyperledger Fabric环境中编译peer,并构建peer的Docker镜像。原创 2023-05-30 15:09:51 · 183 阅读 · 2 评论 -
区块链实验室(1) - 搭建Hyperledger Fabric初始环境
创建Hyperledger Fabric初始实验环境原创 2023-05-29 22:38:27 · 353 阅读 · 0 评论 -
在Fabric的Peer节点添加定制的系统链码
在Fabric的Peer节点添加定制的系统链码Peer节点的默认系统链码调用默认的系统链码添加定制的系统链码创建自定义系统链码的目录及源代码在Peer节点的源码中添加对上述系统链的引用修改core.yaml编译Peer节点并测试编译Peer节点源码测试Peer节点的默认系统链码Fabric的Peer节点的启动命令一般是peer node start,见下图所示。这个命令启动Peer节点时,日志信息显示默认系统链码主要有如下几个。cscc:用于配置的系统链码lscc:用于生命周期管理的系统链码原创 2021-02-14 16:06:39 · 675 阅读 · 0 评论 -
用Fabric案例生成的公钥匙签名并验证的示例
Fabric案例生成的公、私钥Fabric案例会给Peer、User、Admin等节点生成公、私钥对。公、私钥分别如下图所示。用公、私钥对签名并验证的示例用上述公、私钥对签名并验证消息的示例代码如下。package mainimport ( "crypto/ecdsa" "crypto/rand" "crypto/sha256" "crypto/x509" "encoding/pem" "fmt" "io/ioutil")func main() { msg := "he原创 2020-10-07 16:00:39 · 988 阅读 · 4 评论 -
Fabric-sdk-go的测试案例分析(4)-在test-network案例中查询指定节点已安装的链码
准备工作参考“Fabric-sdk-go的测试案例分析(3)-针对test-network编写1个SDK案例”,启动网络,创建1个通道,获取各节点的IP地址并配置/etc/hosts。创建源程序文件新建1个目录chaincodeDemo,新建2个文件。如下图。chaincodeDemo.go代码如下。package mainimport ( "log" "strings" "github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt原创 2020-09-20 18:27:44 · 662 阅读 · 3 评论 -
Fabric-sdk-go的测试案例分析(3)-针对test-network编写1个SDK案例
fabric的test-networkfabric源码包提供1个测试案例目录test-network,见下图。在该目录中,执行./network.sh createChannel -c mychannel,将启动1个网络,创建名为mychannel的通道。在这个网络中,存在peer0.org1.example.com、peer0.org2.example.com、orderer.example.com共3个节点。配置/etc/hosts配置/etc/hosts的目的,是让另1个终端SDK程序原创 2020-09-19 18:48:27 · 945 阅读 · 2 评论 -
Fabric-sdk-go的测试案例分析(2)
fabric-sdk-go的测试案例包e2e有3个测试案例:e2e、configless和orgs。其中e2e测试案例首先在网络中创建1个通道mychannel,然后安装1个链码example_cc。修改一下,创建通道之前,查询是否存在指定的通道。...原创 2020-09-09 10:21:01 · 369 阅读 · 1 评论 -
Fabric-sdk-go的测试案例分析(1)
Fabric-sdk-go提供了一个e2e测试案例,这个案例共有3个测试包。这3个测试包的测试顺序如下。第1个包用于创建通道,后面2个以此通道为基础。所以顺序不能颠倒。以第2个测试包为例,configless测试包初始化,执行代码片段如下。以用户User1创建SDK客户端实例,缺省的通道是mychannel,缺省的组织是org1。上面这个User1是指在部署网络时,指定的用户列表中的用户名。如下所示。上面的配置,为org1指定了4个用户,因此,可以使用user1,user2,user3,user4作原创 2020-09-03 08:44:02 · 596 阅读 · 1 评论 -
去中心化是检验区块链本质的重要依据
去中心化是区块链技术与应用的重要特征看过一些区块链应用的方案书,应用案例。有些应用方案,仍是以前那种中心化的客户端+服务端模式,账本集中存放在某一个,或者某一些节点上。有些应用方案,有去中心化的痕迹,但很微弱。Ethereum的去中心化程度较高,Hyperledger的去中心化程序不及Ethereum,在Hyperledger网络中,orderer节点构成的群体,相对于peer节点构成的群体而言,具有弱中心化的痕迹。去中心化是检验区块链本质的重要依据在区块链网络中,任何一个节点或者任何一部分节点的去原创 2020-08-20 09:11:02 · 1058 阅读 · 0 评论 -
Peer节点从文件系统读取区块的源码位置
在如下源码文件,定义了一个结构体blockfileMgr,用于管理存储区块的物理文件。这个源码为上述结构体提供了一系列接口函数,用于访问区块的物理文件。访问区块的物理文件时,会用到1个重要的变量。这个rootDir,在配置文件core.yaml中指定。...原创 2020-08-19 20:03:29 · 200 阅读 · 0 评论 -
Peer节点写区块时对区块签名
添加1个私钥对象。添加1个函数,用于启动peer节点时,加载私钥。在已有函数里调用新增的函数。新增1个接口,用于私钥签名区块。addBlock向文件写入区块时,调用签名函数。调试运行。存在的问题:不仅peer写区块,order节点也会写区块。区块模块是共享、公用的。这样写,可能有损源码的模块化程度。先这样,先把实验做出来,以后再改进。...原创 2020-08-18 23:13:18 · 216 阅读 · 1 评论 -
Peer启动时初始化Ledger的源码
peer启动时,执行下述代码。上面的provider赋值给ledgerProvider,如下图。对ledgerProvider的调用Open,如下。peer启动时输出一条信息,就是上图中的输出信息。ledgerProvider的类型如下。该类型有Open接口函数,继续跟踪到下图。peer启动时,到这里,创建一个blockfileMgr类型的对象mgr。以后,写块时,调用mgr的addBlock函数。如下图。...原创 2020-08-18 11:59:48 · 134 阅读 · 0 评论 -
在peer节点启动时使用私钥签名1条信息,用证书验证签名
如下图。运行结果:原创 2020-08-17 10:08:57 · 200 阅读 · 0 评论 -
修改Fabric源码,在启动peer节点时检验公私钥对
Fabric源码中读取配置文件的方式执行peer node start之前,peer会读取环境变量,读取配置文件。例如下面的配置。Fabric读取上述server.key的方式如下代码。环境变量中PEER_TLS_KEY_FILE对应源码中的字符串peer.tls.key.file。根据这个对应关系,可以在环境变量中添加自己的设置参数,然后修改Fabric源码,并读取新增的配置。新增环境变量为peer节点新增2个环境变量,这2个环境变量指向公私钥对。修改Fabric的peer源码修改peer原创 2020-08-15 22:44:23 · 413 阅读 · 0 评论 -
Fabric源码中读取peer节点私钥的位置
环境变量指明了peer节点的私钥,执行peer node start时需要用到私钥。fabric源码中读上面私钥文件的位置是:验证一下,在源码中添加1行,输出私钥的内容。重新编译peer后重启节点,观察peer node start的输出。对比peer的私钥内容,是一样的。...原创 2020-08-13 09:43:01 · 367 阅读 · 0 评论 -
Fabric区块大小的实验
首先记录已在账本的大小,见下图,大小是319784字节。修改peer的源代码,将区块写入文件时,输出新区块的大小。编译peer并替代原来的peer,重新启动节点。在终端上记录区块高度。调用智能合约的链码函数,产生一个新区块,账本大小变为324059,相对之前增加了4275字节。观察peer的输出,是4275。用channel的fetch命令,单独取出第56区块存储到1个文件,观察其大小,少了22字节。多次重复上述实验,取出单独区块到文件后,均减少22字节。即使执行相同的链码调用,新原创 2020-08-08 17:52:01 · 1358 阅读 · 1 评论 -
Fabric区块结构在源码树的位置
区块表示为Block结构体,注意这个文件在源码的位置。BlockHeader,BlockData在同一个源文件中。该源程序文件提供一些函数,用于访问上述几个结体体。例如,调用Block的String函数。将新区块写入文件时,输出如下。...原创 2020-08-08 10:50:44 · 286 阅读 · 0 评论 -
fabric工具peer将区块写入文件的位置
将1个区块写入文件的位置如下。测试一下,在第314行添加输出代码。单独编译peer并替换原来的peer。在B机上先查询出区块高度是46,然后调用1次链码函数,产生1个区块,稍后查询到区块高度是47。观察peer的输出,输出了新增语句的信息。不过,这个区块被标注为“无效”,给出的原因是“背书策略失败”。有待查明原因。...原创 2020-08-06 16:05:53 · 384 阅读 · 0 评论 -
1个Fabric-sdk-go案例-访问yaml配置并创建SDK实例
Fabric-sdk-go案例准备工作创建案例目录编写案例源程序demo1.go运行结果准备工作创建案例目录config_e2e.yaml是fabric-sdk-go本身提供的一个配置文件,搜索得到,复制到案例目录。编写案例源程序demo1.go第18行,从当前目录读配置文件,即config_e2e.yaml第19行,configOpt是1个函数,调用它得到1个切片backend第20行,在切片backend中查询version,也就是config_e2e.yaml里的version第原创 2020-05-14 09:46:47 · 1144 阅读 · 0 评论 -
Fabric-sdk-go测试案例的网络环境
(1)执行make crypto-gen实质上执行下述命令使用config目录的cryptogen.yaml,执行完毕后在指定目录生成数字证书,(2)执行make channel-config-gen相当于下述命令使用configtx.yaml,生成1个创世块文件(twoorgs.genesis.block)和4个通道(dschannelext,dschannelsdk,mycha...原创 2020-04-22 15:32:54 · 572 阅读 · 0 评论 -
简化Fabric-sdk-go的测试案例
Fabric-sdk-go文档表明的测试案例有:make unit-test、make integration-test。这些测试案例检查、配置环境耗费很长时间,而且每次测试都重复这些检查。对这些测试案例进行简化,加快测试进度。1、简化unit-test在Makefile中找到unit-test, 用#取消掉unit-test的依赖项。执行make crypto-gen,根据cryptog...原创 2020-04-21 10:35:58 · 503 阅读 · 0 评论 -
找到Fabric写账本文件的源码位置
Fabric写账本文件的源码位置如下:该目录下有一个测试文件,使用下述命令进行测试,观察测试结果。测试日志显示,测试过程将创建1个文件夹/tmp/lstoreXXXXX,然而测试结束后,却看不到这个文件夹,其原因是store_test.go的测试函数里有一条语句,删除了这个文件夹。将这个语句注释后再测试,便可看到测试产生的账本文件。...原创 2020-04-15 15:48:54 · 451 阅读 · 0 评论 -
编译Fabric V2.0.0
下载Fabric源码之后,进入Fabric目录,检出代码git checkout v2.0.0分别执行make clean; make release编译完毕之后,将在release目录下产生Fabric的二进制文件,共计7个以peer为例,main.go的位置是cmd/peerpeer的maingo很简短,与其下一级命令选项对应要修改peer的代码,找到对应的import项。...原创 2020-04-14 14:53:31 · 313 阅读 · 0 评论 -
Fabric区块数据的存储位置
./byfn.sh up启动1个示例网络,在该脚本中有一行命令用于启动docker:docker-compose -f docker-compose-cli.yaml -f docker-compose-etcdraft2.yaml up -ddocker-compose-cli.yaml文件定义了5个卷标,docker-compose-etcdraft2文件定义了4个卷标:上述命令...原创 2020-04-11 13:32:54 · 3186 阅读 · 4 评论 -
Fabric工具cryptogen的使用
cryptogen是Hyperledger Fabric里用于生成数字证书及私钥的工具。使用语法usage: cryptogen [] [ …]Utility for generating Hyperledger Fabric key materialFlags:–help Show context-sensitive help (also try --help-long and -...原创 2020-04-11 11:32:50 · 846 阅读 · 1 评论 -
分析Fabric示例网络./byfn.sh up 的输出
Starting for channel ‘mychannel’ with CLI timeout of ‘10’ seconds and CLI delay of ‘3’ secondsContinue? [Y/n] y////////// byfn.sh line:119 /////////////////////////////////////////////////////...原创 2020-04-11 10:23:25 · 1870 阅读 · 0 评论