Dubulto tēriņu skaidrojums
Sākums
Raksti
Dubulto tēriņu skaidrojums

Dubulto tēriņu skaidrojums

Sarežģītākas tēmas
Publicēts Feb 17, 2020Atjaunināts Jan 31, 2023
7m

Kas ir dubultie tēriņi?

Dubultie tēriņi ir potenciāla problēma digitālās naudas sistēmā, kur vieni un tie paši līdzekļi tiek vienlaikus nosūtīti diviem dažādiem adresātiem. Neveicot atbilstošus pretpasākumus, protokols, kas neatrisina šo problēmu, tiek būtiski apdraudēts – lietotājiem nav iespējas pārbaudīt, vai viņu saņemtie līdzekļi jau nav kaut kur iztērēti.

Digitālās naudas jomā ir ļoti svarīgi nodrošināt, lai konkrētas naudas vienības nebūtu iespējams nokopēt. Visa sistēma tiktu apdraudēta, ja Alise varētu saņemt 10 naudas vienības, nokopēt tās 10 reizes un tādējādi iegūt 100 vienības. Šāda shēma nedarbotos arī tad, ja viņa varētu tās pašas 10 naudas vienības vienlaikus nosūtīt gan Kārlim, gan Lienei. Tāpēc, lai digitālā nauda varētu atbilstoši funkcionēt, ir jābūt mehānismiem, kas novērstu šādu rīcību.


Kā iespējams novērst dubultos tēriņus?

Centralizētā pieeja

Centralizētais risinājums ir daudz vienkāršāk ieviešams, nekā decentralizētās alternatīvas. Parasti tas ietver vienu sistēmas pārvaldnieku, kurš kontrolē naudas vienību izdošanu un izplatīšanu. Labs centralizēta risinājuma piemērs saistībā ar dubulto tēriņu problēmu ir Deivida Čauma (David Chaum) eCash. 

Lai izdotu lietotājiem digitālo aktīvu, kas atdarina skaidru naudu (kuru iespējams anonīmi apmainīt vienādranga tirgū), banka var izmantot aklparakstus, kā to aprakstījis kriptogrāfs Deivids Čaums savā 1982. gadā izdotajā darbā Blind Signatures for Untraceable Payments ("Aklparaksti neizsekojamiem maksājumiem").

Šajā kontekstā – ja lietotājs (nosauksim viņu par Dāvi) vēlas saņemt digitālo naudu 100 $ vērtībā, viņam vispirms ir jāinformē par to banka. Ja viņa kontā ir pietiekams līdzekļu atlikums, viņš ģenerē nejauši izvēlētu skaitli (vai vairākus skaitļus mazākām nominālvērtībām). Pieņemsim, ka viņš ģenerē piecus skaitļus un katram no tiem tiek piešķirta 20 $ vērtība. Lai banka nevarētu izsekot atsevišķās naudas vienības, Dāvis anonimizē šos nejaušos skaitļus, pievienojot katram no tiem maskējošo faktoru.

Pēc tam viņš iesniedz šos datus bankai, kura atskaita no viņa konta 100 $, un paraksta ziņojumus, apliecinot, ka katra no šīm piecām informācijas daļām ir izpērkama par 20 $. Tagad Dāvis var tērēt šos bankas izsniegtos līdzekļus. Viņš dodas uz Erinas restorānu un iegādājas maltīti par 40 $. 

Dāvis var atsaukt maskējošo faktoru un atklāt nejauši izvēlēto skaitli, kas saistīts ar katru digitālās naudas "banknoti", kas kalpo par katras vienības unikālu identifikatoru (līdzīgi sērijas numuram). Viņš atklāj divus no tiem Erinai, kurai nekavējoties ir jāizņem šie līdzekļi bankā, lai Dāvis nevarētu tos vēlreiz iztērēt pie cita tirgotāja. Banka pārbauda parakstu derīgumu un, ja viss izskatās pareizi, ieskaita Erinas kontā 40 $.

Izmantotās banknotes tagad ir sadedzinātas, un tad, ja Erina vēlēsies līdzīgā veidā iztērēt iegūtos līdzekļus, būs jāizdod jaunas banknotes.

