- Joined
- Sep 19, 2018
- Messages
- 9,797
- Location
- Ohio
- Joined SLU
- 02-22-2008
- SLU Posts
- 16791
In case how all these coding errors can't just be fixed is really confusing people who aren't that familiar with crypto and how it works, I'll try to explain it as best I can.
So the "blockchain" that cryptocurrencies are based on is just a database that you can only write new entries to the end of. Whenever a new "coin" or whatever (more on "whatever" in a sec) is created, an entry is added to the blockchain saying "coin number 47284 has been created". And whenever a coin moves - from one wallet to another, etc - an entry is added to the blockchain saying "coin number 47284 has been moved from wallet XYZ to wallet ABC". New entries can be added like this to the end any time, but older entries both stay on the blockchain forever AND can never be edited. Entries, once added, are indelible.
When Bitcoin was created, it literally only dealt in coins. That's all their blockchain was - entries saying Bitcoins were created and other entries saying they were moved. Somebody had the idea that blockchains could do more than just count beans though, so some techbros created a new cryptocurrency called Etherium; its gimmick was that the tokens you could add to the end of its blockchain COULD be its coins - called Ethers - but they could ALSO be like, just a little module of computer code. Etherium calls these bits of code added to its blockchain "smart contracts" and they have an upper size limit (because memory is finite) but aside from that the code could be anything. It could just be a unique number and a URL that points to an image, which is nominally what a basic NFT is. But it could also be like, a tiny executable program, or a tiny part of a larger one. And while each individual "smart contract" has a size limit, the code inside them can point to or reference other code in other smart contracts; so by minting several of them you can kind of build a fairly large computer program whose code is distributed across any number of tokens and it'll work, using the blockchain as a kind of decentralized giant computer. A slow and hugely inefficient one, but still.
So that all sounds like great copy for a brochure and it sells well, but here's the thing: computer code HAS BUGS. Some bugs will break the program and others will just allow people interacting with the program to use it in unintended ways (i.e., exploits). And the bigger a program is, the more bugs it could have. Just because you've broken the code up into tiny bits doesn't make it necessarily easier to debug.
People who normally make software deal with this by debugging as best they can and then after release if any bugs are still found and reported by users, they can release patches to fix them.
But, and here's the kicker: remember, the blockchain is indelible. Old entries can't be edited. Once you put a smart contract with a bit of code onto the blockchain, it can never be patched. You can in theory replace the smart contract with the faulty code by minting a new one with fixed code, but you can't change the rest of your distributed program to reference the new smart contract instead of the old one either; you have to replace the WHOLE program. If your old, broken program is still holding onto some cryptomoney and the broken code won't let it be released, there's no way to get it out; even if you did replace the program with a whole new one, all that money that's still in the old machine is just lost.
Oh and by the way, when I said earlier that the code "could be anything", that means it can also be like - a tiny program that anyone can drop into your crypto wallet which outwardly looks like just an NFT but whenever you click on it in your wallet for any reason at all it just instantly transfers everything else that's already in your wallet to someone else. And that's how people with ugly gorilla NFTs keep getting their shizzle stolen, and there's literally no way to patch this shocking vulnerability on Etherium, ever, so Etherium fans and evangelists kinda just carry on with life literally pretending it doesn't exist.
So the "blockchain" that cryptocurrencies are based on is just a database that you can only write new entries to the end of. Whenever a new "coin" or whatever (more on "whatever" in a sec) is created, an entry is added to the blockchain saying "coin number 47284 has been created". And whenever a coin moves - from one wallet to another, etc - an entry is added to the blockchain saying "coin number 47284 has been moved from wallet XYZ to wallet ABC". New entries can be added like this to the end any time, but older entries both stay on the blockchain forever AND can never be edited. Entries, once added, are indelible.
When Bitcoin was created, it literally only dealt in coins. That's all their blockchain was - entries saying Bitcoins were created and other entries saying they were moved. Somebody had the idea that blockchains could do more than just count beans though, so some techbros created a new cryptocurrency called Etherium; its gimmick was that the tokens you could add to the end of its blockchain COULD be its coins - called Ethers - but they could ALSO be like, just a little module of computer code. Etherium calls these bits of code added to its blockchain "smart contracts" and they have an upper size limit (because memory is finite) but aside from that the code could be anything. It could just be a unique number and a URL that points to an image, which is nominally what a basic NFT is. But it could also be like, a tiny executable program, or a tiny part of a larger one. And while each individual "smart contract" has a size limit, the code inside them can point to or reference other code in other smart contracts; so by minting several of them you can kind of build a fairly large computer program whose code is distributed across any number of tokens and it'll work, using the blockchain as a kind of decentralized giant computer. A slow and hugely inefficient one, but still.
So that all sounds like great copy for a brochure and it sells well, but here's the thing: computer code HAS BUGS. Some bugs will break the program and others will just allow people interacting with the program to use it in unintended ways (i.e., exploits). And the bigger a program is, the more bugs it could have. Just because you've broken the code up into tiny bits doesn't make it necessarily easier to debug.
People who normally make software deal with this by debugging as best they can and then after release if any bugs are still found and reported by users, they can release patches to fix them.
But, and here's the kicker: remember, the blockchain is indelible. Old entries can't be edited. Once you put a smart contract with a bit of code onto the blockchain, it can never be patched. You can in theory replace the smart contract with the faulty code by minting a new one with fixed code, but you can't change the rest of your distributed program to reference the new smart contract instead of the old one either; you have to replace the WHOLE program. If your old, broken program is still holding onto some cryptomoney and the broken code won't let it be released, there's no way to get it out; even if you did replace the program with a whole new one, all that money that's still in the old machine is just lost.
Oh and by the way, when I said earlier that the code "could be anything", that means it can also be like - a tiny program that anyone can drop into your crypto wallet which outwardly looks like just an NFT but whenever you click on it in your wallet for any reason at all it just instantly transfers everything else that's already in your wallet to someone else. And that's how people with ugly gorilla NFTs keep getting their shizzle stolen, and there's literally no way to patch this shocking vulnerability on Etherium, ever, so Etherium fans and evangelists kinda just carry on with life literally pretending it doesn't exist.



















