paint-brush
Uitbreiding van slimme contracten met SQLdoor@kwilteam
3,537 lezingen
3,537 lezingen

Uitbreiding van slimme contracten met SQL

door Kwil9m2024/10/08
Read on Terminal Reader

Te lang; Lezen

Huidige blockchainplatforms, zoals Ethereum, hebben beperkingen bij het verwerken van complexe data vanwege rigide key-value-opslag, wat geavanceerde applicaties belemmert. SQL smart contracts introduceren flexibiliteit, waardoor ontwikkelaars dynamische query's kunnen uitvoeren en ingewikkelde datamodellen efficiënt kunnen beheren op een gedecentraliseerd netwerk. SQL Smart Contracts ontsluiten het potentieel voor krachtigere gedecentraliseerde apps, wat een revolutie teweegbrengt in blockchain voorbij cryptocurrency.
featured image - Uitbreiding van slimme contracten met SQL
Kwil HackerNoon profile picture
0-item
1-item
2-item

Speciale dank aan Jun Jiang van DePHY Network en Ryan Soury van Usher Labs voor hun feedback en inzichten.


In 2008 klonken de alarmbellen op Wall Street toen geraffineerde handelaren in een oerrazernij terechtkwamen. Overgefinancierde financiële instellingen, die instortten onder het gewicht van subprime hypotheekgedekte effecten, lieten hebzuchtige bankiers onbeschermd achter en smeekten om reddingsoperaties. De centrale banken, wanhopig om hun greep op de macht te behouden, betaalden de zonden van de bankiers uit het chequeboek van de gewone man. Dit verraad legde de gebreken van het gecentraliseerde monetaire systeem bloot en onthulde de noodzaak van een nieuwer, vrijer en eerlijker financieel systeem. Net zoals de Amerikaanse Revolutie en de grondwet die daarop volgde kerk en staat scheidden, ontstond er een nieuwe revolutie genaamd Bitcoin om geld en staat te scheiden, waardoor veel van dezelfde vrijheden en vrijheden mogelijk werden die fundamenteel zijn voor zelfbeschikking.


Blockchain-technologie is vrijheidstechnologie. Het stelt ons in staat om financiële, identiteits-, informatie- en sociale coördinatiesystemen te bouwen die geen vertrouwen in een gecentraliseerde tussenpersoon vereisen. Individuele vrijheden gedijen in een wereld waarin de centrale bank de geldstroom niet controleert, een enkel platform het sociale discours niet controleert en een enkel bedrijf de digitale identiteiten niet controleert.


Veel van de verschillen tussen deze nieuwe wereld en waar we nu zijn, liggen in de technische mogelijkheden van blockchainplatforms. De eerste generatie smart contracts was het topje van de ijsberg die deze vrijheidssystemen mogelijk maakte; ze zijn echter fundamenteel beperkt in hun mogelijkheden. In dit artikel leg ik enkele van de kritieke beperkingen in huidige smart contracts uit en hoe een nieuw systeem, "SQL Smart Contracts", een technisch capabeler fundament biedt om menselijke vrijheden te ontsluiten en het potentieel van blockchain als een nieuw computerplatform te realiseren.

Slimme contracten: programmeren van de waarheidsmachine

“Het kernprobleem… is al het vertrouwen dat nodig is om het te laten werken.” - Satoshi Nakamoto


De eerste kerneigenschap van een blockchain is onveranderlijkheid; zodra een bepaalde drempel van belanghebbenden (of "nodes") in een netwerk het erover eens is dat iets waar is, zal de blockchain een permanent verslag van die waarheid bewaren. Blockchains gebruiken een verscheidenheid aan "bewijs"-mechanismen waarin nodes grote hoeveelheden waarde besteden in de vorm van rekenkracht, financieel belang of reputatie om ervoor te zorgen dat kwaadwillende actoren de waarheid niet kunnen manipuleren.


Als Bitcoin de "waarheidsmachine" is voor digitale valuta, dan is Ethereum de "waarheidsmachine" voor complexere financiële producten. Ethereum breidt de mogelijkheden van Bitcoin uit door een programmeerbare ontwerpruimte te creëren waar ontwikkelaars elke logica kunnen implementeren die moet worden geïmplementeerd, geverifieerd en uitgevoerd via een reeks knooppunten. Dit betekent dat we nu systemen kunnen creëren die de noodzaak van vertrouwen in een centrale autoriteit die verder gaat dan alleen valuta, wegnemen! Elk systeem dat centrale autoriteiten vereist, zoals kredietverlening, onroerendgoedakten, identiteitsinformatie, sociale media, economische statistieken, enz., kan nu zonder centrale tussenpersonen functioneren. Dit is een geheel nieuwe wereld!

