31. Mar 2023Business

Budúcnosť internetu: Úvod do technológie Web3 (Event)

Prezentácia, Q&A a tento článok pokrývaju kľúčové témy Web3. Cieľom je dať význam buzzwordom, vysvetliť, ako funguje blockchain a jeho obmedzenia, a poskytnúť širšie pochopenie Web3. To zahŕňa problémy, ktoré sa snaží vyriešiť, technológie, ktoré sú zamerané na tieto problémy, zmeny pre vývojárov a architektúru aplikácií Web3.

👉 Poznámka: Táto prezentácia nie je určená len pre technických ľudí; väčšina tém je vysvetlená všeobecne, aby ste lepšie pochopili, ako veci fungujú. Ak je téma technickejšia, nebojte sa a pokračujte na ďalšiu.

Speaker

Michal Pleva

Backend Developer

Som technický nadšenec, ktorý sa venuje vytváraniu digitálnych nástrojov, ktoré posúvajú ľudstvo vpred. V prvom rade verím na riešenie problémov, následne až technológiu. Ak chcete diskutovať o produkte alebo technických otázkach, napíšte mi správu.

 

🌐 Čo je Web3? 

História webu

Web 1.0: Read-Only (1990-2004)

Počas éry Web 1.0 boli webové stránky prevažne statické a vlastnili ich spoločnosti. Interakcia medzi používateľmi bola veľmi malá a jednotlivci len zriedka vytvárali obsah.

📽️ Poznámka autora: V roku 1989 v CERN-e v Ženeve bol Tim Berners-Lee zaneprázdnený vývojom protokolov, ktoré by sa stali World Wide Web. Jeho myšlienkou bolo vytvoriť otvorené, decentralizované protokoly, ktoré by umožňovali zdieľanie informácií odkiaľkoľvek na Zemi.

 

Web 2.0: Read-Write (2004-súčasnosť)

Obdobie Web 2.0 sa začalo v roku 2004 vznikom platforiem sociálnych médií. Namiesto toho, aby bol web iba na čítanie, vyvinul sa na čítanie a zápis. Spoločnosti nielenže poskytovali obsah používateľom, ale začali ponúkať aj platformy na zdieľanie obsahu vytvoreného používateľmi a zapájanie sa do interakcií medzi používateľmi.

📽️ Poznámka autora: Web 2.0 zaviedol aj model príjmov riadený reklamou. Používatelia síce mohli vytvárať obsah, no nevlastnili ho a ani nemali prospech z jeho speňaženia.

Web 3.0: Read-Write-Own

Web3 sa stal univerzálnym termínom pre víziu nového, lepšieho internetu. Web3 vo svojom jadre využíva blockchain, kryptomeny a NFT, aby vrátil používateľom silu vo forme vlastníctva.

💡 Poznámka k obrázku: Transformácia rovnakej logickej funkcionality vo všetkých verziách internetu. Všimnite si, že vo verzii Web3 máte iba jeden účet, a to vašu peňaženku.

 

Zhrnutie

💡 Poznámka: „Web1 bol iba na čítanie, Web2 umožnil čítať a zapisovať, Web3 bude umožňovať aj vlastníctvo zapisovaných údajov.“

⚡️ Aké sú benefity?

Príklad:

Vo Web 2.0 vytvárajú používatelia obsah, ale nevlastnia ho. Ak vytvorím video na YouTube, patrí to Google-u a ja dostanem iba podiel z príjmov.

Tu je 5 výhod používania Web3:

  • Vlastníctvo: S Web3 môžete vlastniť svoje údaje, identitu a digitálne aktíva bez toho, aby ste potrebovali sprostredkovateľa.
  • Transparentnosť: Web3 využíva technológiu blockchain, vďaka ktorej sú všetky transakcie a údaje transparentné, bezpečné a odolné voči falšovaniu.
  • Bezpečnosť: Web3 využíva pokročilé bezpečnostné opatrenia, ako je kryptografia a decentralizácia na ochranu pred hackermi a únikmi údajov.
  • Trustless Transactions: Inteligentné zmluvy vo Web3 eliminujú potrebu sprostredkovateľov tretích strán, čo umožňuje priame a bezpečné transakcie medzi stranami.
  • Interoperabilita: Rôzne blockchainy môžu medzi sebou komunikovať, čo uľahčuje prenos údajov a aktív cez rôzne siete.

 

⚠️ Aké sú limitácie?

