http://www.7klian.com

区块链如何反抗重放进攻?硬核详解唯链 TXID 方案

以太坊的办理

在以太坊上生意业务的独一性是这样实现的,以太坊在每笔生意业务中插手变量 AccountNonce,,而且划定只有在 AccounceNonce 和提倡生意业务的账户里的 Nonce 变量的最新值一致的环境下,生意业务才会被处理惩罚。请留意,Nonce 的数值记录了该账户今朝已经发送的生意业务数量。这样一来,一笔生意业务就能通过这个 Nonce 的值和提倡的账户地点独一来标示。

const origin = '0xa4d2050f24ed7EfF313B7E912D6e5BF96ce57B95' let id = '0x' + cry.blake2b256(signingHash, Buffer.from(origin.slice(2), 'hex')).toString('hex')

2)其次把步调一中计较出的哈希值和发送账户地点串联起来,然后再对其计较哈希值,获得最终的生意业务 TXID:

为了运行我的代码,你需要安装 thor-devkit.js,这是一个辅佐开拓者开拓 dApp 的 Typescript 开源库。你可以通过这个 链接,找到我的代码。

生意业务独一性

每个区块链都必需要有独一标示每笔生意业务 (TX) 的要领,不然它将很容易受到生意业务重放进攻。简朴来说,重放进攻指的是进攻者通过利用账本中已有的生意业务来欺骗系统。

let clauses = [{ to: '0x564B08C9e249B563903E06D461824b5d6b7F2968', value: "0x2a7ee2750fca8ea00000", data: '0x' }]

connex.thor.transaction('0x38fac25309ab5395f1725284af46af585988983945e67b77cf9916b1ddf13d4b').get().then(tx => console.log(tx))

好了,此刻我们已经计较出了该笔生意业务的 TXID,可以把它打印出来,与之前在 veforge 欣赏器上找到的 TXID 举办较量了。

唯链雷神区块链办理方案

唯链雷神区块链是一个基于账户的区块链系统,它通过以下要领来实现生意业务的独一性。首先,它从头界说了生意业务里的 Nonce 变量,使它成为一个完全由生意业务提倡者抉择的 64 位无标记整数。对付一笔生意业务,我们将计较两个哈希值,一个是不带签名的生意业务数据 RLP 编码的哈希值,然后我们把计较出来的第一个哈希值串联上生意业务提倡方的账户地点,并对其做哈希运算,获得第二个哈希值。第二个哈希值的长度为 256 位,在唯链雷神区块链上用来作为这笔生意业务的独一标示(TXID)。值得留意的是,TXID 的计较是不需要私钥来为生意业务签名的。

下图展示了我随后获得的功效:

0x38fac25309ab5395f1725284af46af585988983945e67b77cf9916b1ddf13d4b

这一设计对企业用户来说具有同样重要的意义。假设你是一个工场的认真人,你想要在区块链上注册产物,从而实现产物的追溯以及物流信息的可被验证性。假如是基于以太坊的生意业务独一性方案,当你的产物被绵绵不断地出产出来,并通过发送生意业务到区块链来试图注册它们的时候,任何一个生意业务的失败将导致后续所有生意业务被系统拒绝,产物注册失败。这对付你的工场来说是劫难性的,是不行接管的。假如是基于唯链雷神区块链的方案,整个流程将会变的流通并且利便打点。因为你所需要做的仅仅是在发送一笔生意业务之前,确保它 TXID 没有被利用过。其余的就是单独处理惩罚那些失败的生意业务即可(好比从头发送它们),这是因为失败的生意业务不会影响到其他的生意业务。

每个区块链都必需要有独一标示每笔生意业务 (TX) 的要领,不然它将很容易受到生意业务重放进攻。简朴来说,重放进攻指的是进攻者通过利用账本中已有的生意业务来欺骗系统。

在结构完子句之后,我们需要给生意业务的其他变量赋值。这里我们用之前在 console 中获得的系统返回值来赋值:

好了,此刻我来给各人讲一下代码。这里我们第一步做的是构建一个生意业务子句。对付那些不熟悉唯链雷声区块链生意业务模子的同学,我简朴说一下。每个唯链雷神区块链的生意业务都可以包括多个子句(Clause),每个子句包括变量 to,value 和 data,可以做凡是我们界说的生意业务的同样的工作。有了多子句布局,我们可以让一笔生意业务做跟多的工作,只要是这些工作都是由同一个地点提倡的。这样会大大提高效率,而且担保这些子句操纵的原子性。

之后,我们做的是构建生意业务:

对付一个雷同比特币的基于 UTXO 模子的区块链, 生意业务之间是彼此关联的,我们可通过汗青耗费记录来验证生意业务。然而,对付像太坊这种基于账户体系的区块链来说,这种验证独一性处所法不再合用。对付这类系统,我们需要在生意业务中插手一些特另外信息来到达生意业务的独一性。

一个简朴的演示

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!