紹介

概要

Token Authorization Rules(Token Auth Rulesとも呼ばれる)は、SPLトークン上で実行される命令の権限を評価するための高度なメタプログラミングツールです。このプログラム自体は、特定の条件を表すルールの集合であるルールセットの作成と更新に使用できます。

はじめに

トークン操作が実行されると、プログラムは命令の詳細(例:トークン転送の宛先アドレス)とともに呼び出され、これらの詳細がルールセットに対して検証されます。ルールが無効と評価された場合、命令は失敗し、トランザクション全体が取り消されます。これにより、トークン操作をToken Auth Rulesプログラムと結合するトランザクション全体を構築でき、関連するルールセット内のルールに違反した場合、トランザクション全体、したがって含まれるトークン操作が取り消されます。

機能

ルールセットの作成または更新 - ルールセットの内容を初期化および更新するために使用される命令。

ルールセットバッファ - 大きなルールセットの処理方法。

ルールセットの検証 - ルールセットの検証方法。

ルールタイプ

認可ルールは、validate()メソッドを実装するRule列挙型のバリアントです。

プリミティブルールと、1つ以上のプリミティブルールを組み合わせて作成されるコンポジットルールがあります。

プリミティブルールは評価に必要なアカウントやデータを格納し、実行時にvalidate()関数に渡されるアカウントと明確に定義されたPayloadに基づいてtrueまたはfalseの出力を生成します。

コンポジットルールは、プリミティブルールのいずれかまたは全てがtrueを返すかどうかに基づいてtrueまたはfalseを返します。コンポジットルールは、より複雑な論理を実装するより高レベルなコンポジットルールに組み合わせることができます。Rule列挙型の再帰的定義により、トップレベルのコンポジットルールでvalidate()を呼び出すと、トップから開始して各レベルで検証を行い、構成要素であるプリミティブルールまで検証が実行されます。

オペレーション

ルールセットはHashMapデータ構造上に構築され、トークンで使用される可能性のある異なる命令タイプ(例:transfer、delegate、burnなど)のさまざまなルールセットを格納することを目的としています。Token Auth Rulesでは、これらのさまざまな命令をオペレーションと呼び、オペレーションHashMapデータ構造のキーとして使用されます。各オペレーションは、異なる関連ルールセットを持つことができます。

シナリオ

シナリオオペレーションへの任意の追加であり、命令が呼び出される可能性のあるより具体的な状況を処理するために使用されます。データ形式の観点から、オペレーションシナリオの組み合わせは、コロン<Operation>:<Scenario>で区切られた2つの文字列です。例えば、Token Metadataは、Token MetadataからToken Auth Rulesへの呼び出しで権限タイプをシナリオとして使用します。Transferオペレーションは、トークンの所有者またはデリゲートのどちらかによってトークン上でトリガーされる可能性があり、ルールセットマネージャーはこれらの異なるシナリオを異なるルールで管理したい場合があります。この特定の使用例を処理するために、シナリオを使用して区別を管理できます。前の例で使用される2つのHashMapキーは、Transfer:OwnerTransfer:Delegateになります。

複数のシナリオ間で同一のルールを管理する方法については、Namespaceをご覧ください。

ペイロード

Token Auth Rulesプログラムは、ルールセットからの評価を要求するプログラムから受信されるペイロードデータに依存します。Payloadの基礎データ構造はHashMapであり、PayloadフィールドはHashMapキーとして表現されます。ほとんどのルールは、検証時にルックアップが実行できるように事前定義されたPayloadフィールドを格納します。

Payloadの使用方法の詳細については、Validate命令をご覧ください。

リソース