DAML-zelfstudie: aan de slag met DAML

Ben je op zoek naar een DAML-tutorial? Dan bent u bij ons aan het juiste adres. In dit artikel zullen we een goede DAML blockchain-tutorial doen.

De tutorial behandelt een basiskennis van DAML, waarom het nodig is, en codevoorbeelden om er meer zin uit te halen. Als je een beginner bent, vind je de tutorial om aan de slag te gaan met DAML. Kortom, dit is een perfecte DAML-tutorial voor beginners. Het is echter geen volledige DAML-ontwikkelhandleiding, aangezien we in de zelfstudie geen volledige applicatie gaan bouwen, aangezien dit buiten het bestek van het artikel valt..

DAML-zelfstudie: aan de slag met DAML

Dus, wat is DAML? Laten we onderzoeken.

Een blockchain-opfriscursus nodig? Bekijk de Blockchain voor beginners-gids om aan de slag te gaan! Bekijk ook onze Ultieme gids voor DAML.

Wat is DAML?

DAML is een open-source programmeertaal voor het ontwikkelen van gedistribueerde applicaties. Hiermee kunnen ontwikkelaars die gedistribueerde applicaties beknopt, snel en correct maken.

Hyperledger onderhoudt DAML en heeft het onderdeel gemaakt van zijn ecosysteem. Dit maakt DAML ook een van de programmeertalen die bovenop de toonaangevende blockchain-platforms draaien. Ja, het wordt door meerdere platforms geaccepteerd. Het maakt het ook gemakkelijk voor ontwikkelaars om snel hun applicatie te ontwikkelen en vervolgens te beslissen waar ze deze willen inzetten.

Wat maakt DAML zo bijzonder?

DAML is een programmeertaal om gedistribueerde talen te bouwen. Nu steeds meer bedrijven het belang van gedistribueerde applicaties begrijpen, biedt DAML een hulpmiddel voor die bedrijven en hun ontwikkelaars om hun doelen te bereiken. Het is in feite een van die geweldige tools waarmee u uw gedistribueerde applicatie onder controle kunt houden.

DAML pakt de harde ontwerpproblemen direct aan omdat het een oplossing biedt voor complexe problemen zoals gedistribueerde toestandssynchronisatie en cryptografie. Om het doel te bereiken, is het opnieuw ontworpen. 

Het onderliggende ontwerp of de implementatie wordt geabstraheerd wanneer een ontwikkelaar zijn blockchain-applicatie schrijft. Het laat de ontwikkelaar zich concentreren op de abstracte vereiste en laat DAML al het harde werk afhandelen. Door te weten dat DAML speciaal is, kun je het leren van DAML beter waarderen met behulp van onze DAML-tutorial.

DAML-functies


In dit gedeelte van onze DAML-tutorial leren we over de belangrijkste DAML-functies.

Gegevensmodel: Met DAML kunnen ontwikkelaars eenvoudig complexe gegevensschema’s voor hun applicatie maken. Dit maakt het eenvoudig om complexe eisen of bedrijfsprocessen te ontwerpen en te implementeren.

Fijnmazige machtigingen: De DAML-contracten worden verfijnd om machtigingen in te stellen. Dit betekent dat ontwikkelaars kunnen instellen wie het contract mag ondertekenen, wie het kan zien en onder welke voorwaarden.

Bedrijfslogica: Bedrijfslogica kan ook gemakkelijk worden geïntegreerd. Een ontwikkelaar kan acties schrijven die vereist zijn voor het contract, de beweringen, parameters en meer!

Scenario-gebaseerd testen: Scenario-gebaseerd testen is ook mogelijk met DAML. Hiermee kan de ontwikkelaar de bedrijfslogica en andere aspecten van uw gedecentraliseerde apps testen, zoals workflows.

Runtime-functies

Afgezien van de bovenstaande vier kernfuncties, hebben we ook de DAML Runtime. Runtime verwijst naar de omgeving die door de toepassing is gecreëerd tijdens de uitvoering ervan. In deze staat heeft het belangrijke kenmerken die ervoor zorgen dat het programma efficiënt en effectief werkt. Door erover te leren in de DAML-zelfstudie, kunt u uw DAML-leren verstevigen.

