SDK API分为两大类型,一种是对跨链路由RPC接口调用的封装,一种是资源接口。
- RPC封装接口
RemoteCall<StubResponse> supportedStubs();
RemoteCall<AccountResponse> listAccount();
RemoteCall<ResourceResponse> listResources(Boolean ignoreRemote);
RemoteCall<ResourceDetailResponse> detail(String path);
RemoteCall<TransactionResponse> call(String path, String method, String... args);
RemoteCall<TransactionResponse> sendTransaction(String path, String method, String... args);
RemoteCall<TransactionResponse> invoke(String path, String method, String... args);
RemoteCall<TransactionResponse> callXA(
String transactionID, String path, String method, String... args);
RemoteCall<TransactionResponse> sendXATransaction(
String transactionID, String path, String method, String... args);
RemoteCall<XAResponse> startXATransaction(String transactionID, String[] paths);
RemoteCall<XAResponse> commitXATransaction(String transactionID, String[] paths);
RemoteCall<XAResponse> rollbackXATransaction(String transactionID, String[] paths);
RemoteCall<XATransactionResponse> getXATransaction(String transactionID, String[] paths);
RemoteCall<CommandResponse> customCommand(String command, String path, Object... args);
RemoteCall<XATransactionListResponse> listXATransactions(int size);
RemoteCall<UAResponse> register(String name, String password) throws WeCrossSDKException;
RemoteCall<UAResponse> login(String name, String password);
RemoteCall<UAResponse> logout();
RemoteCall<UAResponse> addChainAccount(String type, ChainAccount chainAccount);
RemoteCall<UAResponse> setDefaultAccount(String type, ChainAccount chainAccount);
RemoteCall<UAResponse> setDefaultAccount(String type, Integer keyID);
String getCurrentTransactionID();
- 资源接口
Resource ResourceFactory.build(WeCrossRPC weCrossRPC, String path, String account)
boolean isActive();
ResourceDetail detail();
String[] call(String method);
String[] call(String method, String... args);
String[] sendTransaction(String method);
String[] sendTransaction(String method, String... args);
显示router当前支持的插件列表。
- 无
StubResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Stubs
- 支持的插件列表
// 初始化RPC实例
WeCrossRPCService weCrossRPCService = new WeCrossRPCService();
WeCrossRPC weCrossRPC = WeCrossRPCFactory.build(weCrossRPCService);
// 调用RPC接口,目前只支持同步调用
StubResponse response = weCrossRPC.supportedStubs().send();
注 - 之后的java示例,会省去初始化WeCrossRPC的步骤。
查看当前全局账号的详细信息。
- 无
AccountResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:UniversalAccount
- 账号详细信息
AccountResponse response = weCrossRPC.listAccounts().send();
显示router配置的跨链资源。
ignoreRemote
:Boolean
- 是否忽略远程资源
ResourceResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Resources
- 配置的资源列表
ResourceResponse response = weCrossRPC.listResources(true).send();
获取资源详情。
path
:String
- 跨链资源标识
ResourceDetailResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:ResourceDetail
- 资源详情
ResourceDetailResponse response = weCrossRPC.detail("payment.bcos.HelloWeCross").send();
调用智能合约,不更改链状态,不发交易。
path
:String
- 跨链资源标识method
:String
- 调用的方法
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.call(
"payment.bcos.HelloWeCross","get")
.send();
调用智能合约,不更改链状态,不发交易。
path
:String
- 跨链资源标识method
:String
- 调用的方法args
:String...
- 可变参数列表
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.call(
"payment.bcos.HelloWeCross","get","key")
.send();
调用智能合约,会改变链状态,发交易。
path
:String
- 跨链资源标识method
:String
- 调用的方法
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.sendTransaction(
"payment.bcos.HelloWeCross","set")
.send();
调用智能合约,会改变链状态,发交易;在非事务状态下,与sendTransaction接口一致;在事务状态下,与sendXATransaction接口一致。
path
:String
- 跨链资源标识method
:String
- 调用的方法
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.invoke(
"payment.bcos.HelloWeCross","set")
.send();
调用智能合约,会改变链状态,发交易。在非事务状态下,与sendTransaction接口一致;在事务状态下,与sendXATransaction接口一致。
path
:String
- 跨链资源标识method
:String
- 调用的方法args
:String...
- 可变参数列表
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.invoke(
"payment.bcos.HelloWeCross","set","value")
.send();
获取事务中的状态数据,不发交易
transactionID
:String
- 事务IDpath
:String
- 跨链资源标识method
:String
- 调用的方法args
:String...
- 可变参数列表
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.callXA(
"payment.bcos.evidence","queryEvidence","key1")
.send();
执行事务,发交易
transactionID
:String
- 事务IDpath
:String
- 跨链资源标识method
:String
- 调用的方法args
:String...
- 可变参数列表
TransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:Receipt
- 调用结果
TransactionResponse transactionResponse =
weCrossRPC
.sendXATransaction(
"0001","payment.bcos.evidence","newEvidence","key1","evidence1")
.send();
开始事务,锁定事务相关资源,发交易
transactionID
:String
- 事务IDpaths
:String[]
- 参与该事务的链路径列表
XAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:int
- 调用结果
XAResponse xaResponse =
weCrossRPC
.startXATransaction(
"0001", new String[]{"payment.bcos", "payment.fabric"})
.send();
提交事务,释放事务相关资源,发交易
transactionID
:String
- 事务IDpaths
:String[]
- 参与该事务的链路径列表
XAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:int
- 调用结果
XAResponse xaResponse =
weCrossRPC
.commitXATransaction(
"0001", new String[]{"payment.bcos", "payment.fabric"})
.send();
回滚事务,释放事务相关资源,发交易
transactionID
:String
- 事务IDpaths
:String[]
- 参与该事务的链路径列表
XAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:int
- 调用结果
XAResponse xaResponse =
weCrossRPC
.rollbackXATransaction(
"0001", new String[]{"payment.bcos", "payment.fabric"})
.send();
获取事务详情,不发交易
transactionID
:String
- 事务IDpaths
:String[]
- 参与该事务的链路径列表
XATransactionResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:String
- 事务信息
XATransactionResponse xaTransactionResponse =
weCrossRPC
.getXATransaction(
"0001", new String[]{"payment.bcos", "payment.fabric"})
.send();
获取事务列表,不发交易
size
:int
- 获取事务个数
XATransactionListResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:String[]
- 事务信息列表
XATransactionListResponse xaTransactionListResponse =
weCrossRPC
.getTransactionIDs(
"payment.bcos.evidence", "bcos_user1", 0)
.send();
获取当前SDK正处的事务ID,不发交易
- 无
String
- 当前SDK正处的事务ID
String transactionID = weCrossRPC.getCurrentTransactionID();
自定义命令
command
:String
- 命令名称path
:String
- 跨链资源标识args
:Object...
- 可变参数
CommandResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:String
- 调用结果
CommandResponse commandResponse =
weCrossRPC
.customCommand(
"deploy", "payment.bcos.evidence", "Evidence")
.send();
注册一个UniversalAccount账号
name
:String
- 账号名password
:String
- 账号密码
UAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:UAReceipt
- 注册账号信息
UAResponse uaResponse =
weCrossRPC
.register(
"org1-admin", "123456").send();
登录一个UniversalAccount账号
name
:String
- 账号名password
:String
- 账号密码
UAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:UAReceipt
- 登录账号信息
UAResponse uaResponse =
weCrossRPC
.login(
"org1-admin", "123456").send();
添加一个链账号。
type
:String
- 链类型chainAccount
:ChainAccount
- 链账号
UAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:UAReceipt
- 添加结果
UAResponse uaResponse =
weCrossRPC
.addChainAccount(
"BCOS2.0", chainAccount).send();
添加一个链账号。
type
:String
- 链类型keyID
:Integer
- 链的KeyID
UAResponse
- 响应包version
:String
- 版本号errorCode
:int
- 状态码message
:String
- 错误消息data
:UAReceipt
- 设置结果
UAResponse uaResponse =
weCrossRPC
.setDefaultAccount(
"BCOS2.0", 1).send();
初始化一个跨链资源
weCrossRPC
:WeCrossRPC
- RPC实例path
:String
- 跨链资源标识
Resource
- 跨链资源实例
// 初始化RPC实例
WeCrossRPCService weCrossRPCService = new WeCrossRPCService();
WeCrossRPC weCrossRPC = WeCrossRPCFactory.build(weCrossRPCService);
// 初始化资源实例
Resource resource = ResourceFactory.build(weCrossRPC, path);
注 - 之后的java示例,会省去初始化Resource的步骤。
获取资源状态,true
:可达,false
:不可达。
- 无
bool
- 资源状态
bool status = resource.isActive();
获取资源详情。
- 无
ResourceDetail
- 资源详情
ResourceDetail detail = resource.detail();
调用智能合约,不更改链状态,不发交易。
method
:String
- 调用的方法
String[]
- 调用结果
String[] result = resource.call("get");
调用智能合约,不更改链状态,不发交易。
method
:String
- 调用的方法args
:String...
- 可变参数列表
String[]
- 调用结果
String[] result = resource.call("get", "key");
调用智能合约,会改变链状态,发交易。
method
:String
- 调用的方法
String[]
- 调用结果
String[] result = resource.sendTransaction("set");
调用智能合约,会改变链状态,发交易。
method
:String
- 调用的方法args
:String...
- 可变参数列表
String[]
- 调用结果
String[] result = resource.sendTransaction("set", "value");