为方便存证场景的开发,合约平台提供原生存证交易接口以实现存证目的。
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' }
文档内容是否对您有帮助?