从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 小时前
Fabric系列 - HSM之3 区块链上的结合
区块链·php·fabric·长安链·hsm
TechMasterPlus10 小时前
FilAPP 技术深度解析:基于 Filecoin 的去中心化文件存储应用架构
架构·去中心化·区块链
许强0xq1 天前
订单流战争:AI、区块链与市场透明度的终极博弈
web3·区块链·智能合约·solidity·dapp
BlockChain8881 天前
以太坊交易全流程详解
区块链
weixin_413838561 天前
基于区块链的校园二手书交易系统
vue.js·spring·区块链·fabric
f16422541 天前
区块链入门知识
区块链
潇楠Web3哨兵1 天前
Web3多功能监控软件 V10 :从代码层面深度剖析一款商业级双链监控系统的实现艺术!
web3
迷藏4942 天前
**发散创新:基于Solid协议的Web3.0去中心化身份认证系统实战解析**在Web3.
java·python·web3·去中心化·区块链
AI_Claude_code2 天前
ZLibrary访问困境方案三:Web代理与轻量级转发服务的搭建与优化
爬虫·python·web安全·搜索引擎·网络安全·web3·httpx
CIO_Alliance2 天前
区块链技术在iPaaS系统集成中的应用
区块链·ipaas·系统集成·制造业·企业数智化转型·零售电商