EVM 兼容链中的随机数简介
1. 什么是 EVM 中的随机数?
随机数(“一次性使用的数字”)是一个整数,用于表示某个特定账户(外部账户,简称“EOA”)发起的交易次数,用来追踪通过该账户发送的交易数量。随机数从 0 开始,每发送一笔交易便增加 1。它不会跳号,而是严格按时间顺序递增,例如 0、1、2、3 等。
2. 为什么随机数至关重要?
在以太坊等协议中,随机数用于追踪来自特定地址的每一笔交易,确保网络正常运作:
防止重复:避免他人重复使用您的交易(例如将同一笔 1 ETH 交易发送两次)。
确保顺序:保证交易按照正确的顺序执行,即交易 1 在交易 2 之前完成。
避免混淆:帮助网络识别和验证合法交易。
3. 当前钱包的随机数处理方式与之前有何不同?
现在,我们会确认交易池(也称为“内存池”)中的待处理交易数量,并在此基础上加 1。
过去,我们是以“已确认交易”的随机数加 1,现已改为“待处理交易”的随机数加 1。
示例:假设您在区块链上有一笔已确认的交易,随机数为 3,同时在内存池中还有一笔待处理交易,随机数为 4。
过去,您的新交易随机数将设为 4,这样可能会替换掉内存池中已有的交易。只有一笔随机数为 4 的交易会成功。
现在,您的新交易随机数将设为 5。这意味着,在随机数为 4 的交易确认之前,新交易会一直在内存池中保持待处理状态,待随机数为 4 的交易确认后才会提交到区块链上。
注:如果系统检测到有交易等待时间过长,将会弹出通知,询问您是否希望用新交易进行替换。
为什么这种处理方式更有优势:
提升处理效率:在以往的方法中,延迟的交易可能阻碍后续操作。虽然可以重用相同的随机数,但存在覆盖待处理交易的风险,导致其中一笔交易被拒绝。现在,每笔新交易根据待处理交易数递增随机数,确保交易连续提交。
主动解决问题:当交易长时间未被确认时,系统会主动提醒您,允许您使用新交易(相同随机数 + 更高 Gas 费)来替换旧交易,从而快速有效地解决延迟问题。
优化用户体验:无论是否存在待处理交易,系统都能确保交易顺畅连续地进行,带来更稳定、更流畅的钱包交互体验。
4. 我需要自己处理随机数吗?
您无需担心随机数问题,系统会根据内存池中的待处理交易,自动为您的交易生成随机数。一旦交易确认,系统会自动完成后续处理。