前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蚂蚁区块链第16课 JS SDK数据模型(账户|合约|交易|收据|日志|区块)

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

作者头像
辉哥
发布2019-04-18 16:46:35
6700
发布2019-04-18 16:46:35
举报

1,摘要

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

2,数据模型

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

2.1 账户模型

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

参数

类型

说明

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

2.2 合约模型

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

参数

类型

说明

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

2.3 交易模型

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

参数

类型

说明

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 尚不支持

2.4 收据模型

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

参数

类型

说明

result

number

交易结果

gas_used

number

交易执行的消耗费用

logs

Array

交易执行的日志集合

output

BigNumber

合约的 ouptut

offset

number

解析合约 output 的偏移量

2.5 日志模型

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

参数

类型

说明

from

string

交易的发送者

to

string

交易的接受者

topics

Array

订阅的主题

log_data

Array

交易产生的日志

2.6 区块模型

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

  • 区块的基本参数及说明:

参数

类型

说明

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,摘要
  • 2,数据模型
    • 2.1 账户模型
      • 示例
    • 2.2 合约模型
      • 示例
    • 2.3 交易模型
      • 2.4 收据模型
        • 2.5 日志模型
          • 2.6 区块模型
            • 示例
        相关产品与服务
        区块链
        云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档