当前位置:首页 > 数字货币资讯 > 正文内容

区块链重放攻击是什么意思(区块链安全系列)

区块链重放攻击是什么意思(区块链安全系列)

众所周知,比特币和以太坊在很多方面都有很多不同之处。例如在追踪用户拥有多少代币方面,比特币和以太坊就是通过两种完全不同的方式来进行。比特币使用基于未花费交易输出UTXO(Unspent Transaction Outputs)的模型,而以太坊则采用基于账户的方法。

比特币:未花费交易输出UTXO

比特币交易主要由几个部分组成,之前运用到UTXO的只有两点:

1、交易输入,即我们将要花费的代币;

2、交易输出,即谁将收到我们的代币。

一笔交易必须至少有一个输入和至少一个输出,也就是一笔交易的输出成为另一笔交易的输入。通过这种方式,代币的历史才可以追溯到它被开采的区块。

要理解这个系统是如何工作的一个很好的类比是,想象我们正在用现金购买产品。50美元的钞票。付款时,你可能会遇到以下情况之一:

1、产品售价10美元

你可以选择用一张10美元的钞票来支付,这样一来,这个交易就只有一个输入(10美元的钞票)和一个输出(收银员收到10美元的钞票)。

2、产品售价30美元

你仍然可以选择付款,但这次需要两张不同的钞票(10美元和20美元)。在这种情况下,交易有多个输入(10美元和20美元的钞票)和一个输出(收银员收到30美元钞票)。

3、产品售价45美元

你可以选择用50美元的钞票付款,这样收银员就会退给你5美元。这种情况相当于一个输入(50美元钞票)和多个输出(收银员45美元,返还5美元)。

4、产品售价55美元

你支付10美元和50美元,即60美元。收银员退给你5美元。这种情况相当于多个输入(10美元和50美元的钞票)和多个输出(收银员55美元,返还5美元)。

正如你所看到的,你给收银员的账单(以及你收到的账单)将在未来用于其他付款。同样,比特币交易的输出成为未来交易的输入。在它们被使用之前,它们是未花费的,因此被称为未花费交易输出(UTXO)。

如果你想知道你拥有多少现金,那么就需要将你钱包中所有纸币和硬币的价值相加。而在比特币的情况下,钱包会跟踪与用户密钥相关联的UTXO。这样他们就知道用户拥有多少代币。

以太坊:账户模型

理解以太坊基于账户模型的一个很好的类比是假设一个银行账户。客户的账户中有一定数量的资金。如果客户A向客户B转账5美元,假设客户A至少有5美元,则客户A的账户将借记5美元,客户B的账户将贷记5美元。简而言之,这就是以太坊账户的工作方式。

此外,还有两种类型的帐户:

外部拥有账户(EOA):它们由用户通过私钥控制。

合约账户:这些账户由智能合约代码控制。由于它们不受私钥控制, 因此无法发起交易。发送到智能合约的交易可能会导致该合约调用其他合约的函数。

所有帐户都有以下字段:

1、余额:账户所拥有的ETH余额;

2、Nonce : 账户产生的确认交易数量。

3、存储:永久数据存储,仅供智能合约使用(对EOA不适用);

4、代码:仅用于智能合约(EOA没有任何代码)。

以太坊中的所有交易都是由EOA发起的,EOA和合约账户都可以接收和发送ETH:

1、如果收款账户是EOA,其余额会增加;

2、如果接收账户是合约账户,其代码将被执行。反过来,这个智能合约可以调用另一个智能合约。例如,将ETH发送到另一个智能合约,或者将ETH发送到EOA等等。

合约仅在帐户调用时运行。它们可以从EOA或其他智能合约中调用,但最终,一切都源于由EOA创建的交易。

双花攻击

当同一代币被多次使用时,就会发生双花攻击。如果你有一张10美元的钞票,你不能花两次,因为一旦你付了钱并把它交给别人,那么它就不会在你的控制之下。但是,对于数字货币该如何确保相同的代币不会在不同的交易中使用呢?

