ブロックチェーンを複数のノードでつくらせる.各ノードの名前は localhost:5000, localhost:5001 などのようにドメイン名とポート番号にする.
# ノードの所有者 node_owner = sys.argv[2] print("node owner=", node_owner) @app.route('/nodes/add', methods=['POST']) def add_nodes(): values = request.get_json() address = values.get('nodes') if address is None: responce = { 'message': 'Missing node' } return jsonify(responce), 400 for k in address: url = urlparse(k) bc.nodes.append(url.netloc) responce = { 'message': 'New nodes added', 'nodes': bc.nodes } return jsonify(responce), 201 # host: localhost if __name__ == "__main__": app.run(port=int(sys.argv[1]))
1つのPC上で複数のノードをつくるには
> python hoge.py 5000 Sato (別のターミナルから) > python hoge.py 5001 Yamada
のように,ポートとノード所有者を入力して実行する.このままだとそれぞれのブロックチェーンがつくられるだけなので,まずは別ノードの存在を伝える必要がある.
> curl -X POST -H "Content-Type: application/json" -d "{\"nodes\": [\"http://localhost:5001\"]}" "http://localhost:5000/nodes/add" | jq
により,5000 のノードに対して 5001 のノードの存在を伝え,Blockchain.nodes に localhost:5001 を保存する.逆の場合も同様.
ノード間の同期は次回に行う.全体のコードも次回.