Skip to main content
This feature was introduced with version 0.10.0 of the Registry App; version 0.9.0 of the utility-registry-v0 package added the underlying isPaused field.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

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:
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

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.