NEMのクライアントアプリを実装してみよう!

WEBアプリケーションでNEMの取引きを行うクライアントプログラムの解説書です。

1321 views

本書は、NEMのAPIを使ってWEBアプリを作ることです。
しかし、NEMを知るには、まずブロックチェーンの基礎的な概要を知る必要があります。
本章では、ブロックチェーンの概要についてざっくり説明します。

ブロックチェーンのネットワーク

ブロックチェーンはP2Pのネットワークで構成されていますが、理解しやすくするために簡略したイメージを図2.1に記します。


図2.1 ブロックチェーンの簡略イメージ

ブロックチェーンのざっくりした登場人物は以下です。

  • 送信者
  • 受信者
  • マイナー

送信者はコインを送る人です。
受信者はコインを受け取る人です。
マイナーは、送信者が受信者にコインを送金したことを管理台帳に書き込む人です。
管理台帳のことを、ブロックチェーンでは分散台帳と言います。

台帳がなくても、コインは送金できそうですが、台帳がなければトラブルが起きます。
例えば、送信者は受信者に100コイン送る場面でこんなウソがあったらどうでしょうか。

  • 送信者は受信者に100コイン送ったのに、受信者は「100コインもらってないよ?」とウソをついた場合。
  • 送信者は、送っていないのに「100コイン送りましたよ?」とウソをついた場合。

このウソを防ぐために台帳が必要です。
そして、台帳は送信者、受信者と利害関係のない第三者が行うべきです。
この台帳に書き込む作業をマイナーが行っています。

実際のやり取りを、銀行とブロックチェーンで比較してみます。

コインのやり取り

本節では、アドレス秘密鍵ウォレットについて説明します。

アドレス

例えば、銀行でお金をAさんがBさんの口座に100万円を振り込む場合と、暗号通貨で100コインをAさんからBさんに振り込む場合を比較してみます。

銀行で振り込む場合

銀行で、AさんからBさんにお金を振り込む場合、AさんはBさんの振込口座を教えてもらう必要があります(図2.2)。


図 2.2 振込口座を教えてもらう

ブロックチェーンで送金する場合

暗号通貨でも同じです。
AさんからBさんにコインを送金する場合は、AさんはBさんの振込先口座を知る必要があります(図2.3)。
ブロックチェーンでは、この振込先口座をアドレスと呼びます。


図2.3 アドレスを教えてもらう

ウォレットと秘密鍵

次に、ウォレットと秘密鍵について説明します。

銀行で振り込む場合

銀行のATMでお金を振り込む場合を例に説明します。
Aさんは、自分の口座の残高照会をするためにキャッシュカードをATMに差し込みます(図2.4 ①)。
次に4桁のパスワードを入力します(図2.4 ②)。
その次にAさんはATMで残高を確認します(図2.4 ③)
最後に振込先にお金を振り込みます(図2.4 ④)。
振り込んだお金は、Bさんに届くのではなく、銀行が預かります(図2.4 ⑤)。


図2.4 ATMでお金を振り込む場合

ブロックチェーンで送金する場合

次に、ブロックチェーンを使ってお金を送金する場合を例に説明します。


図2.5 ブロックチェーンでコインを送金する場合

Aさんは、自分のウォレットを開きます(図2.5 ①)。
次に秘密鍵を入力します(図2.5 ②)。
その次にAさんはウォレットで残高を確認します(図2.5 ③)
最後に送金先のアドレスにコインを送金します(図2.4 ④)。
振り込んだコインは、Bさんのパソコンに届くのではなく、ブロックチェーンが管理します(図2.5 ⑤)。

銀行のキャッシュカードや通帳に相当するものをウォレットと呼びます。正確には秘密鍵を管理することを言いますが、実用上は、ブロックチェーンに預けているコインにアクセスするためのアプリケーション(NanoWalletなど)だと思っても、それほど問題はありません。
そのウォレットを開くためのパスワードを秘密鍵と言います。
これは銀行のキャッシュカードのパスワードと同じで、紛失するとウォレットにアクセスできなくなりますので、厳密に管理しておく必要があります。

