Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ethereum 自动编译和部署以太坊毒蛇智能合约_Ethereum - Fatal编程技术网

Ethereum 自动编译和部署以太坊毒蛇智能合约

Ethereum 自动编译和部署以太坊毒蛇智能合约,ethereum,Ethereum,有没有办法编译Viper智能合约并将其自动部署到某个自定义链(而不是来自ethereum.tools的tester链) 根据我找到的和两篇文章(和),最好的选择是编译contract,然后手动插入geth 有人能分享他们的解决方案吗 如您提供的中所述-您可以通过使用库和库本身来实现它。 下面是一个脚本示例,它可能会满足您的需要: 从web3导入web3,HTTPProvider 从viper导入编译器 从web3.contract导入简明合同 从时间上导入睡眠 示例_contract=open(

有没有办法编译Viper智能合约并将其自动部署到某个自定义链(而不是来自ethereum.tools的tester链)

根据我找到的和两篇文章(和),最好的选择是编译contract,然后手动插入geth

有人能分享他们的解决方案吗

如您提供的中所述-您可以通过使用库和库本身来实现它。
下面是一个脚本示例,它可能会满足您的需要:

从web3导入web3,HTTPProvider
从viper导入编译器
从web3.contract导入简明合同
从时间上导入睡眠
示例_contract=open('./path/to/contract.v.py',r')
contract\u code=示例\u contract.read()
示例_contract.close()
cmp=compiler.compiler()
contract\u bytecode=cmp.compile(contract\u code.hex())
合同abi=cmp.mk全签名(合同代码)
web3=web3(HTTPProvider('http://localhost:8545'))
web3.personal.unlockAccount('account\u addr','account\u pwd',120)
#实例化并部署契约
合同字节码=web3.eth.contract(合同abi,字节码=contract字节码)
#从部署的协定获取事务哈希
tx\u hash=contract\u bytecode.deploy(事务={'from':'account\u addr','gas':410000})
#等待合同延期
i=0
当我<5时:
尝试:
#获取发送收据以获取合同地址
tx\u receive=web3.eth.getTransactionReceive(tx\u散列)
合同地址=发送收据['contractAddress']
中断#如果成功,则退出循环
除:
打印(“读取{}次失败”。格式(i+1))
睡眠(5+i)
i=i+1
如果i>=5:
引发异常(“无法等待部署合同”)
#简明模式下的契约实例
contract\u instance=web3.eth.contract(contract\u abi,contract\u address,ContractFactoryClass=concisecContract)
#调用契约方法
打印('Contract value:{}'。格式(Contract\u实例。some\u方法())