美文网首页
以太坊入门(二)用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