Android如何与以太坊区块链进行交互

本文讲述Android如何与以太坊区块链进行交互。

attachments-2018-03-9MDlTgOS5aa74ab46b850.png

作者:malakashi

文章来源:博客园

原文链接:http://t.cn/EvZ7XUm

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文约2000字+,阅读(观看)需要11分钟


如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过100GB的空间。这在台式计算机上可能有意义,但在移动设备上则不太合理。


解决此限制的一种方法是使用像Infura这样的服务。Infura允许你连接到远程以太坊节点并执行交易,而无需担心维护和同步本地节点。


为了能够使用本机Java代码与智能合约进行交易,我们使用一个名为Web3j的库。


Web3j为你提供生成智能合约java封装包的实用程序,以及通过HTTP和IPC完整实现以太坊的JSON-RPC客户端API。它提供了更多功能,但刚说的这些对这个“Android Ethereum hello world”示例来说最重要的功能。


我想要与之互动的示例智能合约是一个Greeter。它在区块链上存储可以读取或更新的问候消息。它看起来像这样:


contract greeter is mortal {    /* define variable greeting of the type string */
    string greeting;    /* this runs when the contract is executed */
    function greeter(string _greeting) public {
        greeting = _greeting;
    }    /* change greeting */
    function changeGreeting(string _greeting) public {
        greeting = _greeting;
    }    /* main function */
    function greet() constant returns (string) {        return greeting;
    }
}



为了能够创建封装包,我们首先要编译这个智能合约:


solc greeter.sol --bin --abi --optimize -o <output-dir>/


要生成运行的封装包:


web3j solidity generate /path/to/.bin /path/to/.abi -o /path/to/src/main/java -p com.your.organisation.name


Java部分


首先,我们需要获得以太坊区块链交互的Web3实例。它看起来像这样:


InfuraHttpService infuraHttpService = new InfuraHttpService(url);Web3j web3j = Web3jFactory.build("https://ropsten.infura.io/YOUR_API_KEY");


现在我们可以读取合约几乎是即时的。


Greeter greeter = Greeter.load(greeterContractAddress, web3j, credentials, gasPrice, gasLimit);
Future greeting = greeter.greet();
Utf8String greetingUtf8 = greeting.get();String result = greetingUtf8.getValue();


但交易不是即时的,可能需要几分钟才能得到验证。


Greeter greeter = Greeter.load(greeterContractAddress, web3j, credentials, gasPrice, gasLimit);TransactionReceipt transactionReceipt = greeter.changeGreeting(new Utf8String(greetingToWrite)).get(timeout);String result = "Successful transaction. Gas used: " + transactionReceipt.getGasUsed();


章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

attachments-2018-02-kL1zBfXx5a7ffd0b78798.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
社区运营-小以

556 篇文章

作家榜 »

  1. 社区运营-小以 556 文章
  2. 社区运营-小链 244 文章
  3. 于中阳Mercina-zy 79 文章
  4. 涂晶 75 文章
  5. 李晓琼 44 文章
  6. 兄弟连区块链培训 42 文章
  7. 吴寿鹤 36 文章
  8. John-smith 25 文章