Programowanie z blockchainem 1000-2M24PZB
Będziemy mówić o historii i praktyce technologii opartych na łańcuchu bloków (blockchain). Zaczniemy od algorytmów zdecentralizowanego uzgadniania (decentralized consensus) i modeli księgi wieczystej oparte o podpisy kryptograficzne. Pomówimy o różnych ekostystemach, w szczególności Ethereum i EVM, Bitcoin. Będzie wymagane analityczne zrozumienie tokenomiki. Poznamy pod stawowe rodzaje kontraktów programowalnych: DEX, NFT, pomosty. Projektem zaliczeniowym będzie aplikacja Web3 na platformie Ethereum, której interfejs użytkownika będzie testowany na platformie CI (Playwright).
Koordynatorzy przedmiotu
Tryb prowadzenia
Założenia (opisowo)
Efekty kształcenia
Student rozumie:
1. Model księgi zdecentralizowanej (decentralized ledger)
2. Różnice między ekosystemami blockchainowymi (Ethereum, Bitcoin i inne, w tym porównanie Avalanche/Tezos/Solana)
3. Najczęściej spotykane rodzaje kontraktów programowalnych (tokeny, NFT, wyrocznie, zdecentralizowane giełdy, pomosty, rollupy)
4. Działanie pomostów oraz mechanizmów bezpomostowych przekazów międzyłańcuchowych.
5. Różnice między kontraktami programowalnymi w warstwie L1 oraz mechanizmami realizacji kontraktów w L2 (blokowanie transakcji, Lightning, rollupy).
6. Podstawy bezpieczeństwa Web3 wraz z typowymi błędami w kodzie kontraktów
7. Zasady funkcjonowania IPFS w praktyce (bramki, pinning, metody dostępu)
Student potrafi stworzyć:
1. Kontrakt programowalny w Solidity (smart contract) działający w ekosystemie Ethereum
2. Aplikację zdecentralizowaną na Web3 (IPFS+Ethereum)
3. Token wymienny (fungible) i NFT
4. Automatyczne testy dla powyższych (w tym Playwright)
5. Przeprowadzić analizę porównawczą tokenów i ekosystemów w oparciu o aktualne dane rynkowe
Kompetencje:
1. Język programowania Solidity
2. Podstawy bezpieczeństwa kontraktów programowalnych (smart contract) i aplikacji zdecentralizowanych, w tym analiza podatnego kodu
3. Znajomość kultury zdecentralizowanej i narzędzi Web3
Kryteria oceniania
Dwa kolokwia (2x10pkt), wysyłanie wyników pracy po każdej sesji laboratoryjnej prowadzącemu (15pkt) oraz projekt zaliczeniowy (85pkt). Potrzebne jest powyżej 50% do zaliczeń cząstkowych: czyli co najmniej 50% z każdego kolokwium, co najmniej 50% z prac domowych, co najmniej 50% z każdego dokumentu zaliczeniowego i co najmniej 50% z implementacji projektu.
Projektem zaliczeniowym jest aplikacja złożona z kontraktu programowalnego i strony Web3 do jego obsługi (55pkt) oraz trzy dokumenty projektowe (30pkt) opisujące projekt, jego architekturę, plan testowania i perspektywy rozwoju.
Całościowy próg zaliczeniowy to 72 ze 120 pkt (60%), na ocenę dobrą student potrzebuje 96pkt, na ocenę bardzo dobrą 112pkt. Dokumenty po terminie i pierwsze poprawki są punktowane z dzielnikiem 1.5. W przypadku dokumentów
projektowych i projektów możliwa jest druga poprawka z dzielnikiem 2 (a więc by zaliczyć student musiał otrzymać co najmniej 1 punkt poprzednio.) Jeśli student uzyska a punktów z kolokwium w pierwszym terminie i b punktów na pierwszej poprawce, a c punktów w drugiej poprawce, to liczymy wynik jako a+max(b−a, 0)/1.5+(max(c−b, 0)/2). Np. 3 punkty w terminie i 8 punktów na poprawce to 7.5, czyli 2.5pkt powyżej progu. Druga poprawka jest organizowana tylko w przypadku zagrożenia.
Literatura
* [https://www.coingecko.com/research/publications/fastest-blockchains]
* [https://coinmarketcap.com/api/pricing/]
* [https://entethalliance.org/specs/ethtrust-sl/]
* [https://dweb-primer.ipfs.io/files-on-ipfs/add-and-retrieve-file-content]
* [https://docs.lighthouse.storage/]
* [https://owasp.org/www-project-top-ten/]
* [https://pinata.cloud/]
* [https://solidity-by-example.org/]
* [https://docs.soliditylang.org/en/latest/]
* [https://swcregistry.io/docs/SWC-114/]
Więcej informacji
Więcej informacji o poziomie przedmiotu, roku studiów (i/lub semestrze) w którym się odbywa, o rodzaju i liczbie godzin zajęć - szukaj w planach studiów odpowiednich programów. Ten przedmiot jest związany z programami: