mcpField
L
layerzero-messaging

layerzero-messaging

github.com/hedera-dev開発28475 回インストール8 週間前に更新
リポジトリ

layerzero-messaging について

layerzero-messagingは、EVMチェーンとHedera間でLayerZero V2のOApp/OFTメッセージングを構築するスキルです。ペア構成のOFTとHederaのHTSコネクターを中心に、ピアやライブラリの設定、トークン処理、送信手数料を扱います。

主な機能

  1. 01EVMとHederaのペアOFT
  2. 02HTSコネクターのトークン処理
  3. 03ピアとライブラリの設定
  4. 04LayerZero V2の送信と手数料
  5. 05Hederaトークンの関連付け案内

活用シーン

  1. 01EVM–Hedera間のトークン経路設定
  2. 02HTSベースのOFT送金実装
  3. 03送信前のピア、ライブラリ、受信設定確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hedera-dev/hedera-skills --skill layerzero-messaging

インストール後、Claude Code で/layerzero-messagingを入力して読み込まれたか確認します。

同梱ファイルreferences/examples.mdreferences/hedera-endpoints.md

詳細

LayerZero メッセージング(Hedera)

OFT パターン: ペアとなる Omnichain Fungible Token をデプロイします。EVM 側には標準の OFT を、Hedera 側にはHTS コネクター OFTをデプロイし、両方向に setPeer を設定して、LayerZero V2 の手数料で送信します。

OFT (EVM)  ←setPeer→  HTSConnectorOFT (Hedera)
  │ send / quoteSend          │ _debit burn / _credit mint (HTS 0x167)
  └──────── Endpoint V2 + ULN + DVN + Executor ────────┘

このスキルでは、LayerZero V2 OApp/OFT + Hedera HTSに焦点を当てています。学習用テンプレートでは、シンプルなワーカーや手動/UI による lzReceive リレーを使用する場合があります。これは本番環境における LayerZero Labs の検証と同じものではありません。

クイックリファレンス

概念ルール
エンドポイントチェーンごとの ILayerZeroEndpointV2
ピア両方の側で setPeer(remoteEid, bytes32(uint256(uint160(remoteOApp)))) を設定
送信quoteSend(SendParam, payInLzToken) → send{value: nativeFee}(SendParam, fee, refund)
受信先SendParam の to は bytes32(アドレスをパディングした値)
Hedera OFTHTS ベースのコネクター。HTS トークンを作成し、送信時にバーン、受信時にミント
HTS 手数料createFungibleToken の支払いに使用するネイティブトークンを添えてコネクターをデプロイ
承認Hedera → EVM の send の前に、ユーザーはHTS トークンで approve(connector, amount) を実行する必要があります
IDピア/dstEid には LayerZero の EID を使用します。EVM のチェーン ID ではありません

Endpoint/ULN/DVN アドレスの参照元については、references/hedera-endpoints.md を参照してください。ワイヤリングと送信の概要については、references/examples.md を参照してください。

重要:両方向をワイヤリングする

ピア設定が不完全だと、経路が使用不能になります。ローカルの各 OApp で、次の設定を行います。

  1. setPeer(remoteEid, remoteOAppAsBytes32)
  2. setSendLibrary / setReceiveLibrary(ULN302)
  3. setConfig — 送信ライブラリに ExecutorConfig(type 1)、送信および受信ライブラリに UlnConfig(type 2)
  4. setEnforcedOptions — 例:msgType 1(トークン送信)向けの lzReceive ガス

送信前に、両チェーンで peers(remoteEid) を使って確認してください。

重要:Hedera HTS コネクターの仕様

Hedera では、主要な経路として通常の ERC-20 OFT を使用しないでください。HTS ベースのコネクターを使用します。

  • コンストラクターがプリコンパイル 0x167 を介して代替可能な HTS トークンを作成します(supply key = connector)
  • _debit:HTS トークンを受け取り → バーン
  • _credit:ミント → HTS トークンを送信
  • 数量は、HTS のミント/バーン/送信で int64 に収まる必要があります
  • EVM → Hedera の受信前に、受信先アカウントを HTS トークンに関連付けてください
// Deploy with value so createFungibleToken fee is paid
new HTSConnectorOFT{ value: htsCreateValue }(name, symbol, lzEndpoint, owner);

送信フロー

SendParam memory sendParam = SendParam({
    dstEid: remoteEid,
    to: bytes32(uint256(uint160(receiver))),
    amountLD: amountLD,
    minAmountLD: (amountLD * 9) / 10,
    extraOptions: OptionsBuilder.newOptions().addExecutorLzReceiveOption(lzReceiveGas, 0),
    composeMsg: "",
    oftCmd: ""
});

MessagingFee memory fee = IOFT(localOFT).quoteSend(sendParam, false);
IOFT(localOFT).send{ value: fee.nativeFee }(sendParam, fee, payable(refundTo));

Hedera → EVM に関する注意: forge による手数料シミュレーションは、Hedera JSON-RPC の wei/tinybar のスケーリングと一致しない場合があります。この方向では、cast で quote し、ネイティブ手数料をスケーリングすることがよくあります。

デプロイチェックリスト(一般)

  1. EVM OFT をデプロイ(必要に応じて事前ミント)
  2. HTS 作成用の値を添えて Hedera HTS コネクター OFT をデプロイ
  3. ワーカーをデプロイ(Labs DVN/executor または学習用のシンプルなワーカー)
  4. 両方の OApp をワイヤリング(setPeer + ライブラリ + 設定 + enforced options)
  5. Hedera アカウントを htsTokenAddress() に関連付ける
  6. 該当する場合はフロントエンドの設定を同期し、UI の自動リレーを使う場合はリレー用鍵に資金を用意
  7. 少額を送信し、LayerZero Scan で追跡(該当するテストネット/メインネット)

学習用リレー

一部のテンプレートでは、シンプルな DVN/executor モックと明示的な lzReceive リレー手順を使用します。これは学習用の補助として扱ってください。本番アプリでは LayerZero の検証ネットワークを利用し、アプリサーバー内の独自リレーヤー鍵には依存しません。

チェックリスト

  • 正しい EID(EVM のチェーン ID ではない)を使って、両方向のピアを設定済み
  • 送信/受信ライブラリと ULN/executor の設定を適用済み
  • Hedera 側が HTS コネクターであり、作成手数料を支払い、supply key がコネクターになっている
  • インバウンド送信の前に、受信先を HTS トークンに関連付け済み
  • quoteSend のネイティブ手数料を send に添付済み
  • 受信先アドレスを bytes32 としてエンコード済み
  • 学習用である旨の免責事項を記載(監査未実施/メインネットの資金には使用しないこと)

参考資料

コメント