I’ve read that Bitcoin’s key innovation is solving the double-spend problem. I’ve also read that Bitcoin solves the Byzantine generals problem.
Are the double-spend and the Byzantine generals problem related somehow? If yes, how?
The Byzantine generals problem (BGP) refers to a situation where independent actors need to agree on a common strategy but can't know which actors or information they can trust.
In Bitcoin terms, participants need to verify that a transaction they receive is indeed valid and that the inputs of that transaction are not already spent by a different transaction. The relation between double-spend and BGP lies in the fact that there can be multiple valid parallel chains, and there is no central authority signing off on which is the valid chain. Without knowing which chain everyone else is using, it's impossible to agree on which outputs have already been spent and thus validate your transaction.
Bitcoin's approach to probabilistically solving this problem is to use Proof of Work, which makes it very expensive to produce multiple valid chains. With every additional block added to the chaintip, it becomes more expensive and thus less rewarding to double-spend a transaction.
Are the double-spend and the Byzantines general problem related somehow? If yes, how?
They are the same problem. If you can solve one, you can solve the other.
Imagine you had a solution to the double spend problem. You could then solve the BGP as follows:
If the system solves the double spend problem such that one and only one transaction confirms, then either both generals will attack or neither will attack, so the system can also solve the BGP.
Bitcoin does not solve the Byzantines General problem. Point.
Bitcoin purchases the temporary solution )))