第三章 通过java SDK 实现个性化智能合约的部署与测试
2020-12-13 03:03
标签:fga atd dag gtk key cin spi mku enc 想了解相关区块链开发,技术提问,请加QQ群:538327407 https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/sdk_application.html#id2 将官方的Asset.sol 代码copy,使用vim Asset.sol 命令创建,copy 到里面。 上一小节,我们根据业务需求设计了合约Asset.sol的存储与接口,给出了完整实现,但是Java程序无法直接调用Solidity合约,需要先将Solidity合约文件编译为Java文件。 控制台提供了编译工具,可以将Asset.sol合约文件存放在console/contracts/solidity目录。利用console目录下提供的sol2java.sh脚本进行编译,操作如下: # 切换到fisco/console/目录 $ cd ~/fisco/console/ # 编译合约,后面指定一个Java的包名参数,可以根据实际项目路径指定包名 $ ./sol2java.sh org.fisco.bcos.asset.contract 用官方的asset_app,自己生成的在sdk 那边用有问题 运行成功之后,将会在console/contracts/sdk目录生成java、abi和bin目录,如下所示。 |-- abi # 生成的abi目录,存放solidity合约编译生成的abi文件 | |-- Asset.abi | |-- Table.abi |-- bin # 生成的bin目录,存放solidity合约编译生成的bin文件 | |-- Asset.bin | |-- Table.bin |-- contracts # 存放solidity合约源码文件,将需要编译的合约拷贝到该目录下 | |-- Asset.sol # 拷贝进来的Asset.sol合约,依赖Table.sol | |-- Table.sol # 默认提供的系统CRUD合约接口文件 |-- java # 存放编译的包路径及Java合约文件 | |-- org | |--fisco | |--bcos | |--asset | |--contract | |--Asset.java # Asset.sol合约生成的Java文件 | |--Table.java # Table.sol合约生成的Java文件 |-- sol2java.sh
java目录下生成了org/fisco/bcos/asset/contract/包路径目录,该目录下包含Asset.java和Table.java两个文件,其中Asset.java是Java应用调用Asset.sol合约需要的文件。 我们提供了一个Java工程项目供开发使用,首先获取Java工程项目: # 获取Java工程项目压缩包 $ cd ~ $ curl -LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/asset-app.tar.gz # 解压得到Java工程项目asset-app目录 $ tar -zxf asset-app.tar.gz
asset-app项目的目录结构如下: |-- build.gradle // gradle配置文件 |-- gradle | |-- wrapper | |-- gradle-wrapper.jar // 用于下载Gradle的相关代码实现 | |-- gradle-wrapper.properties // wrapper所使用的配置信息,比如gradle的版本等信息 |-- gradlew // Linux或者Unix下用于执行wrapper命令的Shell脚本 |-- gradlew.bat // Windows下用于执行wrapper命令的批处理脚本 |-- src | |-- main | | |-- java | | |-- org | | |-- fisco | | |-- bcos | | |-- asset | | |-- client // 放置客户端调用类 | | |-- AssetClient.java | | |-- contract // 放置Java合约类 | | |-- Asset.java | |-- test | |-- resources // 存放代码资源文件 | |-- applicationContext.xml // 项目配置文件 | |-- ca.crt // 链证书 | |-- node.crt // 节点证书 | |-- node.key // 节点私钥 | |-- contract.properties // 存储部署合约地址的文件 | |-- log4j.properties // 日志配置文件 | |-- contract //存放solidity约文件 | |-- Asset.sol | |-- Table.sol | |-- tool |-- asset_run.sh // 项目运行脚本 将asset_app 的sol、指定的合约的java、abi、bin等文件copy 到项目中,使用winscp等软件copy
· 编译 # 切换到项目目录 $ cd ~/asset-app # 编译项目 $ ./gradlew build
编译成功之后,将在项目根目录下生成dist目录。dist目录下有一个asset_run.sh脚本,简化项目运行。现在开始一一验证本文开始定下的需求。 · 部署Asset.sol合约 # 进入dist目录 $ cd dist $ bash asset_run.sh deploy Deploy Asset succesfully, contract address is 0xd09ad04220e40bb8666e885730c8c460091a4775
· 注册资产 $ bash asset_run.sh register Alice 100000 Register account succesfully=> account: Alice, value: 100000 $ bash asset_run.sh register Bob 100000 Register account succesfully=> account: Bob, value: 100000
· 查询资产 $ bash asset_run.sh query Alice account Alice, value 100000 $ bash asset_run.sh query Bob account Bob, value 100000
1、基础合约处理
2、合约转化
3、SDK配置
4、使用sdk进行开发
5、底层部署和测试
文章标题:第三章 通过java SDK 实现个性化智能合约的部署与测试
文章链接:http://soscw.com/essay/26820.html