ข้อมูลธุรกรรม: หัวใจของสัญญาอัจฉริยะ

by:ChiCryptoWhale1 สัปดาห์ที่แล้ว
1.15K
ข้อมูลธุรกรรม: หัวใจของสัญญาอัจฉริยะ

ฮีโร่ที่ไม่ได้รับคำชมของธุรกรรมบล็อกเชน

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

ข้อมูลอินพุตคืออะไร?

สายยาวที่เริ่มด้วย 0x นั้นคือวิธีที่กระเป๋าเงินของคุณ ‘พูดคุย’ กับสัญญาอัจฉริยะ ดูตัวอย่างจากชีวิตจริงนี้:

0xa9059cbb000...d36d6c74

แบ่งส่วนได้ดังนี้:

  • a9059cbb: ตัวระบุฟังก์ชัน (โอน)
  • 64 อักขระถัดไป: ที่อยู่ผู้รับ (เติมศูนย์)
  • 64 อักขระสุดท้าย: จำนวนในเลขฐานสิบหก (0.19 OMG ในกรณีนี้)

โครงสร้างข้อมูลอินพุต

ทำไม Ethereum ใช้เลขฐานสิบหก

เลขฐานสิบหกไม่ใช่แค่สำหรับคอสเพลย์ Matrix มันมีประสิทธิภาพ:

  • อักขระเดียว = 4 บิต
  • 0x5C → ไบนารี 01011100 → ทศนิยม 92

เคล็ดลับ: 0x นำหน้าเป็นเพียงธรรมเนียม - เหมือนบอกว่า ‘นี่คือเลขฐานสิบหก’ ก่อนแสดงวิธีคิด

สัญญาอัจฉริยะเข้าใจเราอย่างไร

EVM อ่านข้อมูลอินพุตผ่านข้อกำหนด ABI ที่เข้มงวด:

  1. 8 อักขระแรกระบุฟังก์ชัน (แฮช SHA-3 ของลายเซ็น)
  2. พารามิเตอร์ใช้พื้นที่ 32 ไบต์แต่ละตัว
  3. อาร์เรย์/สตริงได้รับการจัดการพิเศษตอนท้าย

สำหรับการโอน ERC-20 Etherscan จะถอดรหัสโดยอัตโนมัติโดยใช้ ABI มาตรฐาน - นั่นคือเหตุผลที่แสดง “transfer(0x123…, 0.19)” แทนที่จะเป็นเลขฐานสิบหกดิบ

เศรษฐศาสตร์แก๊สของข้อมูล

ทุกไบต์มีค่าใช้จ่าย:

  • ไบต์ศูนย์: 4 แก๊ส
  • ไบต์ไม่ใช่ศูนย์: 68 แก๊ส

ด้วยขีดจำกัดบล็อกปัจจุบัน (~15M แก๊ส) ขนาดข้อมูลทางทฤษฎีสูงสุดอยู่ที่: - 2MB (ทั้งหมดเป็นศูนย์) ถึง - 120KB (ไม่มีศูนย์)

ครั้งต่อไปที่คุณสะดุ้งกับค่าธรรมเนียมแก๊สสูง จงจำไว้: ความซับซ้อนมีราคาของมัน

เทคนิคการถอดรหัสขั้นสูง

อยากเล่นเป็นนักสืบ? ลอง:

  1. ดึงตัวเลือกฟังก์ชันผ่าน web3.sha3()
  2. อ่านเอกสาร Solidity เกี่ยวกับการเข้ารหัสพารามิเตอร์
  3. ใช้เครื่องมือถอดรหัส ABI ออนไลน์สำหรับสัญญาที่ไม่รู้จัก

ChiCryptoWhale

ไลค์81.77K แฟนคลับ2.31K
เทคโนโลยีการศึกษา