比特币如何解决双花攻击

当在交易中使用代币时,该代币就会从UTXO集中删除。类似地,当新交易出现时,它们的输出就被添加到UTXO集合中。因此,避免双花攻击就像检查您尝试花费的代币是否是UTXO集和的一部分一样简单。如果是,你可以放心地使用它。否则,它就已经被花掉了。并且每个完整节点维护所有UTXO的列表,这使得验证变得非常快速。

重放攻击

由于您无法在以太坊中跟踪单个代币,因此双花攻击的概念在以太坊中并不适用。而在以太坊中最需要防止的则是重放攻击(Replay Attacks)。

以太坊如何防止重放攻击

想象一下,假设你想买一辆车,你向经销商发送了10个ETH后收到了汽车,经销商收到了10个ETH,你们都很高兴。而在这笔有效的交易中,如果经销商一遍又一遍地向以太坊网络发送相同的交易,以此来有效地耗尽您的账户,那么这就是所谓的重放攻击。

以太坊使用Nonce的概念来解决这个问题。在密码学中,Nonce是一个在密码通信中只能使用一次的数字 。在以太坊中,Nonce是一个与账户相关联的数字,代表从该账户发送的交易数量。如果是合约账户,则代表合约已创建(未调用)的合约数量。

Nonce是如何工作的

在交易进行时,你的交易将包含一个Nonce值,使其独一无二。如果攻击者尝试重放相同的交易,节点将看到从你的地址到具有该Nonce的经销商地址的该数量的ETH的交易已经被处理,然后该交易就被视为重复交易。

需要注意的是,攻击者只能尝试创建完全相同数量的交易。如果攻击者要更改数量,这将使签名无效,使其成为节点将拒绝的无效交易。另外,无论你将ETH发送到哪个地址,你的下一笔交易都会增加Nonce 。

这种机制不仅可以防止重放攻击,而且还允许事务按特定顺序执行。如果你发送一系列Nonce 为3、4和5的交易,即使先收到Nonce为4和5的交易,它们也会留在内存池中,直到带有Nonce 3的交易被确认。除非你正在编写代码来发送交易,否则不需要担心这个问题。一切都将由你的钱包处理。

分享给朋友:

相关文章

pi币啥时候上市(派币上市时间行情)

pi币啥时候上市(派币上市时间行情)

pi币啥时候上市如果你也喜欢虚拟币,想了解虚拟币排行榜,交易所推荐,币种选择,最新资讯行情价格等,欧易财经有的是你想看的,今天 让我们一起来看看: 1.pi币于2020年上市。 2.不一定,...

omg币官网最新消息(行情价格趋势)

omg币官网最新消息(行情价格趋势)

可扩展性是加密行业最明显的问题之一。对于使用最多的区块链网络质疑的Ethereum来说,难以扩展是一个更大的问题。 根据YCharts的数据,Ethe...

比特币区块链虚拟货币区别(简单一文概括)

比特币区块链虚拟货币区别(简单一文概括)

比特币区块链虚拟货币区别 币圈各种各样的最新资讯尽在欧易财经,最近FTX交易所提币闹得币圈沸沸扬扬,让整个币圈的投资者们都很心慌,比特币暴跌,以太坊价格上涨,SHIB币狗狗币泰达币莱特币等币种消息通...

比特币源码目前现状和比特币源码多少行详细介绍

比特币源码目前现状和比特币源码多少行详细介绍

本篇文章给大家谈谈比特币源码,以及比特币源码多少行对应的知识点,币圈网致力于为用户带来全面可靠的币圈信息,希望对各位有所帮助! 比特币源码研读一:椭圆曲线在比特币密码中的加密原理 参加比特币源码...

ETH币项目如何?

ETH币项目如何?

以太访这个其实不用过多介绍,V神的力作,区块链2.0的代表,也是引领了ICO发币狂潮,作为公链虽然现在EOS对其有威胁,ETH也还在不断的改善和升级当中,为了改进以太访网络拥堵问题V神已经提出方案,也...