您现在的位置是:首页 > 文章详情

web3j发送异步交易时不能解析方法`executeTransactionAsync`?

日期:2018-07-19点击:493

我正试图用web3j库发送一个交易到以太坊区块链,得到一个错误,我必须用异步发送它。当用异步发送它时,会得到一个函数不存在的错误。我使用的是Android Studio、Java和web3j库。

当我调用web3.abi.datatypes.FunctionexecuteTransactionAsync方法时,我得到以一个错误提示说web3j库中没有这个方法executeTransactionAsync。但是官方文件又说可以使用这个方法,我看的web3j文档是3.1.1版的。

如果删掉异步的方式使用executeTransaction发送的话,又会提示我交易需要异步发送。

我有什么办法把这个交易发送出去吗?也许我的web3j代码写错了:

public TransactionReceipt approve() throws IOException, TransactionException { Function function = new Function("approve", Arrays.<Type>asList(), Collections.<TypeReference<?>>emptyList()); return executeTransactionAsync (function); }

问题的解决

你需要使用executeTransaction封装包中的RemoteCall:

Function function = new Function(...); RemoteCall<TransactionReceipt> remoteCall = new RemoteCall(() -> { //call to executeTransaction }); TransactionReceipt receipt = remoteCall.send();

你可以通过使用web3j的代码生成工具为你的以太坊智能合约创建简单的封装包,从而使你的开发更轻松。有关如何生成代码的Web3J文档的这一部分。通过生成的类处理远程调用(以及对constant函数的本地调用)。你的客户端代码变得类似:

Web3j web3j = Web3j.build(new HttpService()); Credentials credentials = Credentials.create(<YOUR_PRIVATE_KEY>); SimpleContract contract = SimpleContract.load(<CONTRACT_ADDRESS>, web3j, credentials, BigInteger.valueOf(<GAS_PRICE>), BigInteger.valueOf(<GAS_LIMIT)); RemoteCall<TransactionReceipt> remoteCall = contract.setValue(BigInteger.valueOf(5)); // Call to smart contract setValue(5) TransactionReceipt receipt = remoteCall.send();

添加代码生成的示例

$ solc --version solc, the solidity compiler commandline interface Version: 0.4.19+commit.c4cbbb05.Windows.msvc $ java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) $ solc contracts/SimpleContract.sol --bin --abi --optimize -o build/ $ web3j.bat solidity generate build/SimpleContract.bin build/SimpleContract.abi -o ./src -p mypackage _ _____ _ _ | | |____ (_) (_) __ _____| |__ / /_ _ ___ \ \ /\ / / _ \ '_ \  \ \ | | | / _ \  \ V V / __/ |_) |.___/ / | _ | || (_) | \_/\_/ \___|_.__/ \____/| |(_)|_| \___/ _/ | |__/ Generating mypackage.SimpleContract ... File written to .\src

原文《以太坊常见问题和错误》中的:
http://cw.hubwiz.com/card/c/ethereum-FAQ/1/2/8/

另外推荐几个很受欢迎全网稀缺的互动教程:

  • web3j,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
  • python以太坊,主要是针对python围绕web3.py进行区块链以太坊应用开发的讲解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
原文链接:https://yq.aliyun.com/articles/617022
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章