从0开始学区块链第16天——Solidity 中的时间逻辑

Solidity 中的时间逻辑

Solidity 中的时间是根据添加到区块链的每个区块决定的。

全局变量 block.timestamp 指的是块生成并添加到区块链的时间,以毫秒为单位。毫秒计数是指自 Unix 纪元开始以来经过的毫秒数(在计算中,这是 1970 年 1 月 1 日)。

与 Web2 以毫秒为单位引用时间戳不同,该值可能不会每毫秒增加一次。

一个区块通常包含多个交易,并且由于 block.timestamp 指的是区块被开采的时间,所以一个区块中的所有交易都将具有相同的时间戳值。所以时间戳实际上指的是区块的时间,而不是调用者发起交易的时间。

Solidity 支持直接引用以下时间单位:秒、分钟、小时、天和周。

所以我们可以通过类似 uint lastWeek = block.timestamp - 1 weeks; 这样的代码来计算当前区块被开采前 1 周的时间戳,精确到毫秒。该值与 block.timestamp - 7 days; 相同。

你还可以使用它来计算未来的到期日期,例如,你可能希望在现在和下周之间可以进行操作。你可以使用 uint registrationDeadline = block.timestamp + 1 weeks; 来执行此操作,然后我们可以使用 registrationDeadline 作为函数中的验证或保护,如下所示:

在此函数中,我们仅在当前区块的时间戳未超过注册截止日期时才注册 voter。

当我们想要确保某些操作在正确的时间或在一定时间间隔内执行时,都可以使用此逻辑。

这也是可以配置 Chainlink Automation 的一种方式,这是一种自动执行智能合约的去中心化方式。 Chainlink 去中心化预言机网络可以配置为自动触发您的智能合约,你可以通过检查条件(包括与时间相关的条件)来运行各种自动化。这些被广泛用于空投、促销、特殊奖励、赚取收益等。

相关推荐
磐链科技3 小时前
智能合约系统开发成本是多少?影响功能配置、技术方案与项目周期的关键因素分析
智能合约
ZDGJ60993 小时前
新手小白了解国际期货先了解哪一步
区块链
DcMedia元宇宙1 天前
谁能登上「数字化」的「诺亚方舟」
web3·数字化
木西1 天前
从 “跑鞋” 到实体卡牌藏品:户外 AR 互动游戏 GoCollect,产品架构全景解析
web3·智能合约·solidity
重明链迹实验室2 天前
重明链迹丨每周区块链安全要闻(0921-0927)
安全·web3·区块链
爱签AI电子合同2 天前
电子合同上手成本怎么测?易用性维度专项测评
服务器·人工智能·智能合约·企业微信
AIFQuant9 天前
ETF行情API接入踩坑记:从报错到跑通的七个问题
python·金融·区块链·etf·基金
磐链科技9 天前
DApp 前端开发指南:钱包连接与链上数据交互实践
区块链·智能合约
磐链科技9 天前
DApp 智能合约开发详解:Solidity 编写、测试与部署全流程
区块链