7 ms·
In simple words, he should have called a smart contract's function which would withdraw his tokens and send real ETH to his address. Instead, he sent tokens to
by afidrya 5y ago
In simple words, he should have called a smart contract's function which would withdraw his tokens and send real ETH to his address. Instead, he sent tokens to smart contract's address and they will stay there forever, not associated with any account.
This complexity should be abstracted away by wallet's UI. Users don't have to call APIs directly.
Also, this whole situation could be prevented by trying to send a smaller amount first.
- BatteryMountain 5y agoIt truly is laughable. Ever heard of "Return to Sender" in case of invalid events/transactions?
- SwiftyBug 5y agoYES. Weren't these supposed to be SMART contracts? My email provider is smarter than that.
- capableweb 5y agoFirst time I hear about IMAP/POP3 provider being able to "undo" emails after being sent. What provider are you using and how does that work behind the scenes? And no, gmails fake "we don't actually send it until you close the tab/wait 30 seconds so you can undo it" doesn't count.
- oefrha 5y agoI’m sure you’ve heard of it, but in case you haven’t, it’s called bouncing when there’s no valid inbox on the other end. Before you object, yes, you can set up a catch-all incinerator, but that’s not the default as is the case here, you have to explicitly set it up.
- capableweb 5y ago"Bouncing" can happen in cryptocurrency world as well, it's called "sending to an invalid address". It just happens to be that the address-space is so big you don't really know what address has a real physical person behind it or not, or yet even. Try sending cryptocurrency to an invalid address and you'll see that the wallet will reject sending it, just like email bouncing.
- oefrha 5y agoMost people setting up mailservers don’t consider a catch-all forwarding to /dev/null a valid inbox. And no sane mailserver software forwards to /dev/null by default if you don’t explicitly tell it what to do when it receives email it isn’t supposed to receive. A “valid” address locking up funds sent to it without recourse is /dev/null.
- noduerme 5y agoThis is the right way. Default behavior for any box should be to bounce. I forward all my wrong mail to a black hole but that's because I'm not a fucking smart contract
- capableweb 5y agoAgain, if you try to send funds to an invalid address on Ethereum, you won't be able to. First the wallet will stop you if the address is invalid, secondly no miner/validator would pick it up from the mempool if the address is invalid and thirdly, no other party would agree that the address is valid and hence the transfer wouldn't go through. Simply said: you cannot send funds to invalid addresses on Ethereum.
- NateEag 5y agoBut you can send funds to an address the funds cannot be retrieved from. A protocol could conceivably require the recipient to verify they're holding the private key for the address before the transaction can take place. Yet here we are.
- oblio 5y ago> And no, gmails fake "we don't actually send it until you close the tab/wait 30 seconds so you can undo it" doesn't count. Why doesn't it count and why does it matter how Gmail works behind the scenes?
- capableweb 5y agoBecause that feature of gmail is not a part of email, it's a part of gmail the product. And it is not "undoing" sending a sent email, it's cancelling an email that was never sent in the first place.
- ipaddr 5y agoBecause email doesn't work that way. Gmail doesn't send the email for a minute. It would be like your boss asking you to send this email and you wait a minute for him to change his mind before you presses send.
- BatteryMountain 5y agoReally? If a mail server (and the post office of most countries) don't have the specified address, it either gets sent back if there is a return address written (email non-delivery notice (aka return to sender, NOT undo) or it goes into a catch all bin (same as a lost & found)(or root account for most mail servers)(or dump it in the bin).
- capableweb 5y agoYes yes, as mentioned in another sibling comment, your wallet won't allow you to send anything to an invalid address. In this case, the address was not invalid, so why expect it to get rejected?
- p49k 5y agoYou’re using a different definition of the word invalid. Obviously the person you replied to meant invalid in the sense of “not intended to receive funds” It would have been a competent design decision for a system to require some type of initial registration of intent to receive funds for an address in order for a transaction to post.
- BatteryMountain 5y agoSo imagine the bank give all objects in their company an address. The desk has an address, the fridge has an address and so on. Bank accounts have an address too. All these addresses look the same and use the same system to interact with them. The problem is that Johnny wanted to deposit $50 dollar into his account, but he accidentally used the wrong address, and now the fridge in the the bank's kitchen on the 5th floor now owns $50. To his dismay, there is nobody to send his funds back since no human owns the fridge and nobody is even able to break the fridge open to get it out. Don't blame the fridge they say, don't blame the bank they say, don't blame the currency or the address system or the person who made the rules so that fridge addresses and bank account addresses work the same. No, lets blame Johnny, the dumb ignorant fool who doesn't understand the glory of the banks special addressing system. It is working as intended. He should've known better, he should've read the docs etc. Fuck Johnny and his $50.
- sanderjd 5y ago"Smart contracts" was always a really bad name for this functionality.
- uwuemu 5y agoWhat a joke.
- lobocinza 5y agoEvery self-denominated SMART thing that I know of is DUMBER than the conventional thing.
- lottin 5y agoA better term would be dumb contracts.
- noduerme 5y agoYeah. Even in the original bitcoind API you would run a validation call on the address and the spend before actually committing it. Afaik you couldn't accidentally send coins into a black hole even if you tried.
- riffraff 5y agoI think the address was valid, the problem is that there is no way of getting the coins out of it. The same thing was done on the bitcoin chain, e.g. counterparty[0] was relying on a "proof of burn" which was basically "Send BTC to a black hole". [0] https://counterparty.io/docs/faq-xcp/ https://counterparty.io/docs/faq-xcp/
- noduerme 5y agoIf no one ever moved coins out of their burn addresses I'll eat my socks.
- uxp100 5y agoUh, do you really like socks that much? I think this is something very easy to verify, just look at the burn address on the chain?
- GaylordTuring 5y agoJust monitor this address then and let me know if anyone moves anything out of it :) https://etherscan.io/address/0x0000000000000000000000000000000000000000 https://etherscan.io/address/0x00000000000000000000000000000...
- RedShift1 5y agoThe thing is that is not an invalid transaction. The problem is in what happens _after_ the smart contract has received the money.
- noduerme 5y agoAs far as Ethereum is concerned it's valid, but the contract API is riding on top of Ethereum's blockchain. It's middleware. It's responsible for enforcing the contract. How does it have a giant black hole in it?
- RedShift1 5y agoIt's the same as you and I agreeing on a contract where it says when you send me money, I will burn it. If you then use a bank transfer to me, it's not the bank's fault your money is gone, we agreed on that contract and it's not the bank's business to deal with that. Doesn't mean that there shouldn't be safeguards, there absolutely should be, but just laying out where the responsibilities start and stop and the whole deal with crypto currency is the absence of central control so if you choose to shoot yourself in the foot, you're free to do so. But freedom of action doesn't mean freedom of consequences and in the case of a blockchain, it's forever.
- shadowgovt 5y ago> it's not the bank's fault your money is gone, we agreed on that contract and it's not the bank's business to deal with that. There's a reason some contracts (in the regular legal world) are illegal.
- noduerme 5y agoI've written middleware APIs for accepting currency in carts and casinos that interfaced with / polled bitcoind and other daemons. Why on earth would this person be calling APIs directly, and why would the daemon not just reject the transaction if it's an unexpected kind of token? Or if he added funds to the contract why not be able to remove them to the same address? I never dealt with smart contracts but even allowing this to happen without an error seems like a crazy, terrible design.
- jazzyjackson 5y agofrom the reddit comments, similar question, apparently every instruction adds gas fees to running the contract, so if you're going to use the contract a lot, you leave out any kind of validation. >> Wow why didn't the contract creators think this through and block requests to the contract > Because adding that check would increase the cost of every user transaction. All AMM swaps would be done with WETH so it’s the right call to not have it in there
- noduerme 5y agoBack in the day or at least when I ran my own bitcoin node, any call against the blockchain was free. This sounds like someone charging for hitting the API on a rented node, as opposed to an actual cost imposed by the currency to consult the blockchain (?) But maybe the contract-generators aren't even running their own node, just piggybacking on someone else's API. Sure. Cheaper.
- riffraff 5y agoAFAIU, smart contracts on the ethereum VM can be arbitrarily complex, so you pay the network to execute them, or a random user with an infinite loop would bring down the network. You are indeed renting a machine to run some code, and if you want many people to use your code you want to make it cheap. There's a trade off. You can fuck up things on the BTC blockchain too, "burning" crypto by sending it to a dead address has been a thing for a long time. It always seemed stupid to me that it was possible, compared to sending money to an invalid IBAN, but I'm not a crypto enthusiast so I may be biased.
- sanderjd 5y agoIt was a really bad design decision to have smart contracts have this "send to the address" capability, rather than requiring clients call a method that is explicitly defined.
- Maursault 5y ago> he sent tokens to smart contract's address and they will stay there forever, not associated with any account. Wait... so the tokens are really still there, just inaccessible? In what way do the tokens still exist? What makes them inaccessible? Is there really no possibility of restoring the tokens? No possibility of cleverly hacking them out with the assumed myriad of unpublished security flaws?
- pie_flavor 5y agoThe tokens are a number in a hash-map of user to balance in the weth program. Any eth program ("smart contract") can be a user. All the smart contract that owns the tokens has to do is tell the weth smart contract to transfer them, or approve mister redditor to transfer them on the contract's behalf. But that contract wasn't built to do such a thing. And now that it's published, it also can't be updated to do such a thing. A new contract could be uploaded, but that new contract won't be the same user. So they're just gone for good. Hope that cleared things up.
- triangleman 5y agoSo, could the Ethereum community get together and agree to rewrite the blockchain and undo this transaction? Perhaps they could vote on it and have a hearing of the facts. Of course that introduces its own tyranny but is it possible?
- monktastic1 5y agoThe chain is by nature append only, so you'd have to fork it, which they sure as hell are not going to do for a "little guy," to put it mildly. At least, that's my layman's understanding.
- shadowgovt 5y agoYep. Little users can still get screwed, but players too big to fall get to make up new rules. ... Reminds me of another financial infrastructure I know.
- bigtex88 5y agoIn simple words, he should have done what everyone else does and used Uniswap or Zapper or Sushi or ANY exchange and swapped WETH for ETH that way. This is just a dumbass user doing dumbass things. This is basic-level stuff right here. Don't interact with contracts directly unless you 100% know what you're doing.
- throwhauser 5y ago> Don't interact with contracts directly unless you 100% know what you're doing. But if you use any of the exchanges you described, you have to trust that they 100% know what they're doing. It seems safer to avoid smart contracts and cryptocurrencies altogether.
- UncleMeat 5y agoBut people are allowed to interact with smart contracts. To obtain the WETH he needed to do that. This is a "why do we even have that lever" kind of situation. If my brokerage had a "permanently burn all of your money" button then it wouldn't be reasonable to just say "well, people shouldn't push that button." We can even see this with the criticism of wire fraud. Wire fraud is a huge fucking mess that occasionally costs people their life savings. The entire setup is rightly criticized (heck, even by the crypto community) for having users interact with a highly error-prone system with huge consequences.
- emteycz 5y agoPeople are allowed to login as root and delete their systems too. Yes, today's software doesn't make it easy - and the same can be said about this wallet/token; this was a complex sequence of steps in the wrong direction, not a missclick.
- dpark 5y agoPeople don’t usually store 500k on their PCs.
- 5y ago