お金のある場所

次は、送金したコインが存在する場所について説明します。

銀行の場合

お金の場合は銀行にあります。
Aさんの口座もBさんの口座も同じ銀行にある場合、銀行はAさんが振り込んだお金の所有権をBさんに変更するだけです(図2.6)。
Bさんがお金を引き出さない限り、100万円は銀行が持っています。


図2.6 銀行での振り込みの場合

ブロックチェーンの場合

暗号通貨の場合も似ています。
Aさんが所有している100コインの所有権がBさんに移動するだけで、コイン自体はブロックチェーンの中にあります。
所有権の移動は、お金の場合は銀行が行っていましたが、暗号通貨の場合は、マイナーのお仕事になります(図 2.7)。


図2.7 ブロックチェーンで送金する場合

銀行の業務が自動化され始めている、そんな風にも考えられますね。

マイナーのお仕事と報酬

マイナーのお仕事には記録発掘があります。

記録

記録についても、銀行とブロックチェーンは似たようなことを行います。
銀行とブロックチェーンで比較してみます。

銀行の場合

銀行でAさんがBさんに100万円を振り込む場合を例に考えます(図2.8)。


図2.8 銀行が銀行のデータベース記録する

①AさんはBさんに100万円を振り込み、かつ、手数料を銀行に払います。
②銀行はAさんから手数料をもらい、銀行のデータベースにAさんがBさんに100万円振り込んだことを記録します。
③Bさんは銀行で100万円引き出します
④銀行はBさんが100万円引き出したことを記録します。

この記録作業を行うために、銀行はAさんから手数料を得ます。

ブロックチェーンの場合

ブロックチェーンでAさんがBさんに100コイン振り込む場合を例に考えます(図2.9)。


図2.9 マイナーがブロックチェーンに記録する

①AさんはBさんに100コインを送金し、かつ、手数料をマイナーに払います。
②マイナーはAさんから手数料をもらい、ブロックチェーンにAさんがBさんに100コイン渡したことを記録します。
③Bさんは100コイン使用します。
④マイナーはBさんが100コイン使用したことをブロックチェーンに記録します。

マイナーも、ブロックチェーンに取引を記録する場合に報酬として手数料を得ます。
手数料として暗号通貨が得られるため、この作業マイニングと言われますが、直感的に理解しやすいのは後述する発掘のほうかと思います。

発掘

ブロックチェーンでユーザ同士が暗号通貨で取引するには、暗号通貨がないと取引できません。
最初の暗号通貨はどうやって生まれるのか?という問題です。
その答えが発掘です(図2.10)。


図2.10 コインの発掘

マイナーは、超高性能なコンピューターを使って難しい計算を解くことで、暗号通貨を得られます。
つまり、ブロックチェーン上に新たなコインが生まれます。
そして、生まれた暗号通貨はマイナーのものとなります(報酬)。
一般のユーザは、現金とコインの交換をするなどしてコインを得ます。
なお、実際にはマイナーと一般ユーザの間にBitflyerやcoincheckなどの取引所が挟まりますが、本質ではないので省略しています。

発掘というだけあって、発掘できるコインには上限があります。上限に達するとマイナーは、発掘による報酬は得られませんが、記録による報酬は得続けることができます。

備考

本解説書はNEMに関するものですので、付け加えておくと、NEMには発掘はありません。
すでに、すべてのコインが発掘済みという前提です。
報酬はハーベスト(収穫)で得ることができます。
ハーベストとは記録による報酬のことを指します。

Page 2 of 6.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

ビットコ

自己紹介

仮想通貨の実装方法について書いて行きたいと思います。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/book/33/1

ツイッター

@darkimpact0626