L’objectiu d’aquesta guia és submergir-se a Web3 el més ràpidament possible per tenir el context i la comprensió bàsica necessaris per començar a aprendre i començar a desenvolupar-se.
Per què Blockchain?
Si sou nou a l’espai, pot ser que no estigui clar què ofereix una “Internet descentralitzada” a un desenvolupador. Penseu en una cadena de blocs pública com Ethereum que defineix un “estat” clar i font de veritat per a tothom que hi participa, accessible per qualsevol usuari connectat a Internet, un sistema que utilitza la força del protocol de codi obert i la redundància de la creació de xarxes entre iguals per mantenir-se segurs i fiables. En lloc de requerir que tots els desenvolupadors d’aplicacions creïn i mantinguin tot l’estat de la seva aplicació en servidors privats, es pot emmagatzemar molt a la cadena de blocs pública i recuperar-la. Un backend comú, fiable i segur.
La raó per la qual és possible és per les característiques úniques d’una base de dades de cadenes de blocs. És només d’escriptura: quan una base de dades típica pot afegir i eliminar registres, les dades de blockchain existeixen per sempre i no es poden eliminar. La xarxa de nodes manté aquesta base de dades com a “llibre major distribuït” i té protocols estrictes sobre qui té permís per escriure en un moment determinat. Un dels aspectes interessants de la tecnologia és com es distribueixen els permisos d’escriptura entre nodes que poden no necessitar cap permís especial per unir-s’hi. Si configuréssiu el vostre propi node Ethereum públic, tindríeu accés d’escriptura a tota la xarxa: sempre que hàgiu completat la “prova de treball” necessària per donar-vos el privilegi d’escriure un node abans que ho fes qualsevol altre node..
Un exemple principal i típic de tecnologia blockchain en acció és la facilitat d’enviar i rebre criptomoneda. El llibre major d’Ethereum permet al desenvolupador implementar passarel·les de pagament sense bancs, comptes ni altres intermediaris.
Un desenvolupador podria crear el seu propi testimoni Ethereum sense haver de crear la infraestructura necessària perquè els usuaris els puguin canviar. Una plataforma de jocs en línia podria simbolitzar els elements del joc i els usuaris podrien comprar aquests tokens i canviar-los fora de la plataforma i posseir-los per separat de la plataforma de jocs mateixa. Més enllà d’elements comercials per al seu ús en el joc, els col·leccionables digitals tenen un potencial futur enorme. A mesura que els esports electrònics creixen en popularitat, és possible que tingueu un equivalent simbolitzat digitalment a una “bola de casa”..
Com que cada usuari té el seu propi parell de claus pública / privada, l’autenticació d’usuaris es fa molt més senzilla, ja que les aplicacions només han de verificar que un usuari pugui signar transaccions amb la seva clau privada..
Els contractes intel·ligents es poden utilitzar per crear diners programables. Penseu en l’ús bàsic d’un contracte intel·ligent programable per solucionar la situació en què dos propietaris d’un apartament volen dividir els pagaments de lloguer d’un inquilí 50/50. Normalment, el llogater hauria de pagar cada propietari per separat, o bé pagaria un propietari o un agent, i el propietari o agent desemborsaria els diners. Tot i que aquesta situació no és especialment problemàtica, tingueu en compte la confiança implícita que es requereix en un individu per proporcionar a l’altre la seva quota. Contrasteu-ho amb un simple contracte intel·ligent que divideix programàriament els fons entrants i els envia a l’adreça de cada propietari. El llogater només ha d’enviar el lloguer a aquesta adreça i cada propietari rebrà la seva quota immediatament. A causa de la seguretat i la immutabilitat d’una cadena de blocs com Ethereum, es pot assegurar a cada propietari que el contracte intel·ligent funcionarà com es desitgi i pot auditar el seu codi.
Un cop tinguem la columna vertebral digital de confiança que ens proporciona blockchain, també podem aplicar els avantatges de la programació a problemes socials importants. Podem proporcionar un servei bancari en poques línies de codi. Podem confirmar la identitat amb uns quants clics. Tot amb un protocol que pot funcionar a gairebé qualsevol ordinador a qualsevol part del món.
Com que l’espai és nou i en desenvolupament, hi ha oportunitats per als desenvolupadors de construir nous tipus d’eines, aplicacions i sistemes i proposar casos d’ús nous per a aquesta tecnologia..
Una solució a la recerca d’un problema?
Un refrany habitual de les crítiques a la tecnologia blockchain és que és una solució a la recerca d’un problema. Es pot argumentar que la moneda digital va ser la primera aplicació de blockchain killer i que Distributed Finance o DeFi s’està configurant per ser la següent, actualment es desconeix l’extensió completa de com es pot aplicar aquesta tecnologia i és una de les raons principals dels desenvolupadors a l’espai és emocionant formar part de. Durant més d’una dècada, la tecnologia làser no va tenir cap ús aparent, fins que investigadors, experimentadors i empresaris van poder aplicar-la d’una manera totalment inesperada. Tot i que es podria utilitzar el mateix argument per a qualsevol nova tecnologia, l’adopció massiva i àmplia de moneda digital i els més de 350.000 milions de dòlars que contenen actualment les cadenes de blocs descentralitzades distribuïdes, no gestionades, és força notable.
Estructura bàsica d’aplicacions distribuïdes
Una aplicació distribuïda és, en general, una que es connecta a una cadena de blocs en algun lloc de la seva pila i és probable que sigui fonamental per al seu funcionament. Les aplicacions distribuïdes són una barreja dels sistemes frontals i backend habituals que trobareu a una aplicació web, però que faran servir una biblioteca com web3.js per connectar-se a la xarxa Ethereum. Algunes aplicacions distribuïdes es distribueixen completament: viuen completament a xarxes distribuïdes.
A l’extrem de l’usuari, MetaMask és un popular plugin que gestiona la cartera Ethereum dels usuaris. MetaMask proporciona una interfície perquè un usuari signi transaccions i demostri la seva “identitat”.
Una determinada aplicació distribuïda es pot connectar a la cadena de blocs d’Ethereum i també a la cartera dels usuaris MetaMask (o una altra cartera) per autenticar-se.
Interfície amb Ethereum
Normalment, per interactuar amb Ethereum cal operar un node. Un node és una part fonamental de l’estructura d’una cadena de blocs, el parell que es connecta amb altres parells per formar l’estructura descentralitzada. El protocol és el principal de la xarxa pública pública: no hi ha servidor central, no hi ha autoritat i no hi ha límits per a qui pot operar un node. Només hi ha un protocol comú per a tots els nodes participants.
Molts desenvolupadors d’aplicacions prefereixen no executar el seu propi node Ethereum, de manera que els serveis els agraden Infura existeixen per proporcionar una passarel·la i una API per a Ethereum que els desenvolupadors puguin utilitzar.
Contractes intel·ligents
Tot i que la xarxa Bitcoin és una de les cadenes de blocs més conegudes, Ethereum té un conjunt de funcions que resulta més emocionant per als desenvolupadors, ja que inclou una màquina virtual completa de Turing que pot executar petits programes anomenats contractes intel·ligents. Com a resultat, Ethereum té la comunitat de desenvolupadors més forta i activa entre qualsevol dels ecosistemes blockchain.
Els contractes intel·ligents s’executen en nodes i fan servir transaccions per a la seva entrada i sortida. Els contractes intel·ligents resideixen a les adreces de la cadena de blocs, de la mateixa manera que l’adreça del compte d’un usuari. Per interactuar amb un contracte intel·ligent, només heu d’enviar-li una transacció juntament amb les dades d’entrada.
Gas
L’execució d’un contracte intel·ligent requereix gasolina, un petit cost que compensa els operadors de nodes pel servei d’execució del contracte intel·ligent, alhora que redueix la incidència de correu brossa (fent que l’espamming sigui car) i eviti que els contractes intel·ligents mal codificats puguin fer un bucle infinit i empantanegar la xarxa..
Mainnet, Testnets, altres xarxes
Una xarxa principal en llenguatge blockchain fa referència a la xarxa activa principal per a un protocol determinat. En el cas d’Ethereum, mainnet és on s’intercanvia el valor real i es considera la font de la veritat. Però qualsevol grup de nodes pot formar la seva pròpia xarxa. Les xarxes de prova serveixen a la comunitat de desenvolupadors oferint xarxes molt més petites on Eth i gas són gratuïts, de manera que els desenvolupadors poden provar els seus projectes i codificar sense cap risc. Les xarxes de prova d’Ethereum s’anomenen Ropsten, Kovan, Rinkeby i Görli.
Les xarxes Ethereum també s’utilitzen per a aplicacions empresarials: xarxes fetes a mida que funcionen de forma permesa (enfront de la xarxa principal i les xarxes de proves sense permís) per facilitar les transaccions i altres operacions entre un petit grup d’organitzacions (per exemple). Aquestes xarxes tenen molts menys nodes i normalment tenen un propòsit específic. Els grans bancs, per exemple, poden utilitzar una cadena de blocs per a la liquidació interbancària.
Desenvolupament a Ethereum
El desenvolupament a Ethereum generalment es realitza per primer cop en cadenes de blocs locals a casa. Els desenvolupadors poden utilitzar alguna cosa com geth, programari de línia d’ordres que us permet crear xarxes Ethereum. Però això és com programar en un llenguatge de baix nivell: facilitant les coses, la suite Truffle dóna servei a moltes necessitats dels desenvolupadors. Ganache, que forma part de la suite, facilita molt als desenvolupadors l’activació d’una xarxa de cadenes de blocs locals per provar les seves aplicacions, oferint una “cadena de blocs d’un clic” per a finalitats de desenvolupament, juntament amb eines de línia d’ordres. Drizzle ajuda al desenvolupament del front-end i Truffle és un marc per facilitar el desenvolupament i el desplegament de contractes intel·ligents.
La interacció amb la cadena de blocs necessita l’ús d’una API (com ara web3.js) i accés a un node; en lloc d’operar els seus propis nodes, molts desenvolupadors utilitzaran un servei com Infura com a API Ethereum.
Idiomes Smart Contract
Actualment, el llenguatge més popular per codificar contractes intel·ligents és Solidesa. Aquest llenguatge similar al javascript és bastant fàcil de recollir per als desenvolupadors nous, especialment aquells amb experiència en codificació web. Remix és un IDE en línia que permet als desenvolupadors experimentar amb la creació de contractes intel·ligents. Hi ha molts detalls importants que cal aprendre per als programadors de contractes intel·ligents, ja que els contractes intel·ligents de la xarxa principal funcionen amb un valor real i són immutables un cop desplegats (tot i que hi ha metodologies de programació que ajuden a això).
La pila completa
Com passa amb tot el desenvolupament web modern, hi ha moltes opcions per utilitzar components en diversos nivells de la pila. Podeu obtenir més detalls a la pila de blocs sempre actualitzada.
Una pila de projectes senzilla
Aquí teniu un conjunt típic d’eines de desenvolupament que podeu utilitzar en un projecte senzill:
NPM
Gestor de paquets de nodes, que forma part de node.js
El marc de la tòfona
Un conjunt d’eines per facilitar el desenvolupament
Ganache
Des del framework Truffle, utilitzat per llançar una cadena de blocs privada a la vostra pròpia màquina
MetaMask
Una interfície d’usuari blockchain i una porta d’entrada a Ethereum; és un complement per a navegadors i una aplicació per a mòbils que la vostra aplicació pot connectar per permetre als usuaris signar transaccions i realitzar altres tasques.
Solidesa
Un llenguatge de programació popular per a contractes intel·ligents
HTML / CSS / JS
Per al vostre frontal
Web3.js
Una biblioteca API Ethereum que us permet connectar-vos i interactuar amb la xarxa Ethereum
Infura
Un servei API Ethereum que permet als desenvolupadors accedir a la xarxa Ethereum sense haver d’executar el seu propi node
Si esteu preparat per començar, la nostra guia en tres passos us explicarà amb més detall per posar-vos en marxa ràpidament a la cadena de blocs amb un passeig.
- Integració per a desenvolupadors: pas 1
Integració per a desenvolupadors: pas 1
Integració per a desenvolupadors: pas 2
Integració per a desenvolupadors: pas 2
Integració per a desenvolupadors: pas 3