Com redactar el vostre primer contracte intel·ligent?



Apreneu els conceptes bàsics del desenvolupament de contractes intel·ligents i comenceu a escriure el vostre primer contracte intel·ligent. També sabreu provar el contracte intel·ligent.

A la , heu conegut què són els contractes intel·ligents, diferents idiomes de contractes intel·ligents i com configurar un entorn de desenvolupament de contractes intel·ligents. En aquest article, aprendràs a construir el teu primer contracte intel·ligent. Faré servirRemix IDE per desenvolupar i provar un contracte intel·ligent.

A continuació, es tracten els temes següents en aquest tutorial sobre desenvolupament de contractes intel·ligents:





Construint el vostre contracte intel·ligent

Com a part d'aquesta sèrie de blocs, es desenvoluparà un simple contracte intel·ligent de comanda de compra. A mesura que aquesta sèrie progressa i a mesura que s’introdueixen nous conceptes de llenguatge de programació de solidesa, el contracte intel·ligent de l’ordre de compra evolucionarà i millorarà.



Estructura del contracte intel·ligent

El contracte intel·ligent Solidity, en essència, és una col·lecció de seguidors

  • dades - que manté l’estat actual del contracte
  • funció - que apliquen la lògica per transitar l'estat del contracte

Els contractes intel·ligents de solidesa segueixen una estructura estàndard. Qualsevol contracte intel·ligent comença amb la següent declaració



Directiva Pragma

La paraula clau 'pragma' es pot utilitzar per habilitar determinades funcions o comprovacions del compilador. La declaració següent defineix que el fitxer font (contracte intel·ligent) no es compilarà amb el compilador anterior a 0.4.0 i la versió del compilador després de 0.6.0. Aquesta declaració garanteix que no s'introdueixi cap comportament no desitjat quan s'introdueix una nova versió del compilador.

solidesa del pragma> = 0,4,0<=0.6.0 

Declaració de contracte

El contracte es declara mitjançant la paraula clau 'contracte'. Es declara un contracte buit que s’identifica amb el nom “Ordre de compra”.

contracte Ordre de compra {}

Emmagatzematge de dades rellevants del contracte

És possible que cada contracte o, en termes genèrics, cada programa requereixi emmagatzemar algunes dades. Afegir dades al programa li proporciona un nivell de flexibilitat. Una característica important és allunyar-se dels valors codificats al programa als valors proporcionats per l'usuari. Les variables permeten emmagatzemar les dades, etiquetar-les, recuperar-les i manipular-les.

Desenvolupament de contractes intel·ligents: introducció de variables

En termes de solidesa, les variables són de dos tipus

  1. Tipus de valor: Aquest tipus de variables es passen per valor, és a dir, sempre es copien quan s’utilitzen com a arguments de funció o en assignacions. Per exemple: enters, adreça booleana, etc.
  2. Tipus de referència: Aquest tipus de variables són de tipus complex i es passen per referència, aquestes variables no s’adapten a 256 bits i s’han de gestionar amb cura ja que copiar-les costa.

Afegir dades a Smart Contract

Afegim algunes variables de dades al contracte. Per a cada comanda de compra, hi ha d’haver una quantitat de producte associada. Afegim una variable product_quantity que serà del tipus de dades enter o nombre.

el mètode system.exit finalitzarà l'aplicació.

La variable que introduïm ara és un enter sense signar i està representada per uint256, 256 significa aquí l’emmagatzematge de 256 bits.

  • U - sense signar (és a dir, aquest tipus només pot representar nombres enters positius, no nombres enters positius i negatius)
  • INT - enter
  • Mida de 256 a 256 bits
  • el valor mínim uint256 que es pot assignar és 0
  • el valor màxim uint256 es pot assignar és 2 ^ 256-1 [un nombre molt gran]

La quantitat de producte només és un valor positiu i la suposició actual és que respondrem a un valor molt gran per a la quantitat de producte.

passa per valor i passa per referència a java

La variable 'product_quantity' declarada forma part de l'estat del contracte i, per tant, es manté o s'emmagatzema a l'espai contractual. Actualment, aquesta variable tindrà un valor per defecte 0.

contracte Ordre de compra {uint256 product_quantity}

Definició del constructor

El constructor es crida quan es desplega el contracte. El constructor inicialitza el contracte amb alguns valors. A l'escenari actual, la quantitat de producte s'estableix a 100 quan es desplega el contracte. També es pot crear un constructor parametritzat passant una variable i inicialitzant product_quantity mitjançant el valor passat.

El punt clau que cal assenyalar aquí és el modificador d’accés “públic” associat al constructor. La paraula clau pública especifica que tothom pot accedir a aquesta funció, no és una funció restringida.

constructor () públic {product_quantity = 100}

Afegir funcions

Afegim ara una funció per fer que el nostre programa sigui interactiu. Les funcions són funcions controlades que es poden afegir a un programa. Qualsevol funció està precedida per una funció de paraula clau. En general, és així com es veu la declaració de funcions' funció '.

Obtenir funció

