DAML és un ecosistema de codi obert per construir aplicacions distribuïdes basades en contractes intel·ligents de pila completa. El seu llenguatge bàsic de contractes intel·ligents és un llenguatge funcional dissenyat específicament, especialitzat en la descripció de fluxos de treball empresarials distribuïts. L’únic punt de venda de DAML és senzill: centreu-vos completament en la lògica de l’aplicació sense preocupar-vos per l’inflexió de la infraestructura subjacent, ja sigui el llibre major, la cadena de blocs o la base de dades. Abans de participar en DAML, comprenguem ràpidament la seva tecnologia subjacent i els seus contractes intel·ligents.

Comptes majors, blockchain i contractes intel·ligents

Un llibre major és una sèrie de registres de dades immutables marcats amb el temps. Blockchain és el tipus més conegut distribuït llibre major, un que està gestionat per un consorci d’ordinadors i que no és propietat d’una entitat única. En una cadena de blocs, les entrades del llibre major s’uneixen en una seqüència de blocs i cada bloc d’entrades està assegurat i lligat a l’anterior mitjançant principis criptogràfics. Tres propietats fan que la cadena de blocs sigui realment especial:

  • Distribuït: El blockchain està allotjat per una xarxa d’igual a igual. Tots els nodes d’aquesta xarxa descarreguen i mantenen una còpia de la cadena de blocs dins del seu sistema. Això garanteix que totes les dades emmagatzemades dins de la cadena de blocs siguin compartides per tothom i no acumulades per una única entitat central del sistema..
  • Transparència: Com que tots els nodes de la xarxa emmagatzemen una versió de la cadena de blocs, tots poden veure les dades emmagatzemades al seu interior. Com a tal, totes les dades de la cadena de blocs són transparents.
  • Immutabilitat: una altra cosa interessant que cal recordar aquí és que, un cop introduït alguna cosa dins del bloc, no es pot manipular. Aquesta propietat de la cadena de blocs s’anomena “immutabilitat”.

Com ja sabreu, la tecnologia blockchain va tenir protagonisme amb l’aparició de Bitcoin. Es tractava d’un invent tan revolucionari que la gent va començar a preguntar-se si hi ha un conjunt de tecnologies adjacents i més àmplies més enllà de la transferència de valor sense confiança. Ethereum finalment va entrar al mercat de criptografia i va introduir al món “contractes intel·ligents” prou flexibles per escriure aplicacions distribuïdes senceres o dApps recolzades per una cadena de blocs. 

Contractes intel·ligents: portar la cadena de blocs a les masses

Penseu en què consisteix i com funciona un contracte en el sentit tradicional. Un contracte és un document legalment vinculant entre dues parts que també es pot aplicar legalment. Un contracte intel·ligent funciona de manera similar, excepte dues modificacions que canvien el joc: les regles definides pel contracte es poden llegir i executar automàticament i s’apliquen mitjançant un sistema informàtic distribuït sense que cap de les parts del contracte tingui el control suficient per anul·lar-lo sol..

Per donar-vos una definició adequada: un contracte intel·ligent és un acord digital destinat a facilitar, verificar o fer complir la negociació o l’execució d’un contracte. Permet que diverses parts ho facin interactuant directament entre si, sense passar per tercers.

El terme “contracte intel·ligent” va ser encunyat pel criptògraf Nick Szabo als anys 90 al seu article “Contractes intel·ligents: blocs bàsics per a mercats digitals.”Per entendre la filosofia del funcionament, posem l’exemple de la màquina expenedora de Szabo.

A continuació s’explica com interactueu normalment amb una màquina expenedora:

  • Trieu l’element que vulgueu.
  • Es posa una mica d’efectiu a l’interior de la màquina.
  • La màquina us proporciona l’article.

