區塊鏈入門--原來利用Python-flask框架搭建一個區塊鏈服務竟然如此簡單!!!

區塊鏈入門--原來利用Python-flask框架搭建一個區塊鏈服務竟然如此簡單!!!

前言

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來搭建出更多有趣好玩的開源項目

關於作者

如對這個"盒子"有更多的問題,請聯繫我[email protected]

你也可以通過 github or csdn 關注我的動態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章