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
a591a6d40bf420404a011733cfb7b190
934acb356d42d04c21a261c15bf6a95d
Ismertebb változatok
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.
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:
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/
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
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.
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.
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); } }