超级账本HyperLedger Fabric实战技术50问(珍藏版)

1.在fabric中,如何实现组织ORG1与组织ORG2之间的PEER互相交互?{“Args”:[“init”,“a”,“100”,“b”,“200”]}’,如何把a定义为属于ORG1,b定义为属于ORG2?
答:一个channel一本账。channel里的所以org共享账本数据,org1与org2如果在一个channel就可以共享账本数据了。

2.fabric中每台peer上的ca不合根ca联网,怎么做到网络中其他节点的信任。
答:每个节点上都有根ca签发的证书啊,节点加入首先得有证书,不管是根签发的,还是中间节点签发的。

3.fabric中间CA签发证书的时候,需要跟ROOTCA通讯吗?
答:不需要。

4.fabric安装连码缺少包的支持的时候,怎么把支持的包到入进去?
答:把fabric源码放到gopath里面去。

5.大家都是怎么开发chaincode的,直接在Linux里面还是在windows里?
答:goland是go语言环境都配好了,不过需要激活,vscode需要自己安装go语言的支持包,sublime也需要安装支持包,主要还是看你主要使用的什么编译器。

6.solo多机部署时,peer0.org1.example.com执行.scripts/script.shmychannel后,生成的mychannel.block是只存在该节点呢还是其他节点也会同步生成?
答:生成的mychannel.block存放在channel-artifacts文件夹中,只存在该节点。最终需要把channel-artifacts文件夹整个复制给其它节点。

7.fabric1.1每次启动docker之后都会启动一个e2e_default的网络容器,怎么修改启动的这个容器IP为固定IP呢?
答:你放置那些docker的配置文件的文件夹应该是default文件夹吧,要想这个网络的名称是你想要的,就修改放置docker配置文件的文件夹的名称就可以。

8.请问多机部署中,节点的ip和虚拟机本地ip有什么关联吗?
答:虚拟机上部署的节点的ip是和虚拟机ip一样的,不一样的话就连接不到虚拟机上的节点了。

9.fabric刚开始生成的配置证书可以直接存到本地后面动态生成的大家存在哪里数据库还是本地呀?
答:单机本地,多机数据库。

10.为什么链网络,docker停掉,再启动,之前新建的链码都没有了?
答:链码运行在一个单独的容器里,重启docker自然就没了。得重新安装、实例化。

11.parity和geth哪个好?
答:如果是测试智能合约建议parity或者以太坊测试网。

12.请问实例化的时候,背书策略用的AND,然后在二个ORG的PEER下执行吧invoke,但值没有改变,在AND时应该是怎么invoke才会生效?
答:就是说invoke交易被endorsementpolicy验证失败了呗。

13.请教个问题,casdk生成的证书是不是要复制到orderer和peer节点?
答:CASDK返回的是Enrollment对象,你可以通过这个对象获取到证书和私钥信息保存到文件中再复制到对应的节点上,也可以保存到数据库,直接通过数据库查询用。

14.fabric很多文件默认是/opt/gopath目录下的,可是我看教程在配置的时候基本上都是在HOME/go下面,但也能跑的通,有些不大明白,希望大神指点?
答:挂载这个,冒号左侧是你文件在服务器上的真实路径,冒号右侧是挂载到容器内的路径。但是你的fabric目录如果放在HOME,那么你的环境变量,肯定也要写HOME/go,而不是/opt/gopath这个不匹配不可能好使,你想一下,你cryptogen生成的文件在哪。那你这边配置的时候就写哪,肯定是要匹配的,官方给的例子,是放在/opt/gopath下的。

15.哪位知道fabric采用的kafka+zookeeper的架构放在docker中使用,没有用couchdb,那临时交易数据及账本数据都保存在哪里?如何访问查询?
答:默认保存在peer节点的/var/hyperledger/production目录下,部分数据可以配置成保存在couchdb下。

16.请问2台服务器怎么设计多机结构,一台order,一台peers这样可以吗?
答:一台order,一台peer是最简单的那种solo共识可以,当然你可以用部署多个docker,让它复杂些,也算是多机。

