การวิเคราะห์อย่างถี่ถ้วนของ ERC-4626 และ DeFi

ขั้นสูง2/22/2024, 5:56:11 AM
บทความนี้วิเคราะห์หลักการพื้นฐานของ ERC-4626 และการประยุกต์ใช้ใน DeFi อย่างรอบด้าน

01 ERC-4626 คืออะไร

ERC-4626 เป็นที่เก็บเงินที่ถูกทำเป็นโทเค็นด้วย EIP-20 ซึ่งมีโทเค็นใต้เค้าโครงเดียวกัน

โดยทั้งนี้เป็นข้อเสนอที่ใช้ ERC-20 และเป็นไปได้อย่างสมบูรณ์กับมัน

ประการที่สองเข้าใจแนวคิดของห้องนิรภัยซึ่งไม่ใช่คลัง คลังในตลาดปัจจุบันเป็นกระเป๋าเงินสัญญาซึ่งส่วนใหญ่เป็น Gnosis Safe ซึ่งส่วนใหญ่ให้ฟังก์ชั่นเข้าและออกกองทุนที่ปลอดภัย แต่สําหรับองค์กรนอกเหนือจากการไหลเข้าและไหลออกของเงินทุนการไหลของเงินทุนยังสามารถสร้างรายได้

แรงจูงใจของข้อเสนอนี้: ขาดข้อกำหนดสำหรับทางเลือกโกงโทเค็น ได้ผลให้มีรายละเอียดในการปฏิบัติการที่แตกต่างกันของโกงโทเคนหลายชนิดบนตลาด เช่น ตลาดการยืมเงิน ตัวรวม โทเคนที่ทำให้ได้รับดอกเบี้ย เป็นต้น นี้ทำให้การรวมตัวตัวรวมและปลั๊กอินระดับโปรโตคอลยาก รบ และเสียทรัพยากรการพัฒนา

เมื่อสถานะปัจจุบันของข้อเสนอนี้เป็น Final แสดงว่ามันเป็นมาตรฐานที่เสถียรในระดับหนึ่ง

02 สเปค

โทเค็นที่ติดตาม ERC-4626 ต้องใช้ ERC-20 อย่างสมบูรณ์ซึ่งใช้เพื่อเป็นตัวแทนของหุ้น นี่คือแนวคิดง่ายๆ บางประการ

  • สินทรัพย์: โทเค็นอ้างอิงที่จัดการโดยห้องนิรภัยตามมาตรฐาน ERC-20
  • แบ่งปัน: โทเค็นที่เก็บ, หรือที่รู้จักกันในนาม vToken มีความสัมพันธ์สัมพันธ์กับสินทรัพย์
  • ค่าธรรมเนียม: จำนวนเงินที่ถูกคิดจากยอดเงินในที่เก็บเงินเมื่อทรัพย์สินหรือหุ้นเปลี่ยนแปลง สามารถเป็นเงินฝากเงิน, รายได้, การจัดการทรัพย์สิน, การถอนเงิน ฯลฯ
  • Slippage: คือ ความแตกต่างระหว่างราคาที่เผยแพร่ของการฝากและถอนหุ้น และเศรษฐกิจจริง ด้านล่างคือคำอธิบายเพิ่มเติมเกี่ยวกับแนวคิดของ slippage ในเขตการดำเนินงาน DeFi

Slippage คือความแตกต่างระหว่างราคาที่คาดหวังของการซื้อขายและราคาดําเนินการจริง Slippage เกิดขึ้นเมื่อมีความล่าช้าระหว่างการวางการซื้อขายและการดําเนินการและราคาของสินทรัพย์ที่กําลังซื้อขายมีการเปลี่ยนแปลง

ตัวอย่างเช่น หากคุณพบ ETH 20 และ USDT 80 ในสระ AMM ราคา ETH ที่คาดหวังของคุณคือ 4 USDT/ETH อย่างไรก็ตามหากคุณวางแผนที่จะใช้ USDT 20 ในการสว็อปในสระ คุณจะได้แค่ 4 ETH แทนที่จะได้ 5 ETH ที่คาดหวัง ซึ่งหมายความว่าคุณได้รับความสูญเสียจากการสลิปเพจ 1 USDT/ETH ราคาที่คุณซื้อจริงจะเป็น 5 USDT ไม่ใช่ 4 USDT ที่คาดหวัง

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

03 การวิเคราะห์สัญญา

รหัสสัญญามาจากห้องสมุดรหัสสัญญาอัจฉริยะ OpenZeppelin:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/ERC4626.sol

สัญญา ERC-4626 มีลักษณะที่มีการสืบทอดมาจาก ERC-20 ส่วนนี้จะไม่ถูกสรุป เนื่องจากเป็นสัญญานามธรรมเอง อินเตอร์เฟซที่สัญญาต้องดำเนินการมีดังต่อไปนี้

อินเทอร์เฟซมีความหลากหลายมาก มาก parte พวกเขามักจะเป็นเรื่องที่เรียบง่ายและสามารถแบ่งเป็นสองประเภท: อ่านและเขียน

เขียน

