feat(userId): worldAdsIdSystem submodule — World ID verified credential as a world.org EID#6
Merged
Merged
Conversation
Emits the World ID verified credential the World Ads drop-in stored first-party
as a world.org EID: uids[0].id = the RP-scoped nullifier, uids[0].ext.proof =
the full verify response, so an operator can verify-before-trust. Config is just
{ name: 'worldAds' } (no params/storage — the drop-in owns the storage).
Replaces the per-page pubProvidedId eidsFunction pilot.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
worldAdsIdSystemuserId submodule that emits the World ID verified-identity credential — stored first-party by the World Ads drop-in after a World ID ceremony — as aworld.orgEID, so it rides the bid request and an operator can verify-before-trust the proof.This productionizes the pilot (a per-page
pubProvidedIdeidsFunction) into a proper, named, upstreamable submodule.Emitted EID
idis the nullifier (match/dedup hint);ext.proofis the verifiable credential. Consumers should verify the proof and key on the verified nullifier.Config
No params/storage — the drop-in owns the storage (
_worldads_nf+_worldads_proof, read viagetStorageManager).Verified
Built into the scope3 prebid build and tested live: with
pubProvidedIdneutralized,worldAdsalone emits theworld.orgEID with the proof (proofIdentifier: proof_of_human). Prebid does not stripuids[].ext.proof.v2 (follow-up, not in this PR)
ext.proofcarries the raw verify response — appropriate for a controlled operator-only path. For an open bidstream it should be a token sealed/encrypted to the operator's key (only the operator decrypts), not the raw proof. Tracked as v2.🤖 Generated with Claude Code