Aspirava a ser un expert en Corda? El següent tutorial de corda cobrirà tot el que heu de saber sobre el desenvolupament d’una aplicació de Corda.
Blockchain ha recorregut un llarg camí. La idea de la tecnologia de llibres distribuïts ha resolt molts punts de dolor pels quals passen les organitzacions actuals. L’objectiu principal és ser més eficient, segur i escalable sense invertir milions de dòlars.
Corda és una plataforma de blockchain de codi obert que proporciona un ecosistema global de blockchain. Ofereix una estricta privadesa amb l’ús de contractes intel·ligents. També ajuda l’empresa a transaccionar directament i proporciona un enfocament rendible per racionalitzar les operacions empresarials.
La principal diferència és com Corda gestiona les transaccions. És un DLT que vol millorar la viabilitat, la velocitat i l’escalabilitat del blockchain en no tenir un llibre llibre complet amb cada parell. Si es pot completar una transacció entre dos companys sense informar tota la xarxa, Corda utilitzarà aquest enfocament. També està dissenyat per incloure altres parts que facilitin el seguiment de la transacció i la seva validesa. És una tecnologia de llibres distribuïts per al negoci.
Comencem ara amb el nostre tutorial sobre blocs de Corda!
Pròximament: Guia per a principiants del curs de desenvolupament de Corda
Com s’estructura el tutorial de desenvolupament de Corda?
Cobrirem detalladament Corda. En la majoria de les seccions, intentarem cobrir els conceptes importants de Corda.
Els conceptes clau que tractarem inclouen els següents.
- Estat
- Contracte
- Seccions de cabal
El nostre tutorial crearà una aplicació IOU. IOU significa “I Owe yoU”. Es tracta d’una simple presentació del fet que una persona és propietària de diners d’una altra persona. Més endavant tractarem el concepte amb més detall.
Per simplificar les coses, utilitzarem el llenguatge de programació Kotlin. Com a alumne, seria fantàstic si coneixeu Kotlin, però no és una habilitat necessària haver de seguir el tutorial..
Eines
Abans de començar amb el tutorial de Corda per a principiants, necessitarem les eines següents. També hi ha eines de cadenes de blocs que als desenvolupadors els agrada molt utilitzar. No obstant això, no els cobrirem avui.
- Kotlin
- Gradle
- Git
- IntelliJ
- Línia d’ordres
A partir de l’entorn de desenvolupament integrat, utilitzarem l’IntelliJ. Simplificarà el nostre desenvolupament.
Tutorial de Corda
Què és Corda?
Corda blockchain es defineix millor com un codi obert que resol problemes empresarials proporcionant una xarxa de blockchain interoperable. Les seves característiques clau inclouen estricta privadesa, eficiència i transaccions directes mitjançant tecnologia de contractes intel·ligents.
Els contractes intel·ligents utilitzats a Corda es poden escriure mitjançant llenguatges JVM o Java. Les dApps de la plataforma Corda es coneixen com CorDapps. A més, ofereixen una xarxa de nodes d’igual a igual amb la possibilitat d’utilitzar la infraestructura notarial. La infraestructura s’utilitza per validar i seqüenciar transaccions sense haver de transmetre els detalls de la transacció a tots els companys de la xarxa.
Un altre component important utilitzat per la cadena de blocs inclou el marc Flow, que gestiona la negociació i la comunicació entre els participants.
Comprensió del Corda Ledger
Corda Ledger no és similar al sistema de llibres comptables utilitzat per les tecnologies tradicionals blockchain. Per això, hem de conèixer clarament el seu funcionament i entendre-ho tant des del seu punt de vista funcional com des de la perspectiva de les dades.
El llibre major de Corda funciona com un gràfic. Tots els nodes d’un gràfic estan connectats entre ells, directament o mitjançant altres nodes. Tots els nodes es poden comunicar entre ells si volen. L’ús del gràfic significa que no cal emetre la transacció a nivell mundial.
Descobriment de nodes
Llavors, com es descobreixen els nodes? Utilitzen un mapa de xarxa per trobar-se. T’ho pots pensar, semblant a una agenda telefònica. El mapa de xarxa conté les metadades per localitzar cadascun d’aquests serveis i, per tant, proporciona una bona manera de descobrir el mapa.
Com funciona?
El repte més gran en una xarxa de cadena de blocs de difusió no global és el consens. Així, doncs, com es coneixen els nodes i com verificen aquesta informació?
La resposta aquí és fets compartits. Cada node se superposa a qualsevol altre node d’alguna manera o d’una altra. Els fets compartits s’emmagatzemen al llibre major de Corda, que després es pot utilitzar per verificar la informació. El llibre major de Corda conté un conjunt d’aquests conjunts. Com que no hi ha cap node central, aquests nodes actuen com a servidor intermediari quan cal verificar les coses. Per emmagatzemar aquesta informació, cada node té una volta que conté el fet que no es pot canviar. Així és com els desenvolupadors implementen blockchain.
Estats
Els estats de la cadena de blocs de Corda són immutables. S’utilitzen per emmagatzemar fets compartits sobre una transacció, acord o contracte en un moment determinat.
Sona tècnic? Intentem desglossar-ho amb paraules més senzilles.
Fets compartits
Agafem dues persones que utilitzen el llibre llibre Corda. Anomenem-los Alpha i Bravo.
Tots dos tenen un fet compartit. El fet compartit és un IOU (I Own You). IOU s’utilitza quan un prestador té diners a causa del proveïdor de préstecs. Per compartir el fet, tots dos tenen la mateixa informació compartida representada al IOU.
Representar qualsevol cosa
Els estats es poden utilitzar per representar qualsevol cosa. Això significa que pot emmagatzemar qualsevol forma d’informació per a diferents casos d’ús de corda. Com a desenvolupador, podeu utilitzar estats per emmagatzemar informació KYC, instruments financers, préstecs sindicats, etc..
A més, es poden utilitzar estats per emmagatzemar diversos atributs. Però hi ha una limitació per als estats. La limitació és que una vegada que es dóna un tipus a un estat, no es pot canviar el seu tipus. Si creeu un estat IOU, haurà d’indicar l’estat IOU durant la resta de la seva vida.
Immutable i en evolució
Els estats es creen per ser immutables. Tanmateix, la seva immutabilitat afecta el temps. Es presenta un estat en un moment determinat.
Això significa que es pot crear un estat nou a més de l’estat original. Es fa quan es fa un nou canvi a l’estat que cal emmagatzemar. L’antic estat es denomina llavors històric.
Per exemple, si Alpha paga el seu deute amb Bravo, es crearà un nou estat que esmentarà el fet que Alpha ha liquidat el deute. A més, si es completa l’estat, el IOU caducarà. En termes senzills, el cicle de vida de l’Estat, en aquest cas, és el següent.
- Es crea un primer estat per mostrar que Alpha té un deute amb Bravo. Els estats també comparteixen més informació sobre l’IoU, inclosa la data, l’hora, el tipus d’interès, l’import prestat i altra informació útil necessària per a l’IoU..
- Ara, quan Alpha resol el deute, es crea un nou estat que actualitza la nova informació. L’antic estat no es toca de cap manera, ja que és immutable.
- El nou estat s’actualitza en els fets compartits entre els dos usuaris.
- Ara, l’antic estat s’anomena històric. Hi pot haver diversos estats històrics en una sola transacció. Això pot conduir a crear una seqüència d’estats.
- Es crea un cap de seqüència, que fa referència a l’estat més recent. A més, els darrers estats també s’anomenen no consumits.
Llegeix més: Guia de comparació de Hyperledger vs Corda vs Ethereum
Preparant l’entorn de desenvolupament
Ara, segons la guia de desenvolupament de dApp, l’entorn hauria d’estar preparat per al tutorial de desenvolupament de Corda. Per començar, necessiteu les eines següents.
- Oracle JDK 8 JVM – v8u171 o superior.
- Git
- IDEA IntelliJ
Repositori de clonació de Git
La millor manera de començar el nostre viatge és executar un exemple de CorDapp al nostre entorn de desenvolupament. La bona notícia és que Corda ofereix un exemple de CorDapp que podeu descarregar i executar localment.
Podeu clonar el dipòsit localment mitjançant l’ordre git clone tal com es mostra a continuació.
git clon http://github.com/roger3cev/corda-training-template.git
Per al tutorial, farem servir IntelliJ per importar el dipòsit git. Obriu l’IntelliJ. Un cop fet, veureu l’opció de fer una ullada a Control de versions. Feu-hi clic i cloneu el dipòsit al vostre ordinador.
Podeu triar desar el projecte; trobareu el dipòsit del projecte a continuació.
A la part inferior dreta, trobareu una notificació que diu: importeu el Projecte Gradle, tal com es mostra a continuació. És important que funcioni el nostre tutorial de Corda.
Feu clic a “Importa el projecte Gradle”.
També heu de configurar l’SDK del projecte. Aneu a la configuració del projecte i seleccioneu l’última versió de Java. En el meu cas, es va establir a Java 11.0.5.
Si trobeu algun error per executar, haureu d’actualitzar el Gradle i deixar-lo importar els repositoris necessaris perquè funcioni. Es necessitarà una mica de temps per fer-ho. Per tant, preneu un seient posterior i espereu que es completi.
Per a mi, vaig trigar uns 20 minuts a completar totes les actualitzacions de dependències de Gradle.
Repassem ràpidament l’estructura del nostre projecte tutorial de Corda. El nostre dipòsit principal és el fitxer src. Com que fem servir Kotlin, farem servir la carpeta Kotlin-source; trobareu la carpeta src a sota. No el confongueu amb la carpeta java-source.
Aquí trobareu tots els fitxers necessaris a la carpeta de formació. També hi ha una carpeta “test” que conté les unitats de prova de l’aplicació.
Un altre fitxer important que hem de conèixer és IOUState.kt. Es troba dins de la formació > estat.
Com funcionen les proves d’unitats estatals
La classe IOUState té un aspecte molt bàsic. Encara no s’ha completat. Utilitzarem una metodologia de desenvolupament basada en proves per desenvolupar la classe i preparar-la per treballar.
El desenvolupament basat en proves és un gran enfocament quan es tracta de pràctiques de desenvolupament modernes. Ajuda a solucionar els errors o altres problemes des del principi.
És per això que la plantilla que heu baixat ja té les proves corresponents per a cadascuna de les classes, inclosos els contractes, el flux i l’estat.
Per començar, hem d’anar a les proves > Kotlin> net > Corda > formació > estat > IOUStateTests
Allà hi trobareu proves ja escrites. També inclou una gran quantitat de documentació. L’equip de R3 Corda s’ha dedicat el seu temps a crear la plantilla.
Per fer una sola prova, cal que descomenteu la secció, tal com es mostra a continuació.
Seleccioneu el codi i premeu Ctrl + / per fer un comentari. Si utilitzeu MAC, utilitzeu CMD + / per descomentar.
Ara, és hora que fem la prova unitària.
Com que la nostra classe IOUState és gairebé buida, les proves fallaran i obtindreu el següent error de prova.
Com podeu veure, es diu que la prova Kotlin-source: ha fallat a causa de l’excepció NoSuchFieldException. Això vol dir que la prova espera la quantitat variable on no n’ha trobat cap.
Per solucionar-ho, hem de tornar al nostre fitxer IOUState.kt i editar-lo. Si ho saps com construir una aplicació blockchain, serà una tasca fàcil per a vosaltres.
Abans de continuar, hem d’entendre millor Kotlin. Per donar sentit al codi que editarem, és millor obtenir una introducció. Kotlin és un llenguatge de programació dens. A més, Kotlin es convertirà en màquina virtual JVM, per la qual cosa hauríem d’estar bé amb l’ús al tutorial..
- classe de dades IOUState → Aquesta paraula clau significa que definim una classe de dades anomenada “IOUState”.
- val dades → declaració variable. El nom del camp és dades
- Cadena = “dades” → defineix el valor per defecte de la variable de dades si no es defineix res.
- ContractState → Interfície
Si heu fet tots els canvis al fitxer IOUState.kt segons la prova, la classe IOUState es veurà a continuació.
classe de dades IOUState (val import: Import,
val prestador: festa,
val prestatari: Festa,
val pagat: Import = Import (0, amount.token),
anul·lar val linearId: UniqueIdentifier = UniqueIdentifier ()): LinearState {
/ **
* Aquesta propietat conté una llista dels nodes que poden “utilitzar” aquest estat en una transacció vàlida. En aquest cas, el fitxer
* Prestador o prestatari.
* /
anul·lar val participants: Llista aconseguir() = llista de (prestador, prestatari)
/ **
* Mètodes auxiliars per a la creació de transaccions per liquidar i transferir IOU.
* – [pagar] afegeix una quantitat a la propietat pagada. No fa cap validació.
* – [withNewLender] crea una còpia de l’estat actual amb un prestador recentment especificat. Per utilitzar durant la transferència.
* /
diversió pay (amountToPay: Amount) = còpia (paid = paid.plus (amountToPay))
diversió withNewLender (newLender: Party) = còpia (prestador = newLender)
}
Ara hauríeu de poder afegir mètodes d’assistència d’acord amb els comentaris anteriors.
Voleu convertir-vos en un expert en Corda? Aquí teniu una guia a la certificació R3 Corda que us guiarà en el procés de certificació.
Contactes de Corda
Vam aprendre que els Estats podien evolucionar cap a nous estats. Els desenvolupadors poden controlar l’evolució de l’estat del llibre major mitjançant contractes. En aquesta secció, coneixerem detalladament els contractes.
Com que R3 Corda no depèn de la transmissió de missatges a tota la xarxa, utilitza una definició de verificació de transaccions comuna per a cada tipus d’estat. D’aquesta manera, la xarxa Corda verifica la transacció i obté consens. És bastant similar a com altres blockchain registren les transaccions.
Els contractes Corda s’implementen mitjançant funcions. Podeu pensar en estats com a unitats d’emmagatzematge de dades i contractes com una manera de verificar les dades i els seus canvis d’estat. Aquestes funcions de verificació són específiques del tipus d’estat.
Per assegurar-se que es poden verificar els estats i que es poden fer servir, cal fer referència a cada estat amb un contracte.
Cada contracte conté dos elements, inclosos el codi del contracte i la prosa legal.
Per entendre-ho, fem una ullada a la imatge següent.
Com podeu veure, el contracte conté dos ítems i, a l’estat, hi ha una referència de contracte IOU per a aquest codi.
Prosa legal: La prosa legal s’utilitza com a referència al contracte legal per a l’acord. S’utilitza per assegurar que el marc jurídic i el sistema judicial existents es puguin utilitzar si es produeix una disputa.
Altres característiques clau dels contractes de Corda inclouen les següents
- Diversos contractes poden fer referència a un contracte. A més, un contracte pot contenir diversos tipus d’estats
- Corda utilitza una funció de verificació per verificar una transacció proposada
- La signatura del mètode de verificació és la següent
- fun verify (tx: Transacció): Unitat
- El mètode de verificació verifica la transacció executant totes les restriccions. Si la restricció falla, es produirà una excepció; en cas contrari, la transacció es considerarà vàlida.
- La funció de verificació és determinista.
Transaccions Corda
La nostra pròxima parada és Corda Transactions. Són transaccions les que fan possibles canvis d’estat.
Llavors, què és una transacció? Es pot definir millor com un contenidor que conté referències d’estat d’entrada (0 o més). També produeixen estats (0 o més).
Les transaccions permeten que la xarxa tingui un rendiment òptim fent possible que diversos companys puguin interactuar entre ells en temps real. Permet que dues parts facin un intercanvi atòmic sense dificultar altres activitats entre iguals. A més, les transaccions tenen una naturalesa atòmica. Això significa que una transacció mai no es pot reduir ni dividir.
També hi ha tres tipus de transaccions: assegurances, actualitzacions i sortides. Cadascun té la seva pròpia agenda. Enumerem-los a continuació.
- Assegurances → Crea nous estats
- Actualitzacions → Canvia les propietats de l’estat
- Surt → Elimina els estats del llibre major
Corda Flows
Els fluxos de corda són els passos necessaris perquè els companys puguin dur a terme (executar) una transacció amb èxit.
El flux determina la lògica de negoci principal de CorDapp. És responsable d’assegurar-se que les transaccions s’executen en l’ordre i els paràmetres correctes. Com que les transaccions són de naturalesa complexa, calen fluxos per garantir que tot funcioni tal com es pretenia.
El control de flux garanteix quan s’ha de comunicar, què s’ha de comunicar i amb qui s’ha de comunicar.
Això és tot el contrari que altres tecnologies de llibres distribuïts que se centren a transmetre els detalls de la transacció a tota la xarxa. Corda prospera en transaccions punt a punt on les transaccions han de tenir dos paràmetres importants, emissor i receptor.
Coses clau que heu de saber sobre els fluxos
- Els fluxos es poden completar en qüestió de segons o poden trigar diversos dies a completar-se
- Són completament autònoms
- Els fluxos dormen abans que esperin una resposta
- Els fluxos segueixen Flow Framework, que proporciona un mecanisme per als desenvolupadors per garantir el desenvolupament adequat de les màquines en estat.
- Els fluxos es poden combinar i unilateralment
- Els desenvolupadors també poden codificar sub-fluxos per simplificar el codi
Voleu aprofitar-ho i convertir-vos en un expert? Aquí teniu una guia sobre com construir una cadena de blocs a Python.
Consens
D’entre totes les coses emocionants que hem comentat fins ara, l’especial que té Corda és com s’aconsegueix el consens. Corda té un enfocament únic i, per tant, el fa viable per a les empreses que hi ha.
En primer lloc, Corda utilitza dos algoritmes de consens. Inclou el següent
- Consens de singularitat → Aquest mètode de consens garanteix que mai no es produeixin conflictes al llibre major
- Consens de verificació → El consens de verificació gestiona les transaccions i garanteix que no es produeixin conflictes segons el codi de contracte. Facilita l’evolució d’un estat compartit dins de la xarxa.
Aspectes clau que heu de tenir sobre el consens de Corda:
- El consens únic garanteix que les actualitzacions del llibre major sempre siguin úniques. A més, s’assegura que el llibre major sigui vàlid quan es fa l’actualització.
- El consens de verificació garanteix que l’actualització sigui vàlida.
Node Corda
L’última secció de Corda que tractarem aquí és el node Corda. Corda Node és una vista d’alt nivell del Corda.
Llavors, què és exactament el node Corda?
Un node Corda és una entitat que s’executa a la màquina virtual de Java. Implica el següent
- Ofereix serveis d’emmagatzematge i voltes
- SQL DB dóna suport als serveis d’emmagatzematge i de magatzems
- Les carpetes dedicades s’utilitzen per emmagatzemar fitxers adjunts
- Ofereix funcionalitats personalitzades i extensions integrades conegudes com CorDapps
- Ofereix un marc de clients RPC
Així és el node Corda.
Com podeu veure, conté tots els aspectes necessaris per executar la xarxa Corda. Interaccionen amb el flux i proporcionen una funcionalitat personalitzada de CorDapp.
Conclusió
Això ens condueix al final del nostre tutorial de Corda. Aquí vam mirar el Corda i vam intentar veure un IoD CorDapp. Vam discutir les seves diferents seccions mitjançant la formació de plantilles disponible al dipòsit de Corda GitHub.
El nostre objectiu és començar amb Corda sense intentar explicar tot el que ofereix Corda. Per a això, sempre podeu utilitzar la documentació de Corda. També tenim un proper curs sobre tutorial de desenvolupament de Corda. Segur que ho haureu de comprovar si voleu necessitar una guia de desenvolupament completa.