我らがCloudflare社が、先日のブログで"Web3"なるものに言及してた。しかも3記事も続けざまに。
不勉強な身としては、ざっと読んだだけではふわっとしか理解できなかったので、もう少しちゃんと理解したいなーと思った。
というわけで、概要を訳しつつあれこれ調べてみたというメモです。
これは単に自分の視野が狭かったことに気付いたんですが、そもそも"Web3"という単語やそれを表すトレンドみたいなものは、2018年くらいのブロックチェーンな頃から既にあったんですね。
そういうわけなので、知ってる人にとっては何をいまさら?って話かもしれんし、それをこのタイミングでCloudflareが言及したことに、特別な意味を感じるのかも?とか。
Web 3.0とは
まずこの最初の記事をざっくり。
Web3とは、Web 3.0のことで、Web 1.0や2.0のように、Webの進化の歴史(トレンド)を総称する呼び名とのこと。
Web 1.0や2.0についても厳格にこういう定義だ!って言えないと思うので、3.0についても同様にふわっとした定義しかできないことは最初に知っておくほうがよさそう。
Web 1.0
世界中に分散した静的なコンテンツをホストしたシステムを、ネットワーク(もといハイパーリンク)を介してアクセスしていたあの頃。
1990年代から2000年代の前半あたりの古き良きクラシックなWebのことを、1.0と呼んでた。
この頃のWebは、まだ世界中に分散していた。
Web 2.0
Webの成長はめざましく、膨大なWebサイトが公開・利用されるようになり、我々の暮らしを支えるインフラとなった。
そんな今も続いてる、自分たちが普段使ってるWebが2.0と呼ばれる世代。
ブラウザが一般化して、検索エンジンが生まれ、SNSやらユーザーどうしのインタラクションが主体になり、技術的にも大きな進歩があった。
ただいい話ばかりではなく、サービス間の競争は激しくなり、コンテンツやユーザーデータは中央集権的に特定の企業やサービス(だいたいGAFA)に集まるようになってしまった。
プライバシーの問題も取り沙汰されるようになって、1.0の頃のように分散したWebではなくなってしまっていた。
Web 3.0
中央集権的になってしまったWebを、本来の姿だったように、"Decentralization"したい。
そこで見いだされたのが、P2Pネットワークで構築されたビットコイン(もといブロックチェーン)やイーサリアムのような分散システムである、と。
イーサリアムでは、各ノードでコードを展開することもできて、既にたくさんの分散型アプリケーション(Dapps)のエコシステムが存在してる。
HTTPによってロケーション志向でアクセスするしかない現状よりも、IPFSみたいに分散システム上で管理されたリソースのほうが可用性も高くなるし、特定の企業に集中するわけではないのでプライバシーも保証される。
ユーザーは自分だけの秘密鍵を持ち、それでお互いを識別するようになる。自分だけのデータをそこで所有し、選択したものだけをアプリやサービスに共有するようになる。(たぶんNFTとかそういうアレで)
というのがWeb 3.0の世界であり、Cloudflareもそのためにいろいろ検証したりサービスを公開したりしていきますよっていうのが、冒頭の1つ目の記事だった。
The early Web was static. Then Web 2.0 came to provide interactiveness and service we use daily at the cost of centralisation. Web3 is a trend that tries to challenge this. With distributed networks built on open protocols, users of the web are empowered to participate.
グッときた結びの言葉。
Web 3.0なアプリケーション
つぎに、2つ目の記事。
こっちのほうがよりエンジニア目線で書かれていて、自分と同じような境遇の人が読むべきはこっちなのかなと思った。
はじめに
Web3って単語だけを聞くと、ただのバズワードに感じるかもしれないけど、ちゃんとした進化系なのである。
特定の企業やサービスにデータが集中するのではなく、ブロックチェーンの上で各自が固有のインセンティブでもって運営されるようになる、というのが主流の時代が来るはず。
アプリケーションの作り方
まずWeb 2.0でのアプリケーションは、主にデータベースを中心としたものだった。
データベースがあって、それを扱うインターフェースが用意されてて、そのデータをUIから引き出して利用するパターン。
全ての情報が、特定のサービスのデータベースに集中的に存在していて、利用者のデータであっても所有権はサービス側にあるというのがポイント。
Web3ではそれが正反対になる。
データベースに保存され運営されていたデータは、代わりにブロックチェーン(ここではイーサリアム)に乗るようになる。
UIのコードもブロックチェーン上でスマートコントラクトとして開発され、それぞれのユーザーが自分のニーズにあったものを選択できる。
データの所有権については、NFTに期待が寄せられてる。
まだまだ未整備な部分も多いし、詐欺もあるけれども、今までのデータやコンテンツの在り方を変える可能性がある。
たくさんのアプリケーションが、分散アプリケーション(Dapps)として提供されるようになっていくはず。
OSSのWeb3アプリ
というところで、自分のNFTプロジェクトをはじめられるアプリケーションの一式をOSSで公開した。
イーサリアムのRinkebyテストネットに接続できるウォレット(Metamask)があれば、実際にNFTをやり取りできるようになってる。
NFTを公開するためには、JSONでメタデータを提供するAPIが必要とされていて、そのためにCloudflare Workersを使っている。
そのNFTをMintするためのUIとして、アプリケーションのホスティングにCloudflare Pagesを使ってる。
公開されたコードは大きく3つあって、
- Worker: IPFSに保存されたNFTのメタデータを返すエンドポイント
- Frontend: ユーザーが利用するアプリのUI
- Svelteで書かれた簡単なアプリ
- https://github.com/ethers-io/ethers.js でイーサリアムを操作
- Contract: スマートコントラクトの実装
- https://github.com/nomiclabs/hardhat が土台
- 言語としてはSolidity
という感じだった。
Distributed Web Gateway
最後の記事。
イーサリアムとIPFSへ、HTTPでアクセスできるようになるゲートウェイを、プライベートベータのサービスとしてはじめたよという話。
現状では、IPFSやイーサリアムに接続するためには専用のツールなどが必要なことが多くて、やや敷居が高い。
このゲートウェイによって、その敷居が下がり、Web3がもっと身近になればいいなとのこと。
おわりに
ふーむ、こういうのがWeb 3.0なのか!って感じ。
もちろん2.0の資産が全て消えるわけではないと思うし、ほんとに現実的なのか?無理では?って疑問もある。ただまぁ今後の可能性のひとつとしては、すごく興味がわいた。
ただ技術としてのブロックチェーンはさておき、その上モノがいまいちしっくりきてないんよな・・近寄り難い雰囲気というか。