数据模型
蚂蚁区块链合约平台 Java SDK 涉及的数据模型主要分为以下 8 类:
账户模型
账户模型是 Mychain 中的重要概念,帐户地址、余额、账户权重等信息都存储在账户模型中。
| 参数 |
类型 |
说明 |
| identity |
Identity |
账户的业务id |
| balance |
long |
余额 |
| authMap |
AuthMap |
账户或者合约的公钥和权重值 |
| recoverKey |
PublicKey |
恢复公钥,用于帐户私钥丢失的情况 |
| recoverTimestamp |
long |
上次成功恢复的时间 |
| status |
ObjectStatus |
状态, 0:NORMAL;1:FREEZE;2:RECOVERING |
| encryptionKey |
String |
加密公钥,用来加密智能合约中的交易金额 |
合约模型
下面是合约的基本参数及说明
| 参数 |
类型 |
说明 |
| identity |
Identity |
账户的业务id |
| balance |
long |
余额 |
| authMap |
AuthMap |
账户或者合约的公钥和权重值 |
| recoverKey |
PublicKey |
恢复公钥,用于帐户私钥丢失的情况 |
| recoverTimestamp |
long |
上次成功恢复的时间 |
| status |
ObjectStatus |
状态, 0:NORMAL;1:FREEZE;2:RECOVERING |
| encryptionKey |
String |
加密公钥,用来加密智能合约中的交易金额 |
| storageRoot |
Identity |
世界状态的默克尔哈希根 |
| codeHash |
Identity |
合约代码哈希 |
| code |
byte[] |
合约代码 |
交易模型
TransactionDO 包含一次交易所需要的完整的信息,但不同请求类型所需的参数可能会不一样。使用 SDK 不需要构造 TransactionDO, 只需要使用对应的 Service。
| 参数 |
类型 |
说明 |
| hash |
String |
交易的哈希,由排除signature字段的所有字段构成 |
| type |
TransactionType |
交易的类型 |
| timestamp |
long |
交易的时间戳 |
| nonce |
Fixed64BitUnsignedInteger |
防止重放攻击 |
| period |
long |
单位是毫秒,事务开始或结束的时间。为未来扩展 |
| from |
String |
交易的发送者 |
| to |
String |
交易的接受者 |
| value |
Fixed64BitUnsignedInteger |
转账金额 |
| gas |
Fixed64BitUnsignedInteger |
交易执行的消耗费用 |
| data |
byte[] |
交易数据的编码 |
| signatureList |
List |
签名,使用一个或者多个私钥对hash加签 |
| groupId |
Fixed20ByteArray |
交易在一个group中执行 |
| extensions |
List |
目前用于智能合约中的证明数据 |
收据模型
只有查到一个交易的收据才能证明出块成功,交易被确认。
| 参数 |
类型 |
说明 |
| result |
long |
交易结果 |
| gasUsed |
BigInteger |
交易执行的消耗费用 |
| logs |
List |
交易执行的日志集合 |
| output |
byte[] |
合约的输出 |
日志模型
LogEntry 区块链输出日志的数据存储结构。
| 参数 |
类型 |
说明 |
| from |
String |
交易的发送者 |
| to |
String |
交易的接受者 |
| topics |
List |
订阅的主题 |
| logData |
byte[] |
交易产生的日志 |
区块模型
区块链由一个个区块组成,区块由区块头和区块体构成。
| 参数 |
类型 |
说明 |
| blockHeader |
BlockHeader |
区块头 |
| blockBody |
blockBody |
区块体 |
| 参数 |
类型 |
说明 |
| hash |
String |
区块头的哈希 |
| version |
long |
版本 |
| number |
BigInteger |
区块号 |
| parentHash |
String |
上一区块哈希 |
| transactionRoot |
String |
区块体中的交易构成的默克尔哈希根 |
| receiptRoot |
String |
区块体中的收据构成的默克尔哈希根 |
| stateRoot |
String |
世界状态的默克尔哈希根 |
| gasUsed |
BigInteger |
交易执行的总消耗量 |
| timestamp |
long |
时间戳 |
| logBloom |
String |
日志布隆过滤器 |
| 参数 |
类型 |
说明 |
| transactionList |
List |
交易列表 |
| receiptList |
List |
收据列表 |
| consensusProof |
byte[] |
共识证明 |
环境相关模型
| 参数 |
类型 |
说明 |
| identity |
String |
sdk实例名称 |
| clientType |
ClientTypeEnum |
网络链接类型 |
| hashType |
HashTypeEnum |
哈希算法类型 |
| signType |
SignTypeEnum |
签名算法类型 |
| codecType |
CodecTypeEnum |
数据编码类型 |
| socketAddress |
SocketAddress |
主连接节点 |
| sslOption |
ISslOption |
tls链接配置 |
| backups |
List |
备份节点,非必填 |
| 参数 |
类型 |
说明 |
| keyBytes |
byte[] |
客户端 key byte数组 |
| certBytes |
byte[] |
客户端证书数组 |
| keyPassword |
String |
客户端密钥密码 |
| trustStoreBytes |
byte[] |
CA 证书字节数组 |
| trustStorePassword |
String |
CA 证书密码 |
| userPrivateKey |
PrivateKey |
对交易进行签名的key,必填。 |
接口通用扩展参数
| 参数 |
类型 |
说明 |
| privateKeyList |
List |
非必填。交易执行需要使用的私钥列表 |
| gas |
BigInteger |
必填。交易设置的 gas 。 |
| localBlockNumber |
BigInteger |
非必填。本地交易时,指定的需要执行的区块号。 |
| type |
EnvelopeType.DEFAULT |
非必填。数据隔离需要使用的字段,默认为 Default 。 |
| envelopePublicKey |
String |
非必填。数据隔离加密需要使用的 public key 。 |
| groupId |
Fixed20ByteArray |
非必填。数据隔离需要执行的 group id 。 |
| extensions |
List |
非必填。隐私保护需要指定的扩展参数 |
| 参数 |
类型 |
说明 |
| mychainParams |
MychainParams |
非必填。sdk 通用扩展数据结构 |
| timestamp |
long |
非必填。交易时间戳 |
| period |
long |
非必填。单位是毫秒,事务开始或结束的时间 |
| nonce |
Fixed64BitUnsignedInteger |
非必填。防止重放攻击 |