はじめに
Web3。聞いたことはあるが、結局なんなの?記事で読んだけど結局よくわからない、という方に向けての入門解説記事となります。また、我々エンジニアにとっても大いに関係のある、知っておいて損のない知識です。
Web3を支えるブロックチェーン周りの仕組みにもフォーカスを当て、ブロック、ブロックチェーン、ハッシュ値、ナンス値、マイニング、イーサリアム、スマートコントラクト、といった専門用語を知識ゼロからでもわかるよう丁寧に解説します。エンジニアとしてWeb3と関わっていくに当たり必須の用語を解説した、はじめの一歩的な記事となっています。
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。
そもそもWebの仕組みとは?
今一度おさらいしておきます。Webブラウザを使って検索することを考えてみましょう。我々ユーザは、検索ウィンドウにhttps://xxx.co.jp
などと入力して、クライアント端末(スマホやパソコン)にリクエストを送ります。クライアント端末はリクエストされた情報をサーバに送ります。サーバは、リクエストに応じた情報(レスポンス)をクライアントに返します。この一連の流れをクライアントサーバシステムと呼びます。
リクエストに対してどのようなレスポンスを返すかの取り決めはプロトコルと呼ばれ、HTTPやHTTPSというプロトコルが主流です。

出典:HTTP GETとPOSTの違い | ITをわかりやすく解説
Web3はWebをどう変える?
Web3は現在のWebのあり方をどのように変えるのでしょうか。次々章の「Web3の歴史」編でも詳しく解説するのでざっくり理解しましょう。現在までのWebの時代Web2.0には以下の問題点がありました。
- 個人情報・プライバシー問題
- ハッキング・単一障害点(中央組織のサーバが落ちたらアウト)
- 中央組織によるネット検閲
Web3はこれらを解決する可能性のあるものとして、以下のような業界での活用が現在進行形で推し進められています。
- ゲーム
- 音楽
- 小売・EC
- アニメ・漫画
- アパレル
- 不動産
Web3技術でアプリの基盤も変化します。分散管理を用いることで、Web2.0以前で問題だったプライバシーや不正の問題を克服できる可能性があるのです。こうしたアプリは「DApps(Decentralized Application)」と呼ばれます。
Web3はWebをどう変える?
Webの「不正」と「プライバシー」の問題を革新的技術で解決する。
エンジニアにはどう関係するの?
SNSなどでよく見かける疑問に勝手に答えてみました。
-
「まだ勉強しなくても大丈夫?」
Web3はWebのセキュリティやプライバシーに関わる弱い部分を解決する可能性を秘めており、Web3の中身は、Webを中心としたソフトウェアエンジニアなら誰しも関係がある内容だと言えます。特に前節で述べた業界に携わるエンジニアの方であれば尚更です。画期的な技術の黎明期である今だからこそ、ITに携わる身分として是非とも知識を先取りしましょう。 -
「今のフロントエンド・バックエンドみたいな構図は変わるの?」
基本的には変わりません。ブロックチェーンは一種のデータベースであり、その情報を利用するにはバックエンドでのデータベース接続が必要です。また、ユーザインターフェースはフロントエンドで記述します。 -
「HTTPS通信も変わるの?」
それ自体が価値を内包する多種多様なプロトコルが生まれるだろうと考えられています。Web3ではユーザのデータがオープンにブロックチェーン上に保存されるので、データそのものでサービスの差別化ができなくなります。ゆえに、プロトコルの機能性が重要視され、相対的にプロトコルの独自性の価値が上がるという具合です。
しかし、現在あるWeb3的なアプリケーション(Dapps)の多くは、Web2.0的な技術と組み合わせて作られており、(例えば、仮想通貨のやり取りの部分だけにブロックチェーンを使い、アプリケーションを動かすのは従来のようにサービス会社のサーバでする、等。)必ずしも従来のプロトコルを完全に排斥するということはありません。
Web3の歴史
典型的なWeb1.0 → Web2.0 → Web3の流れと定義の説明です。見たことある人は飛ばしてくださいね。

