スマートコントラクト言語Solidity:導入からサンプルコードまで徹底解説
Solidityは、ブロックチェーンの世界で「スマートコントラクト」という特別なプログラムを書くための言語です。ソフトウェアエンジニアの皆さんにとって、新しい技術を学ぶことはワクワクする挑戦ですよね。Solidityがどのように役立つのか、一緒に見ていきましょう!
ソフトウェアエンジニアの視点から見ると、Solidityは以下のような点で非常に興味深い言語です。
確実な実行と信頼性
Solidityで書かれたスマートコントラクトは、一度ブロックチェーンにデプロイされると、誰もその動作を止めることができません。また、改ざんも非常に困難です。これは、特定の条件下で必ず実行されるプログラムを構築する際に、大きなメリットとなります。
独自のエコシステム
Solidityは、イーサリアムという巨大なブロックチェーンネットワーク上で動作します。このネットワークには、多くの開発者、ユーザー、そしてツールが存在します。Solidityを学ぶことは、この活気あるエコシステムに参加することを意味します。
金融・非金融分野での可能性
スマートコントラクトは、仮想通貨の送金だけでなく、不動産登記、サプライチェーンの追跡、ゲーム内のアイテム管理など、様々な分野で活用されています。Solidityを学ぶことで、これらの新しい分野で活躍できる可能性が広がります。
Solidityを始めるのはとても簡単です。特別な環境を構築する必要はありません。ブラウザで使える統合開発環境「Remix」を使ってみましょう。
Remixの使い方
Remixの公式サイトにアクセスします。 https://remix.ethereum.org/
画面左の「File Explorer」で「contracts」フォルダを開き、「SimpleStorage.sol」というファイルを作成します。
サンプルコード
以下に、シンプルなスマートコントラクトの例を示します。これは、数値を保存して取得するだけの簡単なプログラムです。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 public storedData;
function set(uint256 x) public {
storedData = x;
}
function get() public view returns (uint256) {
return storedData;
}
}
コードの解説
// SPDX-License-Identifier: MIT
ライセンス情報を指定します。
pragma solidity ^0.8.0;
Solidityのバージョンを指定します。
contract SimpleStorage { ... }
contractキーワードでスマートコントラクトを定義します。
uint256 public storedData;
uint256型の公開変数storedDataを宣言します。uint256は256ビットの符号なし整数です。
function set(uint256 x) public { ... }
setという名前の関数を定義します。publicは、誰でもこの関数を呼び出せることを意味します。この関数はstoredDataの値をxに更新します。
function get() public view returns (uint256) { ... }
getという名前の関数を定義します。viewは、この関数が状態を変更しないことを意味します。returns (uint256)は、uint256型の値を返すことを示します。
コンパイルとデプロイ
Remixの画面左にある、コンパイラアイコンをクリックします。
「Compile SimpleStorage.sol」ボタンをクリックします。
コンパイルが成功したら、今度は「Deploy & run transactions」アイコンをクリックします。
「Environment」を「Remix VM (London)」に設定し、「Deploy」ボタンをクリックします。
デプロイが成功すると、画面下の「Deployed Contracts」に、SimpleStorageというコントラクトが表示されます。
コントラクトを開くと、setとgetというボタンが表示されます。
getボタンをクリックすると、現在のstoredDataの値(初期値は0)が表示されます。
setボタンの横にある入力欄に数字(例
123)を入力し、setボタンをクリックします。
再度getボタンをクリックすると、値が123に更新されていることが確認できます。