制限⚓︎
トランザクション が有効な制限に違反した場合、検証時に拒否され、承認されることはありません。 すべての制限はオンチェーン上に保存され、ネットワーク内のすべての ノード により検証されます。
制限は アグリゲートトランザクション 内でも適用されます。 いずれかの 埋め込みトランザクション が該当するルールに違反すると、 そのアグリゲート全体が拒否されます。
制限は専用の「制限トランザクション」を使用して作成・管理され、オンチェーン上に保存されるため、 誰でも内容を確認できます。 これにより、外部システムはオフチェーンのロジックを信頼することなく適格性や遵守状況を評価できます。
主な制限には次の 2 種類があります。
情報
元々はコンプライアンス要件や内部方針の強制など、厳密な制御を必要とする特定用途のために設計されたが、 現在ではセキュリティ向上やスパム防止など、他の目的にも利用されています。
アカウント制限⚓︎
- アカウント制限
- 特定の アカウント がどのような操作を行えるかを制限する 制限 の一種です。 どのアドレスとやり取りできるか、どのモザイクを受け取れるか、どのトランザクションタイプを送信できるかなどを定義します。
アカウント制限はそのアカウント自身のみが作成・変更・削除できます。 そのアカウントが マルチシグアカウント の一部である場合、 変更には必要数の連署者による承認が必要となります。
アカウントアドレス制限⚓︎
- アカウントアドレス制限
- 指定したアカウントが、どのアドレスとやり取りできるかを制御する アカウント制限 の一種です。
この制限では、特定のアドレスを「ブロック(ブラックリスト)」または「許可(ホワイトリスト)」のいずれかの方式で設定できます。 両方の方式を同時に使用することはできません。
制限は 受信トランザクション、送信トランザクション、または その両方 に適用できます。
例
アカウントは次のように設定できます:
-
特定のアドレス宛ての送信を拒否します。
- 送信アドレス制限を ブラックリスト モードで設定し、 送信を許可したくないアドレスを追加します。
-
許可されていない送信元からのトランザクションを無視します。
- 受信アドレス制限を ホワイトリスト モードで設定し、 信頼できる送信元アカウントのみをリストに追加します。
-
事前に定義された信頼できるアカウント群とのみやり取りを許可します。 組織内で内部利用に限定したアカウントなどに有用です。
- 受信および 送信 の両方のアドレス制限を ホワイトリスト モードで設定し、 同じ承認済みアカウントのリストを使用します。
アカウントモザイク制限⚓︎
- アカウントモザイク制限
- アカウントがどの モザイク を受け取ることができるかを制限する アカウント制限 の一種です。
この制限は特定のモザイクを含む 受信トランザクション を「ブロック」または「許可」のどちらかで制御できます。 両方の方式を同時に使用することはできません。
送信トランザクションには影響しません。 アカウントから送信されるモザイクに対する同等の制限は存在しません。
受信トランザクションに複数のモザイクが含まれ、そのいずれかがこの制限に違反している場合、 そのトランザクション全体が拒否されます。
この制限は 転送トランザクション に限らず、 モザイクがアカウントに転送される結果となるすべてのトランザクションタイプに適用されます。
例
アカウントは次のように設定できます:
-
スパム送信者などが使用する特定の不要なモザイクを受信しないようにします。
- ブラックリスト モードでアカウントモザイク制限を設定し、 ブロックしたいモザイクをリストに追加します。
-
特定の承認済みモザイクのみを受け取れるようにします。 アカウントの内容が公開されている場合など、 不要なトークンで煩雑にならないようにする用途に有用です。
- ホワイトリスト モードでアカウントモザイク制限を設定し、 許可したいモザイクのみを含めます。
アカウント操作制限⚓︎
この制限は、許可または禁止するトランザクションタイプを「許可」または「ブロック」方式で指定します。 両方を同時に設定することはできません。
メモ
ACCOUNT_OPERATION_RESTRICTION トランザクションタイプの不許可はプロトコルによって拒否されます。
これにより、アカウントが過度に制限された操作範囲に誤って固定化されてしまうことを防ぎます。
この制限は誤ったアカウントを誤用するのを防止するのに役に立ちますが、 アカウント所有者が制限を解除することも可能です。
すべてのトランザクションタイプに対して制限を適用できます。 対応するタイプの一覧は トランザクション ページを参照してください。
例
-
アカウントの操作をネームスペース登録および更新のみに制限します。
- ホワイトリスト モードでアカウント操作制限を設定し、 ネームスペース関連および制限関連の操作のみを許可します。
-
アカウントからの送金を禁止する。
- ブラックリスト モードでアカウント操作制限を設定し、 転送トランザクション を禁止します。
モザイク制限⚓︎
アカウント制限 が特定のアカウントの動作を制限するのに対し、 モザイク制限はモザイク側からルールを定義します。 そのモザイクを使用するすべてのアカウントは、そのルールに従う必要があります。
これらの制限はモザイク作成者によって設定・管理され、 他のアカウントが自分の所有していないモザイクに制限を設定・変更することはできません。 制限はモザイク作成者自身には適用されません。
メモ
制限は 制限可能フラグ を付けて作成されたモザイクにのみ適用できます。
モザイクに制限を適用するには、モザイク側と、そのモザイクを使用したい各アカウント側に、 次の 2 つの構成要素を定義する必要があります。
- モザイクグローバル制限:モザイクとやり取りするためにアカウントが満たすべき条件を定義します。
- モザイクアドレス制限:アカウントに値を割り当て、条件と比較できるようにします。
この依存関係はモザイク制限に特有のもので、 アカウント制限 には複数要素の組み合わせは必要ありません。
モザイクグローバル制限⚓︎
- モザイクグローバル制限
- モザイク制限 を適用するために必要な2つの構成要素のうちの1つです。 モザイクとやり取りするためにすべてのアカウントが満たすべきルールを定義します。
これらの制限はモザイク作成者により設定される「キーと値の条件」として表現されます。 各条件には以下が含まれます:
- モザイク ID:制限対象となるモザイクを識別する。所有者のみが制限を設定できます。
- 制限キー:この制限を識別するために作成者が定義する任意の数値。 モザイクには複数の制限を定義できるため、このキーが必要です。 キーはモザイク単位で独立しています。 キーは数値ですが、「KYC」などの覚えやすい文字列からハッシュ関数で導出することもできます。
- 制限値:各アカウントの値と比較される閾値。
- 比較演算子:各アカウントの値を閾値とどのように比較するかを定義する(等しい、等しくない、大なりなど)。
例
各アカウントがキー「KYC」に対して値 1 を持つ必要があるモザイクを設定する場合、
次のような構成が使用できます。
| 項目 | 値 |
|---|---|
| モザイク ID | 制限対象のモザイク |
| キー | KYC のハッシュ |
| 値 | 1 |
| 比較演算子 | Equal(等しい) |
グローバルルールを設定した後、モザイク所有者は モザイクアドレス制限(次節参照)を使用して各アカウントに値を割り当て、 それをグローバル条件と照合する必要があります。
さらに、モザイクグローバル制限は「参照モザイク」と呼ばれる別のモザイクの制限値に依存させることもできます。 詳細は下記の参照モザイクを参照してください。
モザイクアドレス制限⚓︎
- モザイクアドレス制限
- モザイク制限 を適用するために必要な2つの構成要素のうちの 1つです。 特定のアカウントに 制限属性 を割り当て、 対応する モザイクグローバル制限 の条件と比較して評価します。
これらの属性はモザイク作成者によって設定され、アカウント固有のメタデータとして機能します。 モザイクに対して設定されたすべてのグローバル制限をアカウントの属性が満たす場合、 そのアカウントはモザイクとの取引を行うことができます。
モザイクアドレス制限を設定するには、次の属性を指定する必要があります:
- モザイク ID:制限対象のモザイクを識別する。所有者のみがこの制限を発行できます。
- 対象アカウント:制限を適用するアドレス。
- 制限キー:有効なグローバル制限を選択するためのキー。
- 制限値:アカウントに割り当てる値。選択されたグローバル制限の値と比較演算子に従って照合される。
例
前節の例の続きとして、 制限付きモザイクと取引できるようにアカウントを許可するには、 モザイク作成者は次のモザイクアドレス制限を送信する必要があります。
| 項目 | 値 |
|---|---|
| モザイク ID | 制限対象のモザイク |
| 対象アカウント | TABC123... |
| キー | KYC のハッシュ |
| 値 | 1 |
キー KYC のモザイクグローバル制限が選択され、
その値 1 がモザイクアドレス制限の値 1 と等しいか比較されます。
値が等しいため、アカウント TABC123... はこのモザイクとの取引が許可されます。
参照モザイク⚓︎
モザイクグローバル制限では、 派生モザイク が使用するモザイクアドレス制限を提供する 参照モザイク を指定できます。 2 つのモザイクは同じアカウントに属している必要はなく、独立した組織によって管理することもできます。
例えば、ある企業が認証用モザイクを作成し、個別のアカウントにアドレス制限値を割り当てることで 認証プロセスを実施できます。
別の企業は、自社の派生モザイクを作成してその認証用モザイクを参照し、 任意のモザイクグローバル制限を定義できます。 参照モザイクによってアカウントに割り当てられた認証値は、 派生モザイクが定義したグローバル制限に対して評価されます。
派生モザイクで再利用されるのは、参照モザイクのモザイクアドレス制限だけです。 参照モザイク上で定義されたモザイクグローバル制限ルールは、 参照モザイク自体と取引する場合にのみ適用されます。
派生モザイクと取引する場合は、派生モザイクで定義されたグローバル制限だけが、 参照モザイクから提供されるアドレス制限値に対して評価されます。
例
ある企業が certification_level という制限を持つ認証用モザイクを作成し、
その値が 1 から 5 の範囲を取るとします。
その企業は、複数のアカウントにアドレス制限値を割り当てて認証します。
| アカウント | 認証レベル |
|---|---|
| アカウント A | 5 |
| アカウント B | 2 |
| アカウント C | 認証なし |
別の組織は、この認証用モザイクを参照する派生モザイクを作成できます。
例:
| 派生モザイク | グローバル制限 |
|---|---|
PREMIUM_ASSET |
certification_level >= 4 |
BASIC_ASSET |
certification_level >= 2 |
結果として得られるアクセス許可は次のとおりです。
| アカウント | PREMIUM_ASSET |
BASIC_ASSET |
|---|---|---|
| アカウント A | ✅ 許可 | ✅ 許可 |
| アカウント B | ❌ 拒否 | ✅ 許可 |
| アカウント C | ❌ 拒否 | ❌ 拒否 |
この例では、同じ認証用モザイクが複数の独立したモザイクから再利用され、 それぞれが独自のアクセス要件を定義しています。 認証レベルが高いアカウントほど広い範囲のモザイクとやり取りでき、 認証されていないアカウントは制限ルールによって自動的に拒否されます。
まとめ⚓︎
以下の表は、制限に関する主な数値制限をまとめたものです。
| 制限項目 | 値 |
|---|---|
| アカウントあたりの最大制限数 | 100 |
| モザイクあたりの最大制限数 | 20 |
以下の表は、利用可能なすべての制限演算子をまとめたものです。
| 演算子 | 意味 |
|---|---|
NONE |
制限なし |
EQ |
等しい場合に許可 |
NE |
等しくない場合に許可 |
LT |
より小さい場合に許可 |
LE |
以下の場合に許可 |
GT |
より大きい場合に許可 |
GE |
以上の場合に許可 |