快速入门
前置条件
在开始本教程前,请确保已经准备好了以下资源
JDK 1.8:Java应用需要依赖oracle jdk1.8,且jdk版本不低于1.8.0u201
Maven3.3.9:项目编译需要依赖 Maven,且版本不低于 3.3.9
bcprov-jdk:在使用sdk时,需要在java运行环境中(具体为$JAVA_HOME(jdk所在目录)/jre/lib/ext目录下)添加 bcprov-jdk15on-1.66.jar 包
IDE:进入IntelliJ IDE官网,下载并安装社区版IntelliJ IDE
天玄测试链:请参考 快速搭建天玄网络 搭建,并获取到相应的 rpc 或者 http 链接
智能合约应用:请准备好需要部署的应用合约(本教程涉及的物料包中也提供了两个简单的智能合约示例)
编译智能合约
注意:目前天玄链支持 solidity 编译及运行最高版本为 0.4.25 ,且必须使用附件提供的solc编译工具编译合约
获取相关物料包
需要从 GitHub 上拉取thanos-web3j代码,由于thanos-web3j编译依赖于thanos-common.jar,所以还需要拉取thanos-common代码。
git clone https://github.com/TianXuan-Chain/tianxuan-common.git
git clone https://github.com/TianXuan-Chain/tianxuan-web3j.git编译
按照依赖顺序,在编译thanos-common前,还需将其依赖的bctls-gm-jdk15on.jar加载到本地 Maven 仓库当中。
而后,编译thanos-common
编译后,thanos-common.jar应已被加载到了本地 Maven 仓库当中。可以开始编译thanos-web3j了。
请先检查thanos-web3j内部文件是否具备可执行权限,如果不具备,可以使用以下指令
而后运行编译脚本
编译成功后会在当前目录下产生一个 dist 文件夹,该文件夹结构如下:
如果 compile.sh 脚本执行失败,可能是服务器存在网络连接问题,无法拉取到需要的安装包。可以手动安装 gradle 后进行编译。gradle 安装流程如下:
修改配置,将下面内容写入到gradle.sh中。
而后执行脚本
注意:如果第一步拉取 gradle 安装包失败,表明服务器网络连接 gradle 官网存在限制,请到 https://services.gradle.org/distributions/gradle-5.6.2-all.zip 网站下载后上传到服务器。
gradle 安装完成后,如果是国内服务器,可以看需求是否修改为国内的镜像源。在 {USER_HOME}/.gradle/ 目录下创建init.gradle文件,并添加下面内容:
安装配置完后,进入thanos-web3j目录,执行以下指令:
获取 sdk 物料包
从 github 仓库拉取 thanos-web3j代码
配置 java 运行环境
在使用 web3j sdk 时,需要在 java 运行环境中(具体为$JAVA_HOME/jre/lib/ext目录下)添加 bcprov-jdk15on-1.66.jar 包。该文件可以在此处获取:https://github.com/TianXuan-Chain/thanos-package-generate/blob/main/dependencies/jar/bcprov-jdk15on-1.66.jar
安装 solc
将dist/solc目录下的可执行文件solc复制到/user/local/bin/目录下。
查看 solc 版本,确认是否安装成功。
有版本信息输出,表示安装成功。
编译合约
将需要编译的 solidity 合约代码放置到dist/contracts目录内,当前目录下有两个示例合约HelloWorld.sol和TokensDemo.sol。而后运行dist/bin/compile.sh脚本。
执行成功后,会在dist文件夹内产生一个output文件夹,合约编译后对应的abi,bin以及java文件(在com文件夹内)都存放在其中。java文件是基于abi与bin文件生成的,其中abi与以太坊的一致,abi相关知识可以在此处了解:https://docs.soliditylang.org/en/latest/abi-spec.html#
部署并使用应用
前置准备
如果上述流程和编写应用的不是一台机器,需要重新构建 Maven 本地依赖链。请参考应用部署示例当前机器重新构建 Maven 本地依赖。
引入 SDK
使用 gradle 引入 sdk
使用maven 引入 sdk
初始化 SDK 配置
1)通过 new 方法初始化 SystemConfig
该方法使用了SystemConfig的new方法来初始化系统配置。方法入参说明如下:
如果只需要建立HTTP连接。
具体用法可参考thanos-web3j中的test.add.AddHttpTest示例文件。
如果只需要建立RPC连接。
2)通过配置文件初始化Web3Manager
使用sdk前,需要先生成两个配置文件:
主配置文件thanos-web3j.conf
日志配置文件logback.xml
配置文件说明文档详见:thanos-web3j配置说明。
完整的应用及配置文件的目录相对关系如下:
首先,配置thanos-web3j.conf文件,示例如下:
根据实际情况,修改如下配置:
日志配置文件所在路径
logConfigPath(要求是绝对路径)如果应用需要使用链的
http接口服务(包括合约部署和调用),需要修改配置项http.ip.list,对应网关所在机器ip和应用的http端口如果应用需要使用链的rpc接口服务(除合约部署和调用外,还有权限管理),需要修改配置项
rpc.ip.list,对应网关所在机器ip和应用的rpc端口。并修改tls配置项,配置 sdk 密钥文件和链证书文件路径
在业务系统中加载配置并完成 Web3Manager 的初始化。
初始化链连接器
加载日志路径,并使用 SystemConfig 初始化 Web3manager
SDK 调用
由于thanos-web3j提供了两种链连接方式(rpc和http),下面分别介绍每种连接方式的调用逻辑。
1)HTTP接口调用
初始化 web3j 对象,连接网关节点的 http 接口
部署合约并发起交易,样例给出部署及调用 SimpleToken 合约的用例:
由于http版本的web3j对象采用长连接的方式。因此,在web3j使用完成后,需要手动释放连接资源。
2)RPC接口调用
初始化 web3j 对象,连接网关节点的 rpc 通道。
生成全局事件并发送上链,样例给出添加委员时的用例:
Last updated