Laten we ze hieronder bespreken.

Opslag abstractie → Opslag-abstractie biedt een persistentielaag die ervoor zorgt dat alle DAML-programma’s opslag-agnostisch zijn. In eenvoudige bewoordingen zijn de DAML-programma’s niet afhankelijk van de gekozen opslag, omdat het de genoemde gegevens kan converteren naar een verteerbaar formaat.

Autorisatiecontroles → De autorisatie controleert alle acties binnen een contract. Als de actie niet de juiste autorisatie doorstaat, mag deze niet worden uitgevoerd.

Het contract genereert dan een runtime-fout en informeert de koper of de ontwikkelaar.

Verantwoording bijhouden → De runtime is ook verantwoordelijk voor het volgen van de verantwoording. Het zorgt ervoor dat de partijen vrijwillig de overeenkomst aangaan. Om dit mogelijk te maken, waren handtekeningen van ondertekenaars vereist. Dit wordt gedaan om de koper te beschermen tegen elk gewelddadig gedrag van de organisator of verkoper. 

Atomaire samenstelbaarheid → DAML ondersteunt atomair ontwerp. Dit betekent dat alle acties atomair worden uitgevoerd en dus al dan niet kunnen worden vastgelegd. Er is geen middenweg als het gaat om het uitvoeren van contracten. Dit wordt gedaan om de veiligheid van de workflow te waarborgen en uitbuiters op afstand te houden.

Geen dubbele uitgaven → Met DAML-runtime zijn de contracten ontworpen om ervoor te zorgen dat dubbele uitgaven niet mogelijk zijn. Dit betekent dat hetzelfde contract niet twee keer kan worden uitgevoerd. 

Wat u moet weten over privacy → DAML biedt een subtransactieniveau, dat de informatie beschikbaar maakt na goedkeuring.

Deterministische uitvoering → Ten slotte ondersteunt de runtime deterministische uitvoering. Dit betekent dat het effect van elke actie afhangt van de huidige status van het grootboek.

Aan de slag met DAML

In dit gedeelte van onze DAML-tutorial kijken we naar de handleiding Aan de slag voor de DAML-blockchain-tutorial. Voordat u DAML kunt gebruiken, moet u het installeren.

Om DAML te gebruiken, moet u een proces in twee stappen volgen.

1) Afhankelijkheden installeren

Om DAML te gebruiken, moet u eerst de afhankelijkheden installeren. Om dit te doen, moet u de SDK downloaden en op uw besturingssysteem installeren.

Anders dan dat, zou het het beste zijn als u ook het volgende had

  • Visual Studio Code of een compatibele geïntegreerde ontwikkelomgeving
  • JDK 8 of hoger.

2) SDK-installatie

Als u Windows gebruikt, kunt u naar het link en download het uitvoerbare bestand.

Voor Linux of MAC moet u de volgende opdracht uitvoeren met curl.

curl –sSL https://get.daml.com/ ​sh

Het zal je vragen om ~ / .daml / bin toe te voegen aan je PATH-variabele. Als u klaar bent, bent u klaar om DAML te gebruiken.

DAML-handleiding voor beginners

Heeft u nog nooit met DAML gewerkt? Maak u dan geen zorgen, want in dit gedeelte gaan we de basisprincipes van DAML door, de gegevenstypen, sjablonen, functies, uitdrukkingen enzovoort.!

Maar voordat we dat doen, moeten we het (Digital Asset) DA Ledger-model begrijpen. Het is een belangrijk onderdeel van onze DAML-tutorial.

DA Ledger-model

DA Ledger Model vormt de kern van DAML. Het biedt workflows voor meerdere partijen met behulp van een virtueel gedeeld grootboek. Om een ​​beter idee te krijgen, kunt u de onderstaande schermafbeelding bekijken.

Bron: DAML-documentatie

Het model wordt gebruikt om DA-grootboekstructuur (wat), integriteitsmodel (wie kan verzoeken) en privacymodel (wie kan zien) te definiëren.

