溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web3j轉賬方式有哪些

發(fā)布時間:2022-01-15 14:45:30 來源:億速云 閱讀:197 作者:iii 欄目:互聯(lián)網(wǎng)科技

今天小編給大家分享一下web3j轉賬方式有哪些的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

 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         //調(diào)用的是kovan測試環(huán)境,這里使用的是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我也不是很明白,大概是交易的筆數(shù)吧)
34         EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(
35                 ownAddress, DefaultBlockParameterName.LATEST).sendAsync().get();
36         BigInteger nonce = ethGetTransactionCount.getTransactionCount();
37 
38         //創(chuàng)建交易,這里是轉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         //發(fā)送交易
48         EthSendTransaction ethSendTransaction =
49                 web3j.ethSendRawTransaction(hexValue).sendAsync().get();
50         String transactionHash = ethSendTransaction.getTransactionHash();
51 
52         //獲得到transactionHash后就可以到以太坊的網(wǎng)站上查詢這筆交易的狀態(tài)了
53         System.out.println(transactionHash);
54     }
55 }

注意:

以上交易代碼是離線交易,先組裝交易,然后發(fā)送到鏈上,web3j提供在線交易,但是這種交易需要parity錢包,將完整的區(qū)塊鏈錢包下載下來,然后綁定賬戶進去。

1、第27-31行,可以用兩種方式獲得地址的信任憑證,一種是直接使用私鑰,一種是使用keystore文件

2、https://kovan.etherscan.io/tx/0x88cb6e625b57cadd6d7f71872433c2e638014fca30e47c649f2831db79b54304

這個地址是可以查到你的這筆交易的

0x88cb6e625b57cadd6d7f71872433c2e638014fca30e47c649f2831db79b54304是transactionHash

這個地址是測試地址,如果需要查詢主網(wǎng)上的,刪除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環(huán)境中沒有以太幣的話,可以到https://gitter.im/kovan-testnet/faucet這里去要,直接注冊賬號之后,把你的賬號地址發(fā)到群里就行了,過幾分鐘就會給你轉錢的,主網(wǎng)的賬號地址和kovan是一樣的,但是里面的幣是不一樣的。

以上就是“web3j轉賬方式有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI