Solidity

我無法編譯我的契約。這個備份功能有什麼問題?

  • October 28, 2022
function () payable external {
   address impl = methodsImplementations[msg.sig];
   require(impl != address(0x00), "Method not found. 404");
   
   assembly {
       let p := mload(0x40)
       calldatacopy(p, 0x00, calldatasize)
       let result := delegatecall(gas, impl, p, calldatasize, 0x00, 0x00)
       let size := returndatasize
       returndatacopy(p, 0x00, size)
       
       switch result
       case 0x00 { revert(p, size) }
       default { return(p, size) }
   }
}

我認為編譯器的版本不正確。這個備份函式只能與早期版本的solidity一起編譯。

我可能會說這pragma solidity >0.4.99 <0.6.0;會奏效。

0.6.0但是,以上版本,您需要進行一些更改,包括但不限於:

  • 更改calldatasizecalldatasize()內置函式
  • 更改returndatasizereturndatasize()內置函式
  • 更改gasgas()內置函式
  • 更改function() payable external {fallback() payable external {

您介意正確粘貼程式碼並提供更多資訊嗎?您收到什麼錯誤消息?這將幫助我確定確切的問題。

您需要為函式提供名稱

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