Raadpleeg de officiële documentatie voor een meer diepgaand begrip van het DA Ledger-model hier.

Basiscontracten

In de kern van DAML vindt u een DAML-grootboek. We gaan een kleine sjabloon doornemen, omdat het ons zal helpen essentiële concepten te begrijpen, waaronder transacties, sjablooncontracten, ondertekenaars, DAML-modules en bestanden.

Commits

DAML Ledger bevat een “commits” -lijst. In eenvoudige bewoordingen is een commit een verzonden transactie naar het grootboek. Vanaf het contract kunt u het beschouwen als een actieve transactie die moet worden uitgevoerd, en de uitvoering is afhankelijk van de contractkenmerken en voorwaarden.

DAML-modules en bestanden

Voordat u begint, moet u de DAML-versie vermelden. Het kan bovenaan het DAML-bestand worden gedaan. De versie zal de compiler laten weten welke versie van de taal wordt gebruikt.

verdomme 1.2

Om de module te importeren, moet u het trefwoord “module” gebruiken.

module Token waar

Opmerkingen

Als u opmerkingen wilt toevoegen, kunt u dit doen met het trefwoord “-“.

– Dit is een opmerking

Sjablonen

Er wordt een sjabloon gebruikt om het contracttype te definiëren. Dit definieert de entiteiten die toegang hebben om het contract uit te voeren. U kunt contracten zien als sjablooninstanties.

sjabloon Token

    met

        eigenaar: Party

    waar 

        ondertekenende eigenaar

Zoals u kunt zien, hebben we een tokensjabloon gedefinieerd met behulp van het trefwoord “sjabloon”. Er is ook een argument voor nodig. Nog een ding waar u op kunt letten, is dat het witruimte-georiënteerd is. Als je Python eerder hebt gebruikt, zul je begrijpen hoe de code is gestructureerd en bedoeld.

Ten slotte ziet u het ondertekenende sleutelwoord, dat de ondertekenaars van de contractinstanties aangeeft. De autoriteit van deze partij is vereist om acties te ondernemen op basis van het contract, inclusief archivering en het aanmaken ervan. 

Inzicht in de scenario’s met behulp van sjablonen

Nu we de basisstructuur van een sjabloon hebben begrepen, gaan we nu de scenario’s begrijpen met behulp van twee andere sjablonen in onze DAML-zelfstudie. Maar laten we, voordat we dat doen, eerst eens kijken wat een “scenario.

Scenario

Een scenario kan het beste worden omschreven als een testrecept dat kan worden gebruikt om te controleren of de sjablonen zich gedragen zoals ze zouden moeten. Het kan worden gebruikt om transactietests uit te voeren. Laten we het onderstaande voorbeeld eens bekijken.

token_test_one = scenario doen

    Sam <- getParty “sam”

    indienen sam do

        maak een token met eigenaar = sam

Het bovenstaande is het basisscenario dat handelt over het teken voor een partij die bekend staat als ‘sam’.

Om het scenario uit te voeren, moet u de DAML-studio gebruiken. 

Voor meer informatie over het scenario raden we u aan het scenario documentatie pagina hier.

Data type

Net als elke programmeertaal ondersteunt DAML ook gegevenstypen. Met de gegevenstypen kunt u een variabele definiëren en daar gegevens opslaan.

Laten we sjablonen als databasetabellen beschouwen om het u eenvoudiger te maken. Nu kunt u gegevens in de sjabloon opslaan en uzelf helpen deze eenvoudig te beheren door middel van sjabloonontwerp.

Er zijn veel native gegevenstypen waarin DAML wordt geleverd. Het omvat de volgende.

  • Partij → Om de identiteit van de entiteit op te slaan. Partijen kunnen transacties indienen en contracten ondertekenen.
  • Tekst → Slaat Unicode-teken op
  • Int → slaat 64-bits gehele getallen op
  • Decime → slaat nummers met een vast punt op
  • Datum → slaat een datum op
  • Tijd → slaat de tijd op in UTC
  • RelTime → Slaat tijdsverschil op
  • ContractId → verwijzing naar contracttype

