DAML je ekosustav otvorenog koda za izgradnju distribuiranih aplikacija temeljenih na pametnim ugovorima. Njegov osnovni jezik pametnog ugovora je namjenski izgrađen funkcionalni jezik specijaliziran za opisivanje složenih distribuiranih poslovnih tijekova posla. Jedinstvena prodajna točka DAML-a je jednostavna – usredotočite se u potpunosti na logiku aplikacije, ne brinući se o sitnosti temeljne infrastrukture, bilo da je to distribuirana knjiga, blockchain ili baza podataka. Prije nego što se bavimo DAML-om, steknimo brzo razumijevanje njegove temeljne tehnologije i pametnih ugovora.

Knjige, blokchain i pametni ugovori

Knjiga je vremenski označena serija nepromjenjivih zapisa podataka. Blockchain je najpoznatija vrsta raspodijeljeni knjiga, onaj kojim upravlja konzorcij računala, a nije u vlasništvu niti jednog entiteta. U blockchainu se unosi glavne knjige pakiraju u niz blokova, a svaki blok unosa je osiguran i vezan za prethodni putem kriptografskih principa. Tri svojstva čine blockchain doista posebnim:

  • Distribuirano: Blockchain je domaćin peer-to-peer mreži. Svaki čvor ove mreže preuzima i održava kopiju blockchaina unutar svog sustava. To osigurava da svi podaci koji su pohranjeni unutar blockchaina dijele svi, a ne da ih čuva jedan centralni entitet u sustavu.
  • Transparentnost: Budući da svaki čvor u mreži pohranjuje verziju blockchaina, svi oni mogu vidjeti podatke koji su pohranjeni u njima. Kao takvi, svi podaci unutar blockchaina su transparentni.
  • Nepromjenjivost: Ovdje je još jedna uzbudljiva stvar koju treba zapamtiti jest da se nakon što se nešto unese u blok, ne može mijenjati. Ovo svojstvo blockchaina naziva se “nepromjenjivost”.

Kao što možda već znate, blockchain tehnologija došla je do izražaja pojavom Bitcoina. Ovo je bio izum toliko revolucionaran da su se ljudi počeli pitati postoji li niz susjednih, širih tehnologija izvan nepovjerljivog prijenosa vrijednosti. Ethereum je na kraju upao na kripto tržište i predstavio svijet “pametnim ugovorima” koji su dovoljno fleksibilni za pisanje cijelih distribuiranih aplikacija ili dApps-a podržanih blockchainom. 

Pametni ugovori – donošenje blockchaina masama

Razmislite što je ugovor i kako on funkcionira u tradicionalnom smislu. Ugovor je pravno obvezujući dokument dviju strana koji je ujedno i pravno izvršan. Pametni ugovor djeluje slično, osim dvije modifikacije koje mijenjaju igru ​​- pravila definirana ugovorom strojno su čitljiva i izvršna i provode se pomoću distribuiranog računalnog sustava, a da nijedna strana u ugovoru nema dovoljno kontrole da ga sama nadjača.

Dati vam pravilnu definiciju – Pametni ugovor digitalni je ugovor namijenjen olakšavanju, provjeri ili provođenju pregovora ili izvršenja ugovora. Omogućuje višestrukim stranama da to čine izravnom međusobnom interakcijom, bez prolaska preko treće strane.

Izraz “pametni ugovor” skovao je kriptograf Nick Szabo još 90-ih u svom članku “Pametni ugovori: gradivni blokovi za digitalna tržišta.”Da bismo razumjeli filozofiju koja stoji iza njihovog rada, uzmimo primjer Szabovog automata.

Evo kako obično komunicirate s automatom:

  • Vi odabirete željenu stavku.
  • Stavili ste nešto novca u stroj.
  • Stroj vam daje predmet.

Prilično izravno, zar ne? Međutim, dvije su stvari koje morate primijetiti tijekom cijele ove interakcije:

  • Svaki se korak ne može izvršiti dok se prethodni korak ne ispuni. Npr. ne možete uložiti novac dok ne odaberete ono što želite. Također, stroj vam ne može dati predmet dok ne uložite novac.
  • Tijekom cijele ove interakcije vi i stroj izravno komunicirate jedni s drugima. Ne postoji treća strana, poput trgovca, između vas dvoje.

