### 管理员方法介紹 #### 質押合約 質押狀態:關閉后無法進行質押 質押黑名單:添加地址為黑名單,如果是黑名單則無法進行質押提現、邀請體現、質押、銷毀等操作 質押白名單:儅質押狀態關閉是可以進行質押 設置邀請收益率:默認為1%; #### Pool合約 狀態:關閉時無法進行資金提取操作(除管理員提現) #### NFT合約 添加管理員:只供合約部署者操作 刪除管理員:只供合約部署者操作 NFT黑名單:添加NFT ID為黑名單后,無法進行轉移、質押提現、NFT回收 ### 管理員方法 #### 質押合約 setInvitationRate // 設置邀請收益率 setPledgeStatus //設置質押狀態 addBlackOrWhiteList //添加黑名單或白名單 delBlackOrWhiteList //刪除黑名單或白名單 setDayTime //設置分傭時間 默認一天 setProductInfo //設置產品信息 addNftBalcks //添加NFT ID為黑名單 修改質押信息isBlack 為true deleteNftBlacks //刪除NFT ID 黑名單 修改質押信息isBlack為false #### Pool合約 setPledgeContractAddress 設置質押合約地址 setPoolStatus 設置池子狀態 withdrawTo 提現池子FIL #### NFT合約 setPledgeAddress 設置質押合約地址 addAdmin 添加管理員 deleteAdmin 刪除管理員 ### Pledge合約方法 ``` NFT nftContract; Pool poolContract; ProductInfo[] public productInfo; mapping(uint256 => PledgeType) pledges; // 質押信息,用於計算質押收益 mapping(address => PledgeType[]) public pledgeRecords; //質押記錄 mapping(uint256 => PledgeType) public invitationPledges; // 被邀請人質押的信息,用於計算邀請收益 mapping(address => RecommendObjType) public recommendObj; // 用戶綁定記錄 mapping(address => uint256[]) public invitationTokens; // 所有下級貢獻收益tokenID mapping(address => address[]) public invitationAddress; // 所有下級的地址 mapping(address => PledgeWithdrawRecordType[]) public pledgeWithdrawRecord; // 質押收益體現記錄 mapping(address => InvitationWithdrawRecordType[]) public invitationWithdrawRecord; // 邀請收益體現記錄 address[] public blackList; //黑名單 address[] public whiteList; //白名單 mapping(address => PledgeType[]) public pledgeDestoryRecords; // 質押銷毀記錄 uint256 public invitationRate; //邀請收益率 uint256 public nextTokenId;//NFTID bool public pledgeStatus; //質押開關 uint256 public dayTime; // 獲取質押記錄 function getPledgeRecords(address _owner) public view returns(PledgeType[] memory) // 獲取質押提现記錄 function getPledgeWithdrawRecord(address _owner) public view returns(PledgeWithdrawRecordType[] memory) // 獲取邀請提现記錄 function getInvitationWithdrawRecord(address _owner) public view returns(InvitationWithdrawRecordType[] memory) // 獲取銷毀記錄 function getPledgeDestoryRecords(address _owner) public view returns(PledgeType[] memory) // 獲取質押產品信息 function getProductInfo() public view returns (ProductInfo[] memory) / 獲取該地址的所有質押信息 function getOwnerAllPledgeInfo( address _ownerAddress ) public view returns (PledgeType[] memory result) // 綁定推薦人 function bindRecommend(address _referrer) internal // 設置推薦人的收益 function setInvitationIncomes(PledgeType memory _pledge) internal // 質押 function pledge(uint256 amount, uint256 index, address _referrer) external onlyBlacks // 獲取該地址所有NFT的tokenId function getOwnerAllTokens( address _ownerAddress ) public view returns (uint256[] memory) // 計算利息 1.計算可領取的質押收益 2.計算可領取的邀請收益 function calculateInterest( PledgeType memory _pledge ) public view returns (uint256) // 獲取所有可提現的利息 function getWithdrawbleAmount( address _owner ) public view returns (uint256) // 提取質押所有利息 function withdraAllInterest() external onlyBlacks // 提取質押單個利息 function withdrawInterest(uint256 tokenId) external onlyBlacks // 邀請: 獲取該地址所有下級的質押記錄 function getOwnerInvitationPledges( address addr ) public view returns (PledgeType[] memory result) // 獲取邀請貢獻 當前所有可提取的收益 function getOwnerAllInvitationWithdrawAmout(address owner) public view returns(uint256) // 提取所有邀請利息 function withdraInvitationAllInterest() external onlyBlacks // 提取單個邀請利息 function withdrawInvitationInterest(uint256 tokenId) external onlyBlacks // 獲取所有下級 function getAllInvitationMember( address addr ) public view returns (RecommendObjType[] memory result) // 獲取當前時間 function getCurrentTime() public view returns (uint256) // 銷毀NFT 退回本金 function destroyPledge(uint256 tokenId) external onlyBlacks // 設置邀請收益率 function setInvitationRate(uint256 _rate) external onlyAdmin // 設置質押和提現狀態 function setPledgeStatus(bool _status) external onlyAdmin // 添加黑名單 1.黑名单 2.白名单 function addBlackOrWhiteList(address[] memory _blacks,uint256 _type) external onlyAdmin // 删除黑名單 1.黑名单 2.白名单 function delBlackOrWhiteList(address[] memory _blacks,uint256 _type) external onlyAdmin // 獲取黑名單 1.黑名单 2.白名单 function getBlackOrWhiteList(uint256 _type) public view returns (address[] memory) // 設置分傭時間 默認為1天 function setDayTime(uint256 _time) external onlyAdmin // 設置產品信息 function setProductInfo(uint256[] memory _days,uint256[] memory _rates) external onlyAdmin // 获取单个质押或邀请信息 1.质押 2.邀请 function getDetails(uint256 tokenId,uint256 _type) public view returns(PledgeType memory) // 添加NFT ID 為黑名單 并且修改NFT ID對應質押的狀態 function addNftBalcks(uint256[] memory _tokenIds) external onlyAdmin // 刪除NFT ID 黑名單 并且修改NFT ID對應質押的狀態 function deleteNftBlacks(uint256[] memory _ids) external onlyAdmin ``` ### NFT 合約方法 ``` address[] admins; 管理員地址 address public deployAddress; 部署人地址 bool first; 是否為第一次初始化 address public pledgeAddress; 質押合約地址 uint256[] public blacks; NFT ID 黑名單 鑄造NFT,只供質押合約條用 function mint(address to, uint256 tokenId) external 設置質押合約地址 function setPledgeAddress(address _pledgeAddr) external onlyAdmin function addAdmin(address[] memory _adds) external onlyAdmin function deleteAdmin(address[] memory _dels) external onlyAdmin function getAdmin() public view returns(address[] memory) function addBlacks(uint256[] memory _tokenIds) external function delBlacks(uint256[] memory _tokenIds) external function getBlacks() public view returns(uint256[] memory) function _update(address to, uint256 tokenId, address auth) internal virtual override returns(address) ``` ### Pool合約 ``` IERC20 tokenContract; NFT nftContract; address public _pledgeContractAddress; 質押合約地址 bool public poolStatus; 狀態 // 存款函数,允许用户向池中存入资金 function deposit(address from, uint256 amount) external // 提款函数,允许用户从池中提取资金 只供質押合約使用 function withdraw(address to, uint256 amount) external function setPledgeContractAddress(address addr) external onlyAdmin function setPoolStatus(bool _status) external onlyAdmin function withdrawTo(uint256 amount) external onlyAdmin ```