Fa un temps, vam proposar un mecanisme per abordar un problema persistent en Bitcoin: la vulnerabilitat de les transaccions sense confirmacions (zero-confirmation o 0-conf) als atacs de doble despesa. Les transaccions 0-conf són aquelles que comerciants o serveis accepten abans que siguin confirmades en un bloc, sovint per motius pràctics com millorar l’experiència d’usuari i reduir els temps d’espera. El nostre objectiu era oferir una solució lleugera i compatible amb els incentius per dissuadir la doble despesa, sense necessitat de modificar les regles de consens de Bitcoin ni de confiar en terceres parts.

La solució que vam dissenyar, malauradament, va arribar abans d’hora (o potser massa tard?). El mecanisme depenia d’un opcode concret (OP_AND) que havia existit en el llenguatge de scripting de Bitcoin en els seus inicis, però que havia estat desactivat. Sense aquest opcode, la nostra construcció no es podia desplegar directament a Bitcoin. Tot i el seu potencial, la proposta va romandre teòrica.

Avançant fins avui, el panorama del scripting de Bitcoin ha revifat amb noves possibilitats. La comunitat està immersa en un debat intens sobre la reactivació de OP_CAT, un altre opcode dels primers dies de Bitcoin que es va eliminar per preocupacions relacionades amb la complexitat dels scripts. L’emoció al voltant de OP_CAT prové de les noves primitives potents que permet per als scripts de Bitcoin: covenants, smart contracts composables… i el nostre mecanisme de prevenció de doble despesa! Resulta que OP_CAT es pot utilitzar per implementar el nostre mecanisme de prevenció sense necessitat de OP_AND, mitjançant una construcció proposada per CremaLabs). En altres paraules, el renovat interès per l’extensibilitat dels scripts de Bitcoin podria, finalment, obrir la porta al desplegament de la nostra solució a la mainnet de Bitcoin.

En aquest article, primer resumirem les idees clau del nostre article original: com funciona el protocol, què pretén evitar i per què és útil. A continuació, explicarem com es pot implementar una variant del protocol utilitzant OP_CAT, proporcionant un exemple concret de com petits canvis en el llenguatge de scripting de Bitcoin poden desbloquejar millores significatives en la seguretat de les transaccions.

Double-spending prevention: The Original Version

La doble despesa (intentar gastar el mateix token digital més d’una vegada) és un dels desafiaments fonamentals que han d’afrontar les monedes digitals. A diferència dels diners físics, que són intrínsecament resistents a la duplicació i canvien de mans de manera tangible, els tokens digitals es poden copiar i reutilitzar fàcilment si no hi ha mecanismes de seguretat forts.

Bitcoin resol aquest problema mantenint un llibre de comptes només appendable, la cadena de blocs, que es replica a tots els nodes complets de la xarxa. Les transaccions es consideren finals un cop estan confirmades i incrustades a la cadena de blocs, fent que sigui computacionalment inviable revertir-les o duplicar-les sense un esforç considerable.

Tanmateix, per permetre pagaments més ràpids, molts usuaris i serveis de Bitcoin confien en les transaccions sense confirmació (zero-confirmation o 0-conf) — aquelles que han estat difoses a la xarxa però encara no han estat incloses en un bloc. Aquestes transaccions permeten pagaments instantanis en casos on la latència és crítica: comprar snacks a una màquina expenedora, pagar en un restaurant de menjar ràpid o retirar diners en un caixer compatible amb Bitcoin. Ara bé, aquesta comoditat té un preu: com que encara no han estat confirmades, aquestes transaccions no gaudeixen de la protecció de la cadena de blocs i són vulnerables a atacs de doble despesa.

En el nostre article, vam proposar un mecanisme per reduir aquesta vulnerabilitat i dissuadir la doble despesa en escenaris 0-conf. La idea consisteix a aprofitar la potència expressiva del llenguatge de scripting de Bitcoin juntament amb una propietat subtil i coneguda (una vulnerabilitat?) de l’algorisme de signatures ECDSA. Combinant aquests dos elements, la nostra construcció actua com un desincentiu per als atacants, fent que els intents de doble despesa siguin més arriscats i menys atractius en la pràctica.

Vulnerabilitat d’ECDSA

Originalment, Bitcoin utilitzava l’algorisme de signatura digital de corba el·líptica (ECDSA) per a l’autenticació de les transaccions. Tot i que l’actualització Taproot ha introduït les signatures Schnorr com a alternativa, la nostra proposta original es va desenvolupar dins del context d’ECDSA.