Bastant senzill, oi? Tot i això, cal tenir en compte dues coses durant tota aquesta interacció:

  • No es pot executar cada pas fins que no s’hagi complert el pas anterior. Per exemple. no podeu posar diners fins que no seleccioneu el que voleu. A més, la màquina no us pot donar cap element fins que no ingresseu els diners.
  • Durant tota aquesta interacció, tu i la màquina interactueu directament entre si. No hi ha cap tercer, com un botiguer, entre vosaltres.

Aquests són els principis bàsics darrere dels contractes intel·ligents:

  • Les dues parts vinculades a un contracte intel·ligent poden interactuar directament entre elles.
  • Cada pas d’un contracte intel·ligent només es pot complir després de l’execució del pas anterior.

En incorporar aquesta senzilla innovació, Ethereum va ser capaç de crear un protocol amb el qual els usuaris poguessin interactuar directament dApps (aplicacions distribuïdes) sense passar per tercers. Ethereum utilitza un llenguatge anomenat “Solidity” per codificar els contractes intel·ligents. No obstant això, Ethereum, com la majoria d’altres plataformes de contractes intel·ligents populars com EOS i TRON, és una cadena de blocs pública. Una cadena de blocs pública té una xarxa oberta i tothom s’hi pot unir sense reserves. 

Si les empreses utilitzessin cadenes de blocs, les cadenes de blocs públiques no sempre s’adeqüarien als seus casos d’ús, sobretot si desitgen o requereixen que les seves interaccions siguin completament privades. Les empreses necessiten un tipus especial de cadenes de blocs anomenades “cadenes de blocs autoritzades”. Més informació a continuació. 

Què es requereix de les cadenes de blocs empresarials?

A diferència de les cadenes de blocs públiques, una cadena de blocs autoritzada / privada no està oberta a tothom. Per participar a la xarxa, haureu d’obtenir permís per fer-ho a la xarxa. Hi ha algunes funcions que hauran de complir aquestes cadenes de blocs empresarials:

  • Gran actuació: En primer lloc, les empreses necessitaran una cadena de blocs que pugui processar una gran quantitat de transaccions. La majoria de blockchains públics ni tan sols poden fer 100 transaccions per segon de manera consistent.
  • Alt nivell de resistència: Les cadenes de blocs empresarials han de poder tornar de situacions d’aturada i de possibles errors. Per garantir una alta disponibilitat, han de ser capaços d’evitar problemes que puguin conduir a interrupcions importants. Per tenir aquest nivell de resistència, el sistema hauria de suposar que probablement es produiran fallades i haurà d’estar preparat per mantenir el sistema en funcionament durant aquestes situacions..
  • Funcions de privadesa: Un blockchain públic, per definició, no és privat. Les institucions han de tractar moltes dades i regulacions confidencials, així com mantenir certes dades classificades per motius d’avantatge competitiu i propietat intel·lectual (és per això que necessiten un entorn tancat / autoritzat).

Juntament amb un entorn favorable a les empreses, també requeriran contractes intel·ligents especialitzats. El contracte intel·ligent públic d’Ethereum funciona amb solidesa, però hi ha funcions específiques que hauria de tenir un llenguatge de contracte intel·ligent empresarial. A continuació parlarem d’aquestes propietats.

Les propietats dels idiomes de contractes intel·ligents empresarials

El principal problema dels llenguatges de contractes intel·ligents regulars és que estan dissenyats o inspirats en llenguatges creats per executar sistemes més tradicionals. Acostumen a ser de baix nivell i estretament acoblats a les infraestructures en què funcionen. Això els fa difícils i lents de programar. Els desenvolupadors han creat contractes constantment amb errors explotables, que han causat danys importants a l’ecosistema criptogràfic. El 2016, la comunitat Ethereum va experimentar de primera mà el que podrien fer aquests contractes intel·ligents codificats de forma no òptima. Se suposava que el DAO era el contracte intel·ligent més important mai codificat a Ethereum. No obstant això, un simple error va permetre a un pirata informàtic explotar el contracte i retirar Ether per valor de més de 150 milions de dòlars. Aquest hack va ser tan devastador que el protocol Ethereum finalment es va dividir en Ethereum i Ethereum Classic.

