Solidity

代理的常量可以從它的實現合約中訪問嗎?

  • July 30, 2022

我試圖了解這是否可能:

contract Proxy {
   constant string greeting = "hello world";

   fallback(){
       // delegates to ImplementationForProxy
   }
}
contract ImplementationForProxy {

   function sayHello(){

       // Compiler doesn't know what "greeting" is
       // but is there a different way of accessing it?

       return greeting; 
   }
}

小笨蛋:聲明常量的正確方法是string constant greeting:)

關於這個問題:簡短的回答是否定的。常量在編譯時進行優化,並作為程式碼的一部分儲存。該實現與代理共享儲存,但它們具有不同的程式碼。

如果您想與代理共享一個常量,您可以創建一個Constants.sol包含以下內容的文件,並將其導入到代理和實現的文件中。

常量.sol 文件:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

string constant greeting = "hello world";

引用自:https://ethereum.stackexchange.com/questions/132710