はじめてスマートコントラクトをデプロイする
皆さんも、私たちと同じように、はじめてスマートコントラクトをイーサリアムのブロックチェーン上でデプロイし、やり取りを行うことにドキドキしていることでしょう。
最初のスマートコントラクトは、 ローカルテストネットワーク にデプロイするので心配は要りません。コストはまったくかからず、好きなだけ楽しむことができます。
コントラクトの記述
まずはじめに、Remix(opens in a new tab)にアクセスし、新規ファイルを作成してください。 Remix画面の左上にあるアイコンから新規ファイルを追加し、適当なファイル名を付けてください。
作成したファイルに、以下のコードをペーストします。
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Public variable of type unsigned int to keep the number of counts7 uint256 public count = 0;89 // Function that increments our counter10 function increment() public {11 count += 1;12 }1314 // Not necessary getter to get the count value15 function getCount() public view returns (uint256) {16 return count;17 }1819}すべて表示コピー
プログラミングの経験があれば、このプログラムの内容はすぐに推測できるでしょう。 以下は、各行ごとの説明です。
- 4行目:
Counter
という名前のコントラクトを定義します。 - 7行目:このコントラクトでは、
count
という名称を持つ、符号なしの0から始まる整数を保存します。 - 10行目:最初の関数は、コントラクトの状態(ステート)を変更し、変数
の値
を1増やします
。 - 15行目:次の関数は、このスマートコントラクトに含まれない
count
変数の値を読み取るためのゲッターです。 ただし、このプログラムではcount
変数をpublicで定義しているため、実際にはこの関数は必要ありません。例として挙げている点に注意してください。
皆さんがはじめて作成するシンプルなスマートコントラクトは、これですべてです。 ご覧のように、JavaやC++のようなオブジェクト指向のプログラミング言語のクラスに似ていますね。 それではさっそく、このコントラクトを使ってみましょう。
コントラクトをデプロイする
最初のスマートコントラクトが作成できたので、ブロックチェーン上でデプロイして使用してみましょう。
ブロックチェーン上でスマートコントラクトをデプロイするとは、実際のところ、受取人を指定せずに、コンパイルしたスマートコントラクトのコードを含むトランザクションを送信することです。
コントラクトをコンパイルするには、まず、画面左側にある「compile(コンパイル)」のアイコンをクリックしてコントラクトをコンパイルします。
次に、「Compile(コンパイル)」ボタンをクリックします:
「Auto compile(自動コンパイル)」のオプションを選択すると、テキストエディタ上で内容を保存するたびにコントラクトがコンパイルされるようになります。
次に、「Deploy and run transactions(トランザクションのデプロイおよび実行」画面に移動します:
「Deploy and run transactions(トランザクションをデプロイし、実行する) 」の画面に移動したら、作成したコントラクト名が表示されていることをダブルチェックしてから、「Deploy(デプロイ)」をクリックします。 画面の上部から、現在の環境が「JavaScript VM」であると表示されているのを確認してください。これにより、作成したスマートコントラクトをローカルのテスト用ブロックチェーン上でデプロイし、やりとりを行うため、より高速なテストを無料で行うことができます。
「Deploy」ボタンをクリックすると、画面下部に作成したコントラクトが表示されます。 画面左側にある矢印をクリックすると、コントラクトの内容が表示されます。 これが、このコントラクトにおけるcounter
変数、increment()
関数、およびゲッターgetCounter()
です。
count
もしくはgetCount
ボタンをクリックすると、このコントラクトのcount
変数の内容を取得して表示します。 この時点ではincrement
関数を呼び出していないので、「0」が表示されます。
次に、 increment
ボタンをクリックして、increment関数を呼び出しましょう。 ご覧のように、実行したトランザクションのログは、ウィンドウの下部に表示されます。 increment
ボタンではなくデータ取得のボタンをクリックした場合、ログが変化することが分かると思います。 これは、ブロックチェーン上のデータを読み込む際には、トランザクション(書き込み)や手数料が必要ないためです。 つまり、トランザクションが必要となるのは、ブロックチェーンの状態を変更する場合のみです。
increment()
機能を呼び出すトランザクションを作成する「increment」ボタンをクリックしてから「count」または「getCount」ボタンを再度クリックすると、count変数が「0」以上である更新後の状態のスマートコントラクトが読み込まれます。
次のチュートリアルでは、スマートコントラクトにイベントを追加する方法を学びます。 イベントログは、スマートコントラクトをデバッグし、関数の呼び出し中に何が起こっているかを理解するのに便利な方法です。
最終編集者: @lukassim(opens in a new tab), 2024年4月26日