-
Couldn't load subscription status.
- Fork 0
DeFi smart contract on Ethereum network | First project with solidity
Couldn't load subscription status.
14two-77/DeFi-Lending
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
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 การกู้เงิน
- ผู้กู้
- ผู้ให้ยืม
- การชำระหนี้
- การยึดทรัพย์เมื่อไม่ชำระหนี้ให้ทันเวลา
About
DeFi smart contract on Ethereum network | First project with solidity