Exemplo n.º 1
0
    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)
Exemplo n.º 4
0
 def get_transactions():
     json_txs = requests.get('127.0.0.1:' + str(get_env('mempoolport')) + "/get_txs").json
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
 def peers(self):
     for peer_url in get_env('peers').split(','):
         yield peer_url
Exemplo n.º 7
0

@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'))