Product
Hardhat v3 + MultiBaas: 実行に忠実な Ignition 同期モデル

今回の hardhat-multibaas-plugin のリリースでは、Hardhat v3 / Ignition の統合を、Ignition が実際に「何を実行するか」を基準に動作するよう見直しました。目的はシンプルです。MultiBaas はデプロイ結果に存在するものではなく、「Ignition が実行した内容」を正しく反映すべき、という考え方です。
Hardhat v3 は、v2 とは異なるモデルを採用しているため、既存のスクリプトは修正が必要になります。
また、プラグインのバージョニングも Hardhat に合わせ、v1 から v3 へとスキップしました。Hardhat v2 を使い続ける場合は、legacy/hardhat-v2 ブランチをご利用ください。
変更点
Ignition のデプロイフローに準拠したプラグイン挙動(プロンプト・リセット・UI を含む)
実行内容ベースの MultiBaas 同期ロジック
チェーン ID ミスマッチを防ぐガード機構
既存デプロイを同期可能にするオプトインモード
変更のメリット
Ignition のデプロイ結果には、過去の実行で作られたコントラクトが含まれることがあります。この結果をそのまま同期すると、MultiBaas の状態が Ignition の実際の判断とズレる可能性があります。具体的には以下のようなケースです:
ソースコードが変更されても、Ignition が再デプロイ不要と判断した場合
複数の futures のうち一部だけ再実行された場合
他のモジュールを更新しつつ、既存の安定したデプロイは維持したい場合
今回の変更により、デフォルトでは「今回の実行で Ignition が実行した futures のみ」を同期します。これにより、Ignition のリコンシリエーションロジックと整合性が保たれ、不要なコントラクトのバージョン更新を防げます。
新しいオプション
以下の mbConfig フラグが追加されました:
syncExisting: true にすると、今回実行されていなくても、Ignition のデプロイ結果に含まれるすべての登録済み futures を同期します。明示的なリコンシリエーションや一括同期に使用します。
requireChainIdMatch: true(デフォルト)にすると、Hardhat のネットワークのチェーン ID と MultiBaas 側のチェーン ID を比較し、不一致の場合は即座にエラーにします。
使用方法
MultiBaas に連携したい Hardhat Ignition の futures を、Ignition モジュール内で mb.link を使って登録します。プラグインは、今回の実行内容に基づいたルールでアップロードおよびリンク処理を行います。
設定例
mbConfig: {
host: configVariable("MB_PLUGIN_HOST"),
apiKey: configVariable("MB_PLUGIN_API_KEY"),
allowUpdateAddress: ["development"],
allowUpdateContract: ["development"],
syncExisting: false,
requireChainIdMatch: true
}
テスト
npm test
参考資料
MultiBaas ドキュメントおよび API: