2022.07.08

Moonbeam:クロスチェーンの世界に差し込むEtherの光

こんにちは、Y.Cです。今回はMoonbeamというブロックチェーンを紹介します。


https://moonbeam.network/

 

Moonbeamは、

  • Polkadotのparachainで、
  • EthereumとSubstrateのエコシステムに互換性があり、
  • ネイティブにCross-Chain Integrationされた
ブロックチェーンです。ファルシのルシがコクーンでパージ並に意味がわからないですね。一つずつ読み解くと

 

Polkadot: 複数のブロックチェーン間でメッセージやアセットのやり取りを可能にすることを掲げたブロックチェーン。Ethereumの共同創設者であるDr. Gavin Woodによって作られた。

parachain: Polkadotの構成要素の一つで、ブロックの検証をRelay ChainというPolkadotのコアとなるチェーンに任せ、特定の特化した機能を提供する。Relay Chainに対し複数のparachainがパラレルに存在し、互いにやり取りすることができる。

Ethereum: Bitcoinに次ぐ規模を誇るブロックチェーンで、スマートコントラクトと呼ばれるプログラム実行環境の上で様々なアプリケーションが展開されている。

Substrate: ブロックチェーン開発のフレームワークで、これで作られたブロックチェーンはPolkadotに簡単に接続できる。

Cross-Chain Integration: Moonbeam自身がSubstrateで実装されたPolkadotベースなブロックチェーンなので他のブロックチェーンと簡単にやりとりできる。

 

ということです。どうですか?凄いですね!!!いや意味がわからないですね!!!!もう少し詳しく見ていきましょう🏃

概観

 


https://moonbeam.network/networks/moonbeam/

 

Polkadot、Moonbeam、そしてEthereumがいい感じに並んでいるところをスクショしました。一旦上にいるSolidityコントラクトは無視してください。Polkadot の銀河でRelay Chainを惑星とするならば、parachainであるところのMoonbeamは月、つまり衛星です。惑星と衛星は宇宙エレベーターで繋がっているため、行き来することができます。そしてEthereumエコシステムは別の巨大な銀河です。PolkadotとEthereumはワームホール(bridge)を接続することで行き来することができます。無理やり例えてみましたが、こうして俯瞰すると非常に壮大な世界の中であらゆるブロックチェーンが繋がっていくことがわかります。ちなみにThe Mergeを控えたEthereumブロックチェーンは、自身を惑星間航行の準備をしている宇宙船と称しています

 

Cross-Chain Integration

Moonbeamの一番の訴求ポイントでもある、あらゆるブロックチェーンが繋がりcross-chainとなっていくことの何が嬉しいのか?という点ですが、Moonbeamのvisionでは以下が挙げられています。
  • 他のチェーンを利用しているユーザーやアセットにリーチできる
  • コストやスケーラビリティに課題がある場合、プロジェクトを他のチェーンへ移行する、あるいは複数チェーンで同時稼働するハイブリッドアプローチを取ることができる
リーチ範囲が広がるのは単純かつ強力なメリットです。スケールしたいなら複数チェーンを使えばいいじゃない、というのはLayer 2がどうのこうのという議論をすっ飛ばした非常にインパクトのある発想ですね。確かに複数チェーンに跨ってやり取りするコストが低ければ可能かもしれません。cross-chainの世界では、ハイブリッドアプローチを前提にしてどのようにデータを分割したり同期したりするかを予め考えておくことになるかもしれません。

 

Ethereumとの互換性

Moonbeamは完全なEVMを内包しておりEthereumのコントラクトをほぼそのままデプロイすることが出来ます。また、アカウントやキーの仕様も同じで、Web3 RPCも備えています。つまりEthereumで築かれてきたエコシステムの恩恵をまるっと享受することができます。既存のEthereumプロジェクトを移行することも簡単です。

 


Etherscanに相当するblock exploreとして Moonscanがあります。Etherscanそっくりです。

 

Substrateとの互換性

MoonbeamはSubstrateエコシステムの恩恵も受けることが出来ます。Substrate系のblock exploreとしてSUBSCANが、ウォレットとしてPolkadot.jsが利用できます。

 

