-
Notifications
You must be signed in to change notification settings - Fork 0
DeFi smart contract on Ethereum network | First project with solidity
TGODTH/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