Tu je 5 obmedzení Web3:

  • Technická prekážka vstupu: Používanie Web3 vyžaduje určitú úroveň technických znalostí, ktoré môžu byť pre niektorých používateľov skľučujúce. Používatelia musia chápať bezpečnostné problémy, porozumieť zložitej technickej dokumentácii a orientovať sa v neintuitívnych používateľských rozhraniach.
  • Vzdelávanie: Web3 zavádza nové paradigmy, ktoré si vyžadujú učenie sa odlišných mentálnych modelov, ako sú tie, ktoré sa používajú vo Webe 2.0. Vzdelávacie iniciatívy informujúce používateľov Web2 o týchto paradigmách Web3 sú životne dôležité pre jeho úspech.
  • Interoperabilita: Rôzne blockchainy môžu medzi sebou komunikovať, ale tento proces ešte nie je štandardizovaný ani ľahko použiteľný.
  • Škálovateľnosť: Technológia blockchain je stále v ranom štádiu a škálovateľnosť je hlavnou výzvou, ktorú je potrebné vyriešiť predtým, ako Web3 dosiahne masové prijatie.
  • Dostupnosť: Peňaženky ešte nie sú štandardom pre prehliadače, čo používateľom sťažuje interakciu s aplikáciami Web3.

 

💡 „Web3 nie je ťažký, ale je iný“

 

🕵🏽‍♂️ Aké problémy sa Web3 snaží vyriešiť?

Web3 sa snaží vyriešiť niekoľko problémov, vrátane vlastníctva údajov, identity a digitálnych aktív a nedostatočnej transparentnosti, bezpečnosti a nedôveryhodných transakcií vo Web2. Jeho cieľom je poskytnúť decentralizovaný, transparentný a bezpečný internet, ktorý používateľom vráti silu vo forme vlastníctva. Okrem toho sa Web3 snaží riešiť problémy technických prekážok vstupu, vzdelávania, interoperability, škálovateľnosti a dostupnosti.

Porovnanie

Web 2Web3
Twitter môže cenzurovať akýkoľvek účet alebo tweetTweety Web3 by boli necenzurovateľné, pretože kontrola je decentralizovaná
Platobná služba sa môže rozhodnúť nepovoliť platby za určité typy prácPlatobné aplikácie Web3 nevyžadujú žiadne osobné údaje a nemôžu zabrániť platbám
Servery pre gig-economy aplikácie by mohli vypadnúť a ovplyvniť príjem ľudíWeb3 servery nemôžu vypadnúť – ako backend používajú Ethereum, decentralizovanú sieť tisíciek počítačov

 

🤖 Ako to celé funguje?

Blockchain

Technológia blockchain je typ počítačového systému, v ktorom sú informácie uložené v blokoch, ktoré sú navzájom prepojené. Akonáhle sú informácie pridané do bloku, nie je možné ich zmeniť, takže sú veľmi bezpečné a ťažko sa dajú hacknúť alebo manipulovať. Blockchainy sa často používajú na finančné transakcie, ale môžu sa použiť aj na iné typy ukladania a zdieľania údajov.

Blockchain live demo

Ukážka začína na 7:36.

 

Ethereum Smart Contracts

Smart kontrakty sú samospustiteľné programy, ktoré bežia na Ethereum blockchaine. Fungujú podobne ako tradičné zmluvy, ale namiesto toho, aby boli vymáhané zákonnými prostriedkami, sú vymáhané kódom. Smart kontrakty možno použiť na rôzne účely, ako je napríklad správa digitálnych aktív, vykonávanie zložitých finančných transakcií a vytváranie decentralizovaných aplikácií (dApps). Akonáhle je smart kontrakt nasadený, nie je možné ho upraviť ani odstrániť, čo z nej robí bezpečný a spoľahlivý spôsob automatizácie zmluvných dohôd.

👨🏽‍💻 Čo sa mení pre vývojárov?

Frontend volajúci na API pre vykonanie nejakej operácie

// actual code for calling API
import axios from 'axios'

const axiosClient = axios.create({
  baseURL: `https://www.example.com/api/v1`,
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }
});

// for list of endpoints will need to use swagger
axiosClient.get('/products')
// or
axiosClient.post('/products', JSON.stringify(data))
  • aby sme vedeli, aký endpoint sa nachádza na akej adrese a aké sú jeho vstupy/výstupy, musíme používať nejaký druh API dokumentácie (swagger)

Frontend volajúci Ethereum Smart Contract

import { ethers } from 'ethers'

// setting up external node
const url = 'ADD_YOUR_ETHEREUM_NODE_URL’;
const provider = new ethers.providers.JsonRpcProvider(url);

