スマートコントラクト入門(2) ~Etherを送金する~

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

はじめに

前回Ethereum用のクライアントであるGethをインストールし、テストネットワークで起動まで行いました。

スマートコントラクト入門(1) ~ローカルにEthereum実行環境を整える~

Ethereum上での取引に使用される暗号通貨をEtherと呼びます。

今回はテストネットワーク上で実際にEtherをマイニングし、アカウント間で送金させてみます。

ちなみにEtherの単位はetherですが、ビットコインにおけるsatoshiと同じく、Etherにも最小単位があります。最小単位はweiと呼び、1etherは10の18乘weiです。

動作環境

  • Mac Sierra Version: 10.12.6
  • Geth Version: 1.6.7-stable

アカウントの作成

ローカルで起動したテストネットワーク上でアカウントを作成します。

Ethereumには2種類のアカウントがあり、ひとつはEOA(Externally Owned Account)と呼び、もうひとつはContractアカウントです。

EOAはユーザに紐づくアカウントで、送金やコントラクトの実行を任意のタイミングで行います。ContractアカウントはContractそのものに紐づくアカウントであり、内部にコントラクト用のプログラムを持っています。EOAからContractアカウントが呼び出されることでコントラクトが実行されます。

まずはEOAを作成します。

“testA”はパスフレーズで、半角英数記号であれば任意の文字列を設定できます。
実行するとEOAのアドレスが発行されます。

アカウント間で送金させるのでもうひとつアカウントを作成しましょう。

ノード内で作成されたアカウントは以下のコマンドで確認できます。

配列で渡されるのでインデックスで任意のアドレスを取得することも出来ます。

マイニング

マイニングを行う際に報酬を受け取るアカウント(EOA)を紐付けます。
報酬を受け取るアカウントはEtherbaseと呼びます。

Etherbaseはデフォルトではeth.accounts[0]が設定されています。

以下のコマンドで現在設定されているアカウントを確認することが出来ます。

任意のアドレスを設定する場合は以下のコマンドで変更します。

マイニングを始める前に現在の残高を確認しておきます。

それではマイニングを開始しましょう。
マイニングを実行するスレッド数を指定できます。デフォルトだとマシンのコア数が割り当てられます。

しばらく待つとマイニングが開始します。
マイニングの様子は、別タブを開いてログファイルを確認して下さい。

マイニングが実行されているかどうかは、コンソールで確認することも出来ます。

採掘されたブロック高を確認します。

時間が経つにつれてブロック高が更新されていきます。

マイニングの計算力を表すハッシュレートを確認します。

マイニングを停止します。

停止されていることを確認します。
ハッシュレートは除々に減っていき、暫く経つと0になります。
採掘されたブロック高は、マイニングを停止してもリセットされません。

Ether送金

それでは先程作成したアカウント間でEtherを送金してみましょう。

まずは現在の2つのアカウントの残高を確認しておきます。

マイニングの報酬としてeth.accounts[0]は535ether受け取っています。

Etherを送金するには送金元のアカウントのロックを解除します。
その際、パスフレーズを聞かれるので、先程設定した”testA”を入力して下さい。ロック解除が有効な時間は300秒ですので、もし超えてロックがかかってしまったら同じように解除して下さい。

eth.accounts[0]からeth.accounts[1]へ10etherを送金するトランザクションを実行します。

するとトランザクションIDが発行されます。
ブロックチェーンでは、生成されたトランザクションがブロックに取り込まれることで処理が実行されます。

発行されたトランザクションIDからトランザクション情報を確認すると、blockNumberで処理されたブロックを確認することが出来ます。

eth.accounts[1]の残高を確認しましょう。
getBalanceメソッドではweiで値が返されるので、etherに変換しています。

送金成功しました!

実際はトランザクションの処理に手数料がかかりますが、eth.accounts[0]はマイニングの報酬を受け取るため、見た目は手数料を払っていないように見えるので注意して下さい。

今度は、eth.accounts[1]からeth.accounts[0]へ5ether送金してみます。

手数料が支払われていることがわかります。

最後に

今回はローカルで起動したテストネットワーク上で、アカウントの作成からEtherの送金まで行いました。

Ethereumはビットコインとは違って通貨としての利用が目的ではなく、スマートコントラクトを実行するためのプラットフォームです。コントラクトを実行するための燃料としてEtherという仮想通貨が実装されており、そのEtherを擬似的な通貨として取引に使うことが出来ます。

次回以降は実際にマイニングしたEtherを使ってコントラクトを実行してみたいと思います。

それでは。

参考

公式プロジェクトサイト
Ethereum@Github

スポンサーリンク

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。