以太坊区块链研习社以太坊区块链开发

使用web3获取token的交易记录

2019-02-18  本文已影响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

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

代码运行:

 node tokenRecord.js

运行结果如下图:


运行结果
上一篇 下一篇

猜你喜欢

热点阅读