ส่วนต่อประสานหลักสำหรับเขียนข้อมูลคือการฝากเงิน การสร้างเหรียญ การถอน และการแลกของ

  • การฝากกำหนดจำนวนสินทรัพย์และโอนไปยังที่เก็บเงิน มันสร้างหุ้นพร้อมกัน คุณสามารถใช้วิธี previewDeposit เพื่อดูล่วงหน้าว่าจะสามารถสร้างหุ้นได้เท่าไหร่

  • การถอน (ถอนเงิน) กำหนดจำนวนสินทรัพย์ที่จะโอนออกจากที่เก็บสินทรัพย์ และเผาหุ้นในขณะเดียวกัน คุณสามารถใช้วิธีการดูก่อนถอนเพื่อตรวจสอบล่วงหน้าว่ามีการเผาหุ้นเท่าไหร่
  • Mint ใช้พารามิเตอร์ของหุ้น ในความเป็นจริงวิธีนี้เทียบเท่ากับการฝากเงินซึ่งกำหนดหุ้นที่จะเคาะสร้างเพื่อคำนวณสินทรัพย์ที่ต้องการฝากไว้ คุณสามารถใช้วิธี previewMint เพื่อตรวจสอบล่วงหน้าว่าจะมีสินทรัพย์เท่าไหร่ถูกถอดออก
  • Redeem ใช้พารามิเตอร์ของหุ้นซึ่งเทียบเท่ากับการถอน ทำให้สามารถกำหนดหุ้นที่ถูกเผาไหม้เพื่อคำนวณสินทรัพย์ที่ต้องถูกโอนออก คุณสามารถใช้วิธี previewRedeem เพื่อตรวจสอบล่วงหน้าว่าจะมีสินทรัพย์เท่าไหร่ที่จะถูกแลกเปลี่ยน

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

อ่าน

วิธีการแสดงตัวอย่างหลายวิธีที่กล่าวถึงก่อนหน้านี้เช่นเดียวกับการแปลงสาธารณะ ToShares และ convertToAssets เรียกวิธีการ_convertToShares และ_convertToAssets ภายใน

วิธีหลัก 2 วิธีในการคำนวณความสัมพันธ์สัดส่วนระหว่างสินทรัพย์และหุ้น ตัวแปรที่เกี่ยวข้องรวมถึง การจัดหาหุ้น สินทรัพย์รวมปัจจุบัน จำนวนจุดทศนิยม และวิธีการปัดจุดทศนิยม

ข้างต้นคือการปฏิบัติพื้นฐานของสัญญานามธรรม ERC-4626 สัญญาที่เก็บเงินจริงมีความซับซ้อนมากกว่านี้มาก

สําหรับสัญญาห้องนิรภัยมีสองหน้าที่ที่ค่อนข้างสําคัญที่ต้องดําเนินการ หนึ่งคือฟังก์ชั่นการฝากและถอนการแปลงสินทรัพย์และหุ้น อีกวิธีหนึ่งคือวิธีการรับรายได้ซึ่งจะอธิบายด้วยตัวอย่างด้านล่าง

04 นิเวศวิทยาและการประยุกต์

คล้ายกับ EIP ที่มีชื่อเสียงบางราย ERC-4626 ยังมีระบบนิติบุคคลแอลไลแอนซ์เช่นกันhttps://erc4626.info/) รักษาโดยบุคคลที่มีความมุ่งมั่น ซึ่งรวบรวมโปรโตคอลการยืมและแอปพลิเคชันบางตัวที่มีในตลาดในปัจจุบันที่เข้ากันได้กับ ERC-4626 และยังมีข่าวสาร ห้องสมุดซอฟต์แวร์เปิดเผย ความปลอดภัย และข้อมูลอื่น ๆ หากห้องเก็บของของคุณได้รับการปรับให้เข้ากับ ERC-4626 คุณยังสามารถส่งใบสมัครได้ที่นั่น

ด้านล่างเราจะวิเคราะห์ตัวอย่างการใช้งาน ย vault AladdinCRVV2 ของ Aladdin DAOhttps://concentrator.aladdin.club/vaults/). Aladdin DAO has many vault contracts, and this is just one of the more active ones.

ที่เก็บ AladdinCRVV2 Vault

ที่เก็บเงินได้รายได้โดยการ stake โทเคน cvxCRV

  • สัญญาย Vault เป็นสัญญาที่สามารถอัพเกรดได้