// setting up contract
const address  = 'CONTRACT_ADDRESS_FROM_REMIX';
const abi = [
    {
        "inputs": [],
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "inputs": [],
        "name": "getLatestPrice",
        "outputs": [
            {
                "internalType": "int256",
                "name": "",
                "type": "int256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    }
];

const contract = new ethers.Contract(address, abi, provider);

contract.getLatestPrice()
	.then((result) => {
	  console.log("$" + result.toNumber() / 100000000);
	});
  • potom ako nasadíme smart kontrakt na blockchain, typescript už bude pomocou ABI (Application Binary Interface) poznať všekty funkcie a ich parametre
  • dokážeme zautomatizovať process získavania ABI pomocou volania na tento endpoint s poslaním našej adresy smart kontraktu
curl "<http://api.etherscan.io/api?module=contract&action=getabi&address=0xe7c29cba93ef8017c7824dd0f25923c38d08065c&format=raw>" > Token.json

Príklad na Solidity Smart Contract

// SPDX-License-Identifier: MIT
pragma solidity 0.8.8;

import "./PriceConverter.sol";

error NotOwner();

contract FundMe {
    using PriceConverter for uint256;

    address[] public funders;
    mapping(address => uint256) public addressToAmountPaied;

    uint256 public constant MINIMUM_USD = 50 * 1e18;
    address public immutable i_owner;

    constructor() {
        i_owner = msg.sender;
    }

    function pay() public payable {
        require(msg.value.getConversionRate() > MINIMUM_USD, "You've paid less then minimum amount");
        funders.push(msg.sender);
        addressToAmountPaied[msg.sender] += msg.value;
    }

    function withdraw() public onlyOwner {
        for (uint256 funderIndex = 0; funderIndex < funders.length; funderIndex++) {
            address funder = funders[funderIndex];
            addressToAmountPaied[funder] = 0;
        }

        // reset founders array
        funders = new address[](0);

        (bool callSuccess, ) = payable(msg.sender).call{ value: address(this).balance }("");
        require(callSuccess, "Funds where not withdrawen");
    }

    modifier onlyOwner {
        if (msg.sender != i_owner) revert NotOwner();
        _;
    }
}

💡 Toto teraz neznamená, že všetky služby je nevyhnutné zmeniť na dApps (decentralizované aplikácie). Tieto príklady slúžia iba ako ilustácie hlavných rozdiel medzi službami Web2 a Web3

🏛 Web3 architektúra

Podrobný návod na migráciu bežnej webovej aplikácie na architektúru decentralizovanej webovej aplikácie

Krok 0: Aktuálna architektúra webovej aplikácie.

Krok 1: Vymenili sme náš backend a databázu za blockchain.

Krok 2: Pridali sme externý uzol, aby sme nemuseli ukladať všetky blockchainové dáta na našom zariadení.

Krok 3: Pridali sme pripojenie k peňaženke, aby používateľ mohol podpisovať svoje blockchainové transakcie.

Krok 4: Pridali sme IPFS (inter Planetary File Storage), ktorý komunikuje s vaším externým uzlom, aby sme mohli ukladať veľké dáta v distribuovanej peer-to-peer sieti.

Krok 5: V tomto kroku sme nahrali naš Frontend na IPFS, aby sme sa nemuseli zaväzovať k centralizovaným webovým serverom.

Taktiež sme pridali aj službu tretej strany The Graph, ktorá eliminuje potrebu neustáleho volania na blockchain na získavanie údajov a tiež formátuje údaje do GraphQL.

Záver: Poslednou úpravou bude pridanie škálovacieho riešenia L2, ako je Polygon, vďaka čomu sú náklady používateľa na uskutočňovanie nových transakcií minimálne.

📓 Prezentačný slovník

  • ABI
    • Application Binary Interface
    • V kontexte Web3 ABI definuje, ako kódovať a dekódovať dáta zo smart kontraktu.
  • Address (Wallet)
    • krypto adresa je jedinečný súbor alfanumerických znakov, ktoré môžu odosielať a prijímať kryptomenu a NFTs na blockchaine.
  • Blockchain
    • Blockchainy pozostávajú z „blokov“ údajov a sietí uzlov
    • každý blok je súborom informácií o transakciách, pričom každý uzol uchováva záznam o všetkých overených transakciách
  • Dapp (Decentralized Application)
    • akákoľvek aplikácia postavená na blockchaine
    • Dapps často používajú smart kontrakty na automatické poskytovanie funkcií
    • Dapps sú známe aj ako Web3 aplikácie
  • IPFS (Inter Planetary File System)
    • distribuovaný systém na ukladanie a prístup k súborom, webovým stránkam, aplikáciám a údajom

📹 Záznam

🔗 Zdroje

What is Web3 and why is it important? | ethereum.org

Web2 vs Web3 | ethereum.org

Blockchain Demo

The Architecture of a Web 3.0 application

Web3 Dictionary - Moralis Web3

Michal PlevaBackend Developer