Last updated: april 1, 2024
De cryptocurrency-revolutie heeft de wereld stormenderhand veroverd. Bitcoins maakten de weg vrij voor digitale betalingen, maar konden zich niet uitbreiden naar andere functionaliteiten. In 2017 opende de tweede grote blockchain, Ethereum, de deuren naar nieuwere functies zoals non-fungible tokens, gedecentraliseerde financiën en meer. Al deze functionaliteiten werden ondersteund door programma’s die ontwikkelaars kunnen maken en automatisch kunnen uitvoeren op basis van specifieke criteria – de Smart Contracts. Uiteindelijk ontstond de behoefte om de smart contracts binnen een blockchain te laten communiceren met externe applicaties of smart contracts van andere ketens. Dit leidde tot een ander idee dat dient als tolk tussen smart contracten van één keten en externe applicaties – de Smart Contract ABI. Dit artikel gaat in op Smart Contract ABI, waarom het nodig is, hoe het te gebruiken is, hoe je je ABI kunt vinden en meer. Laten we beginnen.
Inhoud
Wat is Smart Contract ABI?
Op het meest basale niveau biedt de Smart Contract Application Binary Interface (ABI) de middelen voor blockchain smart contracts om te communiceren met externe applicaties en andere contracten. Deze functie is vooral belangrijk in scenario’s waar nuttige gegevens moeten worden doorgegeven tussen smart contracten, bijvoorbeeld. Technisch gezien verwijst de Application Binary Interface naar specifieke functies die gedefinieerd zijn in een smart contract om aan te roepen in het smart contract. In programmeerterminologie bevat ABI de argumenten of parameters die naar het contract moeten worden gestuurd en de waarden die het smart contract verwacht. De ABI is gedefinieerd in een JSON-formaat en bestaat als een leesbare functiedefinitie in het smart contract.
Waarom heb je Smart Contract ABI nodig?
Om de behoefte aan Smart Contract ABI te begrijpen, gaan we even terug naar Web 2.0. In het Web 2.0 ecosysteem zijn API’s (Application Programming Interfaces) de middleware die ervoor zorgt dat verschillende toepassingen met elkaar kunnen communiceren. Communicatie vindt plaats tussen servers, de centrale opslagplaats van informatie, en de applicaties die de gegevens ontvangen via verzoeken.
Er is geen idee van gecentraliseerde servers in het geval van Web 3.0 of blockchains. De nodes gedragen zich als servers, terwijl smart contracten fungeren als functies op de blockchain. Dat gezegd zijnde, de externe applicaties en andere smart contracts moeten interageren met dit smart contract. Dit is waar de Smart Contract ABI om de hoek komt kijken.
Dit is een gedeeltelijke verklaring voor de noodzaak van ABI. Laten we eens wat dieper graven. Smart contracten zijn programma’s die worden uitgevoerd op basis van bepaalde specifieke voorwaarden, en ze kunnen on-chain of off-chain zijn. Deze contracten worden geschreven in programmeertalen op hoog niveau, zoals Solidity, die programmeurs gebruiken. Ze worden echter uitgevoerd op de Ethereum Virtual Machine (EVM) als bytecode in een binair formaat. Mensen kunnen deze bytecode niet lezen, dus is er een interpreter nodig. ABI voert de taak uit om iedereen die een smart contract ontwikkelt in staat te stellen te interageren tussen de applicatie geschreven in een hoog-niveau programmeertaal en de EVM-compatibele bytecode.
Wat zijn de bouwstenen van een Smart Contract ABI?
Een ABI-bestand laat het smart contract communiceren met toepassingen van derden. Het bestaat in wezen uit twee componenten:
- Functie definities: Deze definiëren de naam, inputs, uitkomsten en betalingsacceptatievoorwaarden van het smart contract.
- Event definities: Deze definiëren de naam, gegevens en het gedrag van gebeurtenissen die worden gegenereerd door een smart contract.
Het is noodzakelijk om ervoor te zorgen dat de functie-aanroepen en event-abonnementen voldoen aan het juiste formaat om een soepele communicatie tussen het smart contract en andere externe applicaties te garanderen.
Wat is coderen en decoderen in Smart Contract ABI?
Smart Contract ABI bestaat uit twee belangrijke processen. Dit zijn ze:
Codering
Het is het proces waarbij gegevens worden omgezet in een binair formaat zodat ze gemakkelijk kunnen worden opgeslagen en verzonden via het netwerk. Om de smart contract functies, gebeurtenissen en gegevens te laten interageren met de blockchain, moeten ze gecodeerd worden.
Decoderen
Het is het omgekeerde proces, waarbij de binaire gegevens worden omgezet in een voor mensen begrijpelijk formaat, zodat smart contracten de gegevens gemakkelijker kunnen lezen vanuit applicaties van derden. Bij smart contracten is het van vitaal belang om de juiste coderings- en decoderingsprotocollen te gebruiken.
Hoe gebruik je ABI?
Laten we eens kijken naar enkele van de belangrijkste stappen om ABI te gebruiken:
Generatie
Met tools als Hardhart/Truffle kun je de Smart Contract ABI automatisch genereren in slechts een kwestie van tijd. Je kunt de ABI ook handmatig aanmaken met het Solidity Compiler NPM pakket. Zodra het pakket is geïnstalleerd, voer je het commando ‘solcjs contractname.sol– abi’ uit in een knooppunt. Als het correct wordt uitgevoerd, wordt er met succes een .abi-bestand aangemaakt.
Uitvoering
ABI dient als de tolk tussen de applicatie in een hoog-niveau coderingstaal en de EVM met bytecode. Dus om functies op het smart contract uit te voeren, zijn de ABI en het adres van het contract op de ketting nodig.
Codering
Aangezien alle communicatie plaatsvindt in bytecode, kan het niet geïnterpreteerd of begrepen worden door programmeurs. Gelukkig kunnen verschillende veelgebruikte compilers, zoals Remix, deze taak goed uitvoeren.
Hoe vind je jouw ABI?
Hier beschouwen we twee scenario’s:
Geverifieerd of gepubliceerd
Als de Smart Contract ABI gepubliceerd is op de blokkenverkenner, kan deze gemakkelijk gelokaliseerd worden. Je hoeft alleen maar het adres van het contract in de console in te voeren.
Niet geverifieerd of ongepubliceerd
Als je de broncode van het contract niet wilt publiceren, kun je de Smart Contract ABI handmatig toevoegen aan de console. Hierna wordt de broncode gecompileerd tot bytecode. Dit helpt verder bij de registratie tijdens het maken van een JSON-weergave. Enkele plaatsen waar je de ABI kunt vinden:
- Hardat: /artefacten/contracten/[Contractnaam].json,
- Gieterij: /out/[ContractName.sol]/[ContractName].json
Conclusie
Naarmate het Web3 ecosysteem vorm krijgt, zal er een grotere behoefte zijn aan blockchains, in het bijzonder smart contracts, om te communiceren of gegevens op te halen uit externe apps of andere smart contracts. Dit zal het belang en de relevantie van Smart Contract ABI verder vergroten. Als je hier meer over wilt weten, neem dan gerust hier contact met ons op.



