File size: 2,320 Bytes
17de07a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import config, time, ccxt
from flask import Flask, render_template, request, flash, redirect, url_for
from werkzeug.urls import url_parse
from web3 import Web3
import os
import requests
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__, template_folder="templates")
app.config['SECRET_KEY'] = 'somerandomstring'
w3 = Web3(Web3.HTTPProvider(os.getenv("INFURA_URL")))
def get_ethereum_price():
binance = ccxt.binance()
ethereum_price = binance.fetch_ticker('ETH/USDC')
return ethereum_price
@app.route("/")
def index():
eth = w3.eth
ethereum_price = get_ethereum_price()
latest_blocks = []
for block_number in range(eth.block_number, eth.block_number-10, -1):
block = eth.get_block(block_number)
latest_blocks.append(block)
latest_transactions = []
for tx in latest_blocks[-1]['transactions'][-10:]:
transaction = eth.get_transaction(tx)
latest_transactions.append(transaction)
current_time = time.time()
return render_template('index.html',
miners=config.MINERS,
current_time=current_time,
eth=eth,
ethereum_price=ethereum_price,
latest_blocks=latest_blocks,
latest_transactions=latest_transactions)
@app.route("/address")
def address():
address = request.args.get('address')
ethereum_price = get_ethereum_price()
try:
address = w3.toChecksumAddress(address)
except:
flash('Invalid address', 'danger')
return redirect('/')
balance = w3.eth.get_balance(address)
balance = w3.fromWei(balance, 'ether')
return render_template('address.html', ethereum_price=ethereum_price, address=address, balance=balance)
@app.route("/block/<block_number>")
def block(block_number):
block = w3.eth.get_block(int(block_number))
return render_template('block.html', block=block)
@app.route('/transaction/<hash>')
def transaction(hash):
tx = w3.eth.get_transaction(hash)
value = w3.fromWei(tx.value, 'ether')
receipt = w3.eth.get_transaction_receipt(hash)
ethereum_price = get_ethereum_price()
gas_price = w3.fromWei(tx.gasPrice, 'ether')
return render_template('transaction.html', tx=tx, value=value, receipt=receipt, gas_price=gas_price, ethereum_price=ethereum_price)
app.run() |