SegWit nadogradnja, jednostavno objašnjeno

Šta je SegWit, zašto je pre 2017. neko treći mogao da promeni oznaku tuđe transakcije, zašto je ista uplata sa bc1q adrese jeftinija i kako je broj verzije otvorio put Taprootu.

Sadržaj

Najvažnije u nekoliko reči:

  • SegWit je izmena pravila Bitcoina iz 2017. Potpis je izašao iz dela transakcije po kome se računa njena oznaka (ID).
  • Pre SegWita neko treći je mogao da promeni oznaku tuđe transakcije pre potvrde, a da ona i dalje plaća isti iznos istom primaocu. To je zbunjivalo novčanike i menjačnice i kvarilo nizove nepotvrđenih transakcija.
  • Bajtovi potpisa se pri merenju mesta u bloku računaju četiri puta manje. Zato ista uplata sa adrese bc1q zauzima 141 virtuelni bajt umesto 225 i plaća oko 37% manju naknadu.
  • SegWit je doneo adrese koje počinju sa bc1q. Imaju samo mala slova i cifre i kontrolni zbir koji otkriva greške u kucanju.
  • Pravila su dobila broj verzije, pa je Taproot 2021. mogao da dođe kao sledeća verzija.
  • Danas je dobro da tvoj novčanik daje adrese sa bc1q ili bc1p. Slanje na stare adrese sa 1 i 3 i dalje radi.

Kad pošalješ bitcoine, novčanik pokaže dug niz slova i cifara. To je oznaka transakcije. Po njoj transakciju prate novčanik, menjačnica i mempool dok ne uđe u blok. Do 2017. tu oznaku je mogao da promeni i neko ko nema tvoj ključ, a novac bi i dalje stigao gde treba.

SegWit (engl. Segregated Witness, izdvojeni potpisi) je izmena pravila koja je to sredila. Kako je uvedena kao soft fork i kako je aktivirana, objašnjava tekst Soft fork i hard fork.

Oznaka transakcije je heš cele transakcije

Oznaka transakcije, txid (engl. transaction ID), je dvostruki SHA-256 heš transakcije (BIP 141). Heš se promeni čim se promeni i jedan jedini bajt. Zato oznaka zavisi od svakog bajta transakcije.

Pre SegWita potpis je stajao u samom ulazu, odmah pored pokazivača na UTXO koji se troši. Oznaka je tako zavisila i od potpisa, a ne samo od toga ko kome koliko plaća.

Neko treći je mogao da promeni oznaku tuđe transakcije

Dva ista paketa u braon papiru, vezana istim kanapom, sa ceduljama na kojima piše 4417 i 9032

Isti potpis mogao je da se zapiše na više načina i svaki je prolazio proveru. Kod potpisa ECDSA, na primer, jedan njegov broj može da se zameni drugim, a potpis ostaje ispravan (BIP 62). Ko god je transakciju video pre bloka, čvor koji je prosleđuje ili rudar, mogao je da je prepiše u drugom obliku. Ulazi, izlazi i iznosi ostaju isti, a oznaka je nova.

To se zove malleability (promenljivost transakcije). U blok uđe samo jedna od dve verzije, a pošiljalac ne zna unapred koja.

Zamisli paket koji šalješ iz Kragujevca u Niš. Usput ga neko prepakuje i nalepi nov broj za praćenje. Unutra je isto i ide istom čoveku, ali ti ga tražiš po starom broju i ne nalaziš ga.

Šta je to kvarilo, navodi predlog BIP 62:

  • Pošiljalac ne prepoznaje svoju transakciju. Novčanik ili menjačnica koja isplatu prati po oznaci ne nalazi je u bloku, iako je novac stigao. Ko tada pomisli da isplata nije prošla i pošalje je ponovo, plati dvaput.
  • Trošenje kusura propada. Ako pošiljalac pre potvrde potroši kusur iz svoje transakcije, nova transakcija pokazuje na staru oznaku. Kad u blok uđe izmenjena verzija, nova transakcija više ne važi.
  • Na nepotvrđenu transakciju ne može bezbedno da se nadoveže druga. Takav niz je osnova kanala za plaćanje, pa i Lightning mreže (BIP 141).

Provera potpisa je rasla brže od same transakcije

Druga mana je bila u tome kako se potpis proverava. Za svaki potpis čvor hešira skoro celu transakciju. Transakcija sa dvaput više ulaza ima dvaput više potpisa, a svaki hešira dvaput više podataka. Posla je tada četiri puta više, pa on raste sa kvadratom broja ulaza (BIP 143).

Provera po starim pravilima

Prosečan računar iz 2015, isti 1 MB podataka.

  • Običan blok od 1 MB2 s
  • Jedna transakcija od 1 MB sa 5.569 provera potpisa25 s

