paint-brush
Ampliació de contractes intel·ligents amb SQLper@kwilteam
3,537 lectures
3,537 lectures

Ampliació de contractes intel·ligents amb SQL

per Kwil9m2024/10/08
Read on Terminal Reader

Massa Llarg; Per llegir

Les plataformes de blockchain actuals, com Ethereum, s'enfronten a limitacions en el maneig de dades complexes a causa de l'emmagatzematge rígid de valors clau, cosa que dificulta les aplicacions avançades. Els contractes intel·ligents SQL introdueixen flexibilitat, permetent als desenvolupadors realitzar consultes dinàmiques i gestionar models de dades complexos de manera eficient en una xarxa descentralitzada. Els contractes intel·ligents SQL desbloquegen el potencial d'aplicacions descentralitzades més potents, revolucionant la cadena de blocs més enllà de la criptomoneda.
featured image - Ampliació de contractes intel·ligents amb SQL
Kwil HackerNoon profile picture
0-item
1-item
2-item

Un agraïment especial a Jun Jiang de DePHY Network i Ryan Soury d'Usher Labs pels comentaris i els coneixements.


El 2008, les alarmes de Wall Street van sonar quan els comerciants sofisticats van caure en un frenesí primordial. Les institucions financeres sobreapalancades, col·lapsades sota el pes dels valors recolzats per hipoteques subprime, van deixar al descobert els banquers cobdiciosos i demanant rescats. Els bancs centrals, desesperats per mantenir el poder, van pagar els pecats dels banquers amb el talonari de l'home comú. Aquesta traïció va posar al descobert els defectes del sistema monetari centralitzat, revelant la necessitat d'un sistema financer més nou, més lliure i més just. De la mateixa manera que la revolució americana i la constitució que va seguir van separar l'església i l'estat, va sorgir una nova revolució anomenada Bitcoin per separar els diners i l'estat, permetent moltes de les mateixes llibertats i llibertats fonamentals per a l'autodeterminació.


La tecnologia Blockchain és tecnologia de llibertat. Ens permet construir sistemes financers, d'identitat, d'informació i de coordinació social que no requereixen confiança en un intermediari centralitzat. Les llibertats individuals prosperen en un món on el banc central no controla el flux de diners, una única plataforma no controla el discurs social i una única empresa no controla les identitats digitals.


Moltes de les diferències entre aquest nou món i on som avui rau en les capacitats tècniques de les plataformes blockchain. La primera generació de contractes intel·ligents va ser la punta de l'iceberg que va habilitar aquests sistemes de llibertat; tanmateix, estan fonamentalment limitades en les seves capacitats. En aquest article, explico algunes de les limitacions crítiques dels contractes intel·ligents actuals i com un nou sistema, "SQL Smart Contracts", proporciona una base tècnicament més capaç per desbloquejar les llibertats humanes i realitzar el potencial de blockchain com a nova plataforma informàtica.

Contractes intel·ligents: programació de la màquina de la veritat

"El problema arrel... és tota la confiança que es requereix perquè funcioni". - Satoshi Nakamoto


La propietat bàsica inicial d'una cadena de blocs és la immutabilitat; una vegada que un determinat llindar de parts interessades (o "nodes") d'una xarxa acordin que alguna cosa és certa, la cadena de blocs conservarà un registre permanent d'aquesta veritat. Les cadenes de blocs utilitzen una varietat de mecanismes de "prova" en què els nodes gasten grans quantitats de valor en forma de potència informàtica, participació financera o reputació per garantir que els actors maliciosos no puguin manipular la veritat.


Si Bitcoin és la "màquina de la veritat" per a la moneda digital, Ethereum és la "màquina de la veritat" per a productes financers més complexos. Ethereum amplia les capacitats de Bitcoin creant un espai de disseny programable on els desenvolupadors poden implementar qualsevol lògica que es desplega, verifica i executa en una sèrie de nodes. Això vol dir que ara podem crear sistemes que eliminen la necessitat de confiança en una autoritat central més enllà de la moneda! Qualsevol sistema que requereixi autoritats centrals, com ara préstecs, escriptures immobiliàries, informació d'identitat, xarxes socials, mètriques econòmiques, etc., ara pot funcionar sense intermediaris centrals. Aquest és un món completament nou!

