Szövet(ség) a Bitcoinban I.
-
Szerződr. Varsányi Károly
-
Kommentek0 Komment
-
Kategória
A következő poszt elképzelhető, hogy kicsit „Aprópénz az elmém”, azaz „Change my mind” jellegű lesz sokaknak, már, ami a nyelvezetét illeti, ezért felkértem Szegő Dani Barátomat, hogy kicsit lektorálja a posztot, hogy közérthetőbb legyen. Ő meg is tette ezt, volt pár javaslata, köztük az is, hogy a „szövetség” szó helyett használjam a „megállapodás” szót, amit a – cím kivételével – meg is teszek. Jöjjön akkor a poszt.
Előzetesen tisztázni kell az ún. operációs kód fogalmát. Az opkódok (műveleti kódok) a Bitcoin szkriptnyelvének, a Scriptnek lényeges részét képezik, lehetővé téve a műveleteket a Bitcoin hálózaton.
Az opkódok olyan utasítások, amelyek lehetővé teszik a tranzakciós feltételek beállítását a Bitcoin protokollon, és mindegyik műveleti kódot egy adott parancs végrehajtására terveztek a hálózaton.
A Bitcoin programozási nyelve, a Bitcoin Script lehetővé teszi az emberek számára, hogy opkódokat használjanak különböző műveletek végrehajtására. A Bitcoin Script egy egyszerű programozási nyelv, amelyet arra terveztek, hogy korlátozza funkcionalitását, és megakadályozza a hibavégrehajtást és a végtelen hurkok képződést. Azaz segít abban, hogy a bonyolult műveletek ne lassítsák le a hálózatot.
Az opkódok jelentik a Bitcoin szkriptelési képességeinek alapját, amelyek lehetővé teszik az automatizált, testreszabható tranzakciókat. A felhasználók beírhatják a kódot szóparancsként az „OP” előtaggal.
Digitális valutaként a Bitcoin programozható pénz, és az opkódok segítségével különféle parancsokat programozhatunk. A Bitcoin szerkezete lehetővé teszi a felhasználók számára, hogy akár 256 műveleti kódot definiáljanak, amelyekhez 0 és 255 közötti szám van hozzárendelve. Jelenleg ezeknek kevesebb mint fele aktív.
Ugyan a Bitcoin nem arról híres, hogy képes intelligens szerződéseket és tetszőleges szkripteket futtatni, de azt lehetővé teszi, hogy bonyolult költési feltételek mellett történjen meg egy Bitcoin-tranzakció.
Minden Bitcoin cím tartalmaz ugyanis egy sor költési feltételt. Ezek közül a legegyszerűbb az, hogy „a tranzakció feladója birtokolja-e az ehhez a címhez tartozó privát kulcsot”. Vannak más költési feltételek is, például az időzár, amely csak bizonyos idő elteltével engedélyezi a költést – vagy a multisig, amely több privát kulcshoz való hozzáférést igényel egy tranzakció elköltéséhez.
Noha a költési feltételek manapság már elég erőteljesek lehetnek, lényegében mindegyik ugyanazt csinálja: ha a költési feltétel teljesül, a bitcoint a küldő által választott módon el lehet költeni.
Az ún. megállapodás vagy szövetség (covenant) avagy konszenzus kód, olyan költési feltétel, amely új lehetőségeket (azaz további korlátozásokat) vezet be a Bitcoin-tranzakciók elköltésének módjait illetően, azaz a a meglévő Bitcoin szkripteket „fejleszti” tovább, azzal például, hogy korlátozza az UTXO „elköltését”.
A felhasználó csak előre meghatározott szabályok szerint hajthat végre tranzakciókat, ezzel segítve bizonyos üzleti megállapodásokat.
Egyszerű példaként egy Bitcoin-cím tartalmazhat olyan megállapodást, azaz (konszenzus) kódot, amely csak a bitcoin egy másik, előre meghatározott címre történő elküldését teszi lehetővé. Azt is korlátozhatja, hogy mely UTXO-k költhetők el erről a bitcoin címről.
A Bitcoin kontextusában a megállapodás leghasznosabb definíciója az, amikor az UTXO scriptPubKey-je korlátozza a scriptPubKey-t az UTXO-ra fordított tx-költés kimenetében. (forrás: Anthony Towns)
A megállapodás tehát általában csak a szkriptek engedélyezési listáján szereplő készletre engedi meg a költést, például a bitcoinok visszajuttatását a felhasználó saját egyenlegére vagy egy olyan címre történő költést, amely csak egy idő után teszi lehetővé a tetszőleges címre történő költést.
Nézzünk meg most egy olyan javaslatot, amelynek célja ennek a funkciónak az engedélyezése:
Sablon ellenőrzése (OP_ CTV: Check Template Verify).
A CTV egy javaslat a megállapodások bevezetésére a Bitcoin-szkriptbe. Lehetővé teszi a költési feltételek ellenőrzését, azaz hogy a tranzakciós adatok egyeznek-e a megállapodásban meghatározottakkal? Ezt úgy teszi, hogy kivonatolja a tranzakciós adatok egy részét, és összehasonlítja azokat a szerződésben előre meghatározott hash értékekkel.
Mivel ez a tranzakció-kivonat csak a bemenetek, a kimenetek, a verzió és a zárolási idő felhasználásával kerül kiszámításra, ezek előre kiszámíthatók. A CTV megállapodással a Bitcoin-cím kötelezettséget vállal arra, hogy a jövőben csak az előre kiszámított tranzakciókat küldi el.
Ez azt jelenti, hogy mielőtt tranzakciókat fogadna ezen a Bitcoin-címen, pontosan tudnia kell, hogyan fogja ezeket elkölteni. Ez egyaránt tud előnyökkel (de hátrányokkal is) járni. Van aki az egyiket nézni, mások pedig a másikat látják.
Rekurzív megállapodások
A rekurzív megállapodás olyan költési feltétel, amely megköveteli, hogy a következő fogadó címnek is tartalmaznia kell ezt a költési feltételt. Példa erre az egyesült államokbeli háztulajdonosok egyesületei, amelyek megkövetelik, hogy egy ház tulajdonosa csak olyan valakinek adja el a házát, aki a házat az illetékes háztulajdonosok egyesületében szerepelteti továbbra is, ami viszont ugyanilyen állapothoz kötődik, tehát ebben az egyesületben lévőnek kell lennie a vevőnek is.
A Bitcoin közösség tagjai figyelmeztettek a rekurzív megállapodásokra, mivel attól tartanak, hogy lehetővé tehetik az AML- és KYC-szabályok invazív gyakorlatait, például egy rekurzív megállapodás, amely csak bizonyos, a KYC-információkkal társított bitcoin-címeket helyezi el az engedélyezési listán.
A CTV nem teszi lehetővé a rekurzív egyezményeket, mivel megköveteli, hogy minden jövőbeni tranzakciós adatot (amely a megállapodásban szerepel) ismerni kell a bitcoin cím létrehozásakor. Egy másik ilyen eljárás a CheckTXHashVerify viszont engedélyezheti a rekurzív megállapodást.
A megállapodások sokféleképpen használhatók lennének a Bitcoinban. Nézzünk meg ezek közül hármat, azzal, hogy jelenleg nincsenek módszerek a megállapodások/értéktárolók, stb láncon belüli érvényesítésére és sokan ellenzik is ezek használatát.
(Pl. az ún. OP_CAT (lásd még: II. rész) esetében az összefűzött értékek bizonyos költési feltételeket érvényesítenek, amelyek lehetővé teszik az értéktárakat és a megállapodásokat. Hogy mi is az az OP-CAT ezt egy következő blogposztban fogjuk megírni.)
Trezorok vagy értéktárak (OP_VAULT)
Az egyik módja annak, hogy a saját felügyeletet biztonságosabbá és praktikusabbá tegyük, a trezorok. A trezor egy hidegtároló bitcoin cím, amely csak egy előre meghatározott bitcoin címre tud küldeni. Ehhez az előre meghatározott bitcoin címhez időzár tartozik, ami azt jelenti, hogy csak bizonyos idő elteltével költhet. Az időzár mellett az előre meghatározott bitcoin címnek van egy ún. megállapodása (konszenzus kódja) is, amely lehetővé teszi a cím visszaküldését a hideg címére anélkül, hogy megvárná az időzárat.
A trezor vagy értéktár tehát egyfajta megállapodás, amely olyan költési feltételeket hoz létre, amelyekhez két különböző tranzakciónak két különálló blokkban kell megjelennie ahhoz, hogy a felhasználó elkölthesse a kapcsolódó bitcoint.
Ennek a kialakításnak a használatával lehetőség nyílik olyan pénztárca-megoldásra, amely egy előre meghatározott időzáron belül képes „törölni” a rosszindulatú tranzakciókat. Ha az időzárás az ideiglenes címen például 7 nap, a felhasználónak egy hete van arra, hogy ténylegesen „törölje” azt a kimenő tranzakciót, amelyet nem szándékozott elküldeni.
Torlódások szabályozása (OP_CHECKTEMPLATEVERIFY)
Egy másik érdekes szolgáltatás, amelyet a megállapodások engedélyezhetnek, a torlódások szabályozása. A torlódások szabályozásával a Bitcoin-felhasználók magasabb díjjal küldhetnek köztes tranzakciót, amely zárol egy jövőbeli tranzakciót. Ez például azt jelentheti, hogy magas díjak idején, amikor egy bitcoin tőzsdének általában nagy tranzakciót kell küldenie sok drága kimenettel, ehelyett csak egy kimenettel küldhet tranzakciót, amely arra kötelezi magát, hogy számos kimenetnek vagy fogadónak küld majd pénzeszközt ha a díjak alacsonyabbak lesznek.
Az ún. Csatornagyárak.
A Lightning hálózat méretezésére szolgáló „szövetségi” megoldás. A csatornagyárak villámcsatornák, amelyeket több mint 2 fél oszt meg. Lehetővé teszik a csatornagyár résztvevői számára, hogy csatornákat nyissanak meg egymás között anélkül, hogy további láncon belüli tranzakciókat kellene küldeniük.
Egy 3 résztvevős csatornagyárban minden résztvevő egy láncon belüli tranzakciót küldhet és 2 villámcsatornát fogadhat. Egy 4 résztvevős csatornagyárban ez résztvevőnként 3 villámcsatornára nő, és így tovább. A csatornagyárak csökkentik a láncon belüli lábnyomot azáltal, hogy több Lightning csatornát tesznek lehetővé láncon belüli tranzakciónként.
Vége az I. résznek.
Felhasznált irodalom: bitbox.swiss/blog
Leave A Comment Válasz megszakítása
Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .
Üdvözöljük a blokklánc jogász weboldalán
Legfrissebb bejegyzéseink
Címkefelhő
Legfrissebb hozzászólások
Archívum
- 2025. január (21)
- 2024. december (25)
- 2024. november (26)
- 2024. október (23)
- 2024. szeptember (26)
- 2024. augusztus (27)
- 2024. július (25)
- 2024. június (16)
- 2024. május (21)
- 2024. április (23)
- 2024. március (24)
- 2024. február (25)
- 2024. január (24)
- 2023. december (24)
- 2023. november (28)
- 2023. október (13)
- 2023. szeptember (26)
- 2023. augusztus (13)
- 2023. július (15)
- 2023. június (15)
- 2023. május (12)
- 2023. április (11)
- 2023. március (21)
- 2023. február (12)
- 2023. január (19)
- 2022. december (14)
- 2022. november (20)
- 2022. október (15)
- 2022. szeptember (13)
- 2022. augusztus (10)
- 2022. július (13)
- 2022. június (12)
- 2022. május (17)
- 2022. április (14)
- 2022. március (8)
- 2022. február (9)
- 2022. január (17)
- 2021. december (12)
- 2021. november (15)
- 2021. október (15)
- 2021. szeptember (20)
- 2021. augusztus (20)
- 2021. július (18)
- 2021. június (32)
- 2021. május (26)
- 2021. április (32)
- 2021. március (24)
- 2021. február (21)
- 2021. január (29)
- 2020. december (26)
- 2020. november (25)
- 2020. október (31)
- 2020. szeptember (25)
- 2020. augusztus (23)
- 2020. július (21)
- 2020. június (14)
- 2020. május (12)
- 2020. április (13)
- 2020. március (14)
- 2020. február (7)
- 2020. január (10)
- 2019. december (16)
- 2019. november (12)
- 2019. október (14)
- 2019. szeptember (15)
- 2019. augusztus (18)
- 2019. július (20)
- 2019. június (25)
- 2019. május (21)
- 2019. április (20)
- 2019. március (23)
- 2019. február (18)
- 2019. január (24)
- 2018. december (19)
- 2018. november (22)
- 2018. október (21)
- 2018. szeptember (25)
- 2018. augusztus (19)
- 2018. július (19)
- 2018. június (18)
- 2018. május (24)
- 2018. április (21)
- 2018. március (19)
- 2018. február (20)
- 2018. január (27)
- 2017. december (22)
- 2017. november (23)
- 2017. október (22)
- 2017. szeptember (23)
- 2017. augusztus (30)
- 2017. július (26)
- 2017. június (23)
- 2017. május (23)
- 2017. április (9)