Een smart contract is een programma dat ontwikkelaars schrijven en implementeren op een blockchain, het canvas voor ontwikkelaars om gedecentraliseerde applicaties te creëren. De term "smart contract" betekent niet een juridisch contract waarbij twee partijen gebonden zijn aan bepaalde rechten en verplichtingen. In plaats daarvan betekent een "smart contract" simpelweg dat de applicatie gegarandeerd precies functioneert zoals de code is geschreven voor onbepaalde tijd. Leencontracten garanderen dat leners en kredietverstrekkers altijd transacties kunnen uitvoeren. Vastgoedcontracten garanderen dat mensen altijd het eigendom van onroerend goed kunnen verifiëren en overdragen. Een smart contract is een applicatie waarbij code wet wordt.


Steve Jobs noemde de computer ‘een fiets voor de geest’. Slimme contracten garanderen dat de wielen er nooit meer af vallen.


Ethereum Smart Contracts: het topje van de ijsberg

“Crypto gaat niet alleen over het verhandelen van tokens, het is onderdeel van een breder ethos van het beschermen van vrijheid en privacy en het houden van de macht in de handen van de kleine man.” - Vitalik Buterin


Hoewel Ethereum smart contracts een compleet nieuwe wereld van gedecentraliseerde producten hebben geïntroduceerd, zijn ze vanwege fundamentele beperkingen in hun ontwerp en de mogelijkheden voor gegevensmanipulatie niet effectief in veel andere toepassingen dan cryptocurrency.


In Solidity (een programmeertaal voor Ethereum) worden contractgegevens opgeslagen in sleutel-waardeparen. Hoewel structs (variabele groeperingen) en mappings (verzameling van sleutel-waardeparen) nuttige manieren bieden om gegevens te ordenen, zijn alle gegevens alleen op te halen via hun sleutel. Beschouw een theoretisch contract voor het opslaan van gebruikersidentiteitsgegevens:


 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 }


In dit contract kan de identiteitsrecord van een gebruiker alleen worden opgehaald door het land en het wallet-adres van de gebruiker te kennen. Tenzij de contractimplementator het smart contract opnieuw ontwerpt om gegevensmanipulatie met hoge gaskosten toe te staan, zijn er geen andere manieren voor de contractgebruiker om een identiteitsrecord op te halen. Het opslaan van gegevens in sleutel-waardeparen beperkt uiteindelijk hoe de gegevens kunnen worden geopend en gemanipuleerd.


Met name het gegevensbeheer in Ethereum smart contracts kent twee fundamentele problemen: indexafhankelijkheid en toegangspadafhankelijkheid.


Indexafhankelijkheid

Indexafhankelijkheid betekent dat om toegang te krijgen tot een specifiek stukje data, de data beschikbaar moet zijn in een index. Een index is een datastructuur die efficiënt zoekt naar een unieke identificatiecode binnen een verzameling. In het bovenstaande KYC-voorbeeldcontract zijn records alleen toegankelijk via het exacte Ethereum-adres dat voor de sleutel wordt gebruikt. Deze rigide indexeringsstructuur voorkomt dat contractgebruikers de data opvragen op basis van andere criteria, zoals "Welke gebruikers hebben dit woonadres?" of "Welk percentage gebruikers met deze nationale ID is geboren na 1 januari 1970?" Zonder de mogelijkheid om dergelijke query's uit te voeren, missen ontwikkelaars de flexibiliteit om contractdata te aggregeren, analyseren en applicatielogica te bouwen rond contractdata. Wanneer ontwikkelaars deze extra flexibiliteit nodig hebben, zoals het ophalen van een identiteitsrecord op basis van de volledige naam, moet het hele contract worden geherstructureerd. In Ethereum kan het herstructureren van indexen ook de gaskosten van een contract verhogen, wat de bruikbaarheid van het contract verder belemmert.


Toegangspadafhankelijkheid

