News for hackers. Stuff that matters.
Re:Did I just lose half a million dollars? by djhworld on Sunday January 30, 2022 @05:11AM (#30135550)
> Unrecoverable.

I'm not very well versed in this stuff, but surely the tokens he sent are somewhere right.

Like if you sent $500k to a bank but put the wrong account number in, the $500k would still go _somewhere_. It might be difficult to recover, but it's not like the money just disappears.

Re:Did I just lose half a million dollars? by adjkant on Sunday January 30, 2022 @05:28AM (#30135628)
They are in location X and it has been written into code that there is no way to ever remove them from X. The only difference between throwing this "money" into a black hole and this is that you can see what's in this black hole once it's in there, even if you cannot remove it.

The only way to ever fix this is to rewrite the history of the blockchain which means forking the entire ETH currency by getting all mining/record nodes to agree to it.

Long story short: Virtually unrecoverable without large coordination from the entire ETH community.

Re:Did I just lose half a million dollars? by RomanAlexander on Sunday January 30, 2022 @07:31AM (#30136588)
It's a possibility if your name is Vitalik Buterin
Re:Did I just lose half a million dollars? by sanderjd on Sunday January 30, 2022 @09:13AM (#30137344)
Hard to say but my guess is that no, even he can no longer pull this off. I think he used his one freebie.
Re:Did I just lose half a million dollars? by can16358p on Sunday January 30, 2022 @10:39AM (#30138051)
Yup. One more freebie hardfork that reverses (okay not "reverses" techbically but forks away from a previous state) some mistake/hack and Ethereum would lose trust especially competition between chains (EVM or otherwise) is so high.
Re:Did I just lose half a million dollars? by floatingatoll on Sunday January 30, 2022 @11:11AM (#30138384)
They would gain trust for returning all of the WETH accumulated in all of the contracts where it’s been idled due to PEBCAK, in concert with a code fork that refuses to accept such transactions. That would be a sign of maturity and intelligence to bankers, and influence their consideration of whether Ethereum might be a viable platform for their financial business someday.
Re:Did I just lose half a million dollars? by adjkant on Sunday January 30, 2022 @01:17PM (#30139567)
This idea would be antithetical to decentralization of cryptocurrency, but I think that since this issue is a platform level problem (e.g. future contracts can also introduce this) what is needed is a set of mediators/arbitrators (we can call them "judges" that hear these cases and have a technical mechanism to correct them without a fork.

In order to select these judges, the community can elect them directly or elect a board or leaders to select them indirectly.

Of course these corrections would require gas, so they may need to add a small additional gas charge to transactions to fund this group and perhaps also their salaries. We can call this extra gas a "tax".

In summary: Stand up an entire government around ETH in order to ensure the benefit of judges and humans can override code. Once you do this though, you have a central ruling authority with an in-code constitution, but parts that take place in a human judgement realm.

I set this up partially in jest of blockchain currencies in general, but I do actually say this seriously. I think that purists of decentralized code only control will hold back any possible benefits that cryptocurrency could bring. The situation above still has benefits from a monetary fiat system run by a nation state, though I think severely less than what the cryptocurrency ideal is. Some include:

- There is no nation state attached to this centralized ruling body and itself can be decentralized and beholden to no nation

- All transactions and reasons of the body can still be public and on open API's for people to integrate and monitor with modern tech

- The loose "untraceable" or general "freedom" arguments that come with a blockchain would still hold so long as the community with these tenants maintains control of the board / judges / leaders.

Re:Did I just lose half a million dollars? by floatingatoll on Sunday January 30, 2022 @03:48PM (#30140934)
You jest, but “stand up a government” is a primary barrier to entry to being considered a “fiat currency”, which makes sense given the drawbacks of trying to qualify as a currency without one.

A banking-grade currency would have reversed the WETH transactions and prohibited new ones. Ethereum has refused so far to do so, even though it’s in their power to hard fork. Whether or not you view them as a currency, that’s not the sort of behavior that engenders a perception of financial trust and safety in their work.

Re:Did I just lose half a million dollars? by sanderjd on Sunday January 30, 2022 @02:14PM (#30140116)
Some other blockchains do actually have "governance" somewhat along the lines of what you've described here.
Re:Did I just lose half a million dollars? by pvaldes on Sunday January 30, 2022 @03:45PM (#30140905)
So all that is needed is forcing a bunch of people to do something. Not much different than forcing a lot of people to do to war, so not impossible.

Lets imagine, hypothetically, that some mafia boss, big company, users would create a lobby, the "platform of people affected by Ethereum" that would lobby to force a fork for a fee. Lets say 50% percentage of your lost money if we are successful, that is still much better deal than having no money at all. And then would use some tool to convince/coerce/bully everybody to restore it or just would mess with the process to force it. Would be this possible or a probable outcome after enough amount of time has passed?

Re:Did I just lose half a million dollars? by analog31 on Sunday January 30, 2022 @10:08AM (#30137793)
Actually in the case of the bank, no. Conventional money is numbers just like crypto. I think the difference is in the case of conventional money, someone is empowered to manually override the transaction and make you whole.

As I've said in the past, money is a technology, and this kind of override mechanism is built into the design of conventional money, but not into the design of crypto.

Re:Did I just lose half a million dollars? by askafriend on Sunday January 30, 2022 @05:27AM (#30135622)
Unfortunately in this case, there is literally nothing anyone can do. The Ethereum is sitting in dead space not associated with any address. It's literally untouchable since you cannot change the contract.

Hopefully this isn't the person's life savings.

Re:Did I just lose half a million dollars? by phphphphp on Sunday January 30, 2022 @05:39AM (#30135687)
A smart contract has a set of behaviour as written in code: nodes on the network execute the behaviour. This contract doesn’t have any code to undo a mistake like this, so it is impossible to recover them.

Thst said, the network is a group of machines all agreeing together on what is the correct behaviour, and that can change, so while it is not impossible forever — Ethereum might release a new feature that allows people to reclaim tokens in this circumstance — it is impossible unless the majority of the network agrees (see: The DAO hack and the corresponding fork to recover funds).

Re:Did I just lose half a million dollars? by unfocussed_mike on Sunday January 30, 2022 @07:57AM (#30136766)
Unless I have got this wrong (I don't understand this very well at all), the reason the DAO fork happened is that it disappeared some important people's money and they had the clout to alter everyone else's cryptofinancial reality to get it back.

There would seem to be disincentives to prioritising fixing problems like this that affect unimportant people.

It strikes me as valuable to the crypto world that the mainstream media criticism of cryptofinance is that it is environmentally unfriendly. That is almost a distraction from the fact that it is antisocial and nihilistic.

Re:Did I just lose half a million dollars? by djhworld on Sunday January 30, 2022 @05:56AM (#30135791)
can the code be corrected though

it sounds to me like the fix would be create a new map that maps account ID -> tokens, where account ID = the "sender" account where the tokens came from, and do the migration to move these 'orphaned' tokens into the right buckets.

admittedly I guess that would break everything/trust if someone can just rewrite the code to say who has what tokens!

Re:Did I just lose half a million dollars? by swiftcoder on Sunday January 30, 2022 @06:09AM (#30135902)
> can the code be corrected though

A defining feature of "smart contracts" is that the code is immutable once deployed, and can never be upgraded or bug-fixed.

Re:Did I just lose half a million dollars? by can16358p on Sunday January 30, 2022 @12:47PM (#30139285)
There are actually some approaches that makes smart contracts "upgradeable" but it involves using a special base class that proxies everything through delegate calls.

But yeah you're definitely right about the nature of the contracts being immutable, unless that immutable code contains some setter that delegates the function calls to some other contract.

ERC-721 (NFTs) actually has a nice way of dealing with sending NFTs to an incorrect address by checking if it implements a special interface if the recipient is a smart contract. But any measures come at the cost of extra gas so they are usually avoided.

Re:Did I just lose half a million dollars? by rocho on Monday January 31, 2022 @02:08AM (#30145362)
Doesn't the WETH smart contract store all the tokens it receives at its address? Doesn't anyone have the private key of that address?

It's been quite a long time since I have been playing with smart contracts and I don't actually remember what happens when a smart contract is created.

Re:Did I just lose half a million dollars? by can16358p on Tuesday February 01, 2022 @11:58AM (#30165473)
Don't know the code for specific code for that contract but contract wrapping/unwrapping doesn't necessarily imply that anyone can withdraw ethers sent via normal means. If the contract is upgradeable it would be possible but being upgradeable should be built into the contract first.
Re:Did I just lose half a million dollars? by noitpmeder on Sunday January 30, 2022 @06:04AM (#30135863)
From what I understand smart contracts are immutable, so this "bug" can only be fixed by publishing a new contract which is by definition independent from the old, i.e. unable to access or manipulate any tokens (like these) that belonged to the old one.

Additionally, apparently contracts may rely upon one another, and a bunch of the contacts that utilize this WETH token depend upon the existing contract. All of these (and their dependents, recursively) would also need to be updated.

I.e. the money is gone unless there is a large concerted effort, but no one should reasonably expect this.

Re:Did I just lose half a million dollars? by simonh on Sunday January 30, 2022 @05:33AM (#30135653)
The tokens are no longer associated with an account ID, so while the token data is on the chain there is no way for anyone to ever include them in a transaction.
Re:Did I just lose half a million dollars? by SwiftyBug on Sunday January 30, 2022 @06:01AM (#30135828)
In this case it's absolutely unrecoverable.
Re:Did I just lose half a million dollars? by yuvalr1 on Sunday January 30, 2022 @05:53AM (#30135770)
It is right there where he sent it. It really did not disappear. It will just sit there forever, very well documented, and very well out of reach for all of us, for the end of all times.
Re:Did I just lose half a million dollars? by CRConrad on Tuesday February 01, 2022 @07:45PM (#30171993)
> It really did not disappear. It will just sit there ... very well out of reach for all of us, for the end of all times.

Yeah, that's what we call "disappeared" in English.

Re:Did I just lose half a million dollars? by sanderjd on Sunday January 30, 2022 @09:11AM (#30137338)
They are indeed somewhere, but impossible to recover without cooperation from a large number of people who will be opposed to it. This happened to one of the co-creators of ethereum when his company Parity had a bug that caused them to lose millions of dollars of funding (which I think may now be worth billions) locked in a contract, much like what happened here. He tried to rally people behind a network fork to undo the change, but it didn't work. I believe this experience has a lot to do with his own blockchain project (Polkadot) having an explicit governance process that is and to change things like this without a network fork.

But this ship has sailed for ethereum!

Re:Did I just lose half a million dollars? by globular-toast on Sunday January 30, 2022 @06:50AM (#30136226)
In an accounting system, everything must always sum to zero. That means every transaction has to balance, so nothing can "appear" or "disappear", it has to come from somewhere and has to go somewhere.

Imagine you ran a private currency called Mate Dollars (M$) for you and your mates to exchange with each other "off grid". You decide to introduce the concept of loans. A transaction which lends 1000M$ to MateA would look like this (in ledger[0] format):

  2022-01-30 Loan to Mate A
      Accounts:MateA       1000.00M$
      Liabilities:MateA   -1000.00M$
This a perfectly valid transaction. It sums to zero. Now Mate A can "spend" this money, maybe he buys some goods from Mate B:

  2022-02-01 Goods
      Accounts:MateA    -500.00M$
      Accounts:MateB     500.00M$
Now Mate A and Mate B both have 500 Mate Dollars.

Eventually Mate A will have to pay back his loan because the bank (you) will charge interest on any current liability:

  2022-02-30 Loan repayment
      Accounts:MateA      -1000.00M$
      Liabilities:MateA    1000.00M$
Now he's paid back the loan.

Now from inside the system, nothing was ever created or destroyed. But from outside the system (ie. the real world) it looks like money was "created" at "Loan to Mate A" and destroyed at "Loan repayment". From Mate B's point of view, Mate A always had that money. He doesn't know anything about the bank loan.

Between those two transactions, 1000 Mate Dollars existed, but it was just a ghost in the machine.

Replace "you" with Barclays Bank, "Mate Dollars" with Pounds Sterling and "you and your mates" with the public above and you now understand how "real" currency works. 97% of money we use is just a ghost in the machine between a bank creating it via a loan and the borrower paying it back.

So, you see, money appearing and disappearing from thin air is not a feature of crypto at all. It's just an illusion. It's what it looks like to anyone outside of the ledger (ie. everyone except the bank).

The ETH transaction is the equivalent of you (the banker) making a promise to Mate A to keep his money in an account that can never be accessed by anyone, including him:

  2022-01-30 Silly transaction
      Accounts:MateA      -1000.00M$
      Dungeon:MateA        1000.00M$
The account "Dungeon:MateA" will now always have a positive balance for as long as you keep your promise.

Unlike you, the Ethereum blockchain is incapable of ever breaking this promise.

[0] https://www.ledger-cli.org/

Re:Did I just lose half a million dollars? by djhworld on Sunday January 30, 2022 @08:27AM (#30136986)
I use plaintextaccounting too.

So in your example Dungeon:MateA is a balance for the other side of the transaction - it does exist, there's a record of it. The money/tokens/matebucks have not "disappeared", but the mechanics of the "promise" means that nothing/no-one can do this operation

  2022-01-30 Silly transaction
      Dungeon:MateA      -1000.00M$
      Account:MateA       1000.00M$
Re:Did I just lose half a million dollars? by globular-toast on Sunday January 30, 2022 @10:20AM (#30137901)
Exactly. They've "disappeared" from outside of the ledger, in the sense that those tokens will never be involved in another transaction so won't be "seen" again by anyone else. But they can never disappear from inside the ledger. That would violate the rules of accounting.

My main point with this is this is how the current money system works! People seem to think money can disappear in crypto but not in the real system. In fact it's quite the opposite. In both systems from the ledger's point of view nothing can appear or disappear. But in the current system, since the ledgers are controlled by private entities they can make stuff appear from the public point of view by creating loans. In crypto the ledger is not controlled by anyone.

Essentially the big problem with finance currently is the people who control the ledger are also allowed to create loans inside the ledger! It's a huge conflict of interest and obscenely privileged position.