Web3.0周りの用語についてまとめてみた(随時追加予定)

# 何の記事か
個人的に最近興味をもっている『Web3.0』という世界の用語や仕組みについて、勉強した内容をまとめてみた。
少し前までこの世界に関しては全くの初心者だったので、何か間違っている内容があったり、追加した方がいいコンテンツがある場合にはぜひコメントいただきたいと思う。

# そもそもWeb3.0とは何か

『Web3.0』というのは、インターネット上でブロックチェーン技術を使ってデータを管理する仕組みのことである。

**ブロックチェーン**という技術によって、あるデータと、データとその所有者との関係を証明する証明書のようなものを紐づけることで、インターネット上のデータに**検証可能性**をもたらすことができる。
要するに、データが改ざんされて『本物のデータなのに偽物のデータになってしまった』ということが発生しない仕組みを持っている。

そしてその所有者は、何も企業であったり国家機関である必要はなく、個人レベルで所有者になることができる。
なぜならWeb3.0上でのデータの管理は、すべてブロックチェーン技術を用いたアプリケーションなどで自動で行うことができるようになっているからである。

これによって、これまでのWeb3.0のない世界では、インターネットの権力はGAFAを中心とした大手Web系企業に集中していた(Centralize)のが、Web3.0を導入することで、**インターネット上の権力を個人レベルまで分散させる(Decentralize)ことができる**ようになった。

この点によって、Web2.0以前のインターネット上での問題がいくつか解消させ、以下のようなメリットが生まれている。

### クラッキングによって情報が漏洩する可能性が大幅に下がった。

データが分散化されているので、クラッカー側にとって標的とするものが定まりにくい。マックスでも個人のクラッキングしかできず、成果を得られにくいからだ。
Web2.0であれば情報が集中している場所を狙えばよかったのが、Web3.0ではそうはいかないというわけだ。
また、**取引の情報は数学的なアルゴリズムによって暗号化されており**、外部から秘密鍵を取得することは事実上不可能となっている。
コンピューターで解くには数億年かかると言われている暗号を用いているほど、その厳重度は高い。

### 完全に個人でデータの管理・売買などを行うことができる。

Web2.0では、データを管理するのはインターネットのサービスを提供している企業たちだ。
データを管理するのはそれら企業で、売買を行うときにもそれら企業を通して間接的に対価を得る、という仕組みになっている。
しかしWeb3.0はそれらの企業を全く仲介しない。**データの管理や、クライアントとのデータの取引も完全に個人で行うことができる**ので、自分の制御範囲内でデータを好きにコントロールすることができる。
<br>

他にも、個人と企業の取引をスムーズに実現したり、縛りなくサービスを提供・利用できるといったメリットがもりだくさんだ。
そういった『これまでになかったインターネット上の仕組み』を実現するのがWeb3.0というわけだ。

# Web3.0におけるテクノロジー系用語

## Blockchain、ブロックチェーン

Web3.0技術の全ての根幹となっているのは、この『**ブロックチェーン**』という革新的な技術である。

先ほども説明したように、ブロックチェーンによって以下のようなものがもたらされる。
- インターネット上のデータの分散性
- 強い改ざん耐性によるデータの検証可能性
- 数学的に立証されている優れた暗号化技術によるクラッキング耐性

順番に説明していく。

### データの分散性

ブロックチェーンのデータ管理は、Web2の世界で当たり前とされている『サーバーの管理を行うクライアントが存在し、そこで集権的に管理している』というものとは異なっている。
具体的には『**P2P(Peer to Peer)** ネットワーク』というネットワーク構造によって、ユーザー個人がデータを管理することが可能となっている。

下の図を参照してほしい。
Web2時代のネットワークでは、データがクライアントによってある一か所に集められて管理が行われている。
つまりこのネットワーク上で、ユーザー$A$からユーザー$B$へデータの送信を行うとすれば、
- ユーザー$A$ → クライアント → ユーザー$B$ 

