Back to PayPS
PayPS
Built on PhynSeal VCAP - Verified Consent Anchoring Protocol

Don't Trust Us.
Verify.

The first consent platform where every choice is enforced by your browser, anchored on a blockchain, and verifiable by anyone.

Zero
PII On-Chain
Real-Time
CSP Enforcement
Two-Witness
Provenance Model
Avalanche
L1 Blockchain

The Problem

Cookie Banners Are Theater

The consent infrastructure the internet relies on is fundamentally broken.

🍪This website uses cookies
Accept All
Refuse All
Browser Console
✗ Refusedgoogle-analytics.com/analytics.jsLOADED
✗ Refusedfacebook.net/pixel.jsLOADED
✗ Refuseddoubleclick.net/tracker.jsLOADED

Banners Lie

You click "Refuse All" but the tracking scripts run anyway. The banner is cosmetic. Nothing enforces your choice.

No Proof

Nobody can prove what was actually consented to. Not the user. Not the regulator. Not even the company collecting the data.

You Get Nothing

5 billion people click "Accept All" every day. That generates billions in ad revenue, yet the person clicking gets zero.

GDPR Is Broken

Regulators can't audit what they can't verify. Companies store consent in private databases. Delete requests are unverifiable.

The Fix

Consent with Teeth

Five steps. Every one enforced, recorded, and independently verifiable.

01
Visit

User Arrives

Cookie banner shows data categories with transparent Myps pricing

02
Consent

Choose & Hash

Choices hashed with keccak256: salt + domain + categories + policy version

03
Enforce

CSP Locks Down

Browser Content Security Policy blocks all non-consented tracking scripts

04
Anchor

On-Chain Proof

Hash anchored on PhynSeal Avalanche L1 with zero PII, immutable record

05
Verify

Anyone Checks

Regulators, auditors, data buyers verify independently. No trust needed

User Sovereignty

Your Data, Your Control

Real ownership means you decide what to share, your browser enforces it, and you can revoke anytime. No exceptions.

User Visits Site

A first-party domain triggers the PayPS consent layer

triggers

Cookie Banner Appears

Categories displayed with real-time Myps rates, no dark patterns

shows rates

Myps Rate Card - Monthly Earnings

Analytics
5 Myps/mo
Marketing
15 Myps/mo
Functional
8 Myps/mo
Social
10 Myps/mo
user selects

User Selects Categories

Toggle on/off per category. Each choice updates potential Myps earnings.

save

keccak256 Hash Computed

Zero PII. Salt + domain + categories + policy version hashed into a single fingerprint.

Click for details
anchor

Anchored On-Chain

Hash written to PhynSeal Avalanche L1. Immutable, timestamped, public.

Click for details
display

Proof Card Displayed

User sees their consent proof with tx hash, timestamp, and earning status.

Consented Categories

User approved: Analytics, Marketing. Declined: Social, Functional.

map to domains

Domain Mapping Registry

Analytics
google-analytics.comhotjar.com
Marketing
facebook.netdoubleclick.net
generate

CSP Meta Tag Generated

A Content-Security-Policy header is injected into the page, whitelisting only consented domains.

Click for details
browser enforces

Browser Engine Enforces

The browser's rendering engine blocks any script not in the CSP whitelist. No JavaScript workaround can bypass this.

Allowed Scripts
google-analytics.com/analytics.js
facebook.net/pixel.js
Blocked Scripts
tiktok.com/pixel.js
snapchat.com/tracker.js
Browser Console
[CSP] ✓Loaded google-analytics.com/analytics.js
[CSP] ✓Loaded facebook.net/pixel.js
[CSP] ✗Refused to load script 'tiktok.com/pixel.js' because it violates Content Security Policy directive: "script-src 'self' google-analytics.com facebook.net"
[CSP] ✗Refused to load script 'snapchat.com/tracker.js' because it violates Content Security Policy directive: "script-src 'self' google-analytics.com facebook.net"

Click Revoke

User presses the revoke button for any consent record from their dashboard.

confirm

Confirmation Dialog

Clear explanation: revoking stops Myps earnings for this consent but keeps already-earned tokens.

