-
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
Restore Contract Code at 0x863DF6BFa4469f3ead0bE8f9F2AAE51c91A907b4 #999
Conversation
EIPS/eip-999.md
Outdated
author: Afri Schoedon (@5chdn) | ||
discussions-to: https://ethereum-magicians.org/t/o-be-announced/999 | ||
status: Draft | ||
type: Standard Track |
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.
Should be "Standards Track".
EIPS/eip-999.md
Outdated
eip: 999 | ||
title: Restore Contract Code at 0x863DF6BFa4469f3ead0bE8f9F2AAE51c91A907b4 | ||
author: Afri Schoedon (@5chdn) | ||
discussions-to: https://ethereum-magicians.org/t/o-be-announced/999 |
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.
This needs replacing with an actual URL.
The community has rejected bailouts and developer corruption. |
This meets the requirements to be merged as a draft. Do you want it merged immediately, or left open for discussion? (Personally, the former seems cleaner, so as not to split general discussion between this pr and the discussion thread.) |
Hardforking to restore bugs is a slippery slope and will tarnish Ethereum's reputation permanently. I strongly oppose this EIP. |
This EIP is straight forward compared to the complex immutability changing process proposed before.
|
This has been discussed in the past; there's no way to do this without breaking the way selfdestruct works in ways that could break other peoples' expectations around contract security. |
This is the wrong level of abstraction at which to address the issue. The more general case is the question of whether or not it is desirable to have a system which allows developers to deploy code to production but makes it impossible to fix bugs in said code. I don't have an answer to this question, and it's a complex and controversial one. But the kind of problem this EIP attempts to address will inevitably happen again. It would be much better for consensus to emerge about whether or not facilities to revoke/update contracts should be built in to the platform (for contracts which themselves haven't catered for that possibility in advance), rather than handling it on an ad-hoc basis for specific contracts. |
Whatever the answer ends up being to a problem like this, it needs to be general and applicable to any contract going forward. Any other option is against the egalitarian nature of the chain. Because of this, I don't see a resolution that both recovers lost funds AND is in the best interest of the rest of the community. Allowing code resurrection after self-destruction will introduce myriad other issues, especially if it resets the state of the contract. The potential for abuse is large. As such, I don't agree with altering the current way self-destruct works in the EVM. And so since this EIP includes BOTH of my concerns, ie, allowing resurrection AND allowing it for only one privileged party/contract, I am against the proposal. |
I am against this because immutability is the defining feature of Ethereum and driver of the network's value. Very sorry to those who lost funds in this incident. |
Like someone mentioned earlier, I think general solutions should be the main focus of discussion if anything, attempting to rescue the funds by hardforking is, in my opinion, the wrong approach. Immutability is one of the most valuable things Ethereum currently has, let's not damage it. |
If I lose 1 ETH and can prove I lost it and no one else claims it, there should be a system and process for me to get it back. If you keep letting arbitrary EIP's go through to help privileged people, then the hypocrisy is blatantly obvious and it leads to contention and drama. I support giving Parity wallets their money back if I can also get my money back when I make a mistake. |
@5chdn What I'm getting at is that this EIP should be closed unless a standard for everyone is approved. So until that happens, this cannot be merged as it's unfair. I am unsure whether I support letting everyone alter history to benefit themselves, the community can decide. But if the community can't agree on letting everyone change the blockchain when needed, then this EIP should be closed. |
Ethereum should really try to devise more general purpose solution for unforeseen events like this. I feel that handling fund recovery on a case by case basis is against its philosophy. |
The author has a strong, well-prepared case. Instead of trying to discuss this 'later,' perhaps a more reasonable option is to allow this to go through and try to solve this problem. That's how a community should work. It's not black and white. There is a technical side, and there is a people side. Try to understand both for a minute. The idea of doing a hard fork to recover funds is ridiculous, but that's not authors fault. It's yours. |
Great, finally a solution. |
This is a specific request to restore a single self-destructed contract? How many people have made mistakes that cost them ETH? Allowing case-by-case proposals for mistake reversals is a terrible idea and opens up all kinds of concerns about picking winners and losers (and who gets to pick). When any person or group is able to pick winners and losers, you inevitably get corruption, bribery, etc. This would set a terrible and dangerous precedent. |
@Arachnid can you elaborate on this? I understand that it would be a breaking change to the way selfdestruct works, but what kind of security expectations rely on removal of a contract? It makes sense, but maybe if we consider some examples we can make progress on a viable solution |
A second time? |
@Arachnid very well written article. It is unfortunate that the contract code is not hashed into the address of the contract. It would be possible to create a recovery while breaking fewer invariants if that were the case. |
I've merged this PR to create a draft EIP, as it meets all the requirements for an EIP editor to do so. Because I know this will be contentious, I'd like to highlight a few important points:
|
Community governance != ETCv2|ETH-Gold|ETH-Silver|ETH-Private...best of luck, tough call here. |
@taoteh1221 yeah that will be the result if this gets merged. Don't get me wrong I'll be fully on board. I think I'll call my fork ETH-Saffron. |
No thanks. |
This would set a really bad precedent. While I am extremely sympathetic to all who lost their money in the hack, the damage that would be inflicted to the community far outweighs the loss of access. |
so, every time when famous devs loose money through a bug that they caused, Ethereum will hardfork to return them the money. this is 3rd fail of parity and this time they lost money. the other 2 times people lost money. the vote is completely rigged. what's wrong with Ethereum ? i loose all faith if this is approved. maybe they paid 10M$ to get this through? nobody knows and we will never know. it opens the door for corruption. Ethereum did nothing wrong. it's a toplayer solution. wtf.... |
…thereum#999) * Claim a random number * Add specification * Add rationale * Improve wording * Improve formatting * Improve wording * Specify the account values for balance, nonce, code, and storage * Be more specific about a hard-fork * Add poc implementation for Parity * Improve formatting * Improve formatting * Make sure the total supply will be unchanged. * Point to relevant changes in chain spec. * Remove contracts/ethereum#74 code from the proposal. * Use the old but patched library * Highlight differences to the initially deployed contract * Add code and storage for the stateDiff * Update resources * Update resources * Add correct discussion URL * Standard Track -> Standards Track * Link the PR for Parity * Rationale on unchanged Ether supply * Split specification alternatives via bytecode vs. codehash
To understand why I support this EIP, I expose the premises my reasoning starts from.
About this specific EIP
At the end this EIP restores a state of the chain where multisig wallets can work again, no one loses ethers, tokens or whatever and no one gains them. This seems legit enough to me, and this is why I support this EIP. |
Exactly consensus agreed not to support this EIP. |
While I agree with @Neurone reasoning, I think the nature of this is not very blockchainy. We use this tech because there are no takesie-backsies. Look at every post on twitter vitalik makes, there are scammers pretending to give away ETH. Should we go hunt down every "scammer" account & fake ICO, and undo every mistake transaction made to fix? I feel like the point is that a mistake here is supposed to be a mistake forever. And if you wanted to be able to undo a mistake like that you should use a credit card. On trustIf you fund a project (like Parity or any other) you are trusting them. If they run away with your ETH or accidentally kill their contract, as in this issues's case that is the result of trust. I'm voting no for now but am open to talking about is. Maybe the blockchain that we want is one that is sunshine and rainbows, where we the community can help each other, fix honest mistakes, punish bad actors and we can all get along. I think the case now is that the ecosystem needs a crypto-anarchal no takesie-backsies blockchain. |
Hallo! This proposes to restore the code of the
WalletLibrary
contract at0x863DF6BFa4469f3ead0bE8f9F2AAE51c91A907b4
with a patched version that can not be claimed or killed.Link to read the proposal document: eips.ethereum.org/EIPS/eip-999.
Discussions to: ethereum-magicians.org/t/eip-999-restore-contract-code-at-0x863df6bfa4/130