Ovo su osnovna načela koja stoje iza pametnih ugovora:

  • Dvije strane povezane pametnim ugovorom mogu izravno međusobno komunicirati.
  • Svaki korak u pametnom ugovoru može se izvršiti tek nakon izvršenja prethodnog koraka.

Uključivanjem ove jednostavne inovacije, Ethereum je uspio stvoriti protokol s kojim su korisnici mogli izravno komunicirati dApps (distribuirane aplikacije) bez prolaska preko treće strane. Ethereum koristi jezik nazvan “Solidity” za kodiranje pametnih ugovora. Međutim, Ethereum je, kao i većina drugih popularnih platformi pametnih ugovora poput EOS-a i TRON-a, javni blockchain. Javni blockchain ima otvorenu mrežu i svatko mu se može pridružiti bez rezervacija. 

Ako bi poduzeća koristila blockchaine, javni blockchains ne bi uvijek odgovarali njihovim slučajevima korištenja, pogotovo ako žele ili zahtijevaju da njihove interakcije budu u potpunosti privatne. Poduzećima je potrebna posebna vrsta blockchaina koja se naziva “odobreni blockchains”. O njima više u nastavku. 

Što se zahtijeva od poslovnih blockchaina?

Za razliku od javnih blockchaina, dozvoljeni / privatni blockchain nije otvoren za sve. Da biste sudjelovali u mreži, morat ćete dobiti dozvolu za to od mreže. Postoje neke značajke koje će ovi poduzetnički blockchains morati ispuniti:

  • Visoke performanse: Prvo, poduzećima će trebati blockchain koji može obraditi velik broj transakcija. Većina javnih blockchaina ne može dosljedno raditi ni 100 transakcija u sekundi.
  • Visoka razina otpornosti: Enterprise blockchains moraju se moći vratiti iz zastoja i potencijalnih scenarija neuspjeha. Da bi osigurali visoku dostupnost, moraju biti u stanju izbjeći probleme koji mogu dovesti do velikih prekida. Da bi imao tu razinu elastičnosti, sustav bi trebao pretpostaviti da se kvarovi moraju dogoditi i mora biti spreman da sustav nastavi raditi tijekom ovih situacija.
  • Značajke privatnosti: Javni blockchain, po definiciji, nije privatan. Institucije moraju postupati s puno povjerljivih podataka i propisa, kao i držati određene podatke klasificiranima zbog konkurentske prednosti i razloga intelektualnog vlasništva (zbog čega im je prije svega potrebno zatvoreno / odobreno okruženje).

Uz okruženje pogodno za poduzeća, trebat će im i specijalizirane pametne ugovore. Javni pametni ugovor Ethereuma temelji se na čvrstoći, ali postoje specifične značajke koje bi jezik poslovnog pametnog ugovora trebao imati. O sljedećim ćemo svojstvima razgovarati.

Svojstva poslovnih jezika pametnih ugovora

Glavni problem s redovitim pametnim ugovornim jezicima je taj što su ili dizajnirani ili nadahnuti jezicima koji su izgrađeni za izvršavanje tradicionalnijih sustava. Oni su obično na niskoj razini i usko povezani s infrastrukturom na kojoj rade. To ih čini teškim i sporim za programiranje. Programeri su dosljedno stvarali ugovore s korisnim programskim pogreškama, koje su nanijele značajnu štetu kripto ekosustavu. U 2016. godini zajednica Ethereum iz prve je ruke iskusila što mogu učiniti ovi sub-optimalno kodirani pametni ugovori. DAO je trebao biti najvažniji pametni ugovor ikad kodiran na Ethereumu. Međutim, jednostavna greška omogućila je hakeru da iskoristi ugovor i sifonira Ether vrijedan preko 150 milijuna dolara. Ovaj je hak bio toliko poražavajući da se protokol Ethereum na kraju podijelio na Ethereum i Ethereum Classic.

