Lição 2

ปัญหาด้านความปลอดภัยกับ Yield Aggregators

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

ตัวอย่างจริงๆ ของการละเมิดความปลอดภัย

  1. Yearn Finance Hack (กุมภาพันธ์ 2021)
    • เหตุการณ์: ที่เก็บ Yearn Finance's v1 DAI สูญเสีย $11 ล้านเนื่องจากการโจมตีที่ซับซ้อนและหลายรายการทำร้ายกลยุทธ์ของที่เก็บ
    • บทเรียน: สิ่งนี้ย้ำถึงความจำเป็นของการเข้าใจละเอียดและการทดสอบว่าส่วนประกอบของสัญญาต่าง ๆ มีปฏิสัมพันธ์กันอย่างไรในสถานการณ์ต่าง ๆ
  2. การแฮก Pickle Finance (พฤศจิกายน 2020)
    • เหตุการณ์: ผู้โจมตีใช้ช่องโหว่ของสมาร์ทคอนแทรคใน Pickle Finance ซึ่งทำให้เกิดความสูญเสียมูลค่า 20 ล้านดอลลาร์
    • บทเรียน: สิ่งนี้เน้นความสำคัญของการตรวจสอบรหัสอย่างละเอียดและการตรวจสอบสำหรับปฏิสัมพันธ์ของสัญญาที่ไม่ปกติ
  3. BarnBridge แฮ็ก (เมษายน 2021)
    • เหตุการณ์: ช่องโหว่ในสมาร์ทคอนแทรคของ BarnBridge ถูกใช้ประโยชน์ โดยทำให้เกิดความสูญเสียมากมาย
    • บทเรียน: การเน้นความจำเป็นของการออกแบบสัญญาอัจฉริยะที่แข็งแรงและความเสี่ยงที่เกี่ยวข้องกับเครื่องมือการเงินที่ซับซ้อนใน DeFi
  4. การโจมตี ForceDAO (เมษายน 2021)
    • เหตุการณ์: ผู้โจมตีใช้ประโยชน์จากสัญญา xFORCE ของ ForceDAO ทำให้พวกเขาสามารถถอนโทเค็นอย่างไม่ถูกกฎหมาย
    • บทเรียน: แสดงให้เห็นถึงความจำเป็นที่สำคัญของการตรวจสอบความปลอดภัยอย่างเคร่งครัดและการทดสอบอย่างเข้มงวดเพื่อการระบุและลดลงโอกาสเกิดช่องโหว่

วิธีปฏิบัติที่ดีที่สุดในด้านความปลอดภัยและกลยุทธ์การเขียนโค้ด:

1.การทดสอบและตรวจสอบอย่างเชี่ยวชาญ

  • ปฏิบัติที่ดีที่สุด: ทำการทดสอบอย่างแพร่หลายอย่างสม่ำเสมอและค้นหาการตรวจสอบภายนอก
  • ตัวอย่างการเข้ารหัส: การใช้การทดสอบใน Solidity เพื่อตรวจสอบช่องโหว่ทั่วไปและรับรองความสมบูรณ์ของสัญญา
// ตัวอย่างการทดสอบสำหรับการตรวจสอบยอดคงเหลือสัญญา TestYieldAggregator { YieldAggregator aggregator = new YieldAggregator(); ฟังก์ชัน testInitialBalance() สาธารณะ { uint expected = 0; ยืนยันว่า (aggregator.getBalance(address(this)) == ค่าที่คาดหวัง); } }

testInitialBalance(): ฟังก์ชันนี้เป็นส่วนหนึ่งของสัญญาทดสอบสำหรับ Yield Aggregator มันตรวจสอบว่ายอดเงินเริ่มต้นของตัวรวมสำหรับที่อยู่ที่ระบุตรงกันคือตามที่คาดหวัง (ในกรณีนี้คือศูนย์) สิ่งสำคัญสำหรับการให้ความแน่ใจว่าสัญญาเริ่มต้นได้ถูกต้องและรักษาบัญชีที่แม่นยำ