Un contracte intel·ligent és un programa que els desenvolupadors escriuen i despleguen en una cadena de blocs, el llenç perquè els desenvolupadors creïn aplicacions descentralitzades. El terme "contracte intel·ligent" no significa un contracte legal on dues parts estan lligades a determinats drets i obligacions. En canvi, un "contracte intel·ligent" simplement vol dir que l'aplicació està garantida per funcionar exactament com s'escriu el codi indefinidament. Els contractes de préstec garanteixen que els prestataris i els prestadors sempre poden fer transaccions. Els contractes immobiliaris garanteixen que les persones sempre poden verificar i transferir la propietat de la propietat. Un contracte intel·ligent és una aplicació on el codi es converteix en llei.


Steve Jobs va anomenar l'ordinador "una bicicleta per a la ment". Els contractes intel·ligents garanteixen que les rodes no cauen mai.


Contractes intel·ligents d'Ethereum: punta de l'iceberg

"Crypto no es tracta només d'intercanviar fitxes, sinó que forma part d'un ethos més ampli de protegir la llibertat i la privadesa i mantenir el poder en mans del petit". - Vitalik Buterin


Tot i que els contractes intel·ligents d'Ethereum van introduir un món completament nou de productes descentralitzats, les limitacions fonamentals en les seves capacitats de disseny i manipulació de dades impedeixen que siguin efectius en moltes aplicacions més enllà de la criptomoneda.


