$ tendermint init
kvstore
。-proxy_app
运行标志用来指定一个内置的ABCI应用
,例如kvstore
是tendermint程序内置的键值对应用。$ tendermint node --proxy_app=kvstore
# 如果之前已经使用过tendermint,只需要初始化data就可以
$ tendermint unsafe_reset_all
$ curl -s localhost:26657/status
{
"jsonrpc": "2.0",
"id": "",
"result": {
"node_info": {
"protocol_version": {
"p2p": "7",
"block": "10",
"app": "1"
},
"id": "d774d477fd4f339058d7dc35edf75f32371fc5b7",
"listen_addr": "tcp://0.0.0.0:26656",
"network": "test-chain-F5dt3c",
"version": "0.31.5",
"channels": "4020212223303800",
"moniker": "master",
"other": {
"tx_index": "on",
"rpc_address": "tcp://0.0.0.0:26657"
}
},
"sync_info": {
"latest_block_hash": "B6B423295B7641BD540DF051F2597984784B5F93C27FE3ED053B9B75447368EC",
"latest_app_hash": "0000000000000000",
"latest_block_height": "252",
"latest_block_time": "2019-05-01T11:35:34.80586108Z",
"catching_up": false
},
"validator_info": {
"address": "4252DFF3DD179BB27E73EBCBE0B9B706F7E7CBF9",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "OpVAF6IXhA7r5nF+DqgNLTvfE1TQXOuKT93yFawTA/Y="
},
"voting_power": "10"
}
}
}
RPC服务
发出请求。没有指定key,value,lucy
会既是key,又是value。$ curl -s 'localhost:26657/broadcast_tx_commit?tx="lucy"'
{
"jsonrpc": "2.0",
"id": "",
"result": {
"check_tx": {
"gasWanted": "1"
},
"deliver_tx": {
"tags": [
{
"key": "YXBwLmNyZWF0b3I=",
"value": "Q29zbW9zaGkgTmV0b3dva28="
},
{
"key": "YXBwLmtleQ==",
"value": "bHVjeQ=="
}
]
},
"hash": "DC99E9AA86FAB83A062CFF5E0808391757071A3D5DBB942802D5F923AAEAD3B4",
"height": "299"
}
}
value
字段,例如bHVjeQ==
,这其实是字符串lucy
的base64编码。我们可以通过命令 base64
对其进行解码,结论:可以发现key = lucy$ echo "YXBwLmNyZWF0b3I=" | base64 -d
app.creator
$ echo "Q29zbW9zaGkgTmV0b3dva28=" | base64 -d
Cosmoshi Netowoko
$ echo "YXBwLmtleQ==" | base64 -d
app.key
$ echo "bHVjeQ==" | base64 -d
lucy
$ curl -s 'localhost:26657/broadcast_tx_commit?tx="name=tiger"'
{
"jsonrpc": "2.0",
"id": "",
"result": {
"check_tx": {
"gasWanted": "1"
},
"deliver_tx": {
"tags": [
{
"key": "YXBwLmNyZWF0b3I=",
"value": "Q29zbW9zaGkgTmV0b3dva28="
},
{
"key": "YXBwLmtleQ==",
"value": "bmFtZQ=="
}
]
},
"hash": "EC6087612FF50A1BF5353EF0F7F344F33EDCCFD511939EE063DD4840E599795D",
"height": "620"
}
}
$ echo "bmFtZQ==" | base64 -d'
name
key和value均为lucy
:$ curl -s 'localhost:26657/abci_query?data="lucy"'
{
"jsonrpc": "2.0",
"id": "",
"result": {
"response": {
"log": "exists",
"key": "bHVjeQ==",
"value": "bHVjeQ=="
}
}
}
$ echo "bHVjeQ==" | base64 -d
lucy
name
,value为tiger
:$ curl -s 'localhost:26657/abci_query?data="name"'
{
"jsonrpc": "2.0",
"id": "",
"result": {
"response": {
"log": "exists",
"key": "bmFtZQ==",
"value": "dGlnZXI="
}
}
}
$ echo "bmFtZQ==" | base64 -d
name
$ echo "dGlnZXI=" | base64 -d'
tiger
参考链接:
自主可控区块链神器Tendermint五分钟入门
区块链框架 Tendermint 入门教程