ポリシーイントロダクション
256 BlocksのRegoベースのポリシーエンジンを使用してカスタムルールでトランザクションを制御
256 Blocksポリシーエンジンは、柔軟で強力なトランザクション制御ルールを定義するためにRego言語を使用します。ポリシーにより、支出制限の適用、地域によるアクセス制限、特定の操作のブロック、カスタムビジネスロジックの実装が可能です。
ポリシーエンジンとは?
ポリシーエンジンは、実行前にすべてのトランザクションリクエストを定義されたルールに対して評価します。ポリシー評価は完全にステートレスでパフォーマンスを確保しながら、エンドポイントを通じて許可されるトランザクションをきめ細かく制御できます。
主なメリット:
- 宣言的ルール:何をブロックすべきかを定義し、どのようにブロックするかではない
- リアルタイム評価:ポリシーはすべてのリクエストでサブミリ秒のレイテンシで評価される
- 柔軟な条件:トランザクション値、送信元の国、時刻など、複数の要素を組み合わせ可能
ポリシーの仕組み
ポリシーは各リクエストに対して2つの独立した決定を制御します:
| ルール | 制御対象 | デフォルト |
|---|---|---|
deny | RPC/MCPリクエストが許可されるかブロックされるか | false(許可) |
denyGasSponsor | 256 Blocksがガス代をスポンサーするか | false(スポンサー) |
これらのデフォルトはシステムによって定義されており、オーバーライドできません。
リクエストアクセス(deny)
RPCまたはMCPリクエストを完全にブロックするにはdenyルールを使用します。いずれかのdenyルールが一致すると、リクエストは拒否されます。
# $10,000 USDを超えるトランザクションをブロック
deny if {
input.usd_value > 10000
}ガススポンサーシップ(denyGasSponsor)
256 Blocksがガス代を支払うタイミングを制御するにはdenyGasSponsorルールを使用します。いずれかのdenyGasSponsorルールが一致すると、ユーザーは自分でガス代を支払う必要があります。
# $100を超えるトランザクションはスポンサーしない
denyGasSponsor if {
input.usd_value > 100
}両方のルールは独立して評価されます - リクエストは許可されてもスポンサーされない場合や、その逆の場合があります。
ポリシーレベル
ポリシーは最も広いものから最も具体的なものまで、3つのレベルで評価されます:
プラットフォームレベルポリシー
プラットフォームポリシーは256 Blocksによって管理され、プラットフォーム全体のすべてのリクエストに適用されます。これらはオーバーライドできない基本的なセキュリティとコンプライアンス要件を適用します。プラットフォームレベルの制御の詳細については、制限事項を参照してください。
組織レベルポリシー
組織ポリシーは、MCPエンドポイントかRPCエンドポイントかに関係なく、組織内のすべてのエンドポイントに適用されます。組織レベルポリシーは以下に使用します:
- グローバルコンプライアンスルール(例:ブロックされた国)
- 組織全体の支出制限
- ユニバーサルセキュリティコントロール
エンドポイントレベルポリシー
エンドポイントポリシーは特定のエンドポイントにのみ適用されます。各エンドポイントはMCPまたはRPC(両方ではない)であるため、ポリシーは自動的にそのエンドポイントタイプに適用されます。エンドポイントレベルポリシーは以下に使用します:
- アプリケーション固有の制限
- 特定の統合のためのカスタムビジネスロジック
- 組織のデフォルトを超える追加の制限
評価順序
リクエストが到着したとき:
- プラットフォームポリシーが最初に評価される(256 Blocksによって管理)
- プラットフォームレベルで拒否された場合、リクエストは却下される
- 組織ポリシーが2番目に評価される
- 組織レベルで拒否された場合、リクエストは却下される
- エンドポイントポリシーが最後に評価される
- エンドポイントレベルで拒否された場合、リクエストは却下される
- どのdenyルールも一致しなければ、リクエストは続行される
各レベルは下位レベルがオーバーライドできないベースラインとして機能します。上位レベルのポリシーがリクエストを拒否した場合、下位レベルのポリシーはそれを許可できません。