数据模型
蚂蚁区块链合约平台 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 |
非必填。防止重放攻击 |