This particular requirement seems a tad unclear to me because it can be understood in multiple ways:
SafeTransaction and SafeRootAccess must have an ID field
It should be possible to compute a unique identifier based on struct fields
The real meaning seems to be 2), judging by the Uniqueness section below. In my opinion, the current specs do not clearly define how to calculate an identifier (at least a basic example) and leave it slightly ambiguous. The general types section suggests using an EIP-712 hash, and the Uniqueness section requires it to be unique without uniqueness requirements (e.g., it should be uniquely identifiable across chains).
My suggestion:
Provide a basic example of a hashing algorithm
Define whether a manager should provide such functionality
Remove the MUST requirement from the types description and add a MUST to the "Uniqueness" section
The manager specification states:
https://github.com/safe-global/safe-core-protocol-specs/blob/681c63678bfdd0a0087bbc26702979df769c50da/manager/README.md
This particular requirement seems a tad unclear to me because it can be understood in multiple ways:
The real meaning seems to be 2), judging by the
Uniqueness
section below. In my opinion, the current specs do not clearly define how to calculate an identifier (at least a basic example) and leave it slightly ambiguous. The general types section suggests using an EIP-712 hash, and theUniqueness
section requires it to be unique without uniqueness requirements (e.g., it should be uniquely identifiable across chains).My suggestion:
MUST
requirement from the types description and add aMUST
to the "Uniqueness" section