2.ความง่ายและความโมดูลาริตี้:

  • การปฏิบัติที่ดีที่สุด: ออกแบบสัญญาให้เป็นแบบเรียบง่ายและโมดูลาร์
  • ตัวอย่างการเข้ารหัส: การจัดโครงสร้างสัญญาในลักษณะที่แยกฟังก์ชันการทํางานที่แตกต่างกัน
การออกแบบสัญญาแบบแยกส่วน contract InvestmentStrategy {// Strategy logic}contract YieldAggregator {// Integrating different strategiesfunction setStrategy(InvestmentStrategy _strategy) external { // Logic for setting strategy}}

setStrategy(InvestmentStrategy _strategy): ในสัญญาณ Yield Aggregator ฟังก์ชันนี้ช่วยในการเปลี่ยนกลยุทธ์การลงทุน มันยอมรับสัญญาณกลยุทธ์การลงทุนเป็นพารามิเตอร์ ทำให้เอเกรเกตเตอร์สามารถอัปเดตกลยุทธ์ได้แบบโมดูลาร์ การออกแบบนี้เสริมความสามารถในการบำรุงรักษาและการปรับเปลี่ยนตามกลยุทธ์ที่แตกต่างกัน

3.วงจรหักหรือล็อคเวลา:

  • ปฏิบัติที่ดีที่สุด: ดำเนินการหยุดฉุกเฉินและอัปเดตอย่างช้า
  • ตัวอย่างการเขียน: เพิ่มคุณสมบัติในการหยุดการดำเนินการของสัญญาและบังคับการล่าช้าในฟังก์ชันที่สำคัญ
// การปรับใช้วงจรตัดสินใจคณะกรรมการ YieldAggregator {bool public stopped = false;// ฟังก์ชั่นหยุดฉุกเฉินfunction stopContract() external {    stopped = true;}}// การปรับใช้ล็อกเกียร์เวลาcontract Timelock {// ตรรกะสำหรับ การจำกัดตามเวลา บน ฟังก์ชัน}

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

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

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 2

ปัญหาด้านความปลอดภัยกับ Yield Aggregators

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

ตัวอย่างจริงๆ ของการละเมิดความปลอดภัย

  1. Yearn Finance Hack (กุมภาพันธ์ 2021)
    • เหตุการณ์: ที่เก็บ Yearn Finance's v1 DAI สูญเสีย $11 ล้านเนื่องจากการโจมตีที่ซับซ้อนและหลายรายการทำร้ายกลยุทธ์ของที่เก็บ
    • บทเรียน: สิ่งนี้ย้ำถึงความจำเป็นของการเข้าใจละเอียดและการทดสอบว่าส่วนประกอบของสัญญาต่าง ๆ มีปฏิสัมพันธ์กันอย่างไรในสถานการณ์ต่าง ๆ
  2. การแฮก Pickle Finance (พฤศจิกายน 2020)
    • เหตุการณ์: ผู้โจมตีใช้ช่องโหว่ของสมาร์ทคอนแทรคใน Pickle Finance ซึ่งทำให้เกิดความสูญเสียมูลค่า 20 ล้านดอลลาร์
    • บทเรียน: สิ่งนี้เน้นความสำคัญของการตรวจสอบรหัสอย่างละเอียดและการตรวจสอบสำหรับปฏิสัมพันธ์ของสัญญาที่ไม่ปกติ
  3. BarnBridge แฮ็ก (เมษายน 2021)
    • เหตุการณ์: ช่องโหว่ในสมาร์ทคอนแทรคของ BarnBridge ถูกใช้ประโยชน์ โดยทำให้เกิดความสูญเสียมากมาย
    • บทเรียน: การเน้นความจำเป็นของการออกแบบสัญญาอัจฉริยะที่แข็งแรงและความเสี่ยงที่เกี่ยวข้องกับเครื่องมือการเงินที่ซับซ้อนใน DeFi
  4. การโจมตี ForceDAO (เมษายน 2021)
    • เหตุการณ์: ผู้โจมตีใช้ประโยชน์จากสัญญา xFORCE ของ ForceDAO ทำให้พวกเขาสามารถถอนโทเค็นอย่างไม่ถูกกฎหมาย
    • บทเรียน: แสดงให้เห็นถึงความจำเป็นที่สำคัญของการตรวจสอบความปลอดภัยอย่างเคร่งครัดและการทดสอบอย่างเข้มงวดเพื่อการระบุและลดลงโอกาสเกิดช่องโหว่

วิธีปฏิบัติที่ดีที่สุดในด้านความปลอดภัยและกลยุทธ์การเขียนโค้ด:

1.การทดสอบและตรวจสอบอย่างเชี่ยวชาญ

  • ปฏิบัติที่ดีที่สุด: ทำการทดสอบอย่างแพร่หลายอย่างสม่ำเสมอและค้นหาการตรวจสอบภายนอก
  • ตัวอย่างการเข้ารหัส: การใช้การทดสอบใน Solidity เพื่อตรวจสอบช่องโหว่ทั่วไปและรับรองความสมบูรณ์ของสัญญา
// ตัวอย่างการทดสอบสำหรับการตรวจสอบยอดคงเหลือสัญญา TestYieldAggregator { YieldAggregator aggregator = new YieldAggregator(); ฟังก์ชัน testInitialBalance() สาธารณะ { uint expected = 0; ยืนยันว่า (aggregator.getBalance(address(this)) == ค่าที่คาดหวัง); } }

testInitialBalance(): ฟังก์ชันนี้เป็นส่วนหนึ่งของสัญญาทดสอบสำหรับ Yield Aggregator มันตรวจสอบว่ายอดเงินเริ่มต้นของตัวรวมสำหรับที่อยู่ที่ระบุตรงกันคือตามที่คาดหวัง (ในกรณีนี้คือศูนย์) สิ่งสำคัญสำหรับการให้ความแน่ใจว่าสัญญาเริ่มต้นได้ถูกต้องและรักษาบัญชีที่แม่นยำ

2.ความง่ายและความโมดูลาริตี้:

  • การปฏิบัติที่ดีที่สุด: ออกแบบสัญญาให้เป็นแบบเรียบง่ายและโมดูลาร์
  • ตัวอย่างการเข้ารหัส: การจัดโครงสร้างสัญญาในลักษณะที่แยกฟังก์ชันการทํางานที่แตกต่างกัน
การออกแบบสัญญาแบบแยกส่วน contract InvestmentStrategy {// Strategy logic}contract YieldAggregator {// Integrating different strategiesfunction setStrategy(InvestmentStrategy _strategy) external { // Logic for setting strategy}}

setStrategy(InvestmentStrategy _strategy): ในสัญญาณ Yield Aggregator ฟังก์ชันนี้ช่วยในการเปลี่ยนกลยุทธ์การลงทุน มันยอมรับสัญญาณกลยุทธ์การลงทุนเป็นพารามิเตอร์ ทำให้เอเกรเกตเตอร์สามารถอัปเดตกลยุทธ์ได้แบบโมดูลาร์ การออกแบบนี้เสริมความสามารถในการบำรุงรักษาและการปรับเปลี่ยนตามกลยุทธ์ที่แตกต่างกัน

3.วงจรหักหรือล็อคเวลา:

  • ปฏิบัติที่ดีที่สุด: ดำเนินการหยุดฉุกเฉินและอัปเดตอย่างช้า
  • ตัวอย่างการเขียน: เพิ่มคุณสมบัติในการหยุดการดำเนินการของสัญญาและบังคับการล่าช้าในฟังก์ชันที่สำคัญ
// การปรับใช้วงจรตัดสินใจคณะกรรมการ YieldAggregator {bool public stopped = false;// ฟังก์ชั่นหยุดฉุกเฉินfunction stopContract() external {    stopped = true;}}// การปรับใช้ล็อกเกียร์เวลาcontract Timelock {// ตรรกะสำหรับ การจำกัดตามเวลา บน ฟังก์ชัน}

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

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

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.