アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【仮想通貨Ubuntu
【Solidity】Error: Expected '{' but got 'constant'やError: Source file requires different compiler versionと言われる場合
POSTED BY
2022-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"}]
ポスト投函型のお花よりも数倍のボリューム HitoHanaのお花の定期便
お気に入りのお花屋さんでお花を選ぶ楽しみをネットでも再現できるよう、 まずは季節のお花やお好みの色、ボ...READ MORE
Webサイト・データベースを遠隔バックアップ【torocca!】
Webサイトとデータベースのバックアップと復元を簡単、低価格で利用できます。  1)月額500円/25GB。簡単...READ MORE
雑誌でも話題!美容室・サロンシェアNo,1ブランドNobbyから誕生した【Nobby by T ESCOM】
◆あの、Nobby(ノビー)が作ったホームケアシリーズ◆ 国内約70%の美容室で使われているサロンシェアNO.1ブ...READ MORE
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

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