为方便存证场景的开发,合约平台提供原生存证交易接口以实现存证目的。
NativeDepositData 原生存证交易接口将目标数据在合约链上存证。
请求参数
将以下参数整体封装为 object 传入。
| 参数 | 必选 | 类型 | 说明 |
|---|---|---|---|
| from | true | string | 当前交易使用的账户 |
| to | true | string | 存证的目标账户 |
| data | true | object | 存证数据内容 |
data 字段内容:
| 字段 | 必选 | 类型 | 说明 |
|---|---|---|---|
| payload | true | string | 内容为以“0x”开头的 16 进制字符串,存证数据序列化为 16 进制的内容。 |
说明:存证交易的数据 payload 在大小上有上限限制,为合约链的一个配置项,通常默认限制为 1 MB,实际根据合约链的配置情况而定。
示例
下面是存证数据以及存证后的查询示例。
chain.ctr.NativeDepositData({from: 'Tester001',to: 'Tester001',data: {payload: '0x1234' //存证的数据内容,被序列化为 16 进制}}, (err, data) => {//存证后,如果需要查询存证数据,可通过 QueryTransaction 传入存证交易的 hash 查询chain.ctr.QueryTransaction({hash: data.txhash}, (err, data) => {console.log('TX data:', data)})//通过 QueryTransaction 查询到存证交易,证明交易发生,通过 QueryTransactionReceipt 可以验证交易成功(return_code 为0),共识后进入区块。chain.ctr.QueryTransactionReceipt({hash: data.txhash}, (err, data) => {console.log('Receipt data:', data)})})
示例执行结果
TX data: { msg_type: 62,sequence: 4,return_code: 0,group_id: '0x0000000000000000000000000000000000000000',tx:{ hash:'0x0c9987c9568a402e16fff5f4b2d0056ad6289a5b61109be947f1c7d25ccaf7dd',transaction_type: 40,timestamp: 1551861396256,nonce: '64',period: 100,from:'0xc60a9d48105950a0cca07a4c6320b98c303ad42d694a634529e8e1a0a16fcdb5',to:'0xc60a9d48105950a0cca07a4c6320b98c303ad42d694a634529e8e1a0a16fcdb5',value: 0,gas: 10000000,group_id: '0x0000000000000000000000000000000000000000',version: 2,data: '0x1234',signature:[ '0x73a83b1e4b497222c890c9f602bb8bf48c0ed647bd8455d10b5d39886c3341ff2342a197225306ea2ac181c18ef5912fb07dd1319238469e257afa44326a9d0900' ],extensions: [] },block_number: 269873,transaction_index: 0,api: 'QueryTransaction' }Receipt data: { msg_type: 63,sequence: 5,return_code: 0,group_id: '0x0000000000000000000000000000000000000000',receipt:{ result: 0,gas_used: 20020,log_entry: [ [Object] ],output: '' },block_number: 269873,transaction_index: 0,api: 'QueryTransactionReceipt' }
该文章对您有帮助吗?