Skip to main content

Delete an Audit Trail

This guide shows how to permanently remove an AuditTrail object from the IOTA network. A trail can only be deleted once all of its records have been removed.

Prerequisites​

  • An existing AuditTrail object on the IOTA network containing several (less than 10 for this example) records
  • The trail must not have a delete-trail lock set (see Configure Locking)
  • An admin address owning an admin role capability as been shown in Create an Audit Trail

Steps​

1. Set Up Multiple Wallets​

Create an admin wallet and a maintenance-admin wallet that will be delegated the permissions needed to empty and delete the trail.

Used Utility Functions
examples/audit-trail/08_delete_audit_trail.rs
loading...

2. Create a Role with Deletion Permissions​

Define a role that has both DeleteAllRecords (to empty the trail) and DeleteAuditTrail (to remove the trail itself).

examples/audit-trail/08_delete_audit_trail.rs
loading...

3. Attempt to Delete a Non-Empty Trail​

Deleting a trail that still contains records fails. This constraint ensures no data is silently lost.

examples/audit-trail/08_delete_audit_trail.rs
loading...

4. Empty the Trail with Batch Deletion​

Remove the records using delete_records_batch / deleteBatch. The call deletes unlocked records from the front of the trail and returns the sequence numbers it removed; any locked records are skipped. Since this trail has no active delete lock, a single batch empties it — verify the record count reaches zero.

examples/audit-trail/08_delete_audit_trail.rs
loading...

5. Delete the Empty Trail​

With no records remaining, the trail can now be permanently deleted.

examples/audit-trail/08_delete_audit_trail.rs
loading...

Expected Behavior​

  • Attempting to delete a non-empty trail returns an error.
  • After batch-deleting all records, the trail can be successfully deleted.
  • Once deleted, the trail is no longer readable on-chain — any get() call returns an error.
warning

Trail deletion is permanent and irreversible. Ensure you have exported or archived any data you need before deleting.

Running Examples Locally​

In order to run the examples, you will need to run an IOTA network locally. See the local network setup guide.

Full Example Code​

examples/audit-trail/08_delete_audit_trail.rs
loading...