メインコンテンツへスキップ

はじめてスマートコントラクトをデプロイする

スマートコントラクト
Remix
Solidity
デプロイ
初級
jdourlens
2020年4月3日
6 分の読書

皆さんも私たちと同じように、イーサリアムのブロックチェーン上で初めてのスマートコントラクトデプロイし、操作することにワクワクしていることでしょう。

心配はいりません。初めてのスマートコントラクトなので、ローカルテストネットワークにデプロイします。デプロイしたり、好きなだけ試したりするのに費用はかかりません。

コントラクトの作成

まず、Remixopens in a new tabにアクセスし、新規ファイルを作成します。 Remixインターフェースの左上で新規ファイルを追加し、好きなファイル名を入力します。

Remixインターフェースで新規ファイルを追加する

作成したファイルに、以下のコードをペーストします。

1// SPDX-License-Identifier: MIT
2pragma solidity >=0.5.17;
3
4contract Counter {
5
6 // カウント数を保持するための符号なし整数のパブリック変数
7 uint256 public count = 0;
8
9 // カウンターをインクリメントする関数
10 function increment() public {
11 count += 1;
12 }
13
14 // カウント値を取得するためのゲッター(必須ではない)
15 function getCount() public view returns (uint256) {
16 return count;
17 }
18
19}
すべて表示

プログラミングの経験があれば、このプログラムが何をするものか簡単に推測できるでしょう。 以下に各行を説明します:

  • 4行目: Counterという名前のコントラクトを定義します。
  • 7行目: このコントラクトは、0から始まるcountという名前の符号なし整数を1つ保存します。
  • 10行目: 最初の関数はコントラクトの状態 (ステート) を変更し、increment()で変数countの値を1増やします。
  • 15行目: 2番目の関数は、スマートコントラクトの外部からcount変数の値を読み取ることができるようにするための、単なるゲッターです。 count変数はpublicとして定義されているため、この関数は必須ではありませんが、例として示しています。

初めてのシンプルなスマートコントラクトについては以上です。 ご存知かもしれませんが、これはJavaやC++のようなOOP (オブジェクト指向プログラミング) 言語のクラスに似ています。 それではさっそく、このコントラクトを使ってみましょう。

コントラクトのデプロイ

最初のスマートコントラクトが作成できたので、ブロックチェーン上でデプロイして使ってみましょう。

ブロックチェーン上でスマートコントラクトをデプロイするとは、実際には、受取人を指定せずに、コンパイルしたスマートコントラクトのコードを含むトランザクションを送信することです。

まず、左側にあるコンパイルアイコンをクリックしてコントラクトをコンパイルします:

Remixツールバーのコンパイルアイコン

次に、コンパイルボタンをクリックします:

Remix Solidityコンパイラのコンパイルボタン

「Auto compile」オプションを選択すると、テキストエディタで内容を保存するたびにコントラクトが自動でコンパイルされるようになります。

次に、「Deploy and run transactions」(トランザクションのデプロイと実行) 画面に移動します:

Remixツールバーのデプロイアイコン

「Deploy and run transactions」画面で、ご自身のコントラクト名が表示されていることを再確認し、「Deploy」をクリックします。 ページ上部にあるように、現在の環境は「JavaScript VM」です。これは、スマートコントラクトをローカルのテスト用ブロックチェーン上にデプロイして操作することを意味し、より速く、手数料なしでテストができます。

Remix Solidityコンパイラのデプロイボタン

「Deploy」ボタンをクリックすると、画面下部にコントラクトが表示されます。 左側の矢印をクリックして展開すると、コントラクトの内容が表示されます。 これが、変数counterincrement()関数、そしてゲッターのgetCounter()です。

countまたはgetCountボタンをクリックすると、コントラクトのcount変数の内容が取得、表示されます。 まだincrement関数を呼び出していないため、0が表示されるはずです。

Remix Solidityコンパイラの関数ボタン

では、ボタンをクリックしてincrement関数を呼び出してみましょう。 ウィンドウ下部に、実行されたトランザクションのログが表示されます。 incrementボタンではなくデータ取得のボタンを押した場合、ログが異なることがわかります。 これは、ブロックチェーン上のデータを読み込む際には、トランザクション (書き込み) や手数料が必要ないためです。 トランザクションが必要となるのは、ブロックチェーンの状態を変更する場合のみだからです:

トランザクションのログ

increment()関数を呼び出すトランザクションを生成するincrementボタンを押した後、countまたはgetCountボタンをもう一度クリックすると、count変数が0より大きくなった、スマートコントラクトの更新された状態を読み取ることができます。

スマートコントラクトの更新された状態

次のチュートリアルでは、スマートコントラクトにイベントを追加する方法について説明します。 イベントをロギングすることは、スマートコントラクトをデバッグし、関数の呼び出し中に何が起きているかを理解するのに便利な方法です。

最終更新: 2024年4月26日

このチュートリアルは役に立ちましたか?