Wrocław Blockchain Meetup
#11 Meetup, 9 Apr 2018
Agenda
- 18:15 - Introduction (for first-timers)
- 19:00 - Talks
- 20:00 - Networking, snacks and drinks
- 20:30 - After Party
Talks
-
LISK (over skype)
by Maciej Baj, Lisk Core Developer
-
Introduction to Decred
by Mariusz Szyma, Blockchain Meetup Organizer in Opole,
-
Lightning Network Explained
https://www.youtube.com/watch?v=MpfvhiqFw7A
Call for talks
Let us know if you want to be a speaker next time.
Also suggest who we should invite.
Czym jest Blockchain?
- Rozproszona struktura danych - organizująca "transakcję"/zdarzenia - rejestr
- Algorytm Konsensusu - aby zdecydować kto może tę strukturę modyfikować
- Trochę kryptografi - żeby to było bezpieczne/odporne na modyfikacje (tamperproof)
- Zachęty (Incentives) - żeby mogło działać bez nadzoru i zaufania
Spróbujmy zbudować bezpieczny rejestr transakcji
- Razem ze znajomymi rozliczamy się ile i kto jest komu winien.
- Każdy może dodać nową transakcję
- Rozliczamy się pod koniec miesiąca
Rejestr
- Alicja płaci Bolkowi $100
- Bolek płaci Cyrylowi $10
- Daniel płaci Alicji $70
Czy możesz ufać swoim przyjaciołom?
- Alicja płaci Bolkowi $100
- Bolek płaci Cyrylowi $10
- Daniel płaci Alicji $70
- Alicja płaci Bolkowi $1000
- Cyryl płaci Bolkowi $1000
- Daniel płaci Bolkowi $1000
Jak zabezpieczyć sie przed oszustwem?
Podpisy cyfrowe
- Każda osoba generuje swój klucz prywatny i odpowiadający mu klucz publiczny
- Każda transakcja musi być podpisana przez nadawcę
- Uczestnicy identyfikowani są przez klucz publiczny
Podpisy cyfrowe
-
SIGN(Message, SK) -> Signature RECOVER(Signature, Message) -> PK
- Sygnatury nie mogą być skopiowane bo zależą od wiadomości
- Nie można "podrobić" podpisu - bezpieczna kryptografia
- Alicja płaci Bolkowi $100
+ Sygnatura Alicji - Bolek płaci Cyrylowi $10
+ Sygnatura Bolka - Daniel płaci Alicji $70
+ Sygnatura Daniela
Jak wygląda rejestr?
Co jeżeli skopiujemy całą transakcję?
- Alicja płaci Bolkowi $100
+ Sygnatura Alicji - Bolek płaci Cyrylowi $10
+ Sygnatura Bolka - Daniel płaci Alicji $70
+ Sygnatura Daniela - Alicja płaci Bolkowi $100
+ Sygnatura Alicji - Alicja płaci Bolkowi $100
+ Sygnatura Alicji
Jak się przed tym zabezpieczyć?
Replay protection
- Ponumerujmy wszystkie transakcje
- Sygnatura dodatkowo musi uwzględniać numer transakcji
- 1. Alicja płaci Bolkowi $100
+ Sygnatura Alicji - 2. Bolek płaci Cyrylowi $10
+ Sygnatura Bolka - 3. Daniel płaci Alicji $70
+ Sygnatura Daniela
Jak wygląda rejestr?
Czy widzicie jeszcze jakiś problem?
Kolejne problemy
- Transakcje można wymienić
- Jeżeli transakcje będą powstawać równolegle możemy mieć konflikt
- Najlepiej byłoby gdyby sygnatura każdej transakcji zawierała cały rejestr
- Co oczywiście jest niepraktyczne na dłuższą metę
- 1. Alicja płaci Bolkowi $100
+ Sygnatura Alicji - 2. Bolek płaci Cyrylowi $10
+ Sygnatura Bolka - 3. Daniel płaci Alicji $70
+ Sygnatura Daniela
TransactionChain
Alicja płaci Bolkowi $100+ Sygnatura Alicji
Bolek płaci Cyrylowi $10 + Sygnatura Bolka
Daniel płaci Alicji $70 + Sygnatura Daniela
BlockChain
1. Alicja płaci Bolkowi $100+ Sygnatura Alicji
1. Bolek płaci Cyrylowi $10 + Sygnatura Bolka
1. Daniel płaci Alicji $70 + Sygnatura Daniela
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
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(B2) Timestamp = 150..000 Number = 2
Hash = hash(B1)
transfer(B, A, 5)
sig(B)
Algorytm Konsensusu
Kto może tworzyć nowe bloki?
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.
Algorytm Konsensusu
Kto może tworzyć nowe bloki?
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
Dlaczego ktoś chciałby marnować energię i tworzyć bloki?
Jest zachęta (incentive)
=
Dostaniesz nagrodę
Jak to działa?
(Boot) Node 1
Node 2
New Node
Hey! Could you give me all your peers?
Jak to działa?
(Boot) Node 1
Node 2
New Node
Hey! Send me all them blocks, will ya?
Block 5
Block 4
Block 0
Jak to działa?
(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)
Jak to dział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.
Jak to działa?
(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!
Jak to działa?
(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
Czym jest Bitcoin?
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 |
Czym jest Ethereum?
Ethereum to "The World Computer"
Block Time | 14 seconds |
Consensus | Proof of Work - ethash* |
State | Arbitrary |
Transactions | Turing-complete / programmable |
Launched | 2015 |
Block Reward | 5ETH (+uncles) ~ Unlimited coins |
Pytania?
Blockchain pozwala na transakcje pomiędzy wieloma stronami, które nie muszą sobie ufać.
Lista innych ważnych pojęć
- Genesis Block
- Blockchain
- Protocol
- Consensus
- Incentives
- Miner
- Hashing Power
- Hard/Soft Fork
- Canonical Chain
- Chain re-org
- Decentralization
- Distributed Ledger
- Bitcoin
- UTXO
- Ethereum / EVM
- Smart Contracts
- Altcoins
- Tokens
- Fiat currency
Wrocław Blokchain Meetup #11
By Tomasz Drwięga
Wrocław Blokchain Meetup #11
Workshop
- 530