数据模型

在 JS SDK 中,有很多数据结构与合约平台的数据结构保持统一,比如账户、合约、区块、交易、收据等。

账户模型

下面是账号的基本参数及说明:

参数 类型 说明
identity string 账户的标识 ID,16 进制表示的字符串
balance BigNumber,特别类型,参考 详情 余额
auth_map string 账户或者合约的公钥和权重值
recover_key string 恢复公钥,用于帐户私钥丢失的情况,16 进制表示的字符串
recover_time number 上次成功恢复的时间
status number 状态,0:NORMAL;1:FREEZE;2:RECOVERING
encryption_key string 加密公钥,用来加密智能合约中的交易金额,16 进制表示的字符串

示例

{ identity:
   '0xc60a9d48105950a0cca07a4c6320b98c303ad42d694a634529e8e1a0a16fcdb5',
  balance: 1000000000000000000,
  recover_key:
   '0x61df14a4625bd997eeae2ebcffe58aa95ab3fcd1d7660f83b5fe34a6e08915beae36d84f960f6baca008b67c919feae0f29c262b43e985b477f92626ed2b6f6a',
  recover_time: 0,
  status: 0,
  code: '',
  storage_root:
   '0x76be8b528d0075f7aae98d6fa57a6d3c83ae480a8469e668d7b0af968995ac71',
  code_hash:
   '0x0000000000000000000000000000000000000000000000000000000000000000',
  encryption_key: '',
  version: '2',
  auth_map:
   [ { auth_key:
        '0x61df14a4625bd997eeae2ebcffe58aa95ab3fcd1d7660f83b5fe34a6e08915beae36d84f960f6baca008b67c919feae0f29c262b43e985b477f92626ed2b6f6a',
       auth_weight: 100 } ] }

合约模型

下面是合约的基本参数及说明:

参数 类型 说明
identity string 合约的标识 ID,16 进制表示的字符串
balance BigNumber,特别类型,参考 详情 余额
auth_map string 账户或者合约的公钥和权重值
recover_key string 恢复公钥,用于帐户私钥丢失的情况,16 进制表示的字符串
recover_time number 上次成功恢复的时间
status number 状态,0:NORMAL;1:FREEZE;2:RECOVERING
encryption_key string 加密公钥,用来加密智能合约中的交易金额,16 进制表示的字符串
storage_root string 世界状态的默克尔哈希根,16 进制表示的字符串
code_hash string 合约代码哈希,16 进制表示的字符串
code string 合约代码,16 进制表示的字符串

示例

{ identity:
   '0xe784481df592b4f72360db588d04fc55c4fa800c867a1ca7bb9f470ddf805b6d',
  balance: 0,
  recover_key:
   '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  recover_time: 0,
  status: 0,
  code:
   '0x016080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630d15fd7781146100875780632f265cf7146100ae578063392e6678146100dc5780637021939f14610108578063a9a981a314610120578063b13c744b14610135578063cc9ab2671461014d575b600080fd5b34801561009357600080fd5b5061009c610167565b60408051918252519081900360200190f35b3480156100ba57600080fd5b506100c660043561016d565b6040805160ff9092168252519081900360200190f35b3480156100e857600080fd5b506100f4600435610199565b604080519115158252519081900360200190f35b34801561011457600080fd5b506100c660043561024e565b34801561012c57600080fd5b5061009c610263565b34801561014157600080fd5b5061009c600435610269565b34801561015957600080fd5b50610165600435610288565b005b60035481565b600061017882610199565b151561018357600080fd5b5060009081526001602052604090205460ff1690565b6000805b60005481101561020f5760008054849190839081106101b857fe5b600091825260209091200154141561020757604080516001815290517f2b766bfa48dbb99822ac647fffc163dc74b7857beedb5ec6782ed9826453db049181900360200190a160019150610248565b60010161019d565b604080516000815290517f2b766bfa48dbb99822ac647fffc163dc74b7857beedb5ec6782ed9826453db049181900360200190a1600091505b50919050565b60016020526000908152604090205460ff1681565b60025481565b600080548290811061027757fe5b600091825260209091200154905081565b61029181610199565b151561029c57600080fd5b600081815260016020818152604092839020805460ff80821685011660ff19909116179055600380549092019091558151838152339181019190915281517f690156027e055e69a001816111c1abd4287fa897e929662c9ad6108a84fe2523929181900390910190a1505600a165627a7a72305820f4f856c692cb5ff1f3f493855d83e03251ad0399970bdf9119597e2593fd68d00029',
  storage_root:
   '0xd76c14b0f7f99cd297110d1d711a56a70d0ee758174e957874d3354dfb6fc5f4',
  code_hash:
   '0xf2798023afd1207ca4ac57ad2ecb84b032b0279d27294a6e2c57dfffb3eadeb5',
  encryption_key: '',
  acc_version: 2,
  auth_map:
   [ { auth_key:
        '0x61df14a4625bd997eeae2ebcffe58aa95ab3fcd1d7660f83b5fe34a6e08915beae36d84f960f6baca008b67c919feae0f29c262b43e985b477f92626ed2b6f6a',
       auth_weight: 100 } ] }

