A blokklánc működése
Most, hogy megismertük a blokklánc alapjait, nézzük meg, hogyan működik a szolgáltatás a háttérben. Ezek az információk segítenek eldönteni, hogy a blokklánc működik-e a forgatókönyvhöz.
Hogyan történik az adatelosztás?
A mi forgatókönyvünk több céget is tartalmaz. Működtethetnénk egy központi adatbázist a tejtermék-feldolgozó cégnél. Azonban egyetlen résztvevő sem szeretne a központi hatóság lenni. Használhatunk egy blokkláncos elosztott tranzakciónaplót. A blokklánc használatával nincs szükség központi fennhatóságra. Emellett minden blokklánccsomóponttal rendelkező résztvevő rendelkezik egy-egy tranzakciónapló-példánnyal, így saját ellenőrzést és rendszerintegrációt végezhetnek. Az, hogy minden cég saját csomóponttal rendelkezzen, azonban nem követelmény. A csomópontok megoszthatók a partnerek között.
Minden csomópont további csomópontokhoz kapcsolódik a blokklánchálózattal. Például a Dalia Pelayo Farms, a fagylaltgyár és a fagylaltüzletek mind saját maguk által kezelt csomóponttal rendelkeznek. A Contoso West és a Contoso East különálló partnerek, amelyek azonos anyacéggel rendelkeznek. A Contoso egy csomóponttal rendelkezik. Nincs szükség egy-az-egyhez típusú kapcsolatra a többi cég csomópontjaival.
Állapotmódosítás
A blokklánc adatai az állapotot képviselik. Ezért működnek jól a digitális jogkivonatok (például a kriptovaluta) a blokklánccal. Ha a fizikai pénznemek tulajdonjogára gondolunk, egy pénzérme egyszerre csak egy ember zsebében lehet. Ha az érme a zsebében van, Ön a tulajdonosa. Ha az érmét egy barátjának adja, ő lesz a tulajdonosa. A mi esetünkben a szállítmányok végighaladnak az ellátási láncon. A termékre vonatkozó felelősséget tovább kell adni. Minket az alábbi adatok érdekelnek: a felelős fél, a hőmérséklet, valamint a termék megfelelősége.
A blokklánc tranzakciókkal módosítja az adatok állapotát egyik értékről a másikra. Tudnunk kell például, hogy a fagylaltot fagypont alatti hőmérsékleten tárolják-e. Fagylaltszállítmány esetén a hőmérséklet-érzékelő időszakosan jelentéseket készít a hőmérsékletről. A jelentett hőmérséklet egy tranzakció, amelyet az érzékelő a blokklánc tranzakciós csomópontjára küld.
A fagylaltos forgatókönyvben, ahol a szállítmány végighalad az ellátási láncon, a rendszer minden alkalommal elküldi a tranzakciót, amikor az állapot módosul. Az ábrán egy átlagos, a fagylaltgyárnak küldött szállítmány tranzakciói láthatók. Minden tranzakció módosítja a felelős felet vagy a hőmérsékletet. A tranzakciónapló aktuális állapota a sorrendben történt tranzakciókat mutatja.
Tranzakció küldésekor egy blokklánc tranzakciós csomópontjának küldi azt. Tegyük fel, hogy a Dalia Pelayo Farms tejszállítmány ad fel a Contoso West Shipping céggel. Dalia Pelayo Farms szállítmányozási rendszere egy tranzakciót küld a blokklánccsomópontnak. A tranzakció gazdáról a Contoso West Shippingre módosítja a szállítási felelősséget.
A blokklánc a tranzakciót a blokklánchálózaton küldi el. Minden csomópont kap egy másolatot a tranzakcióról.
A csomópontok feldolgozzák a tranzakciót, amely továbbra is ellenőrzést igényel egy megegyezéses mechanizmussal. A megegyezés konzisztenciát eredményez, és megbízhatóvá teszi az elosztott tranzakciónaplót.
Hogyan győződhetünk meg arról, hogy a tranzakciónapló adatai konzisztensek?
Egy elosztott hálózatban nehéz megállapítani, hogy mi valós, mert az adatváltozásoknak minden csomóponton meg kell történnie. Mi történik, ha a fagylaltgyár csomópontja nem kap kézbesítési tranzakciót? Honnan tudhatják, hogy elszállították a tejet a farmról? Mi történik, ha a szállítmányozó cég hűtőkocsija meghibásodik, a tej pedig megromlik? A szállítási cég módosíthatja a tranzakciónaplót, hogy ne őt terhelje a felelősség?
A blokklánc megegyezéses mechanizmussal ellenőrzi és hitelesíti az adatokat minden blokklánccsomóponton. A megegyezéssel minden központosított csomópont azonos állapotba kerül. Az érték vagy a felelősség átadásakor számít a sorrend. Ha például egy autó tulajdonjogát átruházza egy barátjára, ezt nem teheti meg egy munkatárssal is. Ezt a problémát double spendingnek nevezzük, és a megegyezéses mechanizmus rá a megoldás. A megegyezés gondoskodik a tranzakciók megfelelő sorrendjéről és a blokklánc sértetlenségéről. A megegyezés részeként a rendszer egy blokként ellenőrzi a tranzakciók egy csoportját, a hálózatnak pedig bele kell egyeznie, hogy a blokk a blokklánc része legyen.
Számos blokkláncmegegyezéses algoritmus létezik, például a proof of work, a proof of stake és a proof of authority. Minden algoritmus eltérő módon oldja meg a konzisztenciát. Egyszerűbben fogalmazva, a megegyezéssel az elosztott tranzakciónapló közös állapotra állítható.
Mi az a blokk?
A blokk a blokkláncon belüli adatfürtöt jelent, amely tranzakcióadatokat tárol. A blokkokban lévő tranzakciók száma általában időalapú. Az ábrán például egy olyan tranzakciókat tartalmazó blokk látható, amelyek az elmúlt 10 percben történek.
A megegyezésnek köszönhetően az ellenőrzött blokkok a blokkláncba kerülnek minden csomóponton. Mivel az összes csomópont azonos blokkokkal rendelkezik a láncban, a tranzakciónapló konzisztens marad a hálózaton. Ennek eredményeképpen minden csomópont ugyanazokat az ellenőrzött adatokat tartalmazza, egy közös sorrendben.
Hogyan győződhet meg arról, hogy a tranzakciónapló nem módosítható?
Jogosan gondolhatná, hogy ha Ön rendelkezik a csomópont tranzakciónaplója felett, módosíthatja a saját példánya adatait. Hogyan lehet tehát módosíthatatlan?
A blokklánc titkosítási kivonatot használ a blokkok közötti kapcsolat létrehozásához. A blokkok összekapcsolásával a tranzakciók sorrendjéről megegyezés születhet a megegyezéses algoritmusban. A titkosítási kivonat olyan algoritmus, amely tetszőleges méretű adatokat képez le egy rögzített méretű bináris reprezentációra. Erre tekinthetünk digitális ujjlenyomatként. A Bitcoin az SHA-256 kivonatoló algoritmust használja. Ha SHA-256 kivonatfüggvényt használ egy 100 oldalas dokumentumban, a függvény kimenete 256 bites kivonatérték. Ha csak egy karaktert módosít a dokumentumban, és újra generálja a kivonatot, a kimenet egy másik 256 bites kivonatérték. Most tegyük fel, hogy egy blokkot a kivonatoló függvény bemenetként adunk meg. Az eredmény egy egyedi kivonatérték lesz a blokk adataihoz.
A blokklánc a kivonatokkal állapítja meg, hogy módosultak-e a blokkok. Az előző blokk kivonatértékét a következő blokk kivonatában való feltüntetésekor a blokkok között egy kivonatlánc jön létre.
A blokklánc kivonatokkal bizonyítja, hogy az adatelőzmények nem módosultak, így nyújt megbízhatóságot. Az előző blokk kivonatának az új blokk létrehozásakor való belefoglalásával egy nem módosítható, adott sorrenddel rendelkező tranzakciólánc jön létre.
Ha a lánc egyik blokkja módosul, a későbbi blokkok kivonata eltérő lesz. Ennek eredményeképpen az ellenőrzés felfedi az eltérést.
Megbízható logika
A blokklánccal konzisztens és megbízható adatokat tárolhatunk. Hogyan adható hozzá olyan logika, amely minden csomóponton ugyanúgy fut?
A mi forgatókönyvünkben olyan logikára van szükség, amely a termék felelősségét egyik résztvevőről a másikra helyezi át. Emellett az IoT-hőmérséklet-érzékelő adataival meg kell tudnunk állapítani, hogy a hőmérséklet túl magas-e.
Egy decentralizált alkalmazás (DApp) egy elosztott számítástechnikai rendszer alkalmazása. Ebben a modulban az Ethereum blokkláncprotokoll használatára összpontosítunk. Az Ethereum DAppjait intelligens szerződéseknek nevezzük. Az intelligens szerződés olyan logikát tartalmaz, amelyet a rendszer a tranzakció részeként hajt végre. Az Ethereumban egy Solidity nevű programnyelvvel programozható a logika.
Az intelligens szerződéseket a rendszer üzembe helyezi a blokkláncon, és címként hivatkozik rájuk. Intelligens szerződés használatához egy példányt kell létrehoznia. Egy intelligens szerződés egy példánya állapotadatokat és programlogikát tartalmaz. A mi forgatókönyvünkben az intelligens szerződés példánya olyan adatokat tartalmaz, mint a felelős résztvevő, a hely, valamint a termék hőmérsékletének megfelelősége. Függvényekkel áthelyezhetjük a felelősséget, vagy telemetriai adatokat fogadhatunk a példányon a hőmérsékletről.
Amikor egy termék felelősségét áthelyezik egy másik félre, tranzakció megy végbe. Az intelligens szerződés logikája frissíti az állapotadatokat. A fagylaltos forgatókönyvben a fagylaltgyár szállítási rendszere létrehoz egy intelligensszerződés-példányt egy új fagylaltszállítmányhoz. A gyár szállítási rendszere egy tranzakciót küld, amely meghívja a TransferResponsibility függvényt, hogy az áthelyezze a szállítmány felelősségét a Contoso East cégre. A blokklánchálózat minden csomópontnak elküldi a tranzakciót. Az intelligens szerződés logikája minden csomóponton lefut.
Mi történik, ha a szállítás során a hűtőegység meghibásodik, a fagylalt hőmérséklete pedig fagypont fölé emelkedik? Az IoT-hőmérséklet-érzékelő szemmel tartja a fagylalt hőmérsékletét, és rendszeres tranzakciókat küld. Ha a hőmérséklet fagyás felett van, az intelligens szerződés logikája nem megfelelőként jelöli meg a szállítmányt.
Mivel a tranzakció egy blokklánc része, nem módosítható az a rekord, amikor a szállítmány nem megfelelővé vált. A fagylaltüzlet így megtagadhatja az átvételt, és elkerülheti az élelmiszer-biztonsággal kapcsolatos problémákat.
A blokklánchoz hasonlóan az intelligens szerződés sem módosítható. Az üzembe helyezés után a logika nem módosítható. Ezért biztos lehet abban, hogy az intelligens szerződés logikája mindig ugyanúgy fut len minden csomóponton. A csomópont-módosításokhoz egy új címen üzembe helyezett új intelligens szerződésre van szükség.