如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过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详解。
相关推荐
通过web3dart软件包与以太坊智能合约进行交互的Flutter应用程序示例。 入门 该项目假定您的Flutter安装至少已升级到2.0版,以便能够在移动平台(Android和iOS),Web(Chrome)和台式机(在我们的示例中为Linux)上...
然后,你可以通过示例代码来理解如何初始化Web3j客户端,如何连接到以太坊网络,如何与智能合约交互。在测试Demo时,可以使用测试网(如Rinkeby或Ropsten)进行,以避免在主网上花费真实的以太币。 总结起来,以太...
本项目“安卓webview与js交互demo”着重展示了如何在WebView中实现Android应用与JavaScript的交互,同时包含了区块链技术的应用,特别是以太坊智能合约的调用,以及一个类似微信的App首页底部导航框架。 1. Android...
详细讲解如何使用web3j为Java应用或Android App增加以太坊区块链支持,课程内容即涉及以太坊中的核心概念,例如账户管理、状态与交易、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用web3j提供的开发...
如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器和事件等,同时也详细...
它旨在简化区块链开发过程,提供了完整的功能集,包括智能合约的编译、部署、事件监听以及与以太坊网络的交互。 在"web3j-4.4.0.zip"这个压缩包中,包含了Web3j库的4.4.0版本。这个版本可能包括了以下关键组件和...
1. 智能合约交互:KEthereum 提供了与以太坊智能合约交互的API,使得开发者可以轻松地调用合约函数、部署新的合约,并处理合约事件。 2. 钱包管理:库支持创建和管理以太坊钱包,包括生成私钥、地址和交易签名。 3. ...
【标题】"WEB3J-JAVA-ETH.zip"是一个与以太坊开发相关的压缩包,主要涉及使用Java语言和Web3j库进行智能合约交互。Web3j是一个高度模块化、反应式、类型安全的Java和Android库,用于构建、部署和管理基于以太坊的去...
里程验证-通过以太坊区块链验证二手车的里程历史防篡改应用程序,用于在以太坊区块链上跟踪里程数据。 为了可视化跟踪的里程数据的有效性,... 该应用程序与部署在以太坊区块链上的智能合约进行交互。 miles_verificat
Web3j提供了全面的API,支持与以太坊节点进行通信,包括但不限于:发送交易、调用智能合约方法、获取区块信息、查询账户余额、监听事件等。这些API通过HTTP-RPC、WebSocket或IPC协议与以太坊节点接口进行交互。 3....
综上所述,web3j-4.2.0作为一个强大的Java和Android以太坊开发库,它集成了众多功能,旨在简化区块链应用的开发过程,提高开发效率,并保证应用的稳定性和安全性。无论是新手还是经验丰富的开发者,都可以从中受益。
Nethereum是用于Ethereum的.Net集成库,可简化与以太坊节点(如Geth, 或的访问和智能合约的交互。 Nethereum是针对netstandard 1.1,netstandard 2.0,netcore 2.1,netcore 3.1,net451以及作为便携式库开发的,...
android应用程序与智能学位合同进行交互 参见 先决条件 已安装Android SDK 运行Android测试应用程序 这个android应用程序调用以太坊智能合约来验证学位的哈希值 web3j truffle generate [LOCATION]/smart-degree/...
它提供了与以太坊节点交互的API,包括交易、智能合约部署等。`bitcoinj-core`则是一个用于比特币和兼容系统(如以太坊)的Java库,它提供了加密和钱包管理功能。 综上所述,"ETHUtil.zip"包含的工具类可以方便...
与智能合约进行交互,进行付款,... 什么是区块链? 区块链最初是区块链,是不断增长的记录列表,称为记录,这些记录通过密码进行链接和保护。 每个块通常都包含一个哈希指针,作为到前一个块,时间戳和事务数据的...
在IT行业中,尤其是在区块链开发领域,`web3j`是一个重要的工具库,它为开发者提供了与以太坊(Ethereum)智能合约交互的Java和Android SDK。本篇文章将深入探讨`web3j`库的使用,以及如何通过示例代码来理解其核心...
【标题】"web3j-struct-args" 是一个与智能合约交互相关的项目,主要针对以太坊(Ethereum)平台,利用Java语言实现。Web3j是一个高度模块化、反应式、类型安全的Java和Android库,用于构建、部署和管理基于以太坊的...
【web3jApps】是一个基于Java和Android的Web3库,它为开发人员提供了一整套工具,用于构建与以太坊区块链交互的应用程序。这个项目的核心是web3j库,一个高度模块化、反应式、类型安全的库,旨在简化智能合约的部署...
Web3j是一个高度模块化、反应式、类型安全的Java和Android库,用于构建、部署和交互以太坊智能合约以及DApps(去中心化应用)。这个项目主要目标是为Java和Android开发人员提供一个方便的接口,让他们能够利用web3....
4. **区块链技术与智能合约**: - 区块链基础知识:理解分布式账本、加密算法、共识机制(如PoW、PoS)。 - 智能合约:学习Solidity或其他区块链编程语言,编写和部署智能合约。 - 以太坊/Ethereum:探索以太坊...