区块链交互基本操作
Version 1.0.0
English / 中文
以下针对使用SDK和区块交互的基本操作,以及相关数据结构定义。
用Java SDK之前,请使用以下方式初始化OntSDK实例。
OntSdk ontSdk = OntSdk.getInstance();
ontSdk.setRpc(rpcUrl);
ontSdk.setRestful(restUrl);
ontSdk.setDefaultConnect(wm.getRestful());
ontSdk.openWalletFile("OntAssetDemo.json");
Note: setRestful表示采用restful接口建立连接,setRpc表示采用rpc接口建立连接,setDefaultConnect表示设置默认的链接方式。
与链交互接口
- 获取当前区块高度
int height = ontSdk.getConnect().getBlockHeight();
- 获取区块
根据高度获取区块
Block block = ontSdk.getConnect().getBlock(9757);
根据区块hash获得区块
Block block = ontSdk.getConnect().getBlock(blockhash);
- 获得block json数据
根据高度获取区块json
Object block = ontSdk.getConnect().getBlockJson(9757);
根据区块hash获得区块json
Object block = ontSdk.getConnect().getBlockJson(blockhash);
- 获得合约代码
根据合约hash获得合约代码
Object contract = ontSdk.getConnect().getContract(contractHash)
根据合约hash获得合约代码json数据
Object contractJson = ontSdk.getConnect().getContractJson(hash)
- 查询余额
根据账户地址查询余额
Object balance = ontSdk.getConnect().getBalance(address)
- 获取区块链节点数
int count = ontSdk.getConnect().getNodeCount();
- 获得区块高度
int blockheight = ontSdk.getConnect().getBlockHeight()
- 获得智能合约事件
根据高度获得智能合约事件
Object event = ontSdk.getConnect().getSmartCodeEvent(height)
根据交易hash获得智能合约事件
Object event = ontSdk.getConnect().getSmartCodeEvent(hash)
- 根据交易hash获得区块高度
int blockheight = ontSdk.getConnect().getBlockHeightByTxHash(txhash)
- 获得智能合约存储的数据
String value = ontSdk.getConnect().getStorage(codehash,key)
- 获得merkle证明
根据交易hash获得merkle证明
Object proof = ontSdk.getConnect().getMerkleProof(String hash)
- 从区块链中获取交易
根据交易hash获得交易对象
Transaction info = ontSdk.getConnect().getTransaction(txhash);
根据交易hash获得交易json数据
Object info = ontSdk.getConnect().getTransactionJson(txhash);
- 从区块链中获取InvokeCodeTransaction
InvokeCodeTransaction t = (InvokeCodeTransaction) ontSdk.getConnect().getTransaction(txhash);
数据结构说明
- Block区块
Field | Type | Description |
---|---|---|
version | int | 版本号 |
prevBlockHash | UInt256 | 前一个区块的散列值 |
transactionsRoot | UInt256 | 该区块中所有交易的Merkle树的根 |
blockRoot | UInt256 | 区块根 |
timestamp | int | 区块时间戳,unix时间戳 |
height | int | 区块高度 |
consensusData | long | 共识数据 |
consensusPayload | byte[] | 共识payload |
nextBookKeeper | UInt160 | 下一个区块的记账合约的散列值 |
sigData | array | 签名 |
bookKeepers | array | 验签者 |
hash | UInt256 | 该区块的hash值 |
transactions | Transaction[] | 该区块的交易列表 |
- Transaction交易
Field | Type | Description |
---|---|---|
version | int | 版本号 |
txType | TransactionType | 交易类型 |
nonce | int | 随机数 |
gasPrice | long | gas价格 |
gasLimit | long | gas上限 |
payer | Address | 支付交易费用账户 |
attributes | Attribute[] | 交易属性列表 |
sigs | Sign[] | 签名数组 |
payload | Payload | payload |
- TransactionType交易类型
Value | Type | Description |
---|---|---|
208 | int | 部署智能合约交易 |
209 | int | 调用智能合约交易 |
0 | int | Bookkeeping |
4 | int | 注册 |
5 | int | 投票 |
- 签名字段
Field | Type | Description |
---|---|---|
pubKeys | array | 公钥数组 |
M | int | M |
sigData | array | 签名值数组 |
- Attribute交易属性
Field | Type | Description |
---|---|---|
usage | AttributeUsage | 用途 |
data | byte[] | 属性值 |
- TransactionAttributeUsage属性用途
Value | Type | Description |
---|---|---|
0 | int | Nonce |
32 | int | Script |
129 | int | DescriptionUrl |
144 | int | Description |