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

要生成运行的封装包:

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();

如果希望快速进行web3j、java、以太坊开发,那请看我们精心打造的教程:

java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。

其他以太坊教程如下:

以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。

以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。

python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。

php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。

C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。

汇智网原创翻译,转载请标明出处。这里是原文

android web3j 代币查询_Android通过web3j以太坊智能合约交互相关推荐

  1. 区块链进阶-通过代币(Token)学以太坊智能合约-熊丽兵-专题视频课程

    区块链进阶-通过代币(Token)学以太坊智能合约-244人已学习 课程介绍         本课程从什么是代币(Token)讲起,分析实现一个代币关键的点是什么. 然后逐步扩展到实现标准ERC20代 ...

  2. java和以太坊交互_Android怎么和以太坊智能合约交互

    we3j简介 we3j是提供了一个java访问以太坊网络的接口.借助we3j我们可以操作以太坊网络,包括创建账户.创建合约.执行合约.交易.查询余额.转账都可以. 项目地址https://github ...

  3. 以太坊智能合约交互调用,web3.js,web3j两种方式实现

    导语 接上篇文章 <使用hardhat部署solidity智能合约到测试网> 部署完合约之后,那么如何区块链进行交互呢?这节的主要内容就是使用web3.js和web3j来与区块链以及链上的 ...

  4. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

  5. android web3j 代币查询_使用Web3.js查询以太币和代币余额以及转账

    前言 前面的文章也提到了,使用web3.js可以与以太坊进行互动.这篇文章的主要内容如下:解决web3.js版本问题 2.使用web3.js查询以太币及代币余额,以及进行以太币和代币转账 1.web3 ...

  6. web3j的Gradle插件(solidity以太坊智能合约)

    web3j Gradle插件是从Solidity智能合约生成web3j Java封装的构建工具.它通过添加可以独立运行的特定任务,顺利地与项目的构建生命周期集成. 插件配置 在开始之前,如果计算机中尚 ...

  7. android web3j 代币查询_wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账

    wallet-eth-android wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账(bip39.bip32.bip44.web3j) 生成钱包地址 // 生成钱包地址 W ...

  8. android web3j 代币查询_ERC20代币转账以及余额查询--java(web3j)

    ERC20代币转账以及余额查询–java(web3j) 准备工作:转账之前你得有一个ERC20代币,代币发行戳这里,可以在测试网上进行测试. 因为发行代币本质就是部署智能合约,是需要消耗gas的,代币 ...

  9. java 以太坊 智能合约_web3j教程:java使用web3j开发以太坊智能合约交易

    从广义上讲,有web3j支持三种类型的以太坊交易: 1.以太币从一方交易到另一方 2.创建一个智能合约 3.与智能合约交易 为了进行这些交易,必须有以太币(以太坊区块链的代币)存在于交易发生的以太坊账 ...

最新文章

  1. 图像与数据类型的对应,以及如何显示
  2. “堆”,栈,堆栈,队列,它们的区别?
  3. MFC单文档框架编程(二): SDI框架下的消息处理
  4. SQL 2005启用组件Ad Hoc Distributed Queries
  5. SQLite 创建数据库(http://www.w3cschool.cc/sqlite/sqlite-create-database.html)
  6. python常见数据存储 csv txt pickle
  7. SpringMVC配置类WebMvcConfigurerAdapter学习总结
  8. java算术运算符_JAVA-基础-算术运算符
  9. zune linux_更新您的Zune Player软件
  10. WPF中Auto与*的区别
  11. phpword这个问题的产生中国扭曲
  12. 学生管理系统c语言代码实验报告,C语言学生信息管理系统实验报告(含源代码).doc...
  13. 【java笔记】of方法 JDK9对集合添加方法的优化
  14. 解决Mac文件乱码问题
  15. EOS技术研究:合约与数据库交互
  16. Activity的启动模式standard,singleTop,singleTask,singleInstance(转)
  17. Netty入门之HelloWorld
  18. ue4手机ui_Epic Games工程师分享:如何在移动平台上做UE4的UI优化?
  19. VisionMaster基础版教程汇总
  20. java json字符串转对象

热门文章

  1. Python守护进程和脚本单例运行
  2. 批量实现ssh免交互认证
  3. 云服务器与传统服务器的优势差异
  4. rsync推拉模型及结合inotify实现推模型自动同步
  5. 流星,刹那间划过天际
  6. 2010年06月12日
  7. 机器学习——常用核函数
  8. 学习笔记(46):Python实战编程-protocol
  9. Halcon —— 边缘检测算子详解
  10. scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)