

Josh Lavin编辑了12月4日这个页面,共1次修订
1.主要schema关系
下图显示了数据库中每个集合的主要模式:区块,交易,消息和帐户。为了提高读取/查询的性能并减少整体存储需求,我们选择规范化和嵌套这些不同的实体来显示关系。下图显示了每个集合文档的主键以及任意外键。
约定
- 主键和外键字段应以_id结尾,除非它是键列表,如果是键列表的话,字段名称应该是被引用对象的模式类型的复数形式。
2.区块
字段 | 类型 | 关联 ID | 描述 |
id | String | PK | 系统唯一ID |
block_num | Integer | 顺序的数字标识符 | |
previous | String | FK | 前一个区块的SHA256 |
timestamp | MongoDB Date (timestamp) | 排期 | |
transaction_merkle_root | String | 生成的区块的总和检验码(SHA256) | |
producer | String | FK | 区块生产者的帐户 |
producer_signature | String | ||
transactions | [ObjectId,…] | 与此区块关联的交易ID列表 | |
ref_block_prefix | Integer | ||
producer_changes | Array | 生产者名单的变化 |
示例
{
“previous”: “000000099271295c7e73dcf268802491f8d7e715608a6ec8182f0d4c4d6921bf”,
“timestamp”: “2017-12-04T03:09:10”,
“transaction_merkle_root”: “0000000000000000000000000000000000000000000000000000000000000000”,
“producer”: “inita”,
“producer_changes”: [],
“producer_signature”: “20621b7582a272a8ef15e0caa2590c279b706b851e9007ba558855c0b2844e0bb975481417ecbe7f3b5ffb488ec733f508c6455743bc26604d5f220bcd25e4f731”,
“cycles”: [],
“id”: “0000000abf6baeb841293e7b6423f47e98517206595bbae4eb69281ca0501a57”,
“block_num”: 10,
“ref_block_prefix”: 2067671361
}
3.交易
字段 | 类型 | 关联 ID | 描述 |
transaction_id | ObjectId | PK | 系统唯一ID |
ref_block_num | Integer | 关联区块数字标识符 | |
ref_block_prefix | Integer | 关联区块头 | |
expiration | String | 交易到期时间 | |
scope | Array | 帐户范围 | |
transaction_merkle_root | String | 生成的区块的总和检验码(SHA256) | |
producer_account_id | String | FK | 区块生产者的帐户 |
signatures | Array | 签名数组 |
例
示例
{
“transaction_id”: “f989025b959026f4d1e97346c0808b0fa316f7426384ce4ded83d52fde0404bf”,
“transaction”: {
“ref_block_num”: 7284,
“ref_block_prefix”: 1294303748,
“expiration”: “2017-12-04T07:31:48”,
“scope”: [
“benchmark…3”,
“benchmark…i”
],
“signatures”: [
“1f58d30c249bebfca299d485636b1bf6836df9df4a362221648f433897170fb70f1dc8933f70936d82266534883d187ba39f6fa7a448e881803c8c7530ff3afb18”
]
4.消息
字段 | 类型 | 关联 ID | 描述 |
code | String | 合约名 | |
type | String | 操作(action)名 | |
authorization | Nested_Document | 授权帐户和权限 | |
data | Nested document | 用于消息的任何格式的嵌套文档 | |
hex_data | String | 数据的十六进制表示 |
示例
“messages”: [{
“code”: “eos”,
“type”: “transfer”,
“authorization”: [{
“account”: “benchmark…i”,
“permission”: “active”
}
],
“data”: {
“from”: “benchmark…i”,
“to”: “benchmark…3”,
“amount”: 1,
“memo”: “2017-12-04T07:31:19 1512372679244267”
},
“hex_data”: “0e0080d7c886a63a030080d7c886a63a010000000000000024323031372d31322d30345430373a33313a31392031353132333732363739323434323637”
}
]
已授权的嵌套文档
字段 | 类型 | 关联 ID | 描述 |
account | String | FK | 授权帐户名称 |
permission | Permission | 用于授权交易的权限 |
示例
“authorization”: [{
“account”: “benchmark…i”,
“permission”: “active”
}
]
5.帐户(集合)
字段 | 类型 | 关联 ID | 描述 |
name | String | PK | 账户名 |
eos_balance | String | 余额 | |
staked_balance | String | Staked balance
|
|
unstaking_balance | String | Unstaking balance
|
|
last_unstaking_time | Date (timestamp)) | 上次修改日期/时间 | |
permissions | [Nested document,…] | 嵌套的权限结构 |
示例
{
“account_name”: “inita”,
“eos_balance”: “999977.9995 EOS”,
“staked_balance”: “0.0000 EOS”,
“unstaking_balance”: “0.0000 EOS”,
“last_unstaking_time”: “1969-12-31T23:59:59”,
“permissions”: [{
“perm_name”: “active”,
“parent”: “owner”,
“required_auth”: {
“threshold”: 1,
“keys”: [{
“key”: “EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV”,
“weight”: 1
}
],
“accounts”: []
}
},{
“perm_name”: “owner”,
“parent”: “”,
“required_auth”: {
“threshold”: 1,
“keys”: [{
“key”: “EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV”,
“weight”: 1
}
],
“accounts”: []
}
}
]
}