数据模型

数据模型

蚂蚁区块链合约平台 Java SDK 涉及的数据模型主要分为以下 8 类:

账户模型

账户模型是 Mychain 中的重要概念,帐户地址、余额、账户权重等信息都存储在账户模型中。

  • Account
参数 类型 说明
identity Identity 账户的业务id
balance long 余额
authMap AuthMap 账户或者合约的公钥和权重值
recoverKey PublicKey 恢复公钥,用于帐户私钥丢失的情况
recoverTimestamp long 上次成功恢复的时间
status ObjectStatus 状态, 0:NORMAL;1:FREEZE;2:RECOVERING
encryptionKey String 加密公钥,用来加密智能合约中的交易金额

合约模型

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

  • Contract
参数 类型 说明
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。

  • TransactionDO
参数 类型 说明
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 目前用于智能合约中的证明数据

收据模型

只有查到一个交易的收据才能证明出块成功,交易被确认。

  • TransactionReceipt
参数 类型 说明
result long 交易结果
gasUsed BigInteger 交易执行的消耗费用
logs List 交易执行的日志集合
output byte[] 合约的输出

日志模型

LogEntry 区块链输出日志的数据存储结构。

  • LogEntry
参数 类型 说明
from String 交易的发送者
to String 交易的接受者
topics List 订阅的主题
logData byte[] 交易产生的日志

区块模型

区块链由一个个区块组成,区块由区块头和区块体构成。

  • Block
参数 类型 说明
blockHeader BlockHeader 区块头
blockBody blockBody 区块体
  • BlockHeader
参数 类型 说明
hash String 区块头的哈希
version long 版本
number BigInteger 区块号
parentHash String 上一区块哈希
transactionRoot String 区块体中的交易构成的默克尔哈希根
receiptRoot String 区块体中的收据构成的默克尔哈希根
stateRoot String 世界状态的默克尔哈希根
gasUsed BigInteger 交易执行的总消耗量
timestamp long 时间戳
logBloom String 日志布隆过滤器
  • BlockBody
参数 类型 说明
transactionList List 交易列表
receiptList List 收据列表
consensusProof byte[] 共识证明

环境相关模型

  • MychainEnv
参数 类型 说明
identity String sdk实例名称
clientType ClientTypeEnum 网络链接类型
hashType HashTypeEnum 哈希算法类型
signType SignTypeEnum 签名算法类型
codecType CodecTypeEnum 数据编码类型
socketAddress SocketAddress 主连接节点
sslOption ISslOption tls链接配置
backups List 备份节点,非必填
  • SslBytesOption
参数 类型 说明
keyBytes byte[] 客户端 key byte数组
certBytes byte[] 客户端证书数组
keyPassword String 客户端密钥密码
trustStoreBytes byte[] CA 证书字节数组
trustStorePassword String CA 证书密码
userPrivateKey PrivateKey 对交易进行签名的key,必填。

接口通用扩展参数

  • MychainParams
参数 类型 说明
privateKeyList List 非必填。交易执行需要使用的私钥列表
gas BigInteger 必填。交易设置的 gas 。
localBlockNumber BigInteger 非必填。本地交易时,指定的需要执行的区块号。
type EnvelopeType.DEFAULT 非必填。数据隔离需要使用的字段,默认为 Default 。
envelopePublicKey String 非必填。数据隔离加密需要使用的 public key 。
groupId Fixed20ByteArray 非必填。数据隔离需要执行的 group id 。
extensions List 非必填。隐私保护需要指定的扩展参数
  • BaseApiRequest
参数 类型 说明
mychainParams MychainParams 非必填。sdk 通用扩展数据结构
timestamp long 非必填。交易时间戳
period long 非必填。单位是毫秒,事务开始或结束的时间
nonce Fixed64BitUnsignedInteger 非必填。防止重放攻击