という風に、クライアントを介して通信を行う必要があった。

しかしブロックチェーンを用いたWeb3.0では、クライアントを介す必要がない。
ユーザー個人は、ブロックチェーン上のあるノードに該当し、ノード同士は直接的に通信ができるようになっている。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665102/d726a953-6c13-95f2-9545-e772eef93e47.png)

クライアントでデータを集約して管理する場合、クライアントのサーバーに障害が発生するとユーザー全員のデータが影響されてしまう。
しかし、P2Pの構造では、他のどのノードがどうなろうと、自らのノード、つまりデータバンクは影響を受けることがない。

### 強い改ざん耐性によるデータの検証可能性

ブロックチェーンは、その名の通りブロックと呼ばれるデータ集合がチェーン状に連鎖していくような構造となっている。

各ブロックはネットワーク上で発生した取引ログを格納している。
そして、これら各ブロックは時系列に沿って連続している。

どういうことかというと、新しいブロックにログのデータを格納するとき、直前に生成されたブロックのハッシュ値を参照する。
**ハッシュ値** とは複数の情報に対して特定の演算を行い、それらに対して生成された値のことである。
ハッシュ値は以下の性質を持つ。図にも描いてみた。
- データ集合に対してハッシュ値が一意に定まる。つまり、ハッシュ値が異なるということは元のデータ集合が異なることになる。
- ハッシュ値からデータ集合を求める(逆元を求める)のは困難。

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665102/cf3284d2-c1d7-6460-f38d-bbed8d4fe029.png)

こういった『唯一性』を持ったハッシュ値を連鎖的に参照する仕組みになっているのがブロックチェーンの構造というわけだ。

つまり、あるブロックにあるデータを改ざんしようとした場合、そのブロックから算出されるハッシュ値は、本来持つべきハッシュ値が異なるということになり、改ざんがバレないためには、後続するすべてのブロックのハッシュ値を変更する必要がある。

これを行うには未来すらも変更する必要があり、それができるのは全知全能かつ未来を予測することができる神的存在のみであることとなり、事実上の改ざん不可能性が担保される。

### 数学的に立証されている優れた暗号化技術によるクラッキング耐性

データからハッシュ値を求めるアルゴリズムを持った関数を**ハッシュ関数** という。
ハッシュ関数の性質として、以下の性質があると述べた。
- ハッシュ値に対して元のデータ集合を求めることは困難

この性質は数学的に立証されている。
ここできちんと立証するのは骨が折れるので、感覚的に理解する例を挙げると、

- 『$10$ を $2$ で割った、というデータから $5$ を出すのはカンタン』だが、『$a$ を $b$ で割って $5$ となったときの $a,b$ を定めるのは不可能』

というのに近い。

もちろんハッシュ関数のアルゴリズムはこんなに単純ではないが、仕組みとしてはこういった感じだ。
解が無限にある、調べるべき数がコンピューターでも数億年かかる処理、といった性質を持っているため、計算機的に逆元を求めるのが不可能ということだ。

他にも、コントラクトをデプロイする際に用いる公開鍵暗号の内部的な仕組みとして、**楕円曲線暗号(ECC)** というのが用いられている。 
公開鍵暗号といえばRSAがよく知られているが、近年ではECCの方が強いことがわかってきている。
ECCはその名の通り、楕円曲線の不可逆性を用いたアルゴリズムで実装される。楕円曲線は以下のような形をしている。
- $y^2 = x^3 + ax + b$

仕組みとしては、
- 曲線上の点 $G$ と整数 $n$ が与えられたとき、$nG$ の示す座標を求めるのはカンタン。
- 曲線上の点 $G$ と平面上のある点 $X$ が与えられたとき、$G$ を何倍すると $X$ に到達するのか計算するのは不可能

といった数学的な性質を利用している。
専門用語で、離散対数問題 (EC-DLP) の困難性、というそうだ。

