8. ● Interpretowany język wysokiego poziomu używany do …
Dla początkujących - dobrze wiedzieć:
● ECMAScript 6+, Promises, “Callback Hell”
● MDN (Mozilla Developer Network)
● Books: You Don’t Know JS ( @YDKJS)
● JavaScript For Cats
JavaScript - Rzeczy praktyczne
9. Rzeczy kosmiczne:
● ethereum/web3.js - Ethereum JavaScript API
● Generic JSON RPC
Rzeczy przydatne:
● MetaMask - Jak ogarnąć komunikację
z siecią Ethereum w JS (testową / produkcyjną)?
● Infura Network
JavaScript - Rzeczy praktyczne
11. ● Środowisko uruchomieniowe JavaScript
● Wykorzystuje architekturę zdarzeń i obsługuje asynchroniczne I/O (Input/Output) - pamięć, sieć, itp.
● Procesuje wszystkie zdarzenia w pętli zwanej “event loop”
● Posiada wbudowany silnik V8, kompilujący kod do kodu maszynowego, a nie interpretuje go w czasie
rzeczywistym.
● Biblioteka paczek NPM
Node.js - Jak działa i czemu jest tak popularny?
14. ● Nie posiada rozbudowanych zależności
● Umożliwia w miarę szybkie prototypowanie lub pisanie aplikacji
● Dzięki wykorzystaniu innych bibliotek posiada bardzo duże możliwości
● Dobrze nadaje się do pisania aplikacji RESTowych
● Nadaje się do pisania aplikacji w architekturze mikroserwisów
Express.js - Minimalistyczny framework
Express
19. ● Kryptografia symetryczna, asymetryczna
● Klucz publiczny, klucz prywatny
● Hash => sha256(‘spacewarshack’) =>
d6bec73d30e22556e6c37a05bf91f9b7d5431306184e8ac745a333bfe73d5722
● Czym jest mój portfel w sieci kryptowaluty?
Kryptografia - Co potrzebujemy o niej wiedzieć
20. Blockchain - Co to jest?!
Do czego jest nam potrzebny, czym jest i jak działa?
21. ● Rozproszony rejestr danych posiadający / lub nieposiadający bazę monetarną
● Niemodyfikowalny łańcuch bloków zawierających dane o transakcjach
● Zbudowana jako rozproszona sieć peer-to-peer (P2P)
● Bitcoin Whitepaper - https://bitcoin.org/bitcoin.pdf
Blockchain - Co to jest?!
27. ● Algorytm dowodzący wykonanie pracy
● Polega na znalezieniu nonce, przy pomocy którego można znaleźć:
H(x) < target
● H(x) => hash(version, hashPrevBlock, hashMerkleRoot, timestamp, Nonce)
● Polega na znalezieniu nonce
Proof of Work
36. ● Proof of Stake
○ Wymaga posiadania środków na specjalnym koncie
○ W przeciwieństwie do PoW nie zużywa prądu
○ Powoduje zagrożenie, że bogaci będą się bogacić
○ Konto które ma odpowiednią ilość środków odpowiada za “pieczętowanie” bloku
● Proof of Authority
○ Również nie zużywa tyle prądu
○ Wprowadza definicję “Notariusza”, który decyduje o transakcjach i “pieczętuje” bloki
Inne mechanizmy potwierdzania bloków
39. ● Działa podobnie jak Bitcoin
● Umożliwia stworzenie rozproszonej aplikacji (Smart Kontrakty)
● Środowiskiem wykonującym operacje jest Ethereum Virtual Machine - EVM
● Wykonanie transakcji - zmiany danych (modyfikacji) kosztuje prowizję
● Prowizja jest w wyliczana w jednostce GAS
● Najpopularniejszym językiem pisania Smart Kontraktów jest Solidity
Ethereum
40. Sieć Ethereum - jak to działa?
W sumie to nie tylko Ethereum… ;)
41. ● Zapomnij o natychmiastowym otrzymaniu wyniku z sieci blockchainowych typu PoW
● Zapomnij o szybkich bugfixach na kontrakcie produkcyjnym
● Zapomnij o wgrywaniu parę razy tego samego
● Zapomnij o migracji danych ze starego kontraktu, do nowego
● Pamiętaj o kosztach wykorzystania sieci
● Pamiętaj o ilości potwierdzeń, zanim uznasz, że sieć wykopała Twoją transakcję
Zmiana podejścia do życia :)
43. pragma solidity 0.4.25;
contract Hello {
string _text;
constructor (string text) public {
_text = text;
}
function showText() public view returns(string) {
return _text;
}
}
http://remix.ethereum.org/#optimize=false&version=soljson-v0.4.25+commit.59dbf8f1.js
Kontrakt!
44. ● Kompilator: solc
● !! - Kompilator w JS (npm) jest różny od implementacji w C++
● https://solidity.readthedocs.io/en/v0.4.25/installing-solidity.html
608060405234801561001057600080fd5b506040516102a83803806102a8833981018060405281019080805182019291905050508060009080519060200190610049929190610050565b50506100f5565b8280546001816001161561010002
03166002900490600052602060002090601f016020900481019282601f1061009157805160ff19168380011785556100bf565b828001600101855582156100bf579182015b828111156100be5782518255916020019190600101906100a356
5b5b5090506100cc91906100d0565b5090565b6100f291905b808211156100ee5760008160009055506001016100d6565b5090565b90565b6101a4806101046000396000f300608060405260043610610041576000357c0100000000000000
000000000000000000000000000000000000000000900463ffffffff16806307bc882914610046575b600080fd5b34801561005257600080fd5b5061005b6100d6565b60405180806020018281038252838181518152602001915080519060
20019080838360005b8381101561009b578082015181840152602081019050610080565b50505050905090810190601f1680156100c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b
606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561016e5780601f1061014357610100808354
04028352916020019161016e565b820191906000526020600020905b81548152906001019060200180831161015157829003601f168201915b50505050509050905600a165627a7a723058204eb22775aff7569df2733e0ef12faab79504e5
5a29d366418b63ce8aa89532a10029
Bytecode i kompilator
48. ● Bitcoin ma blok średnio co 10 minut, o stałej wielkości
● Ethereum ma średnio blok co 15 sekund, o zmiennej wielkości
● Ethereum korzysta z “Wallet Balance”, Bitcoin korzysta z UTXO
● Bitcoin posiada HDWallets (Hierarchical Deterministic Wallets)
Różnice pomiędzy Bitcoin a Ethereum
49.
50. Do zobaczenia na Space Wars Hack - Class #2!
24 września 2018
Piotr Pawlak
Blockchain / dApp Developer at
ppawlakov