Definice
ABI encoding je mechanismus, který převádí pro člověka čitelné signatury funkcí a strukturovaná data do nízkoúrovňové binární reprezentace definované pomocí Application Binary Interface. Přesně určuje, jak jsou argumenty, návratové hodnoty a komplexní datové typy uspořádány v bajtech, aby je smart contracts a externí volající interpretovali konzistentně. Díky dodržování pravidel ABI mohou různé nástroje, peněženky (wallet) a aplikace interagovat se stejným kontraktem bez nejasností ohledně formátu dat.
Toto kódování je klíčové pro volání kontraktů, logy událostí a formáty ukládání dat na mnoha platformách pro smart contracts. Zajišťuje, že když je funkce vyvolána, kontrakt obdrží své parametry v předvídatelném pořadí a velikosti a že vrácené hodnoty jsou správně dekódovány. Bez ABI encodingu by on-chain a off-chain komponenty neměly společný jazyk pro výměnu strukturovaných dat se smart contracts.
Kontext a použití
ABI encoding je obvykle definován společně se specifikací ABI, která uvádí funkce, události a datové typy zpřístupněné smart contractem. Když transakce cílí na funkci kontraktu, pole call data je zkonstruováno pomocí ABI encodingu, aby kontrakt dokázal identifikovat funkci a zpracovat její vstupy. Stejná pravidla platí při dekódování logů událostí nebo interpretaci dat vrácených během vykonávání kontraktu.
V praxi funguje ABI encoding jako most mezi vyššími programovacími jazyky a nízkoúrovňovým virtuálním strojem, který provádí smart contracts. Umožňuje on-chain logice a off-chain aplikacím sdílet společný, deterministický datový formát a snižuje chyby způsobené nesouladem typů nebo pořadí. Tento pojem úzce souvisí se samotným ABI, které definuje schéma, jež musí mechanismus kódování dodržovat.