diff --git "a/sample/BCOS\346\231\272\350\203\275\345\220\210\347\272\246\345\274\200\345\217\221\346\214\207\345\257\274.md" "b/sample/BCOS\346\231\272\350\203\275\345\220\210\347\272\246\345\274\200\345\217\221\346\214\207\345\257\274.md" index f67f2a0334..a75d22158d 100644 --- "a/sample/BCOS\346\231\272\350\203\275\345\220\210\347\272\246\345\274\200\345\217\221\346\214\207\345\257\274.md" +++ "b/sample/BCOS\346\231\272\350\203\275\345\220\210\347\272\246\345\274\200\345\217\221\346\214\207\345\257\274.md" @@ -132,7 +132,7 @@ contract SimpleStorage { * Java [web3j开发库]及其依赖库 ### web3j介绍 -**[web3j]**是一个支持以太坊通信协议的客户端网络库,它提供了轻量、反应式、类型安全的Java和Android程序访问能力,使得开发以太坊应用更加便捷,其详细的教程可以参考[官方网站](https://docs.web3j.io/) 。在本范例中sample程序将使用**[web3j]**及相关库来开发Java应用程序,基于web3j的应用开发的流程为: +**[web3j]** 是一个支持以太坊通信协议的客户端网络库,它提供了轻量、反应式、类型安全的Java和Android程序访问能力,使得开发以太坊应用更加便捷,其详细的教程可以参考[官方网站](https://docs.web3j.io/) 。在本范例中sample程序将使用 **[web3j]** 及相关库来开发Java应用程序,基于web3j的应用开发的流程为: 1. 使用智能合约的abi和bin文件生成智能合约Java Wrapper类, 参考BCOS-Tools工具包的使用; 2. 初始化web3j远程调用对象; 3. 使用智能合约Java Wrapper类提供的load或deploy接口获取智能合约远程调用对象;(其依赖于:web3j远程调用对象) @@ -152,6 +152,7 @@ contract SimpleStorage { Parity web3j = Parity.build(httpService); ``` 2. 部署合约 + 使用初始化的web3j对象和BcosRawTxManager交易管理器来部署智能合约,如果部署成功, Future对象即会返回合约调用对象 ``` Future futureSimpleStorage = SimpleStorage.deploy(web3j, new BcosRawTxManager(web3j, credentials, 100, 100), gasPrice, gasLimited, new BigInteger("0")); @@ -159,23 +160,28 @@ SimpleStorage simpleStorage = futureSimpleStorage.get(); String deployAddr = simpleStorage.getContractAddress(); ``` 3. 载入已经部署的合约 + 合约部署成功后,可以获取到已经部署的合约地址:``` String deployAddr = simpleStorage.getContractAddress(); ``` 利用获取到部署合约地址,初始化的web3j对象和BcosRawTxManager交易管理器,可以载入智能合约调用对象 ``` SimpleStorage simpleStorage = SimpleStorage.load(deployAddr.toString(), web3j, new BcosRawTxManager(web3j, credentials, 100, 100), gasPrice, gasLimited); ``` 注意: 部署后可以直接使用返回的智能合约对象, 而无需再load载入! + 4. 发送交易 + 发送交易通过直接调用已经部署或载入的智能合约调用对象执行合约对应接口即可, 比如智能合约SimpleStorage.sol的set方法,对应SimpleStorage.java的set方法,名字是相同的。 交易执行成功后将返回Receipt,Receipt包含交易hash和其他信息(如log) ``` TransactionReceipt receipt = null; receipt = simpleStorage.set(new Uint256(new BigInteger("1000"))).get(); ``` 5. call查询 + 使用已经部署或载入的智能合约调用对象,直接执行对应智能合约中带constant修饰符的函数,即执行call类型调用 ``` Uint256 value = simpleStorage.get().get(); ``` + #### sample工程使用说明 BCOS参考中直接提供eclipse[sample完整工程](https://github.com/bcosorg/bcos/blob/master/sample/projects/java/sample) , 可以直接导入工程。 sample工程包括: