3. 指令介绍(API)¶
3.1. 节点rpc接口¶
详细见: core/pb/xchain.proto
API |
功能 |
---|---|
rpc QueryTx(TxStatus) returns (TxStatus) |
查询一个交易 |
rpc GetBalance(AddressStatus) returns (AddressStatus) |
查询可用余额 |
rpc GetFrozenBalance(AddressStatus) returns (AddressStatus) |
查询被冻结的余额 |
rpc GetBalanceDetail(AddressBalanceStatus) returns (AddressBalanceStatus) |
查询余额状态细节 |
rpc GetBlock(BlockID) returns (Block) |
从当前账本获取特定id的区块 |
rpc GetBlockByHeight(BlockHeight) returns (Block) |
从当前账本获取特定高度的区块 |
rpc GetBlockChains(CommonIn) returns (BlockChains) |
获取系统中所有的链名 |
rpc GetBlockChainStatus(BCStatus) returns (BCStatus) |
获取指定账本的最新区块数据 |
rpc GetSystemStatus(CommonIn) returns (SystemsStatusReply) |
获取系统状态 |
rpc GetNetUrl(CommonIn) returns (RawUrl) |
获取区块链网络中某节点的neturl |
rpc GetAccountByAK(AK2AccountRequest) returns (AK2AccountResponse) |
查询包含指定地址的所有合约账号 |
rpc SelectUTXO(UtxoInput) returns (UtxoOutput) |
选择指定地址/合约账号的utxo |
rpc SelectUTXOBySize(UtxoInput) returns (UtxoOutput) |
按个数选择地址/合约账号的utxo |
rpc PreExec(InvokeRPCRequest) returns (InvokeRPCResponse) |
预执行智能合约 |
rpc PreExecWithSelectUTXO(PreExecWithSelectUTXORequest) returns (PreExecWithSelectUTXOResponse) |
预执行智能合约并选择出需要的utxo |
rpc PostTx(TxStatus) returns (CommonReply) |
对一个交易进行验证并转发给附近网络节点 |
rpc QueryACL(AclStatus) returns (AclStatus) |
查询合约账号/合约方法的Acl |
rpc QueryUtxoRecord(UtxoRecordDetail) returns (UtxoRecordDetail) |
查询账号的utxo细节 |
rpc GetAccountContracts(GetAccountContractsRequest) returns (GetAccountContractsResponse) |
获取合约账号下部署的智能合约 |
3.2. 开发者接口¶
C++接口详细可参见: core/contractsdk/cpp/xchain/xchain.h
API |
功能 |
---|---|
map<string, string>& args() |
获取传入合约的参数表 |
string& arg(string& name) |
获取传入合约的指定参数值 |
string& initiator() |
获取发起此合约调用的账号 |
int auth_require_size() |
获取授权此合约调用的账号数 |
string& auth_require(int idx) |
获取授权此合约调用的指定账号 |
bool get_object(string& key, string* value) |
进行一次读操作 |
bool put_object(string& key, string& value) |
进行一次写操作 |
bool delete_object(string& key) |
进行一次删除操作 |
bool query_tx(string &txid, Transaction* tx) |
查询指定id的交易内容 |
bool query_block(string &blockid, Block* block) |
查询指定id的区块内容 |
void ok(string& body) |
构造状态码为成功的返回 |
void error(string& body) |
构造状态码为失败的返回 |
string& transfer_amount() |
获取合约调用操作中的转账数额 |
unique_ptr<Iterator> new_iterator(string& start, string& limit) |
获得遍历合约存储的迭代器 |
call(module, contract, method, args … ) |
调用其他合约 |
Golang接口详细可参见: core/contractsdk/go/code/context.go
API |
功能 |
---|---|
Args() map[string][]byte |
获取传入合约的参数表 |
Initiator() string |
获取发起此合约调用的账号 |
AuthRequire() []string |
获取授权此合约调用的账号 |
PutObject(key []byte, value []byte) error |
进行一次写操作 |
GetObject(key []byte) ([]byte, error) |
进行一次读操作 |
DeleteObject(key []byte) error |
进行一次删除操作 |
NewIterator(start, limit []byte) Iterator |
获得遍历合约存储的迭代器 |
QueryTx(txid string) (*pb.Transaction, error) |
查询指定id的交易内容 |
QueryBlock(blockid string) (*pb.Block, error) |
查询指定id的区块内容 |
Transfer(to string, amount *big.Int) error |
进行转账操作 |
TransferAmount() (*big.Int, error) |
获取合约调用操作中的转账数额 |
Call(module, contract, method string, args … ) (*Response, error) |
调用其他合约 |