What previously existing technologies made Bitcoin possible? When watching a tutorial, they mentioned that Bitcoin is based off 4 or 5 technologies that existed for at least a decade before Bitcoin. Satoshi Nakamoto was the first person to combine them all into a digital currency.
I'm aware of at least some of them - SHA-256, ECDSA, peer-to-peer distributed ledger - but want to try and understand all of them.
What other technologies underpin Bitcoin?
Arvind Narayanan and Jeremy Clark wrote an excellent paper about that: Bitcoin's Academic Pedigree. I recommend reading the paper in full, but the following briefly summarizes the paper's content.
Linked timestamping/verifiable logs
Bitcoin borrows the blockchain data structure from Bayer, Haber, and Stornetta which described a very similar data structure in context of a timestamping service in the 1990s. The original also makes use of Merkle trees already. The authors suggested regularly publishing the &quot;blockheaders&quot; in a newspaper.
Byzantine fault tolerance
Byzantine Fault Tolerance (BFT) describes a distributed network to converge on a shared state even when their are malicious or unstable actors. While the whitepaper doesn't cite a specific source, Nakamoto described Bitcoin as a practical solution to the Byzantine Generals' Problem (a challenge that requires BFT), thus indirectly referencing an enormous body of scientific work done in the 1980s through 2000s. While not mentioned, peer-to-peer networks like BitTorrent (2001) must have served as an inspiration.
Proof of work
Originally proposed as a means to deter spam, sybil attacks, and denial of service attacks, PoW failed adoption in those applications due to the stark difference of computing power in various devices.
Digital cash
Digital Cash refers to a form of money that can be electronically transferred but exhibits characteristics of cash: final settlement, peer-to-peer transferability, resistance to forging, and transactional privacy. HashCash, b-money, and bit gold discussed ideas of using puzzle solutions as cash. None of these earlier projects had a solution for the doublespending problem, though. DigiCash solved the doublespending problem but required a central operator to issue new tokens.
Public keys as identies
While public-key cryptography was discovered in the 70s, the use of public keys as pseudonymous identities was first described by David Chaum in 1981. Since anyone can generate their own key pair, public-key cryptography lends itself to self-certified authentication.
Secret sauce: Putting it all together
Prior solutions for Byzantine Fault Tolerance required some level of honest behavior from which Nakamoto sidestepped partially by introducing economic incentives and assuming self-interest. Instead of publishing their chain in the newspaper as Bayer, Haber, and Stornetta floated, Nakamoto uses a peer-to-peer network and proof of work to decentrally author the timestamping data structure. The resulting shared groundtruth solves the doublespending problem that remained unsolved for HashCash, b-money, and bit gold.
The rewards for block authors incentivize collaborative convergent participation, ensuring both BFT but also distributing initial funds to the network. As the network identities derive from self-generated private keys, the peer-to-peer network can be open and permissionless—sidestepping the single points of failure of trusted third parties that caused issues for many previous digital cash projects.