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

相关推荐
磐链科技7 小时前
异构链的“翻译官”:区块链开发中跨链消息传递协议(IBC)的代码实现拆解
区块链
ZDGJ609916 小时前
如何选择适合自己的恒指期货产品
区块链
水母量化21 小时前
自动化开盘卖出如何适应价格笼子规则
运维·自动化·区块链·量化交易
IvorySQL21 小时前
PostgreSQL 日报 |SUM-AVG 溢出检测不足(9 月 5 日)
数据库·postgresql·区块链
Richown1 天前
React 高级模式:并发渲染下的状态机驱动架构——从 Finite State Machine 到生产级实现
区块链·react
ChannelLab1 天前
BONK FAQ:关于生态、产品、社区与金融化的 24 个核心问题
金融·区块链
超级架构师2 天前
【区块链技术】区块链101:比特币是什么?
人工智能·区块链·比特币
维克兜率天2 天前
4.3.2.1 日常监控:上线只是开始
服务器·数据库·python·区块链·php·量化
磐链科技3 天前
交易所开发核心:钱包提现引擎的设计——从风控拦截、多级审批到自动广播上链
web3·区块链
2601_962077984 天前
阿里二面,前端开发在web3.0中该如何应用,记录面经
区块链·前端开发·web3.0·技术趋势·学习准备