Ono što nam sve ovo u osnovi govori jest da će kod kodiranja jezikom poput Solidity koder morati uzeti u obzir sljedeće:

  • Budite oprezni prema napadima poput ponovnog ulaska, prekomjernog i prekomjernog izljeva, napada na kratke adrese itd.
  • Treba razmotriti svaku djelomičnu državu kroz koju će ugovor proći. 
  • Ista operacija može značiti različite stvari na različitim jezicima. Na primjer. dok se solidnost u velikoj mjeri posuđuje iz JavaScript-a, iste operacije mogu djelovati različito u svakom jeziku.

Duga priča, ne možete samo nasumično odabrati jezik i napisati svoje ugovore. Morat ćete razumjeti sve potencijalne posljedice po vašem izboru. Digital Asset proveo je godine proučavajući izvršavanje pametnih ugovora kako bi suzio glavna svojstva koja su potrebna za pametne jezike poslovnih ugovora:

  • Sklapanje ugovora mora biti dobrovoljno. Kad sve strane dobrovoljno sklope ugovor, postaju obvezama izvršiti sve potrebne radnje najbolje što mogu.
  • Samo stranke koje su pogođene ugovorom trebale bi moći vidjeti posljedice koje na njih utječu (i samo one).
  • Stranke bi trebale biti u stanju razumno predvidjeti kako će se ugovor odvijati u budućnosti. Trebali bi biti u stanju predvidjeti sve države koje bi ugovor mogao potrajati. 
  • Programeri pametnih ugovora trebali bi biti u mogućnosti koristiti jezik koji im omogućuje da se u potpunosti usredotoče na svoju poslovnu logiku, umjesto na pojedinosti niske razine poput heširanja, kriptografije i konsenzusnih protokola.

Što je DAML?

DAML je pametni ugovorni jezik koji je izgrađen posebno za distribuirane glavne knjige i omogućuje sigurnu, nedvosmislenu i preciznu specifikaciju poslovne logike u stvarnom vremenu. Evo nekoliko bitnih stvari o DAML-u koje morate imati na umu:

  • DAML je jednostavno pisati i čitati, tako da osoba koja razumije posao koji se definira može provjeriti je li kôd usklađen s njegovom namjerom.
  • DAML se brzo gradi i implementira, izuzetno brzo možete prijeći od nule do kraja do kraja proizvodne aplikacije.
  • To je jezik ugovora, gdje su sporazumi i strane izvorni konstrukti na tom jeziku.
  • Programeri će moći točno opisati kako se formiraju ugovori i koje su strane u njih, izravno i neizravno, uključene.
  • Programeri se ne trebaju brinuti o konstrukcijama na niskoj razini i mogu se u potpunosti usredotočiti na stvaranje poslovne logike.
  • DAML pruža visoku razinu privatnosti i apstrakcije. DAML sustav automatski će pratiti strane kojima je dopušteno vidjeti detalje svakog ugovora. Te će se informacije također proslijediti temeljnoj knjizi kako bi se osiguralo da joj se pošalju samo podaci koje je određena strana ovlaštena vidjeti..
  • Jednom kada se DAML program izvrši, on stvara dobro strukturiran i razumljiv za ljude revizijski trag koji će pomoći objasniti dvije stvari: zašto je izvršena svaka radnja i uloga svake strane u tom pametnom ugovoru.
  • U DAML-u nadogradnje su definirane u kodu i mogu se izvršiti na neometan način s nula zastoja. Možete jednostavno dodati nove uloge i tijekove rada postojećim rješenjima bez prolaska kroz bilo kakve komplikacije.

DAML – Funkcionalni jezik

Za razliku od imperativnih jezika, DAML je funkcionalan jezik. U sljedećim odlomcima pogledat ćemo što to znači.

Imperativni programski jezici

Tradicionalni programski jezici poput C ++, Java i Solidity imperativni su programski jezici. U imperativnom programskom jeziku programer mora napisati sve upute koje računalo treba poduzeti da bi postiglo cilj. Uzmimo primjer na C ++-u što pod tim podrazumijevamo. 

Pretpostavimo da želimo ispisati brojeve od 1 do 100 

int i = 0;

Sljedeći:

i ++;

printf (“% i”, i);

ako ja < 100) ići naprijed;

int a = 5;

int b = 3;

int c;

c = a + b;

Kao što vidite, postupak dodavanja preuzima višestruke upute i svaka uputa neprestano mijenja stanje programa jer se sve izvršavaju pojedinačno.

