事务流程

交易事务流程

交易字段详解

  1. {
  2. "txid": "", // 交易id
  3. "blockid": "", // 交易所在block的 blockid
  4. // 交易utxo input list
  5. "txInputs": [
  6. {
  7. "refTxid": "08b2497436fdb07b6fbf902f81191f7e1d042c15ed436d91824e42ed5140eb72", // utxo所来源交易
  8. "refOffset": 0, // utxo来源交易的offset
  9. "fromAddr": "dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN", // utxo 所属AK
  10. "amount": "100000" // utxo金额
  11. }
  12. ],
  13. // 交易utxo output list
  14. "txOutputs": [
  15. {
  16. "amount": "1000", // utxo金额
  17. "toAddr": "S4Yburshd1qtzGLntNSRTDABqQW2oyaCw" // utxo接收者
  18. },
  19. {
  20. "amount": "99000", // utxo 金额
  21. "toAddr": "dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN" // utxo接收者
  22. }
  23. ],
  24. // 交易描述信息,用户自定义,用来描述交易详情
  25. "desc": "Maybe common transfer transaction",
  26. // 交易nonce值
  27. "nonce": "156438449819727887",
  28. // 交易发起时间戳
  29. "timestamp": 1564384498055177000,
  30. // 交易version,当前系统仅支持1
  31. "version": 1,
  32. // 交易是否为系统自动生成的tx标识, 客户端需要设置为 false, 否则交易失败
  33. "autogen": false,
  34. // 交易是否为矿工奖励交易标识,客户端需要设置为 false, 否则交易失败
  35. "coinbase": false,
  36. // 合约预执行生成的读集:使用预执行的结果中的读集进行回填
  37. "txInputsExt": [
  38. {
  39. "bucket": "contract",
  40. "key": "banned.desc",
  41. "refTxid": "111949af6bf48f61c51a8d3a93a22b8b7ed94dbf1a800f35674e3f2236410cb7",
  42. "refOffset": 3
  43. },
  44. {
  45. "bucket": "contract",
  46. "key": "complianceCheck.desc",
  47. "refTxid": "ad9a78ee67cbb6e2f1fff959dd3a9ca74b1a3106f3257e729ac04c5d5121866c",
  48. "refOffset": 3
  49. },
  50. {
  51. "bucket": "contract",
  52. "key": "identity.desc",
  53. "refTxid": "",
  54. "refOffset": 0
  55. }
  56. ],
  57. // 合约预执行生成的写集: 使用预执行的结果中的写集进行回填
  58. "txOutputsExt": null,
  59. // 合约请求详情: 使用预执行的结果中的请求进行回填
  60. "contractRequests": [
  61. {
  62. // 虚拟机类型
  63. "moduleName": "wasm",
  64. // 调用合约名
  65. "contractName": "banned",
  66. // 调用方法名
  67. "methodName": "verify",
  68. // 合约方法参数
  69. "args": {
  70. "contract": ""
  71. },
  72. // 合约预执行资源消耗
  73. "resource_limits": [
  74. {
  75. "type": "CPU",
  76. "limit": 40997
  77. },
  78. {
  79. "type": "MEMORY",
  80. "limit": 16777216
  81. },
  82. {
  83. "type": "DISK",
  84. "limit": 0
  85. },
  86. {
  87. "type": "XFEE",
  88. "limit": 0
  89. }
  90. ]
  91. },
  92. {
  93. "moduleName": "wasm",
  94. "contractName": "identity",
  95. "methodName": "verify",
  96. "args": {},
  97. "resource_limits": null
  98. },
  99. {
  100. "moduleName": "wasm",
  101. "contractName": "complianceCheck",
  102. "methodName": "call",
  103. "args": {},
  104. "resource_limits": [
  105. {
  106. "type": "CPU",
  107. "limit": 32175
  108. },
  109. {
  110. "type": "MEMORY",
  111. "limit": 16777216
  112. },
  113. {
  114. "type": "DISK",
  115. "limit": 0
  116. },
  117. {
  118. "type": "XFEE",
  119. "limit": 0
  120. }
  121. ]
  122. }
  123. ],
  124. // 交易提交者,只能是address,表示这个交易是由谁提交到区块链网络中
  125. "initiator": "dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN",
  126. // 交易中所有涉及到的权限需求的地址或者账户下的身份,主要是转账和合约调用以及背书需求等,
  127. // 形式有两种 1)以地址的身份: address 2) 以某个账户下某个地址的身份:account/address1
  128. "authRequire": [
  129. "dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN"
  130. ],
  131. // 交易提交者签名
  132. "initiatorSigns": null,
  133. // 交易中所有涉及到的权限需求的签名
  134. "authRequireSigns": null,
  135. // 节点收到tx的时间戳,不参与签名
  136. "ReceivedTimestamp": 0
  137. }