今天小编给大家分享一下web3j转账方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
web3 转账功能
为了完成以太坊交易,必须有几个先决条件
1、对方的以太坊地址
2、确定要转账的金额
3、自己地址的转账权限
4、大于转账金额的以太币,以太币转账其实就是提出一个交易,矿工会帮你计算,计算完成即达成交易,但是矿工计算需要支付一定的费用(GAS),支付过少,计算转账就有可能很慢或者不成功。
转账方式1:
代码如下
1 import org.web3j.crypto.Credentials;
2 import org.web3j.crypto.RawTransaction;
3 import org.web3j.crypto.TransactionEncoder;
4 import org.web3j.protocol.Web3j;
5 import org.web3j.protocol.core.DefaultBlockParameterName;
6 import org.web3j.protocol.core.methods.response.EthGetTransactionCount;
7 import org.web3j.protocol.core.methods.response.EthSendTransaction;
8 import org.web3j.protocol.http.HttpService;
9 import org.web3j.utils.Convert;
10 import org.web3j.utils.Numeric;
11
12 import java.math.BigInteger;
13
14
15 public class TransactionTest {
16 public static void main(String[] args) throws Exception {
17 //设置需要的矿工费
18 BigInteger GAS_PRICE = BigInteger.valueOf(22_000_000_000L);
19 BigInteger GAS_LIMIT = BigInteger.valueOf(4_300_000);
20
21 //调用的是kovan测试环境,这里使用的是infura这个客户端
22 Web3j web3j = Web3j.build(new HttpService("https://kovan.infura.io/<your-token>"));
23 //转账人账户地址
24 String ownAddress = "0xD1c82c71cC567d63Fd53D5B91dcAC6156E5B96B3";
25 //被转人账户地址
26 String toAddress = "0x6e27727bbb9f0140024a62822f013385f4194999";
27 //转账人私钥
28 Credentials credentials = Credentials.create("xxxxxxxxxxxxx");
29 // Credentials credentials = WalletUtils.loadCredentials(
30 // "123",
31 // "src/main/resources/UTC--2018-03-01T05-53-37.043Z--d1c82c71cc567d63fd53d5b91dcac6156e5b96b3");
32
33 //getNonce(这里的Nonce我也不是很明白,大概是交易的笔数吧)
34 EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(
35 ownAddress, DefaultBlockParameterName.LATEST).sendAsync().get();
36 BigInteger nonce = ethGetTransactionCount.getTransactionCount();
37
38 //创建交易,这里是转0.5个以太币
39 BigInteger value = Convert.toWei("0.5", Convert.Unit.ETHER).toBigInteger();
40 RawTransaction rawTransaction = RawTransaction.createEtherTransaction(
41 nonce, GAS_PRICE, GAS_LIMIT, toAddress, value);
42
43 //签名Transaction,这里要对交易做签名
44 byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials);
45 String hexValue = Numeric.toHexString(signedMessage);
46
47 //发送交易
48 EthSendTransaction ethSendTransaction =
49 web3j.ethSendRawTransaction(hexValue).sendAsync().get();
50 String transactionHash = ethSendTransaction.getTransactionHash();
51
52 //获得到transactionHash后就可以到以太坊的网站上查询这笔交易的状态了
53 System.out.println(transactionHash);
54 }
55 }
注意:
以上交易代码是离线交易,先组装交易,然后发送到链上,web3j提供在线交易,但是这种交易需要parity钱包,将完整的区块链钱包下载下来,然后绑定账户进去。
1、第27-31行,可以用两种方式获得地址的信任凭证,一种是直接使用私钥,一种是使用keystore文件
2、https://kovan.etherscan.io/tx/0x88cb6e625b57cadd6d7f71872433c2e638014fca30e47c649f2831db79b54304
这个地址是可以查到你的这笔交易的
0x88cb6e625b57cadd6d7f71872433c2e638014fca30e47c649f2831db79b54304是transactionHash
这个地址是测试地址,如果需要查询主网上的,删除kovan
转账方式2:
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.http.HttpService;
import org.web3j.tx.Transfer;
import org.web3j.utils.Convert;
import java.math.BigDecimal;
public class TransactionTest2 {
public static void main(String[] args) throws Exception {
Web3j web3j = Web3j.build(new HttpService("https://kovan.infura.io/<your-token>"));
String ownAddress = "0xD1c82c71cC567d63Fd53D5B91dcAC6156E5B96B3";
String toAddress = "0x6e27727bbb9f0140024a62822f013385f4194999";
Credentials credentials = Credentials.create("xxxxxxxx");
TransactionReceipt transactionReceipt = Transfer.sendFunds(
web3j, credentials, toAddress,
BigDecimal.valueOf(0.2), Convert.Unit.ETHER).send();
System.out.println(transactionReceipt.getTransactionHash());
}
}
注意
这种也是离线的,但是代码量比较小。
备注:
如果在kovan环境中没有以太币的话,可以到https://gitter.im/kovan-testnet/faucet这里去要,直接注册账号之后,把你的账号地址发到群里就行了,过几分钟就会给你转钱的,主网的账号地址和kovan是一样的,但是里面的币是不一样的。
以上就是“web3j转账方式有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3837977/blog/1859230