蚂蚁区块链合约平台 Java SDK 涉及的数据模型主要分为以下 7 类:
账户模型
账户模型是 Mychain 中的重要概念,账户地址、余额、账户权重等信息都存储在账户模型中。
Account
参数 | 类型 | 说明 |
id | Identity | 账户的业务 ID |
balance | long | 余额 |
authMap |
| 账户或者合约的公钥和权重值 |
recoverKey |
| 恢复公钥,用于账户私钥丢失的情况 |
recoverTimestamp | long | 上次成功恢复的时间 |
status |
| 状态,0:Normal(正常);1:Freeze(冻结);2:Recovering(恢复中) |
encryptionKey | String | 加密公钥,用来加密智能合约中的交易金额 |
AuthMap,具体参数如下表所示。
参数 | 类型 | 说明 |
authMap |
| 公钥及其权重信息 |
PublicKey,具体参数如下表所示。
参数 | 类型 | 说明 |
data | byte[] | 公钥内容 |
合约模型
下面是合约的基本参数及说明:
Contract
参数 | 类型 | 说明 |
id | Identity | 账户的业务 ID |
balance | long | 余额 |
authMap | 账户或者合约的公钥和权重值 | |
recoverKey | 恢复公钥,用于账户私钥丢失的情况 | |
recoverTimestamp | long | 上次成功恢复的时间,单位毫秒 |
status | ObjectStatus | 状态,0:Normal(正常);1:Freeze(冻结);2:Recovering(恢复中) |
encryptionKey | String | 加密公钥,用来加密智能合约中的交易金额 |
storageRoot | Identity | 世界状态的默克尔哈希根 |
codeHash | Identity | 合约代码哈希 |
code | byte[] | 合约代码 |
交易模型
Transaction 包含一次交易所需要的完整的信息,但不同请求类型所需的参数可能会不一样。使用 SDK 不需要构造 Transaction,只需要使用对应的 Service。
Transaction
参数 | 类型 | 说明 |
hash | String | 交易的哈希,由 |
type |
| 交易的类型,具体见下表 |
timestamp | long | 交易的时间戳,单位毫秒 |
nonce | Fixed64BitUnsignedInteger | 防止重放攻击 |
period | long | 单位为毫秒,事务开始或结束的时间,为未来扩展使用 |
from | String | 交易的发送者 |
to | String | 交易的接受者 |
value | Fixed64BitUnsignedInteger | 转账金额 |
gas | Fixed64BitUnsignedInteger | 交易执行的消耗费用 |
data | byte[] | 交易数据的编码 |
signatureList | List<byte[]> | 签名,使用一个或者多个私钥对哈希加签。 |
groupId | Fixed20ByteArray | 交易在一个群组中执行 |
extensions | List | 目前用于智能合约中的证明数据。 |
version | short | 版本 |
TransactionType,枚举值,具体参数见下表。
参数 | 类型 | 说明 |
TX_CREATE_ACCOUNT(0) | enum | 创建账户交易类型 |
TX_TRANSFER_BALANCE(1) | enum | 转账余额交易类型 |
TX_ISSUE_ASSETS(2) | enum | 发行资产 |
TX_REDEEM_ASSETS(3) | enum | 赎回发行资产 |
TX_DEPLOY_CONTRACT(10) | enum | 部署合约交易类型 |
TX_CALL_CONTRACT(11) | enum | 调用合约交易类型 |
TX_UPDATE_CONTRACT(12) | enum | 更新合约交易类型 |
TX_SET_CONTRACT_ACL(13) | enum | 设置合约ACL |
TX_GET_CONTRACT_ACL(14) | enum | 获取合约ACL |
TX_SET_RECOVER_KEY(20) | enum | 设置恢复密钥事务类型 |
TX_PRE_RESET_PUB_KEY(21) | enum | 预重置公钥交易类型 |
TX_RESET_PUB_KEY(22) | enum | 重置公钥交易类型 |
TX_UPDATE_AUTH_MAP(23) | enum | 更新身份验证映射事务类型 |
TX_UPDATE_ENCRYPTION_KEY(24) | enum | 更新加密密钥 |
TX_FREEZE_ACCOUNT_CONTRACT(25) | enum | 冻结账户或合同 |
TX_UNFREEZE_ACCOUNT_CONTRACT(26) | enum | 解冻账户或合约 |
TX_ACTIVATE_NODE(30) | enum | 激活节点 |
TX_DEPOSIT_DATA(40) | enum | 存证数据交易类型 |
TX_RELATED_DEPOSIT_DATA(41) | enum | 相关存证数据 |
TX_CONFIDENTIAL_DEPOSIT_DATA(42) | enum | 机密存证数据 |
TX_UNKNOWN(255) | enum | 位置类型 |
TX_ENCRYPTION_ENVELOP(256) | enum | 加密信封交易类型 |
TX_DEPOSIT_ENVELOP(257) | enum | 存证信封交易类型 |
TX_CREATE_GROUP(258) | enum | 创建组 |
TX_JOIN_GROUP(259) | enum | 加入组 |
TX_CONFIDENTIAL(500) | enum | TEE隐私交易类型 |
收据模型
只有查到一个交易的收据(Receipt)才能证明出块成功,交易被确认。
TransactionReceipt
参数 | 类型 | 说明 |
result | long | 交易结果 |
gasUsed | BigInteger | 交易执行的消耗费用 |
logs | List | 交易执行的日志集合 |
output | byte[] | 合约的输出 |
日志模型
LogEntry 区块链输出日志的数据存储结构。
LogEntry
参数 | 类型 | 说明 |
from | String | 交易的发送者 |
to | String | 交易的接受者 |
topics | List | 订阅的主题,topic 字段是通过 16 进制编码 |
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[] | 共识证明 |
环境相关模型
ClientEnv
参数 | 类型 | 说明 |
signerOption | SignerOption | 签名配置选项 |
sslOption | ISslOption | TLS 接口,实现类分别为 SslBytesOption、SslOption |
networkOption | NetworkOption | 网络配置选项 |
requestOption | RequestOption | 消息请求配置选项 |
logger | ILogger | 日志接口 |
needPrivacy | Boolean | 是否启动隐私保护 |
loadZkLib | Boolean | SDK启动时是否加载zklib配置,false表示不加载,true表示加载 |
SignerOption
参数 | 类型 | 说明 |
signers | List | 签名接口 |
SslOption
参数 | 类型 | 说明 |
keyFilePath | String | 客户端的私钥 |
certFilePath | String | 客户端的证书 |
keyPassword | String | 客户端的私钥密码 |
trustStoreFilePath | String | CA 机构的根证书路径 |
trustStorePassword | String | CA 机构的根证书的密码 |
SslBytesOption
参数 | 类型 | 说明 |
keyBytes | byte[] | 客户端的私钥 |
certBytes | byte[] | 客户端的证书 |
keyPassword | String | 客户端的私钥密码 |
trustStoreBytes | byte[] | CA 机构的根证书 |
trustStorePassword | String | CA 机构的根证书的密码 |
NetworkOption
参数 | 类型 | 说明 |
socketAddressList | List | 节点的 IP 和端口信息 |
codecType | CodecType | 编解码方式,0:RLP;1:JSON |
networkType | NetworkType | 网络连接方式,2:HTTPS,3:TLS |
enableCompress | Boolean | 是否压缩消息 |
compressSizeLimit | Integer | 压缩消息最大值,暂未使用 |
maxMessageSize | Integer | HTTPS 接收消息最大值,TLS 通道发送和接收缓存最大值 |
connectTimeoutMs | Integer | 连接超时时间,单位毫秒 |
heartbeatIntervalMs | Integer | 心跳间隔时间,单位毫秒 |
retryHeartbeatTimes | Integer | 心跳重试次数 |
retryConnectTimes | Integer | 连接单个节点重连次数 |
coreThreadPoolSize | Integer | Netty 处理网络事件线程数量,消息解码器的线程数量 |
threadPoolQueueSize | Integer | 网络层发送消息的任务队列大小,Netty 处理网络事件的任务队列大小 |
connectionRetryDelayMs | Integer | 连接重试间隔时间,默认等于0 |
maxConnectionRetryDelayFactor | Integer | 连接重试最大间隔频率 连接重试时间间隔规律为:connectionRetryDelayMs * 0,connectionRetryDelayMs * 1,...,connectionRetryDelayMs * maxConnectionRetryDelayFactor |
RequestOption
参数 | 类型 | 说明 |
queryReceiptTimeoutMs | Integer | 查询收据的超时时间,单位毫秒 |
sendRequestTimeoutMs | Integer | 发送消息的超时时间,单位毫秒 |
queryReceiptIntervalMs | Integer | 查询收据的间隔时间,单位毫秒 |
enableQueryTxReceipt | Boolean | 是否自动查询交易回执,默认 true |
ILogger
参数 | 类型 | 说明 |
logger | ILogger | 日志接口,默认可不修改 |