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.
 
 
 

8.2 KiB

管理员方法介紹

質押合約

質押狀態:關閉后無法進行質押 質押黑名單:添加地址為黑名單,如果是黑名單則無法進行質押提現、邀請體現、質押、銷毀等操作 質押白名單:儅質押狀態關閉是可以進行質押 設置邀請收益率:默認為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