跟着浅浅学开发——链上监控小程序

看到人家欧科云链的链上天眼,浅浅就也想要做一个跟他们一模一样的社区天眼,初步规划是有三个步骤。

  • 获取全网地址和地址余额,并存入MySQL数据库
  • 通过微信小程序,实现地址余额查询
  • 实现监控地址大额异动的实时警报

目前浅浅社区数据库,已经处理200万条区块信息,获得超过20,000个主网地址,处理的程序我索性也开源啦:

使用的是 PlatON Python SDK

from client_sdk_python import Web3, HTTPProvider
from client_sdk_python.eth import PlatON
from hexbytes import HexBytes
import pymysql

# using mysql to save the address for platon by qianqian

db = pymysql.connect(host='你的数据库ip地址',
                     user='你的数据库用户名',
                     password='你的数据库密码',
                     database='连接的数据库名称')
cursor = db.cursor()

w3 = Web3(HTTPProvider("http://*.*.*.*:6789"))
platon = PlatON(w3)

for i in range(开始区块编号,结束区块编号):
  if platon.getBlock(i).gasUsed != 0:
    if platon.getTransactionByBlock(i,0).to == None:
      print("第",i,"个区块找不到接收地址")
      continue
    else:
      print("地址",i,"是:",platon.getTransactionByBlock(i,0).to)
      latAddress = platon.getTransactionByBlock(i,0).to
      sql_select = "SELECT * FROM `表名` WHERE 地址字段 = %s"
      cursor.execute(sql_select,latAddress)
      results = cursor.fetchall()
      if len(results) != 0 :
        print("该地址已存在了!")
      else:
        sql_insert = "INSERT INTO `表名` (地址字段) VALUES ('%s')" % (latAddress)
        cursor.execute(sql_insert)
        db.commit()
  else:
    print("第",i,"次的燃气为",platon.getBlock(i).gasUsed)
    continue

2 个赞

为什么要用if,不用其他的,这个循环太拉胯了。

用哪个?switch?还是其他的?

当然是用for了