Tot el que bàsicament ens indica és que quan es codifica amb un llenguatge com Solidity, un codificador haurà de tenir en compte el següent:

  • Aneu amb compte amb atacs com la reentrada, el desbordament i el desbordament, els atacs de direcció curta, etc..
  • Cal tenir en compte tots els estats parcials que passarà el contracte. 
  • La mateixa operació pot significar coses diferents en diferents idiomes. Per exemple. mentre que la solidesa mana molt de JavaScript, les mateixes operacions poden actuar de manera diferent en cada idioma.

Llarga història curta, no podeu escollir un idioma a l’atzar i escriure els vostres contractes. Haureu d’entendre totes les possibles ramificacions que trieu. Digital Asset va passar anys estudiant l’execució de contractes intel·ligents per reduir les propietats principals que requereixen els idiomes de contractes intel·ligents d’empresa:

  • La contractació ha de ser voluntària. Quan totes les parts contracten voluntàriament un contracte, queden obligades a realitzar totes les accions necessàries en la mesura de les seves capacitats.
  • Només les parts afectades per un contracte haurien de poder veure les conseqüències que les afecten (i només aquelles).
  • Les parts haurien de ser capaços de predir de manera raonable com es desenvoluparà el contracte en el futur. Haurien de ser capaços de predir tots els estats que el contracte pot adoptar. 
  • Els desenvolupadors de contractes intel·ligents haurien de poder utilitzar un llenguatge que els permeti centrar-se completament en la seva lògica empresarial, en lloc de detalls de baix nivell com ara hash, criptografia i protocols de consens..

Què és DAML?

DAML és un llenguatge de contractes intel·ligent que s’ha construït específicament per a llibres majors distribuïts i permet l’especificació segura, inequívoca i d’alt nivell de la lògica empresarial en temps real. Aquí teniu algunes coses essencials sobre DAML que heu de tenir en compte:

  • DAML és fàcil d’escriure i llegir, de manera que una persona que entén l’empresa que es defineix pot verificar que el codi està alineat amb la seva intenció..
  • DAML és ràpid de construir i desplegar, podeu passar de zero a una aplicació de producció extremadament ràpida.
  • És un llenguatge de contractes, on els acords i les parts són construccions natives en el llenguatge.
  • Els desenvolupadors podran descriure amb precisió com es formen els contractes i quines parts hi participen, directa o indirectament.
  • Els desenvolupadors no necessiten preocupar-se per les construccions de baix nivell i es poden centrar completament a crear lògica empresarial.
  • DAML proporciona alts nivells de privadesa i abstracció. El sistema DAML realitzarà un seguiment automàtic de les parts que poden veure els detalls de cada contracte. Aquesta informació també es transmetrà al llibre de fons subjacent per assegurar-se que només se li envien les dades que una persona concreta té autorització per veure..
  • Un cop s’executa un programa DAML, es crea una pista d’auditoria ben estructurada i entenedora que ajudarà a explicar dues coses: per què es va dur a terme cada acció i el paper de cada part en aquest contracte intel·ligent.
  • A DAML, les actualitzacions es defineixen en codi i es poden executar de manera no disruptiva amb temps d’inactivitat zero. Podeu afegir fàcilment nous rols i fluxos de treball a les solucions existents sense passar per cap complicació.

DAML: un llenguatge funcional

En contrast amb els llenguatges imperatius, el DAML és un llenguatge funcional. En els propers paràgrafs veurem què significa això.

Llenguatges de programació imperatius

Els llenguatges de programació tradicionals com C ++, Java i Solidity són llenguatges de programació imperatius. En un llenguatge de programació imperatiu, el desenvolupador ha d’escriure totes les instruccions que l’ordinador ha de prendre per assolir un objectiu. Prenguem un exemple en C ++ del que volem dir amb això. 

Suposem que volem imprimir els números de l’1 al 100 

int i = 0;

Pròxim:

i ++;

printf (“% i”, i);

si (i < 100) anar a continuació;

int a = 5;

int b = 3;

