You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
8.2 KiB

5 months ago
  1. ### 管理员方法介紹
  2. #### 質押合約
  3. 質押狀態:關閉后無法進行質押
  4. 質押黑名單:添加地址為黑名單,如果是黑名單則無法進行質押提現、邀請體現、質押、銷毀等操作
  5. 質押白名單:儅質押狀態關閉是可以進行質押
  6. 設置邀請收益率:默認為1%;
  7. #### Pool合約
  8. 狀態:關閉時無法進行資金提取操作(除管理員提現)
  9. #### NFT合約
  10. 添加管理員:只供合約部署者操作
  11. 刪除管理員:只供合約部署者操作
  12. NFT黑名單:添加NFT ID為黑名單后,無法進行轉移、質押提現、NFT回收
  13. ### 管理員方法
  14. #### 質押合約
  15. setInvitationRate // 設置邀請收益率
  16. setPledgeStatus //設置質押狀態
  17. addBlackOrWhiteList //添加黑名單或白名單
  18. delBlackOrWhiteList //刪除黑名單或白名單
  19. setDayTime //設置分傭時間 默認一天
  20. setProductInfo //設置產品信息
  21. addNftBalcks //添加NFT ID為黑名單 修改質押信息isBlack 為true
  22. deleteNftBlacks //刪除NFT ID 黑名單 修改質押信息isBlack為false
  23. #### Pool合約
  24. setPledgeContractAddress 設置質押合約地址
  25. setPoolStatus 設置池子狀態
  26. withdrawTo 提現池子FIL
  27. #### NFT合約
  28. setPledgeAddress 設置質押合約地址
  29. addAdmin 添加管理員
  30. deleteAdmin 刪除管理員
  31. ### Pledge合約方法
  32. ```
  33. NFT nftContract;
  34. Pool poolContract;
  35. ProductInfo[] public productInfo;
  36. mapping(uint256 => PledgeType) pledges; // 質押信息,用於計算質押收益
  37. mapping(address => PledgeType[]) public pledgeRecords; //質押記錄
  38. mapping(uint256 => PledgeType) public invitationPledges; // 被邀請人質押的信息,用於計算邀請收益
  39. mapping(address => RecommendObjType) public recommendObj; // 用戶綁定記錄
  40. mapping(address => uint256[]) public invitationTokens; // 所有下級貢獻收益tokenID
  41. mapping(address => address[]) public invitationAddress; // 所有下級的地址
  42. mapping(address => PledgeWithdrawRecordType[]) public pledgeWithdrawRecord; // 質押收益體現記錄
  43. mapping(address => InvitationWithdrawRecordType[]) public invitationWithdrawRecord; // 邀請收益體現記錄
  44. address[] public blackList; //黑名單
  45. address[] public whiteList; //白名單
  46. mapping(address => PledgeType[]) public pledgeDestoryRecords; // 質押銷毀記錄
  47. uint256 public invitationRate; //邀請收益率
  48. uint256 public nextTokenId;//NFTID
  49. bool public pledgeStatus; //質押開關
  50. uint256 public dayTime;
  51. // 獲取質押記錄
  52. function getPledgeRecords(address _owner) public view returns(PledgeType[] memory)
  53. // 獲取質押提现記錄
  54. function getPledgeWithdrawRecord(address _owner) public view returns(PledgeWithdrawRecordType[] memory)
  55. // 獲取邀請提现記錄
  56. function getInvitationWithdrawRecord(address _owner) public view returns(InvitationWithdrawRecordType[] memory)
  57. // 獲取銷毀記錄
  58. function getPledgeDestoryRecords(address _owner) public view returns(PledgeType[] memory)
  59. // 獲取質押產品信息
  60. function getProductInfo() public view returns (ProductInfo[] memory)
  61. / 獲取該地址的所有質押信息
  62. function getOwnerAllPledgeInfo( address _ownerAddress ) public view returns (PledgeType[] memory result)
  63. // 綁定推薦人
  64. function bindRecommend(address _referrer) internal
  65. // 設置推薦人的收益
  66. function setInvitationIncomes(PledgeType memory _pledge) internal
  67. // 質押
  68. function pledge(uint256 amount, uint256 index, address _referrer) external onlyBlacks
  69. // 獲取該地址所有NFT的tokenId
  70. function getOwnerAllTokens( address _ownerAddress ) public view returns (uint256[] memory)
  71. // 計算利息 1.計算可領取的質押收益 2.計算可領取的邀請收益
  72. function calculateInterest( PledgeType memory _pledge ) public view returns (uint256)
  73. // 獲取所有可提現的利息
  74. function getWithdrawbleAmount( address _owner ) public view returns (uint256)
  75. // 提取質押所有利息
  76. function withdraAllInterest() external onlyBlacks
  77. // 提取質押單個利息
  78. function withdrawInterest(uint256 tokenId) external onlyBlacks
  79. // 邀請: 獲取該地址所有下級的質押記錄
  80. function getOwnerInvitationPledges( address addr ) public view returns (PledgeType[] memory result)
  81. // 獲取邀請貢獻 當前所有可提取的收益
  82. function getOwnerAllInvitationWithdrawAmout(address owner) public view returns(uint256)
  83. // 提取所有邀請利息
  84. function withdraInvitationAllInterest() external onlyBlacks
  85. // 提取單個邀請利息
  86. function withdrawInvitationInterest(uint256 tokenId) external onlyBlacks
  87. // 獲取所有下級
  88. function getAllInvitationMember( address addr ) public view returns (RecommendObjType[] memory result)
  89. // 獲取當前時間
  90. function getCurrentTime() public view returns (uint256)
  91. // 銷毀NFT 退回本金
  92. function destroyPledge(uint256 tokenId) external onlyBlacks
  93. // 設置邀請收益率
  94. function setInvitationRate(uint256 _rate) external onlyAdmin
  95. // 設置質押和提現狀態
  96. function setPledgeStatus(bool _status) external onlyAdmin
  97. // 添加黑名單 1.黑名单 2.白名单
  98. function addBlackOrWhiteList(address[] memory _blacks,uint256 _type) external onlyAdmin
  99. // 删除黑名單 1.黑名单 2.白名单
  100. function delBlackOrWhiteList(address[] memory _blacks,uint256 _type) external onlyAdmin
  101. // 獲取黑名單 1.黑名单 2.白名单
  102. function getBlackOrWhiteList(uint256 _type) public view returns (address[] memory)
  103. // 設置分傭時間 默認為1天
  104. function setDayTime(uint256 _time) external onlyAdmin
  105. // 設置產品信息
  106. function setProductInfo(uint256[] memory _days,uint256[] memory _rates) external onlyAdmin
  107. // 获取单个质押或邀请信息 1.质押 2.邀请
  108. function getDetails(uint256 tokenId,uint256 _type) public view returns(PledgeType memory)
  109. // 添加NFT ID 為黑名單 并且修改NFT ID對應質押的狀態
  110. function addNftBalcks(uint256[] memory _tokenIds) external onlyAdmin
  111. // 刪除NFT ID 黑名單 并且修改NFT ID對應質押的狀態
  112. function deleteNftBlacks(uint256[] memory _ids) external onlyAdmin
  113. ```
  114. ### NFT 合約方法
  115. ```
  116. address[] admins; 管理員地址
  117. address public deployAddress; 部署人地址
  118. bool first; 是否為第一次初始化
  119. address public pledgeAddress; 質押合約地址
  120. uint256[] public blacks; NFT ID 黑名單
  121. 鑄造NFT,只供質押合約條用
  122. function mint(address to, uint256 tokenId) external
  123. 設置質押合約地址
  124. function setPledgeAddress(address _pledgeAddr) external onlyAdmin
  125. <!-- 添加管理員,只供部署者使用 -->
  126. function addAdmin(address[] memory _adds) external onlyAdmin
  127. <!-- 刪除管理員 ,只供部署者使用 -->
  128. function deleteAdmin(address[] memory _dels) external onlyAdmin
  129. <!-- 獲取管理員 -->
  130. function getAdmin() public view returns(address[] memory)
  131. <!-- 添加黑名單 管理員只用 -->
  132. function addBlacks(uint256[] memory _tokenIds) external
  133. <!-- 刪除黑名單 -->
  134. function delBlacks(uint256[] memory _tokenIds) external
  135. <!-- 獲取黑名單 -->
  136. function getBlacks() public view returns(uint256[] memory)
  137. <!-- 重寫_update, 轉賬時驗證黑名單進行斷言 -->
  138. function _update(address to, uint256 tokenId, address auth) internal virtual override returns(address)
  139. ```
  140. ### Pool合約
  141. ```
  142. IERC20 tokenContract;
  143. NFT nftContract;
  144. address public _pledgeContractAddress; 質押合約地址
  145. bool public poolStatus; 狀態
  146. // 存款函数,允许用户向池中存入资金
  147. function deposit(address from, uint256 amount) external
  148. // 提款函数,允许用户从池中提取资金 只供質押合約使用
  149. function withdraw(address to, uint256 amount) external
  150. <!-- 設置質押合約地址 只供管理員使用 -->
  151. function setPledgeContractAddress(address addr) external onlyAdmin
  152. <!-- 設置狀態 只供管理員使用 -->
  153. function setPoolStatus(bool _status) external onlyAdmin
  154. <!-- 提取Pool合約的FIL 只供管理員使用 -->
  155. function withdrawTo(uint256 amount) external onlyAdmin
  156. ```