币安(Binance)是一家领先的加密货币交易所,最近正在庆祝其部署 ERC20 以太坊合约满两周年。近日,Amerdata 对币安过去两年进行了回顾,并分析其代币 BNB的一些数据情况。
为了研究币安的数据指标,我们利用 Amberdata 的 API 获取了特定的区块链数据,以及对了解全局有帮助的聚合数据。大家可以学习以下方法,也可以用来评估你自己的以太坊应用。
分析总结
在以太坊上运行应用程序时,了解某些关键指标至关重要。例如:合约的用途是什么?代币持有者中有多少是鲸鱼(大户)?交易活动的特征是活跃交易还是长期持有?
我们通过已有的数据集来回答这些问题,并结合示例代码所运行的结果来深入了解币安。
诞生
我们先来看看部署合约的原始交易。
2017年7月5日,BNB 合约在被另一份合约部署在以太坊上。它采用标准的 ERC20,使用了 SafeMath、燃烧/冻结/解冻函数。
币安在以太坊上的第一个交易
1. 有多少人持有 BNB?
316124位。
在撰写本文时(2019-07-05)的统计数据是:
简单查询一下即可获取此数据:
// BNB Ethereum Addressconst address = ‘0xb8c77482e45f1f44de1745f52c74426c631bdd52’const url = `https://web3api.io/api/v1/addresses/${address}/information`axios.get(url, { headers: { ‘x-api-key’: AMBERDATA_API_KEY } }).then(res => { const d = res.data.payload console.log(‘Holders:’, d.numHolders)})
请参阅此处的文档→
https://docs.amberdata.io/reference#get-account-information
2. 随着时间的推移,供应和持有人发生了怎样的变化?
币安已有两年历史,历史数据有几个有趣的地方。
-
7月9日,99人作为首批持有人获得了 BNB 代币
-
2月26日,BNB 持有者从73,788人增加到295,362人
这是一个非常有特点的分布,是该代币生命周期中最大的变化。从那时起,持有量一直保持稳定,如上图所示。
在此总结中,我使用了带有聚合计数的历史数据:
// BNB Ethereum Addressconst address = ‘0xb8c77482e45f1f44de1745f52c74426c631bdd52’const url = `https://web3api.io/api/v1/tokens/${address}/supplies/historical`axios.get(url, { headers: { ‘x-api-key’: AMBERDATA_API_KEY } }).then(res => { const d = res.data.payload.data // console.log(d) Returns: // [ // { // date: 1501891200000, // holders: 1501, // circulating: “136000000000000000000000000”, // total: “200000000000000000000000000” // }, // … // ]
请参阅此处的文档→
https://docs.amberdata.io/reference#get-historical-token-supply
3. 持有人平均有多少 BNB?
因为 BNB 持有者数量庞大,我们来看看他们一共持有有多少 BNB 。这是检查代币持有分布的好方法,可以确保它不是一个空投的假代币。
下面的表格是一些简要说明,有包括大户的数据,也有排除了大户的数据。表格的最后一行很有趣:BNB 持有量小于 1000 的人,这些人是空投获得的 BNB 吗?看起来是一个低但半均匀的分布,否则的话应该是一个整数。
// BNB Ethereum Addressconst address = ‘0xb8c77482e45f1f44de1745f52c74426c631bdd52’const url = `https://web3api.io/api/v1/tokens/${address}/holders/latest`axios.get(url, { headers: { ‘x-api-key’: AMBERDATA_API_KEY } }).then(res => { const d = res.data.payload.records // Example data available: // address, tokens, percent, usd, usd_percent // 0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be, 4957651117594556779229397, 29.902264951823108156, 159052556.8653411416850106525770537555, 3.511693927250585177})
请参阅此处的文档 →
https://docs.amberdata.io/reference#get-token-holders
4. 大户占比多少?
以100万个代币和100万美元、10万个代币和10万美元两个标准为例。
下图按百分比显示所有代币持有量,外圆圈代表代币持有量超过100万个的持有人地址及其占比;内圆圈代表持有的 BNB 价值超过100万美元的持有人地址及其占比:
下图显示了10万个 BNB (外圆圈)和10万美元(内圆圈)的持有百分比:
在这些示例中,我们使用第2个问题中提到的数据集,过滤掉小的值并显示代币持有大户的百分比。数学公式很简单,对于每个超过定义阈值的持有者:
(代币持有量/总可用供应量) * 100% = 持有比例
请参阅此处的文档→
https://docs.amberdata.io/reference#get-token-holders
5. BNB 持有人还持有哪些其他代币?
因为这是一个交易所,所以看看其持有者还持有哪些代币会很有趣。这是一个了解哪些代币比较受欢迎、哪些代币交易量比较大等信息的一个渠道。但这些数据也有可能没有任何意义,甚至是假的。为了证明这一点,我用价格作为可交易的资产(并不是所有代币都有)的指标进行过滤。结果排名非常有趣:
该数据是通过使用第3个问题中生成的初始持有者地址列表,然后迭代每个持有者并映射/记录惟一的代币来实现。这个过程花了很长时间,因为有BNB的持有者太多了。下面的端点用于查看每个持有者的代币持有量:
// BNB Ethereum Addressconst address = ‘0xb8c77482e45f1f44de1745f52c74426c631bdd52’const url = `https://web3api.io/api/v1/addresses/${address}/tokens$`axios.get(url, { headers: { ‘x-api-key’: AMBERDATA_API_KEY } }).then(res => { const d = res.data.payload.records // Example data available: // address, tokens, percent, usd, usd_percent // 0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be, 4957651117594556779229397, 29.902264951823108156, 159052556.8653411416850106525770537555, 3.511693927250585177})
请参阅此处的文档→
https://docs.amberdata.io/reference#get-address-tokens
结论
这些数据只是冰山一角,但正如你所看到的,这是一个币安在以太坊发生的有趣故事。代码可在此处获得:
https://github.com/amberdata/amberdata-example-token-analysis
几个步骤,快速上手:
-
在Amberdata.io上注册
-
获取 Amberdata API 密钥
-
按照上面的示例进行操作
温馨提示:问题2和3需要一个专业版或按需使用的API密钥来获取。