导航

trx扫块监听USDT转账

#1
闲的没事,学了哈python。造个车轮。。。
trx 的扫块,基于 api.trongrid.io。 api 的,可监控用户地址 USDT 转账。
合约一换。。。其他的也可以
python2.7 。。。。话说学python。。。这个语法 让人头疼
import urllib
import json
import gc
import os
import thread
import time
import re
from decimal import *
from contextlib import closing


# Url Get 请求
def url_request(url):
    res = None
    try:
        with closing(urllib.urlopen(url)) as resp:
            res = resp.read()
    except:
        pass
    return res



# 获取 最新的 已确认区块号
def get_blocks_now():
    while True:
        res = None
        res1 = None
        try:
            res = json.loads(url_request("https://api.trongrid.io/v1/blocks/latest/events?only_confirmed=true&limit=1"))
            if res.has_key('success') == True and res['success'] == True and len(res['data']) > 0:
                res1 = res['data'][0]['block_number']
                del res
                gc.collect()
                break
            else:
                del res
                del res1
                gc.collect()
        except:
            pass
    return res1


# 获取区块转账内容
def get_block_data(url):
    while True:
        res = None
        res1 = None
        try:
            with closing(urllib.urlopen(url)) as resp:
                res = resp.read()
            res = json.loads(res)
            if res.has_key('success') == True and res['success'] == True:
                if res['meta'].has_key('links') == True and res['meta']['links'].has_key('next') == True:
                    res1 = res['data'] + get_block_data(res['meta']['links']['next'])
                    del res
                    gc.collect()
                    return res1
                else:
                    res1 = res['data']
                    del res
                    gc.collect()
                    return res1
            else:
                del res
                del res1
                gc.collect()
        except:
            pass


# 扫描 更新
def scan_block(block):
    print("[*] Scan Block Number:"+block)
    block_data = get_block_data("https://api.trongrid.io/v1/blocks/"+block+"/events?limit=200&only_confirmed=true")
    for i in range(len(block_data)):
        if block_data[i].has_key('contract_address') == True and block_data[i]['contract_address'] == 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' and block_data[i].has_key('event_name') == True and block_data[i]['event_name'] == 'Transfer':
            if block_data[i].has_key('result') == True:
                t_from = None
                t_to = None
                t_value = None
                tx_id = None
                block_number = None
                if block_data[i].has_key('block_number') == True:
                    block_number = block_data[i]['block_number']
                if block_data[i]['result'].has_key('from') == True:
                    t_from = block_data[i]['result']['from']
                    t_from = t_from.replace('0x','41')
                if block_data[i]['result'].has_key('to') == True:
                    t_to = block_data[i]['result']['to']
                    t_to = t_to.replace('0x','41')
                if block_data[i]['result'].has_key('value') == True:
                    t_value = block_data[i]['result']['value']
                    t_value = re.findall(r"\d{1,}?\.\d{6}", str(cText.divide(Decimal(t_value), Decimal(1000000)).quantize(Decimal("0.000000"))))[0]
                    #str(round(float(t_value) / 1000000, 6))
                if block_data[i].has_key('transaction_id') == True:
                    tx_id = block_data[i]['transaction_id']
                Transfer_data(block_number,t_from,t_to,t_value,tx_id)
                del t_from
                del t_to
                del t_value
                del tx_id
                del block_number
        
    #print("[*] Block Number OK:"+block)
    del block_data
    gc.collect()
    thread.exit()


def Transfer_data(block_number,t_from,t_to,t_value,tx_id):
    print(block_number,t_from,t_to,t_value,tx_id)
   




cText = Context()
new_block = 0
old_block = get_blocks_now()
while True:
    new_block = get_blocks_now()
    #print("new_block:"+str(new_block))
    #print("old_block:"+str(old_block))
    if new_block > old_block:
        i = 0
        new_block - old_block
        while i < new_block - old_block:
            i = i + 1
            thread.start_new_thread(scan_block,(str(old_block + i),))
            time.sleep(0.005)
            #print(old_block + i)
        old_block = new_block
        
    del new_block
    time.sleep(1)
我不管,我最帅,我是你们的小可爱。
2023-06-06
#2
一般都是监控一个金额 30分钟有没有到账 有就判断到账
[img][/img]www.myqiu.org麦秋记
公众号myqiuji
2023-06-07
#3
这监听是所有钱包软件的地址都能监听吗?还有别的网站能监听吗?
2023-06-07
#4
python语法还蛋疼么。。已经算是最简单的语法了,除了缩进一开始会让人不适应,其他都没毛病
另外现在都是python3了,建议直接上python3
昊天金阙无上至尊自然妙有弥罗至真玉皇大天尊玄穹高上帝