17. Jul 2023Business

Budoucnost internetu: Úvod do technologie Web 3.0 (event)

Prezentace, otázky a odpovědi a tento článek se týkají klíčového tématu Web 3.0. Cílem je dát význam populárním výrazům, vysvětlit, jak funguje blockchain a jaká jsou jeho omezení a poskytnout širší pochopení Webu 3.0. To zahrnuje problémy, o jejichž řešení usiluje, technologie, které jsou zaměřené na tyto problémy, změny pro vývojáře a architekturu aplikací Webu 3.0.

👉 Poznámka: Tato prezentace není určena pouze pro technicky zdatné lidi. Většina témat je vysvětlena obecně, abyste lépe pochopili, jak věci fungují. Pokud je téma odbornější, můžete přejít na další.

🌐 Co je Web 3.0? 

Historie webu

Web 1.0: Read-Only (1990-2004)

V éře Webu 1.0 byly webové stránky převážně statické a vlastnily je firmy. Interakce mezi uživateli byla velmi malá a jednotlivci vytvářeli obsah jen zřídka.

📽️ Poznámka autora:  V roce 1989 se Tim Berners-Lee v CERNu v Ženevě zabýval vývojem protokolů, které se měly stát World Wide Webem. Jeho myšlenkou bylo vytvořit otevřené, decentralizované protokoly, které by umožnily sdílení informací odkudkoli na Zemi.

 

Web 2.0: Read-Write (2004 - současnost)

Éra Webu 2.0 začala v roce 2004 s nástupem platforem sociálních sítí. Místo toho, aby web sloužil pouze ke čtení, vyvinul se pro čtení a zápis. Společnosti nejenže poskytovaly obsah uživatelům, ale začaly také nabízet platformy pro sdílení obsahu vytvářeného uživateli a zapojování se do interakcí mezi uživateli.

📽️ Poznámka autora: Web 2.0 zároveň zavedl model příjmů založený na reklamě. Uživatelé sice mohli vytvářet obsah, ale nevlastnili ho a ani neměli prospěch z jeho zpeněžení.

Web 3.0: Read-Write-Own

Web 3.0 se stal univerzálním termínem pro vizi nového, lepšího internetu. Ve své podstatě Web 3.0 využívá blockchain, kryptoměny a NFT, aby vrátil uživatelům moc ve formě vlastnictví.

💡 Poznámka k obrázku: Transformace stejné logické funkce ve všech verzích internetu. Všimněte si, že ve verzi Web 3.0 máte pouze jeden účet, a to vaši peněženku. 

 

Souhrn

💡 Poznámka: „Web 1.0 byl pouze pro čtení, Web 2.0 umožňoval čtení a zápis, Web 3.0 umožní i vlastnictví zapisovaných dat.“ 

⚡️ Jaké jsou výhody?

Příklad:

Na Webu 2.0 uživatelé vytvářejí obsah, ale nevlastní ho. Pokud vytvořím video na YouTube, patří Googlu a já dostanu pouze podíl z příjmů.

Tady je 5 výhod používaní Web 3.0:

  • Vlastnictví: S Webem 3.0 můžete vlastnit svá data, identitu a digitální aktiva, aniž byste potřebovali prostředníka.
  • Transparentnost: Web 3.0 využívá technologii blockchain, která zajišťuje transparentnost a bezpečnost všech transakcí a dat a jejich odolnost vůči manipulaci.
  • Bezpečnost: Web 3.0 využívá pokročilá bezpečnostní opatření, jako je kryptografie a decentralizace, která zajišťují ochranu před hackery a úniky dat.
  • Transakce bez důvěry: Chytré smlouvy na Webu 3.0 eliminují potřebu zprostředkovatelů třetích stran a umožňují přímé a bezpečné transakce mezi stranami.
  • Interoperabilita: Různé blockchainy mohou mezi sebou komunikovat, což usnadňuje přenos dat a aktiv v různých sítích.

 

⚠️ Jaké jsou limity?

Tady je 5 omezení Web 3.0:

  • Technická bariéra vstupu: Používání Webu 3.0 vyžaduje určitou úroveň technických znalostí, které mohou některé uživatele odrazovat. Uživatelé musí rozumět bezpečnostním otázkám, porozumět složité technické dokumentaci a orientovat se v neintuitivních uživatelských rozhraních.
  • Vzdělávání: Web 3.0 zavádí nová paradigmata, která vyžadují osvojení si odlišných mentálních modelů, než jaké se používají na Webu 2.0. Vzdělávací iniciativy informující uživatele Webu 2.0 o těchto paradigmatech Webu 3.0 jsou pro jeho úspěch zásadní.
  • Interoperabilita: Různé blockchainy mezi sebou dokáží komunikovat, ale tento proces zatím není standardizovaný ani snadno použitelný.
  • Škálovatelnost: Technologie blockchain je stále v rané fázi a škálovatelnost je hlavní výzvou, kterou je třeba vyřešit, než se Web 3.0 začne používat masově.
  • Dostupnost: Peněženky zatím nejsou pro prohlížeče standardem, což uživatelům ztěžuje interakci s aplikacemi Webu 3.0.

 

💡 „Web 3.0 není těžký, ale je jiný“

 

🕵🏽‍♂️ Jaké problémy sa Web 3.0 snaží řešit?