こういった数学的に安全性が示されている暗号化技術によって、ブロックチェーンというシステム自体が強固であることがわかる。
ゆえに、クラッキングが困難かつ対価が不明な、ブロックチェーンを用いたネットワーク上で悪さをする人はまずいないというわけだ。

## Smart Contract、スマートコントラクト

そういった安心安全なブロックチェーン上で、自動でデータをブロックに書き込んだり、取引のログを格納したりしてくれる仕組みを**スマートコントラクト** という。
売買や送金などの契約(コントラクト)を、自動で効率よく(スマートに)おこなってくれるシステムという名前となっており、『when towhom how』といった条件をあらかじめ設定しておけば、その条件を全て満たすときに要件が自動的に実行される。

スマートコントラクトの実装は Solidity などのプログラミング言語で記述され、オープンソースとして公開されているものもある。

自動的に契約を行ってくれるので、これまで当事者の間で必要だった契約書締結の手間が省けたり、人為ミスがなくなるといったメリットが生まれている。

## Ethereum、イーサリアム

**イーサリアム** とは、スマートコントラクトを用いて分散型の取引を実現するためのプラットフォームの中で最も有名な1つ。
イーサリアム上で取引を行うための媒体となる仮想通貨を『**ETH(イーサ)**』と呼ぶ。
これらがマイナー(Miner)と呼ばれる人々にマイニングされることで、ETHがチェーン上のデータブロックとして流通する。

かつてスマートコントラクトの実装には専門的な技術が必要だったが、イーサリアムの登場によって実装の手間が省け、誰でもスマートコントラクトを使った開発が行えるようになった。

イーサリアムの市場規模は2022年1月で44兆円に上るというデータがあり、その大きさがうかがえる。

## Layer(レイヤー)1, 2

レイヤーは日本語で『層』という意味を持ち、IT業界ではプロトコルやソフトウェアを役割ごとに機能別階層に分けたときの1つの大きさを指す。
Web3.0では『レイヤー1』と『レイヤー2』というのがメジャーなレイヤーとなっている。

**レイヤー1** はブロックチェーンのことを指している。
そして、**レイヤー2** はレイヤー1の動作の手助けをするための、別のレイヤーを指す。

ではレイヤー2はどういった点でレイヤー1の手助けになっているのだろうか。
具体的には以下の2点がある。
### レイヤー1にかかる負荷の一部をレイヤー2によって処理する。

レイヤー1が行うべき処理の量というのは膨大だ。
ブロックチェーン上に取引のデータを記録する処理、セキュリティ的に安全なコントラクトであるかを判断する処理、マイナーがマイニングを行う際の処理、などたくさんの複雑な処理を担っている。

ブロックチェーンというのは万能ではない。処理速度や容量には限界がある。
そこで、処理の一部を別のレイヤーで担い、必要なデータだけをブロックチェーンに返す仕組みの必要性が出てきた。

具体的には『ライトニングネットワーク』や『ライデンネットワーク』といった技術が用いられ、これによってレイヤー1で高速かつ低コストで取引を行うことができるようになった。

### レイヤー1の処理を高速化するため、レイヤー1の構造を最適化する。

『ライトニングネットワーク』や『ライデンネットワーク』といったブロックチェーンの外側に位置するレイヤーもあれば、ブロックチェーンの内部に存在している、つまりオンチェーンなレイヤー2も存在する。

最も有名なものが『Plasma』で、これはチェーンの構造を最適化する技術を持ったレイヤーである。
具体的には、データ構造の『木』のようにチェーンをアレンジする。『親チェーン』があれば、それに『子チェーン』が存在し、『孫チェーン』といったさらに下層のチェーンを追加していく。
子チェーンや孫チェーンにも、スマートコントラクトを実装できる。

木構造はデータを対数的に高速処理することが可能であることは有名で、各チェーンに役割を持たせて、レイヤー1を親チェーンにすることで、高速かつ低コストな処理を可能とする。

