Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 22 additions & 15 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,30 @@ IOTA Notarization enables creation of immutable, on-chain records for arbitrary
whatever suites into the context the best. In this stylguide `Toolkit` is used for referencing the term. Use "title case"
allways for `Notarization Toolkit` (never use `Notarization toolkit` or `notarization toolkit`).
- The IOTA Trust Framework consist of Trust Framework Products (TF products)
- The Notarization Toolkit contains two TF products: **Single Notarization** and **Audit Trail**
- In the context of Notarization Toolkit documentation, Single Notarization and Audit Trail are called components
- In the context of IOTA Trust Framework documentation, Single Notarization and Audit Trail are called TF products
- The Notarization Toolkit contains two TF products: **Single Notarization** and **Audit Trails**
- In the context of Notarization Toolkit documentation, Single Notarization and Audit Trails are called components
- In the context of IOTA Trust Framework documentation, Single Notarization and Audit Trails are called TF products
- These rules also apply to future TF products in the Notarization Toolkit (i.e. "Proof of Inclusion")
- The name of TF products resp. Notarization Toolkit components is allways a singular term
- Use capitalization (a.k.a. title case) for the words of a product name if the product is meant itself - examples `Audit Trail`, `Notarization`
- Use plural (i.e. `audit trails` or `notarizations`) only where multiple instances of the TF product are meant
- Regarding usage of singular and plural in TF product resp. Notarization Toolkit component names:
- If the product is meant itself:
- Use the product name (i.e. `Audit Trails`, `Notarization`) with singular form - example: "Audit Trails is the best ..."
- Use capitalization (a.k.a. title case) - examples `Audit Trails`, `Notarization`
- If multiple instances of a product (typically equivalent to multiple on-chain objects) are meant:
- Use plural (i.e. `Using multiple audit trails facilitates ...` or `Avoid creating too much notarizations for ...`)
- Use lower case for the plural form - except at the beginning of sentences and in markdown titles
- In situations where the TF product itself or the plural form can be addressed choose whatever fits best
- This rule - including capitalization aspects - only applies to TF products resp. Notarization Toolkit components using
plural for other entities like i.e. Notarization Methods (`Locked Notarization`, `Dynamic Notarization` - see below) is OK.
- Example `Audit Trail`:
- Do not use `Audit Trails` - always use `Audit Trail` to denote the product itself
- Use plural (i.e. `audit trails` or `Audit trails`) only where multiple instances of the TF product are meant - Examples:
- `A client for creating and managing audit trails on the IOTA blockchain`
- `Audit trails and their records are ...`
- `Audit trails provide ...` (could also be `Audit Trail provides ...`)
- If the TF product or multiple product instances could be meant: Prefer the TF product variant if possible. Only
use the plural variant where clearly more suitable.
- This rule - including the capitalization aspects - only applies to TF products (resp. Toolkit components). Using the
plural form with title case for other entities like i.e. Notarization Methods (`Locked Notarization`, `Dynamic Notarization` - see below) is OK.
- If onchain objects of the TF product are addressed:
- In source code documentation related to the TF product specific Move object type (i.e. `AuditTrail`, `Notarization`),
the type name followed by "object" resp. "objects" shall be used (examples: "To create a `Notarization` object use ...",
"`AuditTrail` objects can be batch deleted using ...").
- In less technical documentation, typically in the context of general descriptions of TF products or Notarization Toolkit components:
- the product name in singular of plural form shall be used (see above) without any extensions
- if the onchain object, equivalent to the product itself, is addressed, use either the Move object type based form (see above)
or the product name followed by "object" resp. "objects" (examples: "`Notarization` onchain objects facilitate ...",
"Audit Trails on-chain objects must be managed ... ") whatever is most suitable.
- Regarding Single Notarization (Component/TF product):
- Single Notarization provides two **Notarization Methods**: **Locked Notarization** and **Dynamic Notarization**
- There might be additional Notarization Methods in future versions of Single Notarization (i.e. "Custom Notarization")
Expand Down
36 changes: 18 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ The toolkit includes:

- **Single Notarization**
Use this for individual locked or dynamic notarizations of arbitrary data, documents, hashes, or latest-state records.
- **Audit Trail**
- **Audit Trails**
Use this for structured record histories with sequential entries, role-based access control, locking, and tagging.

Each toolkit component is available as:
Expand All @@ -50,40 +50,40 @@ Use **Single Notarization** when your main need is proving the existence, integr

### I want an audit trail

Use **Audit Trail** when you need a structured record history with permissions, capabilities, tagging, and write or delete controls.
Use **Audit Trails** when you need a structured record history with permissions, capabilities, tagging, and write or delete controls.