Čauma eCash sistēma varētu būt noderīga privātiem pārskaitījumiem. Taču tai trūkst elastības, jo banka ir galvenais kritiskais punkts. Pati izdotā banknote nav nekā vērta, jo tās vērtību nosaka tikai un vienīgi bankas gatavība apmainīt to pret dolāriem. Klienti ir atkarīgi no bankas žēlastības, un, lai nauda funkcionētu, klientiem ir jāpaļaujas uz bankas labo gribu. Tieši šo problēmu cenšas risināt kriptovalūtas.


Decentralizētā pieeja

Nodrošināt, ka līdzekļi netiek divreiz iztērēti ekosistēmā bez uzrauga, ir vēl lielāks izaicinājums. Vienlīdzīgiem dalībniekiem ir jākoordinē sava darbība atbilstoši noteikumu kopumam, kas novērš krāpniecību un motivē visus lietotājus rīkoties godīgi.

Lielākā inovācija, kas tika piedāvāta Bitcoin tehniskajā dokumentā, bija risinājums dubulto tēriņu problēmai. Lai gan tā netika šādi nosaukta, Satoshi piedāvāja datu struktūru, kas atbilst mūsdienās zināmajai blokķēdei.

Blokķēde ir vienkārši datubāze ar dažām unikālām īpašībām. Tīkla dalībnieki (t. s. mezgli) darbina specializētu programmatūru, kas ļauj tiem sinhronizēt viņu rīcībā esošo datubāzes kopiju ar citu dalībnieku kopijām. Rezultātā viss tīkls var pārbaudīt darījumu vēsturi līdz pat sākotnējam jeb ģenēzes blokam. Tā kā blokķēde ir publiski apskatāma, var viegli noteikt un novērst krāpniecisku darbību, piemēram, darījumus, ar kuriem tiek mēģināts veikt dubultos tēriņus.

Kad lietotājs pārraida tīklā darījumu, tas netiek uzreiz pievienots blokķēdei – vispirms tas ir jāiekļauj blokā, izmantojot ieguves procesu. Tādējādi saņēmējam būtu jāuzskata darījums par derīgu tikai tad, kad bloks ir pievienots ķēdei. Pretējā gadījumā pastāv risks zaudēt līdzekļus, jo sūtītājs varētu vēlreiz iztērēt to pašu kriptovalūtu kādā citā vietā. 

Pēc darījuma apstiprināšanas kriptovalūtu vairs nevar vēlreiz iztērēt, jo īpašumtiesības tagad ir nodotas jaunajam lietotājam un viss tīkls var to pārbaudīt. Šī iemesla dēļ daudzi iesaka sagaidīt vairākus apstiprinājumus un tikai tad pieņemt maksājumu kā derīgu. Ar katru nākamo bloku krasi palielinās darba apjoms, kāds nepieciešams, lai mainītu vai pārrakstītu ķēdi (kas var notikt 51 % uzbrukuma gadījumā).

Atgriezīsimies pie piemēra ar restorānu. Dāvis atgriežas tajā pat restorānā un šoreiz pamana uz loga uzlīmi, kas liecina, ka šeit tiek pieņemti norēķini ar Bitcoin. Viņam patika iepriekš pasūtītais ēdiens, tāpēc viņš to pasūta arī šoreiz. Tas viņam maksā 0,005 BTC. 

Erina norāda viņam publisko adresi, uz kuru Dāvim ir jānosūta līdzekļi. Dāvis pārraida tīklā darījumu, kas būtībā ir parakstīts ziņojums, kurā norādīts, ka 0,005 BTC, kas iepriekš piederēja Dāvim, tagad pieder Erinai. Pārlieku neiedziļinoties detaļās – jebkurš, kuram tiek uzrādīts Dāvja parakstītais darījums, var pārbaudīt, vai viņam tiešām piederēja šī kriptovalūta un attiecīgi bija tiesības to tērēt.

Tomēr, kā minējām, šis darījums ir uzskatāms par derīgu tikai tad, kad tas ir iekļauts apstiprinātā blokā. Neapstiprinātu darījumu pieņemšana līdzinās 40 $ pieņemšanai eCash veidā iepriekšējā piemērā, uzreiz neizņemot šos līdzekļus bankā un tādējādi ļaujot sūtītājam vēlreiz iztērēt šos līdzekļus kādā citā vietā. Tātad Erinai būtu ieteicams sagaidīt vismaz 6 bloka apstiprinājumus (tas aizņemtu aptuveni stundu) un tikai tad pieņemt Dāvja maksājumu.