ネットワーク

ネットワークは、メインネットであるMoonbeamに加えカナリアネットであるMoonriver、テストネットであるMoonbase Alphaがあります。

カナリアネットとは?

メインネットに先駆けて先進的な機能を導入するネットワークです。単純なテストネットと違い、サンドボックス環境ではなくメインネットと同様パブリックに稼働しており、あらかじめこちらにアプリをデプロイすることで問題をいち早く検出することができます。トークンはFaucetもあるにはあるのですが配布量は極小で、メインネットと同様に取引所で購入するのが主な入手手段となります。名前は炭坑夫がカナリアを鉱山に連れて行き有毒ガスが漏れていればすぐ気付けるようしていたことに由来します。

比較表

名称MoonbeamMoonriverMoonbase Alpha
位置付けMainnnetcanary network,
Canarynet
Testnet
ネイティブトークンGlimmer (GLMR) Moonriver (MOVR)DEV
ネイティブトークンの
総発行量(2022/07/07)
1,025,925,65010,390,737-
ネイティブトークンの
価格(2022/07/07)
¥90.61¥1696¥0
ステーキングで
報酬をもらうために
delegateする
トークンの
仕様上の最低量※
50 GLMR5 MOVR1DEV
※実際はより多く必要になる可能性がある。後述するStakingのMinbondを参照

 

Moonriverの方がトークンが割高となっているのが興味深いですね。Moonbeamとの違いとして、Moonriverは最小のgas priceが100分の1となっています。単純に考えれば同じ処理をしてもMoonriverの方が消費するトークン量が100分の1となります。総発行量も100分の1ですから、メインネットではないとはいえ1トークン当たりの価値としてはMoonriverの方が高くなるわけですね。

 

パフォーマンス


https://docs.moonbeam.network/learn/platform/networks/moonbeam/

Moonbeamはパフォーマンスに関して特段優れているわけではありません。明確なTPS(1秒で処理できるトランザクション数)に関する言及は見つかりませんでしたが、block gas limit (block size) やblock time は Ethereum Mainnet と同等です。なのでTPSに関しても同程度の性能だと思います。ただ図にあるように将来的にはblock timeは半分、block gas limitは4倍になる想定なので、TPSとしては現状の8倍まで出る可能性があります。あと忘れてはいけないのは、これはLayer 1のチェーンであるため、Layer 2を載せる余地があるということです。まだ変身が残っている…!

 


moonscanで確認できるTPSは小さい数字になっていますが、これは単純に発行されているトランザクションの量が少ないためです。

 


直近のトランザクションを見ると、ブロック辺りのトランザクションが少なかったり、そもそもブロック番号が飛び飛びになっている=トランザクションを全く取り込まないブロックがあることがわかります。つまり現状トランザクションは全く詰まっていません!ただこれはまだ人気がないことの裏返しでもありますね。

 

実践

実際に手を動かして色々試してみます。

コントラクトのデプロイ


IDEのRemixを使って、テストネットMoonbase Alpha上に自作のYCTokenをデプロイしてみます。

FaucetでMoonbase Alpha用のネイティブトークンを受け取り、MetamaskのネットワークでMoonbase Alphaを選択、RemixのENVIRONMENTでInjected Web3を選択します。

Remix上ではMoonbase AlphaはEthereumのカスタムネットワークとして認識されていますね。DEVの保持量もEtherと表示されています。

 

 


なんの支障もなくコンパイルしてデプロイすることが出来ました。Ethereumと変わらないですね。ブロックに取り込まれるまでは30秒ほどかかりました。Moonbase Alphaの方は多少トランザクションが混んでいるようです。

 

 

Bridge


Moonbase Alphaと Ethereumのテストネット Kovan/Rinkebyの間には、デモ用のブリッジとERC20, ERC721のサンプルコントラクトが用意されています。ドキュメントではMoonbase Alphaで発行したトークンをKovanに送る方法が説明されていますが、試しにRinkebyからMoonbase Alphaへ送ってみたいと思います。

 