- [Audit Trail Rust Package](./audit-trail-rs)
- [Audit Trail Move Package](./audit-trail-move)
- [Audit Trail Wasm Package](./bindings/wasm/audit_trail_wasm)
- [Audit Trail examples](./bindings/wasm/audit_trail_wasm/examples/README.md)
- [Audit Trails Rust Package](./audit-trail-rs)
- [Audit Trails Move Package](./audit-trail-move)
- [Audit Trails Wasm Package](./bindings/wasm/audit_trail_wasm)
- [Audit Trails examples](./bindings/wasm/audit_trail_wasm/examples/README.md)

### I want the on-chain contracts

- [Single Notarization Move](./notarization-move)
- [Audit Trail Move](./audit-trail-move)
- [Audit Trails Move](./audit-trail-move)

### I want to build an application

- [Single Notarization Rust](./notarization-rs)
- [Audit Trail Rust](./audit-trail-rs)
- [Audit Trails Rust](./audit-trail-rs)
- [Single Notarization Wasm](./bindings/wasm/notarization_wasm)
- [Audit Trail Wasm](./bindings/wasm/audit_trail_wasm)
- [Audit Trails Wasm](./bindings/wasm/audit_trail_wasm)

## Toolkit Components

| Component | Best for | Move Package | Rust Package | Wasm Package |
| ------------------- | --------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------- | -------------------------------------------------------- |
| Single Notarization | Individual locked or dynamic notarizations for documents, hashes, and state | [`notarization-move`](./notarization-move) | [`notarization-rs`](./notarization-rs) | [`notarization_wasm`](./bindings/wasm/notarization_wasm) |
| Audit Trail | Shared sequential records with roles, capabilities, tagging, and locking | [`audit-trail-move`](./audit-trail-move) | [`audit-trail-rs`](./audit-trail-rs) | [`audit_trail_wasm`](./bindings/wasm/audit_trail_wasm) |
| Audit Trails | Shared sequential records with roles, capabilities, tagging, and locking | [`audit-trail-move`](./audit-trail-move) | [`audit-trail-rs`](./audit-trail-rs) | [`audit_trail_wasm`](./bindings/wasm/audit_trail_wasm) |

### Which one should I use?

| Need | Best fit |
| ------------------------------------------------------------------------- | ------------------- |
| Locked proof object for arbitrary data | Single Notarization |
| Dynamic latest-state notarization flow | Single Notarization |
| Shared sequential records with roles, capabilities, and record tag policy | Audit Trail |
| Team or system audit log with governance and operational controls | Audit Trail |
| Shared sequential records with roles, capabilities, and record tag policy | Audit Trails |
| Team or system audit log with governance and operational controls | Audit Trails |

## Documentation And Resources