Postupak dodavanja trajao je četiri upute, a to su:

  • Proglašavanje cijelog broja “a” i dodjeljivanje vrijednosti 5.
  • Proglašavanje cijelog broja “b” i dodjeljivanje vrijednosti 3.
  • Proglašavanje cijelog broja “c”
  • Dodavanje vrijednosti i b i njihovo spremanje u c.

Funkcionalni programski jezici

U ovom stilu programiranja središnje mjesto imaju funkcije, a ne upute. Umjesto pisanja uputa o tome kako izračunati rezultat ili izvršiti algoritam, željeno ponašanje opisuje se kao u redovnoj matematičkoj funkciji, preslikavanjem ulaza funkcije u izlaze,  

Funkcionalno programiranje posebno je pogodno za pametne ugovore jer je način sastavljanja funkcija sličan načinu interakcije ugovora. Ugovor koji kaže “Ako Alice daje Bobu 100 dolara, Bob daje Alice kartu”, sličan je funkciji koja preslikava 100 dolara na kartu. Ako postoji drugi ugovor u kojem se kaže „Ako Alice pokloni kartu Bobu, Bob pusti Alice kroz vrata“, ovo je druga funkcija koja mapira kartu kako bi joj se odobrio pristup. Baš kao i funkcije, ovi ugovori prirodno čine: “Ako Alice daje Bobu 100 dolara, Bob pušta Alice na vrata”.

Ovo čisto ulazno-izlazno ponašanje koje je neovisno o stanju čini funkcionalni pristup lakšim za matematičko zaključivanje: imajući funkcije koje se za izračunavanje svojih rezultata oslanjaju isključivo na svoje ulaze, programer se može usredotočiti na ispravnost pojedine funkcije, a sustav tipa omogućuje da bi se sigurno i predvidljivo sastavili zajedno. Zbog toga se funkcionalni programi smatraju sigurnijim pristupom stvaranju pametnih ugovora. DAML je funkcionalan jezik i omogućuje programerima da uvrsti poslovno rezoniranje u jako otkucane matematičke funkcije. “Snažno upisani” u ovom kontekstu znači da način rada svake funkcije može automatski provjeriti DAML-ovim alatima i vremenom izvođenja. To pomaže programerima da točno obrazlože kako će svaka komponenta programa utjecati na stanje glavne knjige.

DAML kod

Da biste isprobali DAML, možete 1) instalirati Visual Studio kôd i DAML SDK ili upotrijebite 2) webIDE (više u svrhu učenja)

predložak Token

  s

    vlasnik: Party

  gdje

    vlasnik potpisnik

Ono što vidite gore je jednostavan DAML predložak. Predložak definira vrstu ugovora koji se može stvoriti i tko ima pravo na to. Ugovori su primjer predložaka. U gornjem primjeru naziv predloška je “Token”. Podaci sadržani u ugovorima nazivaju se “argumenti”. Dakle, pogledajmo argumente deklarirane unutar ovog ugovora.

  • Blok “sa” definira vrstu podataka argumenata unutar predloška navodeći imena polja i njihove tipove. Gornji predložak ima jedno polje pod nazivom “vlasnik” tipa “Party”.
  • Blok “gdje” deklarira opseg polja. U našem predlošku blok “gdje” izjavljuje polje “vlasnik” kao potpisnika ugovora. Jednom proglašeno potpisnikom, polje će steći ovlaštenje za izradu ili arhiviranje ugovora. 

Tipični ugovorni kod u DAML-u sadrži četiri komponente:

  • Model podataka: Upotrijebite DAML za jednostavno modeliranje složenih shema podataka za vašu aplikaciju (koja vrsta podataka je potrebna za ugovor)
  • Drobnozrnata dopuštenja: Navedite dopuštenja unutar ugovora (tko može stvoriti i arhivirati ugovor, tko može vidjeti određene korake izvršenja itd.)
  • Poslovna logika: Opis radnji u ugovoru (što ugovor zapravo čini i koji su koraci u njegovom izvršenju)
  • Ispitivanje temeljeno na scenariju: Testirajte poslovnu logiku koju ste naveli i razne tijekove rada.

Sad kad znamo četiri komponente i izradu predloška, ​​pogledajmo punopravni DAML kod. 

