Ethereum เพิ่มขึ้น: EIP-3074 หลังจาก EIP-1559
Ropsten testnet เปิดตัวเมื่อวันที่ 24 มิถุนายน ด้วยความสูงของบล็อกที่ 10,499,401
อีเทอร์เน็ตทดสอบจำนวน 88,500 รายการมูลค่า 177.6 ล้านดอลลาร์ถูกเผาตั้งแต่เริ่มใช้งาน
ในช่วงเวลาเดียวกับที่ Eth2 เปิดตัว 100,000 ETH มูลค่า 200 ล้านดอลลาร์ได้ถูกฝากไว้ในสัญญาเดิมพันของ Eth2
ในที่สุดข้อเสนอการปรับปรุง Ethereum EIP-1559 ที่ได้รับการคาดหวังอย่างสูงได้ถูกนำไปใช้บน Ropsten testnet สำหรับการอัปเกรด Ethereum ในลอนดอนที่กำลังจะมาถึง ไม่กี่วันที่ผ่านมา มีการประกาศวันเปิดตัวเครือข่ายทดสอบ Ethereum สามรายการสำหรับ Hard Fork ในลอนดอน Tim Beiko ผู้พัฒนาหลักของ Ethereum ประกาศว่าความสูงของบล็อกของเครือข่ายทดสอบ Ropsten, Goerli และ Rinkeby ได้รับการพิจารณาแล้ว Ropsten มีความสูง 10499401 และเปิดตัวเมื่อวันที่ 24 มิถุนายน ในทางกลับกัน Goerli คือวันที่ 30 มิถุนายน และ Rinkeby จะเป็นวันที่ 7 กรกฎาคม
กลไกการเผาไหม้ของ EIP-1559 อาจส่งผลดีต่อราคาของโทเค็น
ในขณะที่การ hard fork ของลอนดอนมีข้อเสนอการปรับปรุง Ethereum 5 ข้อ EIP-1559 ก็ได้รับความสนใจทั้งหมด การอัปเกรดใหม่คาดว่าจะใช้ค่าธรรมเนียมการทำธุรกรรมบนเครือข่าย ตามเว็บไซต์ติดตาม EIP-1559 Watch the Burn นับตั้งแต่ Ropsten testnet ได้รับการอัพเกรดในลอนดอน ethers ของ testnet ประมาณ 88,500 รายการถูกเผา มูลค่า 177.6 ล้านดอลลาร์ อย่างไรก็ตาม จำนวน Ethereum จำนวนมากที่ถูกเผาโดย EIP-1559 ได้จุดประกายการอภิปรายเกี่ยวกับ Eth2 ยกเครื่องภาวะเงินฝืด อีเธอร์เผาไหม้เร็วกว่าแหล่งจ่ายหมุนเวียนเนื่องจากกลไกการเผาไหม้ สิ่งนี้อาจเป็นประโยชน์อย่างมากสำหรับราคาของ ETH
หลังจาก EIP-1559 ชุมชนได้มุ่งเน้นไปที่ EIP-3074 ซึ่งมีจุดมุ่งหมายเพื่อแก้ไขปัญหาด้านความปลอดภัย
อย่างไรก็ตาม EIP-1559 ไม่ใช่ EIP เดียวที่ชุมชน Ethereum ให้ความสนใจ EIP-3074 เป็นอีกหนึ่งข้อเสนอการปรับปรุงที่ชุมชนรอคอยอย่างมากในการอัปเกรด ตามที่ David Mihal และทวีตของเขา ปัญหาด้านความปลอดภัยที่สำคัญอย่างหนึ่งที่ Ethereum มองข้ามคือการอนุมัติ ERC20 เขาเสริมว่าเขาได้ผลักดัน ERC777 และโอกาสเดียวที่จะแก้ไขปัญหานี้คือ EIP-3074 ข้อเสนอการปรับปรุง ethereum จะช่วยให้ผู้ใช้สามารถอนุมัติการโอน ดำเนินการ และเพิกถอนการอนุมัติในธุรกรรมเดียว
ก่อนหน้านี้ นักพัฒนา ethereum ตั้งข้อสังเกตว่า EIP-1559 ไม่ได้ออกแบบมาเพื่อลดต้นทุนก๊าซ แต่หลายคนยังคงเชื่อว่าข้อเสนอนี้จะช่วยลดต้นทุนก๊าซได้อย่างมาก สิ่งนี้อาจลดรายได้ของคนงานเหมืองลง 50% ซึ่งนำไปสู่ "การจลาจลของคนขุดแร่" ซึ่งล้มเหลวในที่สุด อย่างไรก็ตาม การอัปเกรดในลอนดอนคาดว่าจะช่วยเพิ่มแนวโน้มขาขึ้นสำหรับ Ethereum CryptoQuant นักวิเคราะห์การเข้ารหัสที่รู้จักกันดีชี้ให้เห็นว่าในช่วงเวลาเดียวกับที่ Eth2 เปิดตัวนั้น Ethereum 100,000 รายการมูลค่า 200 ล้านดอลลาร์ได้ถูกฝากไว้ในสัญญาจำนำของ Eth2 ปัจจุบัน มากกว่า 5% ของอุปทาน ETH ถูกล็อค ซึ่งมีมูลค่าประมาณ 11.75 พันล้านดอลลาร์
EIP-3074 คืออะไร?
เมื่อเราต้องการส่งโทเค็นไปยังสัญญาอัจฉริยะ เรามักจะต้องทำธุรกรรมสองรายการ: ธุรกรรมแรกอนุมัติคือสัญญาที่ใช้โทเค็นของเรา และธุรกรรมที่สองคือโอนจากที่ส่งโทเค็นไปยังสัญญา
EIP-3074 แก้ปัญหาโดยแนะนำวิธีสำหรับสัญญาอัจฉริยะในการส่งธุรกรรมในบัญชีภายนอก (EOA หรือเพียงแค่ที่อยู่ Ethereum ปกติ)
EIP นี้แนะนำ EVM สองคำสั่ง AUTH และ AUTHCALL ชุดแรกตั้งค่าตัวแปรบริบท *อนุญาต* สำหรับลายเซ็นตาม ECDSA ครั้งที่สองส่งการโทรเป็น *อนุญาต* สิ่งนี้เป็นการมอบอำนาจการควบคุม EOA ให้กับ [a] สัญญาอัจฉริยะ
คำสั่ง AUTH และ AUTHCALL EVM (หรือที่เรียกว่า opcode) ช่วยให้สัญญาอัจฉริยะอนุญาต EOA ตามข้อความที่ลงนาม และส่งธุรกรรม ("การโทร") จาก EOA นั้น สิ่งนี้เปิดโอกาสมากมาย เช่น:
ธุรกรรมที่ได้รับการสนับสนุน (หรือที่เรียกว่าธุรกรรมเมตา): การจ่ายน้ำมันสำหรับธุรกรรมจากบัญชีอื่น สิ่งนี้จะช่วยให้เราสามารถส่งโทเค็นจากที่อยู่ที่ไม่มีอีเทอร์
ธุรกรรมแบบกลุ่ม: ส่งธุรกรรมหลายรายการในการโทรครั้งเดียว สิ่งนี้รับประกันว่าการทำธุรกรรมสองรายการขึ้นไปจะดำเนินการในบล็อกเดียวกันและยังลดค่าธรรมเนียมการทำธุรกรรมอีกด้วย
ปรับปรุงประสบการณ์ผู้ใช้ (UX): ตัวอย่างเช่น เราสามารถเรียกใช้การอนุมัติและการโอนจากภายในธุรกรรมเดียว
ชื่อเรื่องรอง
รหัส AUTH และ AUTHCALL
EIP-3074 กำหนด opcodes ใหม่สองตัวที่สามารถเรียกได้จากสัญญาอัจฉริยะ:
AUTH (0xf6) - อนุญาตบัญชีภายนอกที่เป็นเจ้าของตามลายเซ็นและการกระทำ ยอมรับพารามิเตอร์อินพุตสี่ตัว: คอมมิตและลายเซ็น yParity, r และ s
AUTHCALL (0xf7) - ส่งการโทร (ธุรกรรม) ในบริบท EOA ที่ได้รับอนุญาต ยอมรับพารามิเตอร์อินพุต 8 ตัว: gas, addr, value, valueExt, argsOffset, argsLength, retOffset, retLength สิ่งนี้คล้ายกับ CALL opcode ที่มีอยู่
ในการให้สิทธิ์ EOA เราจำเป็นต้องมีข้อความที่ลงนามจาก EOA นั้น สัญญาอัจฉริยะที่เรียกใช้ AUTH สามารถกู้คืนผู้ลงนามจากลายเซ็นข้อความ จากนั้นตั้งค่าลายเซ็นข้อความเป็นตัวแปรบริบท EVM ที่ได้รับอนุญาต ตอนนี้ เมื่อใดก็ตามที่สัญญาอัจฉริยะเรียก AUTHCALL ผู้โทรจะถูกตั้งค่าไปยังที่อยู่ที่ได้รับอนุญาต เมื่อสัญญาอัจฉริยะที่เรียกเรียกใช้ CALLER (ตัวอย่างเช่น ผ่าน msg.sender ของ Solidity ) ตอนนี้จะเป็นที่อยู่ที่ให้สิทธิ์ EOA ไม่ใช่ที่อยู่ของผู้โทรของสัญญาอัจฉริยะที่ดำเนินการโทร
โฟลว์พื้นฐานสำหรับการส่งธุรกรรมตั้งแต่หนึ่งรายการขึ้นไปมีดังนี้:
โฟลว์ EIP-3074 พื้นฐานที่สัญญาผู้โทรส่งธุรกรรมหลายรายการ
ข้อมูลการอนุญาตลงนาม EOA;
EOA หรือผู้จ่ายก๊าซอื่น ๆ ส่งข้อมูลการทำธุรกรรมและข้อมูลการอนุญาตไปยังสัญญาของผู้โทร
สัญญาผู้โทรดำเนินการให้สิทธิ์โดยใช้ AUTH และส่งธุรกรรมโดยใช้ AUTHCALL
ชื่อเรื่องรอง
ข้อความอนุญาตและกระทำ
คำอธิบายภาพ
(หมายเหตุ: || ใช้เป็นตัวดำเนินการต่อข้อมูลแบบไบต์)
คำอธิบายภาพ
รูปแบบข้อความการให้สิทธิ์ รวมถึงตัวอย่างที่สามารถส่งได้
คอมมิตอธิบายออบเจกต์ที่ EOA คอมมิต และสามารถคำนวณตามแอตทริบิวต์บางอย่าง (เช่น ที่อยู่ ค่า) ของการโทร สัญญาผู้โทรสามารถคำนวณการส่งใหม่ตามคุณสมบัติที่ให้ไว้ และหากฟิลด์เหล่านั้นถูกต้อง การอนุญาตก็จะถูกดำเนินการ
ตัวอย่างเช่น สมมติว่าเราต้องการส่งธุรกรรมต่อไปนี้ (แสดงเป็น JSON):
เราสามารถแฮชฟิลด์เหล่านี้ (เช่น เชื่อมฟิลด์เหล่านี้เข้าด้วยกันด้วยวิธีเชิงกำหนด หรือใช้บางอย่างเช่น EIP-712) และใช้ฟิลด์นั้นเป็นคอมมิต
เราสามารถจัดเตรียมลายเซ็นของการทำธุรกรรมและข้อความการให้สิทธิ์ที่จะส่งในสัญญาอัจฉริยะ ดังที่แสดงในข้อมูล JSON นี้ ฟังก์ชั่นสัญญาสามารถมีลักษณะดังนี้:
สัญญาอัจฉริยะจะคำนวณธุรกรรมการยืนยันอีกครั้งและมอบการยืนยันนี้ (พร้อมกับลายเซ็น) ให้กับการโทร AUTH การดำเนินการนี้จะพยายามกู้คืนที่อยู่ของผู้ลงนาม และหากการยืนยันไม่ถูกต้อง ที่อยู่ที่ไม่ถูกต้องจะถูกกู้คืนจากลายเซ็น ซึ่งหมายความว่าธุรกรรมจะล้มเหลว
ข้อความ
ข้อ จำกัด และปัญหาด้านความปลอดภัย
EIP-3074 สามารถเปลี่ยน CALLER ตามลายเซ็น ซึ่งเปลี่ยนวิธีการทำงานของ EVM อย่างมีนัยสำคัญ สิ่งนี้อาจทำให้เกิดช่องโหว่ที่อาจเกิดขึ้นในสัญญาใหม่และสัญญาที่มีอยู่ ดังนั้นจึงมีการตรวจสอบ EIP-3074
ข้อความ
การกระทำที่อ่อนแอและการโจมตีซ้ำ
ตามที่กล่าวไว้ข้างต้น EIP-3074 ไม่ได้กำหนดรูปแบบมาตรฐานสำหรับการส่ง ผู้โทรมีอิสระที่จะใช้สิ่งนี้ในแบบที่พวกเขาต้องการ ซึ่งหมายความว่าผู้โทรมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการป้องกัน (เช่น) การโจมตีซ้ำอย่างเพียงพอ
ถ้าคอมมิทไม่มี nonce คุณก็สามารถรับข้อความที่เซ็นชื่อและส่งไปยังผู้โทรอีกครั้ง ผู้โทรที่ประสงค์ร้ายสามารถควบคุม EOA ได้โดยไม่ตรวจสอบการคอมมิทเลย เราควรระมัดระวังในการเซ็นข้อความเสมอ
ด้วยการใส่ที่อยู่ของผู้โทรในข้อความการให้สิทธิ์ EIP-3074 มีการป้องกันขั้นพื้นฐานจากการโจมตีซ้ำ ทำให้ไม่สามารถเล่นซ้ำข้อความอนุญาตของผู้โทรหนึ่งไปยังอีกผู้โทร
ผู้โทรที่อัพเกรดได้
EIP-3074 ระบุอย่างชัดเจนว่าผู้โทรต้องไม่สามารถอัพเกรดได้ ถ้าข้อความเสริมสามารถอัปเกรดได้ ผู้อื่นสามารถใช้ข้อความเสริมเวอร์ชันอื่นที่ไม่ได้ตรวจสอบการคอมมิต ทำให้สัญญาสามารถควบคุม EOA ได้อย่างสมบูรณ์
การโจมตีกลับเข้าใหม่
ปัจจุบัน สัญญาอัจฉริยะสามารถใช้ need(tx.origin == msg.sender) ซึ่งตรวจสอบว่าธุรกรรมถูกส่งมาจาก EOA หรือไม่ (ไม่ใช่สัญญาอื่น) ซึ่งช่วยให้ป้องกันการกลับเข้าใช้ใหม่ได้ง่ายเนื่องจากป้องกันไม่ให้สัญญาเรียกใช้ฟังก์ชัน
สรุปแล้ว
สรุปแล้ว
EIP-3074 นำความเป็นไปได้ใหม่ๆ ที่น่าตื่นเต้นมาสู่ Ethereum AUTH และ AUTHCALL ช่วยให้ EOA มอบหมายการควบคุมบัญชีให้กับผู้โทรตามสัญญาอัจฉริยะ ทำให้สามารถส่งธุรกรรมเป็นชุด ธุรกรรมของผู้สนับสนุน ฯลฯ อย่างไรก็ตาม มันนำมาซึ่งการเปลี่ยนแปลงที่สำคัญบางอย่างในวิธีการทำงานของการทำธุรกรรมบน Ethereum ดังนั้นจึงจำเป็นต้องพิจารณาเรื่องความปลอดภัยให้มากขึ้นก่อนที่จะเปิดใช้งาน EIP-3074 บน mainnet


