建议和反馈

请填写你的反馈内容

web3j-sample一些代码分享

2018-07-06 ·8932次阅读 ·读完需要1分钟

web3 for java 样例程序 (基于web3j 3.4.0)
环境 idea maven
运行前提 需要有一个开启RPC或者IPC服务的以太坊节点


①快速开始

package com.ethjava;



import com.ethjava.utils.Environment;

import org.web3j.protocol.Web3j;

import org.web3j.protocol.core.methods.response.Web3ClientVersion;

import org.web3j.protocol.http.HttpService;



import java.io.IOException;





/**

* 快速开始

*/

public class QuickStart {



private static Web3j web3j;



public static void main(String[] args) {

web3j = Web3j.build(new HttpService(Environment.RPC_URL));



Web3ClientVersion web3ClientVersion = null;

try {

web3ClientVersion = web3j.web3ClientVersion().send();

String clientVersion = web3ClientVersion.getWeb3ClientVersion();

System.out.println("clientVersion " + clientVersion);

catch (IOException e) {

e.printStackTrace();

}

}

}

TransactionClient eth转账相关接口

package com.ethjava;



import com.ethjava.utils.Environment;

import org.web3j.protocol.Web3j;

import org.web3j.protocol.admin.Admin;

import org.web3j.protocol.admin.methods.response.PersonalUnlockAccount;

import org.web3j.protocol.core.DefaultBlockParameterName;

import org.web3j.protocol.core.methods.request.Transaction;

import org.web3j.protocol.core.methods.response.EthEstimateGas;

import org.web3j.protocol.core.methods.response.EthGetBalance;

import org.web3j.protocol.core.methods.response.EthGetTransactionCount;

import org.web3j.protocol.core.methods.response.EthSendTransaction;

import org.web3j.protocol.http.HttpService;

import org.web3j.utils.Convert;



import java.io.IOException;

import java.math.BigDecimal;

import java.math.BigInteger;



public class TransactionClient {

private static Web3j web3j;

private static Admin admin;



private static String fromAddress = "0x7b1cc408fcb2de1d510c1bf46a329e9027db4112";

private static String toAddress = "0x05f50cd5a97d9b3fec35df3d0c6c8234e6793bdf";

private static BigDecimal defaultGasPrice = BigDecimal.valueOf(5);



public static void main(String[] args) {

web3j = Web3j.build(new HttpService(Environment.RPC_URL));

admin = Admin.build(new HttpService(Environment.RPC_URL));



getBalance(fromAddress);

sendTransaction();

}



/**

* 获取余额

*

@param address 钱包地址

@return 余额

*/

private static BigInteger getBalance(String address) {

BigInteger balance = null;

try {

EthGetBalance ethGetBalance = web3j.ethGetBalance(address, DefaultBlockParameterName.LATEST).send();

balance = ethGetBalance.getBalance();

catch (IOException e) {

e.printStackTrace();

}

System.out.println("address " + address + " balance " + balance + "wei");

return balance;

}



/**

* 生成一个普通交易对象

*

@param fromAddress 放款方

@param toAddress 收款方

@param nonce 交易序号

@param gasPrice gas 价格

@param gasLimit gas 数量

@param value 金额

@return 交易对象

*/

private static Transaction makeTransaction(String fromAddressString toAddress,

BigInteger nonceBigInteger gasPrice,

BigInteger gasLimitBigInteger value) {

Transaction transaction;

transaction = Transaction.createEtherTransaction(fromAddress, nonce, gasPrice, gasLimit, toAddress, value);

return transaction;

}



/**

* 获取普通交易的gas上限

*

@param transaction 交易对象

@return gas 上限

*/

private static BigInteger getTransactionGasLimit(Transaction transaction) {

BigInteger gasLimit = BigInteger.ZERO;

try {

EthEstimateGas ethEstimateGas = web3j.ethEstimateGas(transaction).send();

gasLimit = ethEstimateGas.getAmountUsed();

catch (IOException e) {

e.printStackTrace();

}

return gasLimit;

}



/**

* 获取账号交易次数 nonce

*

@param address 钱包地址

@return nonce

*/

private static BigInteger getTransactionNonce(String address) {

BigInteger nonce = BigInteger.ZERO;

try {

EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(address, DefaultBlockParameterName.PENDING).send();

nonce = ethGetTransactionCount.getTransactionCount();

catch (IOException e) {

e.printStackTrace();

}

return nonce;

}



/**

* 发送一个普通交易

*

@return 交易 Hash

*/

private static String sendTransaction() {

String password = "yzw";

BigInteger unlockDuration 
  • 上一篇:【区块链】共识算法与如何解决拜占庭将军问题
  • 下一篇:区块链技术要用到什么开发语言?
  • 评论(0)问答(0)
    请先登录或注册

    请先登陆或注册

    相关推荐

    构建以太坊DAPP游戏的区块链应用

    以太坊是通用区块链,更适合通过高级脚本(也称为智能合约)来描述业务逻辑。以太坊的设计具有更广阔的视野,它是一台试图将区块链的功能与一台图灵完备的合约引擎相结合的分散式或世界计算机,作为一种信任机器。尽......
    BTC · 2020-02-26
    312阅读 · 0赞赏 · 0问答

    从以太坊到超级账本的区块链演变和阶段概述

    区块链将在去中心化的同时提高业务绩效,从而成为全球许多行业和市场中占主导地位的游戏规则改变技术。它在现代供应链管理中的实施产生了惊人的结果,整个链实现了自动化,同时消除了冗余和中间商。截至撰写本文时,......
    区块链网 · 2020-02-26
    350阅读 · 0赞赏 · 0问答

    区块链钱包系统开发方案,多币种钱包开发

    区块链钱包系统开发方案,多币种钱包开发怎么样理解钱包呢?简单讲它是连接区块链的一个入口。目前比较成熟的公链,如比特币、以太坊都有很多钱包可以选择。一般钱包需要完全访问你的用户资产,也就是会要求你输入私......
    T13823153201 · 2020-02-26
    364阅读 · 0赞赏 · 0问答

    以太坊矿机简单的介绍

    以太坊挖机:它们是什么以及如何设置它们,在开始以太坊采矿装备之前,让我们快速了解一下到目前为止对以太坊和采矿以太坊的了解。什么是以太坊如何开采以太坊以太坊采矿硬件 以太坊矿机的组成如果您打算......
    区块链论坛 · 2020-02-26
    359阅读 · 0赞赏 · 0问答

    EDG上线追币交易所,波卡生态迎来爆发还会远吗?

    2019 年,区块链领域最受瞩目的明星项目就是波卡(Polkadot)了。 它不仅被认为是区块链在继比特币、以太坊和EOS之后又一个划时代的项目,甚至被认为是Web3.0 ——下一......
    追币视点 · 2020-02-25
    445阅读 · 0赞赏 · 0问答

    如何挖以太坊?

    挖矿基本上是利用您正在使用的设备的计算能力与电力相结合在区块链上查找区块的过程。挖矿是在区块链上验证和批准交易的过程。矿工通过交换获得的奖励是加密货币令牌(硬币)的奖励。对于比特币区块链,奖励是比特币......
    论坛咸鸟 · 2020-02-25
    513阅读 · 0赞赏 · 0问答

    达子

    98

    LK币

    12

    粉丝

    3

    笔记

    感谢"达子"

    这篇精彩的笔记,目前已经帮助

    • 0
    • 8
    • 9
    • 3
    • 2
    喜欢0
    链客社群 加入

    微博进入

    商务合作>

    广告投放>

    公司名称:北京链客行科技有限公司

    联系方式:010-67707199

    ICP备案号:京ICP备18032136号

    Copyright:链客区块链技术问答社区 版权所有

    感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

    感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

    您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

    您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!