การตรวจสอบความปลอดภัยที่จำเป็นสำหรับนักพัฒนาก่อนการอัพเกรด Cancun

ขั้นสูง3/7/2024, 5:10:08 AM
บทความนี้สรุปการเปลี่ยนแปลงหลักที่เสนอโดยหก EIPs สำหรับการอัปเกรด Cancun ซึ่งรวมถึง EIP-1153, EIP-4788, EIP-4844, EIP-5656, EIP-6780, และ EIP-7516 EIP-4844, ศูนย์ประสงค์ของการอัปเกรดนี้, มีเป้าหมายที่จะเสริมสร้างความสามารถใน Ethereum, ลดต้นทุนการทำธุรกรรมและเพิ่มความเร็วในการทำธุรกรรมสำหรับ Layer 2 solutions การอัปเกรด Cancun ได้รับการทดสอบอย่างประสบความสำเร็จบน Ethereum Goerli, Sepolia, และ Holesky testnets เมื่อวันที่ 17 มกราคม, 30 มกราคม, และ 7 กุมภาพันธ์ ตามลำดับ, โดยการเปิดใช้งานที่วางแผนไว้ในวันที่ 13 มีนาคมบน Ethereum mainnet

*Forward the Original Title:คังคุน รุ่นอัพเกรด ผู้พัฒนาโปรเจคต้องดู การตรวจสอบความปลอดภัยบางราย

TL;DR: กับการอัปเกรด Cancun ที่เข้าใกล้ มันรวมถึงการเปลี่ยนแปลงที่เสนอ EIP หกรายการโดยส่วนใหญ่คือ EIP-1153, EIP-4788, EIP-4844, EIP-5656, EIP-6780, และ EIP-7516. EIP-4844 ให้ความสำคัญกับการเพิ่มประสิทธิภาพของ Ethereum ลดค่าธรรมเนียมการทำธุรกรรม และเร่งความเร็วของการทำธุรกรรมสำหรับ Layer 2 solutions. การอัปเกรดได้รับการทดสอบบน Ethereum testnets และกำหนดเวลาในการเปิดใช้งานบน mainnet ในวันที่ 13 มีนาคม Salus ได้รวบรวมข้อคิดสำคัญเกี่ยวกับความปลอดภัยสำหรับนักพัฒนาให้ตรวจสอบก่อนการอัปเกรด

Review ของข้อเสนอ EIP

ความสำคัญในเชิงความปลอดภัยทางการ

ความเสี่ยงที่เกี่ยวข้องกับสัญญาอัจฉริยะ

Further reading

ตรวจสอบของเสนอ EIP

EIP-1153

EIP-1153 แนะนํา opcodes การจัดเก็บชั่วคราวซึ่งใช้ในการจัดการสถานะในลักษณะที่คล้ายกับการจัดเก็บ แต่ด้วยการจัดเก็บชั่วคราวจะถูกทิ้งหลังจากแต่ละธุรกรรม ซึ่งหมายความว่าที่เก็บข้อมูลชั่วคราวจะไม่แยกค่าออกจากที่เก็บข้อมูลหรือกําหนดค่าต่อเนื่องไปยังที่เก็บข้อมูลส่งผลให้ต้นทุนลดลงเนื่องจากการหลีกเลี่ยงการเข้าถึงดิสก์ ด้วยการเปิดตัว opcodes ใหม่สองตัว TLOAD และ TSTORE (โดยที่ "T" ย่อมาจาก "ชั่วคราว") สัญญาอัจฉริยะสามารถเข้าถึงที่เก็บข้อมูลชั่วคราวได้ ข้อเสนอนี้มีจุดมุ่งหมายเพื่อให้โซลูชันเฉพาะและมีประสิทธิภาพสําหรับการสื่อสารระหว่างเฟรมการดําเนินการที่ซ้อนกันหลายเฟรมระหว่างการดําเนินการธุรกรรมใน Ethereum

EIP-4788

EIP-4788 มีจุดมุ่งหมายเพื่อเปิดเผยรากของแฮชทรีของบล็อกโซ่บีคอนไปยัง EVM, ทําให้รากเหล่านี้สามารถเข้าถึงได้ภายในสัญญาอัจฉริยะ. สิ่งนี้ช่วยให้สามารถเข้าถึงสถานะเลเยอร์ฉันทามติได้โดยไม่ต้องไว้วางใจสนับสนุนกรณีการใช้งานต่างๆเช่นกลุ่มการปักหลักโครงสร้างการยึดใหม่สะพานสัญญาอัจฉริยะและการบรรเทา MEV ข้อเสนอนี้บรรลุสิ่งนี้โดยการจัดเก็บรากเหล่านี้ในสัญญาอัจฉริยะและใช้บัฟเฟอร์แบบวงกลมเพื่อ จํากัด การใช้พื้นที่เก็บข้อมูลเพื่อให้แน่ใจว่าแต่ละบล็อกการดําเนินการต้องการพื้นที่คงที่เท่านั้นที่จะแสดงข้อมูลนี้

EIP-4844

EIP-4844 มีการนำเสนอรูปแบบธุรกรรมใหม่ที่เรียกว่า “Shard Blob Transactions” ที่ออกแบบมาเพื่อขยายความสามารถในการใช้ข้อมูลของ Ethereum อย่างง่ายและที่เข้ากันได้กับรุ่นก่อนหน้า ข้อเสนอนี้บรรลุเป้าหมายโดยการนำเสนอ “ธุรกรรมที่พก blob” ซึ่งมีปริมาณข้อมูลมากที่ไม่สามารถเข้าถึงได้โดย EVM แต่สามารถเข้าถึงได้โดยการยืนยันของตนเอง รูปแบบนี้เป็นไปตามรูปแบบที่ใช้โดยการแบ่งชั้นข้อมูลทั้งหมดในอนาคต ให้การประคองชั่วคราวแต่สำคัญสำหรับความสามารถในการขยายของ rollup

EIP-5656

EIP-5656 แนะนําคําสั่ง EVM ใหม่ MCOPY สําหรับการคัดลอกพื้นที่หน่วยความจําอย่างมีประสิทธิภาพ ข้อเสนอนี้มีจุดมุ่งหมายเพื่อลดค่าใช้จ่ายในการคัดลอกหน่วยความจําบน EVM โดยการคัดลอกข้อมูลระหว่างความทรงจําโดยตรงโดยใช้คําสั่ง MCOPY MCOPY ช่วยให้สามารถซ้อนทับกันของที่อยู่ต้นทางและปลายทางซึ่งออกแบบโดยคํานึงถึงความเข้ากันได้แบบย้อนหลังและมีจุดมุ่งหมายเพื่อปรับปรุงประสิทธิภาพการดําเนินการในสถานการณ์ต่างๆรวมถึงการสร้างโครงสร้างข้อมูลการเข้าถึงที่มีประสิทธิภาพและการคัดลอกวัตถุหน่วยความจํา