int c;

c = a + b;

Com podeu veure, el procés d’addició pren diverses instruccions i cada instrucció canvia constantment l’estat del programa, ja que totes s’executen individualment..

Un procés d’addició ha comportat quatre instruccions:

  • Declarar un enter “a” i assignar-li el valor 5.
  • Declarar un enter “b” i assignar-li el valor 3.
  • Declarar un enter “c”.
  • Afegint els valors de ib i emmagatzemant-los a c.

Llenguatges de programació funcionals

En aquest estil de programació, les funcions, més que les instruccions, prenen el protagonisme. En lloc d’escriure instruccions sobre com calcular un resultat o executar un algorisme, el comportament desitjat es descriu com en una funció matemàtica regular, mapejant les entrades de la funció a les sortides,  

La programació funcional és especialment adequada per als contractes intel·ligents, ja que la forma en què es componen les funcions és similar a la manera com interactuen els contractes. Un contracte que diu “Si Alice dóna a Bob $ 100, Bob dóna a Alice un bitllet”, és com una funció que assigna 100 $ a un bitllet. Si hi ha un segon contracte que diu “Si Alice presenta un bitllet a Bob, Bob deixa passar l’Alice per la porta”, es tracta d’una segona funció que assigna un bitllet a l’accés. Igual que les funcions, aquests contractes es componen de manera natural: “Si Alice dóna 100 dòlars a Bob, Bob deixa entrar a la porta”.

Aquest pur comportament d’entrada-sortida que és independent d’un estat fa que l’enfocament funcional sigui més fàcil de raonar matemàticament: en tenir funcions que només depenen de les seves entrades per calcular les seves sortides, el desenvolupador pot centrar-se en la correcció de la funció individual i el sistema de tipus permet per compondre’ls de manera segura i previsible. És per això que es considera que els programes funcionals són un enfocament més segur per a la creació de contractes intel·ligents. DAML és un llenguatge funcional i permet als desenvolupadors encapsular el raonament empresarial en funcions matemàtiques fortament tipificades. En aquest context, “amb un tipus fort” significa que les eines i el temps d’execució de DAML poden comprovar automàticament el funcionament de totes i cadascuna de les funcions. Això ajuda els desenvolupadors a raonar exactament sobre com afectarà cada component del programa l’estat del llibre major.

El codi DAML

Per provar DAML, podeu 1) instal·lar-lo Visual Studio Code i la SDL DAML o utilitzeu el 2) webIDE (més amb finalitats d’aprenentatge)

Token de plantilla

  amb

    propietari: Party

  on

    propietari signant

El que veieu més amunt és una plantilla DAML senzilla. Una plantilla defineix un tipus de contracte que es pot crear i qui té dret a fer-ho. Els contractes són casos de plantilles. A l’exemple anterior, el nom de la plantilla és “Token”. Les dades contingudes en els contractes s’anomenen “arguments”. Vegem, doncs, els arguments declarats dins d’aquest contracte.

  • El bloc “amb” defineix el tipus de dades dels arguments de la plantilla enumerant els noms dels camps i els seus tipus. La plantilla anterior té un sol camp anomenat “propietari” del tipus “Party”.
  • El bloc “on” declara l’abast del camp. A la nostra plantilla, el bloc “on” declara el camp “propietari” com a signant del contracte. Un cop declarat signatari, un camp obtindrà l’autoritat per crear o arxivar el contracte. 

Un codi de contracte típic a DAML té quatre components:

  • Model de dades: Utilitzeu DAML per modelar fàcilment esquemes de dades complexos per a la vostra aplicació (quin tipus de dades es necessita per al contracte)
  • Permisos de gra fi: Especifiqueu els permisos del contracte (qui pot crear i arxivar el contracte, qui pot veure determinats passos d’execució, etc.)
  • Lògica empresarial: Descripció de les accions del contracte (què fa realment el contracte i quins són els passos per executar-lo)
  • Proves basades en escenaris: Proveu la lògica empresarial que heu especificat i els diversos fluxos de treball.

