คำนิยาม
ABI encoding คือกลไกที่แปลงลายเซ็นของฟังก์ชันที่มนุษย์อ่านเข้าใจได้ และข้อมูลแบบมีโครงสร้าง ให้กลายเป็นตัวแทนระดับต่ำในรูปแบบไบนารี ตามข้อกำหนดของ Application Binary Interface (ABI) โดยจะระบุอย่างชัดเจนว่าอาร์กิวเมนต์ ค่ารีเทิร์น และชนิดข้อมูลที่ซับซ้อนต่าง ๆ ถูกจัดวางในรูปของไบต์อย่างไร เพื่อให้ smart contract และผู้เรียกจากภายนอกตีความได้ตรงกัน เมื่อปฏิบัติตามกฎของ ABI เครื่องมือ wallet และแอปพลิเคชันต่าง ๆ จึงสามารถโต้ตอบกับสัญญาเดียวกันได้ โดยไม่สับสนเรื่องรูปแบบข้อมูล
การเข้ารหัสแบบนี้เป็นหัวใจสำคัญของการเรียกใช้สัญญา (contract call) การบันทึก event log และรูปแบบการจัดเก็บข้อมูลบนแพลตฟอร์ม smart contract จำนวนมาก มันช่วยให้เมื่อมีการเรียกใช้ฟังก์ชัน สัญญาจะได้รับพารามิเตอร์ในลำดับและขนาดที่คาดเดาได้ และค่าที่ส่งกลับก็ถูกถอดรหัสอย่างถูกต้อง หากไม่มี ABI encoding ส่วนประกอบบนเชนและนอกเชนจะไม่มี “ภาษากลาง” ร่วมกันสำหรับแลกเปลี่ยนข้อมูลแบบมีโครงสร้างกับ smart contract
บริบทและการใช้งาน
โดยทั่วไป ABI encoding จะถูกกำหนดควบคู่ไปกับสเปกของ ABI ซึ่งระบุฟังก์ชัน event และชนิดข้อมูลที่ smart contract เปิดให้ใช้งาน เมื่อธุรกรรมมุ่งเป้าไปที่ฟังก์ชันของสัญญา ช่องข้อมูล call data จะถูกสร้างขึ้นด้วย ABI encoding เพื่อให้สัญญาสามารถระบุได้ว่าควรเรียกฟังก์ชันใดและแยกวิเคราะห์อินพุตอย่างไร กฎเดียวกันนี้ถูกใช้เมื่อถอดรหัส event log หรือเมื่อตีความข้อมูลที่ส่งกลับมาจากการประมวลผลของสัญญา
ในการใช้งานจริง ABI encoding ทำหน้าที่เป็นสะพานเชื่อมระหว่างภาษาโปรแกรมระดับสูง กับเครื่องเสมือนระดับต่ำที่ใช้รัน smart contract มันช่วยให้ลอจิกบนเชนและแอปพลิเคชันนอกเชนใช้รูปแบบข้อมูลร่วมกันที่แน่นอนและกำหนดได้ล่วงหน้า ลดข้อผิดพลาดจากชนิดข้อมูลหรือการจัดลำดับที่ไม่ตรงกัน คำนี้มีความเกี่ยวข้องอย่างใกล้ชิดกับตัว ABI เอง ซึ่งเป็นตัวกำหนด schema ที่กลไกการเข้ารหัสต้องปฏิบัติตาม