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

ฮีโร่ที่ไม่ได้รับคำชมของธุรกรรมบล็อกเชน
เมื่อคุณส่ง 0 ETH ไปยังสัญญาโทเค็นแต่กลับส่งโทเค็น OMG แทน ความมหัศจรรย์นั้นเกิดขึ้นผ่าน ข้อมูลอินพุตธุรกรรม ในฐานะนักวิเคราะห์บล็อกเชนที่คุ้นเคยกับเลขฐานสิบหกเป็นอย่างดี ผมจะถอดรหัสองค์ประกอบที่สำคัญแต่ถูกละเลยนี้
ข้อมูลอินพุตคืออะไร?
สายยาวที่เริ่มด้วย 0x นั้นคือวิธีที่กระเป๋าเงินของคุณ ‘พูดคุย’ กับสัญญาอัจฉริยะ ดูตัวอย่างจากชีวิตจริงนี้:
0xa9059cbb000...d36d6c74
แบ่งส่วนได้ดังนี้:
a9059cbb
: ตัวระบุฟังก์ชัน (โอน)- 64 อักขระถัดไป: ที่อยู่ผู้รับ (เติมศูนย์)
- 64 อักขระสุดท้าย: จำนวนในเลขฐานสิบหก (0.19 OMG ในกรณีนี้)
ทำไม Ethereum ใช้เลขฐานสิบหก
เลขฐานสิบหกไม่ใช่แค่สำหรับคอสเพลย์ Matrix มันมีประสิทธิภาพ:
- อักขระเดียว = 4 บิต
- 0x5C → ไบนารี 01011100 → ทศนิยม 92
เคล็ดลับ: 0x นำหน้าเป็นเพียงธรรมเนียม - เหมือนบอกว่า ‘นี่คือเลขฐานสิบหก’ ก่อนแสดงวิธีคิด
สัญญาอัจฉริยะเข้าใจเราอย่างไร
EVM อ่านข้อมูลอินพุตผ่านข้อกำหนด ABI ที่เข้มงวด:
- 8 อักขระแรกระบุฟังก์ชัน (แฮช SHA-3 ของลายเซ็น)
- พารามิเตอร์ใช้พื้นที่ 32 ไบต์แต่ละตัว
- อาร์เรย์/สตริงได้รับการจัดการพิเศษตอนท้าย
สำหรับการโอน ERC-20 Etherscan จะถอดรหัสโดยอัตโนมัติโดยใช้ ABI มาตรฐาน - นั่นคือเหตุผลที่แสดง “transfer(0x123…, 0.19)” แทนที่จะเป็นเลขฐานสิบหกดิบ
เศรษฐศาสตร์แก๊สของข้อมูล
ทุกไบต์มีค่าใช้จ่าย:
- ไบต์ศูนย์: 4 แก๊ส
- ไบต์ไม่ใช่ศูนย์: 68 แก๊ส
ด้วยขีดจำกัดบล็อกปัจจุบัน (~15M แก๊ส) ขนาดข้อมูลทางทฤษฎีสูงสุดอยู่ที่: - 2MB (ทั้งหมดเป็นศูนย์) ถึง - 120KB (ไม่มีศูนย์)
ครั้งต่อไปที่คุณสะดุ้งกับค่าธรรมเนียมแก๊สสูง จงจำไว้: ความซับซ้อนมีราคาของมัน
เทคนิคการถอดรหัสขั้นสูง
อยากเล่นเป็นนักสืบ? ลอง:
- ดึงตัวเลือกฟังก์ชันผ่าน web3.sha3()
- อ่านเอกสาร Solidity เกี่ยวกับการเข้ารหัสพารามิเตอร์
- ใช้เครื่องมือถอดรหัส ABI ออนไลน์สำหรับสัญญาที่ไม่รู้จัก