FISCO-BCOS/python-sdk是一个十分优秀的区块链项目,你可以通过这个区块链机制搭建你的区块链项目。
FISCO-BCOS/python-sdk
下面我会用Python-Flask开发作为例子,带着大家实现调用HelloWorld合约的功能。
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 关注我的动态