Add ERC: Purpose-Bound Third-Party Data Consent - #1921
Open
duribebe wants to merge 7 commits into
Open
Conversation
…vation diagram - Narrow Privacy rule 1 to identifiers meaningful outside the protocol. As written it forbade the salted pseudonym rule 7 recommends, making it unsatisfiable by any design that authenticates a subject on chain. - Promote rule 7 to normative: the subject is referenced only as subjectCommit, per grant, 128 bits minimum, derived from no pre-existing identifier. - Replace address subject with bytes32 subjectCommit; add subjectOf(); re-key nonces to the commitment; ConsentRevoked emits the commitment; prohibit the ERC-1155 subject-side mint. - Cite Entriken and Uribe (2020), Biosample permission token with non-fungible tokens, as prior art for the permitter/permitee/permit model. - Add a Motivation diagram showing the derivation chain a single consent must govern.
Collaborator
File
|
American spelling throughout (pseudonymization, anonymization, behavioral, artifacts, modeled, unrecognized, organization). Rephrase words absent from the linter dictionary, and mark protocol terms and proper nouns as code spans.
abcoathup
reviewed
Jul 31, 2026
| @@ -0,0 +1,582 @@ | |||
| --- | |||
| eip: 8355 | |||
Contributor
There was a problem hiding this comment.
Suggested change
| eip: 8355 | |
| eip: 8356 |
@duribebe
Assigning next sequential EIP/ERC/RIP number.
Numbers are assigned by editors & associates.
Please also update the filename.
abcoathup
reviewed
Jul 31, 2026
| title: Purpose-Bound Third-Party Data Consent | ||
| description: A revocable, purpose-bound consent grant in which the consenting subject is not the beneficiary, with an independently revocable agent leg. | ||
| author: Daniel Uribe (@duribebe) | ||
| discussions-to: https://ethereum-magicians.org/t/purpose-bound-third-party-data-consent-a-grant-where-the-consenting-party-is-not-the-beneficiary/29217 |
Contributor
There was a problem hiding this comment.
Suggested change
| discussions-to: https://ethereum-magicians.org/t/purpose-bound-third-party-data-consent-a-grant-where-the-consenting-party-is-not-the-beneficiary/29217 | |
| discussions-to: https://ethereum-magicians.org/t/erc-8356-purpose-bound-third-party-data-consent/29217 |
Updated Eth Magicians title with assigned number & title
Make the previously deferred adversarial findings normative: subject commitment opening, usesMax honesty, usage hash-chain schema, Merkle leaf construction with ancestor inheritance, full Status transition table (suspend/resume/terminateByIssuer), eth_call authentication limits on checkAccess, termsRef as versioned template only, and purpose-profile array ordering before RFC 8785 canonicalization.
…his ERC Bind is signed after the C2PA claim is sealed, not inside it, so the author signature covers the manifest hash. The restrictiveness lattice is a verifier MUST in this profile.
|
The commit ab86323 (as a parent of 3a26502) contains errors. |
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.
Add ERC-8356: Purpose-Bound Third-Party Data Consent
Adds a new Standards Track ERC proposing a consent grant in which the party who consents is
not the party who benefits.
Discussion: https://ethereum-magicians.org/t/erc-8356-purpose-bound-third-party-data-consent/29217
What this proposes
Every delegation standard currently on the Standards Track is two-party: the principal who
signs is the principal who benefits, and the asset at risk is the principal's own. This
proposal standardizes the three-principal case, which is the shape of consent to use data
about a person:
Three properties follow, none of which I was able to express with existing standards:
merely recorded. ERC-8328 models a subject but states it "does not define compliance
policy", and its
OUTCOME_REVOKEDis an assertion nothing consults.response needs when a session key or tool provider is compromised.
Why not a profile of ERC-8226
ERC-8226 is the nearest neighbour. Its
Mandateis keyed(agent, principal)with no seatfor a third person, it checks compliance at grant time only, and its
metadatafield isexpressly non-normative ("MUST NOT rely on it for enforcement decisions"). The two compose
rather than subsume: an agent may hold an 8226 mandate over a payment asset and a grant under
this proposal over a data asset.
Reference implementation
Deployed across three chains at 16,892 bytes runtime (open-item revision, 2026-08-01).
Runtime is not byte-identical across chains because each embedding includes its own
address(this)for the EIP-712 / self checks; all three share the same compilerartifact, selectors, and constants (
MAX_DEPTH=4, purpose registry = zero / fail-closed).0x360ac376e20B4d930da810f7CeA935F52693a84C0xc92f9f1D68A445189Ad3ad28524186A11Be30DcA0xD526E4d6e449A091D18900DC9ACb183e9556F71448 tests, mostly negative. The load-bearing assertions are that a sub-grant cannot exceed its
parent on scope, ops, expiry, purpose or uses; that a claimed-but-unproven agent identity
never satisfies an agent constraint; that revoking the agent leg leaves the human grant alive;
that suspension is the only non-terminal return to ACTIVE; and that revocation cost does not
grow with the number of delegated children.
Prior deployments remain live and are listed under
supersededindeployed-addresses.json.They lack
suspend/resume/terminateByIssuerand ancestor leaf inheritance.Review history
I ran the spec and implementation through an adversarial review before opening this. Seven
findings classed as publication blockers were fixed before the first push. The privacy
contradiction (rule 1 vs rule 7) was resolved in a follow-up:
address subjectbecamebytes32 subjectCommit, rule 1 narrowed to identifiers with meaning outside the protocol,and
subjectOf()was published so the zero-subject profile is buildable.Editors assigned ERC-8356 (branch name still says 8355 so the open PR is not detached).
Open items closed in this revision
All previously deferred items are now normative in the draft:
usesMaxhonesty. Stated as a contractual ceiling the constrained party self-reportsthrough
commitUsage, not a cryptographic bound.H = keccak256,h_0 = 0, record schema fixed; "completeness"claim removed.
inherit across ancestors.
suspend/resume/terminateByIssueradded;
resumeofSUSPENDEDis the only non-terminal return toACTIVE.checkAccessandeth_call. Explicit that an off-chaineth_callwith client-chosenfromauthenticates nothing; combineisGrantActivewith independent agent auth.termsRefvs VC instance. MUST hash the versioned template fromtermsOfUse, neverthe per-subject credential.
termbefore RFC 8785canonicalization.
subjectCommit = keccak256(abi.encode(subjectSalt, subjectKey)).Checklist
ERCS/erc-8356.md, number assigned by editor (@abcoathup)preamble-orderrequiresmarkdown-order-sectionorder[ERC-N](./eip-N.md), matching repository conventionrequires: 165, 712, 1271, each linked at first mentiondiscussions-toset to the Ethereum Magicians thread for ERC-8356