Una característica important d’ECDSA és que és probabilístic. Això vol dir que, per a un mateix missatge i una mateixa clau privada, no hi ha una única signatura possible. La signatura exacta generada depèn de l’elecció d’un enter aleatori, habitualment denotat com a k, que es selecciona de nou per a cada signatura. Aquesta aleatorietat és essencial per a la seguretat de l’algorisme.

Resum ràpid de com es calcula una signatura ECDSA:

  1. Es tria un enter aleatori k.
  2. Es calcula un punt (x, y) en la corba el·líptica multiplicant k pel punt generador G.
  3. Es defineix r = x mod q, que forma part de la signatura.
  4. El segon component, s, es calcula com s = k⁻¹ (m + r·d) mod q, on d és la clau privada i q és l’ordre de la corba.
  5. La signatura resultant consta de dos components, r i s.

El punt clau és que mai s’hauria de reutilitzar el mateix valor de k per a missatges diferents (amb la mateixa clau privada). Si això passa, i un atacant pot observar dues signatures amb el mateix r, pot recuperar la clau privada.

Aquesta vulnerabilitat està ben documentada i ha provocat fugues de claus en el món real, especialment en casos on hi havia mala generació d’aleatorietat o reutilització del k (com va passar en algunes implementacions de wallets de Bitcoin). En la nostra proposta, convertim aquesta vulnerabilitat en una funcionalitat, creant una mena de trampa d’incentius: si un atacant intenta fer una doble despesa, es juga la possibilitat de filtrar la seva pròpia clau privada.

Fixed-r Pay-to-Pubkey (FR-P2PK)

Per implementar la nostra defensa contra la doble despesa, introduïm un script personalitzat de Bitcoin que anomenem Fixed-r Pay-to-Pubkey (FR-P2PK). Aquesta construcció és una variant del conegut Pay-to-Pubkey (P2PK), que requereix una signatura vàlida per gastar una sortida. La innovació clau de FR-P2PK és que no n’hi ha prou amb que la signatura sigui vàlida: el valor r de la signatura ha de ser exactament un de concret i preestablert.

Aquest petit canvi té grans conseqüències. Degut a la vulnerabilitat d’ECDSA descrita abans, si un atacant intenta fer una doble despesa d’una sortida FR-P2PK transmetent dues transaccions diferents signades amb el mateix r, posa en risc la seva clau privada. Qualsevol node que vegi ambdues transaccions pot explotar la reutilització de r per recuperar la clau privada — i, amb ella, reclamar tots els fons de l’atacant.

L’estructura de l’script és la següent:


ScriptPubKey:  OP_DUP <pubKey> OP_CHECKSIGVERIFY
               OP_SIZE <0x47> OP_EQUALVERIFY
               <sigmask> OP_AND <r> OP_EQUAL

ScriptSig:     <sig>

Per gastar una sortida FR-P2PK, l’usuari ha de proporcionar una única signatura ECDSA. Aquesta signatura ha de verificar-se correctament contra la clau pública proporcionada i ha de contenir un valor r específic quan s’analitza. Si la signatura és malformada o si el valor de r no coincideix amb el requerit, l’script fallarà i la transacció serà invàlida.

En imposar un r fix, creem efectivament una trampa per a atacants. Els usuaris honestos no necessiten mai reutilitzar r (només signen una vegada, amb els paràmetres correctes). Però un actor maliciós que intenti fer una doble despesa de la mateixa sortida s’enfronta a un dilema perillós: signar dues vegades amb el mateix r obre la porta a una compromissió total de la clau privada.

Prevenció de la doble despesa amb OP_CAT i Schnorr

Una nova proposta de CremaLabs, anomenada PurrSettle , es basa en aquesta idea. Tot i que la nostra construcció original es recolzava en ECDSA i l’opcode OP_AND, PurrSettle adapta l’enfocament a les signatures Schnorr i a la reactivació proposada de OP_CAT.

En lloc d’encodar el valor r directament a l’scriptPubKey de la sortida, PurrSettle incrusta el valor r dins la sortida mitjançant un Taproot tweak, el qual compromet un script que conté r. El witness llavors proporciona s, i l’script el concatena amb r mitjançant OP_CAT per reconstruir la signatura completa. Aquesta signatura reconstruïda es verifica posteriorment amb OP_CHECKSIG.

L’estructura de l’script és la següent:


ScriptPubKey:  OP_1 <Q>
Witness:       <s> <OP_PUSHBYTES_32 R OP_SWAP OP_CAT OP_PUSHBYTES_32 P OP_CHECKSIG> <controlblock>

on <Q> és la clau de sortida Taproot, que compromet un arbre d’scripts que inclou un compromís amb R.

L’avaluació de la pila (stack evaluation) de l’script proposat s’explica al blog de PurrSettle blog, i es pot veure una transacció d’exemple que gasta una sortida FR-P2PK basada en Taproot al signet de StarkWare.

Tot i que la nostra proposta original per prevenir la doble despesa en transaccions sense confirmació (0-conf) a Bitcoin va assentar les bases per desincentivar aquest tipus d’atacs en pagaments ràpids, l’evolució de les capacitats de scripting de Bitcoin ha obert noves vies de millora. PurrSettle aprofita aquests avenços, utilitzant signatures Schnorr i l’opcode OP_CAT per refinar i enfortir el concepte. Dividint la signatura en dues parts (una compromesa a l’script i l’altra proporcionada durant la transacció), ofereix una manera d’implementar la vulnerabilitat de reutilització de k com a mecanisme preventiu contra la doble despesa.

A mesura que Bitcoin continua evolucionant, mecanismes com PurrSettle representen una direcció prometedora per a aplicacions pràctiques de seguretat criptogràfica en transaccions quotidianes.

18 comments on “Revisió de la prevenció de la doble despesa per a transaccions sense confirmació de Bitcoin”

  1. Retroping: tadalafil daily gym
  2. Retroping: imodium ad tablets
  3. Retroping: saxenda cost cvs

Deixa un comentari

MAXWIN99 Link Game Online x Revisió de la prevenció de la doble despesa per a transaccions sense confirmació de Bitcoin – DISCRYPT

Judul ini menggabungkan link game online dengan revisió de la prevenció de la doble despesa pada transaccions sense confirmació de Bitcoin, jadi fokusnya ada pada cara membaca alur transaksi dan risiko yang sering luput. MAXWIN99 membantu mengarahkan pembahasan tanpa keluar dari kata kunci inti.

Di sini, perhatian tertuju pada status konfirmasi Bitcoin, jejak transaksi, dan bagaimana pencegahan double spend dipahami secara praktis. DISCRYPT memberi konteks yang lebih rapi agar pembaca menangkap hubungan antarproses tanpa istilah yang terlalu melebar.

Jika Anda ingin melihat bagaimana tema ini diterjemahkan ke pembacaan yang lebih mudah, halaman ini layak dicermati sampai akhir. MAXWIN99 dan DISCRYPT menyajikan sudut pandang yang tetap selaras dengan judul, supaya alurnya terasa jelas dan relevan.