Dubultie tēriņi Bitcoin tīklā

Bitcoin ir rūpīgi izstrādāts, lai novērstu dubultu tēriņu uzbrukumus, – vismaz tad, ja protokols tiek izmantots, kā paredzēts. Proti, ja lietotāji sagaida darījumu apstiprināšanu blokā, sūtītājam nav vienkārša veida, kā atsaukt darījumu. Lai to izdarītu, viņam būtu jāmaina blokķēdes virzība, un tam ir nepieciešama nereāla jaukšanas jauda.

Tomēr pastāv dažādi dubulto tēriņu uzbrukumi, kuru mērķis ir lietotāji, kas pieņem neapstiprinātus darījumus. Piemēram, ja pirkuma summa ir neliela, tirgotājs varētu nevēlēties gaidīt, līdz darījums tiek iekļauts blokā. Ātrās apkalpošanas restorāns, visticamāk, nevarēs atļauties apturēt savu darbību, līdz tīkls apstiprinās katru pirkumu. Tāpēc, ja uzņēmums nodrošina "tūlītējos" maksājumus, tas pakļauj sevi dubulto tēriņu riskam. Kāds varētu pasūtīt hamburgeri, samaksāt par to, pēc tam nekavējoties nosūtīt tos pašus līdzekļus uz savu adresi. Nosakot jaunajam darījumam lielāku komisijas maksu, tas, visticamāk, tiks izpildīts pirmais un atcels iepriekšējo.

Pastāv trīs populāras dubulto tēriņu metodes:

  • 51 % uzbrukumi: ja viena persona vai organizācija kontrolē vairāk nekā 50 % jaukšanas jaudas, tai ir iespēja izslēgt darījumus vai mainīt to secību. Bitcoin tīklā šāda uzbrukuma iespējamība ir ārkārtīgi maza, taču citos tīklos tā ir noticis.

  • Sacīkšu uzbrukumi: divi konfliktējoši darījumi tiek secīgi pārraidīti tīklā, izmantojot vienus un tos pašus līdzekļus, taču tikai viens no šiem darījumiem tiek apstiprināts. Uzbrucēja mērķis ir atcelt maksājumu, apstiprinot tikai to darījumu, kurš ir izdevīgs viņam (piem., nosūtot tos pašus līdzekļus uz savu adresi). Sacīkšu uzbrukuma īstenošanai saņēmējam ir jāpieņem neapstiprināts darījums kā maksājums.

  • Finnija uzbrukumi: uzbrucējs sākotnēji iekļauj darījumu blokā, uzreiz to nepārraidot tīklā. Pēc tam viņš iztērē tos pašus līdzekļus citā darījumā un tikai tad pārraida iepriekš izveidoto bloku tīklā, kas tādējādi var atcelt nupat veikto maksājumu. Finnija uzbrukumu īstenošanai ir nepieciešama noteikta notikumu secība, turklāt tie ir atkarīgi arī no tā, vai saņēmējs pieņem neapstiprinātus darījumus.

Kā redzējām, komersants, kurš sagaida bloka apstiprinājumus, ievērojami samazina risku kļūt par dubulto tēriņu upuri.


Noslēgumā

Dubultie tēriņi ļauj lietotājam apmuļķot elektroniskās naudas sistēmu, gūstot finansiālu labumu no vienu un to pašu līdzekļu vairākkārtējas izmantošanas. Adekvātu problēmas risinājumu trūkums ilgstoši ir kavējis attīstību šajā jomā.

Tomēr, par laimi, līdz ar aklparakstu izmantošanu tika piedāvāts interesants risinājums centralizētajām finanšu shēmām. Vēlāk darba apliecinājuma mehānismu un blokķēdes tehnoloģijas izveide ļāva radīt Bitcoin kā spēcīgu decentralizētas naudas veidu, kas, savukārt, kalpoja par iedvesmu tūkstošiem citu kriptovalūtu projektu.