EIP-6780

EIP-6780 ปรับเปลี่ยนความสามารถของรหัสคำสั่ง SELFDESTRUCT ในข้อเสนอนี้ SELFDESTRUCT เฉพาะลบบัญชีและโอน ether ทั้งหมดในธุรกรรมเดียวกันกับการสร้างสัญญา นอกจากนี้เมื่อทำ SELFDESTRUCT สัญญาจะไม่ถูกลบแต่จะโอน ether ทั้งหมดไปยังเป้าหมายที่ระบุ การเปลี่ยนแปลงนี้รองรับการใช้งานในอนาคตของต้นไม้ Verkle เพื่อผสมผสาน EVM ลดความซับซ้อนของการดำเนินการของสถานะในขณะเดียวกัน ยังคงบริการบางกรณีการใช้งานของ SELFDESTRUCT

EIP-7516

EIP-7516 นำเสนอคำสั่ง EVM ใหม่ คือ BLOBBASEFEE เพื่อคืนค่าค่าฐานของ blobs ในการดำเนินการบล็อกปัจจุบัน คำสั่งนี้คล้ายกับ BASEFEE opcode ที่นำเสนอใน EIP-3198 โดยต่างกันที่คืนค่าฐานของ blobs ตามที่กำหนดไว้ใน EIP-4844 ฟังก์ชันนี้ช่วยให้สัญญาสามารถพิจารณาราคาแก๊สของข้อมูล blob โดยโปรแกรมให้สัญญา rollup คำนวณต้นทุนการใช้งานข้อมูล blob โดยไม่มีความเชื่อถือหรือการดำเนินการกับ blob gas futures เพื่อลดค่าใช้จ่ายข้อมูล blob

ความต้องการด้านความปลอดภัยทางการเป็นทางการ

EIP-1153

นักพัฒนาสัญญาอัจฉริยะควรเข้าใจวงจรชีวิตของตัวแปรการจัดเก็บข้อมูลชั่วคราวก่อนใช้งาน เนื่องจากการจัดเก็บชั่วคราวจะถูกล้างโดยอัตโนมัติเมื่อสิ้นสุดการทําธุรกรรมนักพัฒนาสัญญาอัจฉริยะอาจพยายามหลีกเลี่ยงการล้างช่องระหว่างการโทรเพื่อประหยัดก๊าซ อย่างไรก็ตามสิ่งนี้สามารถป้องกันการโต้ตอบเพิ่มเติมกับสัญญาในธุรกรรมเดียวกัน (เช่นในกรณีของการล็อคการกลับเข้าใหม่) หรือนําไปสู่ข้อผิดพลาดอื่น ๆ ดังนั้นนักพัฒนาสัญญาอัจฉริยะควรระมัดระวังและรักษาค่าที่ไม่ใช่ศูนย์ไว้เฉพาะเมื่อช่องเก็บข้อมูลชั่วคราวถูกสงวนไว้สําหรับการโทรในอนาคตภายในธุรกรรมเดียวกัน มิฉะนั้นพฤติกรรมของ opcodes เหล่านี้จะเหมือนกับ SLOAD และ SSTORE ดังนั้นข้อควรพิจารณาด้านความปลอดภัยทั่วไปทั้งหมดจึงมีผลบังคับใช้โดยเฉพาะอย่างยิ่งเกี่ยวกับความเสี่ยงในการกลับเข้าประเทศ

นักพัฒนาสัญญาอัจฉริยะอาจพยายามใช้ที่เก็บข้อมูลชั่วคราวเป็นทางเลือกแทนการแมปหน่วยความจํา พวกเขาควรทราบว่าที่เก็บข้อมูลชั่วคราวจะไม่ถูกทิ้งเช่นหน่วยความจําเมื่อการโทรกลับมาหรือถูกเปลี่ยนกลับและควรจัดลําดับความสําคัญของหน่วยความจําในกรณีการใช้งานดังกล่าวเพื่อหลีกเลี่ยงพฤติกรรมที่ไม่คาดคิดในระหว่างการป้อนซ้ําในธุรกรรมเดียวกัน ค่าใช้จ่ายสูงของการจัดเก็บชั่วคราวในหน่วยความจําควรกีดกันรูปแบบการใช้งานนี้แล้ว กรณีการใช้งานส่วนใหญ่สําหรับการแมปในหน่วยความจําสามารถใช้งานได้ดีกว่าผ่านรายการที่เรียงลําดับตามคีย์และที่เก็บข้อมูลชั่วคราวในการแมปหน่วยความจํานั้นไม่ค่อยจําเป็นในสัญญาอัจฉริยะ (เช่นไม่มีกรณีการใช้งานที่รู้จักในการผลิต)

EIP-4844

EIP นี้เพิ่มความต้องการแบนด์วิดท์สำหรับแต่ละบล็อกบีคอนได้ถึงประมาณ 0.75 MB นี่คือการเพิ่มขึ้นถึง 40% จากขนาดสูงสุดทฤษฎีของบล็อกในปัจจุบัน (30M Gas / 16 Gas ต่อ calldata byte = 1.875M bytes) ดังนั้นมันไม่เพิ่มแบนด์วิดท์ในกรณีที่แย่ที่สุดอย่างมีนัยสำคัญ หลังจากการผสานข้อมูล เวลาบล็อกจะเป็นค่าคงที่แทนที่จะกระจายอย่างไม่คาดคิดแบบ Poisson เส้นทางการส่งต่อของบล็อกขนาดใหญ่จะได้รับการรับรอง

แม้จะมีข้อมูลการโทรที่ จํากัด แต่ภาระที่ยั่งยืนของ EIP นี้ก็ต่ํากว่าโซลูชันทางเลือกที่สามารถลดต้นทุนของข้อมูลการโทรได้เนื่องจากพื้นที่เก็บข้อมูล Blob ไม่จําเป็นต้องเก็บไว้เป็นระยะเวลาเดียวกับโหลดการดําเนินการ สิ่งนี้ทําให้สามารถใช้กลยุทธ์ที่ต้องการให้ blobs เหล่านี้ถูกเก็บไว้อย่างน้อยหนึ่งช่วงเวลา ค่าเฉพาะที่เลือกคือยุค MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS ซึ่งสั้นกว่าเวลาหมุนเวียนหนึ่งปีที่เสนอ (แต่ยังไม่ได้ดําเนินการ) สําหรับการดําเนินการประวัติน้ําหนักบรรทุกที่ถูกต้อง

EIP-5656

