Wrocław Blockchain Meetup

#16 Meetup, 17 Dec 2018

Agenda

  • 18:15 - [PL] Introduction (for the first-timers)
  • 19:10 - Talk(s)
  • 20:45 - Networking and drinks
  • 21:15 - After Party

Talks

  • [PL] Aeternity - Blockchain Generacji 3.0
    Przemek Thomann (MobyCrypt)
     
  • [EN] Open Banking & Blockchain
    Szymon Sypniewicz (Ramp.Network) 

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  

Grupowanie transakcji

  • Pojedyncze transakcje są niepraktyczne
  • Lepiej pogrupować transakcje razem w "blok"
  • Jak często powinien powstawać blok?
  • Kto ten blok stworzy?

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)

Kto tworzy nowe bloki?

I dlaczego?

Musimy to ustalić przed startem sieci.

Może warto te osoby wynagrodzić?
(zachęty = incentives)

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

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 3.75ETH (+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 #16

By Tomasz Drwięga

Wrocław Blokchain Meetup #16

Workshop

  • 474