Most, hogy bezárta kapuit a világ eddig legnagyobb bitcoin mixing szolgáltatója (bitmixer.io) talán időszerű lenne a blog hasábjain is röviden értekezni a Tumbling szolgáltatásokról és az egész CoinJoin intézményről. Miről is szól ez az egész? Aki valaha vetemedett már olyanra, hogy belenézzen egy bitcoin blockba, az minden bizonnyal furán nézhetett az olyan jellegű trantakciókra, amelyek számos inputot és számos outputot tartalmaztak egyeten tranzakción belül. Ezek a tranzakciók jellemzően a “CoinJoin” jellegű szolgáltatások szüleményei, aminek lényege a Bitcoin felhasználók számára a szükséges privacy (magánélet) megteremtése. Míg a nagy kereskedelmi platformok mindegyike komoly személyazonosítást ír elő bármilyen crypto művelethez, addig a Tumbling szolgáltatók pont azt a célt szolgálják, hogy ezen taranzakciók követhetetlenné váljanak a blockláncban.
Hogy mindez miként lehetséges? Ehhez feltétlenül szükséges a blockchain technológiák alapját jelentő UTXO (Unspend Transaction Output) és a triple-entry bookkeeping technológia, amit magyar nyelvre leinkább a szerencsétlen “hármas könyvelés”-ként lehet fordítani. Mindezen intézménynek a lényege, hogy a blockláncban nem tároljuk minden elemi bitcoin darabka (satoshi) aktuális állapotát, hanem az utalások során inputként a korábbi utalások outputját (UTXO-ját) használjuk és szükség esetén azokat daraboljuk. Így például a ma 16,5 millió bitcoint számláló blockláncban nem kell nyílvántartani 16,5 millió btc * 1.000.000 satoshi teljes történetét, hanem egyszerűen elég nyilván tartani a jelenleg egyébként egészen pontosan 51.231.946 unspent transaction outputot. A triple-entry bookkeeping nélkül a blockláncok működésképtelenek lennének, hiszen ebben az esetben minden utalásnál a teljes blockláncot kéne végig nézni az adott satoshik teljes historyja miatt. Ehhez képest az UTXO-nak köszönhetően lényegében képesek a teljes blockláncot a memóriában tartani a bitcoin fő nodeok.
Ha az előző bekezdés így első nekifutásra érthetetlennek tűnik, akkor ezen ne csodálkozz. Nekem is napokig tartott, hogy megértsem az UTXO-t és azt, hogy miért is fontos annyira ez miatt a “double spending” védelem. Ennél jobban ezt itt és most nem szeretném kifejteni, hiszen ez a post most nem az UTXO-ról szól, ellenben ezen információk hasznosak lehetnek a folytatáshoz. Egyelőre legyen elég annyi, hogy a bitcoin alapjait jelentő technológiák (a yap szigeteki elzárt törzsek monetáris politikáját idéző three-entry bookkeeping, UTXO modell, hashcash metódus, kriptográfia, stb.) olyan soha meg nem értett és általában szegényen és elismerés nélkül meghalt tudósok munkásságára épül, akik szellemi művének megértéséhez és összerakásához egy olyan álnév mögé bújt mérhetetlenül okos és önzetlen ember kellett mint Satoshi Nakamoto, aki a mai napig a névtelenségbe burkolózva ül közel másfél millió bitcoinnyi UTXO-n, amihez 2010 óta senki nem nyúlt hozzá.
Szóval az UTXO technológiának köszönhetően lehetőség van az amúgy teljesen nyílt főkönyvű blockláncok esetén is az anonimitás és a privacy megvalósításának. Nyilván annak van igazán szüksége anonimitásra, akinek rejtegetnie valója van. Márpedig a bitcoin esetén ez igen sokak számára egy szükséges szolgáltatás, bármennyire is szép és fényes a bitcoin nyilvános oldala, egyelőre komoly szerepe van a fizetőeszköznek a dark web mellett a terrorizmus és egyéb bűncselekményekhez kapcsolódó pénzmozgásokhoz és pénzmosásokhoz. Márpedig ezen tevékenységek leginkább igénylik a bitcoin mixer szolgáltatásokat.
A legnagyobb tumbling szolgáltatás lelövése kapcsán egyébként nincs hivatalos állásfoglalás. Egy a szolgáltatáshoz közel alló szakértő szűkszavú nyilatkozata szerint a szolgáltatás beszűntetése mögött pontosan az a tény áll, hogy az üzemeltetők megelégelték a folyamatos támadásokat (közösségtől, prominens személyektől és hatóságoktól) a vélt vagy valós bűncselekmények kapcsán. Ezt alátámasztja az official statement, amiben a tulajdonosok leírták, hogy nehezen mondanak le erről a roppantul komoly bevételt termelő szolgáltatásról, azonban hisznek abban, hogy a bitcoin jövője a tiszta és átlátható blockláncban rejlik, minek hatására egyre több országban fogadják el a bitcoint mint legális fizetőeszközt, döntésükkel ezen irányt kívánják tovább erősíteni.
Ha viszont már ez megtörént, akkor röviden bemutatnám, hogy miként is néznek ki ezek a mixer szolgáltatások. Ez főleg azon olvasók számára lehet érdekes, akik időnként rávetemednek arra, hogy egy-egy blockban szereplő tranzakciókból próbáljanak értelmezni eseményeket. Az alábbiakat nopara73 kincset érő irománya alapján készítem (TumbleBit vs CoinJoin).
Alap esetben így néz ki egy bitcoin tranzakció:
Mi látható itt? Adott egy korábbi UTXO (1LDHjMRw… address), amin ott pihen 0.015BTC. Tehát ez azt jelenti, hogy az 1LDJjMRw… addressre történt korábban egy utalás 0.015BTC összegben ami azóta is ott pihent. A fentebbi tranzakcióban elküldésre került ebből 0.01442771 BTC egy másik walletbe (1KVPHe4CpQ…), amiből keletkezett két UTXO, egyrészt keletkezett ugye a 0.01442771 BTC-nyi UTXO ami ezáltal az új wallethez került kötésre, és az eredeti 0.015BTC-ből fennmaradó 0.00051579 BTC pedig új UTXO-ként továbbra is az eredeti addressen maradt.
[commercial_break]Ez így kerek és logikus. Könnyen követhető a blockláncban. Azonban lássuk be, ez nem igazán szolgálja a felek magánéletének védelmét. Ezen helyzeten javít némileg a Change address koncepció.
Change address:
Látható, hogy ebben az esetben a váltópénz nem az eredeti wallethet kötött UTXO-ba kerül, hanem egy teljesen új walletbe (12HdenPx…). Itt annyi történt, hogy a wallet alkalmazás ahelyett, hogy a “visszajárót” az eredeti addresshez kötötte volna, helyette létrehozott egy újabb addresst és arra kérte azt. Ezeket az addresseket persze nyilván kell tartani a wallet alkalmazásnak, mely pl a wallet backupolása szempontjából okoz kellemetlenségeket.
Join transaction:
A Change address miatt, ha valaki sokat használja a walletét, akkor ott igen sok aprócska address jön létre kicsi bitcoin darabkákkal. Ezen darabkákból van lehetőség egyszerre “összevontan” kiutalni az érméket. Ez utóbbi egyébként alapértelmezett tevékenysége a legtöbb wallet alkalmazásnak, hiszen ezen “visszajáró” addressek mögött egy-egy önálló UTXO áll, melyek felszámolása csökkenti a master nodeok memória terhelését. Az ilyen több address/több UTXO műveletek pl így néznek ki:
Itt persze még mindig csak technológiai adottságokról beszélünk, hiszen ez a fajta működés szolgálja a blockchain fenntarthatóságát.
SharedCoin:
Bár maga a SharedCoin metódus már a múlté, de sok Tumbling szolgáltatás haszálja kvázi ugyanezt a módszert. A lényege, hogy teljesen független input és outputokat terelnek összes egy tranzakcióba, így csak az látszik, hogy milyen címekről milyen címekre utaltak, viszont mivel a “visszajárók” is szerepelnek a tranzakciókban, sőt előfordulhat, hogy egy input több outputra is küldött, esetleg egy outputra több input is küldött, így kvázi lehetetlen kideríteni egy-egy SharedCoin tranzakcióból, hogy pontosan ki, hova és mennyit küldött. Erre egy példa:
CoinJoin és JoinMarket:
A CoinJoin lényegében ugyanazt az elvet követi mint a SharedCoin azzal a különbséggel, hogy összevárja a hasonló tranzakciókat. Ez önmagából egy roppantul lassú folyamat lenne és nem is feltétlenül szolgálná a privacyt. Ezzen negatívumokon segít a JoinMarket koncepció, ennek lényege, hogy a tranzakciós díjért cserébe tudsz vásárolni “összezavarást” a te tranzakciódhoz. Lényegében fogod a tranzakciódat, ami mondjuk tartalmaz 1 BTC utalást egy olyan korábbi UTXO-dból amin van 2 BTC, majd “veszel” a piacról további 2 tranzakciót, aminek a tulajdonosa vállalja, hogy csinál egy egyébként felesleges utalást egy JoinMarket szolgáltatáson keresztül. Neked extra költséged annyi, hogy ki kell fizetned a másik két utalás tx-ét is:
Hogy mi történt itt? Három tulajdonos utalt 2,35 BTC-t meghaladó összeget 5 különböző addressre (ebből az egyik ráadássul 2 különböző UTXO-ból). Közülük az egyik utalni akart 2.32386728 BTC-t, erre a másik két “barát” is utalt egy-egy saját újonnan létrehozott addressére szintén 2.32386728 BTC-t, majd szerepeltik a tranzakcióban a “visszajáró” addresseket is. Így csináltak 4 UTXO-ból egy olyan összekevert tranzakciót, amiből így ránézésre senki nem fog rájönni, hogy ki is volt eredetieg a küldő és valójában hova is akarta küldeni a bitcoinjait. A másik két szereplő pedig egyszerűen csak megjáratta a pénzét a saját walletjéből a saját walletjébe.
Ez az a pont, ahol időszerű is abbahagynom a technológiák bemutatását, hiszen akit csak maga a tumbling technológia érdekel s az, hogy miként is szolgálja mindez a tranzakciók privacy követelményeit, az tiszta képet kaphatott arról, hogy miként is működik mindez. Aki pedig vérszemet kapott ahhoz, hogy végre talált egy jó megoldást amivel úgy tudja kiutalni a pénzét Poloniexről Xapo-ra, hogy azt a kutya sem tudja visszafejteni, az már időközben úgyis talált 8 különböző működő CoinJoin és Tumbling szolgáltatást, ami megoldja ügyes bajos problémáit.
Persze a tumbling szolgáltatások csak az útvonalat kavarják össze… Ha valaki triviális helyről utal, triviális helyre, ahol mindkét hely ugyanazon névhez van kötve, akkor lehet bármennyire is fifikás az tranzakció összekavaró alkalmazás…
Az alphabay/hansa lefoglalása után én nem csodálkozom hogy a szereplők próbálnak felszívódni mielőtt kopogtat az FBI és lehet választani az életfogytiglan és az öngyilkosság között.
Nyilván a mixer aki kvázi a pénzmosást ( hiszen elrejti a nyomokat) végzi és a felügyeletlen tőzsde, ahol átváltják a pénzt coinokra is legalább olyan sáros, mint a piactér üzemeltetője.
Nem nagyon értek hozzá, de akkor ennél a zcash megoldása a “z” címek jobb megoldásnak tűnik. Ez a megoldás a valóságban is működik?
Mert jó pár bányásztársaságnál elzárkóznak a rejtett címekre való utalástól pl.
“Because of performance issues with the Zcash client we are unable to send payout transactions to z addresses! Therefore DO NOT use z addresses to mine on the pool.”
A másik:
Ahogyan olvastam, az ethereum és a BTC is tervez hasonló megoldást bevezetni. Ha ezeket bevezetik, mi lesz a zcash versenyelőnye a többiekkel szemben? Mert eddig tudomásom szerint ez volt a legnagyobb érdeme…