数据模型

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

账户模型

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

  • Account

参数

类型

说明

id

Identity

账户的业务 ID

balance

long

余额

authMap

AuthMap

账户或者合约的公钥和权重值

recoverKey

PublicKey

恢复公钥,用于账户私钥丢失的情况

recoverTimestamp

long

上次成功恢复的时间

status

ObjectStatus

状态,0:Normal(正常);1:Freeze(冻结);2:Recovering(恢复中)

encryptionKey

String

加密公钥,用来加密智能合约中的交易金额

AuthMap,具体参数如下表所示。

参数

类型

说明

authMap

Map<PublicKey, Integer>

公钥及其权重信息

PublicKey,具体参数如下表所示。

参数

类型

说明

data

byte[]

公钥内容

合约模型

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

  • Contract

参数

类型

说明

id

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[]

合约代码

交易模型

Transaction 包含一次交易所需要的完整的信息,但不同请求类型所需的参数可能会不一样。使用 SDK 不需要构造 Transaction,只需要使用对应的 Service。

  • Transaction

参数

类型

说明

hash

String

交易的哈希,由 signature 字段以外的所有字段构成

type

TransactionType

交易的类型,具体见下表

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

日志接口,默认可不修改