Dynamic Notarization
Dynamic Notarization is the method within the IOTA Notarization suite designed for data that evolves over time. Unlike Locked Notarization, which prioritizes permanent immutability, the Dynamic method emphasizes on-chain data availability and continuous updates. This ensures that verifiers can always access the most recent version of the data directly from the IOTA network.
This model is ideal for applications where continuous, real-time access to current data is critical. The system relies on the Prover's intrinsic motivation to keep the latest state accurate, rather than on enforced immutability.
Core Characteristics
While all Notarization objects share a common underlying structure, the Dynamic
method configures it for maximum flexibility. Its key characteristics are:
-
Mutable State & High Availability The owner can update the object's
state
at any time. When an update occurs, the new state completely overwrites the previous one on-chain, ensuring that only the Latest State is visible. TheLatest State
is composed of theStored Data
and optionalState Metadata
, which can only be updated together in a single function call. This design choice guarantees high data availability for the most current information, as verifiers do not need to parse a history of changes to find the relevant record. This is the primary difference from Locked Notarization, which is immutable. -
Version Tracking & Verification Every time the state is updated, a
state_version_count
is automatically incremented. This, along with thelast_state_change_at
timestamp, forms the object'sCalculated Metadata
. This mechanism is crucial for verification and is unique to the Dynamic method. To prevent validating against stale data, a verifier must first confirm that theState Version Count
they received from the Prover matches the current count on the network before comparing the data hashes. -
Transferable Ownership & Timelocks Control over a Dynamic Notarization can be transferred to another party, allowing for changes in ownership or management responsibilities. This is in direct contrast to a Locked Notarization, which is non-transferable. This capability can be optionally restricted by a Transfer Timelock, a time-locking period during which the Ledger Object cannot be transferred. This is useful for scenarios where control should be temporarily fixed, such as during an audit or a contractual waiting period.
-
Flexible Metadata Structure All Notarizations feature a three-tiered metadata system, which the Dynamic method utilizes for flexibility:
- Immutable Description: An optional string set once at the time of creation to describe the object's purpose. It cannot be changed in any notarization method.
- State Metadata: An optional string that is bundled with the
State
and can only be updated when the state itself is updated. It's useful for describing the specific version of the data (e.g., "Document Revision 2.1"). - Updatable Metadata: An optional, arbitrary string that can be modified independently of the core
state
at any time. Updating this field provides additional useful information (like a status note or a reference URL) without affecting thestate_version_count
. In a Locked Notarization, this field is write-once.
-
Refundable Storage Deposit Like any object on the IOTA ledger, a Dynamic Notarization requires a storage deposit to be stored on-chain. This deposit is fully refundable to the owner when the object is eventually deleted.
The DynamicNotarization
Object in Practice
A Dynamic Notarization is not a separate Move object but rather an instance of the core Notarization
object where the method
field is set to NotarizationMethod::Dynamic
.
This configuration enforces specific invariants within the ImmutableMetadata
struct to ensure it behaves correctly:
- The
update_lock
anddelete_lock
fields within itsLockMetadata
must be set toTimeLock::None
. - The only lock that is permitted is the
transfer_lock
. If notransfer_lock
is needed, the entirelocking
field withinImmutableMetadata
is set toNone
.
Use Cases and Applications
The properties of Dynamic Notarization make it particularly suitable for scenarios where the most current information is the single source of truth.
-
Public Registries and Revocation Lists For applications like managing an identity revocation list, only the most recent version of the list is relevant. Dynamic Notarization provides a stable
ObjectId
that always points to the current list, allowing applications to reliably check for revocations without needing to parse a history of changes. -
Evolving Metadata for Digital Product Passports (DPPs) A physical asset or component may have metadata that changes over its lifecycle, such as its current status, custodian, or recent maintenance events. Dynamic Notarization allows the DPP to have a single, updatable on-chain record that always reflects the asset's latest information. For example, the
State
could be a JSON object{"status": "in-transit", "custodian": "xyz-logistics"}
parsed as aString
. When the item arrives at its destination, the owner updates the state to{"status": "in-warehouse", "custodian": "abc-inc"}
. TheObjectId
remains the same, always providing the current status to any interested party. -
Living Documents and Version Control For documents that undergo multiple revisions, such as legal agreements, technical specifications, or policies, Dynamic Notarization can be used to always point to the latest approved version. Stakeholders can reference a single
ObjectId
to be certain they are viewing the current version of the document, with thestate_version_count
providing a clear indicator of how many official revisions have been logged on-chain.