问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

以太坊区块链之Bug --2020/05/19

发布网友 发布时间:2022-11-24 03:32

我来回答

1个回答

热心网友 时间:2024-11-08 00:56

为了防止交易重播,ETH(ETC)节点要求每笔交易必须有一个nonce数值。每一个账户从同一个节点发起交易时,这个nonce值从0开始计数,发送一笔nonce对应加1。当前面的nonce处理完成之后才会处理后面的nonce。注意这里的前提条件是相同的地址在相同的节点发送交易。

以下是nonce使用的几条规则:

● 当nonce太小(小于之前已经有交易使用的nonce值),交易会被直接拒绝。

● 当nonce太大,交易会一直处于队列之中,这也就是导致我们上面描述的问题的原因;

● 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。

● 当交易处于queue中时停止geth客户端,那么交易queue中的交易会被清除掉。

         第一个字段 AccountNonce ,直译就是账户随机数。它是以太坊中很小但也很重要的一个细节。以太坊为每个账户和交易都创建了一个Nonce,当从账户发起交易的时候,当前账户的Nonce值就被作为交易的Nonce。这里,如果是普通账户那么Nonce就是它发出的交易数,如果是合约账户就是从它的创建合约数。

为什么要使用这个Nonce呢?其主要目的就是为了防止重复攻击(Replay Attack)。因为交易都是需要签名的,假定没有Nonce,那么只要交易数据和发起人是确定的,签名就一定是相同的,这样攻击者就能在收到一个交易数据后,重新生成一个完全相同的交易并再次提交,比如A给B发了个交易,因为交易是有签名的,B虽然不能改动这个交易数据,但只要反复提交一模一样的交易数据,就能把A账户的所有资金都转到B手里。

当使用账户Nonce之后,每次发起一个交易,A账户的Nonce值就会增加,当B重新提交时,因为Nonce对不上了,交易就会被拒绝。这样就可以防止重复攻击。当然,事情还没有完,因为还能跨链实施攻击,直到EIP-155引入了chainID,才实现了不同链之间的交易数据不兼容。事实上,Nonce并不能真正防止重复攻击,比如A向B买东西,发起交易T1给B,紧接着又提交另一个交易T2,T2的Gas价格更高、优先级更高将被优先处理,如果恰好T2处理完成后剩余资金已经不足以支付T1,那么T1就会被拒绝。这时如果B已经把东西给了A,那A也就攻击成功了。所以说,就算交易被处理了也还要再等待一定时间,确保生成足够深度的区块,才能保证交易的不可逆。

Price 指的是单位Gas的价格,所谓Gas就是交易的消耗,Price就是单位Gas要消耗多少以太币(Ether),Gas * Price就是处理交易需要消耗多少以太币,它就相当于比特币中的交易手续费。

GasLimit 限定了本次交易允许消耗资源的最高上限,换句话说,以太坊中的交易不可能无*地消耗资源,这也是以太坊的安全策略之一,防止攻击者恶意占用资源。

Recipient 是交易接收者,它是common.Address指针类型,代表一个地址。这个值也可以是空的,这时在交易执行时,会通过智能合约创建一个地址来完成交易。

Amount 是交易额。这个简单,不用解释。

Payload 比较重要,它是一个字节数组,可以用来作为创建合约的指令数组,这时每个字节都是一个单独的指令;也可以作为数据数组,由合约指令来进行操作。合约由以太坊虚拟机(Ethereum Virtual Machine,EVM)创建并执行。

V、R、S 是交易的签名数据。以太坊当中,交易经过数字签名之后,生成的signature是一个长度65的字节数组,它被截成三段,前32字节被放进R,再32字节放进S,最后1个字节放进V。那么为什么要被截成3段呢?以太坊用的是ECDSA算法,R和S就是ECSDA签名输出,V则是Recovery ID。

R,S,V是交易签名后的值,它们可以被用来生成签名者的公钥;R,S是ECDSA椭圆加密算法的输出值,V是用于恢复结果的ID
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找几本一流的小说。类型' 完结什么的无所谓. 不要幼稚就好 沈阳职高学校排名 沈阳哪个公办职高和中专好 沈阳有哪些职高学校比较好? gpw一代和二代的区别有哪些 罗技gpw一代和二代区别介绍 第一代和第二代的区别 gpw二代和一代有什么区别 二代和一代区别详情分享 设张举措的意思设张举措的解释设张举措接龙 设张的成语设张的成语是什么 人字地砖铺法怎么找平方 吃荤腥还能念地藏经吗? 吃了熟蒜能念经么? 僧人吃蒜后,多久不能入僧团。 国庆节高速免费多长时间 国庆几点上高速免费? 国庆节高速免费时间是什么时候? 怎么快速采集网易考拉海购中的多个商品图片? win8.1应用商店打不开怎么办 解决方法 w8.1系统账户问题 银魂里的PTA是什么意思 途岳和探岳哪个好?哪款车更省油? 大众途岳怎么样口碑怎么样 大众途岳真实口碑怎样? 大众途岳的油耗是多少 大众途岳真实油耗是多少? 怀孕一个月可以吃烤羊腿么 ...光标就无限自动输入光标,不用点鼠标也如此!在word窗口底下的行,列数... 八珍糕是谁发明的 为什么以前我们费劲去改的手机铃声,现在没人改了呢? 《铃声》 ETH开发实践——批量发送交易 杭州22岁女孩熬夜加班猝死,长期熬夜对身体的危害有哪些? 90后男子因不良生活习惯猝死,熬夜的危害都有哪些? 上海死亡的33岁病例,诊断为心源性猝死,这种病症该如何预防? 在微信朋友圈里那些刷投票怎么弄吗 全国个人征信怎么查询 这些方法可以使用 从0开始学sql语法 急救求助啊~液晶显示器的面板坏了谢谢了,大神帮忙啊 显示器面板坏了? 液晶显示器表面破裂了,可以修吗?要多少钱? 做四维怎样让宝宝动起来 四维怎么让宝宝动的欢 查四维孩子趴着的有什么办法 ...书法爱好者,想给自己起个字号和斋号,请书法大家们帮帮忙,谢谢_百度... 我是写书法的,我想刻个印章,想起一个字号(文雅点的)应该起什么呢? 从军行 王昌龄 翻译 我还要遇见几个你,才能不想你。我还要拒绝几个你,才会忘记你。怎么都... 遇见几个你,才能忘记你 你所没听过的三个生命数字 无可奈何的爱情个性说说:有些人,不能爱,有些人,爱不来 伤感心情说说句子一段话 等一个不值得的人,不如爱一个值得爱的人