def send_block_to_all_peers(self, blocknum, block_data=None, test=False): print("in send_block_to_all_peers") if block_data is None: data = json.dumps(get_block(blocknum)) else: data = block_data for peer_url in get_env('peers').split(','): if test: print(requests.post(peer_url).json()) else: print(self.send_block(blocknum, peer_url).json()) print("sent block")
from flask import Flask, jsonify, request from Transaction import Transaction from Mempool import Mempool from envlib import get_env import json app = Flask(__name__) mempool = Mempool() @app.route("/receive_tx", methods=['POST']) def receive_tx(): print(request.form) tx_data = request.json tx = Transaction.from_json(tx_data) if tx.verify(): mempool.push_transaction(tx) return jsonify('received') else: raise NotImplementedError("Not sure what to do if tx is not valid") @app.route("/get_txs", methods=['GET']) def get_txs(): txs_as_json = map(lambda tx: tx.default(), mempool.get_all_transactions()) return jsonify(list(txs_as_json)) if __name__ == '__main__': app.run(debug=True, port=get_env('mempoolport', 5000))
def create_coinbase_tx(): ts = time.time() inputs = Inputs([Input('', '', '', '')]) outputs = Outputs([Output(get_env('my_address', ''), 25)]) return Transaction(inputs, outputs, ts)
def get_transactions(): json_txs = requests.get('127.0.0.1:' + str(get_env('mempoolport')) + "/get_txs").json
def receive_tx(): headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} return requests.post('127.0.0.1:' + get_env('mempoolport') + "/receive_tx", data=request.json, headers=headers)
def peers(self): for peer_url in get_env('peers').split(','): yield peer_url
@app.route("/receive_block/<blocknum>", methods=['POST']) def receive_block(blocknum): print("at receive_block") block_data = request.json.get('block_data') node.prosses_received_block(blockdata) # send_block_to_all_peers(blocknum, block_data=block) TODO: don't uncomment until code there to stop sending in an endless recursive manner return jsonify('received') @app.route("/latest_block", methods=['GET']) def latest_block(): return jsonify(get_current_block_num() - 1) @app.route("/send_block/<blocknum>", methods=['POST']) def send_block(blocknum): print("at send_block") print(request.form) block = request.json.get('block_data', None) node.send_block_to_all_peers(blocknum, block_data=block) # send_block_to_all_peers(blocknum, block_data=block) TODO: don't uncomment until code there to stop sending in an endless recursive manner return jsonify('received') if __name__ == '__main__': node = Node() node.catch_up_from_peers() app.run(debug=True, port=get_env('port'))