ผู้ใช้ควรระมัดระวังว่าการปฏิบัติของพวกเขาไม่ใช้บัฟเฟอร์กลาง (เช่น ฟังก์ชัน C stdlib memmove ไม่ใช้บัฟเฟอร์กลาง) เนื่องจากเป็นเวกเตอร์การปฏิบัติการบริการ (DoS) ที่เป็นไปได้ ฟังก์ชันที่มีอยู่ในภาษา/ฟังก์ชันของไลบรารีมาตรฐานที่ใช้สำหรับการย้ายไบต์มีลักษณะประสิทธิภาพที่ถูกต้องที่นี่

นอกจากนี้การวิเคราะห์การโจมตีปฏิเสธบริการ (DoS) และการโจมตีแบบการใช้หน่วยความจำเกินกว่าเดิมเหมือนกับโค้ดคำสั่งการใช้หน่วยความจำอื่น ๆ เนื่องจากการขยายขอบเขตของหน่วยความจำเกิดขึ้นตามกฎราคาเดียวกัน

EIP-6780

การใช้งาน SELFDESTRUCT ต่อไปนี้จะเสียหาย และแอปพลิเคชันที่ใช้งานในลักษณะนี้จะไม่ปลอดภัยอีกต่อไป:

ที่ CREATE2 ถูกใช้ในการ implement การ deploy สัญญาที่ตำแหน่งเดียวกันเพื่อทำให้สัญญาสามารถอัปเกรดได้ ฟังก์ชันนี้ไม่ได้รับการสนับสนุนอีกต่อไปและควรถูกแทนที่ด้วย ERC-2535 หรือประเภทอื่น ๆ ของสัญญาพร็อกซี

หากสัญญาพึ่งพาการเผาไหม้เอเทอร์ไปยังสัญญาผ่าน SELFDESTRUCT เป็นผู้รับผลประโยชน์ สัญญาจะไม่ถูกสร้างในธุรกรรมเดียวกัน

ความเสี่ยงที่เกี่ยวข้องกับสมาร์ทคอนแทรค

EIP1153

พิจารณาสองสถานการณ์โดยใช้ opcodes TLOAD และ TSTORE:

  1. ใช้โอ๊ปโค้ดเหล่านี้เพื่อทำสัญญาที่เรียกว่า
  2. การเรียกใช้สัญญาใช้ opcodes เหล่านี้

ความเสี่ยง 1:

เมื่อเปรียบเทียบกับ SSTORE และ SLOAD แบบเดิม การนำเข้าที่เก็บข้อมูลชั่วคราว ส่วนใหญ่เปลี่ยนแปลงระยะเวลาในการเก็บข้อมูล ข้อมูลที่เก็บโดย TSTORE ถูกอ่านผ่าน TLOAD และจะถูกปลดปล่อยหลังจากการดำเนินการของธุรกรรม แทนที่จะถูกบันทึกอย่างถาวรในสัญญาเหมือน SSTORE นักพัฒนาควรเข้าใจลักษณะเฉพาะของ opcodes เหล่านี้เมื่อใช้งานเพื่อหลีกเลี่ยงการใช้งานผิด ซึ่งอาจทำให้ข้อมูลไม่ถูกเขียนถูกตรงในสัญญา ทำให้เกิดขาดทุน อีกทั้ง ข้อมูลที่เก็บโดย TSTORE เป็นเอกสิทธิ์และสามารถเข้าถึงได้เฉพาะโดยสัญญาเท่านั้น หากต้องการเข้าถึงข้อมูลนี้จากภายนอก จะต้องผ่านพารามิเตอร์หรือเก็บชั่วคราวในตัวแปรเก็บข้อมูลสาธารณะ

ความเสี่ยง 2:

ความเสี่ยงที่อาจเกิดขึ้นอีกประการหนึ่งคือหากนักพัฒนาสัญญาอัจฉริยะไม่จัดการวงจรชีวิตของตัวแปรการจัดเก็บข้อมูลชั่วคราวอย่างถูกต้องอาจทําให้ข้อมูลถูกล้างในเวลาที่ไม่เหมาะสมหรือเก็บรักษาไว้อย่างไม่ถูกต้อง หากสัญญาคาดว่าจะใช้ข้อมูลที่เก็บไว้ในที่เก็บข้อมูลชั่วคราวในการเรียกธุรกรรมในภายหลัง แต่ไม่สามารถจัดการวงจรชีวิตของข้อมูลนี้ได้อย่างเหมาะสมสัญญาอาจแบ่งปันหรือสูญเสียข้อมูลระหว่างการโทรที่แตกต่างกันอย่างผิดพลาดส่งผลให้เกิดข้อผิดพลาดเชิงตรรกะหรือช่องโหว่ด้านความปลอดภัย ความล้มเหลวในการจัดเก็บข้อมูลอย่างถูกต้องเช่นข้อมูลยอดคงเหลือหรือค่าเผื่อในโครงการโทเค็นอาจนําไปสู่ข้อผิดพลาดทางตรรกะในสัญญาทําให้เกิดการสูญเสีย ในทํานองเดียวกันการใช้ opcodes เหล่านี้เพื่อตั้งค่าที่อยู่เจ้าของอาจส่งผลให้ที่อยู่ที่มีสิทธิพิเศษไม่ถูกบันทึกอย่างถูกต้องซึ่งนําไปสู่การสูญเสียการแก้ไขพารามิเตอร์ที่สําคัญของสัญญา

พิจารณาสัญญาอัจฉริยะที่ใช้พื้นที่จัดเก็บชั่วคราวเพื่อบันทึกราคาธุรกรรมชั่วคราวบนแพลตฟอร์มซื้อขายเหรียญดิจิตอล สัญญาอัปเดตราคาหลังจากทุกครั้งที่มีการทำธุรกรรมและอนุญาตให้ผู้ใช้สอบถามราคาล่าสุดในช่วงเวลาสั้น ๆ อย่างไรก็ตาม หากการออกแบบสัญญาไม่พิจารณาระบบล้างข้อมูลชั่วคราวโดยอัตโนมัติที่สิ้นสุดของธุรกรรม อาจมีช่วงเวลาระหว่างสิ้นสุดของธุรกรรมหนึ่งและเริ่มของธุรกรรมถัดไปที่ผู้ใช้อาจได้รับราคาที่ไม่ถูกต้องหรือล้าสมัย สิ่งนี้ไม่เพียงทำให้ผู้ใช้ตัดสินใจตามข้อมูลที่ไม่ถูกต้องเท่านั้น แต่ยังสามารถถูกใช้ประโยชน์อย่างเลวร้าย ทำให้มีผลต่อชื่อเสียงของแพลตฟอร์มและความปลอดภัยของทรัพย์สินของผู้ใช้

EIP-6780

