Solidity
我無法編譯我的契約。這個備份功能有什麼問題?
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
但是,以上版本,您需要進行一些更改,包括但不限於:
- 更改
calldatasize
為calldatasize()
內置函式- 更改
returndatasize
為returndatasize()
內置函式- 更改
gas
為gas()
內置函式- 更改
function() payable external {
為fallback() payable external {
您介意正確粘貼程式碼並提供更多資訊嗎?您收到什麼錯誤消息?這將幫助我確定確切的問題。
您需要為函式提供名稱