Skip to content

14two-77/DeFi-Lending

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

Note

โจทย์เริ่มแรกของโปรเจค

ทำ smart contract การกู้เงินโดยมี

  • ผู้กู้
  • ผู้ให้ยืม
  • การชำระหนี้
  • การยึดทรัพย์เมื่อไม่ชำระหนี้ให้ทันเวลา

DeFi Lending Docs

ระบบมี 2 ฝั่งคือผู้ปล่อยกู้กับผู้กู้ โดยผู้กู้จะกู้เงิน (ETH) จากกองกลางที่มาจากผู้ปล่อยกู้ทั้งหมด และต้องค้ำประกันโดยใช้โทเคน MarginToken (MGT) ในอัตราทำกำหนดไว้ (MarginRate) หากผู้กู้ไม่ชำระในระยะเวลาที่กำหนด (BorrowPeriod) จะถูกยึดหลักทรัพย์ค้ำประกันไป | ผู้กู้แต่ละบัญชีสามารถกู้ทบกันได้หลายครั้ง โดยแยกเวลาที่ต้องชำระคืนเป็นต่างหาก

Note

จากนี้จะเรียกหลักค้ำประกันเป็น Token แทน MarginToken

หากเพิ่ม Token ใน Metamask จะขึ้นเป็นหน่วยเต็ม ซึ่งเป็นทศนิยม 18 หลัก แต่ในการใช้งาน Smart contract จะเป็นหน่วยเดียวกันทั้งหมดไม่มีทศนิยม (เพราะไม่ได้ตั้งค่าอะไรนอกจากชื่อ MGT)

สิ่งที่ต้องพัฒนาต่อเพราะทำไม่ได้ในตัว Smart contract เอง

  • การยึดหลักทรัพย์ค้ำประกันอัตโนมัติเมื่อเลยเวลาชำระหนี้ (ปัจจุบันเมื่อชำระหนี้แม้ไม่เรียกฟังก์ชัน Margin_call มาก่อนก็ยังสามารถป้องกันการชำระหนี้ที่เลยกำหนดได้ เนื่องจากบล็อคนั้นจะถือว่าล้มเหลวไป) => สถานการณ์จริงต้องใช้โปรแกรมภายนอกในภาษาโปรแกรมอื่นคอยเรียกใช้ฟังก์ชัน Margin_call ทุกครั้งก่อนที่จะเรียกดูข้อมูลหรือชำระหนี้เพื่อให้แสดงข้อมูลเป็นล่าสุด
  • การที่ฟังก์ชันต่างๆรับหรือแสดงค่าเป็นคนละหน่วยกันระหว่าง Ether และ Wei => สถานการณ์จริงควรมีหน้าเว็บไซต์ แล้วเมื่อใช้งานตัวเว็บไซต์ค่อยเรียกใช้งานฟังก์ชัน Smart contract อีกที ซึ่งจะทำให้สามารถแปลงหน่วยได้บนเว็บไซต์ที่เป็นตัวเชื่อมระหว่างผู้ใช้กับ Smart contract

ฟังก์ชั่นต่างๆ

เกี่ยวกับ Token

Get_Free_Token

  • เสก {Token} ขึ้นมาให้กับบัญชีตัวเอง

Check_Token

  • ตรวจสอบ Token ที่มีในบัญชี {ใส่เป็น Public address}

ผู้ฝากเงิน

deposit

  • ฝากเป็น ETH {ใส่เป็นหน่วย Ether}

withdraw

  • ถอนเป็น ETH {ใส่เป็นหน่วย Wei}

Check_Balance

  • ตรวจสอบยอดเงินในบัญชี (เป็นหน่วย Wei) {ใส่เป็น Public address}

ผู้กู้

borrow

  • กู้เงินเป็น ETH {ใส่เป็นหน่วย Wei} โดยใช้ Token ค้ำประกัน

repay

  • ชำระหนี้เป็น ETH {ใส่เป็นหน่วย Ether} และได้รับ Token คืน

Check_Dept

  • ตรวจสอบยอดหนี้ที่ค้างชำระ (เป็นหน่วย Wei) {ใส่เป็น Public address}

ผู้ดูแล (สามารถเพิ่มผู้ใช้งานได้)

SetMagin

  • ตั้งค่าอัตราค้ำประกันในหน่วยเปอร์เซ็นต์ {ใส่เป็นเลขจำนวนเต็มไม่ใส่ %} เช่น ตั้งเป็น 150 หากกู้ 100 ETH ต้องค้ำประกันด้วย Token จำนวน 150 เหรียญ (150% ของ เงินที่กู้)

SetBorrowPeriod

  • ตั้งค่าระยะเวลาที่ต้องชำระหนี้ก่อนจะถูกยึดทรัพย์ (Token) {หน่วยเป็นวินาที}

MarginRate

  • ตรวจสอบอัตราค้ำประกัน (%)

BorrowPeriod

  • ตรวจสอบระยะเวลาชำระหนี้ (วินาที)

Check_All_Dept

  • ตรวจสอบจำนวนหนี้ทั้งหมดในระบบ (ETH เป็นหน่วย Wei)

Check_Confiscated_Token

  • ตรวจสอบจำนวนหลักทรัพย์ค้ำประกันทั้งหมดที่ยึดมาได้ (Token)

ผู้ดูแลระดับสูง (บัญชีที่ deploy Smart contract)

SetToken

  • ตั้งค่าลิงก์ไปหา Smart contract ของ Token {ใส่เป็น Public address}

ระบบอัตโนมัติ

  • สำหรับการใช้โปรแกรมอื่นคอยยิง api มาให้ทำงาน หรือใช้งานเองก่อนดูข้อมูลหนี้และชำระหนี้

Margin_call

  • ตรวจสอบยอดค้างชำระทั้งหมด หากส่วนไหนเกินระยะเวลาชำระหนี้จะยึดหลักทรัพย์และลบประวัติการกู้ครั้งนั้น (หากบัญชีไหนจะชำระหนี้จะใช้ฟังก์ชันนี้ตรวจสอบประวัติก่อนอัตโนมัติ แต่ไม่สามารถอัพเดตข้อมูลได้)

ลิงก์ต่างๆ