Articol preluat de la Peter Todd
Ce se întâmplă
Acum două zile, CoinWallet.eu a anunțat că urmează să facă un test complet sub presiune, indundând rețeaua bitcoin cu tranzacții. Din câte se pare, duc planul la bun sfârșit.
Mai exact, au spus că vor cheltui 20BTC pentru a face tranzacții cu un comision de 0.1mBTC per KB. Adunat, se ajunge la 200MB în tranzacții, care vor lua ceva timp să se mineze.
Ce înseamnă asta pentru utilizatori
Comisioanele de tranzacționare sunt o piață de cerere și ofertă. Pe de-o parte ai oferta – până la 1MB în tranzacții la fiecare 10 minute (cu aproximație) – iar pe de altă parte ai cererea – ce comision per KB sunt dispuși oamenii să liciteze pentru a le fi minată tranzacția. Cu câteva excepții, toți minerii folosesc algoritmi de maximizare a profitului în nucleul bitcoin pentru a alege tranzacțiile – mergând până la cea mai mică și oprindu-se când au rămas fără tranzacții sau block-ul s-a umplut. Ca orice piață, dacă nu plătești un comision competitiv, tranzacția ta nu va fi minată până când nu scade cererea. 20BTC în comisioane reprezintă o cerere mare, așadar ar putea dura câteva zile sau chiar mai mult. Ca orice piață, dacă cererea este suficient de mare prețurile ar putea să nu mai scadă niciodată, în aceeași măsură în care s-ar putea să dureze ani de zile (dacă se va întâmpla asta vreodată) până să poți să cumperi un bitcoin cu 1 dolar american.
Și mai important este că plătind un comision competitiv care câștigă licitația peste alte tranzacții, tranzacția ta trece în capul listei și va fi minată imediat, în aceeași măsură în care dacă ai vrea să cumperi un bitcoin acum, dacă ai oferi cam 250$ ai găsi un vânzător imediat. Concret, rata de comision pe care cei de la CoinWallet pretind că o vor folosi face ca o tranzacție obișnuită de bitcoin – 250-1000 de biți – trebuie să cheltuiască între 0.6 și 2.5 cenți în comisioane pentru a licita peste inundație. Pentru cele mai multe tranzacții, nu e mare lucru, deși tranzacțiile foarte mici vor fi neeconomice.
Cum ar trebui să funcționeze
Într-o lume ideală, ca în orice piață financiară, primirea unei cote din cât costă o tranzacție ar fi simplă. La fel ca atunci când cumpără ei înșiși bitcoin, date despre prețuri ar trebui să fie date de-a gata (prețuri estimate, grafice legate de tranzacțiile în așteptare și care sunt taxele licitate). Pentru că block-urile au ca fundament un proces aleatoriu Poisson, este puțin diferit față de piața standard – comenzile nu sunt completate instantanei. Principiul de bază este însă destul de asemănător.
Atunci când trimiți o tranzacție, portofelul tău ar avea o valoare a pragului pentru un nivel de comision neglijabil – ”dacă costurile de taxare sunt sub 10 cenți, nu îmi cere confirmarea, trimite direct”. În cazurile în care să treci la block-ul următor ar costa mai mult decât setările tale de prag, portofelul estimează cât ar trebui să aștepți pentru diverse nivele de comision , pentru că block-urile sunt create aleatoriu, comisioanele au o anumită probabilitate de a porni pe țeavă din cauza unor block-uri crete în șir. În aceeași măsură, uneori licitația ta originală ar putea să fie prea mică, poate din cauza unei creșteri neasteptate a cererii, sau pentru că minerii au ghinion la găsit block-uri. În acest caz, ai opțiunea să retrimiți tranzacția cu un comision mai mare pentru a ajunge în capul listei.
Cum merg lucrurile acum
Nu foarte bine. Chiar și lucrurile de bază sunt făcute prost. De exemplu, chiar dacă comisionul pe KB este baza în funcție de care toți minerii evaluează ce tranzacții să mineze mai întâi, nu știu de nici un explorator de block care arată comisionul per KB pentru tine. Trebuie să îl calculezi singur. În aceeași măsură, chiar dacă nu toate tranzacțiile au aceeași dimensiune, cele mai multe programe de portofele setează comisioane fixe, rezultând într-o rată a comisionului per KB inconsistentă. Și mai rău, multe dintre portofele îți dau câteva opțiuni în ceea ce privește comisionul plătit, sau chiar aleg să nu îți dea deloc opțiuni.
E ca și când ai avea o mașină care se conduce șingruă și care poate să-și facă singură plinul, dar indiferent cât este de gol rezervorul sau care este politica în orientul mijlociu, ar încerca mereu să plătească aceeași sumă de bani. Dacă benzinăria nu vrea să accepte prețul propus, atunci mașina stă acolo câteva zile sau săptămâni până când politica în orientul mijlociu se îmbunătățește, refuzând să te lase să scoți portofelul și să plătești câțiva dolari în plus.
În ceea ce privește partea de informație, nu există nici măcar grafice de bază pe site-uri care să îți spună care este taxa minimă și medie a comisioanelor plătite per tranzacție în block. Sunt multe grafice drăguțe disponibile pentru numărul de tranzacții per block, sau totalul de comisioane de tranzacție plătite, dar nici unul dintre toate acestea nu îți spune ce te interesează cel mai mult – ce comision per KB trebuie să plătești pentru a ți se mina tranzacția?
Nu doar că mașina noastră șmecheră care se conduce singură refuză să plătească benzina, dar nimeni nu ne spune care sunt de fapt costurile. Există statistici pentru câți barili de petrol sunt extrași în fiecare zi și câte marmoțele pufoase și-au pierdut habitatul ca urmare a forării, dar datele care ne interesează – cât trebuie să plătim la casă – lipsesc cu desăvârșire.
Ce putem să facem deocamdată – trimiterea de tranzacții
Bitcoin Core
Începând cu versiunea 0.10.0, comisioanele estimate pentru utilizator și bazate pe cerere și ofertă au apărut în rețea. Implicit, încearcă să plătească o sumă suficient de mare ca și comision pentru a intra în următorul block, așadar pe măsură ce cererea crește, plătește comisioane mai mari pentru a compensa.
Armory
Începând cu versiunea 0.93.2 lansată pe 10 iunie 2015, Armory folosește implict comisioane estimate RPC de la Bitcoin Core. Ca și cu Bitcoin Core, tranzacțiile tale ar trebui să se înregistreze fără probleme.
GreenAddress/GreenBits
Comisioanele sunt setate pentru utilizator în funcție de estimate în mare, cu un registru predefinit de normalitate. Ca și cu BitcoinCore, tranzacțiile ar trebui să se înregistreze fără probleme
Coinkite
Comisioanele se plătesc automat în funcție de stimate în mare. Nu dau detalii despre felul în care funcționează procesul, spun doar că ”Coinkite va calcula comisionul optim pentru tine și se va ocupa chiar și de plata acestuia, pentru a asigura procesarea la timp pentru toate tranzacțiile”
Coinbase
”Coinbase plătește comisioane de minare (în general 0.0002BTC) pentru tranzacțiile externe pentru a se asigura că aceste tranzacții se propagă prin rețeaua bitcoin rapid”
MultibitHD, pentru portofel bitcoin Android, Blockchain.info, Electrum, etc.
Toate aceste portofele și multe altele îți permit cel puțin să setezi comisioanele într-un fel sau altul, de exemplu printr-un slider cu setări predefinite – economice, normale sau cu prioritate – sau stabilind exact ce comision vrei să plătești. Cel mai simplu lucru pe care îl poți face deocamdată este să setezi o taxă de 0.2mBTC/KB sau mai mare pentru a te asigura că licitezi peste inundația CoinWallet.
Tranzacția mea nu se confimră! Ce fac acum?
Dacă licitația ta inițială pentru spațiul pe blockchain a fost prea mică iar tranzacția ta nu se minează – cu alte cuvinte cineva licitează peste tine – atunci nu există, din păcate, soluții simple deocamdată.
Nici un portofel în acest moment nu susține o metodă explicită de a crește comisionul de tranzacție după ce ai făcut-o deja, Poți să încerci să folosești patch-ul lui Luke-Jr. child-pays-for-parent – suportat de un număr de mineri – pentru a crește comisionul tranzacției, recheltuind rezultatul, dar este o formulă cu capcane pentru că cele mai multe portofele nu îți dau genul ăsta de control.
Până când portofelele sunt îmbunătățite, probabil că nu putem decât să așteptăm
Dacă te simți foarte aventuros și folosești Bitcoin Core, poți să te folosești de first-seen-safe replace-by-fee, pe care F2Pool l-a activat de curând. Pentru a face asta, trebuie să compilezi și să rulezi un nod Bitcoin Core și patch-ul RBF. Patch-ul găsește automat alte noduri RBF și le conectează la alte noduri normale bitcoin, piți verifica asta rulând comanda RPC –
bitcoin-cli getpeerinfo | grep 0000000004000001
Dacă această comandă îți răspunde cu un șir de linii ca cel care urmează, atunci ești conectat la nodurile RBF.
"services" : "0000000004000001",
Pasul următor – folosește tool-ul replace-by-fee-tools, script-ul bump-fee.py pentru a crește comisionul de la tranzacție. Are două moduri – full-RBF și first-seen-safe RBF. F2Pool îl suportă pe cel de-al doilea, așa că vom folosi s switch-ul pentru a activa regula first-seen-safe.
$ ./bump-fee.py -vs cc056c60beee1a9bc05fcc0537cedf1755ce4b0cfb54c5a166aafc24a35ac3d8
DEBUG:root:First-seen-safe enabled: will not reduce change txout value below 0.01127058 BTC
DEBUG:root:Old size: 0.521 KB, Old fees: 0.00000522, 0.00001001 BTC/KB, Desired fees: 0.00010019 BTC/KB
DEBUG:root:Delta fee: 0.00004698
DEBUG:root:Adding new input 8e172a2f46a4ba99b957e523c398233a357ea997ff5880db89d2a7726584ff3a:0 with value 0.00301824 BTC
DEBUG:root:Delta fee: 0.00006171
DEBUG:root:New size: 0.668 KB, New fees: 0.00006693, 0.00010019 BTC/KB
DEBUG:root:Sending tx <snip>
da3ccefb7b9dd1cd9a157cd7e210ead76c5f0bd48fe175bc1be00937e4ae9ab8
Practic am luat o tranzacție cc056c60, am adăugat mai mult input, am crescut valoarea adresei schimbate în așa fel încât noul comision per KB să fie de 10 ori mai mare, producând o tranzacție da3ccefb. Nodurile care suportă RBF se asigură că tx2 plătește mai multe comisioane decât tx1, așadar îl rulează prin rețea. Când ajunge la minerii care suportă RBF; aceștia îl acceptă la rândul lor în mempools, și cu puțin noroc comisioanele adăugate sunt suficiente pentru a te trimite în capul listei.
Acestea fiind spuse, o avertizare : ./bump-fee.py nu a fost testat foarte mult, așa că nu îl folosiți pe un portofel de pe care nu vă permiteți să pierdeți fonduri.
Ce trebuie făcut
Comisioanele de tranzacționare nu o să dispară, fie că dimensiunea block-ului crește sau nu. CoinWallet.eu cheltuie doar 5000$ pentru a inunda rețeaua. Chiar și o creștere de 8MB a block-ului ar crește costurile unui atac la 40 000$, ceea ce este destul de permisiv. De exemplu, un atacator care vrea să manipuleze prețul monedei bitcoin și-ar putea probabil să cheltuiască 40 000$ dacă o face cu strategia de comerț potrivită, ca să nu mai vorbim despre guverne, bănci, afaceri mari, grupări infracționale etc, pentru care 40 000$ reprezintă mărunțiș. Portofelele trebuie să devină mai inteligente când vine vorba despre comisioane, la fel și toată comunitatea bitcoin.
Ce trebuie noi să facem
- Să adăugăm etalarea de comision per KB pentru a bloca exploratorii
- Să setăm portofelele pentru a calcula și a seta comisioane în comision per KB mai degrabă decât la comisioane fixe indiferent de dimensiunea de tx.
- Să facem site-uri cu afișaje ușor de înțeles în legătură cu tranzacțiile în așteptare curente și comisionul per KB necesar pentru a ajunge în capul listei. Am făcut o treabă bună pentru graficele de preț pentru bitcoin, ar trebui să trecem la comisioanele de tranzacționare.
- Să adăugăm funcția de setare a comisioanelor per KB la portofele, în loc să ne blocăm la opțiuni predefinite care ar putea să nu fie destul de mari.
- Să adăugăm suport pentru creșterea comisionului prin (FSS)-RBF la portofele și Bitcoin Core
Limitele de capacitate sunt doar o realitate de viață în desingul protocolului bitcoin, dar asta nu înseamnă că nu putem să dăm utilizatorilor uneltele pentru a lucra cu ele inteligent.
Înapoi la Analiză FinTech