Agreely Français

Tamper-evident record

Verify a decision

Paste a decision ID to check that it was recorded and still matches its anchored proof.

Recorded, and its batch fingerprint matches the chain, per Agreely

This decision was recorded and still matches its proof, anchored on the public Base chain: any later change to it would be detectable.

Recorded decision
Analytics: accepted Functional: accepted Marketing: accepted
Type
Consent
Recorded at (UTC)
2026-08-10T13:48:55Z
Banner shown (fingerprint)
0x8e4146690855c6dda3be080de0b5ce8d0e49242d3cb931d45843ef3287f0353c
Banner version
1
Cryptographic commitment
0xd0ae44fe4b0a22ede6a3fb1228fc348c0ad525c26b67c751e3887040bb6c33e6

If a more recent decision was made in this browser for this site, that one applies.

  1. 1 Epoch root (Merkle)0x008448fd63fa7c8d2381c546789e8cb12bb6f7d3f636cac76c3b4a3f7069359a
  2. 2 Merkle inclusion path 0x2ff5984b116a4e8c7dbd7bbfe2fbf31355125d4cfeb597a5ca6f323ce1f3619e
  3. 3 On-chain transaction0x1e3a233ac8669f4fe0038d524883845917e0883b464ac1086c29d47312d542d6
View on BaseScan

Recomputed in your browser

This block redoes the calculations above directly in your browser, from the values this page shows. Nothing is sent to Agreely while it runs.

  1. waiting computing matches differs undetermined Tree version inconsistent

    Commitment recomputed

    keccak256( JCS(boundClaim) || salt )

    Shown by the register
    0xd0ae…33e6
    Recomputed here
    waiting
  2. waiting computing matches differs undetermined Tree version inconsistent

    Row hash recomputed

    keccak256( prevHash || JCS({chain_seq, action, config_version, occurred_at, commitment}) )

    Shown by the register
    0xe40f…4ddd
    Recomputed here
    waiting
  3. waiting computing matches differs undetermined Tree version inconsistent

    Merkle fold up to the root

    keccak256( min(a, b) || max(a, b) ), from the row hash up to the epoch root

    Shown by the register
    0x0084…359a
    Recomputed here
    waiting
  4. waiting computing matches differs undetermined Tree version inconsistent

    Signature of the organization's DID key

    Ed25519( JCS(epoch descriptor), public key )

    Registered public key
    0x3b61…e4f4
    Recomputed here
    waiting
  5. waiting public fact reading anchored not anchored yet not anchored as claimed undetermined

    Anchor on the public chain

    rootOf( epoch root ), lane 2 for cookies, read from a public node

    On-chain transaction
    0x1e3a…42d6

    View on BaseScan

This recomputation did not happen: JavaScript is not active in this browser, or the module could not load. That is not a verification failure. The statement above is complete on its own, and the recipe further down lets you redo all of it yourself.

This recomputation does run in your browser, but the code running it is served by the same server as the statement above. For a genuinely independent check, redo the offline recipe further down with your own tools.

Recompute it yourself

The bound claim, the salt, the previous hash and the sequence number are revealed so anyone can recompute everything offline, without trusting the displayed value.

Bound claim (canonical JSON)
{"action":"grant","banner_locale":"fr","company_id":"1c990b4f-9a7c-4349-97bc-4b7a4f045ad7","config_hash":"0x8e4146690855c6dda3be080de0b5ce8d0e49242d3cb931d45843ef3287f0353c","config_version":"1","consent_id":"a4ff4c25-d5bf-4dd2-930f-3260d38a0667","decisions":"{\"analytics\":true,\"functional\":true,\"marketing\":true}","ip_trunc":null,"occurred_at":"2026-08-10T13:48:55Z","user_agent":null,"website_id":"6c0f602c-d82a-4eb0-955b-2464f97764c5"}
Salt
0x111431bccda17798954aa34516f3e7a139c136b043f9a9953ee4453cd375f8ac
Cryptographic commitment
0xd0ae44fe4b0a22ede6a3fb1228fc348c0ad525c26b67c751e3887040bb6c33e6
Previous hash (prev_hash)
0xa0d5edd354dae0d9c9db21013de8de53cce3780677bb0fa092799303f65578ff
Sequence number (chain_seq)
15
  1. 1 Recompute the commitment and compare it to the commitment shown abovecommitment = keccak256( JCS(claim) || salt )
  2. 2 Recompute the row hashrowHash = keccak256( prevHash || JCS({chain_seq, action, config_version, occurred_at, commitment}) )
  3. 3 Fold the row hash you recomputed in step 2, never the one the page displays, along the inclusion path to the anchored root. The tree does not tell a leaf from an internal node: only a recomputed row hash establishes membership.
Full recipe (pseudo-code)
rowHash = keccak256( fromHex(prevHash) || JSON({action, chain_seq: chainSeq, commitment, config_version, occurred_at}) ) with keys sorted, no whitespace, chain_seq a bare integer and every other value a string; leaf = rowHash; root = commutative-keccak fold of leaf with the inclusion path

Why is there no "request my data" button?

This record is designed to log a cookie choice, not a person: it holds neither your name nor your email, and your decisions cannot be looked up in it from either. Some decisions are, however, bound to visit data (a truncated IP address); those fall to the website you visited, on whose behalf Agreely keeps this record.

Your right to access and correct your personal information applies to the personal information held by the site you visited, exercised with its person in charge of the protection of personal information, named in its privacy policy.

Agreely provides tamper-evidence (the decision was recorded, and a later change to it becomes detectable once its batch is anchored), and helps the site operator document and demonstrate its compliance. It is not proof of compliance in itself.