Contract-Development
誰能解釋一下86400的這個功能和意義?
我有一個函式用於檢查 90 天是否在質押後過去了,但我不知道為什麼提到 86400,比如它是秒還是分鐘或其他任何東西,我怎樣才能將 90 天更改為我選擇的任何其他值。
function getTimePassedSinceStake(address _owner, uint256 _index) public view returns (uint256) { return (block.timestamp - userInfo[_owner][_index].stakeTime) / 86400; }
從文件中:
block.timestamp (uint): 目前區塊時間戳,自 unix 紀元以來的秒數
所以 :
block.timestamp - userInfo[_owner][_index].stakeTime
stakeTime
是和之間的秒數block.timestamp
。除以 86400 就是除以一天中的秒數(60 秒 * 60 分鐘 * 24 小時 = 86400)return (block.timestamp - userInfo[_owner][_index].stakeTime) / 86400;
返回之間的天數
stakeTime
,block.timstamp
這與這裡的 90 天無關。另一種語法可能是:
return (block.timestamp - userInfo[_owner][_index].stakeTime) / 1 days;
我怎樣才能將 90 天更改為我選擇的任何其他值。
我在這裡找到了一個具有相同程式碼的契約,它具有以下
unstake
功能,有 1 天的限制:function unStake(uint256 _index) external { address unStaker = msg.sender; UserInfo storage userDetails = userInfo[unStaker][_index]; uint256 tokenId1 = userDetails.tokenId1; uint256 timePassedSinceStaked = getTimePassedSinceStake( unStaker, _index ); require( timePassedSinceStaked >= 1, "You can not unstake before 1 day" ); userDetails = userInfo[unStaker][userInfo[unStaker].length - 1]; userInfo[unStaker].pop(); ERC721.safeTransferFrom(address(this), unStaker, tokenId1, ""); GemToken.claimByLuckyDragon(unStaker, 0); emit UnStakedLuckyDragon( unStaker, tokenId1, block.timestamp ); }
在這裡,通過更改將等待時間限制為 1 天:
require( timePassedSinceStaked >= 1, "You can not unstake before 1 day" );
到 :
require( timePassedSinceStaked >= 90, "You can not unstake before 90 day" );
這將需要 90 天,當然您可以設置您選擇的值。
我希望這能回答你的問題。