初めてのスマート・コントラクトのデプロイ
イーサリアムブロックチェーン上で初めてのスマート・コントラクトをデプロイし、操作することに、あなたも私たちと同じようにワクワクしていることでしょう。
心配はいりません。これは初めてのスマート・コントラクトなので、ローカルのテストネットワークにデプロイします。そのため、デプロイに費用は一切かからず、好きなだけ試すことができます。
コントラクトの作成
最初のステップは、Remixにアクセス (opens in a new tab)して新しいファイルを作成することです。Remixインターフェースの左上部分で新しいファイルを追加し、任意のファイル名を入力します。
新しいファイルに、以下のコードを貼り付けます。
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.17;
contract Counter {
// カウント数を保持するためのunsigned int型のパブリック変数
uint256 public count = 0;
// カウンターをインクリメントする関数
function increment() public {
count += 1;
}
// カウント値を取得するための不要なゲッター
function getCount() public view returns (uint256) {
return count;
}
}
プログラミングに慣れている方なら、このプログラムが何をするものか簡単に推測できるでしょう。以下は行ごとの説明です。
- 4行目:
Counterという名前のコントラクトを定義します。 - 7行目: このコントラクトは、初期値が0の
countという名前の符号なし整数を1つ保存します。 - 10行目: 最初の関数は、コントラクトの状態を変更し、変数
countをincrement()(インクリメント) します。 - 15行目: 2番目の関数は、スマート・コントラクトの外部から
count変数の値を読み取るための単なるゲッター (getter) です。変数countをpublicとして定義しているため、本来これは不要ですが、例として示しています。
初めてのシンプルなスマート・コントラクトについては以上です。ご存知かもしれませんが、これはJavaやC++のようなOOP (オブジェクト指向プログラミング) 言語のクラスに似ています。それでは、このコントラクトを動かしてみましょう。
コントラクトのデプロイ
初めてのスマート・コントラクトを作成したので、次はそれをブロックチェーンにデプロイして動かせるようにします。
ブロックチェーンへのスマート・コントラクトのデプロイとは、実際には、コンパイルされたスマート・コントラクトのコードを含むトランザクションを、宛先を指定せずに送信することにすぎません。
まず、左側にあるコンパイルアイコンをクリックして、コントラクトをコンパイルします。
次に、コンパイルボタンをクリックします。
「Auto compile (自動コンパイル)」オプションを選択すると、テキストエディタで内容を保存するたびにコントラクトが常にコンパイルされるようになります。
その後、「Deploy & run transactions (デプロイとトランザクションの実行)」画面に移動します。
「Deploy & run transactions」画面に移動したら、コントラクト名が表示されていることを再確認し、「Deploy (デプロイ)」をクリックします。ページ上部に表示されているように、現在の環境は「JavaScript VM」です。これは、より速く、手数料なしでテストできるように、ローカルのテストブロックチェーン上でスマート・コントラクトをデプロイして操作することを意味します。
「Deploy」ボタンをクリックすると、下部にコントラクトが表示されます。左側の矢印をクリックして展開すると、コントラクトの内容が表示されます。ここには、変数counter、increment()関数、およびゲッターであるgetCounter()があります。
countまたはgetCountボタンをクリックすると、実際にコントラクトのcount変数の内容を取得して表示します。まだincrement関数を呼び出していないため、0が表示されるはずです。
では、ボタンをクリックしてincrement関数を呼び出してみましょう。ウィンドウの下部に、実行されたトランザクションのログが表示されます。incrementボタンではなく、データを取得するボタンを押したときとはログが異なることがわかるでしょう。これは、ブロックチェーン上のデータを読み取る際には、トランザクション (書き込み) や手数料が必要ないためです。ブロックチェーンの状態を変更する場合にのみ、トランザクションを作成する必要があります。
インクリメントボタンを押してincrement()関数を呼び出すトランザクションを生成した後、再度countまたはgetCountボタンをクリックすると、count変数が0より大きくなった、新しく更新されたスマート・コントラクトの状態を読み取ることができます。
次のチュートリアルでは、スマート・コントラクトにイベントを追加する方法について説明します。イベントのログを記録することは、スマート・コントラクトをデバッグし、関数呼び出し中に何が起こっているかを理解するための便利な方法です。