## Crypto、暗号資産

**暗号資産** とは、ブロックチェーン技術によって、その安全性・正当性が保証された資産のことを指す。

通常のリアル資産と違って、国家が背景にないことが特徴だ。アメリカやイギリスによって暗号資産の価値が裏付けられることはなく、あくまで『取引媒体』『電子データ』としての性質を持っている。
そこに安全性・正当性が加わることで、実体のない通貨としての価値が後から加わっていったのが暗号資産である。

リアル通貨の価値は政府や国に依存している。その国がメチャクチャな政策をしようものなら、リアル通貨の価値はあっという間に下がってしまう。
また、ロシアの事例のように、国によってリアル通貨が実質的に押収され、使用が制限されてしまうこともある。

暗号資産はそういった影響を受けることがない。
国民が政府を信用していないような国では、国民は積極的にリアル通貨を暗号資産に変換して資産として保有している。

## Stablecoin、ステーブルコイン

暗号資産は直接的に国には依存しないが、そのチェーンに出資する機関・人々に依存したり、国家が介在することによって制限を受けたりすると、価値が大きく変動するといった問題がある。

そういった問題を解決し、価値に安定性をもたらされた暗号資産のことを『**ステーブルコイン(Stablecoin)**』という。
ステーブルコインには主に4つのタイプがある。
- 国家が発行する通貨を担保にして仮想通貨を発行し、その交換比率を固定することで、リアル通貨の安定性にのっかるような『法定通貨担保型』
- 他の暗号資産を担保にして価値を連動させることで、他のステーブルコインにのっかるような『暗号資産担保型』
- 金や原油といった商品の価値と連動させる『コモディティ型』
- できるだけ価格が安定するように設定されたアルゴリズムによって、通貨の流通量を決める『無担保型』

## NFT(Non-fungible token)、非代替性トークン

**NFT** とは、ブロックチェーンの『検証可能性』を用いて、所有者とデジタル資産を紐づけるために発行される、唯一無二のトークンのことである。

つまり、あるデジタル資産があって、その唯一性を明確にしたいとする。『これは私が作ったものです！他の者は偽物です！』といったことを証明したい、ということだ。

これまでだとその証明は現実的に困難なものだった。コピーと本物があったとして、コピーが本物とそっくりに作られていたなら、コピーが偽物であるいう決定的な証拠は存在しなかったのだ。

しかし、NFTの登場によってそれが可能となった。
ブロックチェーンのところで話した通り、ブロックに格納されたデータは改ざんすることが事実上不可能である。
そこで、『これは私が作った』というコントラクトをブロックチェーン上にデプロイしてしまえば、それが証明となる。
偽物を作った人が、それを本物とするためにはデータを改ざんするしかないためだ。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665102/79c7577c-d2be-110c-dd28-a1d3e316916c.png)

そういったわけで、NFTと紐づいたデジタル資産というのは、その唯一性によって価値が生み出され、中には何億という価値がつくものが登場する、ということになっている。

## DAO(Decentralized Autonomous Organization)、分散型自律組織

**DAO** は分散型自律組織のことで、ブロックチェーン上で世界中の人々が分散的に権力を持っており、協力して管理・運営される組織のことをいう。

DAOの意思決定に関わるためには、『ガバナンストークン』と呼ばれる参加証明書のようなものを保有する必要がある。
逆に、これを保有していれば誰でも組織に関与することができる。
『株主』と似たようなシステムとなっており、ガバナンストークンの保有有無によって、組織に貢献してくれそうな人かどうかを自動的に判別することができる。
組織に貢献する意思を持った人間が平等に権力を持って、組織を成長させていく、という点がDAOの最も大きな特徴となっている。

また、DAOはスマートコントラクトの内容がオープンになっており、透明性が高いといった特徴がある。
これによって、具体的な組織の方向性を第三者が知ることができるので、その組織が信頼できるものである証明ができる。