web3.eth.getBlock() 中的“latest”和“earliest”这两个参数有啥区别
Posted
技术标签:
【中文标题】web3.eth.getBlock() 中的“latest”和“earliest”这两个参数有啥区别【英文标题】:What is the difference between the two parameters "latest" and "earliest" in web3.eth.getBlock()web3.eth.getBlock() 中的“latest”和“earliest”这两个参数有什么区别 【发布时间】:2021-08-23 03:06:49 【问题描述】:我想知道web3.eth.getBlock()
中"latest"
和"earliest"
参数的区别,我在文档中找不到任何解释。
我的想法
最早
传递 "earliest"
为您提供代码执行时或执行之前的最后一个可用块。
最新 传递“lastest”仅在代码执行后返回一个新块。
如果有人有这方面的信息或文件,请回复。
【问题讨论】:
【参考方案1】:getBlock() 文档指向 defaultBlock 以获取有关值的信息。
"earliest" - 字符串:创世区块
"latest" - 字符串:最新区块(区块链的当前头部)
"pending" - 字符串:当前挖出的区块(包括待处理的交易)
所以“最新”是最新块。另一方面,“最早的”是最旧的块。
【讨论】:
谢谢。我的后续问题是,我是要获取顶部的任何块,还是会等待下一个块并将其作为最新块返回?这个问题的原因是我想在代码运行后获得最新的块,而不是代码运行时的任何内容。 当你执行web3.eth.getBlock("latest")
时,它会返回当前最新挖出的区块(例如区块#100),并且不会等待新的区块被挖出...如果你再次运行它时有一个新块(例如 #101),然后它返回块 #101 作为“最新”。
我在下面添加了一个后续问题,以便正确格式化。
您可以使用 WSS 提供程序(而不是 HTTP 提供程序,通常在 new Web3()
构造函数中传递),然后将 subscribe 传递给“newBlockHeaders”WSS 消息。每次有新块时,这都会向您发送一条消息,您可以使用提供的block.number
(来自消息)来请求特定块(或简称为“最新”)...... HTTP 提供程序的解决方法将轮询web3.eth.getBlock("latest")
(例如每秒使用setTimeout()
),但这可能会达到您的提供商的速率限制。
伟大的解决方案彼得。谢谢。以上是关于web3.eth.getBlock() 中的“latest”和“earliest”这两个参数有啥区别的主要内容,如果未能解决你的问题,请参考以下文章