confirmed

Salt Deleted from DB

The off-chain salt is permanently erased. Without it, the hash can never be re-derived.

Click for details
re-lock

CSP Re-Locked

Previously whitelisted domains are removed from the Content Security Policy. Scripts blocked immediately.

on-chain

Hash Becomes Tombstone

The on-chain record is marked revoked. The hash remains as unforgeable proof that consent once existed and was withdrawn.

Click for details
earnings

Myps Earning Stops

Future rewards for this consent cease. Already-earned Myps are yours forever, soulbound and non-revocable.

Click for details
GDPR Compliant by Design

Article 7(3) - Right to withdraw consent at any time.
Article 17 - Right to erasure. Salt deletion makes re-identification cryptographically impossible.

Verification & Provenance

Trust No One - Verify Everything

Every consent is anchored on-chain, witnessed by two independent parties, and verifiable by anyone. No trust assumptions. Just math and cryptography.

Consent Choices

User selects cookie categories: analytics, marketing, personalization

Click for details
hash

keccak256 Hashing

Consent data hashed client-side with salt + domain + categories + policy version

POST

PhynSeal API

Receives hash, validates schema, prepares on-chain transaction via ERC-4337

Click for details
tx

Avalanche L1 Transaction

ConsentAnchor.sol stores the hash immutably on PhynSeal's Avalanche L1

Block Explorer
Tx Hash:0x8a3f...d7e2b401c9
Block:14,827,391
Consent Hash:0x7f3a...b8c1
Status: Confirmed

Anyone can verify this transaction on any Avalanche explorer.

Public Verification

Paste the hash, verify independently. No login. No API key. No trust required.

Click for details

Consent Anchor

The on-chain consent record - immutable proof of what the user agreed to

Click for details
Two Independent Witnesses
Witness 1 - Browser SDK

Browser SDK

Embedded in the website, observes what actually happens in the browser

observes

Records Execution

Logs which cookies were set, which scripts loaded, which categories were unblocked

Click for details
hash

Collection Receipt

Hash of everything that actually happened - the browser's witness statement

anchor
Anchored On-Chain
Witness 2 - Data Processor

Data Processor

The third-party that receives and processes the consented data

confirms

Confirms Handling

Attests to what data was received, how it was processed, what policies were applied

Click for details
hash

Attestation Hash

Hash of the processor's testimony - their independent witness statement

anchor
Anchored On-Chain

Cross-Verification

PhynSeal compares consent + receipt + attestation - three independent records, one truth

Click for details
Key Insight

“Neither witness can forge both sides.”

The browser cannot fake the processor's attestation. The processor cannot fake the browser's receipt. Even if one is compromised, the cross-verification catches the discrepancy.

Provenance Certificate

Cryptographic proof of the entire chain of custody - consent, collection, processing

Click for details

Paste Certificate Hash

Anyone - regulator, auditor, journalist, user - pastes the provenance hash

Click for details
verify

Verification Engine

Reconstructs the entire provenance chain from on-chain data and runs all checks

Verification ResultVerified
Certificate Hash
0x4e2d8f1a...c9b7e305fa
Consent AnchorHash matches on-chain record
Browser WitnessCollection receipt verified
Processor WitnessAttestation hash confirmed
Cross-VerificationAll witnesses consistent
100%
Verification Rate
2/2
Witnesses
PASS
Cross-Check
Verified on PhynSeal Avalanche L1View on Explorer
No login required. No trust needed.
Zero PII on-chain - only cryptographic hashes. Privacy by design, verification by default.

Plain English

Live

How It Actually Works

No jargon. No blockchain degree required.

The Two-Camera System

Camera 1

Your browser watches what cookies actually get set on your device

The Vault

The blockchain timestamps everything. Nobody can edit the recording.

Camera 2

The analytics company confirms what data it actually received

Match Confirmed

If both cameras agree, you have mathematical proof that your consent was respected

Step by Step
1

You Choose

Pick which cookies you're OK with. Analytics? Marketing? None? Your call.

IRL: Like choosing which rooms of your house to show visitors

2

We Lock It In