predložak Gotovina

  s

    izdavatelj: stranka

    vlasnik: Party

    iznos: decimalni

  gdje

    izdavatelj potpisnik

    kontrolor vlasnik može

      Prijenos: ContractId Cash

        s

          newOwner: Party

        napravite ovo s owner = newOwner

predložak TicketAgreement

  s

    organizator: Party

    vlasnik: Party

  gdje

    potpisnik organizator, vlasnik

predložak TicketOffer

  s

    organizator: Party

    kupac: Party

    cijena: decimalna

  gdje

    organizator potpisnik

    kupac promatrač

    kontroler kupac može

      Prihvaćam: ContractId TicketAgreement

        s

          cashId: ContractId Cash

        čini

          unovčiti <- donijeti gotovinuId

          tvrditi (cash.amount == cijena)

          vježbati cashId Transfer sa

            newOwner = organizator

          stvoriti TicketAgreement s

            organizator; vlasnik = kupac

validateTicketPurchase = scenarij

  izdavatelj <- getParty “Izdavatelj”

  organizator <- getParty “Organizator”

  kupac <- getParty “Kupac”

  unovčiti <- predati izdavatelj do

    stvoriti gotovinu s

      izdavatelj; vlasnik = kupac; iznos = 20,0

  ponuda <- predati organizator učiniti

    stvoriti TicketOffer sa

      organizator; kupac; cijena = 20,0

  predati kupac učiniti

    ponuda vježbanja Prihvati s

      cashId = gotovina

U redu, ovdje imamo niz predložaka koji zajedno rade na stvaranju ugovora u kojem korisnik kupuje ulaznicu od organizatora. Dakle, prema kodu u boji, u gornjem kodu imamo četiri specifična bloka:

Model podataka – crvena 

Kao što je prethodno spomenuto, predlošci imaju podatkovna polja koja su potrebna za njegovu deklaraciju i izvršavanje. Pogledajmo predložak TicketOffer:

predložak TicketOffer

  s

    organizator: Party

    kupac: Party

    cijena: decimalna

Ovaj predložak deklarira tri polja:

  • „Organizator“ i „kupac“ tipa „Party. Kao što i samo ime govori, ovo dvoje su stranke ovog ugovora.
  • Tada imamo “cijenu” koja je decimalnog tipa.

Drobnozrnata dopuštenja – zelena

  gdje

    organizator potpisnik

    kupac promatrač

    kontroler kupac može

      Prihvaćam: ContractId TicketAgreement

Nakon deklariranja polja u predlošku, ovaj odjeljak deklarira dozvole dane argumentima strana. Dakle, u ovom predlošku organizator je jedini potpisnik i ima moć pokretanja ili arhiviranja ugovora.

Kupac je i promatrač i kontrolor. Promatrač je netko tko može vidjeti sve države kroz koje prolazi ugovor. Također, kako je navedeno u predlošku, kupac može prihvatiti ugovor o karti, što će rezultirati arhiviranjem i stvaranjem novog ugovora “TicketAgreement”.

Poslovna logika – ružičasta

    čini

          unovčiti <- donijeti gotovinuId

          tvrditi (cash.amount == cijena)

          vježbati cashId Transfer sa

            newOwner = organizator

          stvoriti TicketAgreement s

            organizator; vlasnik = kupac

Dakle, proglasili smo polja i dodijelili im vidljivost u okviru ugovora. Sada je vrijeme da objavimo poslovnu logiku i tijek rada ovog predloška. Ugovorom će se prvo provjeriti je li gotovina uzeta od kupca jednaka cijeni karte ili ne. Ako jest, tada se vlasništvo nad ulaznicom prenosi na kupca, dok se novac prenosi na organizatora.

Ispitivanje temeljeno na scenariju – plavo

validateTicketPurchase = scenarij

  izdavatelj <- getParty “Izdavatelj”

  organizator <- getParty “Organizator”

  kupac <- getParty “Kupac”

  unovčiti <- predati izdavatelj do

    stvoriti gotovinu s

      izdavatelj; vlasnik = kupac; iznos = 20,0

  ponuda <- predati organizator učiniti

    stvoriti TicketOffer sa

      organizator; kupac; cijena = 20,0

  predati kupac učiniti

    ponuda vježbanja Prihvati s

      cashId = gotovina