Hieronder staat de code om enkele van de native types te begrijpen.

native_test = scenario doen

  Sam <- getParty “Sam”

  Mysterio <- getParty “Mysterio”

  laat

    my_int = -657

    my_dec = 0.001: Decimaal

    my_text = “Sam”

    my_bool = False

 

  beweren (Sam / = Mysterio)

  beweren (-my_int == 123)

  beweren (1000.0 * my_dec == 1.0)

  assert (my_text == “Sam”)

DAML ondersteunt ook andere gegevenstypen, waaronder Tuples, Lists en Records. 

Bekijk hun documentatiepagina voor meer informatie over de gegevenstypen in DAML hier.

Gegevens transformeren met behulp van keuzes

DAML ondersteunt onveranderlijkheid. Dat betekent dat wanneer het nodig is om gegevens bij te werken; met de nieuwe gegevens moet een nieuw contract worden aangemaakt. Dat is echter niet altijd het geval, omdat er altijd iets heel kleins te veranderen en aan te passen is. Een bedrijf wil bijvoorbeeld zijn telefoonnummer wijzigen om het te kunnen gebruiken keuzes.

Laten we eens kijken naar een voorbeeld uit de DAML-documentatie.

sjabloon Contact

  met

    eigenaar: Party

    feest feest

    adres: tekst

    telefoon: sms

  waar

    ondertekenende eigenaar

 

    controller eigenaar kan

      UpdateTelefoon

        : ContractId Contact

        met

          newTelephone: Tekst

        Doen

          creëer dit met

            phone = newTelephone

De meeste code spreekt hierboven voor zich. Het enige dat u hier moet weten, is dat we een keuze hebben gedefinieerd die bekend staat als ‘UpdateTelephone’.

Keuzes kunnen ook als delegatie worden gebruikt. Ten slotte kunnen ze ook worden geïntegreerd in het Ledger-model. 

Voor meer informatie over de DAML-keuzes, kunt u de officiële documentatiepagina raadplegen hier.

Beperkingen toevoegen aan een contract

U kunt ook beperkingen aan het DAML-contract toevoegen met het trefwoord “verzekeren”. U kunt ook het andere mechanisme gebruiken dat het trefwoord assert, abort en error gebruikt om beperkingen aan het contract toe te voegen.

Maar voordat u dit doet, moet u over de juiste voorwaarden in uw contract beschikken. 

Raadpleeg de documentatie voor meer informatie over de beperkingen en beperkingen hier.

Partijen en autoriteit

DAML heeft een goede manier om met partijen om te gaan en hen te autoriseren om toegang te krijgen tot een contract. U kunt ze niet alleen gebruiken om autoriteit door te geven, maar ook om geavanceerde keuzes te schrijven die de werking van het grootboek kunnen veranderen. Deze flexibiliteit is belangrijk omdat het partijen voldoende handvatten geeft om dingen te veranderen en ook de kerngedachte van het contract intact te houden. 

U kunt bijvoorbeeld voorkomen dat IOU wordt ingetrokken of u kunt beter eenmalige autorisatie uitvoeren met behulp van workflows voor voorstellen en accepteren. Er zijn tal van opties die binnen de DAML worden gemaakt om voor bijna elk scenario een oplossing te bieden.

Lees meer over partijen en autoriteiten hier.

Gevolgtrekking

Dit leidt ons naar het einde van onze DAML-tutorial. In deze tutorial zijn we erin geslaagd om meer te weten te komen over DAML en wat het speciaal maakt. We leerden ook over de interne werking van de DAML en andere belangrijke aspecten van de programmeertaal, zoals gegevenstypen, scenario’s, enzovoort. Deze sleutelconcepten zullen u helpen om uzelf te engageren met de DAML-projecten die u in de toekomst gaat doen.

Dus, wat vind je van DAML? Denk je dat het de potentie heeft om een ​​alomtegenwoordige programmeertaal te worden om gedecentraliseerde applicaties te creëren? Reageer hieronder en laat het ons weten.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map