共计 6032 个字符,预计需要花费 16 分钟才能阅读完成。
————用区块链技术为文体产业赋能————
日前,SEER 核心开发者对 SEER cli 和 database_api 进行了更新,新增接口:get_transaction_by_txid,可用于通过交易 ID 查询该交易在链上所在区块高度和交易在区块中的位置。
交易 ID 即 txid,是通过已签名的交易内容来进行计算出的散列值,可在区块生产或被确认前产生。例如交易所等第三方网关,通常在发起一笔提现或充值后,会向用户反馈此操作的交易 id,用户可凭此 txid 在区块浏览器查询此交易被确认的状态。因此,TXID 的一致算法非常重要,而在 Graphene 工具组中,传统的形式是通过额外运行 elasticsearch 插件来实现此功能。SEER 将此功能集成在 database_api 中,可极大减轻前端开发者的工作量,提高开发效率。
格式:get_transaction_by_txid transaction_id
参数:transaction_id,交易的散列值。可通过 cli 的 get_transaction_id、transfer2、get_block 接口进行前端计算生成,新升级后的 database_api 的 get_block 也将包含 transaction_ids 字段。
作用:通过 transaction_id 查询该交易在链上所在区块高度和交易在区块中的位置,前端开发者可再通过 get_block 接口向用户返回该 transaction_id 所对应的 transactions 结构体(即交易详细内容)。
示例:{"jsonrpc": "2.0", "method": "get_transaction_by_txid", "params": [3ecbd34522eb320b105b653247012ea996fa7065], "id": 1}
返回信息示例:
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"id": "2.22.102327",// 交易的 object_ID
"txid": "3ecbd34522eb320b105b653247012ea996fa7065",//transaction_id
"timestamp": "2019-08-26T08:32:51",// 时间戳, 格林尼治时间
"block_num": 13274359,// 交易所在块高
"trx_in_block": 0// 交易在区块中的位置
}
}
通过接口返回的 "block_num"
、"trx_in_block"
两个参数可知道此交易所在块高及此交易在该区块中的位置,从而再使用 get_block
接口查询其交易详细内容。
示例:{"jsonrpc": "2.0", "method": "get_block", "params": [13274359], "id": 1}
返回信息示例:
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"previous": "00ca9c96829ff5fbcef6c087c762e2cde24b5915",// 上一个块的块号
"timestamp": "2019-08-26T08:32:51",// 时间戳, 格林尼治时间
"witness": "1.5.55",// 该块的见证人 object_ID
"transaction_merkle_root": "c41ddd9469e13daf8b7f75cbdf1ed2b4c8a98b79",// 交易默克尔根值
"extensions": [],
"witness_signature": "2048394f5d99f22f58cdc2de15568fb27397eb5bb9da3a235a04f6da68f622aa8b5face2f9e7d01a4c58e3fcd605855c683ac9ca58b250a53775d5a8afd199134d",// 见证人签名
"transactions": [// 交易列表
{// 第一个交易结构体
"ref_block_num": 40186,// 引用的区块号
"ref_block_prefix": 4227178370,// 引用的区块头
"expiration": "2019-08-28T08:33:18",// 交易可能的过期时间
"operations": [// 操作列表
[0, {// 操作代码,此处 0 表示转账
"fee": {// 手续费
"amount": 200000,// 金额,带 5 位小数精度,此处 200000 表示 2
"asset_id": "1.3.0"// 资产类型
},
"from": "1.2.28828",// 发起用户 ID
"to": "1.2.8848",// 接收用户 ID
"amount": {
"amount": 100000,// 金额,带 5 位小数精度,此处 100000 表示 1
"asset_id": "1.3.0"
},
"extensions": []}]
],
"extensions": [],
"signatures": ["1f5cd08d2edbb100429915dee6b0449c8a6319c4dc556147db13cc9af1ef26c51756b437926dc29d24dc65cf1110c71f246fb82fa698f1970ae3523729d0bbc3fe"],// 交易签名
"operation_results": [// 操作结果
[0, {}]
]
}, {// 第二个交易结构体
"ref_block_num": 40186,// 引用的区块号
"ref_block_prefix": 4227178370,// 引用的区块头
"expiration": "2019-08-28T08:33:19",// 交易可能的过期时间
"operations": [// 操作列表
[0, {// 操作代码,此处 0 表示转账
"fee": {// 手续费
"amount": 200000,// 金额,带 5 位小数精度,此处 200000 表示 2
"asset_id": "1.3.0"// 资产类型
},
"from": "1.2.28828",// 发起用户 ID
"to": "1.2.8848",// 接收用户 ID
"amount": {
"amount": 100000,// 金额,带 5 位小数精度,此处 100000 表示 1
"asset_id": "1.3.0"// 资产类型
},
"extensions": []}]
],
"extensions": [],
"signatures": ["20295aa7c286a406c86540524a97e6395815effd6e617ef940b869d37da303aabb175123fd6f83a6661d4955cf90198babe7a3002c0e2a7d73a771b92cd097648c"],// 交易签名
"operation_results": [// 操作结果
[0, {}]
]
}],
"block_id": "00ca9c97062a5716c580219349f3d7fb04713f89",// 当前块号
"signing_key": "SEER7txfWeMueDBWKs6sC9zTUmwhjG6xeVwPZhXwcvH5ctCYdnCPnu",// 见证人签名公钥
"transaction_ids": ["3ecbd34522eb320b105b653247012ea996fa7065", "501e507c8c62221f9f4484d1f0334585e3cf362a"],// 交易 ID 集合
"txs_count": 2// 此块包含的交易数量
}
}
在此例中,同一个块中包含 2 笔交易,"trx_in_block"
参数为 0
可知该笔交易为块中第一笔交易,于是可取得该笔交易结构体内容:
{ // 第一个交易结构体
"ref_block_num": 40186, // 引用的区块号
"ref_block_prefix": 4227178370, // 引用的区块头
"expiration": "2019-08-28T08:33:18", // 交易可能的过期时间
"operations": [ // 操作列表
[0, { // 操作代码,此处 0 表示转账
"fee": { // 手续费
"amount": 200000, // 金额,带 5 位小数精度,此处 200000 表示 2
"asset_id": "1.3.0"// 资产类型 此处表示 SEER
},
"from": "1.2.28828", // 发起用户 object_ID,可通过 get_account 查询其用户名,此处为 bm520
"to": "1.2.8848", // 接收用户 ID,此处为 xyz123
"amount": {
"amount": 100000, // 金额,带 5 位小数精度,此处 100000 表示 1
"asset_id": "1.3.0"// 资产类型 此处表示 SEER
},
"extensions": []}]
],
"extensions": [],
"signatures": ["1f5cd08d2edbb100429915dee6b0449c8a6319c4dc556147db13cc9af1ef26c51756b437926dc29d24dc65cf1110c71f246fb82fa698f1970ae3523729d0bbc3fe"], // 交易签名
"operation_results": [ // 操作结果
[0, {}]
]
}
翻译该交易内容为:bm520 向 xyz123 转账 1 SEER
。
目前具备此功能的 API 已部署到 SEER 社区提供的新加坡节点:ws://sg1.seerchain.org,并将在下次硬分叉升级时整合进发布版本节点程序,扩展到所有 API 节点。当下,SEER 社区开发者正基于此最新功能 API 开发新版本网页钱包和区块浏览器。
大家可使用 wscat、http://www.websocket-test.com…。
示例:
> root@ubuntu:~# wscat -c ws://sg1.seerchain.org
connected (press CTRL+C to quit)
> {"jsonrpc": "2.0", "method": "get_transaction_by_txid", "params": [15b922cbbd7f3648d92bed9f001a2cc99651228c], "id": 1}
< {"id":1,"jsonrpc":"2.0","result":{"id":"2.22.101376","txid":"15b922cbbd7f3648d92bed9f001a2cc99651228c","timestamp":"2019-08-24T00:50:36","block_num":13158209,"trx_in_block":0}}
> {"jsonrpc": "2.0", "method": "get_block", "params": [13158209], "id": 1}
< {"id":1,"jsonrpc":"2.0","result":{"previous":"00c8c740c7025d851d50eade54a0a4a5255215eb","timestamp":"2019-08-24T00:50:36","witness":"1.5.89","transaction_merkle_root":"ef0d18cdd451e748b30bfeaca3ed87e366b47550","extensions":[],"witness_signature":"201ebf2bd6f81f0bf35309dead3c7c40d28040a724b754f7af1204f66277ba0327696b8db0ba6172703a249e92c99ea214dc8c42962bca4bbfd74d9b6417400c90","transactions":[{"ref_block_num":51008,"ref_block_prefix":2237465287,"expiration":"2019-08-24T00:52:35","operations":[[0,{"fee":{"amount":336718,"asset_id":"1.3.0"},"from":"1.2.50","to":"1.2.9981","amount":{"amount":"10000000000","asset_id":"1.3.0"},"memo":{"from":"SEER6uDmZCs76JMpFTHjcTFLmjPhkjLTnA8FP3wwmSo5X7fCDATLRe","to":"SEER646RGdL4gncz7y834wfGfcHECnKdbdVWd6gh9aEYdn3HWyhBjB","nonce":"401051605206583","message":"1143d782c85ec6a8f42b401af0289b3082ed72a79a9e64200caf8a4d099b90936e552093ab285fda2972a5cd7d6a541fedf144557440b742e201642a527a350a"},"extensions":[]}]],"extensions":[],"signatures":["206665af3497858608911b602d7b69fadd8e6324ecf7c24ded5b2885449b05535210189789b5c5aac2ebfa58084c1ecb430488bfba0112c28ea62eb81544397753"],"operation_results":[[0,{}]]}],"block_id":"00c8c74161854887391db23c38dd960268760f17","signing_key":"SEER81CmBUXQUTCLCsym74KM7S7PTRpU5WyWSRJ92ZWfVck5S3Fyai","transaction_ids":["15b922cbbd7f3648d92bed9f001a2cc99651228c"],"txs_count":1}}
>
往期回顾
???? 技术派 I SEER 区块链压力测试告诉什么叫“黑科技”
????SEER 项目投资方拿云体育与海南省文投合资注册公司
????SEER 超级福利来袭!5,000,000SEER 为你整装待发!
???? 领航区块链研究中心正式成立,拿云体育成为理事长单位
微信群:请加小助手微信 seeryuanyuan
Telegram:https://t.me/seerchain
Twitter:https://twitter.com/info_seer
微博:SEER 爱好者社区
币世界:https://i.bishijie.com/home/S…