以太坊nonce详解

nonce详解:以太坊交易序列号与防重放攻击
本文详细解析了nonce在以太坊中的作用,包括交易顺序标识、防止重放攻击,以及如何使用nonce避免交易冲突和取消操作。学习如何正确处理nonce规则以提升交易效率和安全性。

1. nonce 是什么?

A scalar value equal to the number of transactions sent from this address or, in the case of accounts with associated code, the number of contract-creations made by this account. – 以太坊黄皮书

以太坊所有的交易都是基于 account ,不同于基于 utxo 的比特币,因此需要对每次交易都按顺序记录,nonce值就是这个顺序,nonce 是交易原始地址的属性。它不存储在以太坊区块链上,而是通过计算从一个地址发送的交易数量来计。

nonce +1

每发起一笔交易,nonce就会加一。对于发起的解释:

  • 1.外部账户(EOA)每发送一笔交易;
  • 2.合约账户(Contract Wallet) 每创建一个合约

而转入交易、合约调用其他合约等属于内部调用,因此 nonce 值不变。

作用 1:交易顺序

假设您要发送两个值为 1 和 4 ETH 的交易,并希望它们被顺序打包。发送一笔交易后,你继续发送第二笔交易。

现在如果没有随机数,矿工将不可能知道您维护交易顺序的意图。

如果您的第一笔交易(1 ETH)的 nonce 为0(假设是新帐户),那么 4 ETH交易的 nonce 为 1。矿工即可按照 nonce 的顺序打包交易。

作用 2:防止重放攻击

假如转账时,没有 nonce,参数如下:

{ 
    "gasPrice":"10000000000", 
    "to":"0xf4587a39edbb10b32952bcd656ba489f1a857450,
   
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值