Tanım
ABI encoding, insan tarafından okunabilir fonksiyon imzalarını ve yapılandırılmış verileri, Application Binary Interface tarafından tanımlanan düşük seviyeli ikili (binary) bir gösterime dönüştüren bir mekanizmadır. Argümanların, dönüş değerlerinin ve karmaşık veri tiplerinin baytlar içinde tam olarak nasıl yerleştirileceğini tanımlar; böylece akıllı sözleşmeler ve harici çağrıcılar bunları tutarlı bir şekilde yorumlayabilir. ABI kurallarına uyulduğunda, farklı araçlar, wallet’lar ve uygulamalar, verinin nasıl biçimlendirildiğine dair herhangi bir belirsizlik olmadan aynı sözleşmeyle etkileşime girebilir.
Bu encoding, birçok akıllı sözleşme platformunda sözleşme çağrılarının, event log’larının ve veri saklama formatlarının merkezinde yer alır. Bir fonksiyon çağrıldığında, sözleşmenin parametrelerini öngörülebilir bir sıra ve boyutta almasını ve dönen değerlerin doğru şekilde decode edilmesini sağlar. ABI encoding olmadan, zincir üzerindeki (on-chain) ve zincir dışındaki (off-chain) bileşenlerin, akıllı sözleşmelerle yapılandırılmış veri alışverişi için ortak bir dili olmazdı.
Bağlam ve Kullanım
ABI encoding genellikle, bir akıllı sözleşmenin sunduğu fonksiyonları, event’leri ve veri tiplerini listeleyen bir ABI spesifikasyonu ile birlikte tanımlanır. Bir işlem bir sözleşme fonksiyonunu hedeflediğinde, call data alanı, sözleşmenin fonksiyonu tanıyabilmesi ve girdilerini parse edebilmesi için ABI encoding kullanılarak oluşturulur. Aynı kurallar, event log’larını decode ederken veya sözleşme yürütmesinden dönen veriyi yorumlarken de geçerlidir.
Pratikte ABI encoding, üst seviye programlama dilleri ile akıllı sözleşmeleri çalıştıran düşük seviyeli sanal makine arasında bir köprü görevi görür. Zincir üzerindeki mantık ile zincir dışı uygulamaların, ortak ve deterministik bir veri formatını paylaşmasını sağlar; böylece uyumsuz tipler veya yanlış sıralama kaynaklı hataları azaltır. Terim, encoding mekanizmasının uyması gereken şemayı tanımlayan ABI’nin kendisiyle yakından ilişkilidir.