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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【深度知识】10分钟教会你深挖以太坊数据层

    在当下数据爆炸的信息时代,凭借区块链去中心化、点对点和防篡改的特性,“区块链+大数据”已成为研究的热门,可以说,区块链与大数据的结合为今后区块链应用的大规模落地...

    辉哥
  • 【HiBlock技术工坊54期】区块链+人工智能技术在版权领域的落地应用

    2)议题: 近年来,我国版权产业呈持续增长态势,已经成为国民经济新的增长点和经济发展中的支柱产业。但是版权领域还存在着版权登记成本高,侵权后维权难等问题。区块...

    辉哥
  • 【区块链技术工坊32期】区块链+供应链金融解决方案及落地案例

    1)题目: 【区块链技术工坊32期】区块链+供应链金融融合解决方案及落地案例 2)议题: 应用国内先进的物联网、区块链技术,通过物联网技术、追溯系统等实现...

    辉哥
  • AgileRepository - 一个基于接口的Repository快速开发库

    这是一个可以帮助你快速开发Repository的lib。有点像SpringData JPA根据方法名、注解来自动生成查询方法的功能。 对于一些简单的查询,只需...

    kklldog
  • 我使用的Unity开发多语言处理方案

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    bering
  • 扒虫篇-使用Xcode8上传到AppStore 无法构建版本 没有➕号

    由于公司产品需要上架,在准备好相关文件后,就火速设置好itunsConnect里面的内容,使用Xcode8火速上传 ipa文件到 AppStore后就开心的准备...

    進无尽
  • Hive 表的存储格式

    北漂的我
  • 区块链又放大招,助力农产品溯源技术节节高!

    经过两个多月的反复研究和测试,由上海指旺信息科技有限公司(以下简称“指旺金科”)与中兴能源公司通力合作,精心打造的“大米链”系统正式上线运营。 这是国内第一个正...

    企鹅号小编
  • TeamViewer远程唤醒主机实战教程(多图

    前言:首先感谢大家来到这里。这篇文章其实算是一个教程,文章中涉及到了TeamViewer,Mac OS X,TP-Link家用路由器,以及花生壳DDNS,对于新...

    小小科
  • 前端科普系列(1):前端简史

    回答这个问题之前,我想起了一道非常经典的前端面试题:“从输入URL到页面呈现在你面前到底发生了什么?”这个题目可以回答的很简单,但仔细思考,也可以回答的很深,这...

    2020labs小助手

扫码关注云+社区

领取腾讯云代金券