交易模型

下面是交易的基本参数及说明:

参数 类型 说明
hash string 交易的哈希,由排除 signature 字段的所有字段构成
type number 交易的类型
timestamp number 交易的时间戳
nonce number 防止重放攻击
period number 单位为毫秒,事务开始或结束的时间,为未来扩展使用。
from string 交易的发送者
to string 交易的接受者
value number 转账金额
gas number 交易执行的消耗费用
data string 见交易对象 data 编码方式
group_id string 交易在一个群组中执行
signature string 签名,使用一个或者多个私钥对 hash 加签
extensions string 交易扩展字段,目前 JS SDK 尚不支持

收据模型

下面是收据的基本参数及说明。

参数 类型 说明
result number 交易结果
gas_used number 交易执行的消耗费用
logs Array 交易执行的日志集合
output BigNumber 合约的 ouptut
offset number 解析合约 output 的偏移量

日志模型

下面是收据的基本参数及说明:

参数 类型 说明
from string 交易的发送者
to string 交易的接受者
topics Array 订阅的主题
log_data Array 交易产生的日志

区块模型

区块模型分为三个部分,分别是区块、区块头、区块体。

  • 区块的基本参数及说明:
参数 类型 说明
block_header object 区块头
block_body object 区块体
  • 区块头 block_header 的基本参数及说明:
参数 类型 说明
hash string 区块头的哈希
version number 版本,兼容性区分
number number 区块号
parent_hash string 上一区块哈希
transaction_root string 区块体中的交易构成的默克尔哈希根
receipt_root string 区块体中的收据构成的默克尔哈希根
state_root string 世界状态的默克尔哈希根
gas_used number 交易执行的总消耗量
timestamp number 时间戳
log_bloom string 日志布隆过滤器
  • 区块体 block_body 的基本参数及说明:
参数 类型 说明
transaction_list Array 交易列表
receipt_list Array 收据列表
consensus_proof string 共识证明

示例

block:
   { block_header:
      { hash:
         '0xf3f53c5ec6ede0bd24a2e36914cd5fbc3c2a7de80d677efdd704459a7f5f9879',
        version: 2,
        block_number: 86117,
        parent_hash:
         '0xe252fe8333dce2bacc9ec1764d03b41dea30cc0f02d3064dc2537f0db63110b8',
        transaction_root:
         '0x0000000000000000000000000000000000000000000000000000000000000000',
        receipt_root:
         '0x0000000000000000000000000000000000000000000000000000000000000000',
        state_root:
         '0xb849f08a17fd0cdd97b14c3531f18d9c82b9411ad9e97bc8812f05349496aa30',
        gas_used: 0,
        timestamp: 1547388041992,
        log_bloom:
         '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' },
     block_body:
      { transaction_list: [],
        receipt_list: [],
        consensus_proof:
         '0xf8f2f8c9b84154f46c7c6a4bd7b4da1350de36d6b7cd24e595d82b6cbc93c8b161a653e9a9db25e9aad5ed219873a44ba86dd812df0ff0813840af198703eedd2446517d761f01b841563d53272fa6627a32192f28747e1cffd541a3da206fa7f788311e30fcc0272d2c65982f341be4e9a9d8a0139e1b346b8ca835a3f710a58a00bb1f52ae7cba5b01b841db26385c9d5e8f2759c5ac72dc90befd3e2a0b6ad0ac25bd7ea0737025c07a776d34fb84625dce19d8c82450205034737414ed14999fbfa28653ee62547bd77201e61e83015065a048c1edc05bc2f69c32e61b6a79b39880474bf23fdb2466a0de3a88cdae42c649' } 
  }