http://www.7klian.com

tendermint提供的RPC接口(1)

"jsonrpc": "2.0",
C:\Users\ch>curl -s localhost:26657/broadcast_tx_sync?tx=\"author=caohuan\"
key, value = req.Tx, req.Tx

"hash": "B339C04B9163F0585B8DB0703E2A107A9B21034B2F5D18BF9B66BDEF5DD627E3"
{Key: []byte("creator"), Value: []byte("Cosmoshi Netowoko")},
说明:既返回CheckTx的执行功效也返回DeliverTx的执行功效。

/unsubscribe







}
}

},
好比:




{


}

},

}


"key": "a2V5",
}
2,恶意提议者(没有须要与你通信的人)扬弃了大概在未来生效的生意业务(https://github.com/tendermint/tendermint/issues/3322)。

"log": "DeliverTx OK",

tm.event = 'NewBlock' // 新区快发生


示例:

app.state.Size += 1



{
本文用的是官方的KVStore的例子来测试api,为了更好的显示测试功效,修改了部门代码,具体如下:


{



]

"log": "", //既不是CheckTx也不是DeliverTx "hash": "ED86886438919C7673ACBD0C649688D95A2D0CA3425A1350E68644AE367411AA"
fmt.Println("----------------- kvStore DeliverTx")
operand可以是一个字符串(要用单引号转义),数字,日期可能事件。




功效:


return types.ResponseCheckTx{Code: code.CodeTypeOK, GasWanted: 1,Log:"CheckTx OK"} //此处增加Log,利便测试}

"attributes": [
"value": "Q29zbW9zaGkgTmV0b3dva28="

示例:
if len(parts) == 2 {
"value": "YXV0aG9y"
operation可以是“=”,“<”,“<=”,“>”,“> =”, "CONTAINS"

需要留意的是,官方发起仅仅在测试和开拓的时候利用此接口,在出产情况,尽大概的利用同步可能异步的方法发送生意业务,假如要确认生意业务乐成,可以利用订阅的成果。

}

Attributes: []cmn.KVPair{
var key, value []byte
"log": "CheckTx OK",



}

tendermint提供了几个预界说的key:tm.ecent,tx.hash,tx.height。可是用户可以通过重界说DeliverTx的响应来增加key,用以订阅其他的事件。这个较量巨大,改天从头写一篇文章来具体叙述。

说明:打消订阅


"id": "",
"id": "",
示例:

},
} else {
func (app *KVStoreApplication) CheckTx(req types.RequestCheckTx) types.ResponseCheckTx {
return types.ResponseDeliverTx{Code: code.CodeTypeOK, Events: events,Log:"DeliverTx OK"} //此处增加Log,利便测试



}
/broadcast_tx_commit





/broadcast_tx_async


{Key: []byte("key"), Value: key},

"jsonrpc": "2.0",
订阅的代码中配置一个计数器,高出十笔生意业务,即打消订阅
tm.event = 'Tx' AND tx.height = 5 // 第五个块的所有生意业务
"id": "",
"log": "CheckTx OK", //可以看到这里的返回值就是CheckTx的返回值
]
示例:

"deliver_tx": { //DeliverTx的返回值
"result": {
tx.height = 5 // 第五个块的所有生意业务

"jsonrpc": "2.0",
想要订阅某个事件,需要提供一个字符串表达式,名目是“condition AND condition ”(只能用AND不能用OR)。condition的名目是“key operation operand”,

}


tm.event = 'Tx' AND tx.hash = 'XYZ' // 某一笔生意业务
{
DeliverTx

{
2,Websocket(订阅及打消订阅)


C:\Users\ch>curl -s localhost:26657/broadcast_tx_commit?tx=\"author=caohuan12\"
tm.event = 'CompleteProposal' // 完成一个提案



"height": "7"
"key": "Y3JlYXRvcg==",
具体说明同上。

}

"data": "",
假如想确保这笔生意业务被打包了,可以通过订阅来实现(详见下文Websocket模块)。假如几个块内没有收到任何动静的话,从头发送这笔生意业务,假如照旧没有收到,可以向其他节点发送这笔生意业务。订阅频道收不到动静的原因大概有:

1,恶意节点扬弃了这笔生意业务。
"type": "app",
func (app *KVStoreApplication) DeliverTx(req types.RequestDeliverTx) types.ResponseDeliverTx {



},
由于篇幅较量长,打算分为2-3篇。

C:\Users\ch>curl -s localhost:26657/broadcast_tx_async?tx=\"author=caohuan1\"


"gasWanted": "1"
}
"code": 0,


fmt.Println("----------------- kvStore CheckTx")
CheckTx

"result": {

说明:发送同步生意业务,从CheckTx返回相应值,不会期待DeliverTx的功效。



{


筹备事情:作者是在windows情况长举办的陈设测试,其他情况也是大同小异。可参考往期文章windows情况下tendermint的编译与利用

key, value = parts[0], parts[1]
app.state.db.Set(prefixKey(key), value)
},



"events":




Type: "app",


{
"check_tx": { //CheckTx的返回值


1,Tx(发送生意业务)


假如CheckTx或则DeliverTx失败了,不会返回任何的错误信息,只会返回一个包括non-OK的ABCI code。


/subscribe






/broadcast_tx_sync

说明:发送异步生意业务,无返回值,,不期待CheckTx可能DeliverTx的执行功效

key是一个字符串(\t\n\r()'"=><不答允呈此刻key中)

示例:

"hash": "95C3A05EC5FBE8E4F5D4FC690398E0D9AD8B7777A4D9A130982853F9647633C9",



"data": "",
"result": {
下面开始正文


parts := bytes.Split(req.Tx, []byte("="))


events := []types.Event{
"code": 0,
轮回发送十笔生意业务




郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读