ข้อเสนอนี้เปลี่ยนแปลงพฤติกรรมของรหัสคำสั่ง selfdestruct ก่อนหน้า โดยที่สัญญาไม่ได้ถูกเผาไหม้ แต่มีการโอนโทเค็นเท่านั้น และเฉพาะสัญญาที่สร้างขึ้นในธุรกรรมเดียวกันกับสัญญา selfdestruct จะถูกเผาไหม้ ผลกระทบของ EIP นี้มีความสำคัญอย่างมาก

การใช้ create2 เพื่อการติดตั้งสัญญาที่อยู่เดียวกันสำหรับการอัพเกรดสัญญาไม่ได้รับการสนับสนุนอีกต่อไป ความสามารถนี้ควรถูกแทนที่ด้วย ERC-2535 หรือประเภทอื่น ๆ ของสัญญาพร็อกซี่ (นี้อาจส่งผลต่อความปลอดภัยของสัญญาบนโซ่การดำเนินการสัญญาที่สามารถอัปเกรดโดยใช้ create2)

การดำเนินการ SELFDESTRUCT ในสัญญาอัจฉริยะทำให้สัญญาถูกเผาไหม้และยอดคงเหลือของสัญญาถูกส่งไปยังที่อยู่เป้าหมายที่ระบุ ในกรณีนี้ สัญญาใช้ SELFDESTRUCT เพื่อเผาเอเทอร์และส่งเอเทอร์ที่ถูกเผาไปยังสัญญา อย่างไรก็ตาม สัญญานี้ต้องถูกสร้างเท่านั้นในธุรกรรมเดียวกันกับสัญญาอื่น ๆ (สัญญาที่สร้างโดยสัญญานี้หรือสัญญาอื่นในธุรกรรมเดียวกัน) มิฉะนั้น เอเทอร์จะถูกโอนเท่านั้นโดยไม่เผาสัญญา (เช่น selfdestruct กับผู้รับเงินเป็นสัญญา selfdestruct ซึ่งจะไม่ทำให้เกิดการเปลี่ยนแปลงใด ๆ) สิ่งนี้จะส่งผลต่อทุกๆสัญญาที่ขึ้นอยู่กับฟังก์ชันการทำลายตัวเองสำหรับการถอนหรือปฏิบัติการอื่น ๆ

Gas Token ที่คล้ายกับ 1inch CHI Token ทำงานตามวิธีการต่อไปนี้: การรักษาค่า offset เสมอ ๆ โดยการ implement CREATE2 หรือ SELFDESTRUCT ที่ offset นี้ เมื่อมีการอัปเดตนี้แล้ว หากค่า offset ปัจจุบันยังไม่ได้ self-destruct อย่างถูกต้อง CREATE2 ต่อไปจะไม่สามารถ implement contracts ได้

การดําเนินการตามข้อเสนอนี้ไม่สามารถโจมตีสัญญาได้โดยตรง แต่จะทําลายตรรกะปกติของสัญญาที่มีอยู่ซึ่งอาศัยการดําเนินการทําลายตนเอง (สัญญาที่อาศัยการทําลายตนเองสําหรับการโอนเงินเท่านั้นจะไม่ได้รับผลกระทบ แต่สัญญาที่ต้องมีการดําเนินการในภายหลังเพื่อลบสัญญาทําลายตนเองจะได้รับผลกระทบ) ทําให้สัญญาทํางานโดยไม่คาดคิดและอาจนําไปสู่การนัดหยุดงานตามสัญญา การสูญเสียเงินทุน ฯลฯ (ตัวอย่างเช่นสัญญาที่ใช้ create2 เดิมเพื่อปรับใช้สัญญาใหม่ที่ที่อยู่เดิมและทําลายสัญญาเดิมเพื่ออัปเกรดด้วยตนเองไม่สามารถปรับใช้ได้สําเร็จอีกต่อไป) ในระยะยาวการปรับเปลี่ยนการทํางานของ opcode อาจทําให้เกิดปัญหาการรวมศูนย์

ตัวอย่างเช่น มีสัญญาณตู้เซฟที่มีอยู่สำหรับการอัปเดต:

  • สัญญาเก็บรักษาชั่วคราว, create2, ใช้เพื่อสำรองเงินชั่วคราวสำหรับที่เก็บเงิน
  • ทำลายสัญญาห้องทุนตนเอง โอนเงินไปยังสัญญาชั่วคราว (เฉพาะเงินถูกโอนโดยไม่ทำลายสัญญา)
  • สร้างสัญญาย vault ใหม่ที่ที่อยู่เดิมโดยใช้ create2 (ล้มเพราะสัญญา vault เดิมยังไม่ได้ถูกเผาไป)
  • ทำลายสัญญาชั่วคราวเพื่อส่งเงินคืนไปยังห้องเก็บ (เงินสูญหาย สัญญาห้องเก็บยังไม่ได้ถูกสร้าง)

การอ่านเพิ่มเติม:

การอัปเกรด Cancun จะเสริมสร้างความได้เปรียบทางการแข่งขันของ Ethereum อย่างมาก อย่างไรก็ตาม การเปลี่ยนแปลงที่เกิดขึ้นในเลเยอร์สมาร์ทคอนแทร็คหลักในการอัปเกรดนี้ มีความเสี่ยงที่จะส่งผลกระทบต่อการดำเนินการอย่างปลอดภัยของ DApps ที่มีอยู่ ระหว่างการพัฒนาสมาร์ทคอนแทร็ค ควรตรวจสอบการเปลี่ยนแปลงเหล่านี้และความเสี่ยงที่อาจเกิดขึ้นอย่างใกล้ชิด คุณสามารถติดต่อ Salus เพื่อตรวจสอบความเสี่ยงหรือรับการสนับสนุนในการตรวจสอบ หรืออ่านข้อมูลเพิ่มเติมเพื่อเข้าใจการเปลี่ยนแปลงได้อย่างละเอียด

Cancun Network Upgrade มาตรฐาน

EIP-1153

EIP-4788

EIP-4844

EIP-5656

EIP-6780

EIP-7516

สัญญา Metapod

GasToken2 contract

ข้อความปฏิเสธความรับผิดชอบ:

  1. บทความนี้ถูกพิมพ์มาจาก [ Aicoin]Forward the Original Title‘Salus Insights:坎昆升级前,项目开发者必看的几项安全检查’. All copyrights belong to the original author [*Odaily Planet Daily]. หากมีข้อขัดแย้งใดๆ เกี่ยวกับการพิมพ์ฉีดนี้ โปรดติดต่อGate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว
  2. คำประกาศความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นคำแนะนำในการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่น ๆ โดยทีม Gate Learn ถูกทำขึ้น หากไม่ได้กล่าวถึง การคัดลอก การกระจาย หรือการลอกเลียนบทความที่ถูกแปลนั้นถูกห้าม

