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

相关推荐
Sui_Network11 小时前
备受期待的 POP 射击游戏 XOCIETY 正式在 Epic Games Store 开启体验
人工智能·游戏·rpc·区块链·量子计算·graphql
友莘居士13 小时前
Solidity 抽象合约与接口合约详解
区块链·抽象合约·接口合约
lkbhua莱克瓦2413 小时前
BTC-密码学原理
区块链·密码学·btc
Web3VentureView13 小时前
培养全球Web3人才:SYNBO商学院正式启动运营
网络·金融·重构·web3·区块链
小明的小名叫小明14 小时前
区块链核心知识点梳理(8)-钱包与账户体系
区块链
小明的小名叫小明14 小时前
区块链核心知识点梳理(9)-加密算法详解
区块链
焦点链创研究所15 小时前
Fusaka 升级:以太坊的 “数据革命”,而非简单扩容
区块链
小明的小名叫小明15 小时前
区块链核心知识点梳理(7)-Gas 机制与优化
区块链
小明的小名叫小明16 小时前
区块链核心知识点梳理(面试高频考点5)-以太坊交易参数详解
区块链
L、21817 小时前
Flutter + OpenHarmony + 区块链:构建去中心化身份认证系统(DID 实战)
flutter·华为·去中心化·区块链·harmonyos