Closed TimoGlastra closed 1 year ago
@swcurran Could you bring this up during the AnonCreds WG tomorrow for discussion and feedback? 🙏
@TimoGlastra
Is the path to updating the witness from the prover's perspective, 1 query state at timestamp at issuance and time to update to; 2 locally calculate the delta for the update?
My apologizes @TimoGlastra -- I think I missed your earlier note about raising this at a Meeting, or at least it didn't register. I'll try to get some conversation on this generated.
@TimoGlastra -- should the tails file (path or binary) be included in that? The holder will need that in creating the NRP. Also, should the size of the RevReg (number of credentials) be included.
Would it make sense to make the state parameter a compressed bit array, perhaps use the Revocation List 2020 approach as found here? We could use a smaller minimum size than 16kb as that is impractical for the current revocation scheme. I would think it would be helpful for "full state" AnonCreds Methods and a bit of pain, but not too bad for "delta" based approaches.
@swcurran The tails file location and the number of credentials and other data are stored in Revocation Registry Definition. That can remain unchanged even as we implement this data model.
Regarding the compression, perhaps @TimoGlastra has better understanding. We do not know what format / data type the ledger will store this state in (whichever ledger), it might be that the ledger can store it even more efficiently, so perhaps it is best to let the ledger sdk handle such expansion directly.
Thanks @whalelephant --
Agree on the tails file location and number of credentials in the RevRegDef.
We talked about the compression on the call. Basically, it has to be available expanded somewhere and adding compression would be worst case for some methods like Indy, where it would be expanded in the method, compressed to pass to AnonCreds and then immediately expanded again. No help :-). So we'll leave it as defined above by @TimoGlastra .
Issue to discuss the data model for the AnonCreds revocation list. This is based on what I've presented in a previous AnonCreds Spec meeting, and is also what we're now targeting for the implementation in AFJ/ACA-Py/AnonCreds-Rs.
Here's the data model:
revRegId
(string) - Identifier of the revocation registryrevocationList
(number[]) - Bit array defining the status of the credential in the revocation registry. A value of1
means the credential is revoked, a value of0
means the credential is not revoked.currentAccumulator
- The current value of the accumulatortimestamp
- the timestamp at which the accumulator value is validThis is using camelCase. I know in the spec we've been moving to snake_case, but the current AnonCreds implementation uses camelCase, so maybe it's better to keep it like that. Anyway, snake_case or camelCase the data is the same.
An example: