This weekend I was looking at bit (ha!) at the Bitcoin code. Hoo boy, if you put as much as a single Zimbabwe dollar in that faulting piece of undergraduate code, you are doing it wrong.
- it actually contains smart contracts but this is kind-of disabled because it is super broken
- the blockchain contains both child pornography and a buffer overflow attack on the aforementioned smart contracts
- for one type of transactions, you have to include a bit of garbage because there’s an old bug that’s being kept around for backwards compatibility
- what’s network byte order? fuck that jazz, we use little endian
- premature optimization leading to non-canonical number representation (you can represent 42 in 3 different ways, yay!)
- blocks are less blocks and more stream that have to be read sequentially because damn near everything is variable-length
- why would you be clear about signedness of numbers in my financial application? somebody apparently used this to steal more bitcoins than will ever exist once