【Solidity】Error: Expected '{' but got 'constant'やError: Source file requires different compiler versionと言われる場合
POSTED BY
2023-03-22
2023-03-22
Solidityを始めようと検索してあまたサイトのサンプルコードをそのまま貼り付けてコンパイルすると表題のエラーが出る。
おそらく以下のようなサンプルコードであると思われる。
source | solidity-sample-0.4.sol | GitHub 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で正常にコンパイルするには、以下のように修正する。
source | solidity-sample-0.8.sol | GitHub 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"}]
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!ご連絡は以下アドレスまでお願いします★
☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】
【最近の記事】【全部の記事】
HomeBrewでApache2を入れて自動起動つきで動かしPHPモジュールと連携するmacOSに標準付属のApacheを自動起動つきで動かす
HomeBrewでPostgreSQLを入れて自動起動つきで動かす
Windows11でSSHポートフォワードでSamba(139)ポートをbindできないエラー
システムで予約済みのパーティションを更新できませんでした このPCは現在Windows11のシステム要件を満たしていません
ソースからインストールしたPHPにPDO版MySQLとPostgreSQLを組み込む
apt upgradeしたあとnvidia-smiがダメになった場合
PoA(Proof of Authority)=Clique(クリーク)=を使用してGethのプライベートネットワークを複数ノードで組む
Fatal: Failed to register the Ethereum service: ethash is only supported as a historical component of already merged networks
最新Node.js環境でプライベートブロックチェーンとNFTを構築する
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化するWindows版Google Driveが使用中と言われアンインストールできない場合
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Apache】サーバーに同時接続可能なクライアント数を調整する
PHPでメールの中身をフルに分解して出力する(日本語&添付ファイル対応)
PortForwarderでno hostkey algと言われ接続できない場合
Pythonで処理にかかった時間を計測するには
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
MatLab
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
OpenAI/ChatGPT
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
ドラレコ