内容简介:如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过100GB的空间。这在台式计算机上可能有意义,但在移动设备上则不太合理。解决此限制的一种方法是使用像Infura这样的服务。Infura允许你连接到远程以太坊节点并执行交易,而无需担心维护和同步本地节点。为了能够使用本机Java代码与智能合约进行交易,我们使用一个名为Web3j的库。Web3j为你提供生成智能合约java封装包的实用程序,以及通过HTTP和IPC完整实现以太坊的JSON-RPC客户端API。它提供了更多功能,但刚说的
如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过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/<smart-contract>.bin /path/to/<smart-contract>.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<Utf8String> 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();
完整的例子看 github这里 。
如果希望快速进行web3j、java、以太坊开发,那请看我们精心打造的教程:java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
其他以太坊教程如下:
- 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发进阶教程,主要是介绍使用node.js、 mongodb 、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- python以太坊,主要是针对 python 工程师使用web3.py进行区块链以太坊开发的详解。
- php以太坊,主要是介绍使用 php 进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。
汇智网原创翻译,转载请标明出处。这里是 原文
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用Java与区块链智能合约进行交互
- 本地开发环境nodejs、web3以太坊合约交互实战
- 智能合约攻击分析之庞氏代币合约漏洞
- 检测了3万多份智能合约,这份白皮书找到了9大智能合约安全漏洞(附下载链接)
- 智能合约工程
- 智能合约微服务
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Seasoned Schemer
Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 38.00
drawings by Duane Bibbyforeword and afterword by Guy L. Steele Jr.The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (form......一起来看看 《The Seasoned Schemer》 这本书的介绍吧!