In animating old tech, I always try to find the original patent or the earliest version.
I decided to look at the (supposedly) original code for blockchain to see what’s really there, and to check if I was making any bad assumptions. In fact I have been making two bad assumptions.
(1) I was assuming that there is only one chain in the Bitcoin world, only one chain in the Ethereum world, etc. There can be an unlimited number of chains floating around. The Bitcoin Brand has only one chain, which is strictly finite and near the end of its finite life. This is NOT inherent in the definitional code; it’s required by rules and decisions.
(2) I was assuming the chain is a linked list or nodelist. It’s just a simple array, with expandable memory. The ‘chainness’ only means that each item in the array is a vector or struct including its own data, the date and time, and the serial number of the previously made item.
What’s the difference? One item in a nodelist can directly pick up info from the previous node. When you read Item 7, you can immediately read what’s in Item 6. (Most nodelists are linked both ways, with references to both Prev and Next.) One item in a plain array doesn’t have a direct connection with the previous items. The program has to locate the previous item by index, if the index of the current item is available; or in this case by searching the array until we see the appropriate serial number. In practice there isn’t much difference in speed. Higher-level languages like Python use node tricks internally without bothering the user with the details, and C compilers probably do the same, to access non-contiguous memory.
In short: The magic qualities imputed to the blockchain are NOT IN THE BASIC CODE. The magic qualities are in the decisions made by the various scammers who run the various systems. Some of these decisions are written as code, but they’re not implicit in the basic definition.
The decisions create a commerce system with maximum VISCOSITY, making fast transactions more costly than slow transactions, and increasing the cost exponentially toward the end of the container. Like an open jar of honey sitting on the table and drying out. Viscosity is inherent in the basic code. Each transaction, or each increase in “currency”, makes the single array longer and harder and slower to search. The supposed 21 million endpoint is not inherent in the part I’ve seen.
Why create a viscous self-limiting commerce system? Cults and scams and addictions always follow this curve. Free at first, or even gifts at first, and then you start paying more and more to achieve the same result. This is the OPPOSITE of an honest system. In honest capitalism you get a discount for paying fast, and you get a discount for buying in bulk.
Was Satoshi parodying vulture capitalism, showing that the whole criminal setup can be reduced to a simple program? His little note about the bankers might be a hint. In practice it doesn’t matter if he was working for or against. The code was immediately expanded into a new criminal setup by the vultures. (I still think he was working for Deepstate while creating an appearance of opposition. The code doesn’t add or subtract from that impression.)
= = = = =
I had expected the source to be in some unreadable galaxybrain language like Forth or Lisp. Nope, the code is perfectly straightforward and familiar C++. The author writes code the same way I write code, and his comments sound like mine. If I didn’t know for sure, I might think it was something I wrote a long time ago and then forgot!
Coding style in C doesn’t have a wide range. It’s not Shakespeare vs Hemingway, more like Hemingway after 10 drinks vs Hemingway after 12 drinks**. In each case the author picks the same 12-drinks version that I use, instead of the textbook-approved version.
I don’t see any hint of British or Oriental Engrish; the spelling and grammar are American, with the possible exception of a function named AdvertInsert instead of AdInsert. I might have chosen the same, to avoid confusion and to make a rhyme.
= = = = =
Aside from assumptions, I was mainly curious to see if the “ledger” is really a ledger. It isn’t. A real ledger is a balance or scale or equation. The block code makes no assumptions or requirements about the numbers or characters held as data in each block.
In paper terms, one block is just a page. Adding a block adds one page to the loose-leaf notebook, and the new page says at the top “This is page 7. The previous page is 6.” The 7 and 6 are actually fancy hash numbers, allegedly designed to be unique, but they might as well be 7 and 6. Transactions are stored “elsewhere” until a miner prints up a new page and adds it to the notebook. At that point some quantity of transactions are written into the new page.
When miners are holding back most of their pages, as they are right now, the transactions are presumably staying in the databases of the various storefronts operated by the scammers. In other words, the live action isn’t “on the chain” at all. The chain merely serves as a kind of backup media.
= = = = =
**Language footnote: Why 10 vs 12? Sober Hemingway is a NULL variable, or more precisely a self-NULLing variable.