帖子
分享您的知识。
为什么我的交易在 2 个区块之后被包括在内?
我正在运行一个节点,我注意到我的交易总是在两个区块之后才包含在内,而不是包含在下一个区块中. 我已经在网上查看过了,发现其他人也有同样的问题,但没有答案. 可能是由于对等连接问题引起的吗?我甚至简化了创建新区块的过程,但是延迟仍然导致我的交易进入区块n+2. 有人知道为什么会这样吗?
- Polygon PoS
答案
3这可能不是地理位置问题. 通常,区块的创建和封存时间不到 500 毫秒. 验证器发布一个区块,然后等待大约 2 秒钟才能发布该区块. 由于传播延迟,该交易可能会包含在 n+2 区块中. 我仍在调查这个问题,一旦我有更多信息就会通知你.
您的交易持续包含在区块n+2中,而不是下一个区块,可能是由于网络传播延迟,而不是节点的根本问题. 在像 Polygon 这样的网络上,通常在 500 毫秒内创建和封存区块,验证者需要等待大约 2 秒钟才能生成下一个区块. 由于网络延迟,您的交易可能无法及时到达验证人以将其包含在n+1中,从而导致它改为出现在n+2中. 这可能会受到对等连接、区块传播速度、交易中继时间和整体网络状况的影响.
要诊断和修复此问题,请考虑以下步骤:
###1. 检查您的对等连接 您的节点依赖于对等方来接收新区块和中继交易. 如果您的节点的对等节点太少或速度太慢,则交易可能需要更长的时间才能传播,从而导致延迟.
您可以使用以下方法检查连接到您的节点的对等节点的数量:
geth attach http://127.0.0.1:8545
> net.peerCount
对于像 Polygon 这样的基于以太坊的节点,此命令将返回对等节点的数量. 如果计数很低(例如,少于 10 个),则您的节点可能连接不畅. 要添加更多对等节点,请使用以下admin.addPeer()
命令手动将其包括在内:
> admin.addPeer("enode://your-peer-node")
如果您的节点连接不良好,请考虑在客户端配置中添加bootnodes或增加最大对等连接数.
###2. 评估网络延迟和区块同步 即使有足够的对等点,网络延迟也会延迟区块接收. 你可以通过运行以下命令来衡量你的节点识别新区块所花费的时间:
> eth.syncing
如果你的节点稍微落后,这意味着它比网络的其余部分晚于接收区块. 将你节点上的最新区块与像 PolygonScan 这样的区块浏览器进行比较:
> eth.blockNumber
如果您的节点和网络之间存在明显延迟,请考虑通过将节点托管在延迟较低的 VPS 上或使用更快的互联网连接**来优化您的连接.
###3. 监控交易传播 您的交易到达验证者的速度可能不够快. 使用记忆池查看您的交易是否在高效传播:
> txpool.inspect
如果您的交易出现在本地池中但未包含在下一个区块中,则可能无法快速到达足够多的对等方. 你可以使用 Mempool Explorer 之类的工具来验证你的交易是否在网络上可见.
要手动重播待处理的交易,请使用:
> eth.sendRawTransaction("0x-your-transaction-hash")
这样可以确保交易被重新广播给更多同行,从而增加其被纳入下一���区块的机会.
###4. 必要时调整汽油费 尽管汽油费可能不是主要原因,但较低的汽油费有时会导致延误. 将您的交易的汽油费与n+1区块中包含的汽油费进行比较:
> eth.getTransaction("0x-your-tx-hash")
使用以下方法查找gasPrice
价值并将其与最新区块中的近期交易进行比较:
> eth.getBlock("latest", true)
如果需要,使用替代交易(如果仍处于待处理状态),以更高的汽油费重新发送交易.
###5. 研究验证者选择和共识机制 如果您的区块链在**权益证明 (PoS)**上运行,则验证者的选择会影响交易时间. 一些验证器的区块传播速度比其他验证器更快,这意味着无法快速到达它们的交易可能会延迟.
通过获取区块详细信息来检查哪个验证器包含您的交易:
> eth.getBlock(n+2, true)
这将返回处理您交易的验证器的详细信息. 如果相同的验证器经常处理您的交易,则您的节点可以更好地连接到特定的验证器,而缺少其他验证器.
如果问题仍然存在,你可能不是唯一遇到这个问题的人. 考虑在 Polygon 社区论坛 中讨论你的问题. 其他节点运营商可能遇到过类似的行为,可以提供更多的见解.
问题可能归结为交易传播速度和网络延迟. 如果您的节点广播交易速度不够快,或者接收区块时出现轻微延迟,则可能导致交易进入n+2而不是n+1.
你知道答案吗?
请登录并分享。
Polygon is a decentralised Ethereum scaling platform that enables developers to build scalable user-friendly dApps with low transaction fees without ever sacrificing on security.