มีผู้เสนอแนวทางแก้ปัญหาการประเมินค่าแก๊สของ Geth ซึ่งเป็นไคลเอนต์ฝั่งประมวลผลของอีเธอเรียม(ETH) หลังมีผู้ชี้ว่าระบบอาจมองไม่เห็นกรณีที่ธุรกรรมขึ้นสถานะ 'สำเร็จ' แต่งานภายในสมาร์ตคอนแทรกต์กลับล้มเหลว ลิมิตแก๊สที่กระเป๋าเงินเสนอมาอาจพอให้ธุรกรรมทั้งก้อนจบได้ แต่ไม่พอสำหรับงานภายในที่ผู้ใช้ต้องการจริง
เมื่อวันที่ 8 มีการเปิด PR #36084 เป็นฉบับร่างในคลังโค้ดของ Geth โดยอธิบายว่าปัจจุบันการประเมินแก๊สอาศัยผลสำเร็จของธุรกรรมทั้งก้อนเป็นเกณฑ์ในการหาลิมิต ขณะที่เอกสาร Execution APIของอีเธอเรียมก็นิยามเมธอด eth_estimateGas ว่าเป็นการประเมินปริมาณแก๊สที่ต้องใช้จนธุรกรรมเสร็จสมบูรณ์ ข้อเสนอนี้จึงเพิ่มผลการทำงานของการเรียกภายในเข้าไปในเกณฑ์ดังกล่าว
เมื่อสมาร์ตคอนแทรกต์เรียกคอนแทรกต์อื่น หากแก๊สไม่พอ การเรียกภายในอาจล้มเหลวได้ ถ้าคอนแทรกต์ชั้นนอกจับความล้มเหลวนั้นไว้และทำงานส่วนที่เหลือต่นจนจบ ธุรกรรมทั้งก้อนก็ยังถูกบันทึกว่าสำเร็จโดยไม่มีข้อผิดพลาด สถานะสำเร็จจึงบอกเพียงว่าการทำงานชั้นนอกจบแล้ว ไม่ได้รับประกันว่าทุกขั้นตอนที่ผู้ใช้คาดหวังเสร็จสมบูรณ์
ข้อเสนอนี้เข้มงวดขึ้นกับเงื่อนไขความสำเร็จของการประเมินแก๊ส ลิมิตที่มีการเรียกภายในหรือการสร้างคอนแทรกต์ล้มเหลวมากกว่าการรันที่ใช้ลิมิตสูงเป็นฐานเปรียบเทียบ จะไม่ถูกรับเป็นค่าประเมิน ส่วนการเรียกที่ล้มเหลวเสมอแม้ให้แก๊สมากพอ ก็ถูกออกแบบไม่ให้ดันค่าประเมินสูงขึ้นไปเรื่อย ๆ เมื่อเทียบกับการรันฐาน นอกจากนี้ยังมี PR #971 ของสเปก Execution API ที่เสนอกฎในทิศทางเดียวกัน และเปิดเป็นฉบับร่างเช่นกัน
ผู้เสนอนำธุรกรรมบนเมนเน็ต 432 รายการมารันซ้ำใน EELS ด้วยกฎของ Amsterdam ในจำนวนนี้มี 67 รายการที่แก๊สสำหรับการเรียกภายในอาจไม่พอ และข้อเสนอแก้ได้ 64 รายการ โดยค่ากลางของลิมิตแก๊สในกลุ่มนี้เพิ่มขึ้น 4% ส่วนค่าประเมินที่ไม่มีปัญหา 254 รายการไม่เปลี่ยนแปลง และมี 3 รายการที่ข้อเสนอยังตรวจไม่พบ ทั้งหมดนี้เป็นผลการทดสอบซ้ำของผู้เสนอเอง ไม่ได้หมายความว่าธุรกรรมทั้งหมดหรือกระเป๋าเงินจริงจะดีขึ้นในสัดส่วนเดียวกัน
ประเด็นนี้เกี่ยวข้องกับ EIP-8037 ในอัปเกรด Glamsterdam ด้วย โดย EIP-8037 เสนอให้คิดต้นทุนของการสร้างสถานะใหม่เป็นมิติแก๊สแยกต่างหาก ผู้เขียนข้อเสนอแก้ไขอธิบายว่า เมื่อใช้กฎการคืนแก๊สสถานะ รูปแบบที่การเรียกภายในล้มเหลวแล้วคอนแทรกต์ชั้นบนไปทำทางเลือกสำรองต่ออาจพบบ่อยขึ้น ก่อนหน้านี้เมื่อวันที่ 6 มูลนิธิอีเธอเรียม(Ethereum Foundation) ได้ขอให้นักพัฒนาสมาร์ตคอนแทรกต์และผู้ตรวจสอบทบทวน 8 สมมติฐานด้านการคิดค่าแก๊สที่จะเปลี่ยนไปใน Glamsterdam
ลิมิตแก๊สที่สูงขึ้นไม่ได้ทำให้ค่าธรรมเนียมเพิ่มในอัตราเดียวกัน ลิมิตคือปริมาณแก๊สสูงสุดที่ธุรกรรมใช้ได้ ส่วนเอกสารแก๊สอย่างเป็นทางการของอีเธอเรียมอธิบายว่าค่าธรรมเนียมจริงคือปริมาณแก๊สที่ใช้จริงคูณกับราคาต่อหน่วย ดังนั้นค่ากลางลิมิตที่เพิ่ม 4% ในการทดสอบจึงตีความว่าค่าธรรมเนียมเพิ่ม 4% ไม่ได้
ณ วันที่ 9 ทั้งข้อเสนอแก้ไขของ Geth และสเปก Execution API ยังเป็นฉบับร่าง หน้า PR ของ Geth ไม่มีบันทึกการดีพลอยของบรานช์ดังกล่าว และยังไม่มีการเปิดเผยกำหนดการรวมโค้ดหรือเผยแพร่
ข้อเสนอนี้เกี่ยวกับวิธีประเมินปริมาณแก๊สที่ธุรกรรมต้องใช้ ไม่ใช่ราคาของอีเธอเรียม ส่วนคำศัพท์ที่ควรรู้ 'การเรียกภายใน' หมายถึงการที่สมาร์ตคอนแทรกต์หนึ่งสั่งให้อีกคอนแทรกต์ทำงาน และ 'ลิมิตแก๊ส' คือปริมาณแก๊สสูงสุดที่ตั้งไว้ให้ธุรกรรมใช้ได้
Comment 0