Ara que coneixem els quatre components i la creació de plantilles, vegem un codi DAML de ple dret. 

plantilla Efectiu

  amb

    emissor: partit

    propietari: Party

    quantitat: decimal

  on

    emissor signant

    el propietari del controlador pot

      Transferència: ContractId Cash

        amb

          newOwner: Party

        creeu-ho amb propietari = newOwner

plantilla TicketAgreement

  amb

    organitzador: Party

    propietari: Party

  on

    organitzador signant, propietari

plantilla TicketOffer

  amb

    organitzador: Party

    comprador: Festa

    preu: decimal

  on

    organitzador signant

    comprador observador

    comprador controlador pot

      Acceptar: ContractId TicketAgreement

        amb

          cashId: ContractId Cash

        fer

          efectiu <- buscar cashId

          afirmar (cash.amount == preu)

          exercici de transferència d’efectiu amb

            newOwner = organitzador

          crea TicketAgreement amb

            organitzador; propietari = comprador

validateTicketPurchase = escenari fer

  emissor <- getParty “Emissor”

  organitzador <- getParty “Organitzador”

  comprador <- getParty “Comprador”

  efectiu <- enviar emissor fer

    crear efectiu amb

      emissor; propietari = comprador; import = 20,0

  oferta <- enviar organitzador fer

    crea TicketOffer amb

      organitzador; comprador; preu = 20,0

  enviar comprador fer

    oferta d’exercici Accepta amb

      cashId = efectiu

Molt bé, per tant, tenim aquí una sèrie de plantilles que treballen juntes per crear un contracte on un usuari compra una entrada a un organitzador. Per tant, seguint el codi de color, tenim quatre blocs específics al codi anterior:

Model de dades: vermell 

Com s’ha esmentat anteriorment, les plantilles tenen camps de dades necessaris per a la seva declaració i execució. Vegem la plantilla TicketOffer:

plantilla TicketOffer

  amb

    organitzador: Party

    comprador: Festa

    preu: decimal

Aquesta plantilla declara tres camps:

  • “Organitzador” i “comprador” del tipus “Festa. Com el seu nom indica, aquestes dues són parts d’aquest contracte.
  • Aleshores tenim el “preu” que és de tipus decimal.

Permisos de gra fi: verd

  on

    organitzador signant

    comprador observador

    comprador controlador pot

      Acceptar: ContractId TicketAgreement

Després de declarar els camps de la plantilla, aquesta secció declara els permisos atorgats als arguments del partit. Per tant, en aquesta plantilla, l’organitzador és l’únic signant i té el poder d’iniciar o arxivar el contracte.

El comprador és alhora observador i controlador. Un observador és algú que pot veure tots els estats que travessa el contracte. A més, tal com es declara a la plantilla, el comprador pot acceptar el contracte de tiquets, cosa que donarà lloc a l’arxiu i a la creació d’un nou contracte “TicketAgreement”.

Lògica empresarial: rosa

    fer

          efectiu <- buscar cashId

          afirmar (cash.amount == preu)

          exercici de transferència d’efectiu amb

            newOwner = organitzador

          crea TicketAgreement amb

            organitzador; propietari = comprador

Per tant, vam declarar els camps i els vam assignar la seva visibilitat dins del contracte. Ara és hora de declarar la lògica empresarial i el flux de treball d’aquesta plantilla. En primer lloc, el contracte comprovarà si l’efectiu obtingut del comprador és igual o no al preu del bitllet. Si és així, la propietat de l’entrada es transmet al comprador, mentre que els diners es transfereixen a l’organitzador.

Proves basades en escenaris: blau

validateTicketPurchase = escenari fer

  emissor <- getParty “Emissor”

  organitzador <- getParty “Organitzador”

  comprador <- getParty “Comprador”

  efectiu <- enviar emissor fer

    crear efectiu amb

      emissor; propietari = comprador; import = 20,0

  oferta <- enviar organitzador fer

    crea TicketOffer amb

      organitzador; comprador; preu = 20,0

  enviar comprador fer

    oferta d’exercici Accepta amb

      cashId = efectiu