出典:DocuSign
Web1.0 (1995年頃~2000年頃)
インターネットが世間に知られるようになってから、web2.0が生まれるまでです。
HTMLだけで作られたシンプルなウェブサイト、及びコンテンツ管理者の「発信」と訪問ユーザの「閲覧」という一方通行な関係がWeb1.0の中心でした。まだ、コミュニケーションという感じではないです。
Web1.0とは?
静的で、情報の流れが一方通行な Web の時代。
Web2.0 (およそ2000年以降から現在まで。これからもしばらく。。。)
一転、動画や画像、音声のように、多様なコンテンツのやり取りが増えてきました。
ブログ、SNS、Youtubeなど、発信者に対してレスポンスがあることも一般的になり、誰でも発信者になれる時代になりました。
一方、GAFAM(Google, Apple, Meta (前Facebook), Amazon.com, Microsoft)のような、大企業が個人情報・閲覧情報・購買情報などを集約できる仕組みが問題視されています。
また、2021年1月、Twitter社がドナルド・トランプ氏のアカウントを凍結させたことや、同年3月、LINEの韓国サーバに保管していた個人情報が流出し、13万人が被害を受けた事案が話題になりました。このような、サービスを中央で管理する企業の裁量で個人の表現の自由が制限される点、プライバシーのセキュリティがサービス会社任せであったりする点も問題視されています。
Web2.0は、動画や画像、音声のような多様なコンテンツを誰でも双方向に送り合えるようになったという点で便利になりましたが、GAFAMのような大企業に影響力やプライバシーの首根っこを掴まれているという点が不便、不自由が残ると言えます。

出典:Adobe Stock
Web2.0とは?
動的で、情報の流れが双方向な Web の時代。
Web3 (これから?)
一言で言えば、「分散型インターネットの時代」です。
分散型の意味は、中央組織が一括で管理しないということです。例えば、Lineアプリなら、現状web2.0の世界観ではLineのサーバに個人情報が保存されており、Line側がメッセージ内容を閲覧することも事実上可能ですが、Web3のP2Pネットワークならその心配はありません。P2Pネットワークは中央集権的な仲介がない、個々のデバイスが一対一で繋がるネットワークだからです。
例えば、金融取引をするのに、以前までなら仲介人、取引所、銀行といった中央集権的な金融仲介者を通す必要がありました。しかし、Web3的なサービスのDeFi(銀行的な存在)を使えばそれが必要ありません。手数料はGas代がかかるが、仲介者が受け取るような手数料はかからないので、とてもスムーズです。(Gas代は、仮想通貨の正当性を証明するための計算をするための電気代みたいなものです。)また、仲介者が存在しないので、情報が漏れる心配は小さいです。
金融の例であれば、今までと違うところは、契約の正当性の保証を世界中のコンピュータでやる、一企業で管理しない点です。分散のイメージは、(そういう契約をした)世界中のコンピュータで正当性を示すための計算をしているという感じです。
この仕組みを支える技術はブロックチェーンと呼ばれ、次の章でさらに詳しく説明しますが、改竄やプライバシー問題に対して大変強く、Web2.0で上がっていた問題を克服できる可能性を秘めています。
Web3は必ずしもWeb2.0と取って替わる訳ではありません。この先、Web2.0的なサービスが全部死んで、Web3に置き換わるという見立てはあまり一般的ではありません。共生できるだろうと考えられています。
また、厳密な定義はないとされています。ブロックチェーンが使われた新しいインターネットの形をひっくるめてWeb3と呼んでいます。表記はWeb3とWeb3.0の両方あります。本記事では一般的なWeb3に合わせました。

Web3とは?
分散型インターネットの時代。
ブロックチェーン技術に裏付けられた正当性によって、データの分散管理が可能になった Web の時代。
ブロックチェーンとは
結局なんやねーん。ってなってるのではないでしょうか。
ブロックとは
「ブロック」は複数の取引をまとめた単位です。台帳の1ページのようなイメージが1ブロックです。数千取引くらいが1ブロックというイメージを持ってください。
ブロックチェーンは「分散」管理です。でっかい一つのコンピュータで管理するわけではないのです。特別な契約をした多数のコンピュータにデータを分散して置いて管理します。 この分散させる時の1単位が「ブロック」という説明もできます。
そして、各コンピューターはPeer to Peer(P2P)ネットワーク(にこいち、一対一)で繋がっています。情報は共有しているが分散されているので、あるコンピュータが攻撃されブロックの中身が改竄されても、他の多数のコンピュータの情報を参照すれば、直ちに不正が暴かれます。

ブロックとは?
複数の取引をまとめたもの。
P2Pネットワークとは?
ネットワーク上に存在する端末同士が一対一で行う通信。非中央集権的。対極的なのは、「クライアント・サーバ方式」。
ハッシュ値やナンスの話
ハッシュ値やナンス。名前は聞いたことありますか?
「ブロック」にはたくさん情報が含まれます。トランザクション情報、ハッシュ値、ナンスなどが主な情報です。他にも、タイムスタンプ(生成日時)やMiner(ブロックを生成した人、発掘者)の名前、サイズなどの情報も含まれます。
トランザクション情報は複数(数千)の取引内容の記録の束。
ハッシュ値はこれらの情報全てをインプットとして計算した暗号です。インプットを規則に従ってぐちゃぐちゃにして決まった文字の長さの16進数の数字を出力します。
トランザクションの中身が変わればハッシュ値は必ず変わります。また、ハッシュ値計算は、過去のハッシュ値も引数にとります。これはある時刻に生成されたブロックの中身を上手く改竄しても、前後に生成されたブロックのハッシュ値で矛盾が起こり不正はバレてしまうということです。
ハッシュ値の例: 00000000000000000001b56461c2077c978b62a9552cea15836c2f085e84444d
このハッシュ値はBitcoin Block 780,096から取ってきたものです。
先頭に0がめちゃめちゃ続いてますね。19個続いてます。これがハッシュ値として認められる条件です。
ハッシュ関数を元々知っている人にとってはこの言い回しは違和感あるかもしれません。
ハッシュ関数は、ハッシュ値を計算するための関数で、同じ入力に対しては必ず同じ出力を一つ返します。一つしか出力を返さないのに、認めるも何もあるか!と思いますよね。ここで登場するのが使い捨ての引数、ナンスです。
ナンスを適切に選んできてハッシュ関数の入力として含めることで、特殊な先頭に0が19個も続くハッシュ値が生成できるのです。
ナンスの例:807,503,183
Bitcoin Block 780,096の例だとナンスはこんな値となっています。

ハッシュ値とは?
各ブロックが一つずつ持っている暗号。ハッシュ値を計算するのは容易だが、ハッシュ値からトランザクション情報などを取得することはできない。
ナンスとは?
正当な(特定の条件を満たす)ハッシュ値を算出するための使い捨てのハッシュ関数の引数。各ブロックが一つずつ持っている。
マイニング
だからなんやねーん、と思いましたか?0が19個続いて何が嬉しいねん、と。
実は0が19個続くハッシュ値を出力するようなナンスを選ぶためには、ナンスをシラミ潰しに代入していくしかないのです。
この作業には多大な計算リソースを費やします。ブロックを生成する(=トランザクションをまとめ上げる)タイミングで、世界中のコンピュータが寄ってたかって適切なナンスを探し出そうとします。
熾烈な計算競争に打ち勝ち、見事一番乗りでナンスを見つけられた人は、Miner(マイナー)と呼ばれ、報酬が仮想通貨で支払われます。ビットコインのブロックチェーンならBTCで、イーサリアムならETHで支払われるという具合です。
このナンス値を掘り当てる作業(=正当なハッシュ値を見つける作業)を、鉱脈を採掘するのになぞらえて、マイニングと呼びます。
このようにして求めたハッシュ値は次に生成するブロックのハッシュ値のインプットとなります。これがブロックチェーンのミソで、不正への強さの理由となっています。先ほども述べたように、正当なハッシュ値の計算には多大な計算リソースが必要なので、不正を行い、過去のブロック情報から未来ずっとブロック情報を作り続けることは現実的に不可能というわけです。これが0が19個続くハッシュ値の仕組みの嬉しい理由ですね。
具体的には、改ざんのために、ブロックチェーンに参加している計算能力の51%の計算能力がないと本物を騙せないのです。少なくとも個人単位で不正を行うことは不可能ですね。
これが分散管理していても正当性が保証されている理由です。エンジニアとしては、このセキュリティの仕組みを理解しておいた方がいいですね。