Your choice gets hashed and stamped on the blockchain. Permanent. Unchangeable.

IRL: Like getting a notarized document, but digital and instant

3

Two Witnesses Watch

Your browser records what actually happened. The data company records what it received. Neither can see the other's notes.

IRL: Like two security cameras covering the same room from different angles

4

Certificate Issued

If both records match, you get a provenance certificate. Verifiable by anyone, forever.

IRL: Like a diamond's certificate of authenticity, but for your data consent

What This Means for You

Your data, your proof

Not a promise from a company. A mathematical receipt that can't be faked.

Companies can't lie

If they collect more than you allowed, the two cameras don't match. Busted.

Check it yourself

Open the verification page. Paste a hash. No login needed. No trust required.

Two independent witnesses. One mathematical truth. Zero trust required.

Technical Deep Dive

Two-Witness Deep Dive

The technical meat for those who want to understand the protocol. How two independent witnesses create a provenance chain that neither side can forge.

Consent Proof

Consent Proof

What the user INTENDED to allow

Click for details
Time T: Decision Made
// Consent record
{
categories: ["analytics"],
policyVersion: 3,
domain: "example.com"
}
Witness 1 (Collection Receipt)

Collection Receipt

What ACTUALLY happened in the browser

Click for details
Time T+1: Reality Observed
// Browser observation
{
cookiesSet: ["_ga", "_fbp"],
scriptsLoaded: ["analytics",
"marketing"], // ← extra!
categoriesUnblocked: 2
}

Why They're Different

A website could say “user consented to analytics only” but then load marketing scripts anyway. The consent proof records the intention. Witness 1 catches the reality. If they don't match, the certificate fails. This is the entire point of the two-witness model. You can't lie about what happened if an independent observer was watching.

1. User Consents

Selects cookie categories on the consent banner

hash + anchor

2. Consent Anchored

keccak256 hash stored on PhynSeal Avalanche L1

Click for details
consentId returned

3. Browser SDK Observes

Independently records: cookies set, scripts loaded, categories unblocked

Click for details
receipt submitted

4. Receipt Anchored (Witness 1)

receiptHash = sha256(cookies + scripts + categories + timestamp)

Meanwhile...

5. Data Sent to Processor

Analytics data tagged with consentId, like a shipping label on a package

Click for details
processor hashes data

6. Processor Attests (Witness 2)

attestationHash = sha256(eventBatch), the fingerprint of what was actually processed

cross-reference

7. PhynSeal Cross-Verifies

Compares consent + receipt + attestation for the same consentId

Click for details
all match

8. Certificate Issued

certHash anchored on-chain. Verification rate: 100%. Verifiable forever.

Click for details

What PhynSeal GETS

Cryptographic hashes (consent, receipt, attestation)
Category labels (e.g., "analytics", "marketing")
Timestamps and block numbers
Processor identity (who attested)
Transaction hashes (on-chain references)

What PhynSeal NEVER SEES

Actual cookie values (_ga=UA-12345...)
Personal data (name, email, IP)
Browsing history or page URLs
Raw analytics events
Session data or user behavior

Why Neither Side Can Cheat

Client fakes Witness 1? → Can’t forge Witness 2 (processor submits independently)
Processor fakes Witness 2? → Can’t forge Witness 1 (browser submitted at consent time)
Both collude? → Can’t fake blockchain timestamps. Validators enforce ordering.

Key Insight

PhynSeal is a hash matchmaker, not a data processor. It proves consent → collection → processing all happened in order for the same consent event, without ever touching the actual data. The protocol sees fingerprints, never faces.

Two witnesses. Three hashes. One truth. Zero PII on-chain.

Common Questions

FAQ

The questions everyone asks. Straight answers.

Consent proof records your intention. “I agree to analytics cookies.” It’s captured at the moment you click “Accept.”

Witness 1 records reality: what actually happened in your browser after consent. Which cookies were actually set? Which scripts actually loaded?

Think of it this way: consent proof is the contract you signed. Witness 1 is the security camera footage showing whether the other party held up their end.

The client app passes it along. When your browser sends analytics data to the processor, the consentId is tagged onto that data, like a shipping label on a package.