Un dels requisits més habituals per a qualsevol programa és llegir el valor emmagatzemat. Al contracte següent, haurem de llegir el valor 'quantitat_producte'. Per tal de proporcionar aquesta capacitat, s'afegeix una funció de lectura o una funció get. En aquesta funció no fem cap manipulació del valor emmagatzemat, sinó que només recuperem el valor emmagatzemat.

Desglossem ara la nostra funció get (get_quantity)

No. Paraula clau Valor
1 get_quantity (){no es passen paràmetres}
2 públic{tothom pot accedir a la funció}
3 vista{significa que la funció només llegeix l'estat del contracte, no modifica l'estat del contracte, per tant, visualitza}
4 retorna una variable de tipus uint256 {defineix el que torna la funció}
la funció get_quantity () retorna la vista pública (uint256) {return product_quantity}

Funcions de setter

La lectura de les dades és necessària i l’hem aconseguit a l’última secció, però la majoria de l’escenari també requereix la capacitat d’escriure / actualitzar les dades. Aquesta capacitat específica es proporciona afegint una funció de configurador. Aquesta funció pren un valor de l'usuari en forma de paràmetre d'entrada. Utilitzant el valor proporcionat per l'usuari a la funció, s'escriu / actualitza el valor de la variable 'product_quantity'.

Desglossem ara la nostra funció establerta (actualització_quantitat)

Afegir una funció per actualitzar el valor de la quantitat de producte

No. Paraula clau Valor
1 quantitat_actualització (valor uint256){es passa el valor del paràmetre del tipus uint256}
2 públic{tothom pot accedir a la funció}
3 No és necessari, ja que les funcions actualitzen l'estat
4 retorna una variable de tipus uint256 (defineix el que retorna la funció)
funció update_quantity (valor uint256) públic {product_quantity = product_quantity + value}

Connectant tot això, és així com hauria de ser el contracte general.

solidesa del pragma> = 0,4,0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Desplegament del contracte intel·ligent

És hora de provar el contracte intel·ligent. Per provar aquest contracte intel·ligent, utilitzarem Remix IDE en línia .

Remix és un parc infantil en línia per a contracte intel·ligent ethereum . Remix està completament basat en navegador. Remix us proporciona un IDE (entorn de desenvolupament integrat) en línia on podeu escriure els vostres contractes intel·ligents. Remix us proporciona una capacitat de compilador de solidesa en línia. El contracte intel·ligent de Remix IDE es pot compilar sense problemes amb una versió específica del compilador.

Remix també proporciona la capacitat de provar ràpidament el contracte intel·ligent.

Remix proporciona un conjunt d'eines complet per iniciar el desenvolupament de contractes intel·ligents i la prova d'unitats del contracte intel·ligent, sense fer cap instal·lació a la vostra màquina local. Això és de gran utilitat per començar amb solidesa, ja que els desenvolupadors només han de centrar-se a escriure un contracte intel·ligent, més aviat a preocupar-se per la infraestructura.

Amb Remix IDE tot el que necessiteu és un navegador i una connexió a Internet per començar a desenvolupar contractes intel·ligents. Desenvolupament ràpid, proves i validació d’una idea per a un contracte intel·ligent.

Remix ha actualitzat recentment la seva interfície d’usuari.

Remix-UI-Smart-Contracts-Edureka

Feu clic a la icona del fitxer tal com es ressalta a la imatge anterior, s'obrirà l'explorador de fitxers.

  1. Fent clic a la icona del signe més, es pot crear un fitxer nou, anomenant-lo PurchaseOrder.sol
  2. Això crearà un fitxer buit anomenat PurchaseOrder.sol, feu clic i obriu aquest fitxer.
  3. Copiem i enganxem tot el contracte a PurchaseOrder.sol.
  4. Feu clic a la segona icona, al menú esquerre just a sota de la icona del fitxer, hauria d'aparèixer l'opció del compilador de solidesa.
  5. A l’etiqueta del compilador, seleccioneu la versió del compilador. La versió seleccionada actual és 0.5.8.
  6. Publicar la selecció de la versió del compilador, feu clic a 'Compila PurchaseOrder.sol'. Això compilarà el contracte intel·ligent.

7. Un cop s'hagi compilat correctament el contracte intel·ligent, feu clic al botó 'Detalls de recopilació' i apareixeran els detalls següents. Després de la recopilació, es disposa de dues dades clau

    • ABI: interfície binària d'aplicacions. Es tracta d’un fitxer json que detalla tots els mètodes exposats al contracte intel·ligent juntament amb les metadades dels mètodes. Es discutirà més sobre això als següents blocs.
    • Bytecode- Codi d’operació EVM (màquina virtual Ethereum), la lògica de contracte intel·ligent es converteix en el bytecode en la compilació.

8. Per provar el contracte intel·ligent, cal desplegar-lo. Per desplegar el contracte intel·ligent, feu clic a la següent icona del menú esquerre, a sota de la icona de compilació. Apareixerà la següent pantalla. Per provar el contracte intel·ligent, cal desplegar-lo. Per desplegar el contracte intel·ligent, feu clic a la següent icona del menú esquerre, a sota de la icona de compilació. Apareixerà la següent pantalla.

