Mi az a Segregated Witness (SegWit)?

Kezdő útmutató a Bitcoin SegWit-hez 💭
A Segregated Witness (SegWit) a Bitcoin forráskódjának frissítése volt, amelyet 2017. augusztus 1-jén hajtottak végre.
Annak ellenére, hogy sokan a Bitcoin blokklánc fejlesztésének tekintették, a SegWit erős ellenállásba ütközött, ami megosztotta a közösséget.
A probléma középpontjában a bányászok jövedelmezősége és a hálózati fejlesztők azon érdeke állt, hogy a Bitcoint olcsóbbá és gyorsabbá tegyék.
A feszültség szakadást okozott a közösségen belül, ami a hálózat első felhasználó által aktivált soft forkjához és egy ellenséges szétváláshoz vezetett. A megosztottság új Bitcoin-forkolt projektek sorát hozta létre, köztük a Bitcoin Cash-t.
A mai napig a SegWit a Bitcoin történetének egyik legvitatottabb eseménye. Ugyanakkor a protokoll hosszú távú életképessége szempontjából az egyik legfontosabb frissítésnek is bizonyult.
Évente sokan a Bitcoin közösségben augusztus 1-jét „Bitcoin függetlenségi napként” ünneplik. Ez az esemény azt az alkalmat jelöli, amikor az emberek akarata győzött a bevett bitcoin bányászati vállalatok centralizált érdekei ellen.
Nézzük meg ezeket az eseményeket, ahogy történtek, és fejtsük fel a SegWit mögötti történelmet.
Bitcoin a SegWit előtt ⏮️
A SegWit aktiválása előtt a Bitcoin blokkkapacitása sok éven át változatlan maradt. A blokkkapacitás az adott blokkban rögzíthető tranzakciók maximális számát jelenti.
Amikor a Bitcoin 2009-ben elindult, alkotója(i), Satoshi Nakamoto nem állítottak be paramétereket arra vonatkozóan, hogy mekkora lehet a bitcoin blokkok mérete.
Azonban 2010-ben Nakamoto titokban hozzáadott egy 1 megabájtos (MB) blokkméret-korlátot a többi Bitcoin közreműködő jóváhagyása nélkül.
Sokan úgy vélték, Nakamoto azért vezette be a korlátot, hogy megakadályozza a jövőbeli elosztott szolgáltatásmegtagadási (DDoS) támadásokat, amelyek hatással lehetnek a hálózatra.
Ez a blokkkapacitásra vonatkozó rögzített korlát nem kívánt hatással volt a Bitcoin skálázhatósági potenciáljának korlátozására több szempontból is.
Alacsony átviteli sebesség és lassú tranzakciós idők
Csak korlátozott számú tranzakció fér el a viszonylag kicsi, 1 MB-os blokkba, amelyet a Bitcoin most elfogadott. Ez a kis kapacitás azt jelentette, hogy a Bitcoin hálózat másodpercenként csak körülbelül 2–3 bitcoin (BTC) tranzakciót tudott feldolgozni – ami messze elmarad a hagyományos digitális fizetési hálózatoktól, amelyek másodpercenként több tízezer tranzakciót is képesek feldolgozni.
Ezenkívül ahhoz, hogy egy tranzakcióblokk érvényesnek minősüljön a bitcoin bányászati folyamat részeként, hat megerősítést kell kapnia. Más szóval, hat új blokkot kell hozzáadni a blokklánchoz a szóban forgó blokk után, mielőtt az véglegesítésre kerül. Tíz perces átlagos blokkidővel ez azt jelenti, hogy a bitcoin blokk megerősítések körülbelül egy órát vesznek igénybe.
Abban az időben, amikor csak néhány „Cypherpunk” kriptográfus volt tisztában a bitcoinnal, ez nem feltétlenül volt hatalmas probléma. De ha a Bitcoin hálózat globális „peer-to-peer elektronikus készpénzrendszerré” akart válni, ahogy Satoshi elképzelte a Bitcoin fehér könyvében, akkor változásokra volt szükség.
Magas díjak
A Bitcoin alacsony átviteli sebessége, amelyet a kis blokkkapacitás korlátozott, azt jelentette, hogy a díjak is viszonylag sokkal magasabbak voltak, mint ma.
Íme egy egyszerű módja a probléma megértésének. Képzelje el, hogy egy színházi előadás után a tömegben áll. Mindenki a színházból egyszerre akar taxival hazamenni. Ha sok taxi van a közelben, mindenkinek könnyű lesz hazajutnia. De ha csak néhány taxi van, az emberek megpróbálhatnak magasabb árat fizetni a taxisoknak, hogy ösztönözzék a sofőrt, hogy először őket vigye haza. A kereslettől függően a taxik ára jelentősen megemelkedhet a normál díjhoz képest.
A Bitcoin díjai ugyanazon kereslet-kínálati elvek alapján működnek. Ha sokan szeretnék, hogy tranzakcióikat egyszerre dolgozzák fel, egyesek dönthetnek úgy, hogy több díjat fizetnek, hogy a bányászok hamarabb feldolgozzák a tranzakciójukat. A Bitcoin hálózat nagy kihasználtságú időszakaiban a torlódás versenyt eredményezhet a felhasználók között, ami a tranzakciós díjak meredek emelkedését okozhatja.
Tranzakciós malleabilitás
A Bitcoin blokkok működésének egy másik sajátos árnyalata a tranzakciós malleabilitás volt. A SegWit előtt az emberek megváltoztathatták egy tranzakció azonosítóját, mielőtt az elegendő megerősítést kapott volna a blokkláncon.
Egy adott tranzakcióval kapcsolatos információk hash-függvényen való átfuttatásával tranzakcióazonosító jön létre. A hash-függvényekről többet megtudhat a Hogyan használnak a kriptovaluták kriptográfiát? című cikkünkből.
De az egyszerűség kedvéért ezeket a tranzakcióazonosítókat digitális ujjlenyomatoknak tekintheti, amelyek a blokkláncon lévő tranzakciók azonosítására és hivatkozására szolgálnak.
A tranzakcióazonosító megváltoztatása teljesen új hash-t hoz létre, ami néha összezavarhatja a blokklánc kliens szoftverét. Minden csomópont kliens szoftvert futtat a blokklánccal való interakcióhoz és fontos szerepek, például az adatellenőrzés elvégzéséhez.
Ez a malleabilitási hiba a Bitcoin kódjában megnyitotta az utat a rosszindulatú támadások előtt. A tranzakciós malleabilitási támadások egyik leghírhedtebb példája a 2014-es Mt. Gox tőzsdei hack volt – amely a történelem legnagyobb bitcoin hackjeként ismert.
Szakértők jelentése szerint egy hacker, vagy hackerek csoportja leürítette az Mt. Gox tőzsde bitcoin tárcáját. Ezt részben úgy tették, hogy megváltoztatták a kifizetéseik tranzakcióazonosítóját.
A tranzakciós malleabilitási támadás azt a látszatot keltette, mintha a kifizetéseket nem erősítették volna meg a blokkláncon, holott valójában megerősítették.
Ez a sebezhetőség, más támadási vektorokkal párosulva, lehetővé tette a hacker(ek) számára, hogy több mint 840 000 BTC-t szívjanak le a tőzsdéről.
Milyen fejlesztéseket hozott a SegWit? ⚙️
Pieter Wuille, a Bitcoin egyik közreműködője először 2015-ben mutatta be a SegWit frissítést egy Bitcoin Hong Kong eseményen.
Megoldása három szempontból is innovatív volt. A SegWit javította a Bitcoin skálázhatóságát, megszüntette a malleabilitást, és lehetővé tette a csomópontok számára az új tranzakciós struktúra elfogadását. A legjobb az egészben, hogy ezt a hálózat hard forkja nélkül is meg lehetett valósítani.
Külön digitális aláírás és tranzakciós információk
Wuille javaslata növelte a Bitcoin blokkkapacitását azáltal, hogy a „witness” adatokat „szegregálta” egy blokkból, és áthelyezte a coinbase tranzakcióba. A coinbase tranzakciók az első tranzakciók minden új Bitcoin blokkban. A coinbase tranzakció felelős az újonnan vert kriptovaluta forgalomba hozataláért, mint jutalom a bitcoin bányászati folyamatért.
Azok a bányászok, akik sikeresen megnyerik a Bitcoin kriptográfia alapú proof-of-work versenyét, ezeket az újonnan vert tokeneket „blokkjutalmaként” kapják.
A witness adatok, más néven ScriptSig vagy Unlocking Script, digitális aláírás és nyilvános kulcs információkat tartalmaznak, amelyek szükségesek az átutalt bitcoin feloldásához. A SegWit frissítés egy külön „witness mezőt” vezetett be a tranzakció ScriptSig részéhez.
A digitális aláírási információk tranzakciós beviteli mezőtől való külön feldolgozásával több hely maradt a tranzakciók számára minden blokkban.
Több tranzakció blokkonként magasabb tranzakciós átviteli képességeket jelent. Így másodpercenként 2-3 tranzakció helyett a Bitcoin másodpercenként 7-10 SegWit tranzakciót képes feldolgozni. A megnövekedett kapacitás alacsonyabb díjakat is jelent, mivel a Bitcoin blokklánc nagyobb tranzakciós volument képes kezelni.
A szétválasztás ellenére fontos megjegyezni, hogy a csomópontok továbbra is feldolgozzák mind a tranzakciós adatokat, mind a witness adatokat a láncon. Nincs oldallánc vagy Layer 2 protokoll használatban.
Blokksúly
A SegWit előtt a bányászok a bitcoin blokkokat méret (bájt) alapján mérték. Ez a rendszer jól működött, amikor a blokkok witness és tranzakciós adatokat is tartalmaztak, de problémákba ütközött, amikor ezeket szétválasztották.
Ennek leküzdésére a frissítés bevezetett egy blokksúly nevű metrikát a blokkok méretének kezelésére.
Ezzel a koncepcióval minden 1 megabájtos blokk 4 000 000 súlyegységből (WU) áll. Minden tranzakció súlyt kap a következő képlet alapján:
Alap tranzakcióméret bájtban (witness adatok nélkül) * 3 + Teljes tranzakcióméret bájtban.
A witness mező adatainak eltávolításával a számításból a SegWit tranzakciók sokkal kisebb súlyúak. Másrészt egy nem SegWit tranzakció továbbra is tartalmaz witness adatokat. Ez azt jelenti, hogy a nem SegWit tranzakciók mindig 4-szer többet nyomnak, mint a SegWit tranzakciók.
Ez a koncepció elméletileg 1 MB-ról 4 MB-ra növeli a bitcoin blokk méretét, ha egy blokk szinte teljes egészében witness adatokból áll. Ez azonban a gyakorlatban nem lehetséges.
A súlyozott rendszer fő előnye, hogy ösztönzi a bányászokat, hogy főként SegWit tranzakciókat tartalmazó blokkokat dolgozzanak fel. Feltételezve, hogy a SegWit tranzakciók ugyanazokat a díjakat viselik, mint a hagyományos blokkok, egy bányász sokkal több SegWit tranzakciót tud feldolgozni blokkonként. Minél több tranzakciót dolgoznak fel blokkonként, annál több díjat keresnek.
Win-win helyzet mindkét fél számára. Vagy legalábbis azt gondolná az ember.
Nincs több tranzakciós malleabilitási probléma
A SegWit struktúra szerint a hash-elt tranzakcióazonosító csak a tranzakciós információkat tartalmazza, nem pedig a witness mező adatait.
Ez a változás eltávolítja a bitcoin tranzakció módosítható komponensét, amely korábban lehetővé tette a malleabilitási támadásokat.
Ennek eredményeként lehetővé váltak a másodlagos skálázási megoldások, mint például a Bitcoin Lightning Network.
Miért volt ellentmondásos a SegWit? 🤔
Sokan a fejlesztői közösségben úgy érezték, hogy a SegWit nem ment elég messzire a Bitcoin skálázhatósági problémáinak kezelésében.
A SegWit aktiválása elleni fő érvek a következők:
- A Bitcoin megnövekedett, másodpercenkénti 7-10 tranzakciós átviteli sebessége még mindig messze nem elég magas egy decentralizált, globális fizetési rendszerhez.
- A díjak viszonylag magasak maradnának, ami pénzügyileg kivitelezhetetlenné tenné az olyan dolgokat, mint a mikrotranzakciók.
- A bányászok továbbra is feldolgozhatják a hagyományos tranzakciós blokkokat, ami azt jelenti, hogy a malleabilitás továbbra is fenyegetést jelent.
- Később kiderült, hogy a SegWit semlegesítené a Bitmain ASICBOOST mechanizmusát; egy kihasználást, amelyet a bányászati rig hatékonyságának jelentős növelésére használtak.
Körülbelül egy évvel Wuille javaslata után ő és más Bitcoin Core fejlesztők, köztük Eric Lombrozo, elkészítették a kódot, hogy az élőben megjelenjen a közelgő Bitcoin Core 0.13.1 frissítésben. Az egyetlen hátralévő lépés a SegWit aktiválásához az volt, hogy a bányászok elkezdjék feldolgozni az új SegWit blokkokat.
A megvalósítás megerősítéséhez az összes bitcoin bányász több mint 95%-ának támogatnia kellett volna a SegWit-et az indítás első két hetében – ami jelentős akadályt jelentett az akkori körülmények között.
Felhasználó által aktivált soft fork
Mondanom sem kell, hogy a nagy bányászati vállalatok, mint például a Bitmain, továbbra is elégedetlenek voltak a javasolt változtatásokkal, és megtagadták a SegWit aktiválásának támogatását.
2017 elején egy „Shaolinfry” nevű álnéven szereplő fejlesztő felvetette annak lehetőségét, hogy a Bitcoin csomópontok soft forkot kényszerítsenek ki egy online bitcoin-dev posztban.
Felhasználó által aktivált soft forkot még soha nem próbáltak ki a Bitcoin hálózaton, de ez lehetővé tette volna a fejlesztők számára, hogy a SegWit-et a bányászok körülbelül 51%-os támogatásával keresztülvigyék. Azok, akik megtagadták az új blokkok támogatását, kockáztatták, hogy blokkjaikat a csomópontok elutasítják. A megoldás nem volt kockázatmentes. Ha a SegWit nem kapott volna elegendő támogatást a bányászoktól, az elkerülhetetlenül láncszakadáshoz vezetett volna.
Azok, akik ellenezték a SegWit-et, ehelyett egy másik SegWit 2X hard fork frissítést javasoltak. Egy olyat, amely implementálná a SegWit-et és 2 MB-ra növelné a Bitcoin blokkméretét.
Az előbbi frissítéssel ellentétben a SegWit 2X nem lett volna visszafelé kompatibilis a Bitcoin kliens korábbi verzióival. Ezek a változások azt jelentették, hogy a csomópontoknak frissíteniük kellett volna szoftverüket, hogy továbbra is működhessenek a hálózaton.
SegWit és a New York-i megállapodás 🗽
Az iparág vezető vállalatai találkoztak a Consensus 2017-en, és közösen aláírtak egy memorandumot, amelyet „New York-i Megállapodásnak” neveztek. Ez a dokumentum tartalmazta a SegWit nyári bevezetésének terveit és a Bitcoin blokkméretének novemberig 2 MB-ra történő növelését.
November előtt Shaolinfry két Bitcoin Improvement Proposal-t (BIP) dolgozott ki; a BIP148-at és a BIP149-et. Az előbbi egy kemény és gyors megoldást képviselt; jelezze a SegWit blokkok támogatását, különben a csomópontok elutasítják a blokkjait. Az utóbbi hosszabb időt biztosított a bányászoknak a bekapcsolódásra, a következő év júliusára tűzve ki az aktiválási határidőt.
Ahogy közeledett a dátum, James Hillard, a Bitmain Warranty mérnöke új BIP-et javasolt; a BIP91-et. Megoldása arra törekedett, hogy a SegWit 2X és a BIP148 is kompatibilis legyen egymással. Miért kockáztatnánk láncszakadást két versengő SegWit frissítés miatt, ha mindkettőt kompatibilissé tehetjük?
Augusztus 1-jén elegendő bányászati támogatás szilárdította meg a SegWit aktiválását. A New York-i Megállapodás második szakasza azonban nem kapott ugyanilyen támogatást.
A Bitcoin blokkméretének 2 MB-ra történő növelésének kudarca a Bitcoin Cash (BCH) létrejöttéhez vezetett – egy új, a Bitcoin blokkláncból elágazó projekthez.
A Bitcoin függetlenségi napjának jelentősége
A SegWit bevezetése és a közösség döntése a blokkméret-növelés elutasításáról mérföldkőnek számító pillanatot jelentett a szélesebb Bitcoin közösség számára.
A SegWit megmutatta a konszenzus fontosságát a Bitcoin blokklánc változásai tekintetében, valamint a bitcoin által kínált hatalom decentralizációjának mértékét.
Egyetlen személy sem volt képes átvenni a hálózat irányítását és keresztülvinni a javaslatát.
Ehelyett a közösség vitatkozott, iterált, és folytatta a konszenzus elérésének hosszú folyamatát kollektív csoportként – nem egyetlen személy irányítása alatt.
Kezdje el a Bitcoin vásárlását
Most, hogy mindent megtudott a SegWit-ről, készen áll arra, hogy folytassa kripto utazását és bitcoint vásároljon?
Tekintse meg a Kraken Learn Center útmutatóját a Hogyan vásároljunk Bitcoint (BTC) című cikkünkhöz, és regisztráljon egy fiókot a Kraken-nél még ma.