The processor doesn’t discover the consentId on its own. It receives data with the consentId attached, hashes that data, and submits the attestation referencing the same consentId.

This is what links the three records together: consent, receipt, and attestation all share the same consentId.

// Data sent to processor includes the tag
{ consentId: "abc123", events: [...analyticsData] }
// Processor attests using the same ID
phynseal.provenance.attest("abc123", dataHash, "acme-analytics")

No. PhynSeal never sees raw data. It only receives hashes, one-way mathematical fingerprints.

It receives:

  • A hash of your consent choices
  • A hash of what your browser observed
  • A hash of what the processor received

It matches them by consentId, checks timestamps are in order, verifies they’re all on-chain, and issues a certificate. Zero decryption. Zero raw data. That’s the whole point.

Not without getting caught. Here’s why:

The website controls the consent banner (Witness 1 source). But it does NOT control the processor’s attestation (Witness 2). These are submitted independently.

If the website lies about what it collected, the processor’s independent attestation won’t match. The certificate either fails or shows partial verification. Instant red flag.

And neither can fake blockchain timestamps. The chain enforces that consent came before collection, which came before processing.

The certificate gets flagged. Specifically:

Both match→ verificationRate: 100%Verified
Partial match→ verificationRate < 100%Partial
No match→ verificationRate: 0%Failed

A partial or failed certificate is a red flag. It means either: (a) the website collected more than consented, (b) the processor received data it shouldn’t have, or (c) timestamps don’t align.

In the current demo, PayPS acts as its own data processor. The “AcmeAnalytics” processor page is a simulator.

But here’s the important part: the architecture is not simplified for the demo. The same code paths, the same on-chain anchoring, the same cross-verification, all real. The only difference is both witnesses come from the same organization.

Adding real external processors later requires zero protocol changes. The API is the same. The verification is the same. It just needs a different entity submitting Witness 2.

Yes. Right now. No login required.

  1. 1Go to the verification page (/verify)
  2. 2Paste any certificate hash, consent ID, or payload hash
  3. 3See the full verification result: consent details, both witnesses, on-chain status

Every hash links to the blockchain explorer for independent verification. You don’t need to trust PayPS. You don’t need to trust PhynSeal. The math speaks for itself.

Don’t trust us. Verify.

Still have questions? The best way to understand is to try it . Consent to cookies, then verify your own certificate.

Try PayPS

Rewards

Get Paid for Your Data

Every category you consent to earns Myps tokens daily. Your data has value - and now you capture it.

Analytics

5

Myps / month

Functional

8

Myps / month

Social Media

10

Myps / month

Marketing

15

Myps / month

Consent to all categories = 38 Myps/month

Earned passively just by browsing with active consent

Anonymous User Visits

A visitor lands on a PayPS-enabled site. No account needed.

Click for details
chooses categories

Consents to Categories

User selects which data categories to share: analytics, marketing, functional, social.

Click for details
daily accrual

Myps Accrue Daily

Tokens accumulate every day the consent remains active. More categories = more Myps.

Click for details
creates account

Signs Up (Key Moment)

User creates an account with email. Magic Link generates a hidden blockchain wallet.

Click for details
identity stitching

Identity Stitching

Anonymous session linked to authenticated account. All prior consent history is preserved.

Click for details
retroactive credit

Retroactive Myps Credited

All Myps earned during anonymous browsing are credited to the new account instantly.

Click for details

Balance Visible on Rewards Page

Users see their total Myps balance, earning history, and active consent categories.

redeem

Redeem for Coupons

200 Myps = 5 EUR coupon. 100 Myps = 2 EUR coupon. Redeemable at partner pharmacies.

Click for details

MypsToken.sol

ERC-20 token with soulbound-like restricted transfer. Your Myps, non-transferable.

Click for details
balance sync

On-Chain Balance Sync

Off-chain accrual syncs to on-chain balances via relayer pattern. Gasless for users.

Click for details
funds deposited

RewardPool.sol

Businesses deposit funds to back Myps redemptions. Escrow ensures every Myps is redeemable.

Click for details
identity proof

SoulboundNFT (Data Passport)

