如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过100GB的空间。这在台式计算机上可能有意义,但在移动设备上则不太合理。
解决此限制的一种方法是使用像Infura这样的服务。Infura允许你连接到远程以太坊节点并执行交易,而无需担心维护和同步本地节点。
为了能够使用本机Java代码与智能合约进行交易,我们使用一个名为Web3j的库。Web3j为你提供生成智能合约java封装包的实用程序,以及通过HTTP和IPC完整实现以太坊的JSON-RPC客户端API。它提供了更多功能,但刚说的这些对这个“Android Ethereum hello world”示例来说最重要的功能。
我想要与之互动的示例智能合约是一个Greeter。它在区块链上存储可以读取或更新的问候消息。它看起来像这样:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
为了能够创建封装包,我们首先要编译这个智能合约:
solc greeter.sol --bin --abi --optimize -o <output-dir>/
- 1
要生成运行的封装包:
web3j solidity generate /path/to/<smart-contract>.bin /path/to/<smart-contract>.abi -o /path/to/src/main/java -p com.your.organisation.name
- 1
Java部分
首先,我们需要获得以太坊区块链交互的Web3实例。它看起来像这样:
InfuraHttpService infuraHttpService = new InfuraHttpService(url);
Web3j web3j = Web3jFactory.build("https://ropsten.infura.io/YOUR_API_KEY");
- 1
- 2
现在我们可以读取合约几乎是即时的。
Greeter greeter = Greeter.load(greeterContractAddress, web3j, credentials, gasPrice, gasLimit);
Future<Utf8String> greeting = greeter.greet();
Utf8String greetingUtf8 = greeting.get();
String result = greetingUtf8.getValue();
- 1
- 2
- 3
- 4
但交易不是即时的,可能需要几分钟才能得到验证。
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();
- 1
- 2
- 3
完整的例子看github这里。
如果希望快速进行web3j、java、以太坊开发,那请看我们精心打造的教程:
java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
相关推荐
以太坊智能合约开发环境及总结 今年上半年开始接触基于区块链的以太坊智能合约编程。由于⽹络现有资料⼤多使⽤truffle2.0框架,⽽更新的truffle3.0在使⽤习惯上有 较⼤改动,很多教程已经不太适合新⼿使⽤。这⾥在...
通过web3dart软件包与以太坊智能合约进行交互的Flutter应用程序示例。 入门 该项目假定您的Flutter安装至少已升级到2.0版,以便能够在移动平台(Android和iOS),Web(Chrome)和台式机(在我们的示例中为Linux)上...
以太坊智能合约NodeJS API ================================================== ==== NodeJS REST API与以太坊平台进行交互特征通用API :用于以太坊网络上的常规交易。 通用api在以下位置实现: apis/ethereum.js ...
Web3.js,与以太坊区块链节点进行交互的JavaScript API。 常见的以太坊通证标准有两种: ERC20标准,可互换通证。 ERC721标准,不可互换通证。 2014 年 12 月 31 日,维塔利克曾画了一张名为“Silos”的图,展示了...
一个基于流与以太坊智能合约进行交互的库。 您可以轻松地订阅事件,合同状态和只读方法。 该库支持浏览器,节点(即服务器端)和React Native环境。 用法 请注意,变量名末尾的$表示流。 您可以在其上调用....
karma.link是一个跨平台的RPC服务器,允许“经典”IT系统通过JSON与以太坊区块链网络上的智能合约进行交互
本课程详细讲解如何使用C#开发基于.Net的以太坊应用,课程内容即涉及以太坊中的核心概念,例如账户管理、状态与交易、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用C#与以太坊进行交互,是C#工程师...
Java 如何操作智能合约, 如何获取测试链的数据,如何将solidity智能合约部署到链上,如何免费获得Rinkeby测试链的ETH,如何用web3j将智能合约转换为Java对象以及如果用Java调用智能合约的方法等等。
web3-eth 新项目管理 许可证:LGPL v3 文档 与以太坊区块链和智能合约交互的模块 web3-eth-abi 新项目管理 许可证:LGPL v3 文档 用于编码和解码 EVM 输入/输出的函数 web3-eth-帐户 新项目管理 许可证:LGPL v3 ...
详细讲解如何使用web3j为Java应用或Android App增加以太坊区块链支持,课程内容即涉及以太坊中的核心概念,例如账户管理、状态与交易、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用web3j提供的开发...
如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器和事件等,同时也详细...
最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式...
RN与与原生Android Android 与RN交互 RN与与原生Android Android 与RN交互 RN与与原生Android Android 与RN交互 RN版本0.52.2
区块链 基于以太坊数字版权用户交互系统的设计与实现+详细文档+全部资料(优秀项目).zip区块链 基于以太坊数字版权用户交互系统的设计与实现+详细文档+全部资料(优秀项目).zip区块链 基于以太坊数字版权用户交互...
做过 Android 混合开发的,应该都知道 Android 中 Java 代码和 Javascript 代码之间的交互怎么做。 首先回顾一下 Java 和 Javascript 之间的交互。 JavaScript 调用 Java Android 中 WebView 添加供 Html 页面调用的...
HyperLedger Fabric 以太坊公有链合约部署,如需视频讲解可留言联系博主
web3.php 一个与以太坊区块链和生态系统进行交互的php接口。安装为开发人员设置最低稳定性"minimum-stability": "dev"然后composer require sc0vu/web3.php dev-master或者您可以在composer.json中添加此行"sc0vu/...
语音唤醒后,即可进行自由对话,但每次必须重新唤醒。注册科大讯飞账户后,下载语音唤醒,语义等服务,按txt文档所说导入必要文件并且修改appid,即可实现上述效果。
Web3的设计场景是DApp应该连接到一个本地节点,由这个节点负责保存密钥、签名交易并与以太坊区块链交互。现实并不是这样的,绝大多数用户不会在本地运行一个geth节点。Metamask在浏览器应用中有效地模拟了这种节点...