蚂蚁区块链第16课 JS SDK数据模型(账户|合约|交易|收据|日志|区块)

本文深入解析蚂蚁区块链JSSDK中的数据模型,涵盖了账户、合约、交易、收据、日志和区块等核心组件的详细参数与功能说明,为开发者提供了全面的技术指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蚂蚁区块链专栏封面16

1,摘要

本文讲解蚂蚁区块链合约平台 JS SDK 涉及的数据模型,包括账户模型,合约模型,交易模型,收据模型,日志模型,区块模型。

2,数据模型

**数据模型(Data Model)**是数据特征的抽象。数据(Data)是描述事物的符号记录,模型(Model)是现实世界的抽象。数据模型从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供了一个抽象的框架。数据模型所描述的内容有三部分:数据结构、数据操作和数据约束。

2.1 账户模型

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

参数类型说明
identitystring账户的标识 ID,16 进制表示的字符串
balanceBigNumber,特别类型,参考 详情余额
auth_mapstring账户或者合约的公钥和权重值
recover_keystring恢复公钥,用于帐户私钥丢失的情况,16 进制表示的字符串
recover_timenumber上次成功恢复的时间
statusnumber状态,0:NORMAL;1:FREEZE;2:RECOVERING
encryption_keystring加密公钥,用来加密智能合约中的交易金额,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 } ] }

2.2 合约模型

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

参数类型说明
identitystring合约的标识 ID,16 进制表示的字符串
balanceBigNumber,特别类型,参考 详情余额
auth_mapstring账户或者合约的公钥和权重值
recover_keystring恢复公钥,用于帐户私钥丢失的情况,16 进制表示的字符串
recover_timenumber上次成功恢复的时间
statusnumber状态,0:NORMAL;1:FREEZE;2:RECOVERING
encryption_keystring加密公钥,用来加密智能合约中的交易金额,16 进制表示的字符串
storage_rootstring世界状态的默克尔哈希根,16 进制表示的字符串
code_hashstring合约代码哈希,16 进制表示的字符串
codestring合约代码,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 } ] }

2.3 交易模型

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

参数类型说明
hashstring交易的哈希,由排除 signature 字段的所有字段构成
typenumber交易的类型
timestampnumber交易的时间戳
noncenumber防止重放攻击
periodnumber单位为毫秒,事务开始或结束的时间,为未来扩展使用。
fromstring交易的发送者
tostring交易的接受者
valuenumber转账金额
gasnumber交易执行的消耗费用
datastring见交易对象 data 编码方式
group_idstring交易在一个群组中执行
signaturestring签名,使用一个或者多个私钥对 hash 加签
extensionsstring交易扩展字段,目前 JS SDK 尚不支持

2.4 收据模型

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

参数类型说明
resultnumber交易结果
gas_usednumber交易执行的消耗费用
logsArray交易执行的日志集合
outputBigNumber合约的 ouptut
offsetnumber解析合约 output 的偏移量

2.5 日志模型

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

参数类型说明
fromstring交易的发送者
tostring交易的接受者
topicsArray订阅的主题
log_dataArray交易产生的日志

2.6 区块模型

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

  • 区块的基本参数及说明:
参数类型说明
block_headerobject区块头
block_bodyobject区块体
  • 区块头 block_header 的基本参数及说明:
参数类型说明
hashstring区块头的哈希
versionnumber版本,兼容性区分
numbernumber区块号
parent_hashstring上一区块哈希
transaction_rootstring区块体中的交易构成的默克尔哈希根
receipt_rootstring区块体中的收据构成的默克尔哈希根
state_rootstring世界状态的默克尔哈希根
gas_usednumber交易执行的总消耗量
timestampnumber时间戳
log_bloomstring日志布隆过滤器
  • 区块体 block_body 的基本参数及说明:
参数类型说明
transaction_listArray交易列表
receipt_listArray收据列表
consensus_proofstring共识证明

示例

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' } 
  }

3,参考

(1)JS SDK 开发指南>数据模型
https://tech.antfin.com/docs/2/107129

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笔名辉哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值