Table of Contents

Blockchain technológia és virtuális fizetőeszközök

Hash kódok

A hash egy fix hosszúságú alfanumerikus (számokból és betűkből álló) kód, amely az eredeti adat rövidített ujjlenyomata.

Egyszerű hash kód: egyszerű hash

Hash-függvények főbb jellemzői

Ismertebb változatok

Hash alkalmazási területei

Blockchain alapok

A blockchain technológia ~2010-től forradalmasította az adatok kezelését és a virtuális fizetőeszközök működését. A decentralizált rendszerek, mint a Bitcoin és az Ethereum, lehetővé tették az emberek számára, hogy közvetítők nélkül hajtsanak végre különböző tranzakciókat.

A blockchain egy decentralizált adatbázis, amely az adatok folyamatosan növekvő listáját, úgynevezett blokkokat tartalmazza. Minden blokk kapcsolódik az előzőhöz egy kriptográfiai algoritmus révén, biztosítva a lánc integritását és biztonságát.

Hogyan működik?

Eredeti cikk, szerzője álnéven írta: https://web.archive.org/web/20140320135003/https://bitcoin.org/bitcoin.pdf

A blockchain technológia működési elve egyszerű, és rendkívül biztonságos:

  1. A tranzakciók adatainak csoportosítása blokkokba.
  2. A blokkok hozzáadása a lánchoz, miután a résztvevők (node-ok) konszenzusra jutottak, hogy a tranzakciók érvényesek.
  3. Minden blokk tartalmazza az előző blokk kriptográfiai lenyomatát, ezzel biztosítva a lánc folyamatosságát és változtathatatlanságát.

Blokklánc felépítése

Proof of work

A Proof-of-Work (PoW) egy olyan konszenzusmechanizmus, amelyet blockchain hálózatok, például a Bitcoin, használnak a tranzakciók hitelesítésére és új blokkok hozzáadására a lánchoz. A PoW célja a hálózat biztonságának garantálása és a résztvevők közötti egyetértés (konszenzus) elérése központosított hatóság nélkül.

Hogyan működik?

Blokk létrehozása: Egy adott blokk tartalmazza a tranzakciók listáját, a korábbi blokk hash-ét és más adatokat. A bányászok versenyeznek, hogy megtalálják azt a számot (a nonce-ot), amely megfelel bizonyos feltételeknek.

Feladat: A blokk tartalmából egy olyan hash-t kell generálni, amely megfelel a hálózat által meghatározott nehézségi szintnek. A gyakorlatban a hash-nek egy bizonyos számú nullával kell kezdődnie.

A bányászok ezt próbálgatással (brute force) oldják meg, a hash-t addig számolják újra különböző nonce értékekkel, amíg megfelel a kritériumnak.

Online szimulátor: https://blockchain-academy.hs-mittweida.de/2021/05/proof-of-work-simulator/

Szavazás alapú hitelesítés

A hálózat résztvevői (csomópontok) szavaznak arról, hogy egy adott blokk vagy tranzakció érvényes-e. A csomópontok rendelkeznek azzal az információval, amely alapján megállapíthatják a tranzakciók helyességét (pl. elegendő egyenleg, aláírások hitelessége).

A hálózat meghatároz egy küszöbértéket (pl. 51% vagy 67%), amelyet el kell érni az elfogadáshoz. Például, ha két blokk érkezik egy időben, a többségi szavazás dönt.

Valóságos blokklánc: https://www.blockchain.com/explorer/assets/btc

"Jogos" alkalmazások

Kriptovaluták

A blockchain technológia legismertebb alkalmazásai a kriptovaluták, amelyek a hagyományos valutákhoz hasonlóan működnek, de digitális formában léteznek, és a blockchainen keresztül kerülnek kibocsátásra és nyomon követésre.

Jogi vonatkozások

A kriptovaluták és a blockchain technológia használata számos jogi kérdést vet fel, különösen mivel a szabályozás gyakran elmarad a technológia fejlődésétől.

Okosszerződések (Smart Contracts)

Az okosszerződések olyan önvégrehajtó szerződések, amelyek a blockchainen futnak. A szerződések feltételeit program formájában írják meg, és azok automatikusan végrehajtásra kerülnek, amikor a meghatározott feltételek teljesülnek.

pragma solidity ^0.8.0;

contract FlightDelayInsurance {
    struct Policy {
        address insured;  // A biztosított személy címe
        uint256 premium;  // A biztosítási díj (premium)
        uint256 payout;   // A kártérítési összeg
        bool active;      // Aktív-e a biztosítás
        bool paidOut;     // Kifizetés megtörtént-e
    }

    address public owner; // A biztosító címe
    mapping(string => Policy) public policies; // Járatszámhoz kötött biztosítási szerződések

    event PolicyPurchased(address indexed insured, string flightNumber, uint256 premium, uint256 payout);
    event CompensationPaid(address indexed insured, string flightNumber, uint256 amount);

    constructor() {
        owner = msg.sender; // A szerződést deployoló fél lesz a biztosító
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Csak a biztosító végezheti ezt a műveletet.");
    }

    // Biztosítás vásárlása
    function purchasePolicy(string memory flightNumber, uint256 payout) public payable {
        require(msg.value > 0, "Biztosítási díjat (premium) kell fizetni.");
        require(policies[flightNumber].insured == address(0), "Ehhez a járathoz már van biztosítás.");

        policies[flightNumber] = Policy({
            insured: msg.sender,
            premium: msg.value,
            payout: payout,
            active: true,
            paidOut: false
        });

        emit PolicyPurchased(msg.sender, flightNumber, msg.value, payout);
    }

    // Kártérítés kifizetése késés esetén (az orákulum adatai alapján)
    function payCompensation(string memory flightNumber) public onlyOwner {
        Policy storage policy = policies[flightNumber];
        require(policy.active, "Ez a biztosítás már nem aktív.");
        require(!policy.paidOut, "A kártérítést már kifizették.");

        // Kifizetés
        policy.paidOut = true;
        policy.active = false;

        payable(policy.insured).transfer(policy.payout);
        emit CompensationPaid(policy.insured, flightNumber, policy.payout);
    }

    // Szerződés egyenlegének lekérdezése
    function getBalance() public view onlyOwner returns (uint256) {
        return address(this).balance;
    }

    // Külső forrásból származó információk frissítése (orákulum szimulációja)
    function handleFlightDelay(string memory flightNumber) public onlyOwner {
        // Ez a függvény szimulálja a repülési késés adatok fogadását
        // és automatikusan meghívja a kártérítést kifizető függvényt
        payCompensation(flightNumber);
    }
}

Virtuális fizetőeszközök előnyei és kihívásai