การตรวจสอบความปลอดภัยที่จำเป็นสำหรับนักพัฒนาก่อนการอัพเกรด Cancun

ขั้นสูง3/7/2024, 5:10:08 AM
บทความนี้สรุปการเปลี่ยนแปลงหลักที่เสนอโดยหก EIPs สำหรับการอัปเกรด Cancun ซึ่งรวมถึง EIP-1153, EIP-4788, EIP-4844, EIP-5656, EIP-6780, และ EIP-7516 EIP-4844, ศูนย์ประสงค์ของการอัปเกรดนี้, มีเป้าหมายที่จะเสริมสร้างความสามารถใน Ethereum, ลดต้นทุนการทำธุรกรรมและเพิ่มความเร็วในการทำธุรกรรมสำหรับ Layer 2 solutions การอัปเกรด Cancun ได้รับการทดสอบอย่างประสบความสำเร็จบน Ethereum Goerli, Sepolia, และ Holesky testnets เมื่อวันที่ 17 มกราคม, 30 มกราคม, และ 7 กุมภาพันธ์ ตามลำดับ, โดยการเปิดใช้งานที่วางแผนไว้ในวันที่ 13 มีนาคมบน Ethereum mainnet

*Forward the Original Title:คังคุน รุ่นอัพเกรด ผู้พัฒนาโปรเจคต้องดู การตรวจสอบความปลอดภัยบางราย

TL;DR: กับการอัปเกรด Cancun ที่เข้าใกล้ มันรวมถึงการเปลี่ยนแปลงที่เสนอ EIP หกรายการโดยส่วนใหญ่คือ EIP-1153, EIP-4788, EIP-4844, EIP-5656, EIP-6780, และ EIP-7516. EIP-4844 ให้ความสำคัญกับการเพิ่มประสิทธิภาพของ Ethereum ลดค่าธรรมเนียมการทำธุรกรรม และเร่งความเร็วของการทำธุรกรรมสำหรับ Layer 2 solutions. การอัปเกรดได้รับการทดสอบบน Ethereum testnets และกำหนดเวลาในการเปิดใช้งานบน mainnet ในวันที่ 13 มีนาคม Salus ได้รวบรวมข้อคิดสำคัญเกี่ยวกับความปลอดภัยสำหรับนักพัฒนาให้ตรวจสอบก่อนการอัปเกรด

Review ของข้อเสนอ EIP

ความสำคัญในเชิงความปลอดภัยทางการ

ความเสี่ยงที่เกี่ยวข้องกับสัญญาอัจฉริยะ

Further reading

ตรวจสอบของเสนอ EIP

EIP-1153

EIP-1153 แนะนํา opcodes การจัดเก็บชั่วคราวซึ่งใช้ในการจัดการสถานะในลักษณะที่คล้ายกับการจัดเก็บ แต่ด้วยการจัดเก็บชั่วคราวจะถูกทิ้งหลังจากแต่ละธุรกรรม ซึ่งหมายความว่าที่เก็บข้อมูลชั่วคราวจะไม่แยกค่าออกจากที่เก็บข้อมูลหรือกําหนดค่าต่อเนื่องไปยังที่เก็บข้อมูลส่งผลให้ต้นทุนลดลงเนื่องจากการหลีกเลี่ยงการเข้าถึงดิสก์ ด้วยการเปิดตัว opcodes ใหม่สองตัว TLOAD และ TSTORE (โดยที่ "T" ย่อมาจาก "ชั่วคราว") สัญญาอัจฉริยะสามารถเข้าถึงที่เก็บข้อมูลชั่วคราวได้ ข้อเสนอนี้มีจุดมุ่งหมายเพื่อให้โซลูชันเฉพาะและมีประสิทธิภาพสําหรับการสื่อสารระหว่างเฟรมการดําเนินการที่ซ้อนกันหลายเฟรมระหว่างการดําเนินการธุรกรรมใน Ethereum

EIP-4788

EIP-4788 มีจุดมุ่งหมายเพื่อเปิดเผยรากของแฮชทรีของบล็อกโซ่บีคอนไปยัง EVM, ทําให้รากเหล่านี้สามารถเข้าถึงได้ภายในสัญญาอัจฉริยะ. สิ่งนี้ช่วยให้สามารถเข้าถึงสถานะเลเยอร์ฉันทามติได้โดยไม่ต้องไว้วางใจสนับสนุนกรณีการใช้งานต่างๆเช่นกลุ่มการปักหลักโครงสร้างการยึดใหม่สะพานสัญญาอัจฉริยะและการบรรเทา MEV ข้อเสนอนี้บรรลุสิ่งนี้โดยการจัดเก็บรากเหล่านี้ในสัญญาอัจฉริยะและใช้บัฟเฟอร์แบบวงกลมเพื่อ จํากัด การใช้พื้นที่เก็บข้อมูลเพื่อให้แน่ใจว่าแต่ละบล็อกการดําเนินการต้องการพื้นที่คงที่เท่านั้นที่จะแสดงข้อมูลนี้

EIP-4844

EIP-4844 มีการนำเสนอรูปแบบธุรกรรมใหม่ที่เรียกว่า “Shard Blob Transactions” ที่ออกแบบมาเพื่อขยายความสามารถในการใช้ข้อมูลของ Ethereum อย่างง่ายและที่เข้ากันได้กับรุ่นก่อนหน้า ข้อเสนอนี้บรรลุเป้าหมายโดยการนำเสนอ “ธุรกรรมที่พก blob” ซึ่งมีปริมาณข้อมูลมากที่ไม่สามารถเข้าถึงได้โดย EVM แต่สามารถเข้าถึงได้โดยการยืนยันของตนเอง รูปแบบนี้เป็นไปตามรูปแบบที่ใช้โดยการแบ่งชั้นข้อมูลทั้งหมดในอนาคต ให้การประคองชั่วคราวแต่สำคัญสำหรับความสามารถในการขยายของ rollup

EIP-5656

EIP-5656 แนะนําคําสั่ง EVM ใหม่ MCOPY สําหรับการคัดลอกพื้นที่หน่วยความจําอย่างมีประสิทธิภาพ ข้อเสนอนี้มีจุดมุ่งหมายเพื่อลดค่าใช้จ่ายในการคัดลอกหน่วยความจําบน EVM โดยการคัดลอกข้อมูลระหว่างความทรงจําโดยตรงโดยใช้คําสั่ง MCOPY MCOPY ช่วยให้สามารถซ้อนทับกันของที่อยู่ต้นทางและปลายทางซึ่งออกแบบโดยคํานึงถึงความเข้ากันได้แบบย้อนหลังและมีจุดมุ่งหมายเพื่อปรับปรุงประสิทธิภาพการดําเนินการในสถานการณ์ต่างๆรวมถึงการสร้างโครงสร้างข้อมูลการเข้าถึงที่มีประสิทธิภาพและการคัดลอกวัตถุหน่วยความจํา

