使用web3获取token的交易记录

作者: 六天天天向上 | 来源:发表于2019-02-18 18:57 被阅读3次

    以太坊中的事件(Events)和日志(Logs)是两个比较让人困惑的概念,基本上算是同一个概念。
    Solidity和web3.js中称为Events,以太坊黄皮书中称为Logs。以太坊通过Logs实现Events(事件)功能。智能合约代码通过Events将日志写入区块链中。
    因此,我们可以通过以太坊的日志,查询token中某一地址的所有交易记录。
    具体代码如下:

    var Web3 = require('web3');
    var request = require("request");
    console.log(Web3.version);
    var web3 = new Web3("https://mainnet.infura.io");
    var abi = require("./rnt.json");
    var address = "0xff603f43946a3a28df5e6a73172555d8c8b02386";
    var contract = new web3.eth.Contract(abi,address); //合约实例
    //查询合约名称
    contract.methods.name().call().then(
            function(result){
                console.log(result);
            }
        );
    //查询某一地址交易记录
    contract.getPastEvents('Transfer', {
        filter: {_from: '0x6cc5f688a315f3dc28a7781717a9a798a59fda7b'},
        fromBlock: 230813,
        toBlock: 'latest'
    }, (error, events) => { console.log(events); });
    

    示例代码我是以RNT这个token为例,RNT的合约信息可见:
    https://etherscan.io/address/0xff603f43946a3a28df5e6a73172555d8c8b02386

    • rnt.json是合约的abi信息
    • 0xff603f43946a3a28df5e6a73172555d8c8b02386地址是合约地址
    • 0x6cc5f688a315f3dc28a7781717a9a798a59fda7b地址是示例的交易地址
    • 230813是区块的高度,要查询所有交易记录区块高度应该是0

    示例代码使用了web3的getPastEvents方法,方法详情见:
    https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#getpastevents

    代码运行:

     node tokenRecord.js
    

    运行结果如下图:


    运行结果

    相关文章

      网友评论

        本文标题:使用web3获取token的交易记录

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