okx

了解以太坊智能合约的nonce

时间:2023-06-13|浏览:226

什么是nonce?

在以太坊黄皮书中,nonce是一个标量值,等于从该地址发送的交易数量或在具有关联代码的账户情况下创建的合约数量。

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

每次发起一笔交易,nonce值会加一。对于发起交易的两种情况:1.外部账户(EOA)每发送一笔交易;2.合约账户(ContractWallet)每创建一个合约。转入交易和合约调用其他合约等则属于内部调用,因此nonce值不变。

它有哪些作用?

作用1:交易顺序。假设你要发送两个值为1和4ETH的交易,并希望按顺序打包。发送一笔交易后,你直接继续发送第二笔交易,矿工将无法知道你维护交易顺序的意图。如果你的第一笔交易(1ETH)的nonce值为0(假设是新账户),那么4ETH交易的nonce值为1。矿工可根据nonce值的顺序打包交易。

作用2:防止重放攻击。如果没有nonce,则交易很容易被重复提交给以太坊网络,消耗你的余额。而包含nonce的交易,同一nonce的交易只能被打包一次。

如何使用nonce?

以太坊内部有一个交易池(txpool),它存放交易。发起转账或创建合约时,可使用web3从以太坊网络查询当前的nonce值,并将其需要传递参数nonce,官方文档对于nonce的说明如下: "nonce: QUANTITY - (可选) 一个nonce的整数。这允许覆盖使用相同nonce的待处理事务。"

使用eth_getTransactionCount获取nonce值时,需要传递以下参数:[地址,QUANTITY(最新)、pending]。如果有处于pending状态的交易,请将参数更换为pending,否则将无法获取正确计数。

加速和取消以太坊的交易。

由于nonce的特性,可使用相同的noncehttps://segmentfault.com/a/18999

热点:以太 以太坊 太坊 智能合约

欧易

欧易(OKX)

用戶喜愛的交易所

币安

币安(Binance)

已有账号登陆后会弹出下载

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

非小号交易所排名-专业的交易行情资讯门户网站,提供区块链比特币行情查询、比特币价格、比特币钱包、比特币智能合约、比特币量化交易策略分析,狗狗币以太坊以太币玩客币雷达币波场环保币柚子币莱特币瑞波币公信宝等虚拟加密电子数字货币价格查询汇率换算,币看比特儿火币网币安网欧易虎符抹茶XMEX合约交易所APP,比特币挖矿金色财经巴比特范非小号资讯平台。
非小号行情 yonghaoka.cn 飞鸟用好卡 ©2020-2024版权所有 桂ICP备18005582号-1