Q1: 为什么要有stateRoot
stateRoot是每个区块头的一个字段,代表着状态树的根节点哈希值。状态树是一个Merkle树,它把这个时间段所有的交易分割成块作为树的叶结点,然后把每个节点进行哈希处理,一层一层往上迭代,最终让剩下的哈希总数变为1,把最后这个哈希值作为整个树的一个根节点哈希值。因为Merkle树的哈希值会不断的向上传播,所以当有攻击者尝试去伪造一个虚假的交易时,根节点的哈希值就会出现很大的改变。从一定程度上,stateRoot保证了交易数据的安全,不可伪造性。
Q2: nonce值有什么用
nonce是一个防止双花的一个值,它从0开始递增,没发送一笔交易,nonce便加1。
以太坊nonce的规则:
- 如果nonce小于当前的nonce值,交易会被拒绝掉。
- 如果nonce大于当前的nonce值,交易会被放进一个等待队列里面进行等待。
- 当交易出现异常,新的一笔交易与其拥有相同的nonce值,如果新交易的gas price高于原交易的110%,则原交易会被覆盖掉。
Q3: Hyperledger Fabric的特点,和Composer的关系?
首先Hyperledger Fabric是一个区块链框架实现,是Linux基金会托管的Hyperledger项目之一。作为开发具有模块化架构的应用程序或解决方案的基础,Hyperledger Fabric允许组件(例如共识和成员服务)即插即用。Hyperledger Fabric利用容器技术来托管称为“链代码”的智能合约,其中包含系统的应用程序逻辑。
而且Fabric有一个非常模块化的架构,更加适合商业公司的应用,它提供了强大的灵活性,可以比较自由的应用商业逻辑。 基本上可以理解为针对企业的量身定做,目标就是希望通过利用区块链技术简化企业间流程的公司,也就是解决企业间信用的问题。
对于Composer,Hyperledger Composer是属于Hyperledger下的,包含了开发构架,和工具的开源项目。从官网上,我们可以看到:Hyperledger Composer是一套用于构建区块链业务网络的协作工具,使业务所有者和开发人员能够简单快速地创建智能合约和区块链应用程序来解决业务问题。使用JavaScript构建,利用包括node.js,npm,CLI和流行编辑器在内的现代工具,Composer提供以业务为中心的抽象以及具有易于测试的devops流程的示例应用程序,以创建强大的区块链解决方案,通过技术开发推动业务需求的一致性。Hyperledger Composer原本是为了抽象出接口,可以和任何区块链网络对联,但目前的开发状况基本上是基于Hyperledger Fabric来实现的。
Q4: 联盟链智能合约和中心账本的区别
首先联盟链智能合约是一种分布式账本,是一种在网络成员之间共享、复制和同步的数据库。它在联盟链上的所有节点共享,每一个peer都有着完整的账本信息,使得整个链上的交易信息公开透明,让交易更加具有安全性。但这样会导致信息冗杂,每个peer上都有着一份账本的完整信息,当账本越来越大,每个节点需要的存储空间就越大,整个系统可能会遭到挑战。
而中心账本,把账本独立起来,只有一个官方的数据库才有其中的账本信息。比如,我把钱存在银行,那么除了银行,别人都不知道你的账户和转账信息。但是,他存在信用风险,一旦银行的数据库出了问题,全部用户都会或多或少受到损害。