ITPub博客

首页 > IT职业 > IT生活 > 以太坊token持有情况分析跟踪

以太坊token持有情况分析跟踪

IT生活 作者:ciscoeden 时间:2021-09-09 09:31:45 0 删除 编辑

图片描述

analysis.png

背景

  • 最近很多企业都在做机器人(bot),像微软的小冰,微软的小度,包括我最近在用的小米的小爱,一方面是在趁热度提升自己公司的知名度,另一方面就是在收集用户的数据,提升模型的准确性。但是bot在金融领域的应用很少,更不用说在股市和虚拟货币市场领域。

  • 我的想法是这样的,对于虚拟货币市场的货币走势可以进行分析,当然这个分析可能意义不大,但是如果有很多小的点汇集在了一起,那整体的作用就不容忽视了。

工具

code for token 情况分析跟踪

  • 基于python3

  • 用flask暴露restful接口

  • 用beautifulsoup 作为html解析器

  • 接口一共有三个参数

  • address ->  是以太坊合约地址

  • page -> 以太坊某个合约地址的排名页码(固定每页显示50)

  • topN -> topN的持有量 ,最大为50

  • github链接

  • 主题流程

import requestsfrom bs4 import BeautifulSoupfrom flask import Flaskfrom flask import requestclass TokenHolder:
    
    def __init__(self,rank,address,balance,percentages):
        self.rank = rank
        self.address = address
        self.balance = balance
        self.prcentages = percentages    def __str__(self):
        return str(self.__dict__)    
def getSumPercentagesByAddressAndPage(contract_address,page,topN):
    url_prefix = "https://etherscan.io/token/generic-tokenholders2?a="
    url_suffix = "&s=1E%2b28&p="
    request_url = url_prefix + contract_address + url_suffix + str(page);
    print(request_url)
    page = requests.get(request_url)
    soup = BeautifulSoup(page.content, 'html.parser')    return getTopNSumPercentage(soup,topN)
  • 解析页面细节处理

def getTopNSumPercentage(soup,n):
    total = 0.0
    index = 1
    if n > 50:
        n = 50
    if n  n:            break
        percentages = str(row.find_all("td")[3].text)
        b = mapToFloat(percentages)
        total = total + b 
        index = index + 1
    return str(total*10) + "%"def getRankNDetail(n):
    total = 0.0
    index = 1
    if n > 50:
        n = 50
    if n 
  • 暴露接口

app = Flask(__name__)@app.route('/')def index():
    page = request.args.get('page', default = 1, type = int)
    address = request.args.get('address', default = '0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0', type = str)
    topN = request.args.get('topN', default = 50, type = int)    return getSumPercentagesByAddressAndPage(address,page,topN);if __name__ == '__main__':
    app.run(host='127.0.0.1',port=3366)
  • 可以看到Top50持有量达到了百分之82,可以实时观察这个数值来进行分析


    图片描述

    result.png



作者:freelands
链接:https://www.jianshu.com/p/99f1c53e9475

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4346/viewspace-2804315/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: PHP pear扩展包
请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    79
  • 访问量
    637