Finalment, podeu provar la lògica empresarial i els fluxos de treball en aquesta secció per comprovar en temps real si el vostre codi funciona o no. Aquest temps real serà especialment útil per als desenvolupadors. Podeu interactuar amb el llibre major mitjançant diverses parts i verificar els efectes de les vostres transaccions a l’instant. Els resultats de l’escenari de l’exemple anterior seran així

DAML: un ecosistema de codi obert per construir aplicacions distribuïdes basades en contractes intel·ligents

Si esteu interessats en aprendre DAML, consulteu-ne documentació.

Cas d’ús del món real: substitució dels ESCACS d’ASX

DAML ja ha trobat un cas d’ús real. L’Australian Securities Exchange, (ASX), és un dels principals mercats financers mundials. És un dels deu principals borses mundials de valors per valor i el mercat de derivats de tipus d’interès més gran d’Àsia. Com que és el primer mercat financer important que s’obre cada dia, se situa constantment entre els cinc primers mercats del món.

Avui en dia, CHESS és el sistema bàsic que realitza els processos de compensació, liquidació, registre d’actius i alguns altres serveis posteriors al comerç, que són fonamentals per al bon funcionament del mercat australià. CHESS continua sent estable i oferint aquests serveis de manera eficaç, tal com demostra la disponibilitat mensual mitjana de serveis de CHESS en els darrers cinc anys, del 99,99%. Tot i que no hi ha res que indiqui que CHESS no continuï proporcionant serveis en aquest nivell de servei, ASX ha decidit substituir CHESS per tecnologia de llibre major distribuït (DLT) que proporcionarà una gamma més àmplia de beneficis a una secció transversal més àmplia del mercat. ASX explica el seu lloc web els molts motius pels quals va triar DAML:

  • Els emissors i els inversors finals obtindran una major transparència sobre les seves activitats de mercat mitjançant un accés oportú, segur i simplificat al registre de titulars (per a emissors), actius financers (inversors finals) i informació associada..
  • Els nous nivells de funcionalitat i tecnologia flexible ajudaran ASX a respondre als mercats canviants de manera més eficient.
  • Fàcil integració amb sistemes comercials upstream i downstream, racionalització de funcions i fluxos de treball.
  • Elimineu la necessitat de processos de conciliació costosos i, en canvi, aprofiteu una única font de veritat.
  • Assegureu completament la disponibilitat de la solució.
  • Assegureu la disponibilitat del 100% a aquells que estan autoritzats a utilitzar-lo sense cap mena de discriminació.
  • Proporcioneu un sistema traçable i segur.

Conclusió

Shaul Kfir, cofundador i CTO de Digital Asset, va assenyalar que l’aparició de la tecnologia blockchain i ledger distribuïda té molts paral·lelismes amb l’aparició de la web als anys noranta. Internet era una plataforma tan radicalment nova que no podia oferir tot el seu potencial mitjançant sistemes tradicionals. Va ser quan es van desenvolupar nous estils de programació arquitectònica, com REST, per coincidir amb les propietats del web. Això és exactament el que DAML pot fer a les plataformes blockchain empresarials.

Ara mateix, l’espai blockchain té diversos idiomes de contractes intel·ligents. Això condueix a diferents tipus de contractes intel·ligents que inhibeixen la interoperabilitat i, per extensió, l’escalabilitat. DAML té les propietats necessàries perquè les institucions l’adoptin com a idioma principal mentre construeixen la seva plataforma d’elecció. Digital Asset ha anunciat que DAML s’integrarà amb múltiples llibres comptables distribuïts i plataformes de bases de dades tradicionals, incloses VMWare Blockchain, Hyperledger Sawtooth and Fabric, Corda i les bases de dades QLDB i Aurora d’Amazon.. 

Comenceu a escriure els vostres contractes intel·ligents amb DAML i descarregueu-vos l’SDK DAML aquí

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