42 lines
990 B
Python
42 lines
990 B
Python
from sanic import Sanic
|
|
from sanic.response import json
|
|
from sqlalchemy import func
|
|
|
|
from database import Peer, db, reset_db
|
|
from tasks import initiate_node, peer_discovery
|
|
from mining import mining_controller
|
|
|
|
|
|
app = Sanic()
|
|
|
|
reset_db()
|
|
initiate_node(app)
|
|
|
|
app.add_task(peer_discovery(app))
|
|
app.add_task(mining_controller(app))
|
|
|
|
|
|
@app.route("/")
|
|
async def peers(request):
|
|
random_peers = db.query(Peer).order_by(func.random()).limit(256).all()
|
|
return json(random_peers)
|
|
|
|
|
|
@app.route("/transactions")
|
|
async def current_transactions(request):
|
|
if request.method == 'GET':
|
|
return json(app.blockchain.current_transactions)
|
|
elif request.method == 'POST':
|
|
return json({"text": "thanks for your transaction"})
|
|
|
|
|
|
@app.route("/blocks")
|
|
async def blocks(request):
|
|
# height = request.parsed_args['height']
|
|
random_blocks = app.blockchain.get_blocks()
|
|
return json(random_blocks)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run(debug=False, host="0.0.0.0", port=8080)
|