EIP-6780

EIP-6780 ปรับเปลี่ยนความสามารถของรหัสคำสั่ง SELFDESTRUCT ในข้อเสนอนี้ SELFDESTRUCT เฉพาะลบบัญชีและโอน ether ทั้งหมดในธุรกรรมเดียวกันกับการสร้างสัญญา นอกจากนี้เมื่อทำ SELFDESTRUCT สัญญาจะไม่ถูกลบแต่จะโอน ether ทั้งหมดไปยังเป้าหมายที่ระบุ การเปลี่ยนแปลงนี้รองรับการใช้งานในอนาคตของต้นไม้ Verkle เพื่อผสมผสาน EVM ลดความซับซ้อนของการดำเนินการของสถานะในขณะเดียวกัน ยังคงบริการบางกรณีการใช้งานของ SELFDESTRUCT

EIP-7516

EIP-7516 นำเสนอคำสั่ง EVM ใหม่ คือ BLOBBASEFEE เพื่อคืนค่าค่าฐานของ blobs ในการดำเนินการบล็อกปัจจุบัน คำสั่งนี้คล้ายกับ BASEFEE opcode ที่นำเสนอใน EIP-3198 โดยต่างกันที่คืนค่าฐานของ blobs ตามที่กำหนดไว้ใน EIP-4844 ฟังก์ชันนี้ช่วยให้สัญญาสามารถพิจารณาราคาแก๊สของข้อมูล blob โดยโปรแกรมให้สัญญา rollup คำนวณต้นทุนการใช้งานข้อมูล blob โดยไม่มีความเชื่อถือหรือการดำเนินการกับ blob gas futures เพื่อลดค่าใช้จ่ายข้อมูล blob

ความต้องการด้านความปลอดภัยทางการเป็นทางการ

EIP-1153

นักพัฒนาสัญญาอัจฉริยะควรเข้าใจวงจรชีวิตของตัวแปรการจัดเก็บข้อมูลชั่วคราวก่อนใช้งาน เนื่องจากการจัดเก็บชั่วคราวจะถูกล้างโดยอัตโนมัติเมื่อสิ้นสุดการทําธุรกรรมนักพัฒนาสัญญาอัจฉริยะอาจพยายามหลีกเลี่ยงการล้างช่องระหว่างการโทรเพื่อประหยัดก๊าซ อย่างไรก็ตามสิ่งนี้สามารถป้องกันการโต้ตอบเพิ่มเติมกับสัญญาในธุรกรรมเดียวกัน (เช่นในกรณีของการล็อคการกลับเข้าใหม่) หรือนําไปสู่ข้อผิดพลาดอื่น ๆ ดังนั้นนักพัฒนาสัญญาอัจฉริยะควรระมัดระวังและรักษาค่าที่ไม่ใช่ศูนย์ไว้เฉพาะเมื่อช่องเก็บข้อมูลชั่วคราวถูกสงวนไว้สําหรับการโทรในอนาคตภายในธุรกรรมเดียวกัน มิฉะนั้นพฤติกรรมของ opcodes เหล่านี้จะเหมือนกับ SLOAD และ SSTORE ดังนั้นข้อควรพิจารณาด้านความปลอดภัยทั่วไปทั้งหมดจึงมีผลบังคับใช้โดยเฉพาะอย่างยิ่งเกี่ยวกับความเสี่ยงในการกลับเข้าประเทศ

นักพัฒนาสัญญาอัจฉริยะอาจพยายามใช้ที่เก็บข้อมูลชั่วคราวเป็นทางเลือกแทนการแมปหน่วยความจํา พวกเขาควรทราบว่าที่เก็บข้อมูลชั่วคราวจะไม่ถูกทิ้งเช่นหน่วยความจําเมื่อการโทรกลับมาหรือถูกเปลี่ยนกลับและควรจัดลําดับความสําคัญของหน่วยความจําในกรณีการใช้งานดังกล่าวเพื่อหลีกเลี่ยงพฤติกรรมที่ไม่คาดคิดในระหว่างการป้อนซ้ําในธุรกรรมเดียวกัน ค่าใช้จ่ายสูงของการจัดเก็บชั่วคราวในหน่วยความจําควรกีดกันรูปแบบการใช้งานนี้แล้ว กรณีการใช้งานส่วนใหญ่สําหรับการแมปในหน่วยความจําสามารถใช้งานได้ดีกว่าผ่านรายการที่เรียงลําดับตามคีย์และที่เก็บข้อมูลชั่วคราวในการแมปหน่วยความจํานั้นไม่ค่อยจําเป็นในสัญญาอัจฉริยะ (เช่นไม่มีกรณีการใช้งานที่รู้จักในการผลิต)

EIP-4844

EIP นี้เพิ่มความต้องการแบนด์วิดท์สำหรับแต่ละบล็อกบีคอนได้ถึงประมาณ 0.75 MB นี่คือการเพิ่มขึ้นถึง 40% จากขนาดสูงสุดทฤษฎีของบล็อกในปัจจุบัน (30M Gas / 16 Gas ต่อ calldata byte = 1.875M bytes) ดังนั้นมันไม่เพิ่มแบนด์วิดท์ในกรณีที่แย่ที่สุดอย่างมีนัยสำคัญ หลังจากการผสานข้อมูล เวลาบล็อกจะเป็นค่าคงที่แทนที่จะกระจายอย่างไม่คาดคิดแบบ Poisson เส้นทางการส่งต่อของบล็อกขนาดใหญ่จะได้รับการรับรอง

แม้จะมีข้อมูลการโทรที่ จํากัด แต่ภาระที่ยั่งยืนของ EIP นี้ก็ต่ํากว่าโซลูชันทางเลือกที่สามารถลดต้นทุนของข้อมูลการโทรได้เนื่องจากพื้นที่เก็บข้อมูล Blob ไม่จําเป็นต้องเก็บไว้เป็นระยะเวลาเดียวกับโหลดการดําเนินการ สิ่งนี้ทําให้สามารถใช้กลยุทธ์ที่ต้องการให้ blobs เหล่านี้ถูกเก็บไว้อย่างน้อยหนึ่งช่วงเวลา ค่าเฉพาะที่เลือกคือยุค MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS ซึ่งสั้นกว่าเวลาหมุนเวียนหนึ่งปีที่เสนอ (แต่ยังไม่ได้ดําเนินการ) สําหรับการดําเนินการประวัติน้ําหนักบรรทุกที่ถูกต้อง

EIP-5656

