区块链入门--原来利用Python-flask框架搭建一个区块链服务竟然如此简单!!!

区块链入门--原来利用Python-flask框架搭建一个区块链服务竟然如此简单!!!

    • 前言
    • Python-Flask借助FISCO-BCOS开发区块链服务
    • 关于作者

前言

FISCO-BCOS/python-sdk是一个十分优秀的区块链项目,你可以通过这个区块链机制搭建你的区块链项目。
FISCO-BCOS/python-sdk

下面我会用Python-Flask开发作为例子,带着大家实现调用HelloWorld合约的功能。

Python-Flask借助FISCO-BCOS开发区块链服务

step1 进入容器

docker run -it -p 20200:20200 -p 80:80 --name flask_web fiscoorg/playground:python_sdk

step2 启动节点

bash /root/fisco/nodes/127.0.0.1/start_all.sh

step1中的20200端口就是step2中启动节点的端口
默认为 20200 30300 8545 端口
需要注意的是: 如果是docker启动服务 必须为"物理暴露"端口,光光逻辑暴露是行不通的

step3 部署HelloWorld合约

$ ./console.py deploy HelloWorld save 

INFO >> user input : ['deploy', 'HelloWorld', 'save']

backup [contracts/HelloWorld.abi] to [contracts/HelloWorld.abi.20190807102912]
backup [contracts/HelloWorld.bin] to [contracts/HelloWorld.bin.20190807102912]
INFO >> compile with solc compiler
deploy result  for [HelloWorld] is:
 {
    "blockHash": "0x3912605dde5f7358fee40a85a8b97ba6493848eae7766a8c317beecafb2e279d",
    "blockNumber": "0x1",
    "contractAddress": "0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce",
    "from": "0x95198b93705e394a916579e048c8a32ddfb900f7",
    "gasUsed": "0x44ab3",
    "input": "0x6080604052...省略若干行...c6f2c20576f726c642100000000000000000000000000",
    "logs": [],
    "logsBloom": "0x000...省略若干行...0000",
    "output": "0x",
    "status": "0x0",
    "to": "0x0000000000000000000000000000000000000000",
    "transactionHash": "0xb291e9ca38b53c897340256b851764fa68a86f2a53cb14b2ecdcc332e850bb91",
    "transactionIndex": "0x0"
}
on block : 1,address: 0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce 
address save to file:  bin/contract.ini

通过部署HelloWorld合约,我们即得到了HelloWord合约部署的地址。我们需要通过这个地址调用函数接口

step4 在/python-sdk文件夹下编辑app.py

vi app.py
# -*- coding:utf-8 -*-
from client.common import transaction_common
from flask import Flask, request 
from jinja2 import escape

app = Flask(__name__)

tx_client = transaction_common.TransactionCommon("0x2d1c577e41809453c50e7e5c3f57d06f3cdd90ce","contracts","HelloWorld")
# tx_client = transaction_common.Transaction_Common("地址","合约路径","合约名称")

@app.route('/')
def index():
    '''
    调用get接口,获得HelloWorld的字符串
    '''
    new_str = request.args.get('new_str')
    # 通过new_str的值更新HelloWorld的字符串
    if new_str:
        tx_client.send_transaction_getReceipt("set",(new_str,))
        # 若new_str不为空则更新字符串
    return escape(str(tx_client.call_and_decode("get")))

if __name__  == '__main__':            
    app.run(host="0.0.0.0", port=80) 

step5 安装app.py依赖/运行程序

pip install flask
python app.py

这样就通过Python-Flask框架实现了调用HelloWorld合约–并通过调用get接口查看字符串和调用set接口更新字符串。

在这里我十分期待有更多的同学参与其中,借助FISCO-BCOS/python-sdk来搭建出更多有趣好玩的开源项目

关于作者

区块链入门--原来利用Python-flask框架搭建一个区块链服务竟然如此简单!!!_第1张图片

如对这个"盒子"有更多的问题,请联系我[email protected]

你也可以通过 github or csdn 关注我的动态

你可能感兴趣的:(区块链,Python,Docker)