Izvor: BIP 143, „Motivation“ (otvara se u novom prozoru), 2016, vreme provere na prosečnom računaru iz 2015.

BIP 143 daje primer sa računarom iz 2015. Blok od 1 MB proverava se oko 2 sekunde. Jedna transakcija od 1 MB sa 5.569 provera potpisa može da traje 25 sekundi. Ko bi pravio takve transakcije, usporavao bi svaki čvor koji ih proverava.

SegWit je doneo nov način potpisivanja. Delovi koji su isti za sve ulaze heširaju se jednom, pa posao raste samo onoliko koliko i broj ulaza (BIP 143).

SegWit je stigao usred spora o veličini bloka

Do 2017. blok je smeo da ima najviše 1 MB. Jedni su tražili veće blokove promenom granice, drugi su hteli da se pravila menjaju sporo i oprezno. SegWit su predložili Eric Lombrozo, Johnson Lau i Pieter Wuille. Sam predlog kaže da izdvojeni potpisi, kad se pri merenju bloka računaju manje, blok praktično povećavaju (BIP 141).

Deo onih koji su hteli veće blokove otišao je u avgustu 2017. na svoj lanac, Bitcoin Cash. Bitcoin je ostao na jednom lancu i sa SegWitom.

SegWit je potpis preselio pored transakcije

Potpis i javni ključ sada stoje u posebnom delu transakcije, koji se zove witness (podaci za proveru). Oznaka txid se računa kao i ranije, ali bez tog dela. Za celu transakciju, sa potpisom, postoji druga oznaka, wtxid (BIP 141).

Stara koverta od braon papira na stolu, sa posebnim džepom prišivenim spolja u kome stoji kartica sa potpisom

Potpis nije izbačen iz bloka. Rudar u prvu transakciju bloka upisuje zajednički heš svih wtxid oznaka, pa je i witness zaključan u lancu (BIP 141). Ne može da se promeni a da blok ne postane nevažeći.

Šta je ostalo od malleability? Potpis i dalje može da se zapiše drugačije, ali to menja samo wtxid. Oznaka txid ostaje ista kad su svi ulazi SegWit (BIP 141). Drugu oznaku može da napravi samo onaj ko ima ključ, tako što potpiše novu transakciju.

Šta pokriva oznaka transakcije

Ista uplata, jedan ulaz i dva izlaza. Zagrada ispod pokazuje šta ulazi u heš.

Pre SegWita, adresa sa 1Ulaz:UTXO koji troši + potpisIzlazi:primalac i kusurtxid: heš ulaza, potpisa i izlazaSa SegWitom, adresa sa bc1qUlaz:UTXO koji trošiIzlazi:primalac i kusurWitness:potpis i javni ključtxid: heš ulaza i izlaza, bez potpisawtxid: heš cele transakcije, sa potpisom

Sliku možeš da pomeraš levo-desno.

Izvor: BIP 141, „Transaction ID“ (otvara se u novom prozoru), 2015, šta pokrivaju txid i wtxid.

Ista uplata je postala jeftinija

Naknada se plaća po mestu u bloku, a kako se ono meri, objašnjava tekst Šta je UTXO? Ukratko, bajtovi iz witness dela računaju se jednom, a svi ostali četiri puta (BIP 141). Pre SegWita potpis je bio među ostalim bajtovima i plaćao je punu cenu.

Uzmimo običnu uplatu sa jednim ulazom i dva izlaza, jednim za primaoca i jednim za kusur.

Ista uplata, dve veličine

Jedan ulaz, uplata i kusur. Naknada se plaća po virtuelnom bajtu.

  • Sa adrese koja počinje sa 1225 vB0,0000225 BTC · 2.250 sat
  • Sa adrese bc1q141 vB0,0000141 BTC · 1.410 sat

Izvori: BIP 141 (otvara se u novom prozoru), 2015, težina i virtuelna veličina; BIP 144 (otvara se u novom prozoru), 2016, bajtovi SegWit transakcije; mempool.space, transakcija iz bloka 974.000 (otvara se u novom prozoru), otvoreno 1.11.2026, stara uplata od 225 bajtova i težine 900; mempool.space, transakcija iz bloka 972.500 (otvara se u novom prozoru), otvoreno 21.10.2026, SegWit uplata težine 561; mempool.space i NBS (kurs.resenje.org) (otvara se u novom prozoru), 21.10.2026, cena bitcoina i kurs evra za dinare. Naknada od 10 sat/vB je izmišljena. Dinari po ceni i kursu od 21.10.2026.

