闲的没事,学了哈python。造个车轮。。。
trx 的扫块,基于 api.trongrid.io。 api 的,可监控用户地址 USDT 转账。
合约一换。。。其他的也可以
python2.7 。。。。话说学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)我不管,我最帅,我是你们的小可爱。