Non-transferable NFT proving your consent history and data reputation. Your on-chain identity.

Click for details

Estimated annual value per user: 456 Myps (~22 EUR)

Regulatory Compliance

GDPR Done Right

Not just compliant — provably compliant.

Art.7

Conditions for Consent

Live
What the law requires

Freely given, specific, informed, unambiguous consent with clear affirmative action.

How PayPS implements it

Unchecked-by-default toggles, equal button prominence, transparent Myps pricing per category, policy version tracked on-chain.

Art.17

Right to Erasure

Live
What the law requires

Users can request deletion of all personal data without undue delay.

How PayPS implements it

Salt deleted, domain/categories/rawPayload/anonymousId NULLed. On-chain hash remains but is permanently unlinkable without salt. The hash becomes a tombstone.

Art.20

Data Portability

Live
What the law requires

Users can export their data in a structured, machine-readable format.

How PayPS implements it

Proof cards with consent hash, TX hash, chain status. Exportable consent history. Public verification page for independent audit.

Art.25

Data Protection by Design

Live
What the law requires

Privacy safeguards built into system architecture from the ground up.

How PayPS implements it

Zero PII on-chain (only hashes). CSP enforcement at browser level. ERC-4337 Smart Accounts eliminate privileged admin keys.

Art.30

Records of Processing

Live
What the law requires

Maintain comprehensive records of all processing activities.

How PayPS implements it

Two-witness provenance model. Witness 1 (browser collection receipt) + Witness 2 (processor attestation). Provenance certificates as immutable audit trail.

Art.35

Data Protection Impact Assessment

Live
What the law requires

Assess and mitigate risks of high-risk data processing activities.

How PayPS implements it

On-chain audit trail enables real-time DPIA. Public verification allows independent assessment. Live event feed for continuous monitoring.

Traditional consent management stores proof in private databases that regulators must trust. PayPS stores proof on a public blockchain that anyone can verify.

6 articles live
Architecture

Under the Hood

Four layers. Product on top, blockchain on the bottom. Each layer is independently auditable and replaceable.

architecture.stack
4 layers / 9 contracts

Next.js 16, React 19, Drizzle ORM, Neon Postgres

Capabilities

  • Cookie consent with transparent pricing
  • Myps rewards earned for data sharing
  • GDPR dashboard for consent management
  • Admin monitoring and analytics

Consent recording, identity stitching, provenance engine

Capabilities

  • Hash-based consent anchoring with zero PII on-chain
  • Cross-device identity stitching (privacy-preserving)
  • Two-witness provenance attestation model
  • Independent audit verification endpoints

API Endpoints

POST/consent/record
POST/identity/stitch
POST/provenance/attest
GET /audit/verify

ERC-4337 Account Abstraction, Session Keys

Capabilities

  • VeilAccount - Smart Account with dual-curve validation
  • Passkey login (WebAuthn, P-256 on-device)
  • Session keys for gasless, seamless UX
  • Users never see gas fees or seed phrases

P256VERIFY precompile, TxAllowList, NativeMinter

Capabilities

  • Dedicated throughput with no contention from DeFi traffic
  • P256VERIFY precompile for native passkey verification
  • TxAllowList restricts who can submit transactions
  • NativeMinter for protocol-controlled gas tokens

Smart Contracts

Nine contracts across two ownership domains. PhynTec IP stays private; PayPS contracts are open-source.

PhynTec IP

5 contracts, private

Proprietary

EntryPoint v0.7

Live

ERC-4337 entry point that validates and executes UserOperations

function handleOps(PackedUserOperation[] calldata ops, address payable beneficiary)

VeilAccountFactory

Live

CREATE2 deterministic account deployment from passkey credentials

function createAccount(bytes32 credentialId, uint256[2] pubKey) returns (address)

VeilAccount

Live

P-256 + secp256k1 dual-curve signature validation

function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 missingAccountFunds)

VerifyingPaymaster

Live

Gas sponsorship so users never pay for transactions

function validatePaymasterUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 maxCost)

ConsentAnchor

Live

VCAP core: keccak256 hash anchoring with revocation bitmaps

