【DApps入門】仮想通貨 NOTE トークンを開発してウォレットアプリまで作ろう!

(文字数:約 40,000 字)

はじめに

こんにちは、現役ブロックチェーンエンジニアのとだこうき(cohki0305)です。

本コースでは、ブロックチェーン技術を利用したアプリ(DApps)を開発していきます。NOTE トークンという独自の仮想通貨を作成し、それの取引を行う Web のアプリケーションを開発していきます。

ブロックチェーンを使ったアプリとなると難しそうに聞こえるのですが、すでに良い開発環境が揃っているので、基礎をしっかりおさえながら勉強すれば、普通の web アプリのように簡単に作れてしまいます。

コース概要

はじめに、ブロックチェーンとは何かを紹介していきます。ブロックチェーンとは何か概念的にすこし理解している方もいるかもしれませんが、技術的にちゃんと理解できている人はそれほど多くないと思います。なので、実際に実装していく前にブロックチェーンについて学んでおきます。

次に今回利用するブロックチェーンを使って作られたアプリケーションプラットフォームであるイーサリアムとは何なのか、そしてイーサリアムを理解する上で重要なスマートコントラクトとは何かを説明していきます。

そして次に Ethereum ブロックチェーンにて実行できるプログラムである Contract を Solidity という言語を使って実装します。次にブロックチェーン上のコードを簡単に実行できる Truffle というフレームワークを使って dapps を作っていきます。

ブロックチェーンらしいアプリにしたいので、「NOTE TOKEN」という独自のトークンを作成し、それの残高を確認したり、送金することができるアプリを作っていきます。

最後に、本コースを終えた方にオススメな教材を紹介します。

受講対象者

JavaScript の基礎的な知識を身に付けておいてください。Progate などで受講してから望むとちょうどいいと思います。

またほんの少しだけ HTML も書くので、読める程度になっておくとよいです。

学ぶことができること

コースをすべて進めてもらうことによって、自分で dapps を作成できるようになります。

具体的な学習項目は以下のとおりです。

1. ブロックチェーンの技術概要が理解できるようになります。
2. イーサリアムとスマートコントラクトとは何かを理解できます
3. Solidity にて簡単な Contract が作成できるようになります。
ブロックチェーンのデータにアクセスしたり、書き込むことできるようになります。
4. Truffle を使い Contract をデプロイできるようなる。Truffle という dapps のスタンダードなフレームを使って、Solidity で書いた Contract を扱えるようになります。
5. web3 と truffle を使って、ブロックチェーンのデータにアクセス・書き込みを行います。アプリを作るには、JavaScript でブロックチェーンを操作する必要があるので、それの練習を行います。
6. Solidity にて独自のトークンをつくれるようになる。

【目次】
・ブロックチェーンとは何か
・イーサリアムとスマートコントラクトとは
・Solidity によって Contract を作成できるようになる
・Truffle を使い独自コイン送金アプリを作る
・これから学習するのにオススメなコンテンツ
・[コラム] Dapps のアーキテクチャについて考える

ブロックチェーンとは何か

この章ではブロックチェーンとは何かを説明していきます。よく紹介される概念的な説明ではなくて、より技術的な説明を行っていきます。

ブロックチェーンは革新的な技術なのですが、革新的であることを理解するためには過去の技術を知っておく必要があります。なので、少し今までの技術を紹介していきます。

クライアント・サーバーモデル

まずはじめに最もベーシックな技術であるクライアント・サーバーモデルについて紹介します。僕たちがよく使っているシステムです。

たとえば、Google Drive や Dropbox などを使って、誰かにファイルを共有したいとしましょう。そのとき僕たちはファイルをアップロードして、ダウンロードしてほしい人にその URL を送りますよね。

普段意識しないのですが、これは実は以下のような仕組みで出来ています。

Google Drive や Dropbox はサーバーと呼ばれる大きいパソコンを用意してそこにファイルの置き場を作ってくれています。つまり、僕たちはファイルをサーバーに一度アップロードしています。そして、アップロードされたファイルの置き場にアクセスしてファイルをダウンロードすることができるようになっています。

これはファイル共有に限らず、よく使われているシステムです。Twitter や Facebook もそうです。僕たちは SNS に投稿すると投稿内容はサーバーに保存されます。そして、フォロワーや友達は、サーバーに保存された情報にアクセスしてあなたの投稿を見ているのです。

非常に素晴らしいシステムです。Google や Facebook などがサーバーを管理してルールを作ってくれていますので、非常に信頼性が高いシステムを構築することができるのが特徴です。

ただ、その一方で特定の企業が情報を集約するという危険性があります。Google が僕たちの情報を集めて様々なビジネスに利用することが可能になってしまいます。また彼らの一存によってデータを好き放題されてしまうというのも問題でしょう。

P2P モデル

一方で、特定の管理者(企業)に依存せずにデータをやり取りすることができる仕組みがあります。P2P と呼ばれるものです。

クライアント・サーバーモデルでは、サーバーを介してデータをやり取りしていましたが、P2P ではコンピュータ同士がデータを直接やり取りすることができます。

さきほどのファイル共有の例で言うと、Google Drive にアップロードせずに直接ファイルを相手に送信することができるということです。昔流行っていた Winny などはこの技術を使っていました。

P2P は管理者がいないので自由にデータをやり取り出来、なおかつサーバーを介する無駄がないという意味でかなり革新的な技術でした。

しかし、管理者がいないとなると、そこは無秩序になってしまいがちです。実際 Winny は違法にファイルをやり取りすることによく使われていました。海賊版のソフトなどが出回った原因の一つです。

