10.6ABCI规范 ABCI由3种主要消息类型组成,它们从核心传递到应用程序。应用程序用相应的响应消息进行响应。 AppendTx消息是应用程序的工作马。区块链中的每个交易都会随此消息一起传递。应用程序需要根据当前状态、应用程序协议和事务的加密凭据验证通过AppendTx消息接收的每个事务。然后,经过验证的事务需要通过将值绑定到键值存储区或更新UTXO数据库来更新应用程序状态。 CheckTx消息类似于AppendTx,但它仅用于验证事务。Tendermint BFT的内存池首先使用CheckTx检查事务的有效性,并且只将有效事务转发给其对等方。应用程序可以检查事务中递增的nonce,如果nonce是旧的,则在CheckTx时返回错误。 提交消息用于计算对当前应用程序状态的加密承诺,并将其放入下一个区块头中。这有一些方便的特性。更新该状态时的不一致现在将显示为区块链分叉,捕获一整类编程错误。这也简化了安全轻客户端的开发,因为Merkle哈希证明可以通过检查块哈希进行验证,并且块哈希由验证器的仲裁(通过投票权)签名。 附加的ABCI消息允许应用程序跟踪和更改验证器集,并允许应用程序接收区块信息,如高度和提交投票。 ABCI请求/响应是简单的Protobuf消息。检出架构文件。 10.6.1AppendTx 参数: Data([]字节):请求事务字节 返回值: Code(uint32):响应代码 Data([]字节):结果字节,如果有的话 Log(字符串):调试或错误消息 使用方法: 追加并运行事务。如果事务有效,则返回代码类型.OK 10.6.2CheckTx 参数: 数据([]字节):请求事务字节 返回值: Code(uint32):响应代码 Data([]字节):结果字节,如果有的话 Log(字符串):调试或错误消息 使用方法: 验证事务。此消息不应改变状态。事务首先通过CheckTx运行,然后广播到内存池层的对等方。您可以将CheckTx设为半状态,并在提交或BeginBlock时清除状态,以允许在同一区块中存在依赖的事务序列。 10.6.3提交(Commit) 返回值: Data([]字节):Merkle根哈希 Log(字符串):调试或错误消息 使用方法: 返回应用程序状态的Merkle根哈希。 10.6.4查询(Query) 参数: Data([]字节):查询请求字节 返回值: 代码(uint32):响应代码 Data([]字节):查询响应字节 Log(字符串):调试或错误消息 10.6.5Flush 使用方法: 刷新响应队列。实现类型的应用程序。应用程序不需要实现此消息-它由项目处理。 10.6.6信息(Info) 返回值: Data([]字节):信息字节 使用方法: 返回有关应用程序状态的信息。应用程序特性。 10.6.7SetOption 参数: Key(字符串):要设置的键值 Value(字符串):要为键设置的值 返回值: Log(字符串):调试或错误消息 使用方法: 设置应用程序选项。例如Key=“mode”,Value=“mempool”表示mempool连接,或者Key=“mode”,Value=“consensus”表示consensus连接。其他选项是应用程序特性。 10.6.8初始化链(InitChain) 参数: Validators([]Validator):初始创世验证程序 使用方法: 创世时一次性调用。 10.6.9BeginBlock 参数: Height(uint64):开始的区块高度 使用方法: 表示新区块的开始。在任何AppendTxs之前调用。 10.6.10EndBlock 参数: Height(uint64):结束的块高度 返回值: Validators([]Validator):更改了具有新投票权的验证程序(删除0) 使用方法: 表示区块的结束。在所有事务之后每次提交之前调用 有关更多详细信息,请参阅ABCI库。
—- 编译者/作者:灰狼 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
【译文】阿童木COSMOS白皮书(八)
2020-01-03 灰狼 来源:区块链网络
- 上一篇:垚安创投:2020年币圈炒币者该如何操作?
- 下一篇:以太坊行情分析1.3
LOADING...
相关阅读:
- 法国兴业银行选择ConsenSys进行CBDC开发2020-10-29
- 柬埔寨中央银行启动Bakong区块链支付系统2020-10-29
- 摩根大通自己的代币JPM Coin将于本周首次亮相2020-10-29
- 血清区块链推出新的自动做市商Swap,以挑战以太坊的高收费2020-10-29
- 纽约证券交易所首席监管官将加入Andreessen Horowitz(a16z)加密团队2020-10-29