マイニングとは?
ブロック生成のタイミングで、ナンス値を掘り当てる(=正当なハッシュ値を見つける)作業。
マイナーとは?
マイニングに成功した人。成功すると報酬に仮想通貨が支払われる。
ブロックチェーンとは?
過去から未来までずっと「ブロック」が「チェーン」のようにつながることで、取引データの改竄が実質不可能となっている仕組み。チェーンの要は「ハッシュ値」が過去のブロックのハッシュ値を参照していること。
イーサリアムの話
イーサリアム(ETH)は仮想通貨です。が、同時に、アプリケーションを動かすOSのような役割も果たします。これを可能にしているのが「スマートコントラクト」という仕組みです。DeFiやNFTがイーサリアムを中心に構築されているように、イーサリアムはサービスを作り出す基盤となれる仮想通貨です。
イーサリアムとは?
ビットコインに次いで人気の仮想通貨。アプリケーションを動かすOSのような役割も果たす「スマートコントラクト」が組み込まれている。
スマートコントラクトについて
イーサリアム(やその派生の仮想通貨)に備わる仕組みです。簡潔には、条件が満たされると、正当性、安全性の担保された契約を自動で実行する仕組みです。より詳しくは、暗号技術を使い取引を記録する「ブロック」を作成し、第三者の改ざんを防ぐため複数のブロックをつなぎ合わせるまでのプログラムを自動で実行する仕組みです。ちなみに、スマートコントラクトのプログラムを走らせる計算は、ブロックを保持しているコンピュータで行われます。大企業の大きなサーバで一括で演算するのと、分散化という観点で違いがありますね。
ブロックチェーン技術により安全性、正当性が担保されつつ、第三者を仲介しない高速な取引が実現しているのです。第三者を仲介しないP2Pでブロックチェーン上で記述されるので、取引は透明性が確保されてもいます。
契約方法やルールについては、Solidityという言語で記述し、自由にプログラミングできます。
イーサリアムがビットコインに次ぐ仮想通貨シェア2位の座にあるのは、サービスを作り出す基盤としての役割を提供する「スマートコントラクト」の仕組みのおかげなのです。

↑ Solidityのイメージ(出典:The World of Smart Contracts using Daml & Solidity)

出典:仮想通貨イーサリアム(ETH)とは|今後の将来性とおすすめ取引所
スマートコントラクトとは?
ブロックチェーン上で自動実行される契約を作ることができるプロトコル。
Solidityとは?
ブロックチェーンを実装するのに向いているコントラクト指向(取引処理の実行に特化)のプログラミング言語。
PoWとPoS
イーサリアムでもビットコインと同じように、マイニングの計算競争によりブロックを継続的に作成する仕組みがあります。これをPoW(Proof of Work)と呼びます。Work(作業)はコンピュータの計算や電力の意味です。PoWは、一個人による計算競争独占の難しさによって、不正や改竄への耐性を担保していると言えます。これは、「マイニング」の節で説明した通りです。みんながこぞってマイニングでブロック生成の権利を得ようとする理由は、一番乗りのマイナーには仮想通貨の報酬が支払われるからでした。
しかし、このPoWの計算能力の壁による安全性の担保の仕組みは、処理速度の低さと表裏一体でした。また、安全性ゆえ、マイナーに支払う手数料(Gas代)も馬鹿になりません。
そこで、イーサリアム2.0にアップデートされてから、イーサリアムのコンセンサスアルゴリズム(契約のためのルール)はPoWからPoS(Proof of Stake)に切り替わりました。
Stakeは保有の意味で、イーサリアムの保有の割合が高いほど、ブロック生成の権利を割り当てられる確率が高くなります。あらかじめ、ブロック生成の権利を割り当て、激しい計算競争の必要がなくなったので消費電力は大幅に減少します。コンセンサスアルゴリズムとしてPoSを採用したイーサリアム2.0は消費電力量を99.95%も削減することができました。PoSには、お金持ちの方がよりマイナーの権利を得やすい問題があるとして、保有期間も考慮するPoSも存在します。保有量×保有期間に応じて割り当て確率を変え、一度承認作業を行うと、この値を減らすことで、特定個人、法人に承認の権限が偏る問題を解決しました。

