Bevezetés az okosszerződésekbe
Mi az az okosszerződés?
Az "okosszerződés" egy program, mely az Ethereum blokkláncon fut. Kód (a függvényei) és adat (az állapota) gyűjteménye, mely egy bizonyos címen létezik az Ethereum blokkláncon.
Az okosszerződés egy Ethereum számla típus. Ez azt jelenti, hogy van egy egyenlegük és tranzakciókat tudnak indítani a hálózaton. Azonban nem egy felhasználó kezeli őket, ehelyett telepítve vannak a hálózatra és úgy futnak, ahogy programozták őket. A felhasználói számlák interakcióba léphetnek az okosszerződésekkel tranzakciók indításával, melyek egy függvényt hajtanak végre az okosszerződésen. Az okosszerződések szabályokat fektethetnek le, mint egy rendes szerződés, és automatikusan betartatják azokat a kód által.
Előfeltételek
Olvasd el a számlákról, tranzakciókról és az Ethereum virtuális gépről szóló cikkeket, mielőtt beleugranál az okosszerződések világába.
Egy digitális ételautomata
Talán a legjobb okosszerződés metafora az ételautomata, ahogy Nick Szabo fogalmazta meg. A megfelelő bemenetekkel, egy bizonyos kimenet jön létre.
Hogy megkapd a nasit az ételautomatából:
1pénz + nasi választás = kiadott nasi2
Ez a logika be van programozva az ételautomatába.
Az okosszerződésbe logika van beprogramozva, mint egy ételautomatába. Az alábbi példában bemutatjuk, hogy hogy nézne ki ez az ételautomata egy okosszerződés formájában:
1pragma solidity 0.6.11;23contract VendingMachine {45 // A szerződés állapotváltozóinak deklarálása6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // Amikor a 'VendingMachine' szerződést telepítik:10 // 1. beállítja a telepítő címet a szerződés tulajdonosaként11 // 2. beállítja a telepített okosszerződés egyenlegét 100 muffinra12 constructor() public {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // A tulajdonos növelheti az okosszerződés muffin egyenlegét18 function refill(uint amount) public {19 require(msg.sender == owner, "Only the owner can refill.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Bárki vásárolhat muffint24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}31Összes megjelenítéseMásolás
Mint ahogy az ételautomaták szükségtelenné teszik az árusító alkalmazottat, az okosszerződések is számos iparágban leválthatják a közvetítőket.
Nem engedélyköteles
Bárki írhat okosszerződést és telepítheti a hálózatra. Csak meg kell tanulnod egy okosszerződés nyelven programoznod és elegendő ETH-tel rendelkezned, hogy telepítsd a szerződést. Egy okosszerződés telepítés lényegében egy tranzakció, így ki kell fizetned a gázt, ahogy kifizetnéd egy egyszerű ETH átutalás esetében is. A gáz költségek azonban sokkal magasabbak a szerződés telepítés esetében.
Az Ethereum fejlesztőbarát okosszerződés nyelvekkel rendelkezik:
- Solidity
- Vyper
Azonban be kell őket fordítani telepítés előtt, hogy az Ethereum virtuális gép értelmezni és tárolni tudja majd a szerződést. Többet a fordításról
Összeilleszthetőség
Az okosszerződések nyilvánosak az Ethereumon, így nyílt API-ként is tekinthetünk rájuk. Ez azt jelenti, hogy meghívhatsz más okosszerződéseket a te szerződésedben, hogy nagymértékben kiterjeszthesd a lehetőségeket. A szerződések még más szerződéseket is telepíteni tudnak.
Tudj meg többet az okosszerződés összeilleszthetőségről.
Korlátok
Az okosszerződések önmagukban nem képesek információt lekérni a "külvilági" eseményekről, mivel nem tudnak HTTP kérvényeket küldeni. Ez a design szerinti külső információkra való támaszkodás veszélyeztetheti a biztonság és a decentralizáció szempontjából fontos konszenzust.
Az orákulumok használata megoldást nyújt ezen probléma megoldására.
Okosszerződés anyagok
OpenZeppelin Contracts - Library biztonságos okosszerződés fejlesztéshez.
DappSys - Biztonságos, egyszerű, flexibilis okosszerződés építőelemek.
További olvasnivaló
- Okosszerződések: A blokklánc technológia, mely leváltja az ügyvédeket – Blockgeeks
- Okosszerződés fejlesztés bevált gyakorlatai – Nov 10, 2019 - Yos Riady