17.请教个问题修改linux修改host文件后,怎么让host配置生效?
答:你可以选择重启重启以后文件就会生效了如果没有生效,检查host配置文件是否配置错误。

18.我在虚拟机里部署fabric,直接执行bootstarp.sh脚本运行最后报错大家平时一般启动或者部署都怎么操作Ubuntu的环境?
答:bootstrap.sh运行过程中需要下载几个工具,其中有一个是需要翻墙的,报错的原因应该是下载不成功。

19.在hyperledger中leadingpeer和anchorpeer是同一种节点吗?
答:不是,但是可以是同一个。

20.问一下一个Peer有不同的channel,那么数据都放在同一个账本上?还是,每个channel维护一个账本(数据库)。
答:每个channel分开,可以认为,一个channel就是一个账本。

21.调用sdk执行智能合约时,query和invoke所需的证书或
者权限一样吗?大家有知道的吗?

答:一样的,这个应当是没有分的要分的话得做特别处理了。

22.Merkle树在区域体中作为存储结构真实存在吗?还是说只是一个计算过程用到的临时数据结构?一个区块体分两部分,第一部分存Merkle树,第二部分存一笔一笔的交易数据,不知这么理解是否正确?
答:.在block中笼统有两部分BlockHeader byte[]rlpEncoded区块rawdata
在blockheader中,有很重要三棵树存在:
privatebyte[]stateRoot;
privatebyte[]txTrieRoot;
privatebyte[]receiptTrieRoot;

23.我有个假设,如果交易会返还,恶意节点怎么才能实现双花,两个交易不能是一个nonce值。
答:一条链的账本是不会有双花现象的。首先,所有交易都是按顺序执行的,也就意味着账户余额也都是按顺序加减的。就像单线程。其次,如果有节点收到广播消息较晚,可以在两个还没同步的节点实现双花。但是这种现象也会随着时间推移,更多的广播和块确认,丢弃较短的链,同步更长的链。避免双花。因此,一笔交易成功之后,在经历一定的时间或者块的数量之后,可以认为是准永久态。

24.用eth.sendRawTransaction()发送交易时,gasPrice的值填写多少合适呢?
答:这个没有确切的大小,太小gasPrice这笔交易可能要等待很久才能被节点确认。太高gasPrice要支付更高的费用,具体要考虑当前交易紧急程度,或者参考公链上交易的gasPric和确认时间具体定价。(旷工根据交易费用对交易排序,优先打包交易费高的交易,以收取跟高的收益)

25.请问代币的签名交易里data字段的值后面28个字节怎么得到呢?
答:转16进制。

26.请问solidity中收到转账就记录下转账者的函数怎么写?
答:用事件就行,转账后记录下来,后面也可以用自己数据库保存下来。

27.geth在遍历区块的时候,节点经常不同步,老是出现drop peer之类的错误,不遍历的时候正常,有没有可能是在遍历的时候是从别的节点抓去数据的呢?
答:要看你的节点主机在那里,一般这种是网络原因,可用的节点数很少,可以把节点放到国外,同步时节点数比较多。

28.在Solidity中,如何删除数组中某个数据呢?(删除指定某个键的数据,不是删除整个数据)?
答:就我所知,没有.array只有length和push两个成员。

29.fabric-sdk-java应用到项目的是连接到网络中的某一个节点呢(可能是orderer也可能是peer)还是说要同时连接网络中的所有节点。
答:sdk在某一时刻只能连接到一个节点。

30.交易后,获得一个一个hash码,如何通过hash码查询这个交易成功失败?
答:etherscan.io

31.请问solidity中收到转账就记录下转账者的函数怎么写?
答:用事件就行,转账后记录下来,后面也可以用自己数据库保存下来。

32.geth在遍历区块的时候,节点经常不同步,老是出现drop peer之类的错误,不遍历的时候正常,有没有可能是在遍历的时候是从别的节点抓去数据的呢?
答:要看你的节点主机在那里,一般这种是网络原因,可用的节点数很少,可以把节点放到国外,同步时节点数比较多。

