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

初めてのスマート・コントラクトのデプロイ

スマート・コントラクト
Remix
Solidity
デプロイ
初級
jdourlens
2020年4月3日
6 分で読めます

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

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

コントラクトの作成

最初のステップは、Remixにアクセス (opens in a new tab)して新しいファイルを作成することです。Remixインターフェースの左上部分で新しいファイルを追加し、任意のファイル名を入力します。

Adding a new file in the Remix interface

新しいファイルに、以下のコードを貼り付けます。

プログラミングに慣れている方なら、このプログラムが何をするものか簡単に推測できるでしょう。以下は行ごとの説明です。

  • 4行目: Counterという名前のコントラクトを定義します。
  • 7行目: このコントラクトは、初期値が0のcountという名前の符号なし整数を1つ保存します。
  • 10行目: 最初の関数は、コントラクトの状態を変更し、変数countincrement() (インクリメント) します。
  • 15行目: 2番目の関数は、スマート・コントラクトの外部からcount変数の値を読み取るための単なるゲッター (getter) です。変数countをpublicとして定義しているため、本来これは不要ですが、例として示しています。

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

コントラクトのデプロイ

初めてのスマート・コントラクトを作成したので、次はそれをブロックチェーンにデプロイして動かせるようにします。

ブロックチェーンへのスマート・コントラクトのデプロイとは、実際には、コンパイルされたスマート・コントラクトのコードを含むトランザクションを、宛先を指定せずに送信することにすぎません。

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

The compile icon in the Remix toolbar

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

The compile button in the Remix solidity compiler

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

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

The deploy icon in the Remix toolbar

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

The deploy button in the Remix solidity compiler

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

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

The function button in the Remix solidity compiler

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

A log of transactions

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

Newly updated state of the smart contract

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