建议和反馈

请填写你的反馈内容

获取某个erc20代币的所有持有人和交易记录

2018-09-28 ·3426次阅读 ·读完需要2分钟

链客上有个问题是:怎么获取某个erc20代币的所有持有人和交易记录?

链接是:https://www.liankexing.com/question/question_page/id/1732.html

首先说,一个代币,理论上其持有人和交易是不断增加的,因此,只能获取其发行到目前某一时间点内的持有人和交易信息。ethereum平台的时间以论。

BNB为例:

首先分析BNB的合约:

    function BNB(

        uint256 initialSupply,

        string tokenName,

        uint8 decimalUnits,

        string tokenSymbol

        ) {

        balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens

        totalSupply = initialSupply;                        // Update total supply

        name = tokenName;                                   // Set the name for display purposes

        symbol = tokenSymbol;                               // Set the symbol for display purposes

        decimals = decimalUnits;                            // Amount of decimals for display purposes

               owner = msg.sender;

    }

上面是其构造函数,其中:

balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens

将发行的代币全部转给创建者,这个创建者是:0xfe9e8709d3215310075d67e3ed32a380ccf451c8

其中定义了事件:

/* This generates a public event on the blockchain that will notify clients */

    event Transfer(address indexed from, address indexed to, uint256 value);

记录了由谁发送给谁多少的BNB

那么,所有由BNB创建者发送出的BNB的接收者及该创建者都是BNB的持有者,故监听该事件:

const Web3 = require("web3"),

    private = require("./private"),

    bnb = require("./BNB/bnb");

const provider = private.mainnet,

    web3 = new Web3(new Web3.providers.HttpProvider(provider)),

    instance = new web3.eth.Contract(bnb.abi, bnb.address);

    

instance.getPastEvents(

  "Transfer",

  {

    filter: {

      from: "0xfe9e8709d3215310075d67e3ed32a380ccf451c8" 

    } 

  },

  {

    fromBlock: 6339000,

    toBlock: 6339545 

  },

  function(error,

            events) {

    if (error) {

      console.log(error);

    } else {

      events.forEach(event => {

        console.log(event.returnValues);

      });

    }

  }

);

解释一下:

web3.js version: 1.0.0-beta.36;

private: 我用的是infura提供的API KEY作为provider

bnb:我将BNB的合约地址和ABI存储在bnb.js文件中;

 

想要知道多少人拥有BNB(严格的说是拥有过),使用过滤,由创建者转出:

filter: {

      from: "0xfe9e8709d3215310075d67e3ed32a380ccf451c8" 

    }

BNB的交易记录太多,示例中随便选取了一个块区间打印。

 

想要知道交易信息,也可以由事件查询。

That's all.

简单代码,欢迎批评指正。

 


评论(5)问答(2)
  • TEJ 回复YGCool 2018-09-29 16:18:04

    不是大佬,简单代码,一开始没注意选错creater了,修改后的放在github上了

  • YGCool 2018-09-29 14:59:40

    膜拜大佬!

  • TEJ 2018-09-28 16:18:10

    整理后的代码放在这里:https://github.com/ENEcycle/Kerc

  • TEJ 2018-09-28 15:36:04

    修改后:instance.getPastEvents( "Transfer", { fromBlock: 3978343, toBlock: 4191343 }, function(error, events) { if (error) { console.log(error); } else { events.forEach(event => { // console.log(event

  • TEJ 2018-09-28 15:01:19

    刚才又仔细看了下,BNB的创建者是0x00C5E04176d95A286fccE0E68c683Ca0bfec8454,TxHash:0x436fc7d21ed4a0a634f41b50ccb42fca12be7322de5bf9a20c97bdccbb5b2a04

首页 上一页 下一页 尾页 第1页 共1页

请先登录或注册

请先登陆或注册

相关推荐

第四十九篇 solidity学习笔记(1)

本文主要内容来自:https://solidity-cn.readthedocs.io/zh/latest/智能合约可以简单的理解为一段可执行的程序片段,具体的代码经过 Solidity 编写之后,发......
找开发兼 · 2019-09-21
104阅读 · 0赞赏 · 0问答

remoteaddr,net:当epoll失败时不接受conn #

您使用的是什么版本的Go(go version)?去版本go1.12.9 linux / amd64$ go版本此问题是否与最新版本一起重现?代码审查您使用的是哪种操作系统和处理器架构(go env)......
calculator · 2019-09-20
189阅读 · 0赞赏 · 0问答

ArcBlock在Live Blockchain中宣布了新功能和产品更新

领先的区块链平台ArcBlock和3.0生态系统在上海举办了Blockchain Odyssey活动“未来的BUIDL”活动 中国。ArcBlock的团队由代表广泛行业和领先公司的合作伙伴,投资者,媒......
mON · 2019-09-19
211阅读 · 0赞赏 · 0问答

Polkadot:Polkadot区块探索

Edgeware区块链的推出于周日被竞争对手的链条所占据,被称为“成功的零日叉”。目前,替代版本领先8,300块,使其成为更强大的区块链。Edgeware是一种围绕空投构建的新型股权证明区块链- 加密......
Blockchain · 2019-09-18
192阅读 · 0赞赏 · 0问答

什么是数字货币挖矿?

加密货币挖掘的重要要素是能够进行点对点的非中心化工作,而不受第三方中央管理。挖掘币是一个过程。在这个过程中,用户之间的交易会被验证并创建新的区块,链接到公开的分类账中。这也是一种用于引入新硬币到现有的......
社区菲菲 · 2019-09-17
164阅读 · 0赞赏 · 0问答

什么是以太坊等离子体(Plasma)?

可扩展性是以太坊的主要关注点之一。目前,其网络在容量和速度方面面临的限制使其无法在全球范围内被更大规模地采用。以太坊等离子体(Plasma)是由以太坊联合创始人Vitalik Buterin和Jose......
开发者小白 · 2019-09-17
164阅读 · 0赞赏 · 0问答

TEJ

12835

LK币

70

粉丝

6

笔记

感谢"TEJ"

这篇精彩的笔记,目前已经帮助

  • 0
  • 3
  • 4
  • 2
  • 6
喜欢4
链客社群 加入

微博进入

商务合作>

广告投放>

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!