当我尝试放置字符串实例时,在混合环境中出现标题中显示的错误消息。我使用的是0.8.0版本的solid。我如何将字符串变量从我的主合同的'vault'合同实例中放置,而不会得到错误(如标题所示)
下面是金库合同:
contract vault{
string public vaultKey = "vault";
string public inputKey = "";
bool public valid = false;
constructor(string memory _inputKey) {
inputKey = _inputKey;
valid = keccak256(abi.encodePacked((inputKey))) == keccak256(abi.encodePacked((vaultKey)));
}
function getValidity()public returns(bool){
return valid;
}
}
下面的是将要使用的主要合同:
contract manager{
// most of the irrelevant lines of code have been removed
string public keyVal; //for vault
vault public securityVault;
constructor(string memory _vaultKey ){
keyVal = _vaultKey;
securityVault = vault(keyVal);
}
}
securityVault = vault(keyVal);
这一行试图在地址加载vault
合约keyVal
。因为你传递的是一个字符串,而不是一个地址。
如果您想将vault
契约部署到新地址,将字符串传递给构造函数,则需要使用new
关键字。
securityVault = new vault(keyVal);