Què és un Smart Contract?
Un Smart Contract (o contracte intel·ligent) és un acord entre parts que conté una sèrie d’instruccions en forma de codi i que s’executa a la blockchain (cadena de blocs), de manera que s’emmagatzema en una base de dades pública i no es pot modificar. Les transaccions que es produeixen en un contracte intel·ligent són processades per la cadena de blocs, el que significa que es poden enviar automàticament sense cap intermediari. Les transaccions només es produeixen quan es compleixen les condicions de l’acord preestablert: no hi ha cap tercer, de manera que no hi ha problemes de confiança. Posem-ne un exemple:
Imaginem que volem llogar un vehicle per passar una setmana de vacances. Tradicionalment, pagaríem per avançat el cost de tota la setmana i retornaríem el vehicle dins d’un horari preestablert. En canvi, amb l’ús de Smart Contracts podem fer que el propi vehicle, mitjançant Internet of Things, faci un càlcul del temps d’ús i kilòmetres recorreguts, per tal que se’ns vagi cobrant cèntim a cèntim en temps real, tenint la possibilitat de retornar-lo abans de la data establerta i finalitzar el contracte.
L’avantatge de realitzar aquesta transacció per mitjà d’un Smart Contract és que el contracte és transparent (visible per tothom a la blockchain), immutable (un cop s’emmagatzema a la blockchain ja no es pot modificar) i imparcial (el codi és objectiu). D’altra banda, un dels inconvenients a destacar és que, en cas que el codi del Smart Contract presenti vulnerabilitats (no necessàriament intencionades), es pot posar en risc la seguretat dels diners i dades transferides al contracte.
Quins casos d’ús tenen els Smart Contracts actualment?
A banda de l’exemple que hem exposat anteriorment, existeix un gran ventall d’oportunitats en la implementació de contractes intel·ligents, ja que es poden utilitzar per a qualsevol tipus de transacció, no ha de ser necessàriament financera.
— Medicina: Entre diversos projectes, cal destacar EncrypGen, que ha desenvolupat una aplicació que empra Smart Contracts per transferir les dades dels pacients a investigadors de manera segura, sense permetre l’accés de tercers. Si els investigadors volen fer servir les dades dels pacients, han de pagar i el pacient ha de triar si li vol vendre les seves dades mèdiques o no.
— Assegurances: L’asseguradora francesa AXA ja ha començat a fer proves amb Smart Contracts per assegurar vols d’avió. En cas que l’avió arribi a l’hora, el passatger paga el cost de l’assegurança. En cas que l’avió arribi tard, el Smart Contract reclama a l’asseguradora els diners i els diposita al passatger, automatitzant i agilitzant tot el procés de reclamació.
— Identitat digital i votacions: Darrerament, han anat sorgint certs projectes que pretenen validar la identitat d’un elector i registrar el seu vot. Aquesta informació es podria fer servir per iniciar una acció després d’haver cessat totes les votacions. Com que els blocs dins d’una cadena de blocs són inalterables un cop s’han enregistrat, la manipulació d’aquest registre no seria possible i evitaria molts problemes de frau electoral.
— Cadenes de subministrament: Emprar Smart Contracts per a la gestió d’inventari i comandes sembla una realitat cada vegada més propera. L’adopció de l’Internet of Things podría fer que les pròpies màquines d’una fàbrica facin una comanda de materials quan detecten que s’estan exhaurint.
Reptes en l’adopció dels Smart Contracts
Un dels principals reptes que trobem és la necessitat d’ajustar els contractes intel·ligents a un marc legal que és diferent a cada país (i, fins i tot, a cada regió de cada país). Traslladar el llenguatge jurídic al món de la programació, així com provar la validesa jurídica d’un contracte que no té intermediaris, sembla força difícil ara com ara. Tanmateix, el panorama legal s’està començant a adaptar a aquestes noves formes de transaccionar.
Un altre aspecte decisiu en l’esdevenir dels contractes intel·ligents serà la llegibilitat i accessibilitat dels contractes. Actualment, només programadors experts són capaços d’entendre el codi (i, per tant, les condicions del contracte). Tot fa pensar que amb els temps sorgiran formes adaptades al llenguatge natural de llegir i entendre el funcionament del contracte. De la mateixa manera, la creació de Smart Contracts s’està simplificant gràcies a noves plataformes on, sense programar i amb un parell de clics, podem generar i posar en funcionament el nostre Smart Contract.
Finalment, per a un correcte funcionament dels contractes intel·ligents, necessitem proveir-los de dades fiables sobre el que succeeix al món real. Cal tenir present que, en una cadena de blocs, l’únic món conegut és allò que s’emmagatzema en els blocs (per entendre’ns, podem dir que la blockchain està aïllada). Els que s’encarreguen de proveir d’aquestes dades els Smart Contracts són els anomenats oracles.
Els oracles permeten fer un seguiment l’activitat d’Internet per poder transferir aquestes dades a la blockchain. Les seves funcions varien des de verificar resultats d’esdeveniments esportius, localitzar objectes a qualsevol lloc del món amb l’ajut de tecnologia de geolocalització o proveir les cotitzacions de la borsa en temps real. Projectes com Chainlink, Band Protocol o API3 tenen com a objectius millorar la interoperabilitat de les blockchains amb el món real gracies a aquests oracles.
Com es pot programar un Smart Contract?
El llenguatge més comú per programar Smart Contracts és Solidity, un llenguatge d’alt nivell que té certa semblança a JavaScript i que ens permet programar a l’Ethereum Virtual Machine (EVM). L’EVM s’utilitza no només a la blockchain d’Ethereum sinò també en d’altres que es basen en la mateixa tecnologia, com podrien ser Binance Smart Chain, Polygon, Celo, TRON, RSK i moltes més. L’entorn de programació (IDE) que es fa servir normalment per publicar Smart Contracts és Remix, podeu trobar un tutorial amb les primeres passes aquí.
D’altra banda, recentment ha començat a guanyar adopció l’ús del llenguatge Rust per programar Smart Contracts en blockchains com Solana, Terra, Polkadot, NEAR Protocol i altres. Rust introdueix novetats interessants i genera cert debat a la comunitat de programadors sobre quin llenguatge és més òptim a l’hora de desenvolupar projectes en la blockchain. Tot i això, Solidity continua sent el més rellevant i el que més programadors fan servir.