มีข้อเสนอให้ตรวจสอบผลลัพธ์ของธุรกรรม Ethereum(ETH) หลังดำเนินการ แต่หากเกณฑ์ตรวจสอบไม่เข้มงวด ผลลัพธ์ที่ไม่ต้องการก็อาจผ่านได้ EIP-7906 จะเป็นมาตรการป้องกันที่ใช้ได้จริงก็ต่อเมื่อวอลเล็ตและโปรโตคอลบังคับใช้เกณฑ์ และผู้สร้างธุรกรรมไม่สามารถลดความเข้มงวดของเกณฑ์ได้
มูลนิธิ Ethereum(Ethereum Foundation) เผยแพร่ผลการศึกษาเรื่อง “transaction assertion” เมื่อวันที่ 5 ตุลาคม แนวคิดนี้ตรวจสอบการเปลี่ยนแปลงยอดคงเหลือ พื้นที่จัดเก็บ และอีเวนต์หลังธุรกรรมทำงานเสร็จ ส่วน EIP-7906 ซึ่งเป็นแนวทางการนำไปใช้ที่อยู่ระหว่างพิจารณา เสนอเฟรม POST_TX ที่ทำงานแบบอ่านอย่างเดียวหลังธุรกรรมจบ ขณะนี้ยังเป็นร่าง และยังไม่มีข้อสรุปว่าจะรวมไว้ในการอัปเกรด Hegotá หรือไม่
การลงนามธุรกรรมระบุคำขอที่ผู้ใช้อนุมัติ แต่ไม่ได้กำหนดผลลัพธ์หลังการทำงานไว้ตายตัว หากโค้ดหรือสถานะบนบล็อกเชนเปลี่ยนก่อนเริ่มทำงาน ผลจริงก็อาจต่างจากที่คาดไว้ มูลนิธิ Ethereum ยกการโจมตีแบบแซนด์วิช ซึ่งราคาสวอปเปลี่ยนไปตามลำดับธุรกรรม เป็นตัวอย่างของความไม่ตรงกันระหว่างผลที่คาดกับผลที่เกิดขึ้น
EIP-7906 ออกแบบให้ TXTRACE แสดงรายการการเปลี่ยนแปลงสุทธิและอีเวนต์ และให้ TXDIFF ตรวจค่าเริ่มต้นกับค่าสุดท้ายของที่อยู่และพื้นที่จัดเก็บที่กำหนด ส่วนข้อมูลอีเวนต์อ่านได้ผ่าน EVENTDATACOPY แม้พื้นที่จัดเก็บจะเปลี่ยนหลายครั้ง ระบบจะเก็บเพียงค่าแรกและค่าสุดท้าย จึงไม่ได้บันทึกการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นระหว่างทาง
การมีฟังก์ชันตรวจสอบไม่ได้หมายความว่าธุรกรรมทุกประเภทจะได้รับการปกป้องโดยอัตโนมัติ ข้อเสนอนี้ไม่ได้บังคับให้ทุกธุรกรรมต้องมี assertion แต่เป็นหน้าที่ของวอลเล็ตที่จะใส่การตรวจสอบที่จำเป็นลงในธุรกรรม หากต้องการให้โปรโตคอลคุ้มครองในระดับระบบ ก็ต้องกำหนดให้ฟังก์ชันที่ต้องการปกป้องใช้การตรวจสอบ POST_TX ตามที่ระบุ และปฏิเสธธุรกรรมที่ไม่มีการตรวจสอบหรือใช้การตรวจสอบแบบอื่น
มูลนิธิ Ethereum ระบุในคำอธิบายการศึกษาว่า หากฟรอนต์เอนด์ที่ใช้สร้างธุรกรรมถูกเจาะ ผู้โจมตีอาจใส่กฎที่ผ่อนปรนจนเปิดทางให้โจมตีได้ การตั้งค่าจำนวนขั้นต่ำที่ผู้ใช้จะได้รับจากการสวอปในระบบเดิมก็มีข้อจำกัดคล้ายกัน เอกสารสำหรับนักพัฒนาของ Uniswap เตือนว่าตัวอย่างที่กำหนดจำนวนขั้นต่ำไว้ที่ 0 มีความเสี่ยงเมื่อนำไปใช้จริง และแนะนำว่าอาจใช้แหล่งข้อมูลอื่น เช่น SDK หรือออราเคิลราคา เพื่อกำหนดค่าที่ปลอดภัยกว่า แม้จะมีเงื่อนไขกำกับ แต่หากตั้งเกณฑ์ไว้ต่ำเกินไป ผลลัพธ์ที่เฉียดผ่านเกณฑ์ก็ยังได้รับอนุญาต
แม้การตรวจสอบไม่ผ่าน ค่าธรรมเนียมธุรกรรมที่จ่ายไปแล้วก็ไม่หายไป ตามร่าง EIP-7906 หากการตรวจสอบ POST_TX ล้มเหลว ส่วนการทำงานของธุรกรรมจะถูกย้อนกลับ แต่ธุรกรรมยังคงอยู่ในบล็อกในสถานะล้มเหลว และผู้ใช้ต้องจ่ายค่าแก๊สที่ใช้ไป ส่วนการเปลี่ยนแปลงที่ยืนยันแล้วในขั้นตอนตรวจสอบจะยังคงอยู่
มูลนิธิ Ethereum อธิบายว่าควรวางงานที่ต้องการปกป้องไว้ในส่วนการทำงานที่สามารถย้อนกลับได้ และไม่ควรใส่การทำงานที่ไม่น่าเชื่อถือไว้ในขั้นตอนตรวจสอบ หากแก๊สไม่เพียงพอสำหรับการตรวจสอบ assertion ก็จะถือว่าล้มเหลวเช่นกัน การปกป้องผลลัพธ์ของธุรกรรมจึงต้องคำนึงถึงทั้งตรรกะการตรวจสอบและขอบเขตของงานที่ย้อนกลับได้เมื่อเกิดข้อผิดพลาด
สถานะของออราเคิลราคาหรือรีจิสทรีที่การตรวจสอบใช้อ้างอิงก็อาจเปลี่ยนระหว่างการทำธุรกรรมได้ เอกสารข้อเสนอระบุแนวทางไว้ เช่น ตรึงค่าไว้ ณ เวลาลงนาม หรืออ้างอิงสถานะ ณ เวลาเริ่มต้นธุรกรรม อย่างไรก็ตาม ยังมีความเสี่ยงที่ราคาจะเปลี่ยนก่อนเริ่มธุรกรรมภายในบล็อกเดียวกัน
EIP-7906 พัฒนาบนพื้นฐานของ EIP-8141 ซึ่งกำหนดธุรกรรมแบบเฟรม สถานะที่มูลนิธิ Ethereum เผยแพร่จัด EIP-8141 ไว้ในกลุ่มที่วางแผนจะรวมในการอัปเกรด Hegotá ขณะที่ EIP-7906 ยังอยู่ระหว่างการพิจารณา ขอบเขตการนำไปใช้จริงในวอลเล็ตและโปรโตคอลก็ยังไม่แน่นอน
ก่อนหน้านี้มีการรายงานแนวทางที่มูลนิธิ Ethereum ศึกษาเพื่อยืนยันการเปลี่ยนแปลงสถานะหลังธุรกรรมทำงานเสร็จ รายละเอียดในร่างฉบับนี้ชี้ว่า ฟังก์ชันตรวจสอบผลธุรกรรมเพียงอย่างเดียวยังไม่เพียงพอ ประเด็นสำคัญคือใครเป็นผู้กำหนดเกณฑ์ที่ผู้ใช้อนุมัติ และจะป้องกันไม่ให้ผู้สร้างธุรกรรมทำให้เกณฑ์นั้นอ่อนลงได้อย่างไร
ความคิดเห็น 0