com.jd.blockchain.sdk.BlockchainQueryService Maven / Gradle / Ivy
package com.jd.blockchain.sdk;
import com.jd.blockchain.crypto.hash.HashDigest;
import com.jd.blockchain.ledger.*;
/**
* 区块链查询器;
*
* @author huanghaiquan
*
*/
public interface BlockchainQueryService {
/**
* 返回所有的账本的 hash 列表;
*
* 注:账本的 hash 既是该账本的创世区块的 hash;
*
* @return 账本 hash 的集合;
*/
HashDigest[] getLedgerHashs();
/**
* 获取账本信息;
*
* @param ledgerHash
* @return 账本对象;如果不存在,则返回 null;
*/
LedgerInfo getLedger(HashDigest ledgerHash);
/**
* 返回当前账本的参与者信息列表
*
* @param ledgerHash
* @return
*/
ParticipantNode[] getConsensusParticipants(HashDigest ledgerHash);
/**
* 返回指定账本序号的区块;
*
* @param ledgerHash
* 账本hash;
* @param height
* 高度;
* @return
*/
LedgerBlock getBlock(HashDigest ledgerHash, long height);
/**
* 返回指定区块hash的区块;
*
* @param ledgerHash
* 账本hash;
* @param blockHash
* 区块hash;
* @return
*/
LedgerBlock getBlock(HashDigest ledgerHash, HashDigest blockHash);
/**
* 返回指定高度的区块中记录的交易总数;
*
* @param ledgerHash
* @param height
* @return
*/
long getTransactionCount(HashDigest ledgerHash, long height);
/**
* 返回指定高度的区块中记录的交易总数;
*
* @param ledgerHash
* @param blockHash
* @return
*/
long getTransactionCount(HashDigest ledgerHash, HashDigest blockHash);
/**
* 返回当前账本的交易总数
*
* @param ledgerHash
* @return
*/
long getTransactionTotalCount(HashDigest ledgerHash);
/**
* 返回指定高度的区块中记录的数据账户总数
*
* @param ledgerHash
* @param height
* @return
*/
long getDataAccountCount(HashDigest ledgerHash, long height);
/**
* 返回指定的区块中记录的数据账户总数
*
* @param ledgerHash
* @param blockHash
* @return
*/
long getDataAccountCount(HashDigest ledgerHash, HashDigest blockHash);
/**
* 返回当前账本的数据账户总数
*
* @param ledgerHash
* @return
*/
long getDataAccountTotalCount(HashDigest ledgerHash);
/**
* 返回指定高度区块中的用户总数
*
* @param ledgerHash
* @param height
* @return
*/
long getUserCount(HashDigest ledgerHash, long height);
/**
* 返回指定区块中的用户总数
*
* @param ledgerHash
* @param blockHash
* @return
*/
long getUserCount(HashDigest ledgerHash, HashDigest blockHash);
/**
* 返回当前账本的用户总数
*
* @param ledgerHash
* @return
*/
long getUserTotalCount(HashDigest ledgerHash);
/**
* 返回指定高度区块中的合约总数
*
* @param ledgerHash
* @param height
* @return
*/
long getContractCount(HashDigest ledgerHash, long height);
/**
* 返回指定区块中的合约总数
*
* @param ledgerHash
* @param blockHash
* @return
*/
long getContractCount(HashDigest ledgerHash, HashDigest blockHash);
/**
* 返回当前账本的合约总数
*
* @param ledgerHash
* @return
*/
long getContractTotalCount(HashDigest ledgerHash);
/**
* 分页返回指定账本序号的区块中的交易列表;
*
* @param ledgerHash
* 账本hash;
* @param height
* 账本高度;
* @param fromIndex
* 开始的记录数;
* @param count
* 本次返回的记录数;
* 最小为1,最大值受到系统参数的限制;
* 注:通过 {@link #getBlock(String, long)} 方法获得的区块信息中可以得到区块的总交易数
* {@link Block#getTxCount()};
* @return
*/
LedgerTransaction[] getTransactions(HashDigest ledgerHash, long height, int fromIndex, int count);
/**
* 分页返回指定账本序号的区块中的交易列表;
*
* @param ledgerHash
* 账本hash;
* @param blockHash
* 账本高度;
* @param fromIndex
* 开始的记录数;
* @param count
* 本次返回的记录数;
* 如果参数值为 -1,则返回全部的记录;
* 注:通过 {@link #getBlock(String, String)} 方法获得的区块信息中可以得到区块的总交易数
* {@link Block#getTxCount()};
* @return
*/
LedgerTransaction[] getTransactions(HashDigest ledgerHash, HashDigest blockHash, int fromIndex, int count);
/**
* 根据交易内容的哈希获取对应的交易记录;
*
* @param ledgerHash
* 账本hash;
* @param contentHash
* 交易内容的hash,即交易的 {@link Transaction#getContentHash()} 属性的值;
* @return
*/
LedgerTransaction getTransactionByContentHash(HashDigest ledgerHash, HashDigest contentHash);
/**
* 根据交易内容的哈希获取对应的交易状态;
*
* @param ledgerHash
* 账本hash;
* @param contentHash
* 交易内容的hash,即交易的 {@link Transaction#getContentHash()} 属性的值;
* @return
*/
TransactionState getTransactionStateByContentHash(HashDigest ledgerHash, HashDigest contentHash);
/**
* 返回用户信息;
*
* @param ledgerHash
* @param address
* @return
*/
UserInfo getUser(HashDigest ledgerHash, String address);
/**
* 返回数据账户信息;
*
* @param ledgerHash
* @param address
* @return
*/
AccountHeader getDataAccount(HashDigest ledgerHash, String address);
/**
* 返回数据账户中指定的键的最新值;
*
* 返回结果的顺序与指定的键的顺序是一致的;
*
* 如果某个键不存在,则返回版本为 -1 的数据项;
*
* @param ledgerHash
* @param address
* @param keys
* @return
*/
KVDataEntry[] getDataEntries(HashDigest ledgerHash, String address, String... keys);
/**
* 返回指定数据账户中KV数据的总数;
*
* @param ledgerHash
* @param address
* @return
*/
long getDataEntriesTotalCount(HashDigest ledgerHash, String address);
/**
* 返回数据账户中指定序号的最新值;
* 返回结果的顺序与指定的序号的顺序是一致的;
*
* @param ledgerHash
* 账本hash;
* @param address
* 数据账户地址;
* @param fromIndex
* 开始的记录数;
* @param count
* 本次返回的记录数;
* 如果参数值为 -1,则返回全部的记录;
* @return
*/
KVDataEntry[] getDataEntries(HashDigest ledgerHash, String address, int fromIndex, int count);
/**
* 返回合约账户信息;
*
* @param ledgerHash
* @param address
* @return
*/
AccountHeader getContract(HashDigest ledgerHash, String address);
/**
* get users by ledgerHash and its range;
* @param ledgerHash
* @param fromIndex
* @param count
* @return
*/
AccountHeader[] getUsers(HashDigest ledgerHash, int fromIndex, int count);
/**
* get data accounts by ledgerHash and its range;
* @param ledgerHash
* @param fromIndex
* @param count
* @return
*/
AccountHeader[] getDataAccounts(HashDigest ledgerHash, int fromIndex, int count);
/**
* get contract accounts by ledgerHash and its range;
* @param ledgerHash
* @param fromIndex
* @param count
* @return
*/
AccountHeader[] getContractAccounts(HashDigest ledgerHash, int fromIndex, int count);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy