4.如何解析交易结构

根据提交交易数据接口得到的hash,调用查询交易接口获取交易回执。交易回执结构如下:

{
  "error_code": 0,//交易查询成功 
  "result": { 
  "total_count": 1, 
  "transactions": [
      {
	   "actual_fee": 776000, //交易实际花费的费用
	   "close_time": 1664352470872350, //交易执行完成的时间
	   "error_code": 0, //交易的错误码,0表示交易执行成功,非0表示交易执行失败
	   "error_desc": "", //交易的错误描述
	   "hash": "0f3477d3a6708168ce7f694a7eaf87129f7373548be0b085d3422809c03ea8d1", //交易hash值
	   "ledger_seq": 932290, //交易所在的区块高度
	   "signatures": [ //签名列表
		{
			"public_key": "b0656670063fd619ae607e39187477eabb70f45a657879af8c7dfe1c0dbb105dbccf23", //公钥
			"sign_data": "2c212c987688c176e8b444b0e7f977d8c290ccf88a29305aadac2b693ce983827b46842e403703fd0456e23b6121cb242b1610f1926421577ee6714950dd4900" //签名数据
		}
	 ],
	  "transaction": { //交易内容,交易类型包括:创建账号/合约、合约调用、星火令转移、设置metadata、设置权限、记录日志
		  .....
	 },
	 "tx_size": 776 //交易字节数
      } 
    ] 
  } 
}

4.1 创建账号

{
  "source_address":"did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//交易源账号,即交易的发起方
  "nonce":2, //交易源账户的nonce值
  "fee_limit" : 1000000, //愿为交易花费的手续费
  "gas_price": 1000,//gas价格(不小于配置的最低值)
  "ceil_ledger_seq": 100, //可选,区块高度限制, 如果大于0,则交易只有在该区块高度之前(包括该高度)才有效
  "metadata":"0123456789abcdef", //可选,用户自定义给交易的备注,16进制格式
  "operations":[
    {
      "type": 1, // 创建账户操作类型
      "source_address": "did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//可选,操作源账户,即操作的执行方
      "metadata": "0123456789abcdef",//可选,用户自定义给交易的备注,16进制格式
      "create_account": {
        "dest_address": "did:bid:ef9nCb6Ge1Pj2wv7XW3hnzka6G2MkPZs",//待创建的目标账户地址
        "init_balance": 100000,//目标账户的初始化余额
        "priv":  {
          "master_weight": 1,//目标账户拥有的权力值
          "thresholds": {
            "tx_threshold": 1//发起交易需要的权力值
          }
        }
      }
    }
  ]
}

4.2 创建合约

{
  "source_address":"did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//交易源账号,即交易的发起方
  "nonce":2, //交易源账户的nonce值
  "fee_limit" : 1000000, //愿为交易花费的手续费
  "gas_price": 1000,//gas价格(不小于配置的最低值)
  "ceil_ledger_seq": 100, //可选,区块高度限制, 如果大于0,则交易只有在该区块高度之前(包括该高度)才有效
  "metadata":"0123456789abcdef", //可选,用户自定义给交易的备注,16进制格式
  "operations":[
    {
      "type": 1, // 创建账户操作类型
      "source_address": "did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//可选,操作源账户,即操作的执行方
      "metadata": "0123456789abcdef",//可选,用户自定义给交易的备注,16进制格式
      "create_account": {
        "contract": { //合约
          "payload": "
                 'use strict';
                 function init(bar)
                 {
                   return;
                 }

                 function main(input)
                 {
                   return;
                 }

                 function query()
                 {
                   return;
                 }
                 "//合约代码
        },
        "init_balance": 100000,  //合约账户初始化资产
        "init_input" : "{\"method\":\"toWen\",\"params\":{\"feeType\":0}}",//可选,合约代码init函数的入参
        "priv": {
          "master_weight": 0,//待创建的合约账户拥有的权力值
          "thresholds": {
            "tx_threshold": 1 //发起交易需要的权力值
          }
        }
      }
    }
  ]
}

4.3合约调用

