SaaS企業で働くPdMエンジニアのブログ

SaaS企業でプロダクトマネージャー兼エンジニアとして働いています。趣味でブロックチェーンやNFTも時々やります

EthereumとPolygonでトークンのブリッジ方法について。チェーンの間で働くブリッジおじさん

前回のNFT記事ぶりにブロックチェーンネタです。EthereumとPolygonのブリッジについての話です。理論的な話というより、実務的にどう動いているのかを中心にまとめました。

ブリッジとは

ブリッジとは、チェーン間のトークン移動を橋渡しする存在です。今回取り上げるPolygon公式ブリッジについて、理論的な話は以下を参照ください。

docs.polygon.technology

基本的な考え方として、

  • L1,L2にブリッジコントラクトが存在しており、L1,L2それぞれのコントラクトをtokenmapperというマッピングに登録する
  • 「おじさん」と呼ばれる、どこかSPOFになりうるところを信頼してL1のコントラクトの移動を検知してL2に移動させる。このとき、tokenmapperを参照する。トラストレスは存在せず、おじさんがコントラクトをみて、L2/L1への引換券をくれる。

おじさんの元ネタはこちらです。チェーン間のトークン移動のため、トラストレスなブリッジを実現しようとみんな頑張っています。しかしながら、完全なトラストレスは難しく、何らかトラストする対象を挟むことで解決しています。これを「おじさん」とごく少数の人間の間では呼んでいます。

※ Polygon公式ブリッジでは完全な一存ではなく、トラストレスらしくするためのチェックポイントを設けていますが、便宜上おじさんと呼びます。

f:id:naomasabit:20220306152131p:plain

EthereumからPolygonへのブリッジ方法

  • EthereumにERC20をデプロイ
  • L2のERC20は、deposit, withdrawと呼ばれるものを実装してデプロイする必要があります。これはChildERC20という公式の実装がある。

ChildERC20

github.com

  • Ethereum,Polygonへそれぞれデプロイが済んだら、tokenmapperを使ってマッピングを登録する。登録後数日まつと反映される。

mapper.polygon.technology

参考

Bridging ERC-20 from Ethereum to Polygon PoS | Chainstack documentation

Ethereum↔Polygonで公式ブリッジを使ったトークン移動のフロー

具体的なトークン移動のフローを見てみましょう。登場人物は以下です。

Ethereum

Polygon

オフチェーン

  • token mapper
  • おじさん

EthereumからPolygonにERC20を送る場合

以下のようになります。EOAはPolygonBridgeContractに対してdepositFor(預金) functionを叩きます。 PolygonBridgeContractは預けたいEthereumのERC20をPolygonBridgeContractに送って預託(lock)します。

f:id:naomasabit:20220317090532p:plain

オフチェーンのおじさんはこのdepositForのイベントを監視し、Polygon側のChildChainContractにdepositTokens Functionを投げ、Polygon側のERC20トークコントラクトにdeposit functionを叩きにいきます。 このEthereumのERC20コントラクトとPolygonのERC20コントラクトを紐づけるためにおじさんが参照するものがtokenmapperです。故に、tokenmapperに登録されてから出ないとこれらのブリッジは動きません。 tokenmapperへの登録はPolygonチームへの申請式です。

f:id:naomasabit:20220306153432p:plain

depositは実質mintであり、Polygon側でトークンを新たに生み出します。

PolygonからEthereumに送る場合

PolygonからEthereumに送る場合は上記の逆です。Polygon側でwithdraw関数を行うとburnされ、Ethereum側でロックされているトークンが払い戻されます。

L1のEthereumで預けられたらL2のPolygonで生み出し、L2のPolygonから引き出されたら、L2でバーンしてL1で戻す。まさに引換券ですね。 上記の処理のために、ChildERC20Contractではdeposit/withdrawを実装する必要があります。

まとめ

ブリッジについて少し動きが分かったでしょうか。L2チェーンが勃興しており、ChildERC20など、手順を整備しているPolygonのように他チェーンでもブリッジのための手順が整備されていくかと思います。チェーンごとにブリッジ要件があり、Polygonの要件と限らないのでブリッジしたいチェーンはよくよく調べることになるでしょう。