-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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 ERC for deposit address and contract interface #2876
Conversation
Question: Should I explicitly mention that |
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.
I left some comments, but the structure looks good so this is good to merge as a draft I believe. You may want to look into payment URLs (https://eips.ethereum.org/EIPS/eip-681) as I think it strives to serve a similar purpose, but with token support and without limiting to only this particular contract interface. The idea is that any wallet that works with payment URLs would be able to send to whatever receiving contract that the recipient wanted.
Thanks for the comments, I made a fix here #2877 As for eip-681, from the perspective of an exchange looking for a solution to a problem (which I am), here are the reasons why I found it insufficient:
From an exchange perspective, the best UX and dev experience for account-based-blockchain deposit systems has been ripple, thanks to their destination tag feature. However, that is not without its headaches (there is no checksum nor is the dest_tag embedded in the address, so people forget it or mistype it all the time... the deposit address format laid out in the EIP fixes those problems). It would also be easy to fit support into existing APIs for my proposal. ie. These are the reasons why I did not decide to just use EIP-681. I really look forward to evangelizing this standard. |
Note: The following is personal opinion, unrelated to my job as an EIP editor: For (1), it feels like you'll end up with the same problem with this standard. Anything you can do to push adoption of this EIP you can do to push adoption of 681. It feels like there isn't much of a difference to end-users between "put 0xabcd1234... into your wallet" and "put eth://abcd1234 into your wallet". In both cases the user will get an unhelpful error if their wallet doesn't support the standard, and in the case of this EIP the thing they paste into their wallet looks like a regular address (just a hex string) so it is less likely they'll ask the right questions or a wallet support representative who doesn't know about this EIP will realize the user is following a new standard. A wallet could, if they so chose, only implement ETH transfers via 681 and give the user a "useful error" if they try to use a payment URL that does anything else. Alternatively, you could standardize a particular contract endpoint (like this EIP does) that is used specifically for ETH transfers but have the wallet integration protocol be 681. This way wallets could have a smaller set of 681 things to support, rather than having to support arbitrary method calls. |
This ERC defines a simple contract interface for managing deposits. It also defines a new address format that encodes the extra data passed into the interface's main deposit function.