一、简介

想要使用web3j开发ETH钱包,我们需要把准备工作做好,那么先让我们来了解下什么是web3j:https://web3j.readthedocs.io/en/latest/,我这里是最新版本的地址,随着时间的变化,我们需要使用心得版本来编写我们的程序。

web3j是一个高度模块化,反应灵敏,类型安全的Java和Android库,用于处理智能合约并与以太坊网络上的客户端(节点)集成:这使您可以使用以太坊区块链,而无需为平台编写自己的集成代码的额外开销。
Java和Blockchain对话提供了区块链,以太坊和web3j的概述。

二、准备工作

想要使用web3j,我们只需使用项目构建工具引入就可

Maven

Java 8:

<dependency><groupId>org.web3j</groupId><artifactId>core</artifactId><version>3.6.0</version>
</dependency>

Android:

<dependency><groupId>org.web3j</groupId><artifactId>core</artifactId><version>3.3.1-android</version>
</dependency>

Gradle

Java 8:

compile ('org.web3j:core:3.6.0')

Android:

compile ('org.web3j:core:3.3.1-android')

然后开启自己的节点,上一篇是说使用自己的geth客户端开启,但是我们现在使用infura,来创建自己的项目

Infura:https://infura.io/

注册成功后创建自己的项目:

可以看到 我们可以使用不同环境的不同节点。

三、账户创建和充值及部分代码。

我们现在已经把几乎所有的工作都昨做完了,但是还有一个就是我们钱包的eth的获取,我们可以通过挖矿获取,但是这个是测试环境我们还可以通过其他方式获取(在真实环境我们可以通过交易所来购买)。

现在我们先写下我们创建账户和入门web3j的代码:

/* We start by creating a new web3j instance to connect to remote nodes on the network. 实例化web3j,这里HttpService()可不传参,默认
*/
Web3j web3j = Web3j.build(new HttpService("https://rinkeby.infura.io/v3/3f0abe3dcf554486a363809349898253"));
Admin admin = Admin.build(new HttpService("https://rinkeby.infura.io/v3/3f0abe3dcf554486a363809349898253"));
log.info("Connected to Ethereum client version: "+ web3j.web3ClientVersion().send().getWeb3ClientVersion());

创建钱包地址:

方法1

这个方法这是和自己的节点,自己创建账户后,对应的钱包文件会存在…/keystore/ 的目录下

try {NewAccountIdentifier newAccountIdentifier = admin.personalNewAccount(password).send();log.info("创建ETH账户成功,账户id = {}",newAccountIdentifier.getAccountId());return newAccountIdentifier.getAccountId();
} catch (IOException e) {log.error("创建ETH账户失败,错误信息:{}",e);return null;
}

方法2

这个方式需要自己制定生产钱包文件的目录

String walletFileName="";
String password = "123456qwerty";
String walletFilePath="C:\\Users\\yaxuSong\\wallet";
walletFileName = WalletUtils.generateNewWalletFile(password, new File(walletFilePath));
log.info("walletName: "+walletFileName);

通过这样的方式 ,我们就可以创建自己的钱包地址,在测试环境中我们使用https://www.rinkeby.io/#faucet给自己充值测试币

首先我们需要使用Twitter、Facebook、Google Plus发布新的公开内容,内容是自己的钱包地址,然后粘贴相应的文章的地址到faucet.

我这里使用的是Google Plus.

1.发布带自己钱包地址的公开文章

发布成功之后点击分析图表进入的界面如下,就是自己的文章(post)的地址:https://plus.google.com/103762921276095780168/posts/fhTRmP6gXDb

2.粘贴地址

然后进入faucet粘贴地址进行充值。

粘贴文章地址,并选择充值数量

点击充值,显示接受转账

显示已经转账成功

这里需要注意,有时候测试会有一些卡,可能有很多转账都有发放,所以请等待没有排队对列时进行,不然也不会到账。

3.查看是否到账和账户状态

我们可以通过我们的地址去 explorer:https://www.rinkeby.io/#explorer

如图:

这样我们就有可以操作的ETH进行转账等操作了。

四、参考代码、DEMO

sample :https://github.com/web3j/sample-project-gradle
因为项目是用Gradle构建的,我这边在下载依赖时出现很多问题,后来改了下仓库,具体修改如下:

build.gradle

group 'org.web3j'
version '0.0.1'apply plugin: 'java'sourceCompatibility = 1.8repositories {maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}ext {web3jVersion = '3.4.0'logbackVersion = '1.2.3'junitVersion = '4.12'
}dependencies {compile "org.web3j:core:$web3jVersion","ch.qos.logback:logback-core:$logbackVersion","ch.qos.logback:logback-classic:$logbackVersion"testCompile "junit:junit:$junitVersion"
}

五、参考文档

Web3j:https://web3j.readthedocs.io/en/latest/

使用Web3j(JAVA)开发ETH钱包-1相关推荐

  1. 以太坊转账参数java_【ETH钱包开发04】web3j转账ERC-20 Token

    在上一篇文章中讲解了ETH转账,这一篇讲一下ERC-20 Token转账. [ETH钱包开发03]web3j转账ETH ERC-20 Token转账的2种方式 1.直接用web3j的API 2.jav ...

  2. 基于Java的Android区块链钱包开发(ETH篇)

    基于Java的Android区块链钱包开发-ETH篇 引言 使用的库 具体代码如下 生成公私钥.地址 查余额.签名转账 引言 首先要生成12个助记词,区块链开发之生成12个助记词 使用的库 imple ...

  3. java开发以太坊---不搭节点开发

    java开发以太坊---不搭节点开发 readme 直接上代码 readme 以太坊区块链浏览器有提供官方api 已经满足了基本开发需求 api连接 优点: 可以不用搭建节点,节省内存,无须担心节点挂 ...

  4. Hyperledger Fabric 超级账本 Java 开发区块链环境构建

    面向 Java 开发人员的链代码简介 您听说过区块链超级账本Hyperledger Fabric?对Java开发人员有何用.我将分步展示用 Hyperledger Fabric v0.6来搭建开发环境 ...

  5. java开发区块链只需150行代码

    本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统. ...

  6. 如何选择一台适合Java开发的电脑

    前言 最近在群里老有同学求推荐适合Java开发用的电脑,所以胖哥就用我知道的电脑知识来帮助大家选择适合开发的电脑配置.因为我自己家里的主机已经带不动两个 IDEA 了,更别提开个 Docker 啥了, ...

  7. 开发指南:BUMO 智能合约 Java 开发指南

    BUMO 智能合约 Java 开发指南 概述 合约是一段JavaScript代码,标准(ECMAScript as specified in ECMA-262).合约的初始化函数是init, 执行的入 ...

  8. 如何选择一台适合Java开发的电脑?

    笔记本还是台式机往往是你买电脑的第一个选项.笔记本的优势是便携性,可以让你在天台上,草丛中,树林里,越野车中编写你的代码,当然这个是以牺牲了一些性能和扩展性为代价的.台式机的优势就是性能和可扩展性,劣 ...

  9. 关于JAVA接入Filecoin钱包流程

    关于JAVA接入Filecoin钱包流程 Filecoin前日上线,由于学习资源较少,只能摸着石头过河.总结一路的曲折,也防止大家入坑. Filecoin钱包现阶段主要是通过Lotus的安装配置,达到 ...

  10. 【干货满满】学习java开发,用什么样配置的电脑好?

    如何选择一台适合Java开发的电脑这个问题是很多初学者刚开始都会问的问题,也会去搜索一些相关的推荐答案 先说说我的电脑配置 操作系统 Microsoft Windows 10 专业版 (64位) CP ...

最新文章

  1. 常见的浏览器兼容性问题与解决方案——CSS篇
  2. php回调函数原理和实例
  3. JavaWeb:JDBC之数据库连接池
  4. 如何建立论坛的核心用户--引发的思考
  5. mybatis 获得一个map的返回集合
  6. ios上编译c语言的app,iOS App编译流程
  7. mantis apache mysql_软件测试(软件安装:php+mysql+apache+mantis过程遇到的问题以及解决方法)...
  8. 编辑器之神Vim总结
  9. CC-Python-文件操作
  10. 一、全国计算机三级数据库考试——理论知识总结(选择题)
  11. 基于PHP的简单微博系统
  12. 最简单易懂最深刻的数据库讲解
  13. 《51单片机C语言程序设计教程》涉及的细节问题笔记
  14. 线程池满Thread pool exhausted排查和解决
  15. 数学Ⅰ基础复习(六)
  16. Leetcode 523 连续的子数组和 前缀和 + 哈希表
  17. 一二线城市 Java 程序员一般考虑入职的互联网公司清单?
  18. LTE学习-OFDM
  19. 网络与路由器故障诊断基础知识
  20. python 元组使用场景_列表和元组(三):列表和元组的性能以及使用场景

热门文章

  1. MarkDown基础语法笔记
  2. separating axis test——分离轴测试算法的实现
  3. 微信开发者工具封装request请求
  4. 计算机专业拼音怎样写,电脑的拼音怎么打
  5. Unity3D 手机竖屏设置(For Android)
  6. LPVOID 指针 转 int
  7. win10输入法变成繁体字的快捷键
  8. 2021-03-30 libnice 应用 多线程
  9. png在线转换透明ICO
  10. 英雄联盟android,安卓ARPG佳作 《英雄联盟(League of Heroes)》