I was asked to make this it’s own thread, so here you go: A very simplified explanation on the foundational mathematical principle powering encryption and Blockchain.
Can a Quantum computer take over the hash power of the Bitcoin blockchain? Maybe, but that isn’t the point being made here. This is about whether the “code” that powers blockchain can be “hacked” by more powerful computers. Answer:
Most likely never. Mathematically extremely improbable.
The mathematical principle that protects Bitcoin and other cryptocurrencies is P vs NP (https://en.wikipedia.org/wiki/P_versus_NP_problem) and it is a Millenuem Problem (https://en.m.wikipedia.org/wiki/Millennium_Prize_Problems).
In simple terms, it poses the following question: Can you go from the solution of any math problem to the inputs in the same amount of time as you can go from those inputs to the solution?
An example of this is the problem
a * b = c. If you have
b then you can get
c instantly by simply multiplying
b together. Now, can you go from
c and get both
b in the same amount of time?
No. You would need to go through all the factors of
c. Ex. 20 has the factors (1, 20) (2, 10) and (4, 5). That’s 3 checks to go from 20 to (4, 5) and only 1 operation to go from (4, 5) and 20.
Now, with Bitcoin it’s more like having 10,000 inputs and one output (the transaction data is the inputs and the signature is the output). The output is data, but all data can be represented by a number. So the data for a Bitcoin signature is a very, very large number.
The average Bitcoin signature data is 70.5 bytes, this is 565 bits. This means the max integer value a signature can be is:
That is of the magnitude of 10170 which is unimaginably HUGE.
That means in order to crack Bitcoin, you’d need to be able to calculate all the different factors of a number that large in a reasonable amount of time. Which is practically impossible. Let’s say the best quantum computer in the year 3,500 can do it in 10 years. Well, if you simply double the signature size from 70.5 bytes to 141 bytes, the max number just grew exponentially to:
That is 10341 which is astonishingly large.
And the principle that makes this all work: If you know
b you can get
c instantly no matter how large the numbers are. If you know
b you can get
a instantly no matter how large the numbers are. BUT if you only know
c it will take an unfathomable amount of time and energy to get
b and no matter how quickly you can get an answer the programmers can just keep increasing the byte size at no cost to the instantaneous math and you’ll never be able to catch up no matter how powerful a computer you make.