我正在开发一个solidity智能合约,并通过python代码进行部署,该代码通过命令行在brownie中运行。此外,我正在开发一个带有typescript的前端dApp,用于交互和部署这些合同。使用useDApp可以让我与已经部署的合约进行交互,但我还没有弄清楚如何通过前端部署这些合约。
简而言之;deploy.py";代码有一个部署solidity代码的函数,它将一些变量传递给构造函数。它运行良好。
在应用程序的前端(打字稿(,我有一个表格,用户可以填写,然后当他们点击";发送";按钮,这些字段将变为变量。我现在所需要的就是将这些变量传递给";deploy.py";文件,这样它就可以将它们强制转换为solidity构造函数,当然,还可以通过brownie部署契约。
更新:
发现更简单的方法是忘记python部分,直接使用ethers.js ContractFactory部署合同。虽然直到现在都无法解决,但我正在解决的路上。
让前端与python后端对话的唯一方法是使用Flask创建一个restful api。所以当你提交表单时,你会向python服务器发送一个发布请求,python flask会用request.json
提取发布的数据
from flask import Flask
from flask import request
app = Flask(__name__)
# allow only post request here
@app.route('/deploy_contract_route', methods = ['POST'])
def deploy_contract():
content_type = request.headers.get('Content-Type')
if (content_type == 'application/json'):
json = request.json
# json includes the post data. now you past this to deploy request. you get individual fields data
deploy_contract_script(pass_args_here):
# what ever deploying logic runs here
return value_to_front_end
else:
return 'Content-Type not supported!'