📠
[Blockchain]ToEarnアプリ実装を通してEVM互換性があるとはどういうことか理解してみた
デモ
以下URLで公開しています
ID: irie
PW: ryUg@12
機能
- 画像/名前を保持したNFT(Oppay NFT)をmintできる
- NFTのmint時に、ランダムなレベルが紐づけられる
- 選択した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と呼ばれる発行体から流通通貨を得る必要がある
- ex) Rinkebyの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上にソースコードを公開しています
検証
各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