ผู้ใช้ควรระมัดระวังว่าการปฏิบัติของพวกเขาไม่ใช้บัฟเฟอร์กลาง (เช่น ฟังก์ชัน C stdlib memmove ไม่ใช้บัฟเฟอร์กลาง) เนื่องจากเป็นเวกเตอร์การปฏิบัติการบริการ (DoS) ที่เป็นไปได้ ฟังก์ชันที่มีอยู่ในภาษา/ฟังก์ชันของไลบรารีมาตรฐานที่ใช้สำหรับการย้ายไบต์มีลักษณะประสิทธิภาพที่ถูกต้องที่นี่

นอกจากนี้การวิเคราะห์การโจมตีปฏิเสธบริการ (DoS) และการโจมตีแบบการใช้หน่วยความจำเกินกว่าเดิมเหมือนกับโค้ดคำสั่งการใช้หน่วยความจำอื่น ๆ เนื่องจากการขยายขอบเขตของหน่วยความจำเกิดขึ้นตามกฎราคาเดียวกัน

EIP-6780

การใช้งาน SELFDESTRUCT ต่อไปนี้จะเสียหาย และแอปพลิเคชันที่ใช้งานในลักษณะนี้จะไม่ปลอดภัยอีกต่อไป:

ที่ CREATE2 ถูกใช้ในการ implement การ deploy สัญญาที่ตำแหน่งเดียวกันเพื่อทำให้สัญญาสามารถอัปเกรดได้ ฟังก์ชันนี้ไม่ได้รับการสนับสนุนอีกต่อไปและควรถูกแทนที่ด้วย ERC-2535 หรือประเภทอื่น ๆ ของสัญญาพร็อกซี

หากสัญญาพึ่งพาการเผาไหม้เอเทอร์ไปยังสัญญาผ่าน SELFDESTRUCT เป็นผู้รับผลประโยชน์ สัญญาจะไม่ถูกสร้างในธุรกรรมเดียวกัน

ความเสี่ยงที่เกี่ยวข้องกับสมาร์ทคอนแทรค

EIP1153

พิจารณาสองสถานการณ์โดยใช้ opcodes TLOAD และ TSTORE:

  1. ใช้โอ๊ปโค้ดเหล่านี้เพื่อทำสัญญาที่เรียกว่า
  2. การเรียกใช้สัญญาใช้ opcodes เหล่านี้

ความเสี่ยง 1:

เมื่อเปรียบเทียบกับ SSTORE และ SLOAD แบบเดิม การนำเข้าที่เก็บข้อมูลชั่วคราว ส่วนใหญ่เปลี่ยนแปลงระยะเวลาในการเก็บข้อมูล ข้อมูลที่เก็บโดย TSTORE ถูกอ่านผ่าน TLOAD และจะถูกปลดปล่อยหลังจากการดำเนินการของธุรกรรม แทนที่จะถูกบันทึกอย่างถาวรในสัญญาเหมือน SSTORE นักพัฒนาควรเข้าใจลักษณะเฉพาะของ opcodes เหล่านี้เมื่อใช้งานเพื่อหลีกเลี่ยงการใช้งานผิด ซึ่งอาจทำให้ข้อมูลไม่ถูกเขียนถูกตรงในสัญญา ทำให้เกิดขาดทุน อีกทั้ง ข้อมูลที่เก็บโดย TSTORE เป็นเอกสิทธิ์และสามารถเข้าถึงได้เฉพาะโดยสัญญาเท่านั้น หากต้องการเข้าถึงข้อมูลนี้จากภายนอก จะต้องผ่านพารามิเตอร์หรือเก็บชั่วคราวในตัวแปรเก็บข้อมูลสาธารณะ

ความเสี่ยง 2:

ความเสี่ยงที่อาจเกิดขึ้นอีกประการหนึ่งคือหากนักพัฒนาสัญญาอัจฉริยะไม่จัดการวงจรชีวิตของตัวแปรการจัดเก็บข้อมูลชั่วคราวอย่างถูกต้องอาจทําให้ข้อมูลถูกล้างในเวลาที่ไม่เหมาะสมหรือเก็บรักษาไว้อย่างไม่ถูกต้อง หากสัญญาคาดว่าจะใช้ข้อมูลที่เก็บไว้ในที่เก็บข้อมูลชั่วคราวในการเรียกธุรกรรมในภายหลัง แต่ไม่สามารถจัดการวงจรชีวิตของข้อมูลนี้ได้อย่างเหมาะสมสัญญาอาจแบ่งปันหรือสูญเสียข้อมูลระหว่างการโทรที่แตกต่างกันอย่างผิดพลาดส่งผลให้เกิดข้อผิดพลาดเชิงตรรกะหรือช่องโหว่ด้านความปลอดภัย ความล้มเหลวในการจัดเก็บข้อมูลอย่างถูกต้องเช่นข้อมูลยอดคงเหลือหรือค่าเผื่อในโครงการโทเค็นอาจนําไปสู่ข้อผิดพลาดทางตรรกะในสัญญาทําให้เกิดการสูญเสีย ในทํานองเดียวกันการใช้ opcodes เหล่านี้เพื่อตั้งค่าที่อยู่เจ้าของอาจส่งผลให้ที่อยู่ที่มีสิทธิพิเศษไม่ถูกบันทึกอย่างถูกต้องซึ่งนําไปสู่การสูญเสียการแก้ไขพารามิเตอร์ที่สําคัญของสัญญา

พิจารณาสัญญาอัจฉริยะที่ใช้พื้นที่จัดเก็บชั่วคราวเพื่อบันทึกราคาธุรกรรมชั่วคราวบนแพลตฟอร์มซื้อขายเหรียญดิจิตอล สัญญาอัปเดตราคาหลังจากทุกครั้งที่มีการทำธุรกรรมและอนุญาตให้ผู้ใช้สอบถามราคาล่าสุดในช่วงเวลาสั้น ๆ อย่างไรก็ตาม หากการออกแบบสัญญาไม่พิจารณาระบบล้างข้อมูลชั่วคราวโดยอัตโนมัติที่สิ้นสุดของธุรกรรม อาจมีช่วงเวลาระหว่างสิ้นสุดของธุรกรรมหนึ่งและเริ่มของธุรกรรมถัดไปที่ผู้ใช้อาจได้รับราคาที่ไม่ถูกต้องหรือล้าสมัย สิ่งนี้ไม่เพียงทำให้ผู้ใช้ตัดสินใจตามข้อมูลที่ไม่ถูกต้องเท่านั้น แต่ยังสามารถถูกใช้ประโยชน์อย่างเลวร้าย ทำให้มีผลต่อชื่อเสียงของแพลตฟอร์มและความปลอดภัยของทรัพย์สินของผู้ใช้

EIP-6780