PoWとは?
一番乗りのマイニング計算の成功者がブロック生成の承認の権限を得るコンセンサスアルゴリズム。膨大な電力消費がデメリット。
PoSとは?
保有資産の量や保有期間に応じてマイニング権限を付与するコンセンサスアルゴリズム。電力消費の問題を解決。
コンセンサスアルゴリズムとは?
ブロックチェーンにブロックを追加する際、どのような合意形成(コンセンサス)の手段(アルゴリズム)を取るか。
Gas代
Gas代は、イーサリアム・ブロックチェーンにおけるトランザクション実行やプログラム処理ごとに発生する手数料です。そのまま、ブロック生成を承認したマイナーに対して支払われる報酬となります。Gas代が高いほど、優先して処理は行われます。Gas代が高いほど、取引の承認処理は早く終わり、Gas代が少ないと処理に時間がかかります。
Gas代とは?
イーサリアム・ブロックチェーンでの、トランザクション実行やプログラム処理毎に発生する手数料。
Dappsの話
Web3の様々なアプリケーションは、Dapps(DecentralizedApplications:分散型アプリケーション)と呼ばれています。これらはスマートコントラクトが使用されています。
Dappsと通常のスマホアプリ、パソコンアプリとで異なる点は、誰もがコードを検証可能である点(透明性の高さ)、中央集権的管理者なしにアプリと通信可能な点などです。アプリを動かすソースコードを変更する(アップデートする)ためには、ユーザ同士で合意形成を行う必要があります。ブロックチェーンを用いた他の技術と同様に、データの改竄に対して、分散管理している他のコンピュータで確認できるという点で、不正に強いのも特徴です。

出典:medium
イーサリアムでDappsを開発するための便利ツールやドキュメントは増えてきており、スマートコントラクトを使用したDappsを作りたい場合はイーサリアムを用いるのが主流です。(例えばビットコインにはスマートコントラクトが使用されていないので、ビットコインでDappsを作るというのはありません。)
Dappsで、ゲームは代表的な例です。Dappsゲームでは、管理者、仲介者がいないので手数料が安く、ユーザが利益を得やすいです。有名な例だと、Axie Infinityは「play to earn(遊んで稼ぐ)」の先駆けとして2018年にリリースされ、東南アジアを中心に絶大な人気を誇っています。フィリピンでは、ゲームをプレイして生計を立てる人が数万人単位でいるとも言われています。メタバース上の土地や商品の仮想通貨での売買をユーザ同士で行うことができるのもDappsゲームの特色です。
Dappsを実際に作ってみたいソフトエンジニアの方、ゲーム開発に携わる方はこちらの「ブロックチェーン dapp&ゲーム開発入門 Solidityによるイーサリアム分散アプリプログラミング」などを読んでみてはいかがでしょうか。
Dappsとは?
スマートコントラクトが使用されているアプリ。中央集権管理者不在で、ソースコードが公開されている。ゲームや金融など様々ある。メタバースが絡むこともしばしば。
まとめ
最近流行りのWeb3ですが、結局何が良いのでしょうか。
それは、データの「分散化」により、Webの「不正」と「プライバシー」の問題を解決する点でした。
分散化を支えているのはブロックチェーン技術でした。
ブロックチェーン技術のおかげで個人情報がなくても取引の正当性を証明でき、また、改竄や不正を行うにはブロックチェーンに参加しているコンピュータの51%の計算力が必要ゆえ実質不可能というセキュリティの高さを実現しているのでした。
また、イーサリアムという仮想通貨が端緒となったスマートコントラクトの仕組みは、中央集権管理者不在で様々な取引をスムーズに実行する、中央集権管理者不在のアプリケーション、Dappsを作ることを可能にします。
これらの仕組みが、Web2.0で問題視されていた中央集権的管理やプライバシー、改ざんといった問題を解決し、Web2.0では存在しなかった新たな価値観、可能性を創出します。
以上が、Web3及びそれを支えるブロックチェーン周りの説明でした。
おわりに
Web3で登場する基本的な用語を解説しました。いかがでしたか?
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。
参考
https://bookmeter.com/books/19333010
https://coinpost.jp/?p=230484
https://www.creativevillage.ne.jp/category/news/web-news/69756/#head-2
https://www.softbank.jp/sbnews/entry/20221102_03?page=02#page-02
https://bitcoin.dmm.com/column/0142
https://signal.diamond.jp/articles/-/1078
https://bitflyer.com/ja-jp/s/glossary