Definisjon
ABI-koding er en mekanisme som omformer menneskelesbare funksjonssignaturer og strukturert data til en lavnivå binær representasjon definert av et Application Binary Interface. Den spesifiserer nøyaktig hvordan argumenter, returverdier og komplekse datatyper legges ut i bytes, slik at smart contracts og eksterne kallere tolker dem på en konsekvent måte. Ved å følge ABI-reglene kan ulike verktøy, wallets, og applikasjoner samhandle med den samme kontrakten uten tvetydighet rundt hvordan data er formatert.
Denne kodingen er sentral for kontraktskall, hendelseslogger (event logs) og datalagringsformater på mange plattformer for smart contracts. Den sikrer at når en funksjon kalles, mottar kontrakten parameterne sine i en forutsigbar rekkefølge og størrelse, og at returnerte verdier dekodes riktig. Uten ABI-koding ville komponenter på kjeden og utenfor kjeden mangle et felles språk for å utveksle strukturert data med smart contracts.
Kontekst og bruk
ABI-koding er vanligvis definert sammen med en ABI-spesifikasjon, som lister opp funksjonene, hendelsene og datatypene som eksponeres av en smart contract. Når en transaksjon retter seg mot en kontraktfunksjon, konstrueres call data-feltet ved hjelp av ABI-koding slik at kontrakten kan identifisere funksjonen og tolke inputene. De samme reglene gjelder når man dekoder hendelseslogger eller tolker data som returneres fra kontraktutførelse.
I praksis fungerer ABI-koding som broen mellom høynivå programmeringsspråk og den lavnivå virtuelle maskinen som kjører smart contracts. Den gjør at logikk på kjeden og applikasjoner utenfor kjeden kan dele et felles, deterministisk dataformat, og reduserer feil forårsaket av uoverensstemmende typer eller rekkefølge. Begrepet er nært knyttet til selve ABI-en, som definerer skjemaet som selve kodemekanismen må følge.