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

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

スマートコントラクトRemixSolidityデプロイ
初級
jdourlens
EthereumDev(opens in a new tab)
2020年4月3日
6 分の読書 minute read
comp-tutorial-metadata-tip-author 0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE

皆さんも、私たちと同じように、はじめてスマートコントラクトをイーサリアムのブロックチェーン上でデプロイし、やり取りを行うことにドキドキしていることでしょう。

最初のスマートコントラクトは、 ローカルテストネットワーク にデプロイするので心配は要りません。コストはまったくかからず、好きなだけ楽しむことができます。

コントラクトの記述

まずはじめに、Remix(opens in a new tab)にアクセスし、新規ファイルを作成してください。 Remix画面の左上にあるアイコンから新規ファイルを追加し、適当なファイル名を付けてください。

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

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

1// SPDX-License-Identifier: MIT
2pragma solidity >=0.5.17;
3
4contract Counter {
5
6 // Public variable of type unsigned int to keep the number of counts
7 uint256 public count = 0;
8
9 // Function that increments our counter
10 function increment() public {
11 count += 1;
12 }
13
14 // Not necessary getter to get the count value
15 function getCount() public view returns (uint256) {
16 return count;
17 }
18
19}
すべて表示
コピー

プログラミングの経験があれば、このプログラムの内容はすぐに推測できるでしょう。 以下は、各行ごとの説明です。

  • 4行目: Counterという名前のコントラクトを定義します。
  • 7行目:このコントラクトでは、countという名称を持つ、符号なしの0から始まる整数を保存します。
  • 10行目:最初の関数は、コントラクトの状態(ステート)を変更し、変数の値1増やします
  • 15行目:次の関数は、このスマートコントラクトに含まれないcount変数の値を読み取るためのゲッターです。 ただし、このプログラムではcount変数をpublicで定義しているため、実際にはこの関数は必要ありません。例として挙げている点に注意してください。

皆さんがはじめて作成するシンプルなスマートコントラクトは、これですべてです。 ご覧のように、JavaやC++のようなオブジェクト指向のプログラミング言語のクラスに似ていますね。 それではさっそく、このコントラクトを使ってみましょう。

コントラクトをデプロイする

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

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

コントラクトをコンパイルするには、まず、画面左側にある「compile(コンパイル)」のアイコンをクリックしてコントラクトをコンパイルします

Remixツールバー上の「compile」アイコン

次に、「Compile(コンパイル)」ボタンをクリックします:

Remix solidityコンパイラ上の「compile」ボタン

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

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

Remixツールバー上の「deploy」アイコン

「Deploy and run transactions(トランザクションをデプロイし、実行する) 」の画面に移動したら、作成したコントラクト名が表示されていることをダブルチェックしてから、「Deploy(デプロイ)」をクリックします。 画面の上部から、現在の環境が「JavaScript VM」であると表示されているのを確認してください。これにより、作成したスマートコントラクトをローカルのテスト用ブロックチェーン上でデプロイし、やりとりを行うため、より高速なテストを無料で行うことができます。

Remix solidityコンパイラ上の「deploy」ボタン

「Deploy」ボタンをクリックすると、画面下部に作成したコントラクトが表示されます。 画面左側にある矢印をクリックすると、コントラクトの内容が表示されます。 これが、このコントラクトにおけるcounter変数、increment()関数、およびゲッターgetCounter()です。

countもしくはgetCountボタンをクリックすると、このコントラクトのcount変数の内容を取得して表示します。 この時点ではincrement 関数を呼び出していないので、「0」が表示されます。

Remix solidityコンパイラ上の「function」ボタン

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

トランザクションログ

increment()機能を呼び出すトランザクションを作成する「increment」ボタンをクリックしてから「count」または「getCount」ボタンを再度クリックすると、count変数が「0」以上である更新後の状態のスマートコントラクトが読み込まれます。

更新後のスマートコントラクトの状態

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

最終編集者: @lukassim(opens in a new tab), 2024年4月26日

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