-
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
Reclaiming of ether in common classes of stuck accounts #156
Comments
Speaking on behalf of Kraken, I would characterize this more as recompense than rescue. We did take on some not insignificant losses as a result of the mentioned bug in the old Ethereum javascript library. At the time, losses were covered out of Kraken's pocket to protect our clients. We would greatly appreciate the ability to recover the funds tied up in the incorrectly computed addresses. Thank you for this proposal. |
Here are some reports of affected users and implementations: |
Back when the DAO hardfork was debated, this category was brought up as a thing too difficult to fix therefore (INSERT CONCLUSION HERE). I'm glad we're considering fixing it now. |
@jespow @trapp If this spec were to be adopted so that Kraken's losses could be recompensed, would Kraken be willing to in turn cover the losses of users affected by the not safe enough ReplaySafeSplit contract? |
@cdetrio I don't think we can compare the two issues with each other. a.) The ethereumjs-lib did have a bug and did not work as intended. When you specify 0x0 as target address then that is a user input error. When your GUI defaults to 0x0 when you leave one of the two empty, then that's an issue with the GUI. I'm not aware of any GUI that actually does this but see a similar issue in Mist: ethereum/mist#1128 The "fixed" version has an additional check for 0x0 as target address which helps with this specific case but still allows other nonsense addresses like 0x1, 0x2 etc. You cannot fix an issue like that on the contract level, the best place is the GUI (like address checksums). c.) I also think it's offtopic here since the ReplaySafeSplit contract was not created or published by Kraken. The bug in this thread does not only affect Kraken, I would even say that the MyEtherWallet users lost a more due this bug compared to Kraken. Kraken just came forward in support for this initiative. |
Another thread related to this EIP: |
Maybe I'm missing it in the complexity... but if someone generates an account offline, for let's say a paper wallet, and then sends to it but claims it was an accident. What is to stop that person from doubling their ether if this EIP is implemented? |
@LefterisJP and @jbaylina figured it out for me! The contract address is deterministically computed from the address that created it :-), so the paper wallet trick wouldn't work. |
Posting on behalf of QuadrigaCX, we would like to see an amendment to this proposal in order to reclaim trapped Ether on contracts that have no ability to send. Not only to rescue some past mistakes but also thinking about providing a safety net for the future. Even though progresses have been made in Solidity to ensure return of the funds, there could still be a chance of Ether becoming trapped. |
Hi @axelay,
What are the other ways ether can become trapped? Are you meaning functions that are
Edit: Confirmed that @axelay is representing QuadrigaCX. Thanks! |
I created a tool to scan for the "ether stuck in empty contract" case. It finds about 3500 ETH in almost 300 empty contracts. I'm not sure I understand the edge cases and welcome any review. https://gist.github.com/mjmau/e073091446751b08762c8c65ae13a37d |
Wouldn't this be problematic for contracts that are intentionally "burning" ether by locking it up? Sure this could be done in the future in other ways (sending to a dead address) but I would be surprised if there didn't already exist contracts for which this would be an issue. |
Intentional burns are usually sending to |
Do you have a technical proposal on how that could be achieved? Devising a fair rule for this seems particularly problematic, since QuadrigaCX didn't even deploy the contract in question. |
From a technical perspective, I'd like to point out some things.
Now, the hard part would be whom to ascribe the tokens. Because it's impossible on-chain to see who sent what when and if that got stuck. So the only thing that could be done would be to let the account who deployed the contract get the credits. I don't see how it could be done in any other way, from a technical perspective. |
It looks more like a client's problem not a protocol issue. If you add a way to send ether back that could potentially compromise the whole system and lead to some weird scenarios that we don't see at the moment. The scheme like But the scheme like The warnings to the user should be done on a client side in a form like: |
Just want to say that I'm one the the noobs that where lucky enough to sent ether with an empty "TO". I know, I know :( Now all is stuck in this useless empty contract. I blieve that this will happen again and again. In my case it was a bug but it's quite easy to fall for the believe that it is safe to test send to an empty address as it would fail and bounce the transaction. Anyhow, any means to reclaim it would be deeply appreciated! |
Hi All, I share same situation with @FlaxFlax. Accidentally sent to blank To: field... it was 100 Ether .... :( Tx: https://etherscan.io/tx/0x761215d5ecb2162dc865960a7e4ce9c2189c9bd4a76de6caba80e626b60716ba |
If/when this feature gets implemented into Ethereum, could it be made to apply to all past transaction or can it only be made to apply to future transactions? |
Is this something that could be used to help me recover ETH sent to an invalid address? |
@timkae: Unfortunately not. There's no simple way to know if sending to an address was intended or a typo, just from the addresses themselves. |
Has there been any discussion about the following aspect of this original proposal? Quoting from initial post:
Most of the comments here are from people who obviously agree with the proposal because they lost ETH. Are there any downsides to this proposal? Certainly it gives ammunition to people who argue that ETH is less immutable than it should be. I am not taking a side, but I think the political aspects of the proposal should be discussed. |
@tjayrush My view on that is that the EIP should concern the technical implementation, so that the technical proposal is finished and fleshed out. Once that is done, and a concrete detailed proposal is available, that proposal should be discussed in a broader scope, which includes the larger community. So step 1: concrete technical spec, step 2: determine if it's supported by community. ...just my 5 cents. |
@tjayrush This proposal adds code, and therefore VM complexity, technical debt, etc. and only helps out people who have lost something. In general, I think anything that requires adding code to all nodes (e.g., part of consensus) needs to have a very strong argument for it. While I can appreciate the desire to get back lost money, I'm not convinced the total value restored to the userbase outweighs the total cost to the ecosystem. Do we have any idea exactly how much money would be recoverable with this? Do we have any idea the level of technical complexity required to implement (and maintain forever) the code associated with this change? |
@MicahZoltu With regard to your question of how much money, the answer has two parts: how much has already been lost, and how much will be lost in the future. I tried to estimate how much has been lost already to the subset of "sent to new contract with null code" in my previous comment above, which found around 3500 ETH in that category. See the gist https://gist.github.com/mjmau/e073091446751b08762c8c65ae13a37d |
A recent ICO (REXmls) has 6687 ETH (~$2 million) sitting in an address an address that doesn't actually exist (seen here > https://etherscan.io/address/0x03e4b00b607d0980668ca6e50201576b00000000), due to a misspelled address in their original ICO smart contract. This is a project that would definitely benefit from recovering funds and in doing so would benefit Ethereum and the Ethereum ecosystem as a whole. |
@GriffGreen Can you explain how you came to the conclusion that the paper wallet trick won't work? I also must be missing something, but unfortunately the SE answer you linked wasn't new information to me and even knowing that it still seems like the paper wallet trick would work.
|
There are several different suggestions in this thread and elsewhere relating to also including recovery of any funds accidentally sent to the 0x00 address .
The confusion comes that the 0x00 may have been used in the past as a purposeful "burn" address. Therefore any transfers to 0x00 from contracts should be treated as having been purposeful attempts to burn ether and be untouched. There is no case where an externally owned account would likely have purposely sent a transfer to |
@GriffGreen I would also like to know why the paper wallet trick won't work; @MicahZoltu's sequence of events looks correct to me. I share @MicahZoltu's concerns re: complexity risks of this EIP. Can anyone comment on how much extra code / complexity would be needed to implement this? My gut feeling is that unless it's very simple, the risk associated with implementation outweighs the benefits of reclaiming lost funds. |
@plutoegg do you think in practical terms the willingness of ETH2 clients to monitor a deposit contract that would allow for lostETH to be staked would be that different than implementing the change in ETH1? A lot of the same concerns would still apply. I think the one thing that could end a hope of this working is the possibility of a contentious fork, aka "ETH2 Classic". One of the considerations would be how this deposit contract actually issues lostETH, making sure it can't be abused, etc. Is anyone actually working on this deposit contract based approach to this problem? It seems like the window for it would be in the next few months.
|
Am i also trapped in the black hole? I dont have much knowledge about the chain but can anybody explain this: Hi, today i sendend a order of 1051 sxp to this adress 0x085a36A9d73abcd18417A9Abe3bA4bc3cB3a51BC by accident. Now i can`t reach this wallet. After some research is saw this is a contract wallet of binance. Can u guys help me to get my coins back? This is the orderadress: https://etherscan.io/token/0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9?a=0x085a36a9d73abcd18417a9abe3ba4bc3cb3a51bc With kind regards, Gerbert Pater |
The |
Ai.. this means i lost the coins forever? |
As far as I can tell, yes |
Hmm, that sucks :) But is it not possible to find this wallet somewhere? |
I am faced with a similar issue on behalf of a customer. I have no idea how this happened, but he had an address he was trying to send to that ended in 0x...b880 (which is an exchange address and he has no access to private key) and the coins ended up going to the exact same address with the exception of the last two chars, and got locked in 0x...b879. If he did have the private key, could the private key be computed of the mistaken address at any reduced cost computationally, knowing the private key of another address differing by a few bytes? |
Some time ago, in 2017, I was using Metamask as a newbie with an interface which still really needed work. I went and decided to create a contract with only 0x in its code and sent 2.5 eth to it. Will this or other EIP help me get back the funds? Thanks! |
Believe me I pray it would.. but I haven’t seen any traction trying to move it forward. I can’t see how stranded ETH in the zero addresses utilized this way would be a negative to the integrity of the blockchain. |
When you say zero addresses, do these include empty contracts? |
Also, how do we push it?! It's starting to feel like forces HODLing :) |
Not to get involved in this conversation (I won't), but I just wanted to say that sometimes people purposefully send ETH to the zero address as a way to burn the ETH. This lowers the number of coins in existence and thereby increases the value of each remaining coin. Recovering that ETH would violate those person's purposeful action. Violating purposeful action seems to be a pretty huge negative to ETH's integrity to me. The other obvious problem with the suggestion of recovering the ETH currently in the zero address is who gets to decide what to do with it? There's zero traction on this issue because there's zero good directions to move forward. |
Sometimes it may have been sent to the burn address on purpose true.. I guess but I would Bet the accidents and mistakes hugely outweigh any of those incidents. Send it back to originating addresses stake it, clone it, or whatever let the owners of the originating addresses decide what to do with it... if it was intentional then they can burn it again. No matter and I understand why many were opposed to even the thought of the idea but I am not one that opposes it but I have a large amount stranded in the zero address and it certainly wasn’t burned intentionally. Hope all is well with everyone still in this thread.
…Sent from my iPhone
On Apr 27, 2021, at 10:47 AM, Thomas Jay Rush ***@***.***> wrote:
Believe me I pray it would.. but I haven’t seen any traction trying to move it forward. I can’t see how stranded ETH in the zero addresses utilized this way would be a negative to the integrity of the blockchain.
Not to get involved in this conversation (I won't), but I just wanted to say that sometimes people purposefully send ETH to the zero address as a way to burn the ETH. This lowers the number of coins in existence and thereby increases the value of each remaining coin.
The other obvious problem with the suggestion of recovering the ETH currently in the zero address is who gets to decide what to do with it?
There's zero traction on this issue because there's zero good directions to move forward.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Unfortunately probably nothing save waiting till something happens that strands tons of ETH and hope a mechanism for recovery develops that the community can live with.
Best
Kevin
…Sent from my iPhone
On Apr 27, 2021, at 9:44 AM, masaruduy ***@***.***> wrote:
Also, how do we push it?!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
I understand this case and agree. However, my situation is different as I
am speaking of sending to a contract that was created with 0x as the code,
not a 0x address itself. Here is an example:
https://etherscan.io/tx/0x3457a2272e1cc0f1834116ed1c55e2502cf5d21f229036761637507882f4da6d
…-Nathan
On Tue, Apr 27, 2021 at 11:47 AM Thomas Jay Rush ***@***.***> wrote:
Believe me I pray it would.. but I haven’t seen any traction trying to
move it forward. I can’t see how stranded ETH in the zero addresses
utilized this way would be a negative to the integrity of the blockchain.
Not to get involved in this conversation (I won't), but I just wanted to
say that sometimes people purposefully send ETH to the zero address as a
way to burn the ETH. This lowers the number of coins in existence and
thereby increases the value of each remaining coin.
The other obvious problem with the suggestion of recovering the ETH
currently in the zero address is who gets to decide what to do with it?
There's zero traction on this issue because there's zero good directions
to move forward.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#156 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABYAH7VOLJIDDWLTVFOAED3TK3MATANCNFSM4CS3KB5Q>
.
|
Don’t lose hope. During the early days of this thread I received messages of support from both individuals and developers. Some even names you would easily recognize. Empathy lives in the chain and one day I trust a pathway for fixing obvious mistakes will present. Good luck and know that I wish you the best.
Kevin
…Sent from my iPhone
On Apr 28, 2021, at 1:49 PM, masaruduy ***@***.***> wrote:
I understand this case and agree. However, my situation is different as I
am speaking of sending to a contract that was created with 0x as the code,
not a 0x address itself. Here is an example:
https://etherscan.io/tx/0x3457a2272e1cc0f1834116ed1c55e2502cf5d21f229036761637507882f4da6d
-Nathan
On Tue, Apr 27, 2021 at 11:47 AM Thomas Jay Rush ***@***.***>
wrote:
> Believe me I pray it would.. but I haven’t seen any traction trying to
> move it forward. I can’t see how stranded ETH in the zero addresses
> utilized this way would be a negative to the integrity of the blockchain.
>
> Not to get involved in this conversation (I won't), but I just wanted to
> say that sometimes people purposefully send ETH to the zero address as a
> way to burn the ETH. This lowers the number of coins in existence and
> thereby increases the value of each remaining coin.
>
> The other obvious problem with the suggestion of recovering the ETH
> currently in the zero address is who gets to decide what to do with it?
>
> There's zero traction on this issue because there's zero good directions
> to move forward.
>
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub
> <#156 (comment)>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ABYAH7VOLJIDDWLTVFOAED3TK3MATANCNFSM4CS3KB5Q>
> .
>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Thanks for your kind words Kevin 🙂
On Wed., Apr. 28, 2021, 8:03 p.m. Kevin Smith, ***@***.***>
wrote:
… Don’t lose hope. During the early days of this thread I received messages
of support from both individuals and developers. Some even names you would
easily recognize. Empathy lives in the chain and one day I trust a pathway
for fixing obvious mistakes will present. Good luck and know that I wish
you the best.
Kevin
Sent from my iPhone
> On Apr 28, 2021, at 1:49 PM, masaruduy ***@***.***> wrote:
>
>
> I understand this case and agree. However, my situation is different as I
> am speaking of sending to a contract that was created with 0x as the
code,
> not a 0x address itself. Here is an example:
>
>
https://etherscan.io/tx/0x3457a2272e1cc0f1834116ed1c55e2502cf5d21f229036761637507882f4da6d
>
>
> -Nathan
>
>
> On Tue, Apr 27, 2021 at 11:47 AM Thomas Jay Rush ***@***.***>
> wrote:
>
> > Believe me I pray it would.. but I haven’t seen any traction trying to
> > move it forward. I can’t see how stranded ETH in the zero addresses
> > utilized this way would be a negative to the integrity of the
blockchain.
> >
> > Not to get involved in this conversation (I won't), but I just wanted
to
> > say that sometimes people purposefully send ETH to the zero address as
a
> > way to burn the ETH. This lowers the number of coins in existence and
> > thereby increases the value of each remaining coin.
> >
> > The other obvious problem with the suggestion of recovering the ETH
> > currently in the zero address is who gets to decide what to do with it?
> >
> > There's zero traction on this issue because there's zero good
directions
> > to move forward.
> >
> > —
> > You are receiving this because you are subscribed to this thread.
> > Reply to this email directly, view it on GitHub
> > <#156 (comment)>,
or
> > unsubscribe
> > <
https://github.com/notifications/unsubscribe-auth/ABYAH7VOLJIDDWLTVFOAED3TK3MATANCNFSM4CS3KB5Q
>
> > .
> >
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub, or unsubscribe.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#156 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABYAH7XHGYJV7GIBPGRVIVLTLCO4BANCNFSM4CS3KB5Q>
.
|
There are likewise some 17,000+ victims of the Quadriga hack who would benefit if a mechanism like the one discussed here could recover the 67,000 ETH that got locked up in their splitter contract when the company upgraded from Geth 1.5.3 to 1.5.9 (@axelay alluded to this in his 2015 comment). That amount would have a real impact on the pot available for distribution. |
There has been no activity on this issue for two months. It will be closed in a week if no further activity occurs. If you would like to move this EIP forward, please respond to any outstanding feedback or add a comment indicating that you have addressed all required feedback and are ready for a review. |
I hope to find a solution for this soon. |
This issue was closed due to inactivity. If you are still pursuing it, feel free to reopen it and respond to any feedback or request a review in a comment. |
When you're doing this? |
Let’s get it down. Pools, claims and voting.
…Sent from my iPhone
On Feb 15, 2022, at 5:22 AM, Lucien Nocelli ***@***.***> wrote:
When you're doing this?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
This issue seems to be trending back up again... If people don't want to allow this to be reverted is one thing, it can tricky, but why has there been no fix to the cause of the problem after 7 years? |
This is no longer the correct place to discuss this anymore. I have created a thread on FEM to continue the conversation: https://ethereum-magicians.org/t/reclaiming-of-ether-in-common-classes-of-stuck-accounts/16111 |
The discussion link has been migrated to https://ethereum-magicians.org/t/reclaiming-of-ether-in-common-classes-of-stuck-accounts/16111
Specification (v1)
The below is only usable between blocks
FORK_BLKNUM
andFORK_BLKNUM + EFFECTIVE_DURATION
(both TBA).If the
v
value of a signature is (strictly) greater than 1024, then calculate the sender as follows:s
be the sender computed according to the normal algorithm, using 27 as thev
value if the providedv
is odd, and 28 if the providedv
is even.s
and the contract creation nonce isfloor((v - 1025) / 2)
.Transactions with
v
values strictly greater than 1024 are only valid if the sender account is nonexistent or its code is empty.If the
v
value of a signature is 1023 or 1024, then calculate the sender as follows:P
be the public key computed according to the normal algorithm, in the 64-byte packed form that is normally hashed to determine the sender address, using 27 as thev
value if the providedv
is odd, and 28 if the providedv
is even.P
instead of the binary rawP
itself.Specification (v2)
Create a solidity contract with the following functions:
declareEmptyContract(index)
: computesrlp.encode([msg.sender, index])
; if there is a contract at this address with ether and no code, then the contract saves a record that this contract has been checked, and sends an equal amount of "future ether" (an ERC20 token) at that account.declareLowercaseHexAddress(pubkey)
: checkssha3(pubkey) % 2**160 == msg.sender
; then checks thatsha3(pubkey.encode('hex')) % 2**160
has ether; if it does, then the contract saves a record that this contract has been checked, and sends an equal amount of "future ether" (an ERC20 token) at that accountwithdraw()
: deletes themsg.sender
's future ether, and sends it an equivalent amount of ether.The hard fork would increase the future ether contract's balance by an amount equal to the total quantity of extant future ether.
Specification (v3)
Follow v2, but distribute the future ether on a Casper testnet. Then, later have a single step that converts both Casper ether and ethereum 1.0 ether into ether as part of the Serenity hardfork.
Rationale
This allows for users with ether or other assets in common classes of "stuck" accounts to withdraw their assets. The first case covers contracts that are accidentally created with no code, as well as some losses due to replay attacks where a contract was created on ETC, funds sent on ETH but the contract not created on ETH; the second case covers losses due to an old ethereum javascript library that incorrectly computed ethereum addresses. Note that in all cases, the "rightful owner" of the assets is obvious and mathematically provable, and no user is being deprived of any assets, and this proposal provides no explicit favor to any single account, user or application.
It is understood that there may be a risk that this proposal will be viewed controversially as it is in some sense a "rescue" rather than a "technical improvement", even though it is arguably much less intrusive than previous such proposals for the reasons outlined above; the proposal is created in order to allow community discussion and debate and does not signify full endorsement.
The text was updated successfully, but these errors were encountered: