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)。
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",
}
"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==",
具体说明同上。
假如想确保这笔生意业务被打包了,可以通过订阅来实现(详见下文Websocket模块)。假如几个块内没有收到任何动静的话,从头发送这笔生意业务,假如照旧没有收到,可以向其他节点发送这笔生意业务。订阅频道收不到动静的原因大概有:1,恶意节点扬弃了这笔生意业务。
"type": "app",
func (app *KVStoreApplication) DeliverTx(req types.RequestDeliverTx) types.ResponseDeliverTx {
},
由于篇幅较量长,打算分为2-3篇。
"gasWanted": "1"
}
"code": 0,
fmt.Println("----------------- kvStore CheckTx")
CheckTx
说明:发送同步生意业务,从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
"data": "",
"result": {
下面开始正文
parts := bytes.Split(req.Tx, []byte("="))
events := []types.Event{
"code": 0,
轮回发送十笔生意业务
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。