1. 首页
  2. 观点

【译文】阿童木COSMOS白皮书(八)

10.6ABCI规范ABCI由3种主要消息类型组成,它们从核心传递到应用程序。应用程序用相应的响应消息进行响应。

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库。

—-

编译者/作者:灰狼

玩币族申明:玩币族作为开放的资讯分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。

联系我们

17805983018

在线咨询:点击这里给我发消息

邮件:943663009@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code