Web 3.0 má ambici řešit několik problémů, včetně vlastnictví dat, identity a digitálních aktiv a nedostatečné transparentnosti, bezpečnosti a nedůvěryhodných transakcí na Webu 2.0. Jeho cílem je poskytnout decentralizovaný, transparentní a bezpečný internet, který vrací uživatelům moc ve formě vlastnictví. Kromě toho se Web 3.0 pokouší řešit otázky technických překážek vstupu, vzdělávání, interoperability, škálovatelnosti a dostupnosti.

Porovnání

Web 2.0Web 3.0
Twitter může cenzurovat jakýkoli účet nebo tweetTweety na Webu 3.0 by byly necenzurovatelné, protože kontrola je decentralizovaná.
Platební služba se může rozhodnout, že nepovolí platby za určité typy pracíPlatební aplikace Webu 3.0 nevyžadují žádné osobní údaje a nemohou zabránit platbám
Servery pro aplikace zakázkové (gig) ekonomiky by mohly vypadnout a ovlivnit příjmy lidíServery Webu 3.0 nemohou spadnout –⁠ jako backend používají Ethereum, decentralizovanou síť tisíců počítačů

 

🤖 Jak to všechno funguje?

Blockchain

Technologie blockchainu je typ počítačového systému, ve kterém jsou informace uloženy v blocích, které jsou vzájemně propojeny. Jakmile jsou informace přidány do bloku, nelze je změnit, takže jsou velmi bezpečné a je obtížné je hacknout nebo zmanipulovat. Blockchainy se často používají pro finanční transakce, ale lze je využít i pro jiné typy ukládání a sdílení údajů.

Ukázka blockchain naživo

Ukázka začína v čase 7:36.

 

Ethereum Smart Contracts

Chytré smlouvy jsou samostatně spustitelné programy, které běží na blockchainu Etherea. Fungují podobně jako tradiční smlouvy, ale místo toho, aby byly vymáhány zákonnými prostředky, jsou vymáhány pomocí kódu. Chytré smlouvy lze využít k různým účelům, například ke správě digitálních aktiv, provádění složitých finančních transakcí a vytváření decentralizovaných aplikací (dApps). Jakmile chytrá smlouva vejde v platnost, nelze ji upravit ani odstranit, což z ní činí bezpečný a spolehlivý způsob automatizace smluvních dohod.

👨🏽‍💻 Co sa mění pre vývojáře?

Frontend volajíci rozhraní API za účelem provedení operace

// 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))
  • abychom věděli, jaký endpoint je na jaké adrese a jaké jsou jeho vstupy/výstupy, musíme používat nějaký druh dokumentace API (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);
	});
  • po nasazení chytré smlouvy na blockchain už bude typescript znát všechny funkce a jejich parametry pomocí ABI (Application Binary Interface)
  • dokážeme zautomatizovat proces získávání ABI pomocí volání na tento endpoint a odesláním adresy naší chytré smlouvy
curl "<http://api.etherscan.io/api?module=contract&action=getabi&address=0xe7c29cba93ef8017c7824dd0f25923c38d08065c&format=raw>" > Token.json

Příklad chytré smlouvy Solidity 

// 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 teď neznamená, že se všechny služby musí změnit na dApps (decentralizované aplikace). Tyto příklady slouží pouze jako ilustrace hlavních rozdílů mezi službami Webu 2.0 a Webu 3.0

🏛 Architektura Webu 3.0 

Podrobný návod, jak migrovat běžnou webovou aplikaci na architekturu decentralizované webové aplikace

Krok 0: Současná architektura webové aplikace.

Krok 1: Nahradili jsme náš backend a databázi blockchainem.

Krok 2: Přidali jsme externí uzel, abychom nemuseli všechna data blockchainom ukládat na našem zařízení.

Krok 3: Přidali jsme připojení k peněžence, aby uživatel mohl podepisovat své blockchainové transakce.

Krok 4: Přidali jsme IPFS (Inter Planetary File Storage), které komunikuje s vaším externím uzlem, abychom mohli ukládat velká data v distribuované peer-to-peer síti.

Krok 5: V tomto kroku jsme nahráli náš frontend na IPFS, abychom se nemuseli vázat na centralizované webové servery.

Také jsme přidali službu třetí strany The Graph, která eliminuje potřebu neustálého volání blockchainu pro získání údajů a zároveň formátuje data do jazyka GraphQL.


 

Závěr: Poslední úpravou bude přidání škálovacího řešení L2, jako je Polygon, díky němuž jsou náklady uživatele na provádění nových transakcí minimální.

📓 Prezentační slovník

  • ABI
    • Application Binary Interface
    • V kontextu Web 3.0 ABI definuje, jak kódovat a dekódovat data z chytré smlouvy.
  • Address (Wallet)
    • krypto adresa je jedinečný soubor alfanumerických znaků, který umožňuje odesílat a přijímat kryptoměny a NFT v blockchainu.
  • Blockchain
    • blockchainy se skládají z „bloků“ dat a sítí uzlů
    • každý blok je souborem informací o transakcích, přičemž každý uzel uchovává záznam o všech ověřených transakcích
  • Dapp (Decentralized Application)
    • jakákoli aplikace postavená na blockchainu
    • Dapps často používají chytré smlouvy k automatickému poskytování funkcí
    • Dapps jsou taky známé jako aplikace Webu 3.0
  • IPFS (Inter Planetary File System)
    • distribuovaný systém pro ukládání souborů, webových stránek, aplikací a dat a pro přístup k nim

📹 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