Ethereum 是否有可能调用一个稳定的合同,使用它的存储,但传递msg.sender?
我有以下两份合同:Ethereum 是否有可能调用一个稳定的合同,使用它的存储,但传递msg.sender?,ethereum,solidity,evm,Ethereum,Solidity,Evm,我有以下两份合同: contract A { uint256 someData = 3 function foo() public view returns (uint256) { // return something based on msg.sender and someData } } contract B { A public a; function bar() public { // I'd like to call a.foo with
contract A {
uint256 someData = 3
function foo() public view returns (uint256) {
// return something based on msg.sender and someData
}
}
contract B {
A public a;
function bar() public {
// I'd like to call a.foo with msg.sender for this context
uint256 ret = a.foo()
}
}
如前所述,我想在B
的上下文中使用msg.sender
调用a.foo
,但我想在a的存储中使用someData
。这意味着使用delegatecall
将不起作用,因为它将使用B的存储进行A.foo
调用
有什么办法可以满足我的要求吗?问题在于“真正的”
A
已经部署在mainnet上,我无法改变它的编写方式。我认为目前还不可能做到这一点。我只是面临同样的问题,但没有找到任何解决办法。如果您可以从头开始创建一个新合同,并通过将所有代币转移到新地址,将其重新部署到mainnet上,那就更好了。Seconded,也有同样的问题,一直在浏览,运气不好。我也不认为这是可能的。