見出し画像

Web3.0 個人的入門まとめ②

前回はこちら

「ブロックチェーンって何でしょうか」のレベルから、具体的な仕組みを理解するレベルまでの記録です。バズワード?であるDeFi、NFT、メタバース…Web3あたりの会話に対して、自分なりの意見を持てるといいな。

前回に続き「疑問点潰し」「残った疑問点」のスタイルで並べていきます。

今わかっていないこと

前回大量に疑問が出たのですが、おそらく、

  • スマートコントラクトとは何か

    • どこで、誰が、何のトリガーで実行しているのか

    • ガス代とは何か

  • なぜスマートコントラクトによって「分散アプリ」になるのか

    • イーサリアムを基盤とするアプリ、って何?

  • ETHが高騰したらイーサリアムを基盤とするアプリの動作に影響するのでは?

みたいなお話が不理解の根本かと思います。要はスマートコントラクトとその使い方がよくわかっていない、という感じですね。今回はそのあたりを中心に調査してみます。

スマートコントラクトとは実際のところ何か

「スマートコントラクト」は「(多くはSolidityという言語で実装された)イベント駆動のプログラム」のようです。また、実行結果が不可逆な形でブロックチェーン上に保存されるため「契約」の名を冠しているっぽい。

確かに「任意のイベントに応じたプログラミング」と「結果の保存」ができれば、アプリケーション(=DApp)は作れそうな気はする。ビットコインの「取引」を拡張したような理解。

ここで新たな疑問が大量に。「仮にスマートコントラクトを作ったとして、どこにデプロイされるのか?」「スマートコントラクトの実行場所はどこか?」「ETHはスマートコントラクトにおいてどういう役割を担うのか?」「イーサリアム上で複数のDAppを動かせるとして、資産性のあるETHを基盤上のすべてのアプリで共通利用すると色々とまずくないか?」「とはいえ分散基盤だから一定以上の参加者が必要で、イーサリアム基盤上が都合いいとか?」

スマートコントラクトの動作をまとめる

① スマートコントラクトのデプロイ先

このサイトがわかりやすい。スマートコントラクトのデプロイ先は、イーサリアムのネットワーク(=ブロックチェーン)ということらしい。

コントラクト・コードのコンパイルは完了しましたが、コンパイルしたコードはContract作成者のノード上にあるだけで、まだEthereumネットワーク内の誰もこのContractにアクセスできません。このコンパイル済みコードをEthereumネットワークに送信し、採掘者によってブロックチェーンに登録してもらって初めて他のユーザーがこのContractにアクセス出来るようになります。

https://book.ethereum-jp.net/first_use/contract

Contractというのはイーサリアムのネットワーク上のアカウントの種類。EOA(Externally Owned Account)とContractがあり、ざっくりEOAは人でContractはスマートコントラクトを動かすBotみたいな理解です。

イーサリアムもビットコインと同様に採掘者がいて、マイニング(特定条件を満たすハッシュを作る)をしてブロックを作成してブロックチェーンに登録する。

ちなみに、ブロックチェーンのデータは各ノードが持っていて(=フルノード)随時アップデートされている模様。なのでスマートコントラクトの情報は全ノードで共有されている。
※ フルノード以外にSPVノードというのがあるらしい。この辺りはまた調べる。マークルツリーがキーワード?らしい。

② スマートコントラクトの実行場所

実行場所も「各ノード」とのこと。また参加者の問題がやはりあるようで、イーサリアム基盤を共有することでニッチなアプリも分散して動かすことができる、という感じみたい。

このコードはEthereumネットワークに参加する各(採掘者の)ノード上で実行され、その結果の状態もブロックチェーンに組み込まれ、やはり改ざんが不可能になります。

https://book.ethereum-jp.net/what_is_ethereum/ethereum_as_dapp_platform

なんとなくDAppの動作が見えてきた。ただDAppにおけるETHの役割がまだ良くわからない。スマートコントラクトは「別のノードに実行してもらう」必要があると思われるので、その代金的な感じかな?と思って調べるとどうやらそうみたい。

Ethereumでは、「ether」という独自の内部通貨が規定されています。ビットコインと同様、それ自体が価値を持つ通貨としての利用も可能ですが、より重要な事はetherがEthereum内で分散アプリケーションやスマート・コントラクトを実行するための「燃料」の役割を果たすという事です。Ethereumは上述のように、このプラットフォーム上で動作する分散アプリケーションに対して任意の処理を可能にしており、それぞれの分散アプリケーション間でその動作に必要な計算資源の量は異なってきます。そこで、Ethereumでは、分散アプリケーションを実行するためには、その処理の重さに応じた燃料が必要」とすることによって、Ethereum上で動作する分散アプリケーション間での計算資源の割り当ての平等性を確保しています。

https://book.ethereum-jp.net/what_is_ethereum/ethereum_as_dapp_platform

(引用長いな…問題になりそうなら消します。)

スマートコントラクトを実行したければ手数料としてETHを払ってね、ETHがほしければマイニングするか買うか、別の人のスマートコントラクトを実行してね、みたいな。よくできてる。

そしてこのスマートコントラクト実行料金が「ガス代」と呼ばれるものらしい。ビットコインのトランザクション承認の手数料と同じ位置づけ。

上にも載せた、このページが実際のコードサンプルまで書いてあって、ここまでの内容を踏まえると理解がちょっとできる(テスト用の個人イーサリアムネットワークも作れるらしい)。

資産としてのイーサリアムとの衝突

プログラムの実行手数料がETHで、一方で「1ETH = XXX円」みたいな記事もよく見かけます。これって「プログラムの実行料金が変動する」ということになるよね?

と思って調べると、やっぱりそういう事があるらしい。面白い。高いガス代を払うと早めに実行してもらえるとかあるのね。週末を狙うとかもアナログだw

どうなんだろう?DAppの共通分散基盤としてイーサリアムは非常に優秀ではあるけど、価格が上がるとDApp自体のトランザクションを減らしかねないような。

というのが「PoW→PoSへの移行」とか「レイヤー2スケーリングソリューションの活用」で回避されていくんだろう。たぶん。今度調べる。

まとめと、次調べたいこと

一応、イーサリアムとDAppの挙動はなんとなくイメージできるようになった。一方でまたまたわからないことが増えてきているw

  • 複数のDAppがイーサリアム上で動かせる理由(アドレスがスマートコントラクトごとに発行されるから?)

  • 暗号通貨の市場ってどうやって形成されているんだろう?

  • ここまでの流れで「暗号通貨の交換」とかあり得る?

  • PoS?レイヤー2スケーリングソリューション?オフチェーン?

  • DeFiってなんだ?NFTの仕組みは?

  • SPVノード?マークルツリーアルゴリズム?

ちょっとずつだけど、わかることが増えるのは楽しい。以下のサイトをみて、軽く実装してみても。

ただ、本業が忙しくてどれぐらい時間取れるかが謎w

この記事が気に入ったらサポートをしてみませんか?