我正试图通过布朗尼确定地使用“盐”来部署合同。我希望能做这样的事情:
>>> helloContract = Hello.deploy({'from':accounts[0],'salt':123456})更多详情:
例如,我能够确定地使用工厂合同和salt部署我的"Hello“合同,如下所示。
pragma solidity ^0.8.0;
contract Hello {
string public hello = "Hello";
}
contract HelloFactory {
function createHelloWithSalt ( uint _salt ) public returns (address) {
Hello helloContract = new Hello {salt: bytes32(_salt)} ();
return address(helloContract);
}
}使用上面的工厂,我可以在浏览器控制台中通过下面的代码决定性地创建Hello契约。
>>> HF = HelloFactory.deploy({'from':accounts[0]})
>>> hello = HF.createHelloWithSalt(123456,{'from':accounts[0]})
>>> # this works有什么方法可以让我在brownie中直接复制吗?
>>> Hello.deploy({'from':accounts[0],'salt':123456)
>>> # doesn't work发布于 2023-03-06 14:07:06
这是不可能的。CREATE2是为了使用{salt}特性而需要使用的操作码。当您从EOA (即没有工厂)部署契约时,您不使用此操作码,因此无法使用salt进行部署。
https://ethereum.stackexchange.com/questions/145743
复制相似问题