(https://etherscan.io/address/0x2b95A1Dcc3D405535f9ed33c219ab38E8d7e0884). และคุณสามารถตรวจสอบผ่านรหัส github ได้ว่าเวอร์ชั่นก่อนหน้าไม่สามารถทำงานร่วมกับ ERC-4626

  • สินทรัพย์เก็บซ่อนเพลิงคือ cvxCRV ( https://etherscan.io/address/0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7). cvxCRV สามารถได้รับได้โดยการ stake CVX บน Convex เป็นบริษัทในเครือของ Curve หรือคุณสามารถใช้ CRV เพื่อแปลง cvxCRV (กระบวนการนี้ไม่สามารถย้อนกลับได้)
  • ในขั้นตอนการเริ่มต้น จะมีการตั้งค่ากลยุทธ์
    (https://etherscan.io/address/0x94cc627db80253056b2130aac39abb252a75f345), ซึ่งใช้เพื่อเสี่ยงทายเพื่อรับรายได้เมื่อฝากเงิน เรทเตอร์จะสามารถเปลี่ยนแปลงกลยุทธ์ได้
  • เมื่อฝากเงิน โทรหากลยุทธ์เพื่อเขยายมือและคำนวณหุ้นส่วนสุดท้าย สัญญาการเสนอขายคือ (https://etherscan.io/address/0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434).

  • ตามความเป็นจริงมีตัวเลือกการดำเนินการหลายรูปแบบสำหรับฝากเงินและถอนเงินซึ่งสะดวกและประหยัดแก๊สมากมีรหัสมากเกินไปจึงไม่ได้โพสต์ที่นี่
    • การฝาก: โทเคน cvxCRV จะถูกฝากเข้าไปในที่เก็บเงินโดยค่าเริ่มต้น นอกจากนี้ยังมีการฝากด้วย CRV ซึ่งเป็นสะดวกสำหรับ CRV และยังสามารถฝากเงิน
    • เมื่อถอน cvxCRV จะถูกเอาออกและหุ้นจะถูกเผาโดยค่าเริ่มต้น นอกจากนี้คุณยังสามารถเริ่มต้นใหม่เมื่อถอนโดยตนเอง แปลง cvxCRV เป็น CVX และแปลง cvxCRV เป็น ETH

ข้างต้นคือการวิเคราะห์พื้นฐานของสัญญาที่มีฟังก์ชันที่ค่อนข้างหลากหลาย นั้นคือการเดิมทรัพย์เพื่อรับดอกเบี้ย ทำไมถึงออกแบบอย่างนี้? เหตุผลหลักอยู่ที่การออกแบบของสัญญา cvxCrvStaking คำอธิบายเกี่ยวกับรายได้จากการเดิม cvxCRV คือ 'โดยการเดิม cvxCRV คุณจะได้รับรางวัลปกติจาก veCRV (ค่าธรรมเนียมการจัดการ 3crv จาก Curve + การแจกจ่ายจากอากาศที่เกิดขึ้น), รวมถึงส่วนแบ่ง 10% จากรายได้ CRV ที่ถูกเพิ่มขึ้นของ Convex LPs และโทเคน CVX เพิ่มเติมอีก' จำนวนโทเคนมากขึ้น ผลประโยชน์ก็มากขึ้น

ความปลอดภัย

สำหรับที่มี ERC-4626 vaults ปัญหาความปลอดภัยหลักคือการป้องกันการโจมตีที่เกิดจากการเพิ่มปริมาณเงิน

เมื่อผู้ใช้ฝากโทเค็นตามสูตรคำนวณหุ้น (หุ้น = สินทรัพย์ * totalSupply / totalAssets), ผลลัพธ์ของการคำนวณจะมีจุดทศนิยมและมักถูกปัดลง

ตามที่คุณเห็นจากภาพด้านล่างเมื่อผู้ใช้ฝาก 500 โทเค็นในสินทรัพย์ จำนวนสินทรัพย์ที่สูญเสียเนื่องจากการทำระงับทศนิยมขึ้นอยู่กับอัตราแลกเปลี่ยน (การสอดคล้องระหว่างหุ้นต่อหุ้นและโทเคนทรัพย์) หากอัตราแลกเปลี่ยนคือเส้นโค้งสีส้ม เราจะได้น้อยกว่า 1 หุ้นและสูญเสีย 100% อย่างไรก็ตาม หากอัตราแลกเปลี่ยนคือเส้นโค้งสีเขียวและได้รับหุ้น 5000 หุ้น การสูญเสียจากการปัดเศษจะถูกจำกัดไว้ที่สูงสุด 0.02%

ถ้าเราเน้นการ จำกัด ขาดทุน ที่สูงสุด 0.5% เราจะต้องซื้ออย่างน้อย 200 หุ้น การ์ดสีเขียวต้องการเพียงแค่ 20 โทเคน แต่การ์ดสีส้มต้องการ 200,000 โทเคน

จากตัวอย่างหลายตัวอย่าง สามารถวิเคราะห์ได้ว่าเส้นโค้งสีฟ้าและสีเขียวปลอดภัยกว่าเส้นโค้งสีเหลืองและส้ม และถูกออกแบบให้เป็นที่เก็บเงินที่ปลอดภัย

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

วิธีการโจมตี

การโจมตีเชิงเงินพิมพ์โดยส่วนใหญ่เป็นผ่านทางบริจาค

  1. ผู้โจมตีฝาก 1 โทเค็นเข้าสู่สัญญาที่มีคลังสินทรัพย์ เวลานี้หุ้นที่เขาได้รับคือ 1 และ totalSupply คือ 1
  2. ผู้โจมตีส่งโทเค็น 1e5 โดยตรงไปยังสัญญาที่เก็บเงิน เมื่อนี้ รวมสินทรัพย์ได้เปลี่ยนไปเป็น 1e5 + 1 แต่ totalSupply ยังคงเหมือนเดิม
  3. เมื่อเหยียบเข้าไป ยอด token น้อยกว่า 1e5 (x) จะได้รับหุ้นดังนี้: x * 1 / (1e5 + 1), กล่าวคือ ถ้า x มีค่าน้อยกว่า 1e5 ตามหลักของการปัดเศษลง หุ้นที่เหยียบได้คือ 0 แม้ว่าจำนวน token ที่เติมเข้าไปจะมากกว่า 1e5 โดยที่หุ้นที่มีค่าเดิมของผู้โจมตีคือ 100% ทำให้จำนวนหุ้นที่เสียไปของเหยียบมีการลดลงอย่างมีนัยสำคัญ

ป้องกันการโจมตี

มีวิธีการป้องกันการโจมตี 3 วิธี

  1. กำหนดความสะเทือน ก่อนหน้านี้เราได้แนะนำแนวคิดเกี่ยวกับความสะเทือน โดยการกำหนดช่วงความทนทานของความสะเทือน หากมันไม่ได้รับจำนวนที่คาดหวังภายในช่วงความทนทานของความสะเทือนบางอย่าง ธุรกรรมจะถูกย้อนกลับ นี่คือแบบแผนมาตรฐานสำหรับการจัดการกับปัญหาความสะเทือน
  2. เพิ่มสินทรัพย์เริ่มต้นให้เพียงพอในห้องนิรภัยเพื่อเพิ่มค่าใช้จ่ายในการโจมตี ฉันเคยเห็นวิธีนี้ในสัญญาปักหลัก Blast เมื่อเริ่มต้นการปักหลักสัญญาต้องมีจํานวน ETH และ USD ไม่น้อยกว่า 1,000
  3. เพิ่ม " likwiditas เสมือน " ในที่เก็บเพื่อให้การคำนวณราคาทำงานเสมือนว่ามีสินทรัพย์เพียงพอในที่เก็บ วิธีการป้องกันถูกแบ่งออกเป็น 2 ส่วน:
    • ความแตกต่างที่แม่นยำระหว่างหุ้นและสินทรัพย์
    • รวมหุ้นเสมือนและสินทรัพย์เสมือนลงในการคำนวณอัตราแลกเปลี่ยน

การนำไปปฏิบัติบางอย่างคือการเขียนโค้ด _decimalsOffset() ของ OpenZeppelin ใหม่ วิธีนี้ไม่ต้องตั้งค่าสลิปเพจหรือฉีดเงินเริ่มต้นเพียงพอ มันเป็นวิธีที่ดีมากในการต้านการโจมตีต่ออัตราเงินเฟ้อ

05 ต่อ

เป็นข้อเสนอหลอกลวงที่เป็นพื้นฐานอย่างสมบูรณ์ RC-4626 ไม่สามารถตอบสนองความต้องการทั้งหมดได้ บางข้อเสนอยังมีการปรับขนาดเพิ่มเติม เช่น ERC-7535 และ EIP-7540

ERC-7535

เหมือนกับที่กล่าวไว้แล้ว ERC-4626 สามารถใช้ ERC-20 เป็นสินทรัพย์ใต้หลักทรัพย์ได้เท่านั้น ข้อเสนอนี้ส่วนใหญ่อนุญาตให้สินทรัพย์ต้นฉบับใช้เป็นสินทรัพย์ใต้หลักทรัพย์ เช่น ETH ในหลุมเก็บเงิน

EIP-7540

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

บทบาทที่สามารถเกิดขึ้น:

  1. กระบวนการฝากและถอนเงินแบบไม่สม่ำสมอ: โดยการนำเสนอแนวคิด "คำขอ" กระบวนการการฝากและการถอนเงินแบบไม่สม่ำสมอสามารถทำได้ ซึ่งจะทำให้การดำเนินการเป็นไปอย่างยืดหยุ่นมากขึ้น
  2. การปรับปรุงประสบการณ์ผู้ใช้: ข้อเสนอเน้นความสำคัญของประสบการณ์ผู้ใช้และแนะนำให้มีการนำเข้ากลไกการค้นพบมาตรฐานเพื่อช่วยให้ผู้ใช้และแอปพลิเคชันด้านหน้าเข้าใจระยะเวลาและความล่าช้าของการดำเนินการแบบไม่เชื่อมต่อกันได้ดีขึ้น
  3. การขยายฟังก์ชัน: EIP-7540 ขยายความสามารถของ ERC-4626 โดยการเพิ่มวิธีการใหม่ ทำให้เป็นไปได้ที่จะขอเงินฝากและการแลกเปลี่ยนโดยไม่ต้องรอคอย และเพื่อดูสถานะของคำขอเหล่านี้

06 สรุป

ข้างต้นคือการวิเคราะห์ทั้งหมดของ ERC-4626

เนื่องจากเหตุผลทางประวัติศาสตร์มากมาย ทำให้มีที่เก็บรักษาข้อมูลหลายแห่งที่มีอยู่ในตลาดในปัจจุบันที่ไม่ปฏิบัติตาม ERC-4626 และยังคงดำเนินการต่อไป เช่น dForce แต่พวกเขาไม่สามารถนำไปใช้ได้อย่างกว้างขวางมากขึ้น บางที่เก็บรักษาข้อมูลบางแห่งได้รับการอัพเกรดเพื่อปฏิบัติตาม ERC-4626 แล้ว เช่นบางสัญญาจาก Aladdin DAO (https://github.com/AladdinDAO/deployments/blob/main/deployments.mainnet.md).

นอกจากการรับดอกเบี้ยผ่านการ stake เพื่อให้ได้เงินได้สิ่งที่แอปพลิเคชัน vault ยังสามารถให้ยืมหุ้นเป็นหลักทรัพย์หรือ stake อีกครั้งเพื่อสร้างรายได้ นอกจากนี้การระดมทุนผ่าน vaults ยังเป็นสถานการณ์การใช้งานที่ดี เนื่องจากฟังก์ชันพื้นฐานบางอย่างของมันสามารถให้การสนับสนุนที่ยอดเยี่ยม

สาระสําคัญของข้อเสนอนี้คือการปรับปรุงประสิทธิภาพการรวมระหว่างห้องนิรภัยและระบบนิเวศ DeFi และลดต้นทุนการพัฒนา บทบาทของห้องนิรภัยเองยังคงมีพื้นที่มากขึ้นสําหรับการสํารวจเมื่อตลาด DeFi เติบโตขึ้น

ข้อปฏิเสธ:

  1. บทความนี้ถูกคัดลอกมาจาก [LXDAO], All copyrights belong to the original author [Kahn]. หากมีข้อบกพร่องใด ๆ ในการพิมพ์ฉบับนี้ โปรดติดต่อGate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว
  2. ข้อจํากัดความรับผิดชอบความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนและไม่ถือเป็นคําแนะนําการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่นๆ โดยทีม Gate Learn นอกจากที่กล่าวถึงไว้แล้ว การคัดลอก การแจกจ่าย หรือการลอกเลียนบทความที่ถูกแปลนั้น ถือเป็นการละเมิด

การวิเคราะห์อย่างถี่ถ้วนของ ERC-4626 และ DeFi

ขั้นสูง2/22/2024, 5:56:11 AM
บทความนี้วิเคราะห์หลักการพื้นฐานของ ERC-4626 และการประยุกต์ใช้ใน DeFi อย่างรอบด้าน

01 ERC-4626 คืออะไร

ERC-4626 เป็นที่เก็บเงินที่ถูกทำเป็นโทเค็นด้วย EIP-20 ซึ่งมีโทเค็นใต้เค้าโครงเดียวกัน

โดยทั้งนี้เป็นข้อเสนอที่ใช้ ERC-20 และเป็นไปได้อย่างสมบูรณ์กับมัน

ประการที่สองเข้าใจแนวคิดของห้องนิรภัยซึ่งไม่ใช่คลัง คลังในตลาดปัจจุบันเป็นกระเป๋าเงินสัญญาซึ่งส่วนใหญ่เป็น Gnosis Safe ซึ่งส่วนใหญ่ให้ฟังก์ชั่นเข้าและออกกองทุนที่ปลอดภัย แต่สําหรับองค์กรนอกเหนือจากการไหลเข้าและไหลออกของเงินทุนการไหลของเงินทุนยังสามารถสร้างรายได้

แรงจูงใจของข้อเสนอนี้: ขาดข้อกำหนดสำหรับทางเลือกโกงโทเค็น ได้ผลให้มีรายละเอียดในการปฏิบัติการที่แตกต่างกันของโกงโทเคนหลายชนิดบนตลาด เช่น ตลาดการยืมเงิน ตัวรวม โทเคนที่ทำให้ได้รับดอกเบี้ย เป็นต้น นี้ทำให้การรวมตัวตัวรวมและปลั๊กอินระดับโปรโตคอลยาก รบ และเสียทรัพยากรการพัฒนา

เมื่อสถานะปัจจุบันของข้อเสนอนี้เป็น Final แสดงว่ามันเป็นมาตรฐานที่เสถียรในระดับหนึ่ง

02 สเปค

โทเค็นที่ติดตาม ERC-4626 ต้องใช้ ERC-20 อย่างสมบูรณ์ซึ่งใช้เพื่อเป็นตัวแทนของหุ้น นี่คือแนวคิดง่ายๆ บางประการ

  • สินทรัพย์: โทเค็นอ้างอิงที่จัดการโดยห้องนิรภัยตามมาตรฐาน ERC-20
  • แบ่งปัน: โทเค็นที่เก็บ, หรือที่รู้จักกันในนาม vToken มีความสัมพันธ์สัมพันธ์กับสินทรัพย์
  • ค่าธรรมเนียม: จำนวนเงินที่ถูกคิดจากยอดเงินในที่เก็บเงินเมื่อทรัพย์สินหรือหุ้นเปลี่ยนแปลง สามารถเป็นเงินฝากเงิน, รายได้, การจัดการทรัพย์สิน, การถอนเงิน ฯลฯ
  • Slippage: คือ ความแตกต่างระหว่างราคาที่เผยแพร่ของการฝากและถอนหุ้น และเศรษฐกิจจริง ด้านล่างคือคำอธิบายเพิ่มเติมเกี่ยวกับแนวคิดของ slippage ในเขตการดำเนินงาน DeFi

Slippage คือความแตกต่างระหว่างราคาที่คาดหวังของการซื้อขายและราคาดําเนินการจริง Slippage เกิดขึ้นเมื่อมีความล่าช้าระหว่างการวางการซื้อขายและการดําเนินการและราคาของสินทรัพย์ที่กําลังซื้อขายมีการเปลี่ยนแปลง

ตัวอย่างเช่น หากคุณพบ ETH 20 และ USDT 80 ในสระ AMM ราคา ETH ที่คาดหวังของคุณคือ 4 USDT/ETH อย่างไรก็ตามหากคุณวางแผนที่จะใช้ USDT 20 ในการสว็อปในสระ คุณจะได้แค่ 4 ETH แทนที่จะได้ 5 ETH ที่คาดหวัง ซึ่งหมายความว่าคุณได้รับความสูญเสียจากการสลิปเพจ 1 USDT/ETH ราคาที่คุณซื้อจริงจะเป็น 5 USDT ไม่ใช่ 4 USDT ที่คาดหวัง

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

03 การวิเคราะห์สัญญา

รหัสสัญญามาจากห้องสมุดรหัสสัญญาอัจฉริยะ OpenZeppelin:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/ERC4626.sol

สัญญา ERC-4626 มีลักษณะที่มีการสืบทอดมาจาก ERC-20 ส่วนนี้จะไม่ถูกสรุป เนื่องจากเป็นสัญญานามธรรมเอง อินเตอร์เฟซที่สัญญาต้องดำเนินการมีดังต่อไปนี้

อินเทอร์เฟซมีความหลากหลายมาก มาก parte พวกเขามักจะเป็นเรื่องที่เรียบง่ายและสามารถแบ่งเป็นสองประเภท: อ่านและเขียน

เขียน

ส่วนต่อประสานหลักสำหรับเขียนข้อมูลคือการฝากเงิน การสร้างเหรียญ การถอน และการแลกของ

  • การฝากกำหนดจำนวนสินทรัพย์และโอนไปยังที่เก็บเงิน มันสร้างหุ้นพร้อมกัน คุณสามารถใช้วิธี previewDeposit เพื่อดูล่วงหน้าว่าจะสามารถสร้างหุ้นได้เท่าไหร่

  • การถอน (ถอนเงิน) กำหนดจำนวนสินทรัพย์ที่จะโอนออกจากที่เก็บสินทรัพย์ และเผาหุ้นในขณะเดียวกัน คุณสามารถใช้วิธีการดูก่อนถอนเพื่อตรวจสอบล่วงหน้าว่ามีการเผาหุ้นเท่าไหร่
  • Mint ใช้พารามิเตอร์ของหุ้น ในความเป็นจริงวิธีนี้เทียบเท่ากับการฝากเงินซึ่งกำหนดหุ้นที่จะเคาะสร้างเพื่อคำนวณสินทรัพย์ที่ต้องการฝากไว้ คุณสามารถใช้วิธี previewMint เพื่อตรวจสอบล่วงหน้าว่าจะมีสินทรัพย์เท่าไหร่ถูกถอดออก
  • Redeem ใช้พารามิเตอร์ของหุ้นซึ่งเทียบเท่ากับการถอน ทำให้สามารถกำหนดหุ้นที่ถูกเผาไหม้เพื่อคำนวณสินทรัพย์ที่ต้องถูกโอนออก คุณสามารถใช้วิธี previewRedeem เพื่อตรวจสอบล่วงหน้าว่าจะมีสินทรัพย์เท่าไหร่ที่จะถูกแลกเปลี่ยน

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

อ่าน

วิธีการแสดงตัวอย่างหลายวิธีที่กล่าวถึงก่อนหน้านี้เช่นเดียวกับการแปลงสาธารณะ ToShares และ convertToAssets เรียกวิธีการ_convertToShares และ_convertToAssets ภายใน

วิธีหลัก 2 วิธีในการคำนวณความสัมพันธ์สัดส่วนระหว่างสินทรัพย์และหุ้น ตัวแปรที่เกี่ยวข้องรวมถึง การจัดหาหุ้น สินทรัพย์รวมปัจจุบัน จำนวนจุดทศนิยม และวิธีการปัดจุดทศนิยม

ข้างต้นคือการปฏิบัติพื้นฐานของสัญญานามธรรม ERC-4626 สัญญาที่เก็บเงินจริงมีความซับซ้อนมากกว่านี้มาก

สําหรับสัญญาห้องนิรภัยมีสองหน้าที่ที่ค่อนข้างสําคัญที่ต้องดําเนินการ หนึ่งคือฟังก์ชั่นการฝากและถอนการแปลงสินทรัพย์และหุ้น อีกวิธีหนึ่งคือวิธีการรับรายได้ซึ่งจะอธิบายด้วยตัวอย่างด้านล่าง

04 นิเวศวิทยาและการประยุกต์

คล้ายกับ EIP ที่มีชื่อเสียงบางราย ERC-4626 ยังมีระบบนิติบุคคลแอลไลแอนซ์เช่นกันhttps://erc4626.info/) รักษาโดยบุคคลที่มีความมุ่งมั่น ซึ่งรวบรวมโปรโตคอลการยืมและแอปพลิเคชันบางตัวที่มีในตลาดในปัจจุบันที่เข้ากันได้กับ ERC-4626 และยังมีข่าวสาร ห้องสมุดซอฟต์แวร์เปิดเผย ความปลอดภัย และข้อมูลอื่น ๆ หากห้องเก็บของของคุณได้รับการปรับให้เข้ากับ ERC-4626 คุณยังสามารถส่งใบสมัครได้ที่นั่น

ด้านล่างเราจะวิเคราะห์ตัวอย่างการใช้งาน ย vault AladdinCRVV2 ของ Aladdin DAOhttps://concentrator.aladdin.club/vaults/). Aladdin DAO has many vault contracts, and this is just one of the more active ones.

ที่เก็บ AladdinCRVV2 Vault

ที่เก็บเงินได้รายได้โดยการ stake โทเคน cvxCRV

  • สัญญาย Vault เป็นสัญญาที่สามารถอัพเกรดได้

(https://etherscan.io/address/0x2b95A1Dcc3D405535f9ed33c219ab38E8d7e0884). และคุณสามารถตรวจสอบผ่านรหัส github ได้ว่าเวอร์ชั่นก่อนหน้าไม่สามารถทำงานร่วมกับ ERC-4626

  • สินทรัพย์เก็บซ่อนเพลิงคือ cvxCRV ( https://etherscan.io/address/0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7). cvxCRV สามารถได้รับได้โดยการ stake CVX บน Convex เป็นบริษัทในเครือของ Curve หรือคุณสามารถใช้ CRV เพื่อแปลง cvxCRV (กระบวนการนี้ไม่สามารถย้อนกลับได้)
  • ในขั้นตอนการเริ่มต้น จะมีการตั้งค่ากลยุทธ์
    (https://etherscan.io/address/0x94cc627db80253056b2130aac39abb252a75f345), ซึ่งใช้เพื่อเสี่ยงทายเพื่อรับรายได้เมื่อฝากเงิน เรทเตอร์จะสามารถเปลี่ยนแปลงกลยุทธ์ได้
  • เมื่อฝากเงิน โทรหากลยุทธ์เพื่อเขยายมือและคำนวณหุ้นส่วนสุดท้าย สัญญาการเสนอขายคือ (https://etherscan.io/address/0xaa0C3f5F7DFD688C6E646F66CD2a6B66ACdbE434).

  • ตามความเป็นจริงมีตัวเลือกการดำเนินการหลายรูปแบบสำหรับฝากเงินและถอนเงินซึ่งสะดวกและประหยัดแก๊สมากมีรหัสมากเกินไปจึงไม่ได้โพสต์ที่นี่
    • การฝาก: โทเคน cvxCRV จะถูกฝากเข้าไปในที่เก็บเงินโดยค่าเริ่มต้น นอกจากนี้ยังมีการฝากด้วย CRV ซึ่งเป็นสะดวกสำหรับ CRV และยังสามารถฝากเงิน
    • เมื่อถอน cvxCRV จะถูกเอาออกและหุ้นจะถูกเผาโดยค่าเริ่มต้น นอกจากนี้คุณยังสามารถเริ่มต้นใหม่เมื่อถอนโดยตนเอง แปลง cvxCRV เป็น CVX และแปลง cvxCRV เป็น ETH

ข้างต้นคือการวิเคราะห์พื้นฐานของสัญญาที่มีฟังก์ชันที่ค่อนข้างหลากหลาย นั้นคือการเดิมทรัพย์เพื่อรับดอกเบี้ย ทำไมถึงออกแบบอย่างนี้? เหตุผลหลักอยู่ที่การออกแบบของสัญญา cvxCrvStaking คำอธิบายเกี่ยวกับรายได้จากการเดิม cvxCRV คือ 'โดยการเดิม cvxCRV คุณจะได้รับรางวัลปกติจาก veCRV (ค่าธรรมเนียมการจัดการ 3crv จาก Curve + การแจกจ่ายจากอากาศที่เกิดขึ้น), รวมถึงส่วนแบ่ง 10% จากรายได้ CRV ที่ถูกเพิ่มขึ้นของ Convex LPs และโทเคน CVX เพิ่มเติมอีก' จำนวนโทเคนมากขึ้น ผลประโยชน์ก็มากขึ้น

ความปลอดภัย

สำหรับที่มี ERC-4626 vaults ปัญหาความปลอดภัยหลักคือการป้องกันการโจมตีที่เกิดจากการเพิ่มปริมาณเงิน

เมื่อผู้ใช้ฝากโทเค็นตามสูตรคำนวณหุ้น (หุ้น = สินทรัพย์ * totalSupply / totalAssets), ผลลัพธ์ของการคำนวณจะมีจุดทศนิยมและมักถูกปัดลง

ตามที่คุณเห็นจากภาพด้านล่างเมื่อผู้ใช้ฝาก 500 โทเค็นในสินทรัพย์ จำนวนสินทรัพย์ที่สูญเสียเนื่องจากการทำระงับทศนิยมขึ้นอยู่กับอัตราแลกเปลี่ยน (การสอดคล้องระหว่างหุ้นต่อหุ้นและโทเคนทรัพย์) หากอัตราแลกเปลี่ยนคือเส้นโค้งสีส้ม เราจะได้น้อยกว่า 1 หุ้นและสูญเสีย 100% อย่างไรก็ตาม หากอัตราแลกเปลี่ยนคือเส้นโค้งสีเขียวและได้รับหุ้น 5000 หุ้น การสูญเสียจากการปัดเศษจะถูกจำกัดไว้ที่สูงสุด 0.02%

ถ้าเราเน้นการ จำกัด ขาดทุน ที่สูงสุด 0.5% เราจะต้องซื้ออย่างน้อย 200 หุ้น การ์ดสีเขียวต้องการเพียงแค่ 20 โทเคน แต่การ์ดสีส้มต้องการ 200,000 โทเคน

จากตัวอย่างหลายตัวอย่าง สามารถวิเคราะห์ได้ว่าเส้นโค้งสีฟ้าและสีเขียวปลอดภัยกว่าเส้นโค้งสีเหลืองและส้ม และถูกออกแบบให้เป็นที่เก็บเงินที่ปลอดภัย

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

วิธีการโจมตี

การโจมตีเชิงเงินพิมพ์โดยส่วนใหญ่เป็นผ่านทางบริจาค

  1. ผู้โจมตีฝาก 1 โทเค็นเข้าสู่สัญญาที่มีคลังสินทรัพย์ เวลานี้หุ้นที่เขาได้รับคือ 1 และ totalSupply คือ 1
  2. ผู้โจมตีส่งโทเค็น 1e5 โดยตรงไปยังสัญญาที่เก็บเงิน เมื่อนี้ รวมสินทรัพย์ได้เปลี่ยนไปเป็น 1e5 + 1 แต่ totalSupply ยังคงเหมือนเดิม
  3. เมื่อเหยียบเข้าไป ยอด token น้อยกว่า 1e5 (x) จะได้รับหุ้นดังนี้: x * 1 / (1e5 + 1), กล่าวคือ ถ้า x มีค่าน้อยกว่า 1e5 ตามหลักของการปัดเศษลง หุ้นที่เหยียบได้คือ 0 แม้ว่าจำนวน token ที่เติมเข้าไปจะมากกว่า 1e5 โดยที่หุ้นที่มีค่าเดิมของผู้โจมตีคือ 100% ทำให้จำนวนหุ้นที่เสียไปของเหยียบมีการลดลงอย่างมีนัยสำคัญ

ป้องกันการโจมตี

มีวิธีการป้องกันการโจมตี 3 วิธี

  1. กำหนดความสะเทือน ก่อนหน้านี้เราได้แนะนำแนวคิดเกี่ยวกับความสะเทือน โดยการกำหนดช่วงความทนทานของความสะเทือน หากมันไม่ได้รับจำนวนที่คาดหวังภายในช่วงความทนทานของความสะเทือนบางอย่าง ธุรกรรมจะถูกย้อนกลับ นี่คือแบบแผนมาตรฐานสำหรับการจัดการกับปัญหาความสะเทือน
  2. เพิ่มสินทรัพย์เริ่มต้นให้เพียงพอในห้องนิรภัยเพื่อเพิ่มค่าใช้จ่ายในการโจมตี ฉันเคยเห็นวิธีนี้ในสัญญาปักหลัก Blast เมื่อเริ่มต้นการปักหลักสัญญาต้องมีจํานวน ETH และ USD ไม่น้อยกว่า 1,000
  3. เพิ่ม " likwiditas เสมือน " ในที่เก็บเพื่อให้การคำนวณราคาทำงานเสมือนว่ามีสินทรัพย์เพียงพอในที่เก็บ วิธีการป้องกันถูกแบ่งออกเป็น 2 ส่วน:
    • ความแตกต่างที่แม่นยำระหว่างหุ้นและสินทรัพย์
    • รวมหุ้นเสมือนและสินทรัพย์เสมือนลงในการคำนวณอัตราแลกเปลี่ยน

การนำไปปฏิบัติบางอย่างคือการเขียนโค้ด _decimalsOffset() ของ OpenZeppelin ใหม่ วิธีนี้ไม่ต้องตั้งค่าสลิปเพจหรือฉีดเงินเริ่มต้นเพียงพอ มันเป็นวิธีที่ดีมากในการต้านการโจมตีต่ออัตราเงินเฟ้อ

05 ต่อ

เป็นข้อเสนอหลอกลวงที่เป็นพื้นฐานอย่างสมบูรณ์ RC-4626 ไม่สามารถตอบสนองความต้องการทั้งหมดได้ บางข้อเสนอยังมีการปรับขนาดเพิ่มเติม เช่น ERC-7535 และ EIP-7540

ERC-7535

เหมือนกับที่กล่าวไว้แล้ว ERC-4626 สามารถใช้ ERC-20 เป็นสินทรัพย์ใต้หลักทรัพย์ได้เท่านั้น ข้อเสนอนี้ส่วนใหญ่อนุญาตให้สินทรัพย์ต้นฉบับใช้เป็นสินทรัพย์ใต้หลักทรัพย์ เช่น ETH ในหลุมเก็บเงิน

EIP-7540

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

บทบาทที่สามารถเกิดขึ้น:

  1. กระบวนการฝากและถอนเงินแบบไม่สม่ำสมอ: โดยการนำเสนอแนวคิด "คำขอ" กระบวนการการฝากและการถอนเงินแบบไม่สม่ำสมอสามารถทำได้ ซึ่งจะทำให้การดำเนินการเป็นไปอย่างยืดหยุ่นมากขึ้น
  2. การปรับปรุงประสบการณ์ผู้ใช้: ข้อเสนอเน้นความสำคัญของประสบการณ์ผู้ใช้และแนะนำให้มีการนำเข้ากลไกการค้นพบมาตรฐานเพื่อช่วยให้ผู้ใช้และแอปพลิเคชันด้านหน้าเข้าใจระยะเวลาและความล่าช้าของการดำเนินการแบบไม่เชื่อมต่อกันได้ดีขึ้น
  3. การขยายฟังก์ชัน: EIP-7540 ขยายความสามารถของ ERC-4626 โดยการเพิ่มวิธีการใหม่ ทำให้เป็นไปได้ที่จะขอเงินฝากและการแลกเปลี่ยนโดยไม่ต้องรอคอย และเพื่อดูสถานะของคำขอเหล่านี้

06 สรุป

ข้างต้นคือการวิเคราะห์ทั้งหมดของ ERC-4626

เนื่องจากเหตุผลทางประวัติศาสตร์มากมาย ทำให้มีที่เก็บรักษาข้อมูลหลายแห่งที่มีอยู่ในตลาดในปัจจุบันที่ไม่ปฏิบัติตาม ERC-4626 และยังคงดำเนินการต่อไป เช่น dForce แต่พวกเขาไม่สามารถนำไปใช้ได้อย่างกว้างขวางมากขึ้น บางที่เก็บรักษาข้อมูลบางแห่งได้รับการอัพเกรดเพื่อปฏิบัติตาม ERC-4626 แล้ว เช่นบางสัญญาจาก Aladdin DAO (https://github.com/AladdinDAO/deployments/blob/main/deployments.mainnet.md).

นอกจากการรับดอกเบี้ยผ่านการ stake เพื่อให้ได้เงินได้สิ่งที่แอปพลิเคชัน vault ยังสามารถให้ยืมหุ้นเป็นหลักทรัพย์หรือ stake อีกครั้งเพื่อสร้างรายได้ นอกจากนี้การระดมทุนผ่าน vaults ยังเป็นสถานการณ์การใช้งานที่ดี เนื่องจากฟังก์ชันพื้นฐานบางอย่างของมันสามารถให้การสนับสนุนที่ยอดเยี่ยม

สาระสําคัญของข้อเสนอนี้คือการปรับปรุงประสิทธิภาพการรวมระหว่างห้องนิรภัยและระบบนิเวศ DeFi และลดต้นทุนการพัฒนา บทบาทของห้องนิรภัยเองยังคงมีพื้นที่มากขึ้นสําหรับการสํารวจเมื่อตลาด DeFi เติบโตขึ้น

ข้อปฏิเสธ:

  1. บทความนี้ถูกคัดลอกมาจาก [LXDAO], All copyrights belong to the original author [Kahn]. หากมีข้อบกพร่องใด ๆ ในการพิมพ์ฉบับนี้ โปรดติดต่อGate Learnทีม และพวกเขาจะดำเนินการโดยเร็ว
  2. ข้อจํากัดความรับผิดชอบความรับผิด: มุมมองและความคิดเห็นที่แสดงในบทความนี้เป็นเพียงของผู้เขียนและไม่ถือเป็นคําแนะนําการลงทุนใด ๆ
  3. การแปลบทความเป็นภาษาอื่นๆ โดยทีม Gate Learn นอกจากที่กล่าวถึงไว้แล้ว การคัดลอก การแจกจ่าย หรือการลอกเลียนบทความที่ถูกแปลนั้น ถือเป็นการละเมิด
Mulai Sekarang
Daftar dan dapatkan Voucher
$100
!