Expand All @@ -95,12 +95,12 @@ Use **Audit Trail** when you need a structured record history with permissions,
- [Single Notarization examples](./bindings/wasm/notarization_wasm/examples/README.md)
- [IOTA Notarization Docs Portal](https://docs.iota.org/developer/iota-notarization)

### Audit Trail
### Audit Trails

- [Audit Trail Rust Package README](./audit-trail-rs/README.md)
- [Audit Trail Move Package README](./audit-trail-move/README.md)
- [Audit Trail Wasm Package README](./bindings/wasm/audit_trail_wasm/README.md)
- [Audit Trail examples](./bindings/wasm/audit_trail_wasm/examples/README.md)
- [Audit Trails Rust Package README](./audit-trail-rs/README.md)
- [Audit Trails Move Package README](./audit-trail-move/README.md)
- [Audit Trails Wasm Package README](./bindings/wasm/audit_trail_wasm/README.md)
- [Audit Trails examples](./bindings/wasm/audit_trail_wasm/examples/README.md)

### Shared

Expand All @@ -111,7 +111,7 @@ Use **Audit Trail** when you need a structured record history with permissions,
[Foreign Function Interface (FFI)](https://en.wikipedia.org/wiki/Foreign_function_interface) bindings available in this repository:

- [Web Assembly for Single Notarization](./bindings/wasm/notarization_wasm)
- [Web Assembly for Audit Trail](./bindings/wasm/audit_trail_wasm)
- [Web Assembly for Audit Trails](./bindings/wasm/audit_trail_wasm)

## Contributing

Expand Down
2 changes: 1 addition & 1 deletion audit-trail-move/Move.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
name = "IotaAuditTrail"
name = "IotaAuditTrails"
edition = "2024.beta"

[dependencies]
Expand Down
6 changes: 3 additions & 3 deletions audit-trail-move/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

---

# IOTA Audit Trail Move Package
# IOTA Audit Trails Move Package

## Introduction

`audit-trail-move` is the on-chain Move package behind IOTA Audit Trail.
`audit-trail-move` is the on-chain Move package behind IOTA Audit Trails.

It defines the shared `AuditTrail` object and the supporting types needed for:

Expand Down Expand Up @@ -81,7 +81,7 @@ The package history files [`Move.lock`](./Move.lock) and [`Move.history.json`](.

## Contributing

We would love to have you help us with the development of IOTA Audit Trail. Each and every contribution is greatly valued.
We would love to have you help us with the development of IOTA Audit Trails. Each and every contribution is greatly valued.

Please review the [contribution](https://docs.iota.org/developer/iota-notarization/contribute) sections in the [IOTA Docs Portal](https://docs.iota.org/developer/iota-notarization/).

Expand Down
2 changes: 1 addition & 1 deletion audit-trail-move/sources/audit_trail.move
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) 2025 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

/// Audit Trail with role-based access control and timelock
/// Audit Trails with role-based access control and timelock
/// A trail is a tamper-proof, sequential chain of notarized records where each
/// entry references its predecessor, ensuring verifiable continuity and
/// integrity.
Expand Down
2 changes: 1 addition & 1 deletion audit-trail-move/sources/locking.move
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) 2025 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

/// Locking configuration for Audit Trail records
/// Locking configuration for audit trail records
module audit_trail::locking;

use iota::clock::Clock;
Expand Down
14 changes: 7 additions & 7 deletions audit-trail-move/sources/permission.move
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ module audit_trail::permission;

use iota::vec_set::{Self, VecSet};

/// Existing permissions for the Audit Trail object
/// Existing permissions for the `AuditTrail` object
public enum Permission has copy, drop, store {
// --- Whole Audit Trail related - Proposed role: `Admin` ---
/// Destroy the whole Audit Trail object
/// Destroy the whole `AuditTrail` object
DeleteAuditTrail,
/// Delete records in batches for cleanup workflows
DeleteAllRecords,
Expand All @@ -25,9 +25,9 @@ public enum Permission has copy, drop, store {
UpdateLockingConfig,
/// Update the delete_record_lock configuration which is part of the locking configuration
UpdateLockingConfigForDeleteRecord,
/// Update the delete_lock configuration for the whole Audit Trail
/// Update the delete_lock configuration for the whole `AuditTrail` object
UpdateLockingConfigForDeleteTrail,
/// Update the write_lock configuration for the whole Audit Trail
/// Update the write_lock configuration for the whole `AuditTrail` object
UpdateLockingConfigForWrite,
// --- Role Management - Proposed role: `RoleAdmin` ---
/// Add new roles with associated permissions
Expand Down Expand Up @@ -164,7 +164,7 @@ public fun metadata_admin_permissions(): VecSet<Permission> {

// ------- Constructor functions for all Permission variants -------------

/// Returns a permission allowing to destroy the whole Audit Trail object
/// Returns a permission allowing to destroy the whole `AuditTrail` object
public fun delete_audit_trail(): Permission {
Permission::DeleteAuditTrail
}
Expand Down Expand Up @@ -199,12 +199,12 @@ public fun update_locking_config_for_delete_record(): Permission {
Permission::UpdateLockingConfigForDeleteRecord
}

/// Returns a permission allowing to update the delete_lock configuration for the whole Audit Trail
/// Returns a permission allowing to update the delete_lock configuration for the whole `AuditTrail` object
public fun update_locking_config_for_delete_trail(): Permission {
Permission::UpdateLockingConfigForDeleteTrail
}

/// Returns a permission allowing to update the write_lock configuration for the whole Audit Trail
/// Returns a permission allowing to update the write_lock configuration for the whole `AuditTrail` object
public fun update_locking_config_for_write(): Permission {
Permission::UpdateLockingConfigForWrite
}
Expand Down
2 changes: 1 addition & 1 deletion audit-trail-move/sources/record.move
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) 2025 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

/// Record module for Audit Trail entries
/// Record module for audit trail entries
///
/// A Record represents a single entry in an audit trail, stored in a
/// LinkedTable and addressed by trail_id + sequence_number.
Expand Down
2 changes: 1 addition & 1 deletion audit-trail-move/sources/record_tags.move
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) 2025 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

/// Record tag types and helper predicates for Audit Trail.
/// Record tag types and helper predicates for Audit Trails.
module audit_trail::record_tags;

use audit_trail::permission::Permission;
Expand Down
Loading
Loading