Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Frequently asked questions (FAQ) or Questions and Answers (Q&A), are listed questions and answers, all supposed to be commonly asked in some context, and pertaining to a particular topic. The format is commonly used on email mailing lists and other online forums, where certain common questions tend to recur.

General 


  • Q: `Hyperledger`和`Ethereum`的区别是什么?为什么这么多企业用`Hyperledger`而不是`Ethereum`?
    A: 超级账本面向企业应用场景,侧重联盟链。2018年10月,超级账本和以太坊企业联盟发布合作。2019八月,Consensys 创业公司PegaSys贡献了以太坊客户端Pantheon项目,并命名为超级账本Besu,

Hyperledger Fabric 


  • Q: `Fabric`接下来的发展方向有哪些?
    A: 更强的隐私保护(零知识证明)、更多的共识机制(Raft、BFT)、更好的管理和使用(配合 Cello 项目)等。
  • Q:`Ethereum`面临很多安全方面的问题,请问`Fabric`现在是否也面临一些安全性相关的问题呢?
    A: 无论对于以太坊还是fabric或者其他的区块链框架,只要智能合约的可拓展性达到图灵完备的级别,则必然会像其他所有的软件项目一样遇到安全攻防问题。没有银弹,传统的安全审计,黑白盒穿透测试仍然可以有助于预防和解决具体项目中的问题。
  • Q: 为何Fabric逐步将允许不同节点上的智能合约不一致
    A:
    - 主要是针对不同组织对于同一个交易的检查逻辑不同的场景,比如之前说的,有的组织可能要检查信用记录,而其他组织只检查余额等等
    - 如果没有这样的需求,依然可以用当前的方式
    - 即使使用当前的Fabric,合约内容是不上链的,一个组织完全可以通过修改peer逻辑跳过check,从而运行不同的代码
    - 即使合约上链,比如以太坊,依然可以实现一个新的节点,用不同的方式运行合约,一样无法保证执行过程一致
    - 最终来讲是要对结果(读/写集合)共识,而不是过程
  • Q: Endorser根据什么信息判断是否给某个具体的transaction endorse
    A: 目前主要检查权限策略,用户也可以自定义 ESCC。1.3版本引入的新的背书策略,使得颗粒可细化到数据库键值级别,详情可搜索key level endorsement policies
  • Q: 交易如何保证无关人员不能查看,从而保证隐私呢?通过交易证书吗? 登记证书应该是保证用户和节点的身份信息。
    A: 目前,主要通过通道、sideDB 等特性保护隐私。也可以在智能合约里通过交易发起人的证书通过合约代码逻辑做认证。此外,1.2版本引入了更细化的通道接入权限控制,详情搜索Access Control Lists (ACL)
  • Q: `Fabric`性能怎么样,有没有可靠的测试报告
    A: Hyperledger Caliper可以用于做fabric的基准测试
  • Q: 目前 Fabric 的orderer相当于一个中心化的节点,感觉这与分布式和区块链有点违背?
    A: 支持多个 Orderer,分布式合作实现排序服务。
  • Q: SBFT目前是否有任何时间表?
    A: 暂时没有。
  • Q: `Fabric`应用于物联网系统有没有推荐的方法?现阶段嵌入式设备可以部署成`Fabric`节点吗?
    A: 建议把设备端作为Fabric的Client。 出于运算和存储能力的考虑,不建议直接部署 Fabric节点
  • Q: 目前对于`Fabric`的可回溯性,除了一笔一笔交易去遍历,还有什么比较好的方法吗?
    A: 对于某个特定的key, 可以通过合约内的ChaincodeStub.GetHistoryForKey API去查询它的值历史
  • Q: 相较`Hyperchain`等联盟链的“万级”TPS,导致`Fabric`性能不高的原因有哪些?
    A: Fabric 目前单通道暂时只能达到 1~20 K 的TPS,限制其性能的因素包括本地硬盘读写速度、CPU 核数和网络吞吐,本质上是由于其间多次的非对称加解密操作。
  • Q: Fabric 的链码对于调用者是完全可见的吗?就是说每个链码的调用者都能看到链码的逻辑吗?
    A: 调用者属于客户端,一般情况看不到服务端的链码逻辑。如果客户端权限足够且peer开启了生命周期链码,可以通过lscc的api获取链码数据
  • Q: fabric网络完全启动后,不停止网络的情况下,能够完成排序服务的切换吗?比如卡夫卡切换为solo
    A: kafka切换为solo暂时不支持,但是从1.4.2开始,官方文档提供了将kafka切换成RAFT(etcdraft)的方法,此外,社区推荐用单节点的etcdraft配置来取代solo的配置
  • Q: 我们每次初始化或者升级chaincode的时候,都会新建一个新的链码 docker 镜像和容器,如果我们想定制化默认的链码镜像,比如预先安装一些其他应用,使得初始化的时候有一个预期的环境, 我们应该如何做?镜像的Dockerfile在哪里呢?

    A: 每个类别的链码(Go, Java, Nodejs)有着对应的Dockerfile不过Dockerfile的内容实际上是内嵌在节点二进制程序文件里面的,因此除非修改节点程序本身,否则你无法修改Dockerfile的内容。在接下来2.0的版本里,你将会可以构建你自己的链码启动器,因此,将可以如你所愿的任何方式来构建/部署链码。 实际上与此同时,你既可以修改用于构建链码的镜像,也可以修改用于运行链码的镜像

    关于构造:
    在1.4.x的版本中,Go和Nodejs的链码是用fabric-ccenv的镜像来构建的(你可以在Fabric源码中images/ccenv目录下找到Dockerfile)。如果你构建时需要任何额外的库,你可以基于fabric-ccenv来构建自己的镜像。要特别注意的是,对Go链码来说我们只会采用编译后的二进制链码文件,该文件是在实际的链码容器里构建和使用的。类似地,Nodejs链码中我们采用的是已安装的node 应用(包含
    node_modules).通过设置peer 配置文件里chaincode.builder属性,你可以指定你自己的链码构造器为你定制的镜像。特别要注意的是java实际上是用"chaincode.java.runtime"镜像来构造的(你可以在fabric-chaincode-java代码仓库里找到fabric-javaenv)。
    在2.0中,Nodejs链码使用fabric-nodeenv镜像(在fabric-chaincode-node代码仓库里)而不是fabric-ccenv镜像


    关于运行:
    在1.4.x,fabric-ccenv镜像会构建链码二进制文件/Nodejs应用,以用于构建世纪的链码镜像。本质上,它只是复制了这些内容到运行时镜像里(通过配置文件里的"chaincode.golang.runtime", "chaincode.java.runtime", "chaincode.node.runtime"属性来指定)。因此,假如你的Go链码需要调用了外部共用库,你可以将他们添加到适当的基础运行时镜像里。对于Go链码来说是fabric-baseos镜像,对于Nodejs链码来说是fabric-baseimage
    在2.0中,Nodejs链码也是使用的fabric-nodeenv作为运行时镜像


  • Q: Fabric相关的代码仓库迁移到github这个过程的现状
    A:  状态追踪英文文档
    -  待迁移的仓库 (19年11月24日更新):fabric-test 
  • Q: Fabric 的国密改造案例
    A:基于1.4.1 版本 https://github.com/dddengyunjie/fabric 作者:
    邓云杰 vigoss_dyj@163.com

Hyperledger Besu

  • Q: Besu的权限控制方式
    A:有基于账户与基于节点的两种方式
  • Q: Besu与Fabric的互操作性
    A:暂时还没路线图 关于Fabric与以太坊的互操作性可以参考来自EEA成员分享的项目 https://github.com/clearmatics/ion 

文档,教育与国际化 

  • Q:Hyperledger中文文档在哪里?
    A: 目前主要在翻译Fabric的中文文档,其他项目暂未有中文翻译。Fabric中文文档在这里,源码地址在这里。还有一个较早版本的在这里,该版本不再维护。
  • Q: Hyperledger文档国际化如何贡献?
    A: 文档国际化的工作目前主要由TWGC下i18n小组负责,贡献方法请参照这里
  • Q: 对于Hyperledger国际化,我能贡献哪些内容?
    A: 包括但不限于Hyperledger下各子项目(如Fabric、Indy、Cello等)的官方文档译文、官方设计文档译文、官方博客译文、个人整理总结以及区块链相关知识的分享。具体问题可向社区提问,社区的小伙伴们都会热心解答。
  • Q: 作为初学者,如何学习超级账本技术
    A: 可以参考学习材料整理 Learning Material