ข้อเสนอนี้เปลี่ยนแปลงพฤติกรรมของรหัสคำสั่ง selfdestruct ก่อนหน้า โดยที่สัญญาไม่ได้ถูกเผาไหม้ แต่มีการโอนโทเค็นเท่านั้น และเฉพาะสัญญาที่สร้างขึ้นในธุรกรรมเดียวกันกับสัญญา selfdestruct จะถูกเผาไหม้ ผลกระทบของ EIP นี้มีความสำคัญอย่างมาก

การใช้ create2 เพื่อการติดตั้งสัญญาที่อยู่เดียวกันสำหรับการอัพเกรดสัญญาไม่ได้รับการสนับสนุนอีกต่อไป ความสามารถนี้ควรถูกแทนที่ด้วย ERC-2535 หรือประเภทอื่น ๆ ของสัญญาพร็อกซี่ (นี้อาจส่งผลต่อความปลอดภัยของสัญญาบนโซ่การดำเนินการสัญญาที่สามารถอัปเกรดโดยใช้ create2)

การดำเนินการ SELFDESTRUCT ในสัญญาอัจฉริยะทำให้สัญญาถูกเผาไหม้และยอดคงเหลือของสัญญาถูกส่งไปยังที่อยู่เป้าหมายที่ระบุ ในกรณีนี้ สัญญาใช้ SELFDESTRUCT เพื่อเผาเอเทอร์และส่งเอเทอร์ที่ถูกเผาไปยังสัญญา อย่างไรก็ตาม สัญญานี้ต้องถูกสร้างเท่านั้นในธุรกรรมเดียวกันกับสัญญาอื่น ๆ (สัญญาที่สร้างโดยสัญญานี้หรือสัญญาอื่นในธุรกรรมเดียวกัน) มิฉะนั้น เอเทอร์จะถูกโอนเท่านั้นโดยไม่เผาสัญญา (เช่น selfdestruct กับผู้รับเงินเป็นสัญญา selfdestruct ซึ่งจะไม่ทำให้เกิดการเปลี่ยนแปลงใด ๆ) สิ่งนี้จะส่งผลต่อทุกๆสัญญาที่ขึ้นอยู่กับฟังก์ชันการทำลายตัวเองสำหรับการถอนหรือปฏิบัติการอื่น ๆ

Gas Token ที่คล้ายกับ 1inch CHI Token ทำงานตามวิธีการต่อไปนี้: การรักษาค่า offset เสมอ ๆ โดยการ implement CREATE2 หรือ SELFDESTRUCT ที่ offset นี้ เมื่อมีการอัปเดตนี้แล้ว หากค่า offset ปัจจุบันยังไม่ได้ self-destruct อย่างถูกต้อง CREATE2 ต่อไปจะไม่สามารถ implement contracts ได้

การดําเนินการตามข้อเสนอนี้ไม่สามารถโจมตีสัญญาได้โดยตรง แต่จะทําลายตรรกะปกติของสัญญาที่มีอยู่ซึ่งอาศัยการดําเนินการทําลายตนเอง (สัญญาที่อาศัยการทําลายตนเองสําหรับการโอนเงินเท่านั้นจะไม่ได้รับผลกระทบ แต่สัญญาที่ต้องมีการดําเนินการในภายหลังเพื่อลบสัญญาทําลายตนเองจะได้รับผลกระทบ) ทําให้สัญญาทํางานโดยไม่คาดคิดและอาจนําไปสู่การนัดหยุดงานตามสัญญา การสูญเสียเงินทุน ฯลฯ (ตัวอย่างเช่นสัญญาที่ใช้ create2 เดิมเพื่อปรับใช้สัญญาใหม่ที่ที่อยู่เดิมและทําลายสัญญาเดิมเพื่ออัปเกรดด้วยตนเองไม่สามารถปรับใช้ได้สําเร็จอีกต่อไป) ในระยะยาวการปรับเปลี่ยนการทํางานของ opcode อาจทําให้เกิดปัญหาการรวมศูนย์

ตัวอย่างเช่น มีสัญญาณตู้เซฟที่มีอยู่สำหรับการอัปเดต:

  • สัญญาเก็บรักษาชั่วคราว, create2, ใช้เพื่อสำรองเงินชั่วคราวสำหรับที่เก็บเงิน
  • ทำลายสัญญาห้องทุนตนเอง โอนเงินไปยังสัญญาชั่วคราว (เฉพาะเงินถูกโอนโดยไม่ทำลายสัญญา)
  • สร้างสัญญาย vault ใหม่ที่ที่อยู่เดิมโดยใช้ create2 (ล้มเพราะสัญญา vault เดิมยังไม่ได้ถูกเผาไป)
  • ทำลายสัญญาชั่วคราวเพื่อส่งเงินคืนไปยังห้องเก็บ (เงินสูญหาย สัญญาห้องเก็บยังไม่ได้ถูกสร้าง)

การอ่านเพิ่มเติม:

การอัปเกรด Cancun จะเสริมสร้างความได้เปรียบทางการแข่งขันของ Ethereum อย่างมาก อย่างไรก็ตาม การเปลี่ยนแปลงที่เกิดขึ้นในเลเยอร์สมาร์ทคอนแทร็คหลักในการอัปเกรดนี้ มีความเสี่ยงที่จะส่งผลกระทบต่อการดำเนินการอย่างปลอดภัยของ DApps ที่มีอยู่ ระหว่างการพัฒนาสมาร์ทคอนแทร็ค ควรตรวจสอบการเปลี่ยนแปลงเหล่านี้และความเสี่ยงที่อาจเกิดขึ้นอย่างใกล้ชิด คุณสามารถติดต่อ Salus เพื่อตรวจสอบความเสี่ยงหรือรับการสนับสนุนในการตรวจสอบ หรืออ่านข้อมูลเพิ่มเติมเพื่อเข้าใจการเปลี่ยนแปลงได้อย่างละเอียด

Cancun Network Upgrade มาตรฐาน

EIP-1153

EIP-4788

EIP-4844

EIP-5656

EIP-6780

EIP-7516

สัญญา Metapod

GasToken2 contract

ข้อความปฏิเสธความรับผิดชอบ:

  1. บทความนี้ถูกพิมพ์มาจาก [ Aicoin]Forward the Original Title‘Salus Insights:坎昆升级前,项目开发者必看的几项安全检查’. All copyrights belong to the original author [*Odaily Planet Daily]. หากมีข้อขัดแย้งใดๆ เกี่ยวกับการพิมพ์ฉีดนี้ โปรดติดต่อGate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว
  2. คำประกาศความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนเท่านั้น และไม่เป็นคำแนะนำในการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่น ๆ โดยทีม Gate Learn ถูกทำขึ้น หากไม่ได้กล่าวถึง การคัดลอก การกระจาย หรือการลอกเลียนบทความที่ถูกแปลนั้นถูกห้าม
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!