Skip to content
Blockchain

เหตุใดธุรกรรมของฉันจึงสำเร็จในการจำลอง แต่ revert บนเครือข่ายจริง?

80

โอกาส

เครื่องมือจำลอง EVM รันธุรกรรมกับ snapshot ของ state ของเครือข่าย แต่เมื่อธุรกรรมนั้นถูกบันทึกลงใน block แล้ว state ได้เปลี่ยนแปลงไปแล้ว สำหรับการดำเนินการ DeFi แบบหลาย hop การเคลื่อนไหวของราคา oracle หรือธุรกรรมที่แข่งขันกันซึ่งแตะ pool เดียวกันจะเปลี่ยนการจำลองที่ถูกต้องให้กลายเป็นการ revert บนเครือข่ายจริง นักพัฒนาไม่มีทางรู้จากการจำลองว่าธุรกรรมของตนไวต่อ state drift ระหว่างการเรียกและการรวมเข้าสู่ block มากแค่ไหน การวิเคราะห์ล่าสุดของ workload EVM ในสภาพแวดล้อมจริงยืนยันว่าพฤติกรรมการรันนั้นไวต่อ state อย่างมาก และเครื่องมือ gas และ simulation ในปัจจุบันไม่ได้คำนึงถึงความแปรปรวนนี้ ช่องว่างนี้กว้างที่สุดสำหรับการโต้ตอบที่ซับซ้อนข้ามสัญญาหลายฉบับ ซึ่งพอดีกับกรณีที่มีความเสี่ยงสูงที่สุด

ทำไมถึงสำคัญ

การจำลองที่สะท้อนความไวของ state ณ เวลารันคือ primitive ที่ทำให้การดำเนินการบนเครือข่ายที่ซับซ้อนคาดเดาได้สำหรับนักพัฒนา

วิธีที่ผมให้คะแนนโอกาส

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

ความรุนแรง8/10

ความเจ็บปวดที่มันก่อขึ้นเมื่อปรากฏตัว

ความถี่7/10

ความถี่ที่คนจริงๆ เจอมัน

ช่องว่าง8/10

ความขาดแคลนของเครื่องมือที่ดีสำหรับมันในปัจจุบัน

ปัญหาอื่นที่น่าแก้ไข