AI Agent ทำ Swap Timeout กู้คืนและจัดการอย่างไรไม่ให้ซ้ำซ้อน
เมื่อคำขอ WETH เป็น USDC timeout แอปพลิเคชันต้องตรวจสอบสถานะ เช็ค nonce และไม่ส่งคำสั่งซ้ำอัตโนมัติก่อนยืนยันข้อมูลจากบล็อกเชน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การที่คำขอ timeout ไม่ได้แปลว่าธุรกรรมนั้นไม่เคยถูกส่งออกไป
- ห้ามทำการส่งคำสั่งซื้อขายใหม่ทันทีเพื่อป้องกันการเกิดธุรกรรมซ้ำ
- ต้องบันทึกข้อมูลและรหัสระบุตัวตนรวมถึง nonce ก่อนการกระจายคำขอ
- ตรวจสอบสถานะผ่าน chain observers และแยกแยะสถานะให้ชัดเจน
เมื่อตัวแทนปัญญาประดิษฐ์หรือ AI agent ทำการส่งคำสั่งแลกเปลี่ยนเหรียญจาก WETH ไปเป็น USDC แล้วคำขอ RPC เกิดหมดเวลาลงทันที นักพัฒนาซอฟต์แวร์ต้องรับมือกับความท้าทายในการจัดการสถานะที่คลุมเครือนี้อย่างระมัดระวัง
ในสถานการณ์ที่แอปพลิเคชันไม่ได้รับแฮชธุรกรรมกลับมา นั่นไม่ได้เป็นเครื่องยืนยันว่าธุรกรรมดังกล่าวไม่เคยถูกกระจายเข้าสู่เครือข่าย หากระบบรีทายอัตโนมัติสร้างและลงชื่อคำสั่งใหม่อาจทำให้เกิดการกระทำที่สองขึ้นในขณะที่คำสั่งแรกยังคงรอดำเนินการอยู่
คำถามสำคัญที่นักพัฒนาต้องพิจารณาคือเรากำลังทำการลองใหม่ที่ปฏิบัติการส่วนใด โดยแนวทางปฏิบัติแนะนำให้บันทึกข้อมูลการเรียกใช้งานและตัวระบุตัวตนก่อนการส่งต่อคำสั่งทุกครั้ง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
การจัดการความผิดพลาดในระบบบล็อกเชน (Blockchain error handling) มีความซับซ้อนสูงเพราะสภาวะ network timeout ไม่ได้แปลว่าคำสั่งล้มเหลวเสมอไป แต่คำสั่งอาจกำลังรออยู่ใน mempool การสร้างคำสั่งซ้ำโดยไม่ตรวจสอบ nonce หรือสถานะจริงบนเชนอาจทำให้ผู้ใช้สูญเสียเงินซ้ำซ้อนจาก slippery หรือการทำธุรกรรมเบิ้ล
ระบบควรบันทึกข้อมูลสายโซ่ ผู้ส่ง nonce เป้าหมาย แฮช calldata รหัสการให้สิทธิ์ และแฮชธุรกรรมทันทีที่มีข้อมูลเหล่านี้ปรากฏขึ้น เพื่อให้สามารถติดตามและกู้คืนสถานะได้อย่างถูกต้องในภายหลัง
หลังจากเกิดภาวะหมดเวลา แอปพลิเคชันควรทำการตรวจสอบแฮชที่เป็นที่รู้จักและ nonce ของผู้ส่งผ่านตัวสังเกตการณ์เชนที่มีการกำหนดค่าไว้ พร้อมทั้งแยกผลลัพธ์ออกเป็นสถานะรอดำเนินการ ไม่พร้อมใช้งาน ถูกยกเลิก หรือเกิดการจัดระเบียบเครือข่ายใหม่
กฎการกู้คืนส่วนกลางมีความชัดเจนคือ ให้ทำการลองใหม่เฉพาะในส่วนของการสังเกตการณ์และหลักฐานที่ขาดหายไป แต่ต้องไม่เปลี่ยนการตอบสนองที่ยังไม่แน่นอนให้กลายเป็นสิทธิ์อัตโนมัติในการสร้างการซื้อขายใหม่อีกครั้ง
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น