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,也有同样的问题,一直在浏览,运气不好。我也不认为这是可能的。