Afhankelijkheid van toegangspad verwijst naar gegevens die alleen toegankelijk en begrijpelijk zijn via een specifiek ophaalpad. In het voorbeeldcontract zou het kennen van Vitaliks land en portemonnee-adres een ontwikkelaar in staat stellen zijn identiteitsrecord op te halen. Echter, alleen het kennen van het portemonnee-adres zou een ontwikkelaar niet in staat stellen om Vitaliks land van herkomst te krijgen. Bovendien, zelfs als de ontwikkelaar Vitaliks portemonnee-adres heeft, kan hij zijn identiteitsrecord niet krijgen tenzij hij ook het land van herkomst weet (de "Canada"-sleutel). Het toegangspad naar Vitaliks identiteitsrecord is vast; als een ontwikkelaar zijn record alleen via het portemonnee-adres zou moeten proberen op te halen, zou het hele contract moeten worden geherstructureerd. Afhankelijkheid van toegangspad betekent dat gegevens alleen in één richting toegankelijk en betekenisvol zijn, waardoor de mogelijkheid om de gegevens vanuit verschillende perspectieven te bevragen of te interpreteren, wordt beperkt.

Index- en toegangspadafhankelijkheid vormen aanzienlijke uitdagingen voor toepassingen die een complex of evoluerend datamodel vereisen. Hoewel cryptovaluta's eenvoudige datastructuren hebben die op Ethereum kunnen worden geïmplementeerd (ERC20-tokens zijn in wezen slechts een toewijzing van adressen aan saldi), worden deze uitdagingen problematisch voor meer data-intensieve toepassingen. Wanneer een toepassing een complex datamodel moet opslaan, bevragen en manipuleren, maakt de basissleutel-waardeopslag van Ethereum databeheer aanzienlijk beperkender, waardoor het een uitdaging wordt om toepassingen te bouwen en onderhouden die complex databeheer vereisen.

Een korte geschiedenisles: het relationele model

“De geschiedenis herhaalt zich niet, maar rijmt vaak” – Mark Twain


In 1970 publiceerde Edgar F. Codd, een computerwetenschapper bij IBM, een paper genaamd “A Relational Model of Data for Large Shared Data Banks.” Destijds was het populairste type applicatiedatabase de "hiërarchische database", die een rigide, boomachtige structuur gebruikte waarbij elk stukje data werd opgeslagen onder een bovenliggende directory, vergelijkbaar met hoe bestanden op een computer worden georganiseerd. Codd verzette zich tegen de hiërarchische database en stelde een nieuwere, eenvoudigere, veel capabelere relationele database voor met een tabelstructuur.


De boomstructuur van de hiërarchische database betekent dat data alleen toegankelijk is via het rigide systeem van het begrijpen van de ouder-kindrelatie van elk stukje data. Codd identificeerde met name drie belangrijke problemen met het hiërarchische systeem:


  1. Ordering Dependence: Het resultaat van een query hangt vaak af van hoe de data in de opslag is georganiseerd. Als een applicatie is gebouwd in de veronderstelling dat data in dezelfde volgorde wordt opgevraagd als waarin deze is opgeslagen, kan de volgorde in de toekomst niet worden gewijzigd.

  2. Indexafhankelijkheid: Om toegang te krijgen tot een specifiek stukje data, moet de applicatie de bovenliggende data kennen (d.w.z. een index). Anders is het onmogelijk om de gevraagde data op te halen.

  3. Access Path Dependence: Toegang tot of begrip van data vereist het volgen van een specifiek ophaalpad. Als de applicatie is ontworpen om data op te halen met behulp van één specifiek toegangspatroon, kan het dezelfde data niet ophalen of interpreteren met behulp van alternatieve paden.


Klinkt dit bekend? Hoewel Ethereum smart contracts geen order dependency hebben (maps zijn ongeordend), houden dezelfde index- en access path dependency-beperkingen die databases in de jaren 60 en 70 tegenhielden, smart contract platforms vandaag de dag tegen.


Beperkingen op databaseniveau zijn meer dan een triviale tegenslag; ze beperken ontwikkelaars fundamenteel en beperken de typen applicaties die op een platform worden gebouwd. In plaats van zich te richten op het implementeren van nieuwe functies, moeten ontwikkelaars die vechten tegen index- en toegangspadafhankelijkheid buitengewoon veel moeite steken in het onderhouden van de functionaliteit van een bestaande applicatie. In de jaren 60 en 70 was databasegebruik voornamelijk gereserveerd voor rigide zakelijke taken zoals voorraadbeheer, boekhouding en algemene gegevensverwerking; ontwikkelaars hadden niet de dataflexibiliteit om geavanceerdere applicaties te creëren. Na de introductie van relationele databases ontstonden echter aanzienlijk expressievere en data-intensievere applicaties, wat leidde tot de opkomst van ERP-systemen, CRM's en business intelligence-tools. Bovendien maakten deze ontwikkelingen met de komst van internet de weg vrij voor e-commerceplatforms en socialemediatoepassingen. Ontwikkelaars konden functies implementeren waarvoor voorheen een hele database moest worden geherstructureerd met slechts een paar regels SQL. De relationele database was meer dan een paradigmaverschuiving; het was een categorie-creërend platform dat fundamenteel nieuwe applicaties mogelijk maakte.


Tegenwoordig lijken blockchainplatforms op computers en databases uit de jaren 70. Het gebrek aan capabele gegevensverwerking op blockchainniveau betekent dat ontwikkelaars geen geavanceerdere, data-intensieve gedecentraliseerde applicaties kunnen implementeren. Als de primaire use case voor blockchains ooit verder zal gaan dan cryptocurrency, hebben we blockchainplatforms nodig met capabelere gegevensverwerkingsfunctionaliteit.

SQL Smart Contracts: een flexibeler paradigma

"De maatstaf voor intelligentie is het vermogen om te veranderen." - Albert Einstein


Net zoals de commercialisering van de relationele database in de jaren 80 leidde tot de proliferatie van nieuwe applicaties, heeft de integratie van relationele databases in blockchainplatforms dezelfde potentie om de soorten decentrale applicaties die gecreëerd kunnen worden, te veranderen.


Bij Kwil bouwen we een blockchainplatform en smart contracttaal waarmee ontwikkelaars gedecentraliseerde applicaties kunnen bouwen die de volledige expressiviteit van SQL benutten. Met Kwil kunnen ontwikkelaars de flexibiliteit van het relationele model benutten om capabelere, data-intensieve gedecentraliseerde applicaties te creëren.


Beschouw hetzelfde identiteitsopslagvoorbeeld van eerder. In plaats van identiteitsrecords op te slaan in een map waarbij elk record alleen toegankelijk is via zijn sleutel, stelt Kwil ontwikkelaars in staat om de records op te slaan in een tabel en een flexibele SQL-syntaxis te gebruiken om query's uit te voeren op de tabel:


 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; }


In het originele Ethereum smart contract was er geen manier om door de identiteiten te zoeken en alle gebruikers te retourneren met een voorwaarde (zoals nationale ID) of om een wallet te koppelen op basis van een specifiek kenmerk (zoals een geboortedatum). Om dergelijke functionaliteit mogelijk te maken, zou het contract moeten worden herstructureerd om kostbare, gasintensieve functies toe te voegen. Met het relationele model kunnen ontwikkelaars deze query's echter uitvoeren zonder dat er een herstructurering nodig is, waardoor ze meer flexibiliteit krijgen bij het manipuleren van gegevens zonder extra kosten te maken.


Het idOS-netwerk is bijvoorbeeld een soevereine blockchain die is gebouwd met Kwil, waarmee gebruikers en dApps gebruikersreferentiegegevens kunnen opslaan. Door SQL te benutten via het idOS-netwerk is het mogelijk om:


  1. Gebruikers kunnen worden gekoppeld en opgehaald via meerdere wallets, inloggegevens en kenmerken.

  2. DeFi-protocollen kunnen samengevoegde analyses uitvoeren van de herkomst van hun gebruikers.

  3. Stablecoin-protocollen om te beoordelen welke gebruikers afkomstig zijn uit gebieden met een hoog risico.


Door het relationele model en SQL op een gedecentraliseerd blockchainplatform te activeren, kunnen we fundamenteel nieuwe toepassingen creëren die niet kunnen bestaan op bestaande Ethereum smart contracts.

Conclusie

Het relationele model dat 40 jaar geleden de computerindustrie revolutioneerde, heeft dezelfde mogelijkheden om de blockchainindustrie vandaag de dag te revolutioneren. In de jaren 60 en 70 beperkten index- en toegangspadafhankelijkheid het nut van de hiërarchische database in data-intensieve applicaties. Tegenwoordig beperken dezelfde index- en toegangspadafhankelijkheid Ethereum smart contracts en hun vermogen om gedecentraliseerde platforms te voorzien van complexe datamodellen. Door het relationele model echter te integreren in de blockchain en ontwikkelaars te voorzien van hetzelfde expressieve SQL-dialect, kunnen we nieuwe soorten applicaties ontsluiten. Net zoals de relationele database de vraag van bedrijven versnelde en computers hielp om mainstream-acceptatie te bereiken, kan het blockchainplatforms helpen hetzelfde te doen, waardoor een vrijere, meer gedecentraliseerde, betrouwbaardere digitale wereld wordt ontsloten.

L O A D I N G
. . . comments & more!

About Author

Kwil HackerNoon profile picture
Kwil is a framework for deploying relational databases as decentralized, byzantine fault tolerant networks.

LABELS

DIT ARTIKEL WERD GEPRESENTEERD IN...