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

相关推荐
普通网友21 小时前
共识算法实现:从工作量证明到权益证明的演进
算法·区块链·共识算法
木西1 天前
深度拆解 FWA 核心智能合约:从 Loss-to-Earn 到链上动态定价的实现逻辑
web3·智能合约·solidity
ZDGJ60991 天前
国际期货开通需要满足哪些条件 ?流程复杂吗?
区块链
3D小将1 天前
Web3D 轻量化定制工具落地民用场景:全屋收纳隔断在线可视化设计方案实践
web3
磐链科技1 天前
从比特币到Web3:一场关于信任的“操作系统”升级
web3
明月_清风1 天前
🧙 零知识证明(ZKP)入门:隐私与扩容的黑魔法
后端·web3
明月_清风1 天前
🏦 RWA 现实世界资产代币化:万亿市场的入门指南
后端·web3
ZDGJ60992 天前
外盘期货与内盘期货交易规则差异
区块链
明月_清风2 天前
📊 Tokenomics 入门:如何看懂一个项目的代币经济?
后端·web3
明月_清风2 天前
🏛️ DAO 治理入门:没有老板的公司怎么运转?
后端·web3