id:BSN_2021 公众号:BSN研习社 作者:中移信息

中移链是基于EOS区块链框架革新,满足BSN凋谢联盟链要求,合乎国内监管政策。BSN凋谢联盟链(BSN Open Permissioned Blockchain, 简称OPB)包含多条基于私有链框架和联盟链框架搭建的专用链,开发者能够抉择适宜利用业务需要的凋谢联盟链部署和运行智能合约和分布式应用,每条凋谢联盟链各有特点和劣势,并均应用相似私有链的燃料机制通过人民币计价,使用方便简洁。在符合国家监管政策的前提下,实现“开箱即用、疾速上链”。

中移链Java-SDK,是一个用于与其底层区块链EOS交互的API工具包,可进步Java、Android等开发者操作中移链、EOS的规范性及便利性。本文是对于如何应用中移链Java-SDK的操作指南,实用于中移链或EOS的开发者实战参考,也能够帮忙其余读者理解中移链及其底层的EOS。

一、 中移链Java-SDK简述

中移链Java-SDK 实质上是一个用于与EOS底层区块链交互的API工具,其提供的次要接口性能可参考EOS自带的插件chain_api_plugin。

中移链Java-SDK的外围库应用了插件式接口程序的体系结构,能够灵便地在多种环境中应用。次要波及到4个Provider接口程序(RPC Provider、Signature Provider、Serialization Provider、ABI Provider)。其中ABI Provider在EOSIO Java-SDK中提供了具体的实现(ABIProviderImpl),其它3个Provider并不在EOSIO Java-SDK中实现,须要独自导入应用(参考下文第二局部的导入相干jar包)。

中移链Java-SDK的外围性能类是TransactionSession和TransactionProcessor,利用这些Provider来筹备和解决EOS交易。

  • RPC Provider(RPC接口程序)

    负责对nodeos的所有RPC调用,以及个别的网络解决(可达性、重试、故障转移逻辑等)。

  • Signature Provider(签名接口程序)

    Signature Provider应用指定可用的密钥来申请和获取交易事务签名。所用于配置的签名,能够是来自平台密钥库中的密钥的签名,也能够是来自终端用户设施上的钱包应用程序的签名。平台能够让用户依照本人的偏好来抉择其中一种形式保存密钥。

  • Serialization Provider(序列化接口程序)

    负责解决ABI驱动的交易事务以及Json和二进制数据表示之间的操作序列化和反序列化。

  • ABI Provider(ABI接口程序)

    负责获取和缓存ABI,以便在序列化和反序列化期间应用。

二、 导入相干jar包

能够应用gradle或Maven等依赖包管理工具来导入相干jar包,次要是EOSIO Java-SDK和3个Provider包(Signature Provider、RPC Provider、Serialization Provider)。

1. Gradle工具导入

implementation 'one.block:eosiojava:1.0.0'implementation 'one.block:eosiojavasoftkeysignatureprovider:1.0.0'implementation 'one.block:eosio-java-abieos-serialization-provider:1.0.0'implementation 'one.block:eosio-java-rpc-provider:1.0.0'

2. Maven工具导入

<dependency>  <groupId>one.block</groupId>  <artifactId>eosiojava</artifactId>  <version>1.0.0</version></dependency><dependency>  <groupId>one.block</groupId>  <artifactId>eosiojavasoftkeysignatureprovider</artifactId>  <version>1.0.0</version></dependency><dependency>  <groupId>one.block</groupId>  <artifactId>eosio-java-abieos-serialization-provider</artifactId>  <version>1.0.0</version></dependency><dependency>  <groupId>one.block</groupId>  <artifactId>eosio-java-rpc-provider</artifactId>  <version>1.0.0</version></dependency> 

三、 配置相干初始化参数

次要初始化参数包含:

  • 配置RPC Provider所连贯的链URL地址;
  • 配置Signature Provider的私钥。
IRPCProvider rpcProvider = new EosioJavaRpcProviderImpl("https://baseurl.com/v1/");SoftKeySignatureProviderImpl signatureProvider = new SoftKeySignatureProviderImpl();signatureProvider.importKey("xxxxx");  

