Daug programuotojų savęs klausia: ar man dar yra vietos blockchain pasaulyje?..
Ar aš dar nepavėlavau? Nuo ko pirmiausia pradėti? – tokius klausimus aš dažniausiai girdžiu kalbėdamas įvairiose technologijų konferencijose [1][2], į kurias vis dažniau esu kviečiamas pasidalinti savo patirtimi ir ateities įžvalgomis.
Trying to educate more developers why #blockchain needs them and why they should join 😉
Slides:https://t.co/g9HI3YMr9e@VilniusJS #meetup pic.twitter.com/mqzqzGovuC
— Jaro (@chompomonim) May 24, 2018
Mano nuomone, blockchain technologijos ir blockchain startupų sėkmė tiesiogiai priklauso nuo to, kiek talentingų inžinierių į šią sritį pavyks pritraukti.
Šiame tinklaraščio įraše pasidalinsiu įžvalgomis, kurios blockchain sritys yra perspektyviausios, jei norima pradėti gilintis ir programuoti nedelsiant – kaip aš sakau, “nuo šios savaitės”.
ICO projektų įgyvendinimas
Viso pasaulio startuoliai per ICO pritraukė milijardus eurų. Vien Lietuvos startuoliai vos per daugiau nei metus per ICO sugebėjo sutelkti apie pusę milijardo eurų investicijų. Taigi, į šią sritį atėjo labai daug pinigų ir labai daug naujų ir įdomių idėjų. Akivaizdu viena – norint įgyvendinti šias idėjas, reikės labai daug programuotojų rankų.
Aš bijau, kad kai kurie žmonės, kurie pritraukė pinigų, nesugebės įgyvendinti savo pažadų. Ne dėl to, kad jie norėjo apgauti kitus (nors tokių žinoma bus ir nemažai), bet dėl to, kad jie nežinojo, ką galima žadėti, ką ir per kiek laiko galima padaryti – jiems trūko techninių, inžinerinių žinių. Labai trūksta programuotojų su blockchain patirtimi, tokių kurie suprogramuotų tai, į ką žmonės investavo, ko jie tikisi – jų tampa sunku įpirkti net už labai didelius pinigus.
3 realiai veikiančios platformos
Pasaulyje egzistuoja tūkstančiai kriptovaliūtų. Yra šimtai skirtingų blockchain platformų. Ką rinktis? Į ką koncentruotis noris pradėti gilintis į blockchain?
Iš esmės yra tik 3 tipai realiai veikiančių blockchainų:
- Bitcoin ir jo forkai;
- Ethereum platforma;
- Ripple ir ir Stellar (tiems, kas daugiau domisi bankinėmis technologijomis);
Intro bitcoin programuotojams
Kai Satoshi Nakamoto sukūrė pirmąjį bitcoin klientą, tai buvo viena programa (Bitcoin Core), bet realiai Bitcoin galima dalinti į 3 didelius komponentus:
Full node – tai yra ta “duomenų bazė”, kuri pastoviai sinchronizuojasi su kitomis “duomenų bazėmis” ir saugo informaciją apie bitcoin tranzakcijas.
Miningas – tai naujų blokų su transakcijomis kūrimas. Maineriai surenka tranzakcijas tinkle ir pakuoja jas į bloką. Kai blokas atitinka tam tikrus reikalavimus jis yra siunčiamas į Tinklą.
Wallet (piniginė) – yra ta vieta, kur mes matome bitcoin balansą, transakcijų istoriją ir galime sukurti naujas transakcijas. Dėl privatumo viena piniginė gali turėti daug adresų. Piniginių yra labai įvairių: yra desktop bei mobiliosios piniginės, yra specializuotos (e.g. exchange wallet). Teoriškai kiekvienas kasos aparatas priimantis kripto valiuta turi savyje piniginę. Dauguma ICO, tam kad jų tokenai galėtų judėti jų sprendimuose turės turėti savo specializuotas piniginęs.
Dėl šios priežasties piniginėms reikia itin daug programuotojų darbo valandų.
Intro Ethereum programuotojams
Visi šie trys komponentai yra ir Ethereum. Tačiau prie viso to, Ethereum leidžia kurti turing compleate smart kontraktus (maža programa gyvenanti blockchain’e).
Ethereum smart kontraktai puikiai tinka nuosaviems tokenams leisti. Apie 98 proc. ICO čia “leidžia” savo monetas.
Iliustracijai keli smart kontraktų pavyzdžiai:
- Du partneriai kuria verslą ir sutaria, kad jei suma, kurią jie išima iš įmonės sąskaitos, yra didesnė nei vienas ethereum, reikalingas abiejų patvirtinimas. O per mėnesį negalima išimti daugiau negu vieno ethereum be abiejų sutikimo. Tokią sutartį galima aprašyti kodu. Jei imi mažiau nei vienas eth, ok, bet skaičiuojama, kiek išėmei per mėnesį, ir jei daugiau – užrakinama.
- Per ICO išleidžiami tokenai ir paskelbiama, kad projekto komanda turi dvidešimt procentų tokenų, bet jais negali disponuoti vienerių metų bėgyje. Po pusmečio bus galima disponuoti dešimt procentų, dar po pusmečio – kitais dešimt procentų.
- JaroCoin darbo kalendorius irgi gali būti sukurtas smart kontrakto pavidalu. Pavyzdžiui, žmogus siunčia į ethereum tam tikrą informaciją – noriu rezervuoti konkrečią Jaro darbo dieną. Jei Jaro patvirtina, kad jis sutinka imtis darbo, reikia nusiųsti kažkiek JARO į šią datą ir ji rezervuojama.
Bet ne viskas taip paprasta – daugeliui smart kontraktų įgyvendinti reikalinga tiksli išorinė informacija. Pats Ethereum negali kreiptis į įšorę, jam reikalingas patikimas “oracle service” kuris jam gali suteikti duomenų.
Paaiškinsiu per pavyzdį:
Sudedame pinigus ir sudarome draudimo sutartį, kurios esmė – jei per Olimpines žaidynes bus blogas oras, tu gausi draudimo išmoką. Bet – kaip žinoti, koks yra oras?.. Reikalingas Oracle kuriuo mes pasitikėsime (pasitikėsime jo privačiu raktų pasirašytais duomenimis). Dažniausiai tai atskiras micro-service, kuris reguliariai siunčia informaciją į ethereum ir praneša; dabar trylika laipsnių, dabar vienuolika, šiandien lyja, šiandien saulėta ir t.t.
Daugeliu “protingų kontraktų” reikia išorinių duomenų; Tad ir prie Oracle programavimų tikrai atsiras nemažas poreikis kvalifikuoto programuotojų darbo.
Wallets, wallets, wallets…
Blockchain technologijai reikia labai daug, įvairaus tipo ir pritaikymo piniginių.
Grįžtant prie pavyzdžio apie draudimo sutartį: jeigu egzistuoja tam tikras puslapis, prie kurio prisijungęs, galiu matyti, kiek turiu draudimo sutarčių bei galiu sukurti naujų – vadinasi, yra įdiegta tam tikra mini piniginė, kuri rodo mano draudimo sutartis bei jų statusą. Kiek įmokų padariau, kiek išmokų gavau…
Visi tokenai, jei norės, kad žmonės jais naudotųsi ir sumokėtų už paslaugas, turės turėti pinigines.
Šiek tiek pasvajokime – atvažiuoju su savo self driving elektromobiliu į degalinę ir noriu, kad pats automobilis susimokėtų už elektrą – tam reikalingos dvi piniginės: elektromobilyje ir degalinėje.
Visos kriptobiržos, kuriuose prekiaujama kriptovaliūtomis turi pinigines (atskira piniginė kiekvienai kriptovaliutai).
Pavyzdžius galima vardinti ir vardinti, bet moralas paprastas. Piniginių reikia visokių, piniginių reikia daug.
Blockchain reikia taves!
Visai blockchain ekosistemai reikia daugiau programinės įrangos inžinierių. Yra daug perspektyvių sričių – tai šansas programuotojams išmokti naujų technologijų ir gerai uždirbti. Jei į blockchain “neateis” daugiau programuotojų – ”burbulas” gali sprogti gerokai greičiau negu to tikimasi.