Stargate の仕様調査
Stargate Finance (https://stargate.finance/) の仕様を調査
最終的に Stargate 経由の bridge transfer transaction の監視と、bridge transaction の発行ができる状態まで調査する予定
Reference
Stargate Finance の frontend から実行できる bridge は少なくとも以下の 2 種類が確認できる
- 送金元・先チェーンの両側に存在する Stargate Pool の流動性を使用して swap (bridge)
- LayerZero の OFT(Omnichain Fungible Token) を使用して swap (bridge)
1 の pool base の bridge は Developer Docs にある程度仕様が書いてある
2 の OFT を使用した bridge はそもそも Stargate というより LayerZero の技術なので、LayerZero の docs に記述されている模様
Example of pool base transfer
Ethereum -> OP Mainnet | USDC
Transaction in Ethereum
Transaction in OP Mainnet
Ethereum -> Arbitrum | ETH
Transaction in Ethereum
Transaction in Arbitrum
Example of OFT transfer
Ethereum -> Fantom | WETH (OFT Proxy -> OFT)
Transaction on Ethereum
Transaction on Fantom
Fantom -> Ethereum | WETH (OFT -> OFT Proxy)
Transaction on Fantom
Transaction on Ethereum
Fantom -> Base | STG (OFT -> OFT)
Transaction on Fantom
Transaction on Base
Pool base transfer の from , to transaction の関連
Stargate は cross chain message に LayerZero を使用しているので、LayerZero の Packet 系 event log を比較することで、対応する transaction を決定できる
- to chain で Stargate Pool contract の SwapRemote event log を取得
- SwapRemote event log と同一 transaction の LayerZero contract の PacketReceived event log から srcAddress , nonce を取得
- from chain で srcAddress が同一の Stargate Bridge contract の SendMsg event log を取得
- SendMsg event log の nonce が PacketReceived event log の nonce と一致する場合は関連付ける
OFT transfer の from, to transaction の関連
- to chain で (OFT / OFT Proxy) contract の ReceiveFromChain event log を取得
- ReceiveFromChain event log と同一 transaction の LayerZero contract の PacketReceived event log から srcAddress , nonce を取得
- from chain で srcAddress が同一の (OFT / OFT Proxy) contract の SendToChain event log を取得
- SendToChain event log と同一 transaction の LayerZero contract の Packet event log を取得
- Packet event log の nonce が Packet event の nonce (payload の最初の 16byte) が一致する場合は関連付ける
対応 token 一覧
Pool Base の対応トークンは docs にリストがある
OFT は Stargate 以外の第三者でも作成できるので、Stargate が管理しているトークンリストは docs 系では公開されていなさそう
推測ではあるが、Stargate の frontend で表示されている OFT token list は Stargate が deploy した OFT に限られていて、deployer address は各チェーンに 1,2 個程度なので、履歴を辿って deployer address を特定すれば、deployer の contract createtion transaction history からリスト復元は可能ではありそう
→ Stargate deploy 以外の OFT token も含まれているため、contract 監視とか別の仕組みが必要そう
OFT について
OFT は LayerZero が導入されているチェーンであれば誰でも Omnichain (cross chain) 対応の FT を作成できる技術
新しく OFT を発行する場合は異なる chain 同士の OFT を簡単に bridge できる
この場合流動性提供や deposit/withdraw 等の仕組みは必要なく、両チェーンで OFT が mint/burn されることで bridge が実現される
ただし、OFT の規格に沿っていない既存の FT を bridge したい場合、既存の FT に対して専用の OFT Proxy contract を作成し、その contract に 既存の FT を lock (deposit) することで、lock した量と同じだけの OFT を bridge 先で mint する仕組みを取る
Stargate が発行する $STG トークンは全てのチェーンで OFT として発行されているので、流動性提供や deposit/withdraw の仕組みを必要とせず、 $STG が発行されている全てのチェーンで自由に bridge が可能(LayerZero の message fee は必要)
一方 Fantom chain に (W)ETH を bridge したい場合、既存の Ethereum chain 上の WETH は OFT 規格のトークンでは無いため、OFT Proxy contract が必要になり、Fantom に Bridge する際には、
Ethereum 上の WETH を Proxy contract に lock して、その分の OFT 規格の WETH がFantom 上で mint される形となる