Skip to content

TGODTH/DeFi-Lending

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

DeFi Lending Docs
    ระบบมี 2 ฝั่งคือผู้ปล่อยกู้กับผู้กู้ โดยผู้กู้จะกู้เงิน (ETH) จากกองกลางที่มาจากผู้ปล่อยกู้ทั้งหมด และต้องค้ำประกันโดยใช้โทเคน MarginToken (MGT) ในอัตราทำกำหนดไว้ (MarginRate) หากผู้กู้ไม่ชำระในระยะเวลาที่กำหนด (BorrowPeriod) จะถูกยึดหลักทรัพย์ค้ำประกันไป | ผู้กู้แต่ละบัญชีสามารถกู้ทบกันได้หลายครั้ง โดยแยกเวลาที่ต้องชำระคืนเป็นต่างหาก
*จากนี้จะเรียกหลักค้ำประกันเป็น 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
 ตรวจสอบยอดค้างชำระทั้งหมด หากส่วนไหนเกินระยะเวลาชำระหนี้จะยึดหลักทรัพย์และลบประวัติการกู้ครั้งนั้น (หากบัญชีไหนจะชำระหนี้จะใช้ฟังก์ชันนี้ตรวจสอบประวัติก่อนอัตโนมัติ แต่ไม่สามารถอัพเดตข้อมูลได้)


ลิกง์ต่างๆ
-Smart contract หลักที่ใช้งาน (อยู่บน Sepolia testnet)
https://sepolia.etherscan.io/address/0x1b53580b0ffae3fda1d140083c558876e862a24d#readContract

-เว็บแปลงหน่วยระหว่าง Ether และ Wei
https://eth-converter.com/

-Smart contract ของ Token MGT (อยู่บน Sepolia testnet, ไม่เกี่ยวกับการใช้งาน)
https://sepolia.etherscan.io/address/0x8008ed5bbd8a709611aeb52ab4348ece1570d551#readContract


โจทย์ของโปรเจค - ทำ smart contract การกู้เงิน
- ผู้กู้
- ผู้ให้ยืม
- การชำระหนี้
- การยึดทรัพย์เมื่อไม่ชำระหนี้ให้ทันเวลา