PreciseValue
PreciseValue = {
Int:bigint; } | {Map: [string,PreciseValue][]; } | {Nat:bigint; } | {Blob:Uint8Array; } | {Bool:boolean; } | {Text:string; } | {Array:PreciseValue[]; }
Defined in: packages/canisters/src/declarations/sns/governance_test.d.ts:611
This type is equivalant to ICRC3Value, but we give it another name since it is used here not
in the context of the ICRC-3 ledger standard. The justification is the same: The candid format
supports sharing information even when the client and the server involved do not have the same
schema (see the Upgrading and subtyping section of the candid spec). While this mechanism allows
to evolve services and clients independently without breaking them, it also means that a client
may not receive all the information that the server is sending, e.g. in case the client schema
lacks some fields that the server schema has.
This loss of information is not an option for SNS voters deciding if an extension with particular init args should be installed or if an extension function with particular arguments should be called. The client must receive the same exact data the server sent in order to verify it.
Verification of a priorly installed extension is done by hashing the extension’s init arg data and checking that the result is consistent with what has been certified by the SNS.