-
Notifications
You must be signed in to change notification settings - Fork 5.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add EIP: Ethereum Access Token #7272
Conversation
File
|
EIPS/ethereum-access-token-eip.md
Outdated
@@ -0,0 +1,188 @@ | |||
--- | |||
eip: TBD |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
eip: TBD | |
eip: 7272 |
Assigning EIP number using PR number. Please also update the filename.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done 👍
The commit 05f51fe (as a parent of 1b97724) contains errors. |
Nice work friends all went smoothly |
Great work! This is an elegant approach to a common problem. Just want to share there is a framework the Metamask team is working on called "Delegatable" (see github) that also tackles the general problem of authorization/access. Commonalities with this EIP include off-chain issuance of authorization, on chain validation, signed message validation, conditional invocation. |
Thanks for pointing that out, @aa-eyup. Key differences I see between this approach and Delegatable is that
Delegatable is already doing a few things beyond that:
I really like the branding and pitch for EATs, and I don't doubt it can be useful in some situations, but I think that Delegatable aims to satisfy all the same use cases and also some more, so if you wanted to collaborate on that, I'd be happy to invite you to our discord. |
Thank you @aa-eyup and @danfinlay for checking out this proposal! I went through your great documentation on the Delegatable framework. I like how caveat enforcers allows developers to implement custom rules and the modularity provided is interesting. On the flip side, Delegatable seems more complex to reason about (e.g 10 different data structures vs 2 with EATs). The EAT system is more opinionated on purpose as it relates to security guarantees. For example from your docs:
From my understanding a delegate has full permission by default and this needs to be tone down with caveats whereas with EATs a delegate starts with no access by default, and the signer authorizes very specific function calls for a limited time.
This is on purpose. For context on how we are using them, we are performing authentication of the person/entity behind an address before issuing an EAT. So the goal is for these EATs to be bound to the entity they’re given to. Although this is very difficult problem on its own, at least they are bound to the address of the recipient, who shouldn’t have the ability to pass on this authorization to someone else (without also giving control of their account). We’ve also considered adding support for contract accounts via EIP-1271. Ultimately the signer needs to be an EOA but this would allow to rotate signers associated with a contract account in a "more standard way" than what we’re doing in KeyInfrastructure.sol. |
I am closing this pull request because we are in the process of separating EIPs and ERCs into distinct repositories. Unfortunately, as far as we are aware, GitHub does not provide any tools to ease this migration, so every pull request will need to be re-opened manually. As this is a PR to create / modify an ERC, I will kindly ask you to redirect this to the new repository at ethereum/ERCs. We have prepared a guide to help with the process. If there is relevant history here, please link to this PR from the new pull request. On behalf of the EIP Editors, I apologize for this inconvenience. |
When opening a pull request to submit a new EIP, please use the suggested template: https://github.com/ethereum/EIPs/blob/master/eip-template.md
We have a GitHub bot that automatically merges some PRs. It will merge yours immediately if certain criteria are met: