Ethereum
Co dalej? Czyli o klientach i o planach.
Tomasz Drwięga
@tomusdrw
Parity Technologies
21.04.2018, Wrocław
Najbliższe spotkanie na początku maja.
https://www.meetup.com/Wroclaw-Blockchain-Meetup/
Parity Ethereum
Parity Bitcoin
Polkadot
IPFS, Whisper, Secret Store
+ wiele więcej
Nodes?
- Thin Node?
- Light Node?
- geth --fast Node?
- parity --warp Node?
- Pruning / Garbage collection?
- Archive Node?
Extra: Full Node, FatDB, Tracing
Rozmiar i czas
Czas Synchronizacji | Rozmiar Bazy Danych |
|
---|---|---|
Thin Node | 0 | 0 |
Light Node | 3 min | 3 MB |
geth --fast | 12 h | 60 GB+ |
parity --warp | 3 h (12 h) | 6 GB (60 GB) |
Pruned Node | 36 h | 60 GB |
Archive Node | 36 h | 600 GB |
* Szacunkowe wartości na sprzęcie konsumenckim z SSD
Rozmiar i czas
Czas Synchronizacji | Rozmiar Bazy Danych |
|
---|---|---|
Thin Node | 0 | 0 |
Light Node | 3 min | 3 MB |
geth --fast | 12 h | 60 GB+ |
parity --warp | 3 h (12 h) | 6 GB (60 GB) |
Pruned Node | 36 h | 60 GB |
Archive Node | 36 h | 600 GB |
Full nodes
Blockchain?
Block 1
Block 2
Block 3
Transactions
Transactions
Transactions
Blockchain?
Block 1
Block 2
Block 3
Transactions
Transactions
Transactions
(Header)
(Header)
(Header)
(Body)
(Body)
(Body)
State?
Block 1
Block 2
Block 3
Transactions
Transactions
Transactions
(Header)
(Header)
(Header)
(Body)
(Body)
(Body)
State after 1
State after 2
State after 3
State?
Block 1
Block 2
Block 3
Transactions
Transactions
Transactions
(Header)
(Header)
(Header)
(Body)
(Body)
(Body)
State after 1
State after 2
State after 3
Merkle root of the state
Dan Finlay's Intro to Ethereum: https://youtu.be/-SMliFtoPn8
Co Przechowujemy?
Czas Synchronizacji | Rozmiar Bazy Danych |
Co w bazie? |
|
---|---|---|---|
Thin Node | 0 | 0 | |
Light Node | 3 min | 3 MB | |
geth --fast | 12 h | 60 GB+ | |
parity --warp | 3 h (12 h) | 6 GB (60 GB) | |
Pruned Node | 36 h | 60 GB | |
Archive Node | 36 h | 600 GB |
* bodies = bodies + receipts
Archive Node
Sync speed: Slow | State access: Fast | Security: High
- Synchronizacja i weryfikacja wszystkich bloków
- Dostęp do historycznych stanów
- Używany przez firmy budujące usługi na Ethereum (np. Etherscan)
Np.:
Geth --gcmode=archive
Parity --pruning=archive
Pruned Node
Sync speed: Slow | State access: Fast | Security: High*
- Synchronizacja i weryfikacja wszystkich bloków
- Dostęp do kilku ostatnich stanów
- Potencjalny problem: re-organizacje
Np.:
Geth 1.8+
Parity --pruning=fast
Geth --fast
Sync speed: Medium | State access: Fast | Security: Medium
- Synchronizacja bloków bez uruchamiania transakcji
- Synchronizacja najnowszego stanu
- Później zachowuje wszystkie stany
- Problem: "Czy to na pewno dobry stan?"
Np.:
Geth --fast
Parity --warp
Sync speed: Fast | State access: Fast | Security: Medium
- Synchronizacja najnowszego stanu + 30k ostatnich bloków
(obecnie około 6GB danych dla mainnet) - Następnie synchronizacja historycznych bloków
- Problem: "Czy to na pewno dobry stan?"
Np.:
parity --warp-barrier 5600000
Light Node
Sync speed: Extreme | State access: Medium | Security: Medium
- Szybka synchronizacja nagłówków
- Dostęp do stanu przez odpytywanie pełnych węzłów
- Możliwość weryfikowania Merkle-Proof
- Problem: "Skąd wziąć dane?"
Np.:
Geth --syncmode=light
Parity --light
Dan Finlay's Intro to Ethereum: https://youtu.be/-SMliFtoPn8
Thin Node
Sync speed: Instant | State access: Fast | Security: None+
- Dostęp z przeglądarki
- Dostęp do najnowszego stanu
- Brak potrzeby synchronizowania
- Dane dostarczane z centralnego serwera
- Problem: ¯\_(ツ)_/¯
Np. MyEtherWallet, MyCrypto
Podsumowanie
Sync | State Acc. | Security | ||
---|---|---|---|---|
Thin Node | Instant | Fast | None | |
Light Node | Extreme | Medium | Medium | |
geth --fast | Medium | Fast | Medium | |
parity --warp | Fast | Fast | Medium | |
Pruned Node | Slow | Fast | High | |
Archive Node | Slow | Fast | High |
Co dalej?
- State jest coraz większy (6GB)
- Przetwarzanie bloku jest czasochłonne (1s)
- Synchronizacja jest wolna (36-∞ h)
- Blockchain jest już długi (40GB)
- Raz zapisane dane zostają na wieki
- Transakcji coraz więcej
Dla userów
- Rozwój Light Clients
- Możliwość uruchamiania Light Client w przeglądarce (kompilacja do WebAssembly)
- Możliwość uruchamiania Light Client na telefonach (iOS, Android)
- Problem: Dlaczego ktoś miałby mieć full node?
ZachEty dla Full Node
- Problem: Proof of Custody
- Problem: Mikropłatności
Co Dalej?
Najistotniejsze problemy:
- Zmniejszenie rozmiaru bazy (stanu)
- Szybkość przetwarzania transakcji
- Koszt transakcji
- Ograniczenie "wydatków" na bezpieczeństwo sieci i zużycie energii
- Komunikacja między-sieciowa
Network Bridges
Rozwiązanie dostępne w krótkim terminie
Main Net
Other Net
(Kovan)
Lock ETH
Create
"W-ETH"
Burn
"W-ETH"
Unlock ETH
Technologia: parity-bridge
Bezpieczeństwo: Proof of Authority
"sieć heterogeniczna"
Easy Parallelizability
Rozwiązanie dostępne w średnim terminie
https://github.com/ethereum/EIPs/issues/648
- Transakcje deklarują, których części stanu potrzebują
- Niezależne transakcje można uruchamiać równolegle
- Stan można przygotować przed samym uruchomieniem transakcji
BlockChain Rent
Rozwiązanie dostępne w średnim terminie
https://github.com/ethereum/EIPs/issues/35
- Za przechowywanie danych w stanie trzeba płacić cyklicznie
- Kontrakty płacą za "przestrzeń dyskową"
Payment Channels
Rozwiązanie dostępne w średnim terminie
- Rozwiązanie mikropłatności
- Raiden - Odpowiednik Lightning Network
- Blokujemy środki na głównym łancuchu,
potem wymieniamy się odpowiednimi transakcjami między sobą, ale ich nie publikujemy - Główny łańcuch = arbiter
State Channels
Rozwiązanie dostępne w średnim terminie
- Bardziej ogólne niż płatności
(czyli smart kontrakty) - Otwieramy kanał podobnie do Payment Channels, wewnątrz kanału zachodzą dowolne zmiany
- Główny łańcuch = arbiter
Plasma
Rozwiązanie dostępne w średnim terminie
Main Net
Plasma Chain
(Side Chain)
Lock ETH
Acknowledged
Escape
Unlock ETH
Smart Contracty mogące sprawdzać "Fraud Proof"
Plasma
Polkadot
Rozwiązanie dostępne w średnim terminie
Ethereum
Main Net
Bitcoin
Mainnet
Polkadot Relay Chain
Polkadot ParaChain
Bridge
Bridge
eWASM
Rozwiązanie dostępne w długim terminie
- Wymiana maszyny wirtualnej EVM na WebAssembly (WASM)
- Lepsza szybkość działania i więcej "pracy" w rozwój
- Możliwość pisania kontraktów w dowolnym* języku
Bridge + PWASM
Rozwiązanie dostępne w krótkim terminie
- Wersja WASM dla Polkadot i testnetu Kovan
- Lepsza szybkość działania i więcej "pracy" w rozwój (współpraca z Mozilla)
- Możliwość pisania kontraktów w dowolnym* języku
- Możliwość interakcji między kontraktami EVM i WASM
SHARDING
Rozwiązanie dostępne w długim terminie
- Sieć homogeniczna (wszystkie części takie same)
- Podział stanu na części (shards)
- Możliwość przetwarzania tylko pewnej części
- Ale wciąż pełna interakcja z innymi częściami
StateLess Clients
Rozwiązanie dostępne w długim terminie
- Transakcje zawierają potrzebne fragmenty stanu
- Wykonanie transakcji polega na weryfikacji stanu i uruchomieniu
- Większość nodeów nie potrzebuje w ogóle stanu
- Ale to kto ma pełny stan?
https://ethresear.ch/t/the-stateless-client-concept/172
Dodatkowe
Technologie
Casper FFG (PoS)
Rozwiązanie dostępne w średnim terminie
- Finalizacja transakcji (ekonomiczna)
- Hybryda PoS + PoW
- Z czasem zmniejszająca się rola PoW
- Testnet już działa
Account Abstraction
Rozwiązanie dostępne w średnim terminie
- Kontrakty mogą płacić za transakcje użytkowników
- Dowolne metody replay-protection
- Dowolne schematy authentykacyjne (nie ECDSA)
- Potencjalnie możliwość opłaty transakcyjnej w tokenach
Pytania?
Tomasz Drwięga
@tomusdrw
Parity Technologies
Ethereum
By Tomasz Drwięga
Ethereum
- 629