Ma is tanultam valamit: Bitcoin CPFP!

Előszó: Tudom-tudom… nem pont egy ilyen teki cikkel kéne megünnepelni, hogy újabb ATH-n vagyunk… De most éppen ez volt a csőben. Majd jönni fog hamarosan általánosabb és to-the-moonosabb cikk is, de továbbra is törekednék arra a blog kapcsán, hogy az agy dopamin termelő receptorai mellett azért a szürkeállományt is tudjam stimulálni.

Bár az elmúlt években sokat javult a viszonyom az Ethereummal, de azt továbbra sem állítanám, hogy szoros barátságban lennénk. Itt a blogon is sokszor értekeztem már az olyan nonszensz dolgokról, mint a trackelhetetlen belső tranzakciók, vagy az előre azonosíthatatlan contract címre történő transfer, stb. Ezekről a témákról még 2019 februárban írtam alaposabban itt: -link-

Egy olyan dolog volt eddig az Ethereum kapcsán, amire viszont – hithű Bitcoinosként – kifejezetten féltékenyen tekintettem: Ez pedig a tranzakció kicserélés lehetőség. Ennek nagyon leegyszerűsítve annyi a lényege, hogy amíg egy tranzakció nem kerül blokkba, addig az bármikor kicserélhető egy másik tranzakcióra. Főleg akkor van létjogosultsága, ha például sikerül egy tranzakciót nagyon alcsony fee-vel elindítani, ami hírtelen sürgőssé válik. Ilyenkor ethereum tx esetén egyszerűen csak fogom magam, összerakom az új tranzakciót, majd ugyanazzal a nonce-szal (sorszámmal) külön el, mint ami a kicserélendő tranzakció sorszáma és voilá(!)

Természetesen Bitcoin esetén is van erre lehetőség, korábban már elmélkedtem itt a blogon a Replace-by-Fee (RbF) megoldásról, ami egyébként egy horror, nem is beszélve arról, hogy a különböző kliensek különböző módon kezelik és kifejezetten körülményes azzal boostolni a tranzakciót. Pláne, hogy eleve csak a meglévő change output terhére növelhető vagy módosítható a tranzakció. Plusz hozzájön még az, hogy alap esetben majd az összes wallet tiltja az RbF-et (nSequence=max(UINT)).

Szóval nem az igazi…

Pont a napokban keveredtem egy olyan helyzetbe, amikor nagyon megszorultunk egy tranzakcióval, ami egy téves költségbecslés miatt igen alacsony fee-vel futott ki, úgyhogy kicsit beleástam magam a Bitcoin ezirányú rejtelmeibe… Mikor is több helyen is elém került a Child-Pays-for-Parent megoldás.

Ez gyakorlatilag az ethereum kapcsán fentebb bemutatott tranzakció kicserélős módszer Bitcoinos implementációja. Ráadásul simán használható bármilyen tranzakció esetén (kivéve az n. input 1 output tranzakciókat, ahol az output nem a mi címünk -> De ez igencsak ritka holló…).

Child-Pays-for-Parent (CPFP)

A megoldás lényege végtelenül egyszerű. Adott egy beszorult tranzakció, ami feltehetően napokig vagy hetekig nem fog blokkba kerülni, sőt az is lehet, hogy teljesen eltűnik a fullnodeokból. Ez a tranzakció minimum 1 darab inputot (utxo) tartalmaz, amit el akarunk költeni és ideális esetben egy vagy több elköltendő outputot és egy további un. change outputot, ami valójában a mi saját címünk.

Folytatás…