[Coin] 再请教ETH交易的nonce问题

楼主: overdoingism (做过头主义)   2022-06-16 23:36:08
根据这个网站说明:
https://gitchat.csdn.net/columnTopic/5b0e4011100ce52029ab6f40
以太坊中为了防止交易重播攻击,每笔 Transaction 都必须
有一个 Nonce 随机数。每个账户从同一个节点发起交易时的
Nonce 值都是从 0 开始,发送一笔 Transaction 后 Nonce
加 1,当 Nonce 为 0 的交易处理完之后,才会处理 Nonce
为 1 的交易,并以此类推。
以下是 Nonce 使用的规则:
当 Nonce 值小于之前 Transaction 的 Nonce 值时,
交易会被直接拒绝;
当 Nonce 值过大时,Transaction
会一直处于队列之中,等待执行;
假设账号 C 最后一笔 Transaction 的 Nonce 值为 10,此时
发送一笔 Nonce 值为 13 的 Transaction 至节点中。此笔
交易会一直处于队列中,不会立即打包上炼。需要等待 Nonce
值为 11 和 12 的 Transaction 依次执行完后才会来处理这笔
Transaction。
=====
哇,我的老天,那这样不是代表一个帐户越使用,优先级别就越低了?
所以以太坊的用户交易次数多了,还要换钱包嘛?
这是不是我误会了什么?
另外,这个 nonce 值正常人不可能去记他,
基本上要透过 Web3 API 去炼上取得,
但在制作交易签名的时候这个值要预先填进去,
这是不是意味着 ETH 其实无法靠冷钱包做离线签名?
作者: rand (time(NULL))   2022-06-16 23:38:00
nonce 是跟自己比nonce 本来就可以手动填 完全离线的状况就由自己去把 nonce填上去给太低的 nonce 会被拒绝 给太高要等前面的执行最常见的状况就是 fee 给太低了用另外一笔同 nonce 但 fee 比较高的交易把它取代掉
作者: DarkerDuck (達克鴨)   2022-06-17 00:09:00
对啊,要取消交易就是填同一个nonce值的0值交易你的离线签名是指sign message还是sign transaction?假如是sign message用不到nonce值假如真的要sign一个离线的transaction放很久的话那就开一个account给它专用就不用管nonce值跳动
楼主: overdoingism (做过头主义)   2022-06-17 00:17:00
sign transaction了解
作者: MACD (MACD)   2022-06-17 01:42:00
交易签名时不用填nonce,送出时会自动抓”确认”tx nonce所以如果不是特殊操作重复送tx用比较大的gas price会盖过pending tx
作者: wlsh5701 (舞林树枝)   2022-06-17 02:05:00
不用填nonce是因为在signTransaction的时候会自动抓吧?在对tx签名时里面没有nonce怪怪的
作者: JapaZPa4867 (落叶学系权威)   2022-06-17 05:12:00
答案文档和黄皮书里全都有 请认真阅读
作者: LinuxDapp (第一次玩ptt就上手)   2022-06-19 14:43:00
请google 或是自己试

Links booklink

Contact Us: admin [ a t ] ucptt.com