อ่านเวลา: 6 นาที
ในบล็อกนี้ เราได้สรุปแนวคิดของโปรโตคอลการปักหลักสภาพคล่องและแนวทางการตรวจสอบสำหรับโปรโตคอลการปักหลัก แนวทางปฏิบัติครอบคลุมจุดที่เปราะบาง เช่น กลไกการถอน ข้อผิดพลาดในการปัดเศษ การเรียกจากภายนอก ลอจิกค่าธรรมเนียม ลูป โครงสร้าง ระยะเวลาการเดิมพัน ฯลฯ บล็อกโพสต์นี้จะเป็นข้อมูลอ้างอิงที่มีประโยชน์สำหรับการตรวจสอบโปรโตคอลการเดิมพัน และสามารถช่วยคุณระบุจุดบกพร่องที่อาจเกิดขึ้นได้ .
การเดิมพันสภาพคล่องคืออะไร?
การเดิมพันสภาพคล่องช่วยให้ผู้ใช้สามารถเดิมพันการถือครอง cryptocurrency และรับรางวัลโดยไม่ต้องเสียสละสภาพคล่อง แทนที่จะล็อคเหรียญไว้ตามระยะเวลาที่กำหนด ผู้ใช้สามารถรับโทเค็นของเหลวที่แสดงถึงสินทรัพย์ที่เดิมพันได้ โทเค็นนี้สามารถแลกเปลี่ยนหรือใช้งานได้เหมือนกับสกุลเงินดิจิตอลอื่น ๆ ทำให้ผู้ใช้สามารถใช้สินทรัพย์ได้ตามต้องการในขณะที่ยังคงได้รับรางวัลเดิมพัน
ตัวอย่างเช่น คุณมี 100 ETH คุณต้องการเดิมพันกับเครือข่าย Ethereum แทนที่จะล็อค ETH ของคุณเป็นระยะเวลาหนึ่ง คุณสามารถใช้บริการสภาพคล่องเช่น Lido เพื่อเดิมพัน ETH ของคุณและรับโทเค็นของเหลวที่เรียกว่า stETH เป็นการตอบแทน ด้วย stETH คุณยังสามารถแลกเปลี่ยนหรือใช้ ETH ที่เดิมพันของคุณในขณะที่รับรางวัลการเดิมพัน
เริ่มต้นด้วยการตรวจสอบสัญญาการปักหลัก:
ตรวจสอบข้อกำหนดการตรวจสอบทั้งหมดที่มีอยู่ก่อนที่จะเริ่มด้วยรหัสสัญญา ซึ่งอาจอยู่ในรูปแบบของเอกสารไวท์เปเปอร์ ไฟล์ README หรืออย่างอื่น สิ่งเหล่านี้จะช่วยให้คุณทราบว่ารหัสสัญญาจะประกอบด้วยอะไรบ้าง
เมื่อดูเอกสารข้อกำหนดการตรวจสอบสำหรับสัญญาเดิมพัน ให้มองหาประเด็นเหล่านี้:
- ประเภทของค่าธรรมเนียมตามและการคำนวณ
- กลไกการให้รางวัลสำหรับโทเค็นที่เดิมพัน
- อำนาจของเจ้าของ
- สัญญาจะถือ ETH หรือไม่?
- สัญญาจะถือโทเค็นอะไร
- สัญญาเดิมที่ถูกแยกออกจากกัน
ตรวจสอบว่าข้อมูลจำเพาะตรงกับรหัส เริ่มต้นด้วยค่าธรรมเนียมและโทเค็นโนมิก ตามด้วยการตรวจสอบสิทธิ์ของเจ้าของ ตรวจสอบว่ารางวัลและค่าธรรมเนียมทั้งหมดเป็นไปตามเอกสารประกอบ
จุดอ่อนที่ต้องมองหา?
1. กลไกการถอนรางวัล:
ตรวจสอบว่ามีการใช้กลไกการให้รางวัลโทเค็นการเดิมพันอย่างถูกต้อง และมีการแจกจ่ายรางวัลอย่างยุติธรรมและเป็นสัดส่วนแก่ผู้เดิมพันทั้งหมด โครงการสามารถแจกจ่ายรางวัลได้สองวิธี: โดยอัตโนมัติ เป็นงวด หรือตามคำขอของผู้ใช้เอง ฟังก์ชั่นการถอนสามารถนำมาใช้และปรับแต่งตามตรรกะทางธุรกิจของโปรโตคอล
ด้านล่างนี้คือจุดตรวจบางส่วน:
- ตรวจสอบว่าผู้ใช้สามารถถอนเงินได้มากกว่ารางวัล + จำนวนเงินเดิมพันหรือไม่
- ตรวจสอบ Overflow/Underflow ในการคำนวณจำนวนเงิน
- ตรวจสอบว่าพารามิเตอร์บางอย่างมีผลเสียต่อรางวัลระหว่างการคำนวณหรือไม่
- หากใช้ block.timestamp หรือ block.number ในฟังก์ชันนี้ ตรวจสอบว่าสามารถใช้ประโยชน์ในทางใดทางหนึ่งได้หรือไม่
2. ตรรกะค่าธรรมเนียม:
หากการฝากและถอนเงินมีค่าธรรมเนียม ให้ตรวจสอบว่าไม่มีผู้ใช้รายใดสามารถเลี่ยงค่าธรรมเนียมได้ นอกจากนี้ ระวังปัญหาล้นหรือน้อยที่อาจเกิดขึ้น เฉพาะผู้ดูแลระบบหรือเจ้าของเท่านั้นที่ควรได้รับอนุญาตให้แก้ไขการตั้งค่าค่าธรรมเนียม ตรวจสอบว่าเกณฑ์สำหรับค่าธรรมเนียมสูงสุดได้รับการกำหนดแล้ว เพื่อป้องกันไม่ให้ผู้ดูแลระบบตั้งค่าเป็นจำนวนเงินที่สูงเกินไป
3. กลไกการผลิต/เผาของ LP Token:
ตรวจสอบว่ามีการใช้กลไกการสร้างเหรียญกษาปณ์และการเผาไหม้อย่างถูกต้องหรือไม่ ฟังก์ชันเบิร์นควรย้อนกลับการเปลี่ยนแปลงสถานะทั้งหมดที่ทำโดยฟังก์ชันมิ้นต์ นอกจากนี้ สิ่งสำคัญคือต้องตรวจสอบว่าผู้ใช้ได้รับโทเค็นในจำนวนที่เหมาะสมระหว่างการเดิมพันครั้งแรก เมื่อพูลว่างเปล่า
ตรรกะของฟังก์ชัน minting และ burn สามารถตรวจสอบได้ทางคณิตศาสตร์เพื่อเปิดเผยช่องโหว่ที่ซ่อนอยู่ นอกจากนี้ อุปทานทั้งหมดของโทเค็น LP ที่สร้างขึ้นไม่ควรเกินสินทรัพย์ที่เดิมพัน
4. ข้อผิดพลาดในการปัดเศษ:
แม้ว่าโดยทั่วไปแล้วข้อผิดพลาดในการปัดเศษเล็กๆ น้อยๆ บางอย่างจะหลีกเลี่ยงไม่ได้และไม่ใช่เรื่องน่ากังวล แต่ก็สามารถเพิ่มขึ้นได้อย่างมากเมื่อเป็นไปได้ที่จะเพิ่มจำนวนขึ้น มองหากรณีขอบที่สามารถทำกำไรจากข้อผิดพลาดในการปัดเศษได้โดยการลงเดิมพันซ้ำแล้วซ้ำอีก
ในการตรวจสอบว่าข้อผิดพลาดในการปัดเศษสามารถสะสมเป็นจำนวนมากในช่วงเวลาที่ขยายออกไปหรือไม่ เราสามารถคำนวณช่วงของข้อผิดพลาดในการปัดเศษที่เป็นไปได้ทางคณิตศาสตร์
5. ระยะเวลาการเดิมพัน:
ตรวจสอบให้แน่ใจว่าการคำนวณระยะเวลาการเดิมพันในสัญญาสอดคล้องกับตรรกะทางธุรกิจที่ระบุ ตรวจสอบว่าผู้ใช้ไม่สามารถแลกรับรางวัลก่อนที่ระยะเวลาการเดิมพันจะสิ้นสุดลงโดยการข้ามการตรวจสอบระยะเวลา ตรวจสอบด้วยว่าผู้โจมตีสามารถใช้ระยะเวลาการเดิมพันเพื่อรับรางวัลมากขึ้นได้หรือไม่
6. การโทรภายนอกและการจัดการโทเค็น:
การโทรภายนอกส่วนใหญ่จะเป็นสัญญาโทเค็น ดังนั้น เราต้องพิจารณาว่าโทเค็นประเภทใดที่สัญญาเดิมพันจะจัดการ สิ่งสำคัญคือต้องตรวจสอบการโทรจากภายนอกเพื่อหาข้อผิดพลาดและการโจมตีซ้ำ โทเค็นเงินฝืดหรือโทเค็นที่มีค่าธรรมเนียมการโอน เช่น Safemoon อาจก่อให้เกิดปัญหาได้หากใช้ตรรกะไม่ถูกต้อง
7. การตรวจสอบการเปลี่ยนแปลงราคา:
การจัดการราคาผ่านเงินกู้แบบแฟลชเป็นหนึ่งในการแฮ็กโครงการ DeFi ที่พบบ่อยที่สุด อาจมีสถานการณ์ที่ผู้ไม่หวังดีสามารถใช้สินเชื่อแฟลชเพื่อควบคุมราคาระหว่างการปักหลักหรือถอนโทเค็นจำนวนมาก ตรวจทานฟังก์ชันการปักหลักและยกเลิกการปักหลักอย่างรอบคอบเพื่อหลีกเลี่ยงสถานการณ์ขอบที่อาจส่งผลให้เกิดการโจมตีด้วยการจัดการราคาโดยใช้สินเชื่อแฟลชและการสูญเสียเงินทุนของผู้ใช้รายอื่น
8. การตรวจสอบเพิ่มเติมบางอย่าง:
- ลูป: หากตรรกะของสัญญาเกี่ยวข้องกับการวนซ้ำบนอาร์เรย์ สิ่งสำคัญคือต้องแน่ใจว่าไม่เกินขีดจำกัดของบล็อกแก๊ส สิ่งนี้สามารถเกิดขึ้นได้เมื่อขนาดอาร์เรย์มีขนาดใหญ่มาก ดังนั้นคุณควรตรวจสอบว่าฟังก์ชันใดที่สามารถเพิ่มขนาดของอาร์เรย์ได้ และผู้ใช้รายใดสามารถใช้ประโยชน์จากมันเพื่อทำให้เกิดการโจมตี DoS ได้หรือไม่ ตรวจสอบสิ่งนี้ รายงาน.
- โครงสร้าง: สัญญาการเดิมพันใช้ประเภท struct เพื่อเก็บข้อมูลผู้ใช้หรือพูล เมื่อประกาศหรือเข้าถึงโครงสร้างภายในฟังก์ชัน สิ่งสำคัญคือต้องระบุว่าจะใช้ "หน่วยความจำ" หรือ "ที่เก็บข้อมูล" อาจช่วยให้เราประหยัดน้ำมันได้บ้าง สำหรับข้อมูลเพิ่มเติม โปรดดู บทความนี้.
- วิ่งหน้า: มองหาสถานการณ์ใดๆ ที่ผู้ประสงค์ร้ายสามารถดำเนินการธุรกรรมใด ๆ ล่วงหน้าเพื่อประโยชน์ของพวกเขา
- การมองเห็นฟังก์ชัน/การตรวจสอบการควบคุมการเข้าถึง: ฟังก์ชั่นใด ๆ ที่ประกาศเป็นภายนอกหรือสาธารณะสามารถเข้าถึงได้โดยทุกคน ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องแน่ใจว่าไม่มีหน่วยงานสาธารณะใดสามารถดำเนินการที่ละเอียดอ่อนได้ สิ่งสำคัญคือต้องตรวจสอบว่าโปรโตคอลการเดิมพันได้ใช้การควบคุมที่เหมาะสมเพื่อป้องกันการเข้าถึงทั้งเหรียญเดิมพันและโครงสร้างพื้นฐานของระบบโดยไม่ได้รับอนุญาต
- ความเสี่ยงจากการรวมศูนย์: สิ่งสำคัญคือต้องไม่ให้อำนาจแก่เจ้าของมากเกินไป หากที่อยู่ผู้ดูแลระบบถูกบุกรุก อาจทำให้โปรโตคอลเสียหายอย่างมาก ตรวจสอบว่าสิทธิ์ของเจ้าของหรือผู้ดูแลระบบเหมาะสม และตรวจสอบให้แน่ใจว่าโปรโตคอลมีแผนในการจัดการกับสถานการณ์ที่คีย์ส่วนตัวของผู้ดูแลระบบรั่วไหล
- การจัดการ ETH / WETH: สัญญามักจะมีตรรกะเฉพาะสำหรับการจัดการ ETH ตัวอย่างเช่น เมื่อ msg.value > 0 สัญญาอาจแปลง ETH เป็น WETH ในขณะที่ยังอนุญาตให้รับ WETH ได้โดยตรง เมื่อผู้ใช้ระบุ WETH เป็นสกุลเงิน แต่ส่ง ETH ไปพร้อมกับการเรียก การดำเนินการนี้อาจทำให้ค่าคงที่บางอย่างเสียหายและนำไปสู่พฤติกรรมที่ไม่ถูกต้อง
จนถึงตอนนี้ เราได้กล่าวถึงโปรโตคอลการวางเดิมพันสภาพคล่องและแนวทางการตรวจสอบสำหรับโปรโตคอลดังกล่าว โดยสรุป การเดิมพันสภาพคล่องช่วยให้ผู้ใช้ได้รับรางวัลการเดิมพันโดยไม่ต้องเสียสละสภาพคล่อง เราได้สรุปจุดที่เปราะบางในสัญญาเดิมพันที่ผู้ตรวจสอบต้องให้ความสนใจ เช่น กลไกการถอนเงิน ตรรกะค่าธรรมเนียม กลไกการสร้าง/การเผาไหม้โทเค็น LP ข้อผิดพลาดในการปัดเศษ ระยะเวลาการเดิมพัน การเรียกจากภายนอก และการตรวจสอบการปรับราคา
เราแนะนำให้ผู้ตรวจสอบตรวจสอบเอกสารข้อกำหนดการตรวจสอบ จับคู่ข้อมูลจำเพาะกับรหัส และตรวจสอบค่าธรรมเนียมและโทเคโนมิกส์ นอกจากนี้ เรายังแนะนำให้ตรวจสอบเพิ่มเติม เช่น การวนลูปบนอาร์เรย์ การระบุหน่วยความจำหรือที่เก็บข้อมูลสำหรับข้อมูลประเภทโครงสร้าง และสถานการณ์จำลองการทำงานส่วนหน้า หลักเกณฑ์เหล่านี้จะเป็นประโยชน์สำหรับการตรวจสอบโปรโตคอลการปักหลักและช่วยระบุจุดบกพร่องที่อาจเกิดขึ้น
11 เข้าชม
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- เพลโตบล็อคเชน Web3 Metaverse ข่าวกรอง ขยายความรู้. เข้าถึงได้ที่นี่.
- ที่มา: https://blog.quillhash.com/2023/03/10/guidelines-for-auditing-staking-protocols/
- :เป็น
- $ ขึ้น
- 100
- a
- สามารถ
- เข้า
- Accessed
- การเข้าถึง
- ตาม
- การปฏิบัติ
- นักแสดง
- เพิ่มเติม
- นอกจากนี้
- ที่อยู่
- ผู้ดูแลระบบ
- ความได้เปรียบ
- ทั้งหมด
- การอนุญาต
- ช่วยให้
- จำนวน
- และ
- ทุกคน
- เหมาะสม
- เป็น
- แถว
- AS
- สินทรัพย์
- At
- โจมตี
- การโจมตี
- ความสนใจ
- การตรวจสอบบัญชี
- การตรวจสอบบัญชี
- ผู้สอบบัญชี
- ผู้มีอำนาจ
- อัตโนมัติ
- ใช้ได้
- ตาม
- รากฐาน
- BE
- ก่อน
- เริ่ม
- การเริ่มต้น
- ปิดกั้น
- บล็อก
- ทำลาย
- เป็นโรคจิต
- เผา
- ธุรกิจ
- by
- คำนวณ
- การคำนวณ
- โทรศัพท์
- ที่เรียกว่า
- โทร
- CAN
- ไม่ได้
- รอบคอบ
- กรณี
- ก่อให้เกิด
- บาง
- การเปลี่ยนแปลง
- ตรวจสอบ
- การตรวจสอบ
- รหัส
- เหรียญ
- ที่ถูกบุกรุก
- แนวคิด
- กังวล
- บรรจุ
- สัญญา
- สัญญา
- ควบคุม
- การควบคุม
- แปลง
- ได้
- หน้าปก
- สำคัญมาก
- cryptocurrency
- เงินตรา
- การปรับแต่ง
- ข้อมูล
- Defi
- โครงการ defi
- ภาวะเงินฝืด
- ฝากเงิน
- กำหนด
- โดยตรง
- กล่าวถึง
- กระจาย
- กระจาย
- เอกสาร
- เอกสาร
- เอกสาร
- DOS
- ในระหว่าง
- ได้รับ
- รายได้
- ขอบ
- ทั้ง
- ทำให้มั่นใจ
- ข้อผิดพลาด
- จำเป็น
- ที่จัดตั้งขึ้น
- ฯลฯ
- ETH
- ethereum
- เครือข่าย ethereum
- ตัวอย่าง
- เกินกว่า
- เหลือล้น
- เอาเปรียบ
- ใช้ประโยชน์
- ภายนอก
- อย่างเป็นธรรม
- ค่าธรรมเนียม
- ค่าธรรมเนียม
- สองสาม
- ไฟล์
- ชื่อจริง
- การแก้ไข
- แฟลช
- เงินกู้แฟลช
- ตาม
- สำหรับ
- ฟอร์ม
- บ่อย
- ราคาเริ่มต้นที่
- ฟังก์ชัน
- ฟังก์ชั่น
- เงิน
- GAS
- ได้รับ
- ให้
- ขึ้น
- แนวทาง
- แฮ็ก
- จัดการ
- การจัดการ
- มี
- ช่วย
- ซ่อนเร้น
- จุดสูง
- ถือ
- โฮลดิ้ง
- HTTPS
- ความคิด
- แยกแยะ
- ส่งผลกระทบ
- การดำเนินการ
- สำคัญ
- in
- ประกอบด้วย
- เพิ่ม
- ข้อมูล
- โครงสร้างพื้นฐาน
- แทน
- สอบสวน
- ปัญหา
- IT
- ITS
- กุญแจ
- ใหญ่
- นำ
- ลิโด้
- กดไลก์
- LIMIT
- ของเหลว
- โทเค็นเหลว
- สภาพคล่อง
- เงินกู้
- เงินให้กู้ยืม
- ดู
- ที่ต้องการหา
- ปิด
- LP
- ทำ
- การจัดการ
- การจับคู่
- ในทางคณิตศาสตร์
- สูงสุด
- กลไก
- หน่วยความจำ
- อาจ
- ผู้เยาว์
- โรงกระษาปณ์
- มิ้นต์
- การทำเหรียญ
- ความผิดพลาด
- ข้อมูลเพิ่มเติม
- มากที่สุด
- เชิงลบ
- เครือข่าย
- จำนวน
- of
- on
- ONE
- อื่นๆ
- ที่ระบุไว้
- เจ้าของ
- กระดาษ
- พารามิเตอร์
- ชำระ
- ดำเนินการ
- ระยะเวลา
- เป็นระยะ
- สถานที่
- แผนการ
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- กรุณา
- จุด
- สระ
- เป็นไปได้
- โพสต์
- ที่มีศักยภาพ
- อำนาจ
- ป้องกัน
- การป้องกัน
- ราคา
- ราคา
- ส่วนตัว
- คีย์ส่วนตัว
- สิทธิ์
- ปัญหา
- กำไร
- โครงการ
- โปรโตคอล
- โปรโตคอล
- สาธารณะ
- พิสัย
- รับ
- ที่ได้รับ
- แนะนำ
- ไถ่ถอน
- ซ้ำแล้วซ้ำเล่า
- แสดงให้เห็นถึง
- ขอ
- ผล
- กลับ
- ย้อนกลับ
- ทบทวน
- รางวัล
- รางวัล
- ความเสี่ยง
- เสียสละ
- เซฟมูน
- ลด
- สถานการณ์
- มีความละเอียดอ่อน
- บริการ
- การตั้งค่า
- การตั้งค่า
- น่า
- สำคัญ
- อย่างมีความหมาย
- เดียว
- สถานการณ์
- ขนาด
- So
- บาง
- บางสิ่งบางอย่าง
- โดยเฉพาะ
- สเปค
- ข้อกำหนด
- ที่ระบุไว้
- เดิมพัน
- จับจอง
- เดิมพัน ETH
- ผู้เดิมพัน
- ปักหลัก
- Staking Enereum และ Kwhoin เพื่อผลตอบแทน
- ข้อความที่เริ่ม
- สถานะ
- steTH
- ยังคง
- การเก็บรักษา
- จัดเก็บ
- หรือ
- เป็นกอบเป็นกำ
- อย่างเช่น
- จัดหาอุปกรณ์
- ที่
- พื้นที่
- บล็อก
- ของพวกเขา
- พวกเขา
- ตัวเอง
- ดังนั้น
- ล้อยางขัดเหล่านี้ติดตั้งบนแกน XNUMX (มม.) ผลิตภัณฑ์นี้ถูกผลิตในหลายรูปทรง และหลากหลายเบอร์ความแน่นหนาของปริมาณอนุภาคขัดของมัน จะทำให้ท่านได้รับประสิทธิภาพสูงในการขัดและการใช้งานที่ยาวนาน
- ธรณีประตู
- เวลา
- การประทับเวลา
- ไปยัง
- โทเค็น
- โทเค็นโนมิกส์
- ราชสกุล
- รวม
- การค้า
- ซื้อขาย
- การทำธุกรรม
- โอน
- ชนิด
- เป็นปกติ
- เปิดเผย
- us
- ใช้
- ผู้ใช้งาน
- ผู้ใช้
- การตรวจสอบ
- ความคุ้มค่า
- ความคุ้มค่า
- การตรวจสอบแล้ว
- ตรวจสอบ
- ผ่านทาง
- ความอ่อนแอ
- อ่อนแอ
- ทาง..
- วิธี
- เปียก
- อะไร
- ว่า
- ที่
- ในขณะที่
- ขาว
- กระดาษสีขาว
- จะ
- กับ
- ถอนเงิน
- ถอนเงิน
- ภายใน
- ไม่มี
- คุณ
- ของคุณ
- ลมทะเล