#22 Meetup, 16 Dec 2019
(up to 5 minutes, no prep required)
None yet, just let me know during the break.
Let us know if you want to be a speaker next time.
Also suggest who we should invite.
Zakodować aktualny stan świata* w taki sposób:
Lista zmian
Lista zmian
Lista zmian
Metadane/ poprzedni stan
Metadane/ poprzedni stan
Metadane/ poprzedni stan
Genesis State
Blockchain
Niemutowalna struktura danych zawierająca wszystkie zmiany który zostały zaplikowane do danego punktu w czasie
Aktualny
"stan świata"
Blockchain
Komputer 1
Komputer 2
Komputer 3
Przykład
Stan:
Kto ile ma (arkusz Excel)
Transakcja:
Przelew z A do B
Blockchain
Hashes - prevent tampering (e.g. KECCAK256)
Signatures - authorize the actions (e.g. ECDSA)
Parent = hash(B0) Timestamp = 150..000 Number = 1
Hash = hash(B1)
transfer(A, B, 5)
sig(A)
transfer(C, B, 1)
sig(C)
Parent = hash(B1) Timestamp = 150..000 Number = 2
Hash = hash(B2)
transfer(B, A, 5)
sig(B)
(Boot) Node 1
Node 2
New Node
Hey! Could you give me all your peers?
(Boot) Node 1
Node 2
New Node
Hey! Send me all them blocks, will ya?
Block 5
Block 4
Block 0
(Boot) Node 1
Node 2
New Node
Hey! I've got a transaction to include in block.
Block 5
Block 5
Block 5
transfer(N, B, 5)
sig(N)
I dlaczego?
sig(Authority1)
hash(B0)
hash(B1)
sig(Authority2)
hash(B2)
sig(Authority1)
Proof of Authority
Akceptujemy bloki tylko podpisane przez pre-definiowaną listę adresów.
Bloki muszą być podpisywane na przemian, maksymalnie jeden blok na 3 s.
Difficulty=2 Sol.=0b001.. SolvedBy=A
hash(B0)
hash(B1)
hash(B2)
Proof of Work
Akceptujemy tylko bloki, które zawierają rozwiązanie matematycznej zagadki.
Trudność zagadki dopasowuje się do szybkości rozwiązań, tak żeby mieć stabilny czas bloku.
Difficulty=4 Sol.=0b00001.. SolvedBy=B
Difficulty=3 Sol.=0b0001.. SolvedBy=A
(Boot) Node 1
Node 2
New Node
Block 5
Block 5
Block 5
transfer(N, B, 5)
sig(N)
transfer(N, B, 5)
sig(N)
Cool, I'm mining and will include the tx for a small fee.
(Boot) Node 1
Node 2
New Node
Block 6
Block 5
Block 5
transfer(N, B, 5)
sig(N)
transfer(N, B, 5)
sig(N)
Block 6
Managed to mine new block, here it is guys!
(Boot) Node 1
Node 2
New Node
Block 6
Block 6
Block 6
Łańcuch kanoniczny
Co jeżeli powstaną dwa bloki z tym samym hashem rodzica?
Który powinienem wybrać?
Block 1
Block 2
Block 3
Block 3
"Fork"
Łańcuch kanoniczny
Wybieramy "najdłuższy" łańcuch.
Ethereum wybiera łańcuch z największą trudnością.
Block 1
Block 2
Block 3
Block 3
Block 4
Do zapamiętania: najnowszy stan może się zmieniać, to co widzisz może zostać odwrócone - czekaj na potwierdzenia
Bitcoin to pierwszy publiczny Blockchain.
Block Time | 10 minutes |
Consensus | Proof of Work - hashcash |
State | Account Balances of BTC / UTXO* |
Transactions | Value Transfers* |
Launched | 2009 |
Block Reward | 12BTC (halving) ~ 21M total coins |
Ethereum to "The World Computer"
Block Time | 14 seconds |
Consensus | Proof of Work - ethash* |
State | Arbitrary |
Transactions | Turing-complete / programmable |
Launched | 2015 |
Block Reward | 2ETH (+uncles) ~ Unlimited coins |
Blockchain pozwala na transakcje pomiędzy wieloma stronami, które nie muszą sobie ufać.