またコピーが難しいモノのやり取りには向いてませんでした。たとえば、お金のやり取りです。P2P でお金を送ったとき、本当は受け取ったはずなのに、相手が「えっもらってないよ」と嘘をつく可能性が十分にあるのです。銀行で送金する場合は、管理者がいるのでそういうことになりませんが、P2P だと管理する人がいないのでそういうことが平気で起こってしまいます。

ファイルであればまた送れば済みますが、お金は何度も送るのはイヤですよね。

ブロックチェーン

P2P は思想として素晴らしいものでしたが、不正を監視する仕組みが整っておらずあまり流行ることがありませんでした。そこで考え出されたのがブロックチェーンです。P2P でありながら不正を防ぐ仕組みが生み出させたのです。

ブロックチェーンとは、P2P の理念を引き継いでいます。つまり個人間のやり取りを実現するネットワークなのです。

個人間のデータのやり取りであるのですが、お互いパソコン同士が不正をしていないか監視する仕組みが組み込まれているのです。

ブロックチェーンでは現実的にデータを改ざんすることは不可能だと言われています。

ブロックチェーンではなぜデータを改ざんすることが出来ないのか

ではなぜブロックチェーンではデータを改ざんすることはできないのでしょうか。具体的に、お互いがどのように監視しているのかを説明していきます。

ブロックチェーンを視覚的に理解できる Blockchain Demo というサイトがあるのでこれを使いながら説明していきます。

ハッシュ値とは

ブロックチェーンを理解するためには、ハッシュ値というのを理解する必要があります。

ハッシュ値とは、簡単に言ってしまうと、特定のデータを暗号化した値のことです。たとえば、以下のように "AAAAA" という文字列を用意して、ハッシュ関数によってハッシュ値を作ろうと思います。ハッシュ関数とは、ハッシュ値を作るためのプログラムのことです。

"AAAAA" という文字列から以下のような長ーいハッシュ値が生成されました。

11770b3ea657fe68cba19675143e4715c8de9d763d3c21a85af6b7513d43997d

ハッシュ値は、特定の文字列から作ることが出来るのですが、ハッシュ値からは元の文字列を推測することは出来ないと言われています。

ブロックチェーンデモでもハッシュ値の生成を体験できるのでやってみてください。

文字列を入力すると、下に表示されるハッシュ値がどんどん変わっていくのが確認出来ると思います。

ブロックとは

ハッシュ値を理解できたので、ブロックについて学んでいきましょう。ブロックはハッシュ値を使って作られるのです。

ブロックとはデータを不正されにくいように保存することができる仕組みです。ブロックには、Nonce という値と Data と Hash があります。

さきほどと同じようにハッシュは Data と Nonce の入力値によって生成されるようになっています。つまり Data と Nonce を書き換えることによってハッシュは書き換わるということです。

ここにデータを改ざんされにくいようにする仕組みが隠されています。

ハッシュ値には正解の値があります。000 から始まるハッシュ値が正しい状態だと認定されるようになっているのです。

【正解とされるハッシュの例】
0000f727854b50bb95c054b39c1fe5c92e5ebcfa4bcb5dc279f56aa96a365e5a

Nonce はハッシュ値から予想することはできないので、コンピュータは ハッシュ値が 000 から始まるような Nonce を当てずっぽうに探していく必要があります。

そして Nonce を見つけた報酬としてお金がもらえるという仕組みになっています。これを一般的にマイニングと呼んでいます。

※ どこからお金がもらえるのかは後ほど説明します。

これがなぜデータの改ざんを防ぐかというとデータを書き換えると、ハッシュ値が変わってしまって Nonce を再度計算しないといけなくなるからです。

もちろん、Nonce を求めることはできるので不正自体がこれだけでなくなるというわけではありませんが、この問題はブロックチェーンによって解決することができます。

=====================================================

ブロックの動きに関してもブロックチェーンデモにおいて確認できるので見てみましょう。

ブロックはデフォルトでは以下のように表示されています。今はハッシュが 000 から始まっており正しいブロックの状態だと言えます。

試しにデータを書き換えてみましょう。
書き換えるとハッシュ値が代わりブロックの背景が赤くなったはずです。これはハッシュ値が 000 から始まっている値ではないからです。

もしあなたがこのデータを改ざんしたいなら 000 からはじまるハッシュ値にするために Nonce を書き換える必要が出てきます。というわけで、Nonce を適当に入れ替えてみましょう。

ハッシュ値がどんどん変わっていきますよね。ただ、なかなか 000 から始まるようなハッシュ値を見つけることは出来ないと思います。マイニングの辛さがわかりますね。

今回はデモなので Mine ボタンを押して正しい Nonce を見つけましょう。

ブロックチェーンとは

では、ブロックの改ざんをより困難にするブロックチェーンという技術を紹介していきます。

ブロックチェーンとは、その名の通りブロックが鎖のようにつながっている状態です。どういうことかというと、ブロックには、前のブロックのハッシュ値が保存されるようになっています。図で説明すると以下のような形です。

この続きをみるには

この続き:36,342文字/画像54枚

【DApps入門】仮想通貨 NOTE トークンを開発してウォレットアプリまで作ろう!

ゲスエンジニア

980円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

好きー!
26

コメント2件

購入しました。今は就職活動で忙しいのですが、時間ができ次第取り組みたいと思います!
お忙しいのに購入いただきありがとうございます!
質問対応やドキュメントの編集を行いますので、分かりにくいところがあれば以下に書き込んでいただけますとうれしいです!
https://github.com/cohki0305/notetoken_box/issues

また今後このドキュメントはどんどん内容を増やしていこうと思っています!
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。