Keletas svarbių techninių terminų:
Open-source software (atvirojo kodo programa)
Tai programa, kurios išeitinis (programinis) kodas yra viešas ir prieinamas kiekvienam. Tokiu būdu, kiekvienas žmogus pasaulyje (suprantantis programavimą) gali absoliučiai tiksliai žinoti kaip veikia programa, ir pats įsitikinti, ką būtent programa daro, ir ko nedaro todėl visiškai nesvarbu, kas yra atvirojo kodo programos kūrėjai.
Daugiau informacijos
Peer-to-peer (P2P) tinklas
P2P yra tinklo modelis, kuriame keitimasis resursais vyksta tiesiogiai tarp vartotojų. Tai yra priešingybė kliento-serverio modeliui. Gryname P2P tinkle nėra kliento ir serverio savokų – susijungę vartotojai yra lygiaverčiai, t. y. kiekvienas veikia ir kaip klientas, ir kaip serveris. Tokio tinklo pagrindinė stiprybė – jo neįmanoma išjungti, kadangi nėra jokių centrinių taškų, kuriuos būtų galima atakuoti.
Public key cryptography (viešojo rakto kriptografija)
Moderni kriptografijos forma, eliminuojanti simetrinės kriptografijos silpnybę – šifravimui skirto rakto perdavimą nesaugiais kanalais. Iki viešojo rakto kriptografijos atsiradimo, šifravimui skirtas raktas turėjo būti saugomas paslaptyje. Tokia kriptografijos forma turėjo vieną esminį trūkumą – šifruotų duomenų siuntėjas turėjo perduoti iššifravimui skirtą raktą duomenų gavėjui saugiu, tačiau ne kriptografiniu būdu, pavyzdžiui, telefonu arba susitikus akis į akį. Tokie rakto perdavimo būdai retai kada būna visiškai saugūs, tuo tarpu viešojo rakto kriptografija leidžia raktu keistis nesaugiais kanalais: šifravimui skirtas raktas nesuteikia galimybės dešifruoti duomenų. Viešojo rakto kriptografijos algoritmai paprastai naudoja du raktus – privatų, kuris yra saugomas paslaptyje ir viešą, kuris yra viešinamas. Ši kriptografijos forma gali būti naudojama dviem tikslams – konfidencialios informacijos šifravimui, bei skaitmeniniams parašams.
Public ledger system (viešoji buhalterijos knyga)
Tai finansinė sistema, kurioje pinigai perduodami ne fiziškai, tačiau viešai paskelbiant, kad jie priklauso nebe tau, o kažkam kitam. Pirmą sykį tokia sistema buvo įgyvendinta prieš maždaug 1000 metų, Japo saloje. Japiečiai naudodavo didžiulius klinties akmens luitus kaip pinigus. Kadangi perkelinėti akmens luitus būdavo labai brangu ir nepatogu, pinigų perdavimas vykdavo viešai paskelbiant, kad šis akmuo priklauso nebe tau, o kažkam kitam. Sistemos esmę puikiai atskleidžia įvykis, kai plukdant vieną akmenį į kitą vietą, kilo audra, ir akmuo nuskendo. Net ir tas nuskendęs akmuo, ateinančius šimtmečius ir toliau taip pat sėkmingai buvo naudojamas transakcijoms atlikti, nes visi žinojo, kad toks akmuo egzistuoja, ir kur jis yra.
Proof-of-work (atlikto darbo įrodymas)
Tai sistema, kurios originali paskirtis buvo kovoti su spam’u. Sistemos veikimo principas yra toks – dabar spam’eriai gali išsiųsti milijonus el. laiškų, nes tai jiems nieko nekainuoja. Jei išsiųsti el. laiškui, kompiuteris turėtų atlikti tam tikrus sudėtingus matematinius skaičiavimus (pvz. galima sistemą sukonfigūruoti taip, kad naudojant 1GHZ procesorių, išsiųsti vieną el. laišką užtruktų 2 sekundes), tuomet paprastiems el. pašto vartotojams tai nesukeltų jokių problemų, tačiau spam’eris galėtų išsiųsti tik keliolika tūkstančių laiškų per parą, arba turėtų įsigyti daug galingos kompiuterinės technikos pagreitinti skaičiavimams, bet tuomet, jam finansiškai nebeapsimokėtu tai daryti. Ši sistema neprigijo tik todėl, kad ji keltų tas pačias problemas ir “legaliems” spam’eriams (pvz. naujienlaiškių siuntėjams).
Byzantine Generals’ problem (Bizantijos generolų problema)
Kaip grupėje (tinkle) žmonių/kompiuterių/etc, pasiekti susitarimą (consensus), esant tokioms sąlygoms:
- Bendravimo (informacijos perdavimo) kanalai tarp tinklo dalyvių yra nepatikimi.
- Dalis tinklo dalyvių gali sukčiauti arba kitaip kenkti tinklui.
- Viską reikia atlikti taip, kad nereikėtų niekuo pasitikėti, o tai reiškia, kad problemą reikia išspręsti neįvedant jokio centrinio kontrolės taško ar hierarchijos (“trusted third-party”) – visi tinklo dalyviai privalo būti lygūs.
Bitcoin kaip transakcijų sistema
Kaip veikia PayPal/Visa/Mastercard/bankai (ir kitos centralizuotos transakcijų sistemos)?
- Kai siunčiate kažkam pinigus per vieną iš šių sistemų, iš tikrųjų jokie pinigai niekur nekeliauja, tiesiog PayPal/Visa/Mastercard/etc sumažina jūsų sąskaitoje esantį balansą, ir padidina balansą toje sąskaitoje, į kurią siunčiate pinigus.
- Vadinasi, pinigai šiose sistemose yra ne kas kita, kaip visų sąskaitų ir toms sąskaitoms priklausančių balansų sąrašas. Pinigų transakcijos yra tiesiog šio sąrašo modifikavimas.
- PayPal/Visa/Mastercard/etc sistemose, šį sąrašą turi ir modifikuoja tik centrinis kontrolės taškas. Niekas, išskyrus centrinį kontrolės tašką, nežino kas vyksta sistemos viduje.
Kaip veikia bitcoin (ir kitos decentralizuotos transakcijų sistemos)?
- Bitcoin sistemoje, visų sąskaitų ir jų balansų sąrašo kopiją, atnaujinamą realiu laiku, turi kiekvienas bitcoin vartotojas (ši kopija yra vadinama “blockchain”).
- Kiekvienas vartotojas realiu laiku tikrina visas vykstančias transakcijas, sulygindamas jas su savo turima sąrašo kopija. Transakcijos, kurios bando išleisti neegzistuojančius (tinklo dalyvių turimose sąrašo kopijose) pinigus, atmetamos (daugumos tinklo). Įvykusiomis laikomos tos transakcijos, dėl kurių sutaria didžioji tinklo dalis.
- Tam, kad vienas žmogus negalėtų susikurti milijono vartotojų ir gauti milijono balsų, naudojama proof-of-work sistema – “balsų” skaičius suteikiamas ne už vartotojų kiekį, bet už vartotojo paskirtų (bitcoin tinklui) kompiuterio resursų kiekį (šis transakcijų patvirtinimo procesas vadinamas “mining”, o tai atliekantis vartotojas vadinamas “miner”).
Kaip veikia bitcoin “mining” procesas?
- Vartotojai, skiriantys savo kompiuterio resursus bitcoin transakcijoms patvirtinti, atlyginami bitcoin valiutos vienetais (BTC), santykinai su tuo, kiek procentų viso bitcoin tinklo galios sudaro tų vartotojų paskirtų kompiuterių resursų galia.
- Tai yra vienintelis būdas, kaip BTC gali atsirasti, jei prieš tai jie neegzistavo. Tokiu būdu į apyvartą išleidžiami nauji BTC.
- Naujai išleidžiamų BTC kiekis yra fiksuotas priklausomai nuo laiko, o ne nuo bendros bitcoin tinklo resursų sumos. Vadinasi, nesvarbu kiek padidės ar sumažės bitcoin tinklo resursų galia – naujai išleidžiamų BTC kiekis nuo to nepasikeis.
- Naujai išleidžiamų BTC kiekį valdo ne koks nors centrinis taškas, o pati atvirojo kodo programa, t.y. visi vartotojai.
- Naujai išleidžiamų BTC kiekis mažėja per pusę kas 4 metus. Bitcoin atsiradimo pradžioje (2009-01-03) tai buvo 50 BTC per 10 minučių (šiuo metu tai yra 25 BTC per 10 minučių). Tokiu būdu, maksimalus įmanomas BTC kiekis yra fiksuotas, ir artėja link, bet niekada negali viršyti, 21 milijono BTC.
- Kiekvienas bitcoin vartotojas gali pasirinkti prie savo siunčiamos transakcijos pridėti transakcijos mokestį, kuris atitenka bitcoin “miner’iams”. Išleidus daugumą galinčių egzistuoti BTC, pagrindiniu “miner’ių” uždarbio šaltiniu taps ne naujai išleidžiami BTC, bet transakcijų mokesčiai.
Bendras BTC kiekis per tam tikrą laiką (milijonais)
Kaip vyksta kreditinių kortelių transakcijos internetu?
- Pirkėjas, norėdamas nusipirkti kažką iš pardavėjo, turi pardavėjui nusiųsti visus savo kreditinės kortelės duomenis. T.y. visam laikui suteikti kiekvienam pardavėjui priėjimą prie visų kortelėje esančių pinigų. Pardavėjas tuos duomenis gali panaudoti nuskaičiuoti didesnei nei sutarta sumai, arba juos parduoti, arba pamesti, ir t.t.
- Be to, šie duomenys yra siunčiami internetu, t.y. nesaugiu informacijos perdavimo kanalu (SSL nepadeda, nes jis yra centralizuotas).
- Todėl, kreditinių kortelių transakcijos patvirtinamos (jų nebeįmanoma atšaukti) tik maždaug per mėnesį. Nepraėjus mėnesiui, kortelės savininkas gali paskambinti į banką, ir pareikalauti atšaukti transakciją, argumentuodamas, kad ją atliko ne jis. Tuomet bankas nuskaičiuoja pinigus iš pardavėjo, ir grąžina pirkėjui. Pardavėjas lieka ir be prekės, ir be pinigų, ir kartais dar turi susimokėti bankui už “darbą”. Bankai dažniausiai palaiko pirkėją, nes jis yra jų tiesioginis klientas.
- Atšaukiama yra 3 – 5 % kreditinių kortelių transakcijų. Norėdami nuo to apsisaugoti, pardavėjai turi skirti daug lėšų, darbo ir laiko, kad patikrintų pirkėjo tapatybę. Tam pirkėjai dažnai būna prašomi pateikti dar daugiau asmeninių duomenų apie save. Šie duomenys taip pat gali būti pavogti, pamesti, ir t.t. (identity theft).
Kaip vyksta bitcoin transakcijos internetu?
- Kiekvienas bitcoin vartotojas gali susikurti neribotą kiekį viešojo/privataus raktų porų. Viešasis raktas – tai bitcoin sąskaitos adresas, privatus raktas leidžia išleisti toje sąskaitoje esančius BTC.
- Norėdamas nusiųsti kitam bitcoin vartotojui pinigų, vartotojas į bitcoin tinklą išsiunčia pvz. tokią žinutę “noriu pervesti 0.0542 BTC iš savo sąskaitos 1a154sd…, į sąskaitą 1bdus62…” ir pasirašo šią žinutę savo privačiu raktu. Jei kas nors šioje žinutėje pakeistų nors tašką ar kablelį, parašas nebegaliotų.
- Kiekvienas bitcoin tinklo vartotojas gali patikrinti, ar parašas yra teisingas, tačiau negali padirbti/nukopijuoti parašo.
- Žinutė yra siunčiama atviru tekstu, neužšifruota (jokia bitcoin sistemoje perduodama informacija nėra užšifruota).
- Kadangi bitcoin sistemoje perduodama informacija nėra užšifruota, ir viskas vyksta viešai, tai paprasčiausiai nėra ką nulaužti. Jei transakcija neįvyko viešai, t.y. jei jos nepamatė ir į savo “blockchain” kopiją neįrašė kiekvienas bitcoin vartotojas – ji neįvyko iš viso.
- Bitcoin transakcijos patvirtinamos (jų nebeįmanoma atšaukti) per 10 – 60 minučių (kreditinių kortelių transakcijos – per 1 mėnesį).
- Net ir nepatvirtintą bitcoin transakciją būtų sudėtinga ir brangu atšaukti, todėl mažos ir vidutinės vertės transakcijas galima priimti ir nelaukiant patvirtinimo.
- Kiekvienas BTC vienetas gali būti padalintas į 100 milijonų dalių (dabartinėje implementacijoje, o potencialiai, į neribotą kiekį dalių), t.y. mažiausias įmanomas nusiųsti BTC kiekis šiuo metu yra 0.00000001 BTC.
Bitcoin privalumai prieš kreditines korteles:
Pirkėjui
- Nereikia pardavėjui suteikti priėjimo prie likusių sąskaitoje esančių pinigų, todėl net ir nesąžiningo ar aplaidaus pardavėjo atveju, kiti pirkėjo sąskaitoje esantys pinigai yra saugūs.
- Kadangi bitcoin sistemoje nėra jokio kontrolės centro, niekas negali uždrausti ar užblokuoti pervedimo, niekas negali “užšaldyti” ar užblokuoti sąskaitos. Tai suteikia didžiulį pranašumą prieš PayPal ir kreditines korteles (pvz. PayPal blokuoja pervedimus 60 valstybių, ir turi teisę “kilus įtarimui” savo nuožiūra užblokuoti sąskaitą 180 dienų).
- Bitcoin pervedimai yra žymiai pigesni (praktiškai nemokami).
- Nereikia niekur registruotis ar prašyti kažkieno leidimo. Užtenka turėti interneto ryšį.
- Nereikia turėti banko sąskaitos.
Pardavėjui
- Kadangi bitcoin pervedimai patvirtinami žymiai greičiau, pardavėjas gali būti ramus, kad jo gauti pinigai staiga nedings praėjus porai savaičių nuo jų gavimo (no chargeback fraud risk).
- Kadangi nėra chargeback risk, pardavėjui nėra reikalo tikrinti pirkėjo tapatybę, taip laimi ir pardavėjas (sutaupo lėšų, darbo ir laiko, kuriuos būtų skyręs pirkėjo tapatypės patikrinimui), ir pirkėjas, nes nerizikuoja, kad jo asmeniniai duomenys bus pavogti (no identity theft risk).
- Priimti atsiskaitymus bitcoin nieko nekainuoja, tai padaryti galima per 5 minutes, nereikia niekur registruotis, prašyti kažkieno leidimo, taigi, nėra ir jokių registracijos, mėnesinių, ar kitokių mokesčių. Palyginimui – Visa/Mastercard/PayPal/etc pasiima 3%-5% nuo pervedimų sumos, neskaitant registracijos, mėnesinių, ir kitų mokesčių.
- Galima pasinaudoti tarpininkų paslaugomis, ir gauti transakcijas savo norima valiuta, pvz. eurais. Tokie tarpininkai šiuo metu ima ne daugiau nei 1% nuo sumos, o jokių kitų mokesčių nėra. Skirtumas tas, kad pardavėjas nėra pririštas prie konkretaus tarpininko, ir visada gali jį pakeisti. To neįmanoma padaryti su PayPal/Visa/Mastercard/etc – atsisakius tarpininko paslaugų, prarandami ir visi per tą tarpininką atsiskaitinėję klientai. Tarpininku naudotis nėra privaloma, jis yra reikalingas tik tam, kad konvertuotų pirkėjo sumokėtus BTC į pardavėjo pageidaujamą valiutą.
- Pasaulyje yra kelis kartus daugiau žmonių turinčių internetą, nei turinčių banko sąskaitą. Vadinasi, priimdamas atsiskaitymus bitcoin, pardavėjas praplečia savo potencialių klientų ratą keliais milijardais žmonių, kurie iki tol jam buvo nepasiekiami.
Bitcoin kaip tinklo protokolas
Kam dar gali būti panaudotas bitcoin protokolas?
- Kadangi bitcoin išsprendė “Bizantijos generolų problemą”, vadinasi, bet kokį “trusted third-party” galima pakeisti viešais (open source) algoritmais.
- Kur yra reikalingas “trusted third-party”? Notarai, nuosavybės registrai, teismai, balsavimai, vyriausybės, akcijų biržos, korporacijos, DNS, SSL…
- Visa tai gali tapti automatizuota, vieša, skaidru. Jokios galimybės korupcijai ar manipuliacijoms.
Bitcoin protokolo trūkumai:
- Anonimiškumo stoka. Kadangi bitcoin transakcija laikoma įvykusia tik tada, kai ją į savo “blockchain” kopiją įsirašo kiekvienas bitcoin vartotojas, vadinasi, neįmanoma atlikti tokios transakcijos, kurios nepamatytų visas pasaulis. Tai reiškia, kad bet kuris žmogus pasaulyje gali matyti kas, kam, kada ir kiek BTC siuntė – visi ši informacija yra vieša. Daugiau informacijos apie šį bitcoin trūkumą, ir galimus jo sprendimo būdus, yra šioje Microsoft Research paskaitoje.
- 51% atakos galimybė. Kadangi susitarimas bitcoin sistemoje pasiekiamas demokratijos būdu, vadinasi, viskas vyksta taip, kaip nusprendžia daugiau nei 50% vartotojų (matuojant pagal jų bitcoin tinklui paskirtą kompiuterių resursų galią). Norint įvykdyti 51% ataką, reikėtų turėti daugiau kompiuterių resursų galios, nei visas likęs bitcoin tinklas. Šiuo metu viso bitcoin tinklo resursų suma yra tūkstančius kartų didesnė už 500 galingiausių šiuo metų egzistuojančių superkompiuterių resursų sumą.