IPFSとブロックチェーンのDAppsサンプルに触れてみる

Dapps

巷では最近IPFSとブロックチェーンを組み合わせてDAppsを作るパターンが増えてきているようで

で紹介されているように以下ブログ記事でも具体的なサンプルを作られている人もいます。

今回は上記ブログ記事を参考に、なぜIPFSとブロックチェーンの組み合わせが良いかを考えて、こちらのサンプルを動かして見ようと思います。

Sponsored Link


IPFSとは?

ようは、P2Pのインターネットにデータ保存を保存できる仕組みです。

こちらのサイト見てもらうとわかりやすいです。

また英語ですが以下動画もわかりやすいです。

こちらはデータをIPFSネットワークにあげると一意なHash文字列を得られる事ができて、そのHash文字列をキーにあげたデータを参照する事ができます。

IPFSがブロックチェーンと相性が良い理由

これは、Ethereumにデータをブロックチェーン上に載せる事を考えるとわかります。

Ethererumのブロックチェーンにデータを載せようとすると、Ethereumのyellow paperによると
200,000 gas for 256bit/8 bytes (1word)
だそうで、https://ethgasstation.infoによると1GASが1Gweiだそうです。
(2018/04/22)
こちらを計算していくと、38kbのEthereumのyelow paperをのせるだけで $1118ほどかかる計算になります。

大量の文章でサイズが大きいものを載せるだけで多額の費用がかかります。

このため、IPFSにデータをあげて紐づくHash文字列を取得して、そのHash文字列をブロックチェーンに保存すると容量の大きいデータもプログラムルールもP2Pで管理できるので、よりdecentralizedな環境が構築できるのです。

これが、相性が良い理由だと自分は考えます。

では、早速サンプルアプリ動かして体感してみる

こちらのgithubのソースを使います。
以下手順はDockerfileで構築したubuntu16.04上での試しました。

Dockerfile

FROM ubuntu:16.04

# init
RUN apt-get update && apt-get install -y \
    software-properties-common \
    curl \
    netcat \
    git \
    nodejs \
    npm

RUN npm cache clean && \
    npm install n -g && \
    n 8.9.4 && \
    npm install -g yarn && \
    ln -sf /usr/local/bin/node /usr/bin/node

# delete original node
# * If don't execute "bash", can't find npm in path
RUN apt-get purge -y nodejs npm && \
    bash

COPY . /eth-ipfs
WORKDIR /eth-ipfs

CMD ["/sbin/init"]

install command

# git clone https://github.com/mcchan1/eth-ipfs.git
# npm install
# npm start

上記のコマンドを実行したあとに http://localhost:3000 にアクセスすると以下のように画面が表示されます。

これで準備が整いました!

実際に触って見る

事前にMetamaskは入れておきます。
そしてRinkebyのテストネットワークを使用するので以下サイトからテスト用のコインを手に入れます。

取得方法は こちら からどうぞ

Metamaskに事前にログインしてRinkebyネットワークを選択していないと「Send it」ボタンを押しても何も反応したいため気をつけてください。

それでは何かファイルをアップロードしてみます。

適当に画像のファイルを選択して「Send it」を押して見るとMetamaskが起動するのでSubmitボタンを押すと

Tx Hashが作成されました!

その後「Get Transaction Receipt」を押すとBlock Numberと、Gas Usedが取得できます。

IPFSデータの確認

それでは先ほどアップロードされたであろうIPFSを確認してみます。

https://gateway.ipfs.io/ipfs/先ほど取得したIPFSのHASH文字列

を入れると確認できます。自分の場合は以下リンクです。こちらでIPFSにアップロードができたことを確認できました!

https://gateway.ipfs.io/ipfs/QmNh8wUQ7Aj5vvTWHYVYjp3A4ebY6xXEyYSUBRY7qmEPib

ブロックチェーンデータの確認

こちらも以下URLで確認できます。
https://rinkeby.etherscan.io/tx/先ほど取得したtxid

https://rinkeby.etherscan.io/tx/0x366a8aa1baa9c5b6d9b8c92933b515b8e4cb3a0e05089cd6a371c0bde9aa73fa

まとめ

IPFSのHashをキー文字列として、IPFSに保存した画像とブロックチェーンを結びつける事ができました。
このため、ブロックチェーンではトークン管理。IPFSで大きいデータを保存することができます。

web3.jsなどのclientでブロックチェーンにアクセスして必要なデータだけ取得して、実際の画像などの大きなデータはIPFSから取得する事ができます。これは、相性が良いという以外何者でもないですねぇ。

Decentralized万歳。

Sponsored Link

ビットコイン(Bitcoin)、イーサリアム(Ethereum)、リップル(Ripple)、ネム(NEM)などの仮想通貨を買うならZaifがおすすめです。

特に国内でETHを購入するなら、アルトコインでも板取引に対応しているZaif(ザイフ)が割安なのでよいですよ。

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


仮想通貨全般
Stablecoin(ステーブルコイン)とは?

最近Stablecoinのツイートをよく見ており、次の仮想通貨の本命などと言われています。 ステーブ …

仮想通貨全般
難易度調整(Difficulty Adjustment)アルゴリズムとは?

最近、Monaが攻撃を受けて被害がでた件ですが 上記、大石さんの記事を引用しますが 攻撃を容易にした …

ICO
ICO Platformはどんなものがあるか?

ICO Platform にどんなものがあるか調べてみました。 ここで取り上げているICO Plat …