تعریف
کدگذاری ABI سازوکاری است که امضاهای تابع قابلخواندن برای انسان و دادههای ساختیافته را به یک نمایش باینری سطح پایین تبدیل میکند که توسط یک Application Binary Interface تعریف شده است. این سازوکار دقیقاً مشخص میکند که آرگومانها، مقادیر بازگشتی و انواع داده پیچیده چگونه به صورت بایت چیده میشوند تا قراردادهای هوشمند و فراخوانهای خارجی آنها را بهطور یکسان تفسیر کنند. با پیروی از قواعد ABI، ابزارها، walletها و برنامههای مختلف میتوانند بدون ابهام درباره نحوه قالببندی دادهها، با یک قرارداد واحد تعامل داشته باشند.
این نوع کدگذاری در فراخوانی قراردادها، لاگ رویدادها و قالبهای ذخیرهسازی داده در بسیاری از پلتفرمهای قرارداد هوشمند نقش محوری دارد. این کار تضمین میکند که وقتی یک تابع فراخوانی میشود، قرارداد پارامترهای خود را با ترتیب و اندازه قابلپیشبینی دریافت کند و مقادیر بازگشتی نیز بهدرستی decode شوند. بدون کدگذاری ABI، اجزای رویزنجیره و خارج از زنجیره یک زبان مشترک برای تبادل داده ساختیافته با قراردادهای هوشمند نخواهند داشت.
بستر و کاربرد
کدگذاری ABI معمولاً در کنار یک مشخصه ABI تعریف میشود؛ مشخصهای که توابع، رویدادها و انواع دادهای را که توسط یک قرارداد هوشمند در معرض استفاده قرار میگیرند فهرست میکند. وقتی یک تراکنش تابعی از یک قرارداد را هدف قرار میدهد، فیلد call data با استفاده از کدگذاری ABI ساخته میشود تا قرارداد بتواند تابع موردنظر را شناسایی کرده و ورودیهای آن را parse کند. همین قواعد هنگام decode کردن لاگ رویدادها یا تفسیر دادههای بازگشتی از اجرای قرارداد نیز به کار میروند.
در عمل، کدگذاری ABI مانند یک bridge بین زبانهای برنامهنویسی سطح بالا و ماشین مجازی سطح پایینی عمل میکند که قراردادهای هوشمند را اجرا میکند. این سازوکار به منطق رویزنجیره و برنامههای خارج از زنجیره اجازه میدهد یک قالب داده مشترک و قطعی داشته باشند و خطاهای ناشی از ناهماهنگی در نوع داده یا ترتیب آن را کاهش میدهد. این اصطلاح بهطور نزدیک با خود ABI مرتبط است؛ همان مشخصاتی که schema موردنیاز برای پیروی سازوکار کدگذاری را تعریف میکند.