Claim Data Structure
A claim always contains a subject, that can be: - Self: The claim says something about itself. The subject is implicit, and it's the identity that makes claim. - OtherIden: The claim says something about some other identity (identifies by other's ID). - Object: The claim says something about an object (identifies by the object's ID).
If the subject is Self - identity, sections i_1, v_1 can be empty.
if the subject is NOT Self, the id(OtherIden) of the Identity/Object can be in the Index(i_1) or the Value(v_1) part of the claim. This is encoded in a header bit.
Other flags contained inside i_0 indicate:
- Whether the claim is expirable. In that case an expiration date must be added inside v_0
- Whether the claim is updatable.
- Whether the claim is merklized and where the root of the tree is located. It can be either inside i_2 or v_2
h_i = H(i_0, i_1, i_2, i_3) h_v = H(v_0, v_1, v_2, v_3) h_t = H(h_i, h_v)
Index: i_0: [ 128 bits ] claim schema [ 32 bits ] option flags  Subject: 000: A.1 Self 001: invalid 010: A.2.i OtherIden Index 011: A.2.v OtherIden Value 100: B.i Object Index 101: B.v Object Value  Expiration: bool  Updatable: bool  Merklized: data is merklized root is stored in the: 000: none 001: C.i Root Index (root located in i_2) 010: C.v Root Value (root located in v_2)  0 [ 32 bits ] version (optional?) [ 61 bits ] 0 - reserved for future use i_1: [ 248 bits] identity (case b) (optional) [ 5 bits ] 0 i_2: [ 253 bits] 0 i_3: [ 253 bits] 0 Value: v_0: [ 64 bits ] revocation nonce [ 64 bits ] expiration date (optional) [ 125 bits] 0 - reserved v_1: [ 248 bits] identity (case c) (optional) [ 5 bits ] 0 v_2: [ 253 bits] 0 v_3: [ 253 bits] 0
Schemas define the type of data inside a claim link.
Index slots i_2, i_3 and value slots v_2, v_3 are the data slots for user data.
Index vs Value
When to Use Index Slots and Value Slots?
Claims are stored in the Merkle tree and the hash of the index slots ( hash(i_0,i_1,i_2,i_3) ) is unique for the whole tree. It means that you cannot have two claims with the same index inside the tree.
As opposite to the index, the values slots could be the same for different claims if their indexes are different.