Sa stare adrese koja počinje sa 1 ta transakcija ima 225 bajtova i nema witness. Težina joj je 900 jedinica, a to je 225 virtuelnih bajtova. Takvih ima i danas, na primer ova iz bloka 974.000.

Sa adrese bc1q ista uplata ima 113 bajtova van witness dela i 109 u njemu. Težina je 113 × 4 + 109 = 561 jedinica, a to je 141 virtuelni bajt (primer iz bloka 972.500).

Prava veličina je skoro ista, 222 naspram 225 bajtova. Razlika je u tome koliko tih bajtova plaća punu cenu. Pri izmišljenoj naknadi od 10 satošija po virtuelnom bajtu stara uplata košta 0,0000225 bitcoina (2.250 satošija), a SegWit uplata 0,0000141 bitcoina (1.410 satošija). To je 0,0000084 bitcoina (840 satošija) manje, oko 37%, odnosno oko 74 dinara po ceni i kursu od 21.10.2026. Kad je naknada veća, razlika raste u istoj srazmeri.

Nove adrese: bc1q, a za prelaz adrese sa 3

SegWit je doneo nove vrste adresa. Kako se adresa prepoznaje po početku, piše u tekstu o ključevima i adresama.

  • Adresa sa bc1q je prava SegWit adresa. Daje najveću uštedu, ali na nju ne može da šalje program koji SegWit ne poznaje (BIP 173).
  • Adresa sa 3 može da nosi SegWit upakovan u stariju vrstu adrese. Na nju je mogao da šalje i stari program, pa je to bio oblik za prelaz (BIP 141, BIP 49). Ušteda je manja, jer deo podataka ostaje van witness dela.

Zapis bc1q adresa zove se bech32 (BIP 173). Stari zapis meša velika i mala slova, pa se teško prepisuje, kuca na telefonu i čita naglas. Zauzima i više mesta u QR kodu, a njegov kontrolni zbir ne garantuje da će greška biti otkrivena (BIP 173). Bech32 ima samo mala slova i cifre, a kontrolni zbir sigurno otkriva svaku grešku u najviše četiri znaka. Taproot adrese sa bc1p koriste malo izmenjen zapis, bech32m (BIP 350).

Broj verzije je otvorio put Taprootu

Svaki SegWit izlaz počinje brojem verzije, od 0 do 16 (BIP 141). SegWit iz 2017. je verzija 0. Za verzije od 1 do 16 pravila iz 2017. ne proveravaju ništa, jer su ostavljene za buduće izmene. Zato nova pravila mogu da dođu kao nova verzija, a da stara ne diraju.

Prvi je tu mogućnost iskoristio Taproot, kao SegWit verzija 1 (BIP 341). Iz te verzije dolaze adrese sa bc1p. Slovo q u bc1q i slovo p u bc1p su baš taj broj verzije, 0 i 1, zapisan jednim znakom (BIP 173).

Šta ti danas treba od SegWita

Danas ga koristi skoro svaka transakcija. U četiri bloka od 30.10. do 1.11.2026. (973.856, 973.928, 974.000 i 974.072) witness deo, SegWit ili Taproot, imalo je između 94% i 99% transakcija. To je naše brojanje podataka sa mempool.space, a ne objavljena statistika.

  • Ako ti novčanik daje adrese sa bc1q ili bc1p, SegWit već koristiš. Kako se bira novčanik, piše u tekstu Bitcoin novčanici.
  • Na adresu sa 1 ili 3 i dalje možeš da pošalješ. Ona važi kao i pre.
  • Bitcoini na tvojoj staroj adresi sa 1 ne nestaju. Samo trošenje sa nje plaća veću naknadu, pa je za nova primanja bolja nova adresa sa bc1q ili bc1p.

Šta iz ovoga sledi za tebe

Ključne lekcije:

  • Oznaka SegWit transakcije ne zavisi od potpisa, pa neko treći ne može da je promeni.
  • Potpis nije nestao. I dalje je u bloku, samo se pri merenju računa četiri puta manje.
  • Ista uplata sa adrese bc1q plaća oko 37% manju naknadu nego sa adrese koja počinje sa 1.
  • Broj verzije u SegWitu je razlog što je Taproot mogao da dođe kao nova verzija istih pravila.

Šta dalje?

Taproot je prva izmena koja je iskoristila broj verzije. Šta je doneo, zašto se Schnorr potpisi sabiraju i kako izlaz krije svoje skripte, objašnjava sledeći tekst, Taproot i Schnorr: potpis koji se sabira i skripte koje se ne vide.

Potpis je i dalje u bloku. Samo više ne određuje oznaku transakcije i ne plaća punu cenu mesta.

  1. SegWit nadogradnja, jednostavno objašnjeno

Tekst 8 od 23

Napredne teme