Apibrėžimas
ABI kodavimas yra mechanizmas, kuris paverčia žmogui suprantamus funkcijų parašus ir struktūrizuotus duomenis į žemo lygio dvejetainį atvaizdavimą, apibrėžtą Application Binary Interface. Jis tiksliai nurodo, kaip argumentai, grąžinamos reikšmės ir sudėtingi duomenų tipai išdėstomi baitais, kad išmaniosios sutartys ir išoriniai kvietėjai juos interpretuotų nuosekliai. Laikantis ABI taisyklių, skirtingi įrankiai, wallet ir programos gali sąveikauti su ta pačia sutartimi be dviprasmybių dėl duomenų formato.
Šis kodavimas yra esminis sutarties kvietimams, įvykių žurnalams ir duomenų saugojimo formatams daugelyje išmaniųjų sutarčių platformų. Jis užtikrina, kad, iškvietus funkciją, sutartis gautų jos parametrus nuspėjama tvarka ir dydžiu, o grąžinamos reikšmės būtų teisingai dekoduotos. Be ABI kodavimo, grandinėje (on-chain) ir už grandinės (off-chain) veikiantys komponentai neturėtų bendros kalbos, leidžiančios keistis struktūrizuotais duomenimis su išmaniosiomis sutartimis.
Kontekstas ir naudojimas
ABI kodavimas paprastai apibrėžiamas kartu su ABI specifikacija, kurioje išvardijamos funkcijos, įvykiai ir duomenų tipai, kuriuos išmanioji sutartis pateikia išorei. Kai transakcija nukreipiama į sutarties funkciją, call data laukas sukonstruojamas naudojant ABI kodavimą, kad sutartis galėtų identifikuoti funkciją ir išskaidyti jos įvestis. Tos pačios taisyklės taikomos dekoduojant įvykių žurnalus ar interpretuojant duomenis, grąžintus vykdant sutartį.
Praktikoje ABI kodavimas veikia kaip tiltas tarp aukštesnio lygio programavimo kalbų ir žemo lygio virtualios mašinos, kuri vykdo išmaniąsias sutartis. Jis leidžia logikai grandinėje ir programoms už grandinės dalytis bendra, deterministine duomenų struktūra, taip sumažinant klaidas, atsirandančias dėl nesutampančių tipų ar neteisingos tvarkos. Ši sąvoka glaudžiai susijusi su pačiu ABI, kuris apibrėžia schemą, kurios turi laikytis kodavimo mechanizmas.