{
    "source_address": "did:bid:ef27dchGWy9WY5xVznyPScZ6MP5CATsJF",//交易源账号,即交易的发起方
    "fee_limit": 200000000,//愿为交易花费的手续费
    "gas_price": 200,//gas价格(不小于配置的最低值)
    "nonce": 111028, //交易源账户的nonce值
    "operations": [
      {
        "type": 7,//合约调用类型
        "pay_coin": {
          "dest_address": "did:bid:efMTBwMHE7audr53KyZK5cjw3ysZUXPF", //合约地址
          "input": "{\"function\":\"safeTransferFrom(address,address,string)\",\"args\":\"did:bid:ef27dchGWy9WY5xVznyPScZ6MP5CATsJF,did:bid:efdcPDsvv2RnMwAt5D1PYxMtbGvW8JjT,\u0027did:bid:efdudDHcUc4EXUyW2hTCP9JtRxfiRsDB\u0027\"}" //合约调用方法
        }
      }
    ]
}

4.4 星火令转移

{
  "fee_limit": 10253000,//愿为交易花费的手续费
  "gas_price": 1000,//gas价格(不小于配置的最低值)
  "nonce": 110, //交易源账户的nonce值
  "operations": [
    {
      "pay_coin": {
        "amount": 1000000000, //转账金额
        "dest_address": "did:bid:ef3LqNzb4ssNf2vqwNwBfqngrA3Sx8yD" //目的地址
      },
      "type": 7// 交易操作类型
    }
  ],
  "source_address": "did:bid:ef249EXxmYEuvazPM5Qr77H5xN18Zba3f"//交易源账号,即交易的发起方
}

4.5 设置metadata

{
  "source_address":"did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//交易源账号,即交易的发起方
  "nonce":2, //交易源账户的nonce值
  "fee_limit" : 1000000, //愿为交易花费的手续费
  "gas_price": 1000,//gas价格(不小于配置的最低值)
  "ceil_ledger_seq": 100,//可选,区块高度限制, 如果大于0,则交易只有在该区块高度之前(包括该高度)才有效
  "metadata":"0123456789abcdef",//可选,用户自定义给交易的备注,16进制格式
  "operations":[
    {
      "type": 4,//设置 metadata 操作类型
      "source_address": "did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//可选,操作源账户,即操作的执行方
      "metadata": "0123456789abcdef",//可选,用户自定义给交易的备注,16进制格式
      "set_metadata": {
        "key": "abc",//metadata关键字
        "value": "hello abc!",//metadata内容
        "version": 0 //可选,metadata版本号
      }
    }
  ]
}

4.6 设置权限

{
  "source_address":"did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//交易源账号,即交易的发起方
  "nonce":2, //交易源账户的nonce值
  "fee_limit" : 1000000, //愿为交易花费的手续费
  "gas_price": 1000,//gas价格(不小于配置的最低值)
  "ceil_ledger_seq": 100,//可选,区块高度限制, 如果大于0,则交易只有在该区块高度之前(包括该高度)才有效
  "metadata":"0123456789abcdef",//可选,用户自定义给交易的备注,16进制格式
  "operations":[
    {
      "type": 9,//设置权限操作类型
      "source_address": "did:bid:efEB8Lvnzw8pzDCWUmqe1XJfNZMAYRvR",//可选,操作源账户,即操作的执行方
      "metadata": "0123456789abcdef",//可选,用户自定义给交易的备注,16进制格式
      "set_privilege": {
        "master_weight": "10",//可选,当前账户的自身权力值
        "signers"://可选,需要操作的签名者列表
        [
          {
            "address": "did:bid:ef9nCb6Ge1Pj2wv7XW3hnzka6G2MkPZs",//需要操作的签名者地址
            "weight": 8 //可选,签名者的权力值
          }
        ],
        "tx_threshold": "2",//可选,发起交易需要权力值
        "type_thresholds"://可选,不同操作需要的权力值
        [
          {
            "type": 1,//创建账户操作类型
            "threshold": 8 //可选,该操作需要的权力值
          },
          {
            "type": 7,//调用合约需要权限值
            "threshold": 9 //可选该操作需要的权力值
          }
        ]
      }
    }
  ]
}

4.7 记录日志

{
  "transaction": {
    "nonce": 511546,
    "operations": [
      {
        "log": {
          "datas": [
            "{\"data\":\"\",\"topics\":[\"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"00000000000000006566ee21773c3a96a1440a669dee46e40ca3b1d28caa5e70\",\"0000000000000000656686e34bc4e3a92a07cf162c463518a9491f0c4ad56aca\",\"0000000000000000000000000000000000000000000000000000000000061131\"]}"
          ],//日志内容
          "topic": "evmLog_dced48d56925087f9883d7d9b66e71f8ea93681adc4b0d8a64771928202f74a0"// 日志主题
        },
        "type": 8 //记录日志操作类型
      }
    ],
    "source_address": "did:bid:efMTBwMHE7audr53KyZK5cjw3ysZUXPF"
  }
}