準拠市場 https://docs.hazbase.com/reference/compliant-market/ リファレンス実装に戻る リファレンス実装 準拠市場 @hazbase/kit + ethersを使用した準拠トークン市場構築の実践的なエンドツーエンドリファレンス。デプロイ順序、ロール&接続設定、ガバナンス/緊急停止の伝播に焦点を当てています。 概要 このドキュメントは準拠市場パターンの完全なリファレンスを提供します。 推奨デプロイ順序 必要なロール&接続設定 ガバナンスと緊急停止の伝播 最小限のSDKベースコード例(UI無し) 想定シナリオ • KYC承認済みユーザーのみが取引可能(Whitelist経由) • 資産はMarketManagerを通じて取引 • 流動性/買い戻しロジックはReservePoolが処理 • 緊急時にはシステムを即座に停止可能 • 復旧と設定変更はガバナンス + タイムロック経由 推奨デプロイ順序 1 Whitelist 2 FlexibleToken / BondToken 3 MarketManager 4 ReservePool 5 EmergencyPauseManager 6 GenericGovernor + TimelockController クイックスタート(最小デプロイ&接続設定) @hazbase/kit + ethersを使用した準拠市場のデプロイと接続設定を示す最小限の実行可能例です。 typescript 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 import { ethers } from "ethers" ; import { WhitelistHelper , FlexibleTokenHelper , MarketManagerHelper , } from "@hazbase/kit" ; const provider = new ethers . JsonRpcProvider ( process . env . RPC_URL ! ) ; const deployer = new ethers . Wallet ( process . env . PRIVATE_KEY ! , provider ) ; ( async ( ) => { // 1. Deploy whitelist const { helper : whitelist } = await WhitelistHelper . deploy ( { admin : deployer . address } , deployer ) ; // 2. Deploy payment token const { helper : usdc } = await FlexibleTokenHelper . deploy ( { name : "USD Coin" , symbol : "USDC" , decimals : 6 , transferable : true , admin : deployer . address , } , deployer ) ; // 3. Deploy market manager const { helper : market } = await MarketManagerHelper . deploy ( { admin : deployer . address , splitter : deployer . address , bps : 10 , // 0.1% } , deployer ) ; // 4. Wire compliance await market . setWhitelist ( whitelist . address ) ; await market . setPaymentToken ( usdc . address , true ) ; console . log ( "Compliant market ready:" , market . address ) ; } ) ( ) ; 主要アクター Actor 責務 Deployer 初期デプロイと接続設定 Timelock 最終管理権限 Governor 提案と投票 Guardian 緊急停止 Compliance Ops KYC操作 Users 承認済み参加者 Splitter 手数料受取先 ロール&接続設定マトリクス EmergencyPauseManager Role Holder Purpose PAUSER_ROLE Guardian 停止対象の登録 GUARDIAN_ROLE Guardian 停止の実行 GOVERNOR_ROLE Timelock 停止解除の実行 MarketManager Setting Description setWhitelist コンプライアンスの適用 setPaymentToken 決済の許可 setFee(bps, splitter) マーケットプレイス手数料 手数料ルール: bps = 1000 → 100%。一般的な手数料は5〜10 bps。 緊急停止(コードスニペット) typescript 1 2 3 4 5 6 7 8 9 10 11 import { EmergencyPauseManagerHelper } from "@hazbase/kit" ; // Register pause targets await pauseManager . registerPausable ( market . address ) ; await pauseManager . registerPausable ( reservePool . address ) ; // Guardian triggers immediate pause await pauseManager . connect ( guardian ) . pauseAll ( ) ; // Recovery must go through governance (timelock) await pauseManager . connect ( timelock ) . unpauseAll ( ) ; ガバナンスフロー(概念図) Proposal → Vote → Queue (Timelock) → Execute 一般的なガバナンスアクション: システム停止解除 手数料の更新 決済トークンの追加/削除 準備金パラメータの調整 デプロイチェックリスト デプロイ Whitelist Token(s) MarketManager ReservePool EmergencyPauseManager Governor + Timelock 接続設定 ホワイトリストを設定 決済トークンを許可 停止対象を登録 手数料を設定 管理者ロールをTimelockに移譲 スモークテスト ホワイトリスト未登録ユーザーは取引不可 ホワイトリスト登録ユーザーは取引可能 Guardian停止で操作が停止 Timelock停止解除でシステム復旧 完全なリファレンスコード 完全な実行可能スクリプト(deploy / wire / flows): reference/compliant-market/ ├── 00-deploy.ts ├── 01-wire.ts └── 02-flows.ts GitHubで見る Stable このドキュメントは推奨アーキテクチャを反映しています。信頼境界とフローは設計上安定しています。