A Solidity (un llenguatge de programació per a Ethereum), les dades del contracte s'emmagatzemen en parells clau-valor. Tot i que les estructures (agrupaments de variables) i els mapes (col·lecció de parells clau-valor) presenten maneres útils d'organitzar les dades, totes les dades només es poden recuperar mitjançant la seva clau. Penseu en un contracte teòric per emmagatzemar dades d'identitat d'usuari:


 contract IdentityStorage { // Struct to store KYC details struct identity { string fullName; string dateOfBirth; string residentialAddress; } // mapping a country to its citizens to their info // "Canada" => 0x123… => {Vitalik Buterin, 01/31/1994, ...} mapping(string => mapping(address => identity)) public idData; //...rest of contract }


En aquest contracte, el registre d'identitat d'un usuari només es pot recuperar si es coneix el país i l'adreça de la cartera de l'usuari. A menys que el desplegador del contracte redissenyi el contracte intel·ligent per tenir una manipulació de dades de costos de gas elevat, no hi ha altres maneres perquè l'usuari del contracte recuperi un registre d'identitat. L'emmagatzematge de dades en parells clau-valor limita finalment com es pot accedir i manipular a les dades.


En particular, la gestió de dades als contractes intel·ligents d'Ethereum presenta dos problemes fonamentals: la dependència de l'índex i la dependència del camí d'accés.


Índex de dependència

La dependència de l'índex significa que per accedir a una dada específica, les dades han d'estar disponibles en un índex. Un índex és una estructura de dades que cerca de manera eficient un identificador únic dins d'una col·lecció. A l'exemple de contracte KYC anterior, només es pot accedir als registres a través de l'adreça exacta d'Ethereum utilitzada per a la clau. Aquesta estructura d'indexació rígida impedeix que els usuaris contractats consultin les dades en funció d'altres criteris, com ara "Quins usuaris tenen aquesta adreça residencial?" o "Quin percentatge d'usuaris amb aquest DNI nacional van néixer després de l'1 de gener de 1970?" Sense la capacitat de realitzar aquestes consultes, els desenvolupadors no tenen la flexibilitat per agregar, analitzar i crear lògica d'aplicació al voltant de les dades del contracte. Quan els desenvolupadors necessiten aquesta flexibilitat addicional, com ara recuperar un registre d'identitat pel nom complet, cal reestructurar tot el contracte. A Ethereum, els índexs de reestructuració també poden augmentar els costos de gas d'un contracte, dificultant encara més la usabilitat del contracte.


Dependència del camí d'accés

La dependència del camí d'accés es refereix a que les dades són accessibles i comprensibles només a través d'una ruta de recuperació específica. A l'exemple de contracte, conèixer el país i l'adreça de la cartera de Vitalik permetria a un desenvolupador recuperar el seu registre d'identitat. Tanmateix, conèixer només l'adreça de la cartera no permetria que un desenvolupador obtingués el país d'origen de Vitalik. A més, fins i tot si el desenvolupador té l'adreça de la cartera de Vitalik, no pot obtenir el seu registre d'identitat tret que també conegui el país d'origen (la clau "Canadà"). El camí d'accés al registre d'identitat de Vitalik està arreglat; si un desenvolupador hagués d'intentar recuperar el seu registre només amb l'adreça de la cartera, caldria reestructurar tot el contracte. La dependència del camí d'accés significa que les dades són accessibles i significatives només en una direcció, limitant la capacitat de consultar o interpretar les dades des de diferents perspectives.

La dependència de l'índex i el camí d'accés plantegen reptes importants per a les aplicacions que requereixen un model de dades complex o en evolució. Tot i que les criptomonedes tenen estructures de dades senzilles que es poden implementar a Ethereum (els fitxes ERC20 són essencialment només un mapeig d'adreces a saldos), aquests reptes es tornen problemàtics per a aplicacions més intensives en dades. Quan una aplicació necessita emmagatzemar, consultar i manipular un model de dades complex, l'emmagatzematge bàsic de valor-clau d'Ethereum fa que la gestió de dades sigui significativament més limitada, cosa que fa que sigui difícil crear i mantenir aplicacions que requereixen una gestió de dades complexa.

Una breu lliçó d'història: el model relacional

"La història no es repeteix, però sovint rima" - Mark Twain


El 1970, Edgar F. Codd, informàtic d'IBM, va publicar un article anomenat "A Relational Model of Data for Large Shared Data Banks". Aleshores, el tipus de base de dades d'aplicacions més popular era la "base de dades jeràrquica", que utilitzava una estructura rígida, semblant a un arbre, on cada peça de dades s'emmagatzemava sota un directori principal, de manera similar a com s'organitzen els fitxers en un ordinador. Codd va argumentar en contra de la base de dades jeràrquica, proposant una base de dades relacional més nova, més senzilla i molt més capaç amb una estructura tabular.


L'estructura en arbre de la base de dades jeràrquica significa que només es pot accedir a les dades mitjançant el sistema rígid d'entendre la relació pare-fill de cada peça de dades. En particular, Codd va identificar tres problemes clau amb el sistema jeràrquic:


  1. Dependència de l'ordre: el resultat d'una consulta sovint depèn de com s'organitzen les dades a l'emmagatzematge. Si es crea una aplicació assumint que les dades es consultaran en el mateix ordre en què s'emmagatzemen, l'ordre no es podrà canviar en el futur.

  2. Dependència de l'índex: per accedir a una dada específica, l'aplicació ha de conèixer el pare (és a dir, un índex). En cas contrari, la recuperació de les dades sol·licitades és impossible.

  3. Dependència del camí d'accés: per accedir o comprendre les dades requereix seguir un camí de recuperació específic. Si l'aplicació està dissenyada per recuperar dades mitjançant un patró d'accés concret, no pot recuperar ni interpretar les mateixes dades mitjançant camins alternatius.


Et sona familiar? Tot i que els contractes intel·ligents d'Ethereum no tenen dependència de comanda (els mapes no estan ordenats), les mateixes limitacions de dependència d'índex i camins d'accés que mantenien les bases de dades als anys seixanta i setanta estan frenant les plataformes de contracte intel·ligent avui.


Les limitacions a nivell de base de dades són més que un contratemps trivial; restringeixen fonamentalment els desenvolupadors i limiten els tipus d'aplicacions construïdes en una plataforma. En lloc de centrar-se en la implementació de noves funcions, els desenvolupadors que lluiten contra la dependència de l'índex i el camí d'accés han de dedicar un esforç extraordinari a mantenir la funcionalitat d'una aplicació existent. Durant les dècades de 1960 i 1970, l'ús de la base de dades es va reservar principalment per a tasques empresarials rígides com ara la gestió d'inventaris, la comptabilitat i el processament general de dades; els desenvolupadors no tenien la flexibilitat de dades per crear aplicacions més sofisticades. Tanmateix, després de la introducció de les bases de dades relacionals, van sorgir aplicacions significativament més expressives i intensives en dades, que van donar lloc a l'auge dels sistemes ERP, CRM i eines d'intel·ligència empresarial. A més, amb l'arribada d'Internet, aquests avenços van obrir el camí per a plataformes de comerç electrònic i aplicacions de xarxes socials. Els desenvolupadors podrien implementar funcions que abans requeririen una reestructuració de tota una base de dades amb només unes poques línies d'SQL. La base de dades relacional va ser més que un canvi de paradigma; era una plataforma de creació de categories que va permetre l'aparició d'aplicacions fonamentalment noves.


Avui dia, les plataformes blockchain són similars als ordinadors i bases de dades dels anys setanta. La manca de processament de dades capaç a nivell de blockchain fa que els desenvolupadors no puguin implementar aplicacions descentralitzades més sofisticades i intensives en dades. Si el cas d'ús principal de les cadenes de blocs s'ampliarà més enllà de la criptomoneda, necessitem plataformes de cadenes de blocs amb una funcionalitat de processament de dades més capaç.

SQL Smart Contracts: un paradigma més flexible

"La mesura de la intel·ligència és la capacitat de canviar". - Albert Einstein


De la mateixa manera que la comercialització de la base de dades relacional a la dècada de 1980 va provocar la proliferació de noves aplicacions, la integració de bases de dades relacionals en plataformes de cadena de blocs té el mateix potencial per remodelar els tipus d'aplicacions descentralitzades que es poden crear.


A Kwil, estem construint una plataforma de cadena de blocs i un llenguatge de contracte intel·ligent que permet als desenvolupadors crear aplicacions descentralitzades que aprofitin tota l'expressivitat d'SQL. Amb Kwil, els desenvolupadors poden aprofitar la flexibilitat del model relacional per crear aplicacions descentralitzades més capaces i intensives en dades.


Considereu el mateix exemple d'emmagatzematge d'identitats anterior. En lloc d'emmagatzemar registres d'identitat en un mapa on només es pot accedir a cada registre mitjançant la seva clau, Kwil permet als desenvolupadors emmagatzemar els registres en una taula i aprofitar una sintaxi SQL flexible per consultar la taula:


 database user_registry; table identities { address uuid primary key, name text notnull, date_of_birth int notnull, residential_address text notnull, national_id int notnull, #country_index index(national_id) } action query_by_national_id ($id) public view { SELECT * FROM identities WHERE national_id = $id; } action query_by_dob ($dob) public view { SELECT * FROM identities WHERE date_of_birth > $dob; }


Al contracte intel·ligent d'Ethereum original, no hi havia manera de cercar les identitats i retornar tots els usuaris donats una condició (com ara la identificació nacional) o d'associar una cartera en funció d'un atribut específic (com ara una data de naixement). Per habilitar aquesta funcionalitat caldria reestructurar el contracte per afegir funcions costoses i intensives en gas. Tanmateix, amb el model relacional, els desenvolupadors poden executar aquestes consultes sense necessitat de cap reestructuració, obtenint així més flexibilitat de manipulació de dades sense incórrer en costos addicionals.


Per exemple, la xarxa idOS és una cadena de blocs sobirana creada amb Kwil, que permet als usuaris i a les dApps emmagatzemar informació de credencials d'usuari. Aprofitar SQL a la xarxa idOS permet:


  1. Usuaris que s'associen i es poden recuperar mitjançant diverses carteres, credencials i atributs.

  2. Protocols DeFi per realitzar anàlisis agregades d'on són els seus usuaris.

  3. Protocols de Stablecoin per avaluar quins usuaris són de zones d'alt risc.


Habilitar el model relacional i l'SQL en una plataforma de cadena de blocs descentralitzada ens permet crear aplicacions fonamentalment noves que no poden existir als contractes intel·ligents d'Ethereum existents.

Conclusió

El model relacional que va revolucionar la indústria de la informàtica fa 40 anys té les mateixes capacitats per revolucionar la indústria de la cadena de blocs actual. A les dècades de 1960 i 1970, la dependència de l'índex i el camí d'accés limitava la utilitat de la base de dades jeràrquica en aplicacions intensives en dades. Avui, la mateixa dependència de l'índex i la ruta d'accés limiten els contractes intel·ligents d'Ethereum i la seva capacitat per alimentar plataformes descentralitzades amb models de dades complexos. Tanmateix, integrant el model relacional a la cadena de blocs i proporcionant als desenvolupadors el mateix dialecte SQL expressiu, podem desbloquejar nous tipus d'aplicacions. De la mateixa manera que la base de dades relacional va accelerar la demanda empresarial i va ajudar els ordinadors a aconseguir l'adopció generalitzada, pot ajudar les plataformes de cadena de blocs a fer el mateix, desbloquejant així un món digital més lliure, més descentralitzat i més fiable.