Bitcoin, the idea, is perfect. The code just hasn't caught up yet.
Discussion
There is no difference between the idea and the code.
This is deep.
Interesting thought experiment:
The whole Bitcoin network agrees that there should never be more than 21 million Bitcoin.
Then there is a bug in the code, so that there are 22 million Bitcoin now.
What would happen? Would we just live with 22 million coins or agree to a hard fork that fixes the issue and makes the extra 1 million coins unspendable/deletes them?
*maybe a hard fork wouldn't even be necessary