區塊鏈入門--原來利用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]