Konačno, u ovom odjeljku možete testirati poslovnu logiku i tijekove rada kako biste u stvarnom vremenu provjerili radi li vaš kod ili ne. Ovo će u stvarnom vremenu biti posebno korisno za programere. Možete komunicirati s glavnom knjigom koristeći više strana i odmah provjeriti učinke svojih transakcija. Rezultati scenarija iz gornjeg primjera izgledat će ovako

DAML - Ekosustav otvorenog koda za izgradnju distribuiranih aplikacija temeljenih na pametnim ugovorima

Ako ste zainteresirani za učenje DAML-a, pogledajte njihov dokumentacija.

Slučaj stvarne upotrebe – Zamjena ASX-ovog ŠAHA

DAML je već pronašao stvarni slučaj upotrebe. Australska burza vrijednosnih papira (ASX) jedna je od vodećih svjetskih burzi financijskih tržišta. Vrijednost je jedna od 10 najboljih svjetskih burzi vrijednosnih papira i najveće tržište derivata kamatnih stopa u Aziji. Budući da je to prvo veliko financijsko tržište koje se otvara svaki dan, ono se neprestano svrstava među pet najboljih svjetskih burzi.

Danas je CHESS osnovni sustav koji izvodi procese kliringa, namire, registracije imovine i nekih drugih poštanskih usluga koje su ključne za uredno funkcioniranje australskog tržišta. CHESS je i dalje stabilan i učinkovito pruža te usluge, što pokazuje prosječna mjesečna dostupnost usluga CHESS-a u posljednjih pet godina od 99,99%. Iako ništa ne ukazuje na to da CHESS neće nastaviti pružati usluge na ovoj razini usluge, ASX je odlučio zamijeniti CHESS tehnologijom raspodijeljene knjige (DLT) koja će pružiti širi raspon prednosti širem presjeku tržišta. ASX objašnjava na svom web stranica mnogo razloga zašto je odabrao DAML:

  • Izdavatelji i krajnji investitori dobit će veću transparentnost nad svojim tržišnim aktivnostima pravovremenim, sigurnim i pojednostavljenim pristupom registru vlasnika (za izdavatelje), financijskoj imovini (krajnji investitori) i povezanim informacijama.
  • Nove razine funkcionalnosti i fleksibilna tehnologija pomoći će ASX-u da učinkovitije odgovori na promjenjiva tržišta.
  • Jednostavna integracija s uzvodnim i nizvodnim poslovnim sustavima, pojednostavljivanje funkcija i tijekova rada.
  • Uklonite potrebu za skupim procesima pomirenja i umjesto toga iskoristite jedan izvor istine.
  • Potpuno osigurajte dostupnost rješenja.
  • Osigurajte stopostotnu dostupnost onima koji su ovlašteni koristiti je bez diskriminacije.
  • Osigurajte sustav koji je sljediv i siguran.

Zaključak

Shaul Kfir, suosnivač i glavni tehnički direktor tvrtke Digital Asset, istaknuo je kako pojava tehnologije blockchain i distribuiranih knjiga danas ima puno paralela s pojavom weba u 1990-ima. Internet je bio toliko radikalno nova platforma da nije mogao pružiti svoj puni potencijal koristeći tradicionalne sustave. Tek kad su se razvili novi stilovi arhitektonskog programiranja, poput REST-a, koji se podudaraju sa svojstvima Mreže, on je uistinu uzeo maha. To je upravo ono što DAML može učiniti na blockchain platformama poduzeća.

Od ovog trenutka, blockchain prostor ima nekoliko jezika pametnih ugovora. To dovodi do različitih vrsta pametnih ugovora koji sprečavaju interoperabilnost, a samim tim i skalabilnost. DAML ima svojstva potrebna institucijama da ga prihvate kao svoj glavni jezik dok grade svoju platformu po izboru. Digital Asset najavio je da će DAML biti integriran s više distribuiranih knjiga i tradicionalnim platformama baza podataka, uključujući VMWare Blockchain, Hyperledger Sawtooth i Fabric, Cordu i Amazonove baze podataka QLDB i Aurora. 

Počnite pisati svoje pametne ugovore s DAML-om i DAML SDK preuzmite ovdje

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me