元宇宙织梦网(区块链大数据 心想梦成:吃饭赚钱 睡觉赚钱 做梦赚钱)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

社区广播台

查看: 458|回复: 0

本文提出了一种分析EOS主网数据的方法

[复制链接]
发表于 2018-6-24 02:45:11 | 显示全部楼层 |阅读模式
本帖最后由 eldkl1637 于 2018-6-24 02:47 编辑

# 分析EOS主网数据本文提出了一种分析EOS主网数据的方法  cleos命令行查询block返回的数据是json格式  ```$ cleos get block 1{  "timestamp": "2018-06-08T08:08:08.500",  "producer": "",  "confirmed": 1,  "previous": "0000000000000000000000000000000000000000000000000000000000000000",  "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000",  "action_mroot": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",  "schedule_version": 0,  "new_producers": null,  "header_extensions": [],  "producer_signature": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne",  "transactions": [],  "block_extensions": [],  "id": "00000001405147477ab2f5f51cda427b638191c66d2c59aa392d5c2c98076cb0",  "block_num": 1,  "ref_block_prefix": 4126519930}```可以直接将数据导入MongoDB  ```#!/usr/bin/env python3# coding:utf-8import requestsimport jsonfrom pymongo import MongoClienteos= MongoClient('127.0.0.1', 27017).eos.eosurl = 'http://127.0.0.1:8888/v1/chain/get_block'blockid = 1while True:    print(blockid)    payload = {'block_num_or_id': blockid, }    r = requests.post(url, data=json.dumps(payload), timeout=20)    j = json.loads(r.text)    eos.insert(j)    blockid += 1    if blockid > 200000:        break```导入完成后,建立索引  db.eos.ensureIndex({"block_num": 1},{unique: true})db.eos.ensureIndex({"transactions.trx.transaction.actions.name": 1})...比如查询EOS主网发行了哪些代币  这里假设使用的是eosio.token合约  包含create、issue、transfer方法  data里包含maximum_supply  ```#!/usr/bin/env python3# coding:utf-8from pymongo import MongoClienteos = MongoClient('127.0.0.1', 27017).eos.eosq = eos.find({"transactions.trx.transaction.actions.name":"create"})cnt = 0for x in q:    for t in x['transactions']:        try:            for a in t['trx']['transaction']['actions']:                if a['name'] == 'create':                    print(x['block_num'])                    print(a['account'])                    print(a['data']['maximum_supply'])                    print('')                    cnt += 1        except Exception as e:            passprint(cnt)```还可以进行更多复杂的查询  比如账号、转账、合约、资源等  

原文 200227vbiiuzi73h4fibf3.jpg

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表