Opció de desplegament

La pantalla de desplegament proporciona un parell d’opcions. Vegem-les una per una.

  • Medi ambient: es pot pensar en una opció similar a l’opció de comprar un ordinador portàtil a Amazon, Flipkart o Newegg (tots aquests són distribuïdors en línia), on trieu on voleu comprar, segons el vostre requisit. De la mateixa manera, en el cas de Remix, tenim una opció per desplegar el contracte intel·ligent i provar-lo. El menú desplegable situat al costat de l'etiqueta d'entorn proporciona tres seleccions
    • JavaScript VM: un node únic Ethereum local es genera a la memòria del navegador i proporciona 5 comptes de prova prefinançats que es poden utilitzar per a la transacció (desplegament, funcions d'invocació)
    • Proporcionat Web3 injectat: es basa en MetaMask. Metamask és com un intermediari o intermediari, que permet a les aplicacions web interactuar amb el contracte intel·ligent. Metamask proporciona la capacitat de gestionar les identitats i també signar les transaccions que s’enviaran a la xarxa ethereum. Aquest intermediari o 3rdparty us ajudarà a determinar la xarxa de blockchain on es desplegarà el contracte intel·ligent.
    • Proveïdor Web3: si esteu executant un node Ethereum local i el punt final RPC està disponible, es pot utilitzar aquesta opció. El contracte intel·ligent es desplegarà al node Ethereum local.
  • Comptes: aquesta informació s'omple en funció de l'entorn seleccionat. Per exemple. JavaScript VM proporciona 5 comptes de prova prefinançats. En cas que el proveïdor Web3 i el Web3 injectat no proporcionin comptes de prova prefinançats.
  • Límit de gas: defineix la quantitat màxima de gas que l'iniciador està disposat a gastar per a qualsevol transacció. Aquest és el lloc per protegir-se contra un bucle infinit i esgotar tots els fons del compte en cas de condició de bucle infinit.
  • Valor: el valor que es pot requerir per enviar durant el desplegament del contracte intel·ligent. Aquest és un valor opcional.

Per tal de desplegar el contracte, seleccioneu l'opció VM de JavaScript, seleccioneu el primer compte del menú desplegable i tingueu en compte el saldo del compte (100 ether).

Assegureu-vos que el nom del contracte intel·ligent que apareix sigui PurchaseOrder, feu clic a desplega. Accions clau que passaran

  1. El saldo del compte canvia de 100 èter a 99,999999 èter; l'import deduït és el cost de la transacció per al desplegament del contracte intel·ligent.
  2. Sota el contracte desplegat, apareixerà un nou mosaic per al contracte intel·ligent, que també proporcionarà l'adreça del nou contracte intel·ligent com aquesta (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. A la finestra de la consola apareixerà la següent informació
    1. Hash de transaccions: identifica de forma única el desplegament del contracte
    2. Cost de la transacció
    3. Adreça del contracte

Interacció amb el contracte desplegat

  1. Segons el contracte desplegat, hi ha disponibles dos mètodes d'interacció actualització_quantitat i obtenció_quantitat.
  2. Aquests dos mètodes d'interacció són els mètodes públics definits al contracte 'Ordre de compra'.
  3. La quantitat d'actualització del mètode 'update_quantity' requereix un paràmetre d'entrada, per tant el quadre d'entrada.
  4. El mètode Get quantitat 'get_quantity' recupera el valor del product_quantity.
  5. Comproveu què passa quan s’invoca get_quantity, es mostra el valor de retorn 100, que es va inicialitzar al constructor. Això no provoca que es produeixi cap transacció
  6. Invocem update_quantity i en proporcionem 30 com a entrada. Això fa que es produeixi una transacció

En poques paraules, qualsevol operació que provoqui una operació d’escriptura a l’estat del contracte (és a dir, canvia les variables del contracte) donarà lloc a una transacció.

Qualsevol operació que acabi de llegir l'estat del contracte no provoca cap transacció.

Conclusió de desenvolupament de contractes intel·ligents

Amb això, acabem de crear el nostre primer contracte intel·ligent, només ratllant la superfície de la solidesa. Acabem de veure el que es necessita per provar el contracte intel·ligent des del desplegament del contracte intel·ligent fins a l’inici de transaccions.

com crear una matriu dinàmica a Java

Al proper bloc, que és la continuació de la sèrie de desenvolupament de contractes intel·ligents, ens endinsarem en els fonaments de la solidesa, aprofundint en el desplegament de contractes intel·ligents.

Amb això, conclou això Contracte intel·ligent bloc de desenvolupament. Espero que us hagi agradat llegir aquest bloc i que us hagi resultat informatiu.

Josi voleu aprendre Smart Contracts, construir una carrera en el domini de Blockchain i adquirir experiència en programació Ethereum, inscriure-us a live-online aquí, ve amb suport 24 * 7 per guiar-lo durant tot el període d'aprenentatge.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris de 'Desenvolupament de contractes intel·ligents' i us respondrem a la primera pàginac.