A synopsis (in Lithuanian) from our public mailing list, by ffwd:


Šį savaitgalį gilinaus į tai, kas vyksta kriptolende, ir pasakojau tiem, ką sutikdavau, kiek pats supratau. Deja, daugiau suprantantys pažįstami nešneka lietuviškai, tai…

(Pastabos: netikėtai išsiplečiau, atleiskit. Stengiaus pasakot kaip mamai. Datos apytikslės, nes laiko zonos. Sumos irgi, nes kursai keičias.)


========================================================================
0. KAIP MES IKI ŠITO NUGYVENOM (galima praleist)
========================================================================

Bitkojno pervedimai įgyvendinti paprasta kalba. Ją net sunku pavadint _programavimo_ kalba. O chebra norėjo daryt vis sudetingesnius dalykus. Pervedinėt vieni kitiem ne tik pfennigus pavadinimu BTC, bet ir akcijas; žymėt įsipareigojimus; žaist ruletę; balsuot…

Visa tai galima su bitkojinėm, bet sunkiai. Tai sugalvojo naują protokolą, su tikra programavimo kalba pervedimam, netgi keliom; pavadino Ethereumu, su vienetu eteriu; metus-du testavo; surinko bitkojinių pradiniam kapitalui; ir pagaliau paleido į internetus.

(Kriptovaliutų pasauly crowdfunding'as vyksta paprastai: duodi vienų žetonų - gauni kitų. Pavyzdžiui, duodi bitkojinių - gauni eterio.)

Ant jo gan greitai užsisuko dalykų, vadinamų “Dapps”, “distributed applications”, “paskirstytų taikomųjų programų” - kuriem tinklas ir buvo iš esmės sukurtas. Bet visi laukė “DAO” - “distributed autonomous organisations” - įgyvendinimo.

Ką tos turėtų daryt? Bet ką; bet iš esmės - turėt narių (kurios yra kitos programos - arba valdomos žmonių, arba savarankiškos); rinkt narių lėšas; priiminėt pasiūlymus skirt lėšas; ir pagal nustatytas taisykes skirstyt lėšas pasiūlymam. Viskas.

Kokie reikalavimai iškeliami nariam, kas turi balso teisę, kiek skaičiais to balso turi, kokie pasiūlymai gali būt nagrinėjami - viskas priklauso nuo konkretaus DAO taisyklių.

Uždavinys labai apibendrintas, todėl sudėtingas.

Vieną sprendimą pateikė kompaneiro Slock.it, ir ilgai nelaukdami paleido kodą į tinklą. Pavadino jį, niekšai, “DAO”, bendruomenė jį greitai pervadino į “TheDAO”.


Daugiau skaitalo:


========================================================================
1. KAS BUVA
========================================================================

Paskirstytam tinkle informacija pasiekia mazgus lėčiau, nei centralizuotam. Ir mazgas apie tai sužino tik jei kreipia dėmesį.

Slock.it chebra tikėjos, kad jų autonominė organizacija gaus gal keletą šimtų tūkstančių sąlyginių vienetų,…

(Pastaba: vėl gi, žetonai keičiami į žetonus. Duodi eterio, gauni “TheDAO žetonų” - rimtai, taip ir vadinas.)

…o gavo beveik šymtą liamų. Ethereumo “žetonų kalyklos” lygyje - daugmaž 10% visų žetonų.

Naktį prieš crowdfunding'o pasibaigimą išėjo TheDAO saugumo pažeidžiamumų apžvalga. Tiksliau, darbinis juodraštis. Joje aprašyta ~ 10 pažeidžiamumų - kai kurie kodo lygmeny, kai kurie logikos arba žaidimų teorijos. Tai buvo gegužės 27-ą.

Gegužės 28-ą (9:00 GMT) TheDAO kodas nustojo rinkt eterio žetonus ir pradėjo veikt.

10-11 dieną buvo sukurtas pasiūlymas atskirt dalį lėšų į “dukterinį TheDAO”. Pasiūlymas niekuo neypatingas - tai standartinis mechanizmas nustot dalyvaut organizacijoj ir ištraukt savo lėšas.

(Pasiūlymo esmė: sukuriama TheDAO kopija, eteris nusiunčiamas jos valdomam adresui.[x] Motininės TheDAO žetonai “pašalinami”, t.y. jų balsavimo svoris padalinamas visiem liekantiem.[x] Dukterinės TheDAO žetonai padalinami visiem, kas pasiūlyme balsavo TAIP. 27 dienas po šio pervedimo naujoji dukterinė TheDAO pradeda veikt kaip motininė.)

Po savaitės pasiūlymas buvo priimtas - jame balsavo tik užpuolėja.

Kaip lėšų gavėjo adresas buvo nurodyta kita programa. Toji panaudojo porą ankščiau minėtų dešimties pažeidžiamumų.[x] Vienas iš jų:

Kai gavėjo adresas yra programa, ir nenurodyta konkreti programos dalis, į kurią kreiptis, tai vykdoma dalis “pagal nutylėjimą”. Nėra būdo sužinoti, ar gavėjas yra programa ir ar turi dalį “pagal nutylėjimą”. Todėl prieš vykdant pervedimą reikia pasižymėt, kad pervedimas yra vykdomas (“įjungt šviesoforą”, pažymėt “mutex”).

TheDAO kode atskyrimas į dukterinę programą atliekamas _prieš_ pažymint, kad atskyrimas įvykdytas (o kad vykdomas išvis nepažymima). Gavėjo programos dalis “pagal nutylėjimą” buvo: dar kartą kreiptis į motininę TheDAO programą su prašymu įvykdyt atskyrimą.[x]

Tinkamai apribuojus užpuolėjos programą (kad nesikartotų be galo), galima priverst TheDAO atlikti eterio pervedimą (į tą patį adresą) N kartų, o pažymėt šį faktą tik vieną kartą.

Daugiau skaitalo:


========================================================================
2. ATAI KAS DABA BUS
========================================================================

TODO: Eisiu miegot, štai kas. :) Pradėjau rašyt vidurnaktį.


========================================================================
F. BONUS
========================================================================

[x]: taip pažymėti dabar mano nagrinėjami spėliojimai