Your own records: myEntities()
Results are newest first.
where filters on attribute values locally.
Why it is private
myEntities() never sends your addresses or record keys to the RPC provider:
- It downloads the app’s list of records (keys, owners, attributes, no payloads), the same list every user downloads.
- It opens each record’s encrypted tag locally (in the key worker in a browser). Only your root key can open your tags.
- It fetches full records by whole batch, plus two random batches as cover. The RPC provider learns “this client cares about a record in one of these batches”, never which one.
Works on any device
Nothing is stored locally. Sign in with the same wallet on another device andmyEntities()
finds every record. Losing the wallet means losing the ability to find and prove your records
(they stay on Arkiv until they expire).
Everyone’s records: normal Arkiv queries
Records are ordinary Arkiv entities, so public reads do not change: query by the app’sproject
attribute and your own attributes as usual. The payload is an
envelope; verify it and unwrap the data with verifyRecord:
verifyRecord checks that the record’s signature recovers to its $owner over the on-chain
attributes, and that its lifetime matches the signed one. A relayer that changed a single byte is
rejected. Pass relayers: [addresses] to accept records from known relayers only.
Records written with
encrypt: true verify, but their data is ciphertext to everyone except
the owner.