demo zeus demo zombie demobonanza demopg demoslot 88 demoslot bonanza demoslot gacor demoslot heylink demoslot olympus demoslot pg demoslot pragmatic demoslot rupiah demoslot soloto demoslot spadegaming demoslot to demoslot zeus demoslotgacor demoslotgratis demoslotpg demoslotpgsoft demoslotpragmatic demoslotzeus deno slot depo depo 10 depo 100 depo 10k depo 10rb depo 15 depo 20 depo 25 depo 5 depo 50 depo 5000 depo 5rb depo gacor depo goceng depo parlay depo qris depo slot depo slot88 depo25 25 depo25dapat25 depo4d gacor depo50 deposit 5000 deposit dana deposit parlay deposit pulsa deposit qris deposit slot deposit25bonus25 detik slot dewa dewa parlay diamond slot dodo domino 99 domino gacor domino higgs domino island domino mahjong domino online domino qiu domino rp domino slot dominoqq alternatif dominoqq pkv dominoqq terpercaya douyin com download idnplay download mahjong doyanbola1 dpbola event dpbola slot dragon dragon slot88 dragoon dragoonsoft dream dunia parlay dunia slot ebet edan slot emoney slot endorse slot esport euro 2024 event parlay event slot eventparlay evo ewallet slot exolyt tiktok fa fachai slot fesbuk com fishing slot fortune 138 fortune slot forum forum bola forum casino forum parlay forum slot forumbbfs freebet domino freebet poker freechip slot fun funky gacor gacor 5000 gacor 500x gacor apaan gacor link gacor mahjong gacor mania gacor maxwin gacor online gacor situs gacor slot gacor slot88 gacor terpercaya gacor thailand gam slot gambar spaceman game bonanza game card game domino game gacor game habanero game judi game mahjong game nexus game poker game situs game slot game spaceman game togel gamemahjong gameplay gampang gampang menang gampang slot ganesha slot gaple garansi garansi slot garansi gacor garansi slot gates gates gatotkaca gates olympus gates slot gatesof olympus gatotkaca slot gb gd88 geam slot gem slot geme slot gemilang88 gemini gemsbonanza generasi poker gg judi gila parlay gim selot gim slot gitar sgp gladiator slot grup parlay habanero 888 habanero gacor habanero slot88 habanero toto hacker slot hacksaw hadiah parlay handicap parlay happy slot hari gacor hasil hk hasil sgp hasil slot hdp parlay heylink slot heylink.me slot higgs domino hitung parlay hk 6d2024 hk hari hk keluar hk kemaren hk kemarin hk lengkap hk malam hk pools hk prize hk sbobetmu hk terbaru hk tercepat hk togeli hoki slot hoki slot88 hold artinya holki slot88 hongkong gas hongkong keluar hongkong keluaran hongkong malam hongkong pools hongkong result hongkong semalam hongkong slot hongkong togel hukum judi hydako i8 ia ibcbet alternatif ibcbet casino ibcbet indonesia ibcbet cssin ibcbet maxbet ibcbet online ibcbet slot id domino id poker idlix idn idn ceme idn livescore idn pagcor idn parlay idn play idn rtp idn situs idn sport idn sports idn togel idn toto idnplay apk idnplay cssin idnplay pagcor idnplay poker idnplay slot idnpoker online ig informatikamu iglookup igmp4 ikea77 ilmu parlay indo casino indomaret indonesia slot infini slot infini88 123 infini88 77 infini88 engine infini88 gacor infini88 lengkap infini88 cssin infini88 rtp infini88 slot infini88 terbaru infini88 tergacor info parlay info rtp info slotakurat ini sgp inject slot injector slot injector spaceman instagram mp3 instagram qlizz ion jackpot casino jackpot slot jackpot slot88 jam gacor jamin gacor jamingacor jarwo slot jenis judi jenis slot jepang slot jepang slot88 jili games jili slot jin slot jitu angka jne situs joker gaming joker jewels joker slot joker slot88 jp mahjong jp parlay jp poker jp situs jp slot judi judi adalah judi bandarqq judi casino judi domino judi idn judi kartu judi kasino judi nexus judi onlen judi online judi online24jam judi parlay judi pkv judi poker judi princess judi roulette judi saba judi sbo judi sbobet judi sbobet88 judi slot777 judi slot88 judi slot888 judi spaceman judi tangkas judi tangkasnet judi thailand judi toto jurnal situs ka kalah slot kalkulator parlay kamboja slot kamboja slot88 kang paito kartu poker kartu remi kel hk kel sgp keluar sgp keluar sidney keluar singapore keluaran keluaran ac keluaran atletico keluaran bonanza keluaran chrey keluaran gates keluaran kampung keluaran king keluaran koi keluaran lucky keluaran new keluaran pekan keluaran phnom keluaran rhode keluaran sidney keluaran siem keluaran starlight keluaran sweet keluaran sydey keluaran timor keluaran wild kemenangan parlay keren slot keuntungan parlay king parlay klik855 vip kluaran hk kode parlay koi koi gate komo slot ks kumpulan infini88 kumpulan pay kumpulan situs ladang toto latin situs lautan slot lh parlay liga liga parlay liga premier liga slot liga858 parlay lihat sgp ling slot link alternatif link alternatifsbobet link ceme link domino link dominoqq link gacor link ibcbet link idn link infini88 link maxwin link mpo link nexus link parlay link pay link sbobet link sbobet88 link server link slot777 link slot88 link slotgacor link spaceman link sv388 link tergacor link thailand link ug linkslot gacor lisensi pagcor liv slot live live bola live parlay live rtp live sbobet live slot live slot777 live timnas livechat sbobet livescore aik livescore ajax livescore anderlecht livescore arsenal livescore barcelona livescore basel livescore benfica livescore besiktas livescore br%c3%b8ndby livescore celtic livescore chelsea livescore corinthians livescore dundalk livescore esteghlal livescore fenerbah%c3%a7e livescore feyenoord livescore flamengo livescore fluminense livescore galatasaray livescore gr%c3%aamio livescore internacional livescore juventus livescore lazio livescore liverpool livescore lyon livescore marseille livescore molde livescore monterrey livescore napoli livescore palmeiras livescore parlay livescore persepolis livescore porto livescore rangers livescore rosenborg livescore santos livescore seoul livescore zamalek livestream livestream bola cssin domino cssin ibcbet cssin parlay cssin poker cssin sbobet cssin slot cssin slot777 cssin sv388 csso slot lucky lucky neko lucky slot m pgsoft m4 tiktok mabar 138 macala macau toto madame slot mahjong 4d mahjong artinya mahjong connect mahjong cuan mahjong free mahjong gacor mahjong jp mahjong link mahjong online mahjong panda mahjong quest mahjong slot mahjong slot88 mahjong solitari mahjong tergacor mahjong toto mahjong way mahjong ways1 mahjong ways2 main casino main judi main parlay main pragmatic main slot mangolive twitter mania mania slot mario masuk sbobet masuk slot MAXWIN99 Link Game Online x Revisió de la prevenció de la doble despesa per a transaccions sense confirmació de Bitcoin – DISCRYPT