たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

Dapps開発のためのブロックチェーン概要

   

これからDapps開発をやろうとしている方などのために、ブロックチェーンの概要(Ethereum)についてまとめてみました。ブロックチェーンがどんな技術かというと、トレンド的には、日本のシリコンバレー、いわゆるビットバレー(渋谷)界隈の若くて優秀な人たちがこぞって取り組んでいる技術です。技術的には、クライアントーサーバ間通信ではなく、クライアントークライアント間通信を特徴として、改ざん不可であるものとなります。

ブロックチェーンはデータベースであり、ネットワークである

中央にサーバがあって、そこにクライアントがアクセスするようなしくみではありません。

ブロックチェーンはサーバではありません。Peer to Peer 通信(あとで説明します)を可能にするデータベースとネットワークなのです。

そして、このブロックチェーンとして有名なもののひとつとして、仮想通貨をやったことなら知っていると思いますが、Etherという仮想通貨を提供しているブロックチェーンのEthereumがあります。(よく混同されるのですが、Etherは仮想通貨でEthereumはブロックチェーンであって、両者は別ものです。)

コードは共有される。改変できない。

選挙の投票システムなどにおいて、公明正大なシステムを構築することが可能となります。

スマートコントラクトとは?

  • ブロックチェーン上のコードで、マイクロサービスのようにふるまうものです。

ちなみに、マイクロサービスについてですが、
たとえばマイクロサービスでは次のような小さいサービスを開発して、Web APIを通じて、各サービスを呼び出し連携させます。

認証サービス(IDやパスワード)
ロジック:データのフィルタリングサービス(サイズや色)
ロジック:レコメンデーションサービス(おすすめ商品の通知)
アクセス許可:在庫管理システム連携サービス
データ:販売実績の追加、配送ステータス管理サービス

など

  • Solidityという言語で書かれています。

Javascriptに似た言語です。

Dappとは

  • Decentralized application の略称です。

Decentralized :分散の、分散化、非集中の
という意味です。
つまり、Dappはブロックチェーンの特徴の分散型の性質をもったアプリケーションという意味です。

  • ネットワークが分散している

peer to peer (P2P)な通信を行います。

一般的なウェブアプリケーションの通信スタイルは

Image from Gyazo

インターネット用語1分解説~P2Pとは~ - JPNIC

たとえばWinniyというファイル交換ソフトを知っていますか?
日本人が開発した世界初の純粋なP2Pソフトウェアです。
詳しく知りたい方はこちらから。
Winny - Wikipedia

あとは、NASとかを使っているひとならわりと知っているかもしれませんが、ビットトレントとかもPeer to Peerをつかった技術ですね。
BitTorrent - Wikipedia

このP2Pのしくみを利用することで、クライアント間で通信が行われ、サーバという中央の概念がなくなるわけです。Winnyの記事を読んでいただければわかると思いますが、非常に画期的な仕組みです。P2Pに関してはもっと語りたいことがありますが、本記事の内容とはずれるので、また別の機会に。

P2Pの仕組みを利用することで、ブロックチェーン上のネットワーク上にあるデバイス(クライアント)間で通信をします。

Image from Gyazo

Dappを作る準備をする

  • npm
    Nodejs Package Managerです。
    つぎで説明するTruffleを簡単にインストールできますので、
    インストールしておきましょう。

  • Truffle
    スマートコントラクトのテスト用のフレームワーク。
    スマートコントラクトをブロックチェーンへデプロイするツール。さらにクライアントサイドアプリケーションを作成することができます。
    Truffle Suite - Your Ethereum Swiss Army Knife

インストール
ターミナルから、
npm install -g truffle

  • ganache

開発用のlocalブロックチェーンです
Ganache | Truffle Suite

  • metamask

GoogleChromeブラウザからEthereumに接続するためのツールです。ChromeストアからMetamaskを検索してください

上記をインストールしたら、
次から実際に開発をはじめていきます。

なお、ブロックチェーンについて本腰を入れて学びたいひとは、Udemyなどにたくさんよいレッスンがあったりします。ぜひUdemyでブロックチェーンと検索してみてください。

ではでは!

 - solidity, BlockChain