サンプルのERC20のInterfaceをコンパイルした後、MetamaskでRinkebyに接続し、デプロイ済みコントラクトのアドレスを”At Address”の右に入力します。そして”At Address”を押すとコンパイルしたInterfaceの関数が表示されるので、mintTokensを実行します。

 


 


Etherscanで確かにサンプルトークンが5発行されたことが確認できました。

 

次に、Bridgeを介してこれをMoonbase Alpha上のアカウントへ送ります。


先ほどと同様にブリッジコントラクトのInterfaceをコンパイルし、デプロイ済みのコントラクトアドレスを指定、sendERC20STokenの関数を選択し、ブリッジ先のChainID, 受け取り手のアドレス、送るトークン量を指定して実行します。

 


ここで警告が出ました。構わず実行するとエラーになってしまいました。ChainIDが間違っているようです。


https://docs.moonbeam.network/builders/integrations/bridges/chainbridge/

ドキュメントの記載が間違っていました。よく見ると最初にYCトークンをデプロイした際にRemixにカスタムネットワークのIDとして表示されていた1287が正解でした。

 


再度sendERC20STokenを実行し、しばらく待つとサンプルトークンがMoonbase Alphaのアカウントに届いていました。成功です!ちなみにその下にあるMERCとかいうやつは知らない人からいつの間にか送られていた知らないトークンです笑

今回試したBridgeはネットワーク間に第三者が必要となる形式ですが、parachainベースな方法でのBridgeが開発中だそうです。これでより一層Ethereumとのアセットのやりとりが円滑なるといいですね。

 

Staking

最後に、Stakingを試してみたいと思います。Polkadot系のチェーンでは、Collatorというブロックを生成する役割のアカウントに対して自身が保有するネイティブトークンをdelegateし、Collatorがブロック生成に成功すると報酬を得ることが出来ます。


https://apps.moonbeam.network/moonbase-alpha/staking

こちらのダッシュボード画面から、各ネットワークでStakingすることが出来ます。Select a collatorを選択し、誰にdelegateするか選びます。


Active PoolタブにはEffective amount bonded(そのcollatorのトークン+delegateされたトークンの量)が上位のcollatorが並んでいます。ここに表示されているcollatorはブロックを生成することができます。そしてcollatorのEffective amount bondedが少ないほど、自分がdelegateした際のトークンの割合が多くなるためrewardの量も増えます。ただcollatorのEffective amount bondedの順位が下がると、Active PoolタブからWaitingタブに陥落しブロックを生成できなくなる恐れがあります。

またcollatorごとにMin bondという欄があることが分かります。実はcollator一人に対して有効なdelegatorの人数も制限されており、今のところdelegate量の多い上位300人がrewardを貰えます。delegatorが300人未満のcollatorはネットワークごとのdelgate量の下限値がMin bondとなり、300人以上からdelegateされているcollatorについては300位の人のdelegate量がMin bondとなるわけです。

つまり一般的には、Effective amount bondedもdelegatorもほどほどに少ないcollatorを選択してdelegateするというのが有効な戦略となります。確かに全員がこの戦略のもとに動けば、大口のcollatorを回避していい感じにdelegateの量も人数も分散しそうですね。よく考えられてるなあ。

 


delegateして放置してみた結果です。ちゃんと貰えてる!テストネットとはいえ、数字が増えていくのは楽しいですね。取引所によってはトークンの保有額に比例してStakingの報酬を分配してくれるところもありますが、自力でStakingして分散システムの維持に貢献することでweb3を感じられる良さもありますよね。

 

感想

色々試してStakingまで出来てとても楽しかったです。今度はParachain同士のアセットの送受信やSubstrate方面のエコシステムについて調べてみたいと思います。

 

宣伝

グループ研究開発本部 次世代システム研究室では、最新のテクノロジーを調査・検証しながらインターネット上の高度なアプリケーション開発を行うエンジニア・アーキテクトを募集しています。募集職種一覧 からご応募をお待ちしています。

  • Twitter
  • Facebook
  • はてなブックマークに追加

グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。

 
  • AI研究開発室
  • 大阪研究開発グループ

関連記事