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.
|
|
### 管理员方法介紹
#### 質押合約
質押狀態:關閉后無法進行質押 質押黑名單:添加地址為黑名單,如果是黑名單則無法進行質押提現、邀請體現、質押、銷毀等操作 質押白名單:儅質押狀態關閉是可以進行質押 設置邀請收益率:默認為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)
<!-- 重寫_update, 轉賬時驗證黑名單進行斷言 --> 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
<!-- 提取Pool合約的FIL 只供管理員使用 --> function withdrawTo(uint256 amount) external onlyAdmin
```
|