function anchorConsent(bytes32 consentHash, uint256 policyVersion) returns (uint256 anchorId)

PayPS

4 contracts, public

Open Source

SoulboundNFT

Live

Data Passport - non-transferable identity token (ERC-721)

function mint(address to, string calldata metadataURI) returns (uint256)

MypsToken

Live

ERC-20 reward token with restricted transfers

function reward(address user, uint256 amount) onlyRewardPool

RewardPool

Live

Business deposits flow to user reward distributions

function distribute(address[] calldata users, uint256[] calldata amounts)

CouponNFT

Live

ERC-1155 multi-token coupons for pharmacy redemption

function redeem(address holder, uint256 couponId, uint256 amount)

Don't trust us - verify on-chain.

PhynSeal's Protocol Account is a Smart Account, not a privileged admin key. Every action is an ERC-4337 UserOperation validated by the EntryPoint. No multisig override. No escape hatch. The protocol is the code.

Roadmap

What's Live & What's Next

We build in the open. The Avalanche L1 is deployed, smart contracts are live, and account abstraction is running. Here's everything that's shipped and what's coming next.

Live Now

Live

16 features

Cookie consent with on-chain proof hashing

Every consent choice is hashed (keccak256) and anchored immutably. Zero PII on-chain.

CSP enforcement

Browser-level Content Security Policy blocks non-consented tracking scripts in real time.

Two-witness provenance model

Independent client-side and server-side witnesses attest to every consent event.

Myps rewards

Off-chain reward calculation and display. Users earn Myps for transparent data sharing.

GDPR erasure

Salt deletion + hash unlinking. Consent proof becomes unverifiable on demand, as required.

Public verification page

Anyone can independently verify a consent proof using the public explorer.

Admin monitoring + live event feed

Real-time dashboard showing consent events, anchoring status, and system health.

Identity stitching

Anonymous sessions seamlessly merge into authenticated profiles without data loss.

Passkey authentication (WebAuthn P-256)

Passwordless login via device biometrics. Private keys never leave the hardware.

PhynSeal Avalanche L1 deployment

Dedicated Avalanche subnet for consent anchoring with sub-second finality.

Real on-chain anchoring

Live ConsentAnchor.sol transactions on PhynSeal L1. No mocks, no fallbacks.

SoulboundNFT minting on registration

Non-transferable identity token issued at sign-up, binding wallet to consent history.

MypsToken (ERC-20) on-chain sync

On-chain ERC-20 token contract synchronized with off-chain Myps balances.

ERC-4337 bundler + VerifyingPaymaster

Gasless user operations via account abstraction. Users never touch native tokens.

VeilAccount Smart Account deployment

Modular smart account with ERC-7579 plugin support for extensible consent logic.

Protocol Account UserOperations

System-level UserOps for automated anchoring, reward distribution, and governance.

Planned

Planned

8 features

PhynSeal SDK

Drop-in consent banner for any website. One script tag to verifiable consent.

CMP plugin integration

Native plugins for OneTrust, Cookiebot, and other CMPs. Retrofit existing banners.

Sybil resistance

Phone verification, device fingerprinting, and behavioral analysis to prevent abuse.

Progressive Myps unlocking

Time-gated redemption windows. Rewards vest over engagement periods to deter farming.

Merkle batching with Superfluid streaming

Batch consent hashes into Merkle trees for scalability at volume, with Superfluid for continuous reward streaming.

Module marketplace (ERC-7579)

Third-party consent modules: age verification, jurisdiction-aware rules, custom logic.

Cross-chain verification

Verify consent proofs from any EVM chain. Portable trust across networks.

Browser extension for consent portability

Carry your consent preferences across sites. One configuration, every banner.

Overall Progress

67% Live
33% Planned
16 / 24 features
8 / 24 features

Traditional cookie banners are theater. PayPS is consent with teeth.

The consent you see anchored during our demo is on PhynSeal L1 right now. Go verify it.

Live on PhynSeal L1
PayPS

Built by PayPS on PhynSeal VCAP - Verified Consent Anchoring Protocol

PhynTec © 2026 - Don't trust us. Verify.