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