アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【仮想通貨Ubuntu
【Solidity】Error: Expected '{' but got 'constant'やError: Source file requires different compiler versionと言われる場合
POSTED BY
2023-03-22

Solidityを始めようと検索してあまたサイトのサンプルコードをそのまま貼り付けてコンパイルすると表題のエラーが出る。
おそらく以下のようなサンプルコードであると思われる。

sourcesolidity-sample-0.4.solGitHub Source
pragma solidity ^0.4.0;
contract SingleNumRegister {
    uint storedData;
    function set(uint x) public{
        storedData = x;
    }
    function get() public constant returns (uint retVal){
        return storedData;
    }
}

これはバージョン0.4の書き方で、現在のコンパイラバージョンは0.8であるので文法も違いエラーになる。
solidity 0.8で正常にコンパイルするには、以下のように修正する。

sourcesolidity-sample-0.8.solGitHub Source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SingleNumRegister {
    uint storedData;
    function set(uint x) public {
        storedData = x;
    }
    function get() public view returns(uint) {
        return storedData;
    }
}

pragmaで宣言するのは0.8で、constantはviewに変更など、細かなところが変わっている。

solc --abi --bin solidity-sample-0.8.sol

======= solidity-sample-0.8.sol:SingleNumRegister =======
Binary:
608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806360fe47b11461003b5780636d4ce63c14610057575b600080fd5b610055600480360381019061005091906100c3565b610075565b005b61005f61007f565b60405161006c91906100ff565b60405180910390f35b8060008190555050565b60008054905090565b600080fd5b6000819050919050565b6100a08161008d565b81146100ab57600080fd5b50565b6000813590506100bd81610097565b92915050565b6000602082840312156100d9576100d8610088565b5b60006100e7848285016100ae565b91505092915050565b6100f98161008d565b82525050565b600060208201905061011460008301846100f0565b9291505056fea264697066735822122079735be7604de0450bfde099a98599f2bc88bd8cff4ff4661b470677c03e27ab64736f6c634300080d0033
Contract JSON ABI
[{"inputs":[],"name":"get","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"}]
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】