Svatko može napraviti pametni ugovor
Pametni ugovori olakšat će vam poslovanje u novoj decentraliziranoj ekonomiji. Većina pametnih ugovora sklapa se na DApp (decentraliziranim aplikacijama) platformama poput Ethereuma, Liska ili Cardanoa, a velike tehnološke tvrtke poput IBM-a pokreću vlastiti posao koji ih gradi. To ima smisla, jer postoji mnoštvo tvrtki koje bi radije vjerovale tehnološkom divu poput IBM-a da će izraditi proizvod za njih nego da se same bave novom tehnologijom.
Razvoj pametnog ugovora može postati tržišna vještina za programere koji ih znaju izgraditi. Iznenađujući dio pametnih ugovora je da ih nije teško izgraditi. DApp platforme i okolni alati omogućuju ih stvaranje i jednostavnu izgradnju vlastite blockchain tehnologije.
Razvojne programere Javascripta blockchain ne bi trebao zastrašiti. Uz malo više razumijevanja, blockchain postaje poput većine drugih okvira koje biste obično implementirali.
Planiranje pametnog ugovora
Prilikom prvog stvaranja pametnog ugovora trebali biste odlučiti što želite da vam olakša.
Za ovaj se primjer usredotočimo na prodaju ulaznica. Ulaznice imaju ogromnih problema sa skalerima koji kupuju tonu karata i s ljudima koji koriste lažne karte. Blockchain tehnologija se ističe u mnogim stvarima; dvoje od njih olakšavaju transakcije i prate podatke.
Zbog toga jednostavna linija koda u ugovoru može ograničiti cijene preprodaje ulaznica. To sprječava skalere da kupe hrpu karata jer bi ih prodaja sada bila neisplativa. Korištenjem pametnih ugovora također možete generirati jedinstvene tokenizirane ulaznice koje su specifične za vlasnika i ne mogu se krivotvoriti. Ako ste netko tko voli prisustvovati koncertima, festivalima i sportskim događanjima, možete vidjeti privlačnost.
Opcije platforme DApp
Sljedeće što je potrebno odabrati je na kojoj DApp platformi će se graditi ugovor.
Ethereum je najveća i najutvrđenija platforma. Također ima najaktivniju bazu korisnika, a u bilo kojoj vrsti razvoja aktivna zajednica koja odgovara na vaša pitanja ključna je za dovršetak vašeg proizvoda. Međutim, jedan je nedostatak taj što koristi vlastiti jezik Solidity za pisanje ugovora.
Druga opcija, Lisk, je DApp platforma sa sjedištem u Javascriptu, tako da nećete dobiti novu sintaksu. Također ima vlastitu DApp trgovinu (mislite na Google play ili iTunes store) gdje možete objaviti svoju aplikaciju kada završite.
Možete i isprobati Cardano koji je sagradio osnivač Ethereuma i ima velik, impresivan tim. Njihov je proizvod još uvijek nov, ali ako ispune svoje obećanje da će razdvojiti podatke o ugovoru od podataka o transakcijama, to bi mogao biti pravi izbor za pomicanje naprijed.
Za sada idemo na Ethereum ili Lisk kao platformu izbora.
Kao programer Javascripta, Lisk se može činiti logičnom odlukom jer već imate iskustva s tim jezikom.
Međutim, ne računajte Ethereum. Razvojna zajednica toliko je robusna da svako nerazumijevanje Solidnosti možete nadoknaditi suvišnim dostupnim informacijama. Ethereum također uključuje okvir Truffle, koji je stvorio Consensys, a koji vam lako omogućuje integraciju i testiranje vaše aplikacije pametnog ugovora.
Izgradnja pametnog ugovora
Čvrstoća zvuči zastrašujuće nego što zapravo jest. Prvo što možete primijetiti kod jezika je zapanjujuća sličnost s JavaScript razredom. Postoje ipak neke suptilne razlike, poput zahtjeva sa zarezom i upotrebe funkcija raspršivanja. The funkcije raspršivanja koriste se za stvaranje jedinstvenih ključeva i njihovo mapiranje u druge varijable. U našem primjeru koristili bismo ih za stvaranje jedinstvenih ulaznica i mapiranje na račune koji ih kupuju.
Kada gradite svoj prvi Ethereum ugovor, preporučujemo korištenje razvojnog okruženja na remix.solidity.org. Omogućuje vam interaktivno okruženje za razmještanje ugovora i interakciju s njim s različitih Ethereum računa. Padajući izbornik omogućuje vam promjenu računa i upotrebu bilo kojeg poziva funkcije vašeg ugovora pritiskom na odgovarajuće gumbe.
Na što treba paziti
Jedinstvena stvar u vezi s Solidity je uporaba adrese. Svi Ethereum računi imaju jedinstvene adrese i te adrese predstavljaju strane koje se slažu s ugovorom.
U našem primjeru ugovora za prodaju ulaznica, onaj tko kreira događaj imao bi priloženu adresu računa. Kad god netko kupi novu kartu, sredstva se prebacuju izravno vlasniku događaja, uzimajući posrednika. Kupac uputi poziv, a sredstva se preuzimaju s njegovog računa, identificiraju prema adresi i prosljeđuju vlasniku.
Solidity također ima jedinstveni način spajanja sredstava na poziv pametnog ugovora. Svaki poziv funkcije dolazi s porukom. Ova poruka može sadržavati jedinstvene podatke pošiljatelja, uključujući adresu računa, kao i etersku vrijednost koju žele poslati vlasniku ugovora.
Također je vrijedno napomenuti da u Solidityju nisu svi pozivi po ugovoru besplatni. Za promjenu podataka u ugovoru, npr. kupiti ili upotrijebiti kartu, mreža strojeva koja potvrđuje izvršenje ugovora naplaćuje “plin”. Plin je u osnovi cestarina za iskorištavanje računalne snage na mreži.
Ostali pozivi koji samo traže ugovor o informacijama, na pr. traženje cijene karte ili dobivanje broja preostalih karata su besplatni. To je zato što se nijedna informacija o ugovoru ne ažurira; u tim aktivnostima nema rizika.
Povezivanje s JavaScriptom
Najizazovniji dio rada u Solidityju je integracija vašeg ugovora s Javascriptom. Sve se to radi pomoću Okvir tartufa.
Prvi korak u integraciji vašeg ugovora je njegova primjena i migriranje na vašu testnu mrežu. Tartuf nudi vlastiti RPC, zasebnu mrežu za testiranje Ethereuma, nazvanu Ganache. Ovaj vam postupak daje JSON verziju ugovora koju možete nazvati koristeći adrese vaše testne mreže putem vaše Javascript aplikacije.
Ako tražite više informacija o ovom procesu, Truffle sjajno radi to što ih iznosi u svojim dokumentima i primjerima koji se nalaze na njihovom web stranica.
Još jedna teška stvar koju treba prevladati pri stvaranju pametnog ugovora je kako ga konceptualizirati. Razmišljajući o blockchainu poput web programera, možete ga gledati kao na zamjenu za bazu podataka. Umjesto jednog centraliziranog izvora za sve vaše podatke, slijedi lanac ugovora i transakcija koji vode do informacija.
Budući da je blockchain poput baze podataka, prirodno je povezati ugovor sa svojim poslužiteljem. Stvaranje API sloja za ugovor olakšava pristup informacijama s klijentske strane aplikacije kao i izrada AJAX zahtjeva. Postoji dobro primjer kutija na web mjestu za tartufe radi dobivanja ove postavke.
Iako je blockchain sličan bazi podataka, nije potpuno identičan. Ima potpuno jedinstveni protokol koji uključuje transakcije, heširanje i stvaranje blokova. Ovo je možda najteži dio razvoja Ethereuma. U našem primjeru prodaje ulaznica, ugovorni poziv za kupnju karte morate strukturirati drugačije od poziva za korištenje karte. Virtualni stroj Ethereum izbirljiv je u vezi s tim pozivima.
Ovo je još jedno područje u kojem je korisna velika razvojna zajednica Ethereuma. Postoji velika vjerojatnost da je na svako vaše pitanje već odgovoreno na Ethereum Stack Exchangeu, a ako ne, drugi programeri više su nego spremni pomoći vam kroz vaš ugovor.
Zaključak
Ovaj članak nije trebao naučiti kako početi pisati Solidity. Umjesto toga, trebao vam je pružiti putokaz o tome što je pametni ugovor i kako ga možete primijeniti u Javascript aplikaciji. Nadogradnja blockchaina moguća je za svakoga tko poznaje web razvoj.
Tehnologiju koja stoji iza blockchaina možda je teško razumjeti, ali kao i bilo koji drugi okvir ili alat za programere, ne morate nužno znati kako je izgrađen da biste ga mogli koristiti. Ne dopustite da vas tajanstvena aura blockchaina zaustavi u izgradnji nečega sjajnog.