ข้ามไปยังเนื้อหา
มุมมองระดับโลกต่อสินทรัพย์ดิจิทัลมุมมองระดับโลก · บริบทในพื้นที่
ChainView BTC866CHAIN VIEW
เรียนรู้

อ่าน ABI สัญญา: ฟังก์ชัน เหตุการณ์ และข้อผิดพลาด

อินเทอร์เฟซ ABI อธิบายวิธีเข้ารหัสคำสั่งและถอดรหัสผลของสัญญา ไม่ใช่ซอร์สโค้ดทั้งหมดหรือใบรับรองความปลอดภัย ต้องจับคู่ ABI กับที่อยู่ เครือข่าย และรุ่นโค้ดจริง

อ่านในภาษาไทย简体中文繁體中文English한국어РусскийالعربيةEspañol (México)Tiếng Việt
อ่าน ABI สัญญา: ฟังก์ชัน เหตุการณ์ และข้อผิดพลาด

ภาพประกอบต้นฉบับตามหัวข้อ: แผนภาพต้นฉบับตามหัวข้อโดย ChainView BTC866 · ChainView BTC866 Editorial · CC BY 4.0

ABI เป็นคำอธิบายการสื่อสาร

อินเทอร์เฟซ ABI อธิบายวิธีเข้ารหัสคำสั่งและถอดรหัสผลของสัญญา ไม่ใช่ซอร์สโค้ดทั้งหมดหรือใบรับรองความปลอดภัย ต้องจับคู่ ABI กับที่อยู่ เครือข่าย และรุ่นโค้ดจริง หากเป็นพร็อกซีต้องตรวจตัวประมวลผลที่ใช้อยู่ด้วย ชื่อฟังก์ชันที่ดูเป็นมิตรอาจซ่อนตรรกะที่ซับซ้อน จึงไม่ควรตัดสินสิทธิหรือผลลัพธ์จากชื่อเพียงอย่างเดียว

ตรวจชื่อและชนิดอินพุต

ฟังก์ชันชื่อเดียวกันอาจมีพารามิเตอร์ต่างชนิด ทำให้ตัวเลือกสี่ไบต์และวิธีเรียกต่างกัน อ่านลำดับ ที่อยู่ จำนวนเต็ม หน่วยทศนิยม และโครงสร้างที่ซ้อนกัน ค่าเลขดิบหนึ่งพันไม่ได้หมายถึงหนึ่งพันเหรียญเสมอไป ตรวจว่าเป็นฟังก์ชันอ่านหรือส่งธุรกรรม และรับเหรียญเครือข่ายร่วมด้วยหรือไม่ก่อนสร้างคำขอลงนาม

แยกค่าตอบกลับกับเหตุการณ์

ค่าที่ฟังก์ชันอ่านคืนและบันทึกเหตุการณ์เป็นหลักฐานคนละแบบ เหตุการณ์ช่วยค้นประวัติแต่ต้องตรวจว่าออกจากสัญญาที่ต้องการและมีความหมายตามโค้ดจริง หัวข้อที่ทำดัชนีกับข้อมูลส่วนอื่นเข้ารหัสต่างกัน ตัวอย่างสมมติ เหตุการณ์ชื่อโอนในสัญญาแปลกปลอมไม่ได้ยืนยันว่าโทเคนแท้เคลื่อนแล้ว ต้องตรวจที่อยู่ผู้ปล่อยและสินทรัพย์เสมอ

ใช้ข้อผิดพลาดเพื่อวินิจฉัยอย่างมีขอบเขต

ข้อผิดพลาดกำหนดเองอาจมีพารามิเตอร์ช่วยอธิบายว่าล้มเพราะสิทธิ จำนวน หรือสถานะ แต่ข้อมูล revert อาจไม่ครบหรือถูกส่งต่อจากสัญญาอื่น ตรวจบริบทและขั้นตอนที่ล้ม ไม่สรุปว่าเพิ่มค่าก๊าซแก้ได้ทุกกรณี หากตรรกะไม่ผ่านเงื่อนไข การเพิ่มเพดานก๊าซไม่ได้เปลี่ยนกฎ และการลองซ้ำโดยไม่เข้าใจอาจเสียค่าธรรมเนียมเพิ่ม

ทดสอบอ่านก่อนสร้างคำสั่งจริง

ใช้คำขอแบบอ่านและข้อมูลทดลองตรวจรูปแบบก่อนส่งเงิน เก็บ ABI รุ่นโค้ดและตัวอย่างอินพุตที่ใช้ไว้เพื่อกระทบยอด แต่ไม่เผยกุญแจในบันทึก เมื่อเครื่องมือถอดรหัสไม่ได้ควรหยุด ไม่เชื่อหน้าต่างที่เดาชื่อจากฐานข้อมูลอย่างเดียว การเข้าใจ ABI ช่วยอธิบายสิ่งที่จะเรียก แต่ยังต้องตรวจสิทธิผู้ดูแล โค้ด และผลทางเศรษฐกิจแยกต่างหาก

แหล่งข้อมูล

  1. Solidity contract ABI specification (เปิดในแท็บใหม่)
  2. Solidity contract ABI specification (เปิดในแท็บใหม่)