📠

[Blockchain]ToEarnアプリ実装を通してEVM互換性があるとはどういうことか理解してみた

2022/11/10に公開

デモ

以下URLで公開しています

https://tap2earn.oegap.net/

ID: irie

PW: ryUg@12

機能

  1. 画像/名前を保持したNFT(Oppay NFT)をmintできる
  2. NFTのmint時に、ランダムなレベルが紐づけられる
  3. 選択したNFTのTapボタンを押下すると、レベルに応じた通貨(Oppay Token)をmintできる

前提知識

今回扱うBlockchain基盤は以下の3つ

  • Ethereum
    • Layer1のBlockchain
    • Blockchain上の流通通貨はEther(ETH)
  • Polygon
    • Layer2のBlockchain
    • Blockchain上の流通通貨はMatic(Matic)
    • EVM互換性あり
  • Avalanche
    • Layer0のBlockchain
    • Blockchain上の流通通貨はAvax(AVAX)
    • EVM互換性あり

EVMとは

  • Ethereum Virtual Machineの略
  • Smart Contractの展開と実行を管理するEVM Codeのインタプリタ
  • Solidity(またはVyper)をコンパイルすることとで得られるEVM Code(バイトコード)は、EVM上で管理・実行される

EVM互換性とは

Blockchain基盤を構成するコンポーネントの中に、EVMインタプリタを有している性質

EVM互換性があるメリットとは

  • EVM互換性のある全てのBlockchainは、Solidity(またはVyper)で書かれた同じソースコード(またはコンパイル済みのEVM Code)を、修正なしでデプロイ可能である
  • 従って、EVM互換性があるとソースコードの流用が容易にできる

そもそもBlockchain基盤のLayerとは何か?

  • Layer0
    • 異なるBlockchain ネットワークを接続するプロトコル
    • 互換性のないBlockchain(EthereumとBitcoinなど)同士の通信(データの送受信)などが可能
  • Layer1
    • Bitcoin、Ethereum、Solanaなどの基盤となるBlockchainネットワーク
    • 他のネットワークを必要とせず、取引を検証し確定することが可能
  • Layer2
    • トランザクションをLayer1外部(オフチェーン)で処理することで、スケーラビリティ(拡張性)問題を解消するソリューション
    • 例えばLayer1であるEthereumが約10rpsなのに対し、Layer2のPolygonは約5000rpsと言われる
  • Layer3
    • Blockchian基盤上で動作するSmart Contractを使用したアプリケーション(DApps)
    • ERC20(暗号資産)やERC721(NFT)も含まれる

引用元:https://medium.com/@nick.5montana/blockchain-layers-l0-l1-l2-l3-in-a-diagram-569162398db

Blockchain nodeのホスティングサービスとは何か?

  • PublicなBlockchain(MainnetとTestnet)に対し、Contractのデプロイ/トランザクションの確認などを行うためのBlockchain Nodeをホストするサービス
  • 自前でクラウドサービス(AWSやGCP)にBlockchain Node用の仮想サーバーを立てる労力を省くことができる
  • Testnetにデプロイして動作確認をするくらいであれば、無料で使用できる
  • 以下が主要なサービス

Testnetとは何か?

  • 流通通貨に価値はないが、Publicに公開されているBlockchain基盤
  • アルゴリズムやBlockchain自体のソースコードに違いは(ほぼ)ないが、Testnet上の流通通貨に価値はない(市場で取引がされていない)
  • Ethereumには、Ropsten/Kovan/Rinkeby/Goerliなど複数のTestnetが存在する
  • Testnet上の流通通貨は、Faucetと呼ばれる発行体から流通通貨を得る必要がある

目的

NFTの実装方法を把握する

NFTのmint方法を把握する

XXX To Earnの実装方法を把握する

Blockchain基盤ごとのデプロイ方法を把握する

Blockchain基盤ごとの特性(処理速度、ガス代)を把握する

やったこと

内容

Blockchain上にデプロイしたContractは以下の2つ

  • ERC20: 仮想通貨(アプリ上ではOppay Token)
  • ERC721: NFT(アプリ上ではOppay NFT)

以下のPublicなBlockchain基盤(EVM互換)にデプロイ

  • Ethereum(Ropsten Testnet)
  • Polygon(Mumbai Testnet)
  • Avalanche(Fuji Testnet)

全体像

概要

ソースコード

Github上にソースコードを公開しています

https://github.com/ryugairie/dapps-nft

検証

各Blockchain基盤ごとに、Tap(Tokenのmint)にかかる速度/Gas代を比較する

速度比較

Oppay Tokenの1Tapにかかる処理時間

※ MainnetとTestnetでは違う可能性あり

※ Blockchain Nodeの性能にもよるため、確実な値ではないことに注意

デモ

Gas代比較

Oppay Tokenの1TapにかかるGas代(ドル)

※ MainnetとTestnetでは違う可能性あり

  • Ethereum: 0.00013ETH(0.14$)

  • Polygon: 0.00013MATIC(0.000054$)

  • Avalanche: 0.00143AVAX(0.026$)

まとめ

ブロックチェーン基盤(ネットワーク)の選定は重要

EVM互換性のある基盤か?処理速度/ガス代は問題ないか?等、検討することが多い

気になり

  • EVM互換のないBlockchain基盤でのDApps開発
    • SolanaでのWASM(Rust)を用いた開発手法が気になる
  • Layer0でのBlockchain基盤の開発
    • Polkadot/Avalanche/Cosmosで独自のBlockchain基盤(DAppsではない)の開発手法が気になる

Discussion