四、 实现API调用

1. EOS链根本信息查问

EOS链根本信息查问能够通过实例化RPC Provider(RPC接口程序)来实现,只需配置RPC Provider所连贯的链URL地址即可。

RPC Provider的罕用API办法有:

getInfo();                // 调用返回区块链总体信息getBlockInfo();            // 调用返回指定区块的具体数据getRawAbi();            // 调用返回指定账号所托管合约的abi形容信息getRequiredKeys();        // 调用返回签名一个交易时须要的公钥清单

示例程序:

// getInfo()IRPCProvider rpcProvider = new EosioJavaRpcProviderImpl("https://baseurl.com/v1/"); GetInfoResponse getInfoResponse = rpcProvider.getInfo();System.out.println(getInfoResponse.getHeadBlockNum());  // getBlockInfo()  BigInteger blockNum = BigInteger.valueOf(543210);GetBlockInfoRequest getBlockInfoRequest = new GetBlockInfoRequest(blockNum);GetBlockInfoResponse getBlockInfoResponse = rpcProvider.getBlockInfo(getBlockInfoRequest);System.out.println(getBlockInfoResponse.getTransactionMroot());

2. EOS交易解决

EOS交易事务通过实例化的TransactionSession来执行,TransactionSession由配置4个Provider实例来结构而成。

交易事务处理的一些参数能够通过应用TransactionConfig进行更改。这些参数是UselastReversible、blocksBehind和expiresSeconds。其默认值别离为UselastReversible等于true,blocksBehind等于3,expiresSeconds等于300。当UselastReversible为true时,将疏忽blocksBehind,TransactionProcessor应用最初一个不可逆块和expiresSeconds来计算TAPO。否则,TransactionProcessor应用以后头块减去在blocksBehind和expiresSeconds中为TAPO指定的数字。TransactionConfig默认为UselastReversible,目标为缩小在特定条件下进行交易事务微分叉的机会。

示例程序:

// 4个Provider的实例化及初始化 IRPCProvider rpcProvider = new EosioJavaRpcProviderImpl("https://baseurl.com/v1/");ISerializationProvider serializationProvider = new AbiEosSerializationProviderImpl();IABIProvider abiProvider = new ABIProviderImpl(rpcProvider, serializationProvider);SoftKeySignatureProviderImpl signatureProvider = new SoftKeySignatureProviderImpl();signatureProvider.importKey("xxxxx");// 4个Provider实例结构成TransactionSessionTransactionSession session = new TransactionSession(        serializationProvider,        rpcProvider,        abiProvider,        signatureProvider);TransactionProcessor processor = session.getTransactionProcessor();TransactionConfig transactionConfig = processor.getTransactionConfig();// 按需批改transactionConfig配置transactionConfig.setUseLastIrreversible(false);transactionConfig.setExpiresSeconds(600);// 使transactionConfig失效processor.setTransactionConfig(transactionConfig);// 组装交易参数String jsonData = "{\n" +        "\"from\": \"person1\",\n" +        "\"to\": \"person2\",\n" +        "\"quantity\": \"1.0000 EOS\",\n" +        "\"memo\" : \"交易备注\"\n" +        "}";List<Authorization> authorizations = new ArrayList<>();authorizations.add(new Authorization("myaccount", "active"));List<Action> actions = new ArrayList<>();actions.add(new Action("eosio.token", "transfer", authorizations, jsonData));processor.prepare(actions);// 交易提交及播送SendTransactionResponse sendTransactionResponse = processor.signAndBroadcast();// 从EOSIO 2.1开始,交易操作能够具备与之关联的返回值ArrayList<Object> actionReturnValues = sendTransactionResponse.getActionValues();System.out.println(actionReturnValues);

五、 参考链接

BSN凋谢联盟链
官网EOSIO Java-SDK
官网EOSIO的RPC Provider(RPC接口程序)
官网EOSIO的Signature Provider(签名接口程序)
官网EOSIO的Serialization Provider(序列化接口程序)
官网EOSIO的Android示例程序

本文由mdnice多平台公布