ICRC-124: blocks for recording management actions -- stopping, unstopping and deactivating ledgers#135
ICRC-124: blocks for recording management actions -- stopping, unstopping and deactivating ledgers#135
Conversation
There was a problem hiding this comment.
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
ICRCs/ICRC-124/ICRC-124.md:69
- [nitpick] Consider using consistent metadata keys across the examples (e.g., 'reason' in the pause example versus 'note' in the unpause example) to improve clarity and ease of parsing.
record { "reason"; variant { Text = "DAO vote: pause due to upgrade prep" }}
ICRCs/ICRC-124/ICRC-124.md
Outdated
|
|
||
| ## Overview of Block Types | ||
|
|
||
| - **Pause Ledger**: `124pause` |
There was a problem hiding this comment.
The identifier '124pause' is used here, but the PR metadata description references '123pause'. Please confirm the intended block type and update the identifier consistently.
ICRCs/ICRC-124/ICRC-124.md
Outdated
| vec { | ||
| // ... other supported types like ICRC-1, ICRC-3, ICRC-122, ICRC-123 ... | ||
| variant { Record = vec { | ||
| record { "btype"; variant { Text = "124pause" }}; | ||
| record { "url"; variant { Text = "[https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-124.md](https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-124.md)" }}; // Placeholder URL | ||
| }}; | ||
| variant { Record = vec { | ||
| record { "btype"; variant { Text = "124unpause" }}; | ||
| record { "url"; variant { Text = "[https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-124.md](https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-124.md)" }}; // Placeholder URL | ||
| }}; | ||
| variant { Record = vec { | ||
| record { "btype"; variant { Text = "124deactivate" }}; | ||
| record { "url"; variant { Text = "[https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-124.md](https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-124.md)" }}; // Placeholder URL |
There was a problem hiding this comment.
@bogwar placeholder url comment should be removed before merging or do you plan to keep this here? also the URLs seem to be wrong, right? (it is a markdown link)
you should also check that for ICRC-122.
marc0olo
left a comment
There was a problem hiding this comment.
other than the comment about the URLs in icrc3_supported_block_types, the PR seems fine to me/
|
@bogwar wouldn't we also want to add a section for the query interface to check the state of the ledger? in ICRC-123 we defined this. |
| - While paused, the ledger MUST reject incoming requests for standard token operations such as `icrc1_transfer`, `icrc2_approve`, and other non-administrative state changes such as those defined in ICRC-122 (e.g., `122mint`, `122burn`). | ||
| - However, while paused, the ledger MUST continue to accept specific administrative or management operations necessary for governance or recovery. This includes operations defined in ICRC-123 (e.g., `123freezeaccount`, `123unfreezeaccount`, `123freezeprincipal`, `123unfreezeprincipal`) and, critically, requests that result in recording a `124unpause` block. Ledger implementations MAY also permit requests that result in recording a `124deactivate` block while the ledger is paused, according to their defined governance policies. The exact set of allowed administrative operations during a pause SHOULD be defined by the specific ledger implementation's policy. | ||
| - Query calls SHOULD generally remain operational while the ledger is paused. | ||
|
|
There was a problem hiding this comment.
| - An `124pause` block has no effect if the ledger is already paused or if it is in a terminal state due to deactivation. | |
ICRCs/ICRC-124/ICRC-124.md
Outdated
|
|
||
| ### Pause Ledger (`124pause`) | ||
| - When a `124pause` block is recorded, the ledger MUST enter a "paused" state. | ||
| - While paused, the ledger MUST reject incoming requests for standard token operations such as `icrc1_transfer`, `icrc2_approve`, and other non-administrative state changes such as those defined in ICRC-122 (e.g., `122mint`, `122burn`). |
There was a problem hiding this comment.
and other non-administrative state changes such as those defined in ICRC-122 (e.g.,
122mint,122burn).
Why are ICRC-122 methods non-administrative state changes? These are state changes that can only be performed by authorized individuals, i.e., admins, no?
Align with ICRC-3's relaxed method discriminator convention. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Real World Asset ledgers require several management APIs that would allow authorised entities to carry out ledger changes. This standard introduces three new blocktypes:
123pausethat records that all transactions on the ledger were paused by an authorised party123unpausethat records that a paused ledger was unpause by an authorised party123deactivatethat records that a ledger was deactivated by an authorised party