33.最近在看hyperledger超级账本,之前也了解过一点truffle,想请教一下各位前辈,truffle开发中对于区块链中【多节点】是怎么处理的,需要用端口映射吗?还是通过私钥登录MetaMask钱包就可以实现多节点?
答:可以看下联盟链的创建。

34.确定一个新块交易的机制是什么?
答:有新区块产生,有哈希值产生。

35.除了隐形地址和主公钥,还有没有其他方法生成没有私钥的地址?
答:不是还有个20个英文组成的密钥么。

36.问一下,fabric-ca-java-sdk登记返回的私钥证书的加密方式是什么?
答:HASH_ALGORITHM是SHA2,SIGNATURE_ALGORITHM是SHA256withECDSA。

37.在fabric中,如何实现组织ORG1与组织ORG2之间的PEER互相交互?
答:一个channel一本账。channel里的所以org共享账本数据,org1与org2如果在一个channel就可以共享账本数据了。

38.每台peer上的ca不合根ca联网怎么做到网络中其他节点的信任?
答:每个节点上都有根ca签发的证书啊,节点加入首先得有证书,不管是根签发的,还是中间节点签发的。

39.fabric安装连码缺少包的支持的时候,怎么把支持的包到入进去?
答:把fabric源码放到gopath里面去。

40.大家都是怎么开发chaincode的,直接在Linux里面还是在windows里?
答:都可以。我是在windows里开发,用VSCode来编码。

41.请问下fabric账本是不是分为idStore,BlockStore,VersionedDB,HistoryDB四种不同的DB,都是存储在不同的blockfile中?如果是的,后面的同步账本是不是四个DB都要同步啊?
答:只有blockstore存在blockfile中,blockfile就是文件存储,其它都是数据库,一般用leveldb。

42.solo多机部署时,peer0.org1.example.com执行.scripts/script.shmychannel后,生成的mychannel.block是只存在该节点呢?还是其他节点也会同步生成?
答:生成的mychannel.block存放在channel-artifacts文件夹中,只存在该节点。最终需要把channel-artifacts文件夹整个复制给其它节点。

43.生成的mychannel.block存放在channel-artifacts文件夹中,只存在该节点。最终需要把channel-artifacts文件夹整个复制给其它节点。
答:你放置那些docker的配置文件的文件夹应该是default文件夹吧,要想这个网络的名称是你想要的,就修改放置docker配置文件的文件夹的名称就可以。

44.请问多机部署中,节点的ip和虚拟机本地ip有什么关联吗?
答:虚拟机上部署的节点的ip是和虚拟机ip一样的,不一样的话就连接不到虚拟机上的节点了。

45.刚开始生成的配置证书可以直接存到本地后面动态生成的大家存在哪里数据库还是本地呀?
答:单机本地,多机数据库。

46.哪位知道为什么链网络,docker停掉,再启动,之前新建的链码都没有了?
答:链码运行在一个单独的容器里,重启docker自然就没了。得重新安装、实例化。

47.parity和geth哪个好?
答:parith更适合用作一个钱包,难度相对较低,geth开发
合适一点。

48.casdk生成的证书是不是要复制到orderer和peer节点?
答:CASDK返回的是Enrollment对象,你可以通过这个对象获取到证书和私钥信息保存到文件中再复制到对应的节点上,也可以保存到数据库,直接通过数据库查询用。

49.哪位用过fabric-java-sdk的,能指点下如何使用hash查询到该区块对应的合约内容么?
答:把使用的chaincode名称存到交易信息中,通过hash找到区块信息,在区块信息中拿到交易ID,查到交易信息中的chaincode名称,调取对应的chaincode查看内容。

50.fabric采用的kafka+zookeeper的架构放在docker中使用,没有用couchdb,那临时交易数据及账本数据都保存在哪里?如何访问查询?
答:默认保存在peer节点的/var/hyperledger/production目录下,部分数据可以配置成保存在couchdb下。

原创文章 2 获赞 0 访问量 208

猜你喜欢

转载自blog.csdn.net/qq_20191467/article/details/104063383