Skip to content
CCPEDIAby Unity Nodes
Digital Asset docs

Pause / Unpause

Updated 05-11-2026

This feature is introduced with version 0.15 of the Registry App.Version 0.9.0 of the utility-registry-v0 package added the underlying isPaused field to the InstrumentConfiguration.A paused instrument cannot be interacted with by non-registrar parties, with narrow exceptions where the registrar itself is the counterparty. The registrar can still administer the instrument configuration (including unrelated fields) while it is paused.

Overview

Each InstrumentConfiguration carries an isPaused : Optional Paused field. Some Paused marks the instrument paused; None marks it unpaused (the default for newly created instruments). There is no dedicated pause/unpause choice. Instead, the registrar toggles isPaused through the same RegistrarService_ArchiveAndCreateInstrumentConfiguration choice used for any other configuration change — archiving the current InstrumentConfiguration and creating a replacement with the new isPaused value. Every other field (identifiers, credential requirements, block list setting, provider app reward beneficiaries) except the force transfer setting can be changed in the same call, so pausing an instrument doesn’t prevent the registrar from administering it.
Pausing is scoped to a single instrument. Other instruments under the same registrar are unaffected.

Pausing and unpausing

  • dApp UI
  • API
1

Open instrument management

As the registrar, navigate to Registry → Management → Instrument Management and select the instrument.
2

Open the modify dialog

Click Modify on the instrument’s details.
3

Toggle Pause Instrument

Check (or uncheck) Pause Instrument. Other fields on the same form can be changed at the same time.
4

Submit

Click Modify to submit. On success, the UI shows “Successfully modified instrument configuration” and the instrument’s new pause state is reflected immediately.

Enforcement while paused

Pause enforcement is applied at the point where a non-registrar party would act on the instrument. Requests, offers/acceptances, allocations, and two-step/self transfers all check isInstrumentPaused before proceeding:
FlowChoiceWho is checked
MintacceptMint (accept request/offer)Rejected unless holder == admin (registrar)
MintAllocationFactory_RequestMintRejected unless holder == registrar
BurnvalidateBurn (accept request/offer)Rejected unless holder == admin (registrar)
BurnAllocationFactory_RequestBurnRejected unless holder == registrar
Burn/MintAllocationFactory_InternalBurnMintChecked independently for each burn input owner and each mint output owner; the registrar’s own holdings are exempt
Allocation (V1)AllocationFactory_AllocateInternalRejected unless sender == registrar
Allocation (V1 accept)Transfer rule allocation acceptRejected unless receiver == registrar; the registrar as sender does not exempt a non-registrar receiver
Two-step / self-transferAllocationFactory transfer/self-transfer flowsRejected unless sender == admin (registrar)
The registrar is only exempt where it is itself the party being checked (holder, sender, or owner). A non-registrar counterparty is always blocked while the instrument is paused — for example, a registrar-initiated transfer offer can still be created while paused, but a non-registrar receiver cannot accept a paused instrument’s allocation.

Error messages

ScenarioError
Requesting a mint while pausedInstrument must not be paused to request a mint
Accepting a mint while pausedInstrument must not be paused to accept a mint
Requesting a burn while pausedInstrument must not be paused to request a burn
Accepting a burn request/offer while pausedInstrument must not be paused to accept a burn request/offer
Two-step / self-transfer while pausedInstrument must not be paused in two step and self transfers
Allocating internally while pausedInstrument must not be paused in allocate internal
Burn-mint internally while pausedInstrument must not be paused in internal burn mint
Accepting a V1 allocation while pausedInstrument must not be paused in allocation V1

Backwards compatibility

Parties don’t need to be running the latest app version to be protected by a pause. Pausing blocks an instrument for everyone, regardless of which package version a counterparty’s client was built against.
The isPaused field and its enforcement were introduced in version 0.10.0 of the utility-registry-app-v0 package, but all versions of a package are required to be Smart Contract Upgrade (SCU) compatible with one another. In practice this means:
  • A counterparty submitting commands from an older, pre-0.10.0 client still has its choices (acceptMint, AllocationFactory_RequestBurn, transfer/self-transfer flows, and so on) run against the currently vetted package on the participant, which is the one that contains the isInstrumentPaused check — not the older package the client code was compiled against.
  • There is no old-client code path that bypasses the pause check: the instrument configuration payload is read fresh on every choice exercise, so an older client cannot “see” a stale, unpaused configuration.
  • Older clients that have no concept of isPaused simply have no way to unpause an instrument themselves — only a registrar exercising RegistrarService_ArchiveAndCreateInstrumentConfiguration (via a client that supports the field) can change the pause state.
  • Blocklist — another instrument-level restriction enforced the same way, via checkBlockList on InstrumentConfiguration.