Announcement เปลี่ยนจากตรงนี้
สวัสดีครับเนื่องจากมีคนถามเข้ามากันเยอะมากถึงเกี่ยวกับการที่จะตรวจสอบว่าแพลทฟอร์ม DeFi ต่าง ๆ ว่าปลอดภัยแค่ไหน รวมไปถึงกรณีที่หากเเพลทฟอร์มปิดตัวลงเราจะยิงคำสั่งผ่าน Smart Contract อย่างไร ซึ่งจริง ๆ แล้วทางเราขอเรียนให้ทราบตามตรงว่ามันไม่มีสูตรสำเร็จใด ๆ ที่จะสามารถตรวจสอบได้ว่า Platform DeFi ใด ๆ จะไม่มีความเสียหายเกิดขึ้น แม่แต่การตรวจสอบ SmartContract เองนั้นก็จำเป็นจะต้องให้ Developer ที่มีความเชี่ยวชาญหรือทีม Audit ตรวจสอบเท่านั้น (แต่ก็ไม่ 100% เสมอไปเช่นกัน)
เช็ครายชื่อใน DeFiPulse (Ethereum) และ DeFiStation (Binance Smart Chain) นั้นจะเป็นเหมือนแหล่งอ้างอิงที่บอกว่าแต่ละแพลทฟอร์มนั้นเปิดมานานเท่าไหร่และมีมูลค่าเท่าไหร่ (Total Value Lock) แม้การที่แพลทฟอร์มเปิดมานานจะไม่ได้หมายความว่ามันจะไม่มีข้อผิดพลาดในอนาคต แต่มันก็ป็นสิ่งที่พิสูจน์ได้ว่าการทำงานหลักของมันสามารถทำงานได้โดยไม่มีข้อผิดพลาดเป็นเวลานาน และการที่มีคนฝากเงินเข้าไปมากก็บ่งบอกถึงการที่คนเชื่อถือในแพลทฟอร์มนั้น
อีกวิธีการหนึ่งที่คือการตรวจสอบว่าแพลทฟอร์ม DeFi นั้นมีบริษัท Audit เข้ามาตรวจสอบหรือไม่ โดยเราสามารถดูได้ใน Blog หรือ Documentation ของโครงการนั้นอย่างไรบางครั้งก็มี Team Audit ที่ไม่ค่อยมีชื่อเสียงเท่าไหร่ที่ทำการตรวจสอบโครงการนั้น แม้ว่าจะดีกว่าไม่มีแต่มันก็ไม่ได้แปลว่าน่าเชื่อถือซะทีเดียว
Note: แพลทฟอร์ม IceCreamSwap นั้นมีทีมที่ Audit ซึ่งเป็น Team No Name ซึ่งสุดท้ายโครงการก็มีช่องโหว่เกิดขึ้น
Note2: แม้ว่าจะเป็นทีมที่น่าเชื่อถือก็ไม่ใช่ว่าจะไม่มีข้อผิดพลาดอย่างทีม Certik ที่เป็น Audit ที่มีชื่อเสียงก็เคยตรวจโครงการ Cover และสุดท้ายก็มีช่องโหว่ที่หลุดรอดไป
Note: แม้จะตรวจสอบตาม Guide นี้แล้วก็ไม่ได้แปลว่าแพลทฟอร์มปลอดภัย เป็นเพียงการยกตัวอย่างเท่านั้น
ก่อนอื่นแล้วเราสามารถดูโค้ดที่เป็น Contract ของ DeFi แพลทฟอร์มได้ด้วยการเข้าไปที่ Bscscan หรือ Etherscan แล้วค้นชื่อ Contract นั้นซึ่งถ้าไม่แน่ใจสามารถหา Contract ได้จาก Coinmarketcap หรือ Coingecko (แต่ส่วนมากแล้วแพลทฟอร์มเปิดใหม่จะยังไม่ลิสขึ้นแพลทฟอร์มเหล่านี้อาจจะต้องค้นเอาจากใน Doc หรือตัว Contract โดยตรง)
จุดที่ต้องสังเกตุ
อีกตัวอย่างหนึ่งคือการอัพเกรด Proxy ที่ทำให้แอดมินสามารถเปลี่ยน Logic ได้ตลอดเวลา
ตัวอย่างเช่น Contract ของ PancakeSwap ให้เราดูที่ Contract Owner ให้เราคลิกเข้าไป
เราจะพบกับ Contract ชื่อ Timelock ให้เราหาฟังชั่น Delay ว่ามีค่าเท่าใดแล้วหารด้วย 3600 จะได้เท่ากับชั่วโมงของ Timelock
ในกรณีที่หน้าเวปหรือ UI ของแพลทฟอร์ม DeFi นั้นเกิดปัญหาใดๆเกิดขึ้นหาก Smart Contract ทำงานอย่างถูกต้องเงินของเราจะไม่ได้หายซึ่งเราสามารถยิง Contract ไปถอน LP และถอนออกมาเป็นคู่เหรียญได้
โดยหลักการแล้วเวลาเราเอา LP ไป Stake ที่ Farm DeFi ใดๆก็ตาม เราจะต้องทำการ Interact กับ Contract ตัวหนึ่งซึ่งใน Contract นี้มักจะมีฟังชั้น Emergency Withdraw อยู่ให้เราสามารถถอน LP ได้โดยเราต้องหาเลข Pool ID ที่เราลง LP ให้เจอแล้วไปสั่งให้คำสั่ง Excute
โดยเราจะยกตัวอย่าง apeswap (ปัจจุบันโดน Audit แล้วมีความปลอดภัยระดับหนึ่ง) ว่าถ้าเรา Stake LP เข้าไปจะถอนผ่าน Smart Contract ยังไง
1.ก่อนอื่นคือให้เราเปิด BSCScan แล้วหา Transaction ที่เราทำการ Stake LP เข้าไปให้เจอครับ
2. ทีนี้สิ่งที่เราต้องทำคือการหาเลข Pool ID ที่ตรงกับ LP ที่เราฝากเข้าไป โดยเข้าไปตรง Read แล้วดูที่ช่อง Pool Info ซึ่งเราต้องลองใส่เลข 0 1 2 ไปเรื่อยเพื่อหาว่า Pool ID ที่เราลง LP คือเลขอะไร
3. เราสามารถหาเลข Contract ของ LP ได้ใน transacion เดียวกันกับที่เรา Stake จำไว้และให้ลองใส่เลข 0 1 2 จนกว่าจะเจอ Contract ที่ตรงกัน
4. จากในตัวอย่างผมฝาก BNB-BANANA ซึ่งตรงกับ Pool ID 1 จะเห็นว่าเลข LP Token ตรงกับ Contract ของ LP
5. ไปที่ Write ในหน้า Contract เดียวกันมองหากด Connect web 3.0 ด้วย Metamask แล้วมองหา Functtion ที่ชื่อว่า emergencyWithdraw ใส่เลข pool id ลงไปจากตัวอย่างคือ 1 แล้วกด Write
6. Confirm ใน Metamask แล้วรอ Confirm เราจะได้ LP กลับมาเอาไปถอนใน pancake ได้
อย่างไรก็ตามอันนี้เป็นกรณีที่แพลทฟอร์มนั้น Contract เขียนมาอย่างถูกต้องและอนุญาตให้ถอนได้เท่านั้น บางแพลทฟอร์มอาจจะสอดไส้อย่างกรณี Bullfarm และ Meerkat
และสำหรับใครที่รู้สึกว่ายุ่งยาก ได้มีคนไทยในคอมมูนิตี้ DeFi ได้สร้างแพลทฟอร์มที่ชื่อว่า JediYield ขึ้นมาเพื่อแก้ปัญหากรณีต่างๆที่เกิดขึ้นลองไปเล่นกันได้ที่ https://jediyield.com/
ทีนี้เราจะมาดูกรณีศึกษาเรื่องการที่ Smart Contract เกิดปัญหากันหน่อยดีกว่าว่าแต่ละรูปแบบมีผลกระทบออะไรอย่างไรบ้าง
MakerDao
ช่วง Black Friday ในเดือนมีนาคม 2020 ที่ผ่านมาได้เกิดการ Crash ของตลาด Crypto ครั้งใหญ่ส่งผลทำให้ราคา Crypto มากมายปรับตัวลดลง ทำให้เกิดหนี้เสียใน MakerDao เนื่องจาก Ethereum ที่ค้ำประกันนั้นเกิดการ Liquidate จากการที่มันราคาลดลงกระทันหัน
โดยปกติอัตราส่วนของ Ethereum จะมากกว่าเหรียญ Dai ที่กู้เพื่อป้องกันการ Liquidate แต่เมื่อราคา Ethereum ลดลงอย่างรวดเร็วทำให้เกิดการ Liquidate และนำ Ethereum นั้นไปประมูลขาย ปรากฎว่าเนื่องจากในเวลานั้นราคา Ethereum นั้นผันผวนมากทำให้มีช่องว่างให้คนสามารถประมูล Ethereum จำนวนหนึ่งไปที่ราคา 0 ได้
ผลก็คือเกิดหนี้เสียราว 28 ล้านดอลลาร์ขึ้นมาในระบบ โดยเครือข่ายของ MakerDao แก้ไขปัญหานี้ด้วยการเสกเหรียญ MKR ขึ้นมาแล้วขายในจำนวนเทียบเท่ากับหนี้เสีย ซึ่งวิธีนี้คล้ายกับการที่เมื่อรัฐบาลก่อหนี้ก็สร้างพันธบัตรมารองรับหนี้หรือปล่อยให้มันกลายเป็นหนี้สาธารณะ
Asuka Finance
Asuka finance เป็นแพลทฟอร์ม DeFi ที่เปิดตัวได้ไม่นานใน Ethereum โดย Fork มาจาก YFI ซึ่งการที่จะฟาร์มได้ต้องฝากเหรียญ Asuka:Dai ในอัตราส่วน 98:2 โดยในตัว Contract ของ Asuka นั้นไม่มีปัญหาอะไร Contract ถูกเขียนไว้อย่างถูกต้อง
หลังจากเจ้าของเปิดแพลทฟอร์มได้ไม่นานก็ทำการปิด UI หน้าเวปทิ้ง แม้ว่าเงินส่วนใหญ่นั้นสามารถยิง Smart Contract เพื่อถอน LP ออกมาได้แต่เนื่องจากคนส่วนมากไม่มีความรู้เจ้าของจึงใช้ช่วงเวลานั้นเทขายเหรียญ Asuka คนเดียว
BullFarm
Bullfarm เป็นแพลทฟอร์ม DeFi ที่เปิดตัวได้ไม่นานใน Binance Smart Chain เจ้าของ BullFarm เรียกฟังชันหนึ่งที่แอบใส่ไว้ใน Smart Contract ที่ทำให้สามารถโอนเงินในกระเป๋าของผู้เสียหายได้แล้วสั่งโอน vBTCB ออกจากกระเป๋าผู้เสียหาย คนร้ายนำเหรียญ vBTCB ที่ขโมยมา ไปแลกคืนเป็น BTCB ที่เว็บ Venus แล้วขายทิ้งทำให้ผู้ใช้งานเสียเงินไปกว่า 5 BTC
MeerKat Finance
Meerkat เป็นแพลทฟอร์ม DeFi ที่เปิดตัวได้ไม่นานใน Binance Smart Chain โดยส่วนใหญ่แล้วเจ้าของโครงการ DeFi จะสามารถแก้ไข Contract ของแพลทฟอร์มได้แต่จะมี Timelock ว่าต้องรอเวลานานเท่าไหร่กว่าโค้ดจะทำงาน เจ้าของ Meerkat ตั้งใจวางกับดักด้วยการเนียนแก้ตัวแปรใน Timelock จาก “0” เป็น “O”
เจ้าของจึงสามารถแก้ไขแพลทฟอร์มสร้างช่องโหว่ทำให้สามารถขโมยเงินไปได้ อย่างไรก็ตามดูเหมือนว่าเรื่องจะไปถึง Binance และมีการเพ่งเล็ง Address ที่ทำการขโมยเงินทำให้เจ้าของต้องประกาศคืนเงินที่ขโมยมาในภายหลัง
สรุปกรณีศึกษาทั้ง 4 อย่าง
อ่านย้อนหลังตอนก่อนหน้า
DeFi WTF!! Guide Book เส้นทางสู้การเป็นชาวนาดิจิทัล ตอนที่ 1 ปรับ Mindset ก่อนลงทุนใน DeFi