前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2.4 添加节点通信功能

2.4 添加节点通信功能

作者头像
Meet相识
发布2018-09-12 17:08:20
6030
发布2018-09-12 17:08:20
举报
文章被收录于专栏:技术专栏技术专栏

2.4 添加节点通信功能

代码语言:javascript
复制
注:由于这里主要以实现区块链基本原理为目的,所以并没有对Flask进行过多设计和封装,敬请谅解
  • 使用Flask启动web服务器

项目结构如下

代码语言:javascript
复制
├── Pipfile
├── Pipfile.lock
├── __pycache__
├── app
│   ├── __init__.py
│   ├── blockchain
│   │   ├── __init__.py
│   │   └── blockchain.py # 区块链核心结构实现
│   ├── settings.py
│   └── web
│   ├── __init__.py
│   └── communication.py # 路由文件
└── blockchain.py # 节点启动
代码语言:javascript
复制
from flask import Flask

__author__ = "gaowenfeng"


def create_app():
app = Flask(__name__)
register_blueprint(app)

return app


def register_blueprint(app):
from app.web import web
app.register_blueprint(web)
代码语言:javascript
复制
from app import create_app

__author__ = "gaowenfeng"

app = create_app()

if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
  • 实现添加交易接口
代码语言:javascript
复制
@web.route('/transactions/new', methods=['POST'])
def new_transaction():
values = request.get_json()
required = ['sender', 'recipient', 'amount']
if values is None or not all(k in values for k in required):
return "Missing values", 400

index = block_chain.new_transaction(values['sender'],
values['recipient'],
values['amount'])

response = {'message': f'Transaction will be add to Block {index}'}
return jsonify(response), 201
  • 实现挖矿接口
代码语言:javascript
复制
@web.route('/mine', methods=['GET'])
def mine():
last_block = block_chain.last_block
last_proof = last_block['proof']
proof = block_chain.proof_of_work(last_proof)

block_chain.new_transaction(sender='0', recipient=node_identifier, amount=1)
block = block_chain.new_block(proof, None)

response = {
'message': 'New Block Forged',
'index': block['index'],
'transactions': block['transactions'],
'proof': block['proof'],
'previous_hash': block['previous_hash']
}

return jsonify(response), 201
  • 实现获取区块链信息的接口
代码语言:javascript
复制
@web.route('/chain', methods=['GET'])
def full_chain():
response = {
'chain': block_chain.chain,
'length': len(block_chain.chain)
}

return jsonify(response), 200
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.4 添加节点通信功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档