建议和反馈

请填写你的反馈内容

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

2018-09-28 ·4938次阅读 ·读完需要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页

请先登录或注册

请先登陆或注册

相关推荐

CasperLabs Highway 简介

首个验证有活性且安全的CBC Casper协议规范当我们提到共识协议,有两个安全属性至关重要:安全和活性。若协议不会做出前后矛盾的决定,则该协议是安全的;若协议最终一定会做出决定,则该协议是有活性的。......
CasperLabs · 2020-02-22
105阅读 · 0赞赏 · 0问答

跨链生态,应用为王——比特元的跨链生态发展

"跨链生态,应用为王"2019年跨链公链引领了区块链公链项目的发展,跨链价值也被行业认可、推崇,跨链技术也被行业公认为区块链3.0的发展方向。跨链技术概念大热的同时,我们也发现,真......
复杂美chain33 · 2020-02-20
368阅读 · 0赞赏 · 0问答

详细解释智能合约是什么?

智能合约是一种自我执行的软件,由计算机的P2P网络管理。智能合约是有效的权限管理工具,无需传统的法律合约即可为网络参与者之间的协议提供协调和执行框架。它们可用于形式化两方之间的简单协议,组织的章程或创......
社区菲菲 · 2020-02-17
410阅读 · 0赞赏 · 0问答

EOS和基本智能合约初学者指南

1.什么是Eosio?Eosio是一种软件,它引入了区块链架构,并声称是支持Dapps的去中心化操作系统,它是在开源MIT软件许可下开发的。Block.one开发了eosio软件,它是一家领先的区块链......
区块链网 · 2020-02-13
780阅读 · 0赞赏 · 0问答

智能合约的工作原理

智能合同(或cryptocontract)是一种计算机程序,其直接地和自动地控制数字资产的各方之间在一定条件下的转移。智能合约的工作方式与传统合约相同,同时还可以自动执行合约。智能合约是完全按照其创建......
论坛咸鸟 · 2020-02-07
884阅读 · 0赞赏 · 0问答

智能合约开发-创建并连接自定义权限

eos提供了灵活的权限系统。用户可以自己基于账号创建权限,然后将该权限连接到某个合约的某个行为上。即只有相应权限的用户才能执行某个合约。核心思想就是合约的发布者可以自己指定1、创建自定义权限创建权限前......
七乐彩 · 2020-02-07
792阅读 · 0赞赏 · 0问答

TEJ

12835

LK币

70

粉丝

6

笔记

感谢"TEJ"

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

  • 0
  • 4
  • 9
  • 3
  • 8
喜欢4
链客社群 加入

微博进入

商务合作>

广告投放>

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

联系方式:010-67707199

ICP备案号:京ICP备18032136号

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

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

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

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

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