Ano ang double-spending?
Ang double-spending ay isang potensyal na isyu sa isang digital na cash na sistema, kung saan ang mga pondo ay sabay na ginagastos ng dalawang nakatanggap. Kapag walang sapat na aksyon, ang protocol na hindi agad nareresolba ang problema ay maituturing na mahina– walang paraan ang mga user para maberipika na ang mga pondong natanggap nila ay hindi pa nagamit sa iba.
Pagdating sa digital cash, ang pagtitiyak na hindi nagagaya ang mga partikular na unit ay may mabigat na halaga. Magiging mahina ang buong sistema kapag nakatanggap ng 10 units si Alice, nagcopy-paste ito nang sampung beses, at hawak na ang 100 units. Ganun din, ang ganitong sistema ay hindi gagana kung sabay siyang magpapadala ng parehong 10 units kanila Bob at Carol. Kaya para gumana ang digital na pera, dapat magkaroon ng mekanismo para maagapan ang ganitong pagkilos.
Paano maiiwasan ang double-spending?
Ang centralized na paraan
Ang centralized na ruta ay maituturing na mas madaling ipatupad kaysa sa mga decentralized na alternatibo. Madalas itong may kinalaman sa pangangasiwa sa sistema ng isang namamahala at pagkontrol sa paglabas at pagbibigay ng mga unit. Isang magandang halimbawa ng centralized na solusyon sa double-spend na problema ay tulad ng sa eCash ni David Chaum.
Sa ganitong konteksto, kung ang user (tawagin nating Dan) ay gustong makatanggap ng $100 na digital cash, kinakailangan niya muna itong ipagbigay-alam sa bangko. Kapag mayroon siyang balanse sa kanyang account, gagawa siya ngayon ng isang random na numero (o marami, para sa mga maliliit na halaga). Ipagpalagay natin na gagawa siya ng limang numero, ang bawat isa ay may katumbas na halagang $20. Para maiwasan ang pagsubaybay ng mga bangko sa mga partikular na unit, gagawing malabo ni Dan ang mga random na numero sa pamamagitan ng paglalagay ng blinding factor sa bawat isa sa kanila.
Ibibigay niya ngayon ang mga datos na ito sa bangko na siya namang kakaltas ng $100 sa kanyang account, at magsa-sign sa mensahe para kumpirmahin na ang limang piraso ng impormasyon ay maaaring makuha sa halagang $20. Maaari na ngayong gastusin ni Dan ang pondong ibinigay ng Bangko. Pupunta na siya sa kainan ni Erin, at bibili ng pagkain na nagkakahalaga ng $40.
Maaari nang tanggalin ni Dan ang blinding factor para ilantad ang random na numero na kaugnay ng bawat digital cash ”bill,” na nagsisilbi bilang natatanging identifier ng bawat unit (tulad ng isang serial number). Ipapakita niya ang dalawa sa mga ito kay Erin, na dapat ngayong kunin agad ang mga ito sa bangko para maiwasan ang paggastos ni Dan sa mga ito sa ibang nagtitinda. Kukumpirmahin ng bangko kung may bisa ang mga signature, at kung lumabas na tama ang lahat, mapupunta sa account ni Erin ang $40.
Ang mga ginamit na bill ay masasabing nasunog na ngayon, at dapat maglabas ng mga bago kung nais ni Erin na gamitin ang kanyang bagong balanse sa parehong paraan.
Maaaring maging kapaki-pakinabang sa mga pribadong pagpapadala ang eCash na sistema ni Chaum. Ngunit, bagsak ito pagdating sa katatagan dahil ang bangko ang central point of failure. Ang bill na inilabas ay dapat ding tandaan dahil ang halaga nito ay kinukuha lamang mula sa kagustuhan ng bangko na ipagpalit ito sa dolyar. Ang mga kustomer ay nakaasa sa bangko, at dapat dumepende sa pagiging tapat nito para magkaroon ng silbi ang pera. Ito mismo ang problema na layong solusyunan ng cryptocurrency.
Ang decentralized na paraan
Isang hamon ang pagtiyak na hindi double-spent ang mga pondo sa isang ecosystem na walang namamahala. Ang mga kalahok na may pantay-pantay na kapangyarihan ay dapat makipag-ugnayan gamit ang mga itinakdang alituntunin na pumipigil sa mga pandaraya at nagbibigay ng insentibo sa mga tapat na user.
Balikan natin ang eksena sa kainan. Babalik si Dan sa kainan, at sa pagkakataong ito nakita niya ang sticker na Bitcoin Accepted Here sa bintana. Nagustuhan niya ang pagkain noong nakaraan, kaya muli niya itong binili. Nagkakahalaga ito ng 0.005 BTC.
Ganunpaman, tulad ng nabanggit, may bisa lamang ang transaksyon kung isinama sa isang nakumpirmang block. Ang pagtanggap sa hindi kumpirmadong transaksyon ay tulad ng pagtanggap ng $40 na eCash sa nakaraang halimbawa, nang hindi agad ito kinukuha sa bangko – pinahihintulutan nito ang nagpadala na gastusin ito sa iba. Kaya, inirerekomenda na hintayin muna ni Erin ang hindi bababa sa 6 na block ng kumpirmasyon (nasa isang oras) bago tanggapin ang bayad ni Dan.
Double-spending sa Bitcoin
Maingat na dinisenyo ang Bitcoin para maiwasan ang mga pag-atake sa double-spending, kapag ginamit ang protocol nang tulad sa inaasahan. Ito ay kung hinintay ng mga indibidwal na makumpirma sa isang block ang transaksyon, walang madaling paraan para mabawi ito ng nagpadala. Para magawa ito, kinakailangan nilang “baliktarin” ang blockchain na nangangailangan ng hindi matantiyang halaga ng hasing power.
Ganunpaman, may ilang mga double-spending attack na target ang mga partidong tumatanggap ng hindi kumpirmadong mga transaksyon. Para sa mga binili sa maliit na halaga, halimbawa, ang mga nagtinda ay maaaring hindi na gustong hintayin pa na maisama ang transaksyon sa block. Ang isang abalang kainan ay maaaring hindi na kakayaning maghintay pa sa pagproseso ng network sa bawat bilihin. Kaya kapag pinayagan ng isang negosyo ang “instant” na bayad, binubuksan nila ang kanilang sarili sa mga double-spend. Kaakibat ang mas mataas na singil, ang transaksyong ito ay kinakailangan munang kumpirmahin, at samakatuwid ay pinapawalang-bisa ang nakaraan.
May tatlong kilalang paraan sa pagsasagawa ng double-spend:
- 51% ng mga attack: kapag ang isang indibidwal o organisasyon ay nagawang i-kontrol ang higit sa 50% ng hash rate, na nagbibigay sa kanila ng kapasidad na tanggalin o baguhin ang ayos ng mga transaksyon. Mababa ang posibilidad na mangyari ang ganitong attack sa Bitcoin ngunit nangyari na sa ibang mga network.
- Race attacks: ang dalawang hindi magkatugmang transaksyon ay ipinagbigay-alam nang magkasunod gamit ang parehong pondo – ngunit isa lang sa mga transaksyon ang nakumpirma. Ang layunin ng attacker ay ipawalang-bisa ang bayad sa pamamagitan ng pagpapatunay lamang ng transaksyon kung saan siya mabebenipsyuhan (hal. pagpapadala ng parehong pondo sa isang address na kanyang kontrolado). Kakailanganin ng mga race attack ang mga padadalhan na tanggapin ang hindi kumpirmadong transaksyon bilang bayad.
- Finney attacks: nauna nang i-mine ng isang attacker ang isang transaksyon sa isang block nang hindi ito agad ipinagbigay-alam sa network. Sa halip, gagastusin niya ang parehong mga coin sa ibang transaksyon saka lamang ipagbibigay-alam ang naunang na-mine na block, na maaaring magpawalang-bisa sa bayad. Ang mga Finey attack ay nangangailangan ng partikular na pagkakasunod-sunod ng mga kaganapan para mangyari at nakabatay din sa pagtanggap ng hindi kumpirmadong transaksyon ng pinagpadalhan.
Makikita natin na ang tindahang naghihintay sa kumpirmasyon ng block ay nagagawang pababain nang malaki ang panganib ng pagiging biktima ng mga double-spend.
Pangwakas na ideya
Binibigyang-daan ng double-spend ang isang user na paglaruan ang sistema ng electronic cash para sa pinansyal na benepisyo, kung saan ginagamit niya ang parehong pondo nang higit sa minsan. Tulad sa nakaraan, ang kakulangan sa sapat na solusyon sa problema ay sagabal sa progreso sa isang larangan.