-
Notifications
You must be signed in to change notification settings - Fork 0
TECH TALK 5 BITCOIN I ETHEREUM PODSTAWY I POROWNANIE
Kamil Śliwak edited this page Jun 28, 2018
·
1 revision
- Blok jest po prostu ciągiem bitów.
- Nie ma ustalonego rozmiaru.
- Komputery połączone w sieć P2P (overlay).
- Klienci rozgłaszają znane im bloki reszcie sieci.
- Wspólne, publicznie znane zasady mówiące o tym, który blok jest poprawny.
Własny protokół, Bitcoin Developer Reference > P2P Network
- Wszyscy klienci znają wspólny blok początkowy.
- Każdy blok zawiera sumę kontrolną wyliczoną z poprzedniego bloku.
- Zmiana jednego bloku wymagałaby przeliczenia sum kontrolnych we wszystkich blokach, które przyszły po nim.
- Diagram: prosty algorytm tylko dla ilustracji
checksum(n) = sum(nonce(n-1) + content(n-1) + checksum(n-1)) modulo 10000
- Można wygenerować wiele różnych ciągów bloków spełniających warunki.
- Klient wybiera jeden z łańcuchów.
- Najczęstsze kryterium: najdłuższy łańcuch wygrywa.
- Bloki dodawane są jeden za drugim. Numer bloku to block height.
- Klienci mogą łatwo spamować sieć poprawnymi blokami.
- Dodatkowe wymaganie na sumę kontrolną.
- Każdą sumę możemy intepretować po prostu jako dużą liczbę.
- Załóżmy, że maksymalna wartość to
S
. - Wymagamy, aby suma była mniejsza niż pewna arbitralnie ustalona wartość
S_min
. - Wybieramy mocny kryptograficznie algorytm sumy kontrolnej. Oznacza to, że bardzo trudno znaleźć dane, które dają konkretną wartość sumy.
- Jedyny sposób to próbować po kolei różne wartości aż trafimy na jakąś spełniającą warunek.
- Nonce: blok zawiera pole, w które miner wstawia kolejne wartości i przelicza od nowa sumę aż znajdzie taką, która spełnia warunek.
- Prawdopodobieństwo znalezienia odpowiedniej sumy to
S_min / S
. - Łatwo ustawić taką wartość
S_min
, aby przy ustalonej mocy obliczeniowej sieci prawdopodobieństwo znalezienia nowego bloku.
- Potwierdzenia bloku
- Łatwe do liczenia równolegle: GPU, ASIC.
KECCAK-256
- Nie SHA-3. Wybrane przed standaryzacją.
-
Ethash: algorytm bierze pod uwagę więcej niż pojedynczy blok aby uczynić obliczenia bardziej intensywnymi pamięciowo.
- Konstrukcja ASICów jest mocno utrudniona.
- Moc obliczeniowa sieci się zmienia.
- Co określoną liczbę bloków klient ustala nowe
S_min
.
- Cel: blok co 10 minut
- Dostosowanie trudności co 2016 bloków (ok. 2 tygodnie). Bitcoin Difficulty.
- Bitcoin Difficulty historical chart.
- Cel: blok co 12 sekund
- Dostosowanie trudności co 30000 bloków (ok. 100 godzin).
- Generowany jest nowy DAG.
- Ethereum mining.
- Ethereum Difficulty historical chart
- Wpólne zasady, pojedynczy klient, który się wyłamie, traci.
- 51%-attack.
- Forki.
- Budowa transakcji
- Bitcoin: UTXO
- Ethereum: adresy kont