美文网首页
以太坊入门(二)用web3j进行以太查询及通证查询

以太坊入门(二)用web3j进行以太查询及通证查询

作者: 酒趣琴音 | 来源:发表于2018-08-14 22:49 被阅读0次

以太坊的开发,基本都是go语言和nodejs的天下,web3j出现给java开发人员提供了很大的便利。本文会对一些以太坊的基本操作用java语言来实现。

本章会讲述通过web3j进行账户余额的查询。

  1. 以太余额查询
    以太的余额查询比较简单,直接调用web3j的ethGetBalance就可以。

         Web3j web3j = Web3j.build(new HttpService(ConstantLibs.WEB3_ADDRESS));
         EthGetBalance ethGetBalance = web3j.ethGetBalance(
                 address, DefaultBlockParameterName.LATEST).sendAsync().get();
         BigInteger balance = ethGetBalance.getBalance();
    
  2. 通证的余额查询
    代币的查询就比较复杂一些,研究了好长时间,最后发现每个代币合约都会实现balanceOf方法,可以通过这个方法来查询通证的余额。

            Web3j web3j = Web3j.build(new HttpService(ConstantLibs.WEB3_ADDRESS));
    
             Function function = new Function(
                     "balanceOf",
                     Arrays.asList(new Address(address)),  // Solidity Types in smart contract functions
                     Arrays.asList(new TypeReference<Type>() {
                     }));
    
             String encodedFunction = FunctionEncoder.encode(function);
             org.web3j.protocol.core.methods.response.EthCall response = web3j.ethCall(
                     org.web3j.protocol.core.methods.request.Transaction.createEthCallTransaction(address, contract, encodedFunction),
                     DefaultBlockParameterName.LATEST)
                     .sendAsync().get();
    
             String returnValue = response.getValue(); //返回16进制余额
             returnValue = returnValue.substring(2);
             BigInteger balance = new BigInteger(returnValue, 16);
    

相关文章

网友评论

      本文标题:以太坊入门(二)用web3j进行以太查询及通证查询

      本文链接:https://www.haomeiwen.com/subject/wqbbbftx.html