教你如何解析eth的区块信息,并保存所有的交易记录

欢迎一起交流:wx:54516204
在平常的工作和交流过程中,很多同学,总是想找一些接口,希望能查到以态链上的某个币种的所有交易信息,但目前在网上,提供这一类信息的网站比较少,有些甚至收比较高的费用,下面我简单的介绍一下,如何解析eth的区块信息,并提取我们需要的信息。
本人后台主要是用python,所以,下面以python为基础,提供一下用python如何解析区块信息的。下面是本人已经写好的程序,对程序做一些说明和注解,需要的同学,可以做一些参考。
首先,来一段eth接口说明的文件:

#encoding=utf-8

import os
import json
import random
import string
from web3 import Web3
# from web3.utils.encoding import (hexstr_if_str, to_bytes)
from eth_account import Account
from ethereum.tools import keys
from eth_keys import keys as ethkeys
from . import config
import requests
# from web3.middleware import geth_poa_middleware
from decimal import Decimal,getcontext
#上面有些引用是没有什么作用的,由于时间关系,这里就不做说明和删除了

class EthOP:
	#首先初始化一下eth的环境信息。
    def __init__(self,config):
        self.provider = Web3.HTTPProvider(config.eth_url)
        self.w3 = Web3(self.provider)
        # self.w3.middleware_stack.inject(geth_poa_middleware, layer=0)
    def load_keyfile(self,type,keyfile, password):
        '''加载钱包keyfile
        :param password: 密码
        :param filename: keyfile路径
        '''
        if type=='file':
            with open(keyfile, 'r') as f:
                keystore = json.loads(f.read())

                if not keys.check_keystore_json(keystore):
                    raise ValueError('invalid keyfile format')
                return keys.decode_keystore_json(keystore, password)
        else:
            try:
                return keys.decode_keystore_json(keyfile, password)
            except Exception as e:
                raise ValueError('invalid keyfile format',e.args)

    def get_random_letter(self,length):
        salt = ''.join(random.sample(string.ascii_letters + string.digits, length))
        return salt

    def get_new_address(self,password=None, filename=None):
        try:
            '''创建钱包keyfile
            '''
            if password==None:
                password=self.get_random_letter(8)

            account = Account.create('')
            private_key = account.privateKey
            address = account.address
            keyfile_json = keys.make_keystore_json(private_key, password, kdf='scrypt')
            keyfile_json['id'] = str(keyfile_json['id'], encoding='utf-8')
            keyfile_json['address'] = address

            
            private_key= ''.join(["%02X" % x for x in private_key]).strip()
            return {
   'address': address, 'privatekey': private_key,'keystore':keyfile_json,'password':password}
        except IOError as e:
            print(e)
        else:
            return address, private_key
        # finally:
        #     os.umask(oldumask)


    def get_address_privatekey(self,type,keystore,password):

        keystorehex=load_keyfile(type,keystore,password)
        private_key_bytes = hexstr_if_str(to_bytes, keystorehex)
        pk = ethkeys.PrivateKey(private_key_bytes)
        address = pk.public_key.to_checksum_address()
        private_key = ''.join(["%02X" % x for x in private_key_bytes]).strip()

        return  {
   'address':address,'privatekey':private_key}

    def get_balance(self
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值