Android与以太坊智能合约交互

博客介绍了在移动设备上进行以太坊开发的方法。因下载整个以太坊区块链占用空间大,可使用Infura服务连接远程节点。还提到使用Web3j库与智能合约交易,以Greeter合约为例,介绍了编译和生成封装包的过程,最后推荐了针对Java和Android程序员的以太坊开发教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果要下载整个以太坊区块链并保持本地节点同步。当区块链占用了我计算机上超过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详解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值