ERC20代币转账以及余额查询–java(web3j)
准备工作:转账之前你得有一个ERC20代币,代币发行戳这里,可以在测试网上进行测试。
因为发行代币本质就是部署智能合约,是需要消耗gas的,代币转账也是需要消耗eth作为手续费的。
准备工作完成之后,就让我们直接进行ERC20代币转账吧~
通过调用web3j的API完成相关操作,所需maven依赖:
org.web3j
core
3.2.0
一:代币转账
该代币转账是通过构建原始交易的方式进行的,请看代码,主网亲测有效~
/**
* erc20代币转账
*
* @param from 转账地址
* @param to 收款地址
* @param value 转账金额
* @param privateKey 转账这私钥
* @param contractAddress 代币合约地址
* @return 交易哈希
* @throws ExecutionException
* @throws InterruptedException
* @throws IOException
*/
public static String transferERC20Token(String from, String to, BigInteger value, String privateKey, String contractAddress) throws ExecutionException, InterruptedException, IOException {
Web3j web3j = Web3j.build(new HttpService("https://mainnet.infura.io/v3/c313bf2c97834ee29d933a996caaafb0"));
//加载转账所需的凭证,用私钥
Credentials credentials = Credentials.create(privateKey);
//获取nonce,交易笔数
BigInteger nonce;
EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(from, DefaultBlockParameterName.PENDING).send();
if (ethGetTransactionCount == null) {
return null;
}
nonce = ethGet