区块链基础问答

  • 问题1:为什么要有stateRoot?
    stateRoot是存储整个系统状态的专用Merkle树的根哈希(所有帐户余额,合同存储,合同代码和帐户nonces都在里面)。其方便节点间状态的互相验证,保证在交易的每个区块(每时每刻),所有节点的状态是一致的。
  • 问题2:nonce值有什么用?

    • 区块中的nonce值:在挖矿中使用,挖矿时需要添加的nonce(随机数),通过不断修改该值用来计算得到满足要求的哈希值,最后找到一个可以满足要求的nonce值。为了证明工作量的无意义的值,这是挖矿的本质,这个值决定挖矿的难度。
    • 交易中的nonce值:交易发起者(from账户)发出交易的次数, 同一账户的交易会被依次确认。要求一个账户的每笔交易有一个连续的计数,并且每个节点将根据计数顺序严格执行来自一个用户的交易。作用:
      1. 确认交易顺序。连续的计数,根据计数顺序严格执行来自一个用户的交易。
      2. 防止双花。交易必须顺序执行每一笔交易被确定的时候,必须前面的交易也已经被确定。
      3. 撤销pending中的交易。使用同样的 nonce 值,重新发送一笔交易,但是使用更高的 Gas 价格,并把转帐金额设为 0,目标地址可以设为自己的发送地址,就是说发送地址和目标地址相同,当然使用原来的地址也没问题
      4. 确定生成的合约地址。新合约地址由此合约账户的地址和nonce确定。
  • 问题3:Hyperledger Fabric的特点,和Composer的关系?

    • Hyperledger Fabric的特点

      • Hyperledger Fabric是私有和许可业务网络的开源框架实现,其中成员身份和角色为其他成员所知。HyperLedger Fabric是私有的,而且是被许可的,是与其它区块链系统最大的不同点之一。但并不允许未知身份来参与HyperLedger Fabric网络(要求协议验证事务并确保网络的安全),HyperLedger Fabric组织的成员可以通过一个Membership Service Provider(成员服务提供者即MSP)来注册。
      • 同时其被设计为开发具有模块化架构的解决方案的基础。它允许组件(如账本数据库,共识机制和成员服务)即插即用。同时,它利用容器技术,提供企业级网络安全性,可扩展性和机密性。Hyperledger Fabric提供了一个独特的可伸缩、可扩展的架构,这也是Hyperledger Fabric与其他区块链解决方案的显著区别。
    • Hyperledger Fabric和Hyperledger Composer的关系

      Hyperledger Fabric和Hyperledger Composer都属于Hyperledger项目。Hyperledger Composer是一组基于 JavaScript 的工具,可简化并加速 Hyperledger Fabric 区块链应用的创建过程。通过使用 Hyperledger Composer,业务所有者和开发人员可以快速创建链码(业务逻辑)和区块链应用。两者都可以用于实现区块链解决方案,但是使用的抽象级别,工具和语言是完全不同的。Hyperledger Composer原本是为了抽象出接口,可以和任何区块链网络对联,但目前的开发状况基本上是基于Hyperledger Fabric来实现的。。在内部,Composer API映射到底层Fabric API - 该映射过程由Composer运行时管理,它可以提供一系列简化应用程序开发的服务。

  • 问题4:联盟链智能合约 和 中心账本的区别?

    联盟区块链是指其共识过程受到预选节点控制的区块链,写入参与者被提前筛选,读写权限由被选定的参与者们决定,因此联盟链被视为“部分去中心化”。联盟链智能合约即在联盟链上部署智能合约,其将合约以代码的形式实现,具有可溯源,自动执行,安全透明,无法篡改,违约者必受惩罚的特点。联盟链智能合约的信任来自于不可篡改的代码和区块链的去中心化特性,不依赖于任何中心化机构。中心化账本以中心化机构为信任背书,出错难以追溯,数据可以被篡改。