Definition
ABI encoding är en mekanism som omvandlar människoläsbara funktionssignaturer och strukturerad data till en låg-nivå-binär representation som definieras av ett Application Binary Interface. Den anger exakt hur argument, returvärden och komplexa datatyper ska placeras i bytes, så att smarta kontrakt och externa anropare tolkar dem på ett konsekvent sätt. Genom att följa ABI-reglerna kan olika verktyg, wallets och applikationer interagera med samma kontrakt utan oklarheter kring hur data är formaterad.
Denna kodning är central för kontraktsanrop, event-loggar och dataformat för lagring på många plattformar för smarta kontrakt. Den säkerställer att när en funktion anropas får kontraktet sina parametrar i en förutsägbar ordning och storlek, och att returvärden avkodas korrekt. Utan ABI encoding skulle komponenter on-chain och off-chain sakna ett gemensamt språk för att utbyta strukturerad data med smarta kontrakt.
Sammanhang och användning
ABI encoding definieras vanligtvis tillsammans med en ABI-specifikation, som listar funktionerna, eventen och datatyperna som exponeras av ett smart kontrakt. När en transaktion riktas mot en kontraktsfunktion konstrueras fältet för call data med hjälp av ABI encoding så att kontraktet kan identifiera funktionen och tolka dess indata. Samma regler gäller när man avkodar event-loggar eller tolkar data som returneras från kontraktsexekvering.
I praktiken fungerar ABI encoding som en brygga mellan högnivåspråk för programmering och den lågnivå-virtuella maskin som exekverar smarta kontrakt. Den gör det möjligt för logik on-chain och applikationer off-chain att dela ett gemensamt, deterministiskt dataformat, vilket minskar fel som orsakas av felmatchade typer eller ordning. Begreppet är nära kopplat till själva ABI:t, som definierar det schema som kodningsmekanismen måste följa.