But Why Does it Work?
A Rational Protocol Design Treatment of Bitcoin
EUROCRYPT 2018
But Why Does it Work? A Rational Protocol Design Treatment of - - PowerPoint PPT Presentation
But Why Does it Work? A Rational Protocol Design Treatment of Bitcoin Christian Badertscher Juan Garay Ueli Maurer Daniel Tschudi ETH Zurich Texas A&M ETH Zurich ETH Zurich Vassilis Zikas University of Edinburgh & IOHK EUROCRYPT
EUROCRYPT 2018
And Nakamoto said: Let there be Bitcoin…
And Nakamoto said: Let there be Bitcoin…
The Bitcoin community
And Nakamoto said: Let there be Bitcoin…
The Bitcoin community Rational analysis and attacks
strategy [ES14]
And Nakamoto said: Let there be Bitcoin…
The Bitcoin community Rational analysis and attacks
strategy [ES14]
Cryptographic analysis: Backbone (consensus layer) is secure if and only if the computing power of adversarial nodes does not form a majority [GKL15, PSS17 ]
And Nakamoto said: Let there be Bitcoin…
The Bitcoin community Rational analysis and attacks
strategy [ES14]
Cryptographic analysis: Backbone (consensus layer) is secure if and only if the computing power of adversarial nodes does not form a majority [GKL15, PSS17 ]
And Nakamoto said: Let there be Bitcoin…
The Bitcoin community Rational analysis and attacks
strategy [ES14]
Cryptographic analysis: Backbone (consensus layer) is secure if and only if the computing power of adversarial nodes does not form a majority [GKL15, PSS17 ]
Why don’t the predicted attacks
Nostradamus
It doesn’t! Not an equilibrium. Just a temporary anomaly. Why don’t the predicted attacks
Nostradamus
It doesn’t! Not an equilibrium. Just a temporary anomaly. Because the majority of computing power is controlled by honest miners Why don’t the predicted attacks
Nostradamus
It doesn’t! Not an equilibrium. Just a temporary anomaly. Because the majority of computing power is controlled by honest miners
Why don’t the predicted attacks
Nostradamus
It doesn’t! Not an equilibrium. Just a temporary anomaly. but … why … ? Because the majority of computing power is controlled by honest miners
Why don’t the predicted attacks
Nostradamus
It doesn’t! Not an equilibrium. Just a temporary anomaly. but … why … ? Because the majority of computing power is controlled by honest miners
Why don’t the predicted attacks
Nostradamus
It doesn’t! Not an equilibrium. Just a temporary anomaly. but … why … ? Because the majority of computing power is controlled by honest miners
Why don’t the predicted attacks
Nostradamus
Blockchains
Blockchains
(n-party) protocol π for F
Adversary A for attacking π
(n-party) protocol π for F
Adversary A for attacking π
(n-party) protocol π for F
in ℿ allows for more rewarding attacks
can do is play an adversary in 𝔹
✴ ℿ = The class of all poly-time protocols ✴ 𝔹 = The class of all adversaries that honestly execute the protocol
in ℿ allows for more rewarding attacks
can do is play an adversary in 𝔹
in ℿ allows for more rewarding attacks
can do is play an adversary in 𝔹
in ℿ allows for more rewarding attacks
attack-payoff secure AND (uD, uA, ℿ)-attack-payoff optimal
can do is play an adversary in 𝔹
in ℿ allows for more rewarding attacks
For Bitcoin ✴ ℿ = The class of protocols that use the Bitcoin infrastructure (circulate blocks and transactions of the right format) ✴ 𝔹 = The class of semi-honest network-rushing adversaries ➡ strongly (uD, uA)-attack-payoff secure
can do is play an adversary in 𝔹
attack-payoff secure AND (uD, uA, ℿ)-attack-payoff optimal
(n-party) protocol π for F Adversary A for attacking π
(n-party) protocol π for F Adversary A for attacking π
Buffer
B0 B1 B3
Buffer
GetState
B0 B1 B3
Buffer
GetState
(Submit, tx)
B0 B1 B3
Buffer
GetState
(Submit, tx)
B0 B1 B3
tx
Validate(.)
Buffer
GetState
(Submit, tx)
B0 B1 B3
tx
Validate(.)
Buffer
GetState
(Submit, tx)
B0 B1 B3
tx
Validate(.)
GetState
Validate(.) No
B0 B1 B3
Buffer
GetState
Validate(.) No
B0 B1 B3
Buffer
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy
Next Block
[GKL15,PSS17]
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy
Next Block
[GKL15,PSS17]
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Next Block
[GKL15,PSS17]
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
[GKL15,PSS17]
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
GetState
Validate(.) No
B0 B1 B3
Buffer time? t
Extend Policy Blockify
Bs+1
Next Block
(n-party) protocol π for F Adversary A for attacking π
(n-party) protocol π for F Adversary A for attacking π
(n-party) protocol π for F Adversary A for attacking π
Blockchains
A
A
D
Blockchains
D, uB A)
Recall: This is the semi-honest network-rushing adversary
D, uB A)
Recall: This is the semi-honest network-rushing adversary
D, uB A)
Recall: This is the semi-honest network-rushing adversary
D, uB A)
B A, (A, Π))
D, uB A
B A, (A, Π))
BR · CR > HC · 1 p · (1 − p)n−1
* p = Probability of finding a valid block in 1 hash query
D, uB A
B A, (A, Π))
BR · CR > HC · 1 p · (1 − p)n−1
* p = Probability of finding a valid block in 1 hash query
D, uB A
BR · CR > HC · 1 p · (1 − p)n−1
* p = Probability of finding a valid block in 1 hash query
B A, (A, Π))
D, uB A
B A, (A, Π))
D, uB A
B A, (A, Π))
D, uB A
B A, (A, Π))
D, uB A
B A, (A, Π))
D, uB A