区块链双花问题扩展 区块链如何解决双重支付问题

皕利分享 129 0

今天给大家聊到了区块链双花问题扩展,以及区块链如何解决双重支付问题相关的内容,在此希望可以让网友有所了解,最后记得收藏本站。

在区块链中,双花问题是什么问题呢?

什么是双花问题呢区块链双花问题扩展? 

双花问题,简单讲就是一笔钱能被花两次三次很多次。为什么双花问题会成为比特币系统里面一个这么重要的问题呢?

原因就在于:比特币,是虚拟货币,它是虚拟的,通过代码形式呈现出来的,是可以被复制下来的。一旦被攻破区块链双花问题扩展了代码漏洞,那么就可以循环使用同一笔比特币,这样一来,比特币这种“钱”就会变得很鸡肋。

我们想一下,要是一笔钱可以花很多次,区块链双花问题扩展你有500块钱,你去买一件500块钱的衣服,还能循环使用,再去买一双500块钱的鞋,这样一来,钱还能叫钱吗?

所以,中本聪在设定比特币系统的时候,区块链双花问题扩展他所有的技术手段基本上都是围绕着解决

“双花问题”的,来保护比特币作为一种货币,它自身的一个支付手段职能。

其实,这个双花问题在我们现在的中心化世界里面根本不是问题,因为有银行,钱的交易结算都是通过银行,很安全,有问题直接找银行。

但是,在去中心化世界里面呢,没有银行这样一个中心机构,还必须保证一笔钱只能花一次,怎么样实现在去中心化的前提下,杜绝“双花问题”呢,这是一个难题。

这里插一句,中本聪为什么如此执着的追求“去中心化”呢,自找烦恼吗?不是,他希望能够通过去中心化,来解决一些社会问题,其中最主要的问题就是:因为权力机构过量发行货币造成的通货膨胀。

所以,我们总结一下他的逻辑:中心化的货币增发导致通货膨胀——所以我们要实现去中心化——去中心化要面临很多问题,最大的问题是双花问题——所以我们要解决双花问题——怎么解决双花问题?

这里,中本聪就引入区块链双花问题扩展了UTXO和“时间戳”概念,依靠这两种手段来解决双花问题。

入门科普:什么是双花?

想要区块链双花问题扩展了解区块链,首先要熟悉区块链相关区块链双花问题扩展的各种名词。就比如我们今天讲到的“双花”,可能有人就要问,双花是什么花?哈哈哈,开玩笑,让我们来学习一下什么是“双花”吧。

01

“双花”是什么?

双重支付又名“双花”,也就是双重花费的意思。 举个例子:如果我钱包里面有100元,我可以去购买等值的物品。当我去商店后,发现台灯和桌子都是100元,那我只能买其中一样东西。而我们所说的双花问题,正好与之相反,同样的100元,我可以购买两样东西。

在加密货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产被重复使用的情况 ,这也称之为双花,又叫双重消费攻击。

02

双花问题是如何发生的?

在区块链系统中,双花问题会在以下情况下出现:

1、由于共识机制导致区块确认时间长,用一个数字货币去进行一次交易,可以在这笔交易还未被确认完成前,进行第二笔交易。

2、 控制算力来实现双花 ,第一次交易被验证通过并被记录入区块后,在该网络中有更高的算力验证出新的更长链条,在该链条中这笔钱被第二次花费,由于第二次花费的区块链条更长使第一次交易区块所在链条为无效链条,这样一来,第一次交易所在的区块链被区块链网络放弃,第一次花费的钱就又回到自己账户了,就导致了双花问题。

03

比特币如何避免双花问题?

为了解决双花问题,我们日常的数字资产使用依赖于第三方信任机构进行。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统, 比特币通过UTXO、时间戳等技术的整合来解决双花问题。

1、首先每笔交易都要先确认对应比特币之前的情况,要检查它是否存在于用户的UTXO中。如果不在,那么该交易会被系统拒绝。

2、如果用户用同一笔UTXO付给两个人,系统中的节点只确认先接收到的那一笔。

3、当两笔时间上很接近的交易被不同节点确认,区块链将发生分叉。剩余节点选择在他们认为的最长链上构建新的区块。

4、当其中一笔交易被6个节点确认后,它将成为系统最长链,可以认为这笔交易获得了最终的确认。

Filecoin网络双花事件始末,什么是双花?

3月18号,正在广大投资者沉浸在FIL币要突破100U新高的狂欢中时,晚间多个媒体报到出Filecoin主网疑似出现双花漏洞,多家头部交易所关闭了FIL币的充值功能,一度FIL币价下调到74U。

随后Filecoin官方立刻对此进行了调查,称并没有发现网络问题或者API漏洞,出现此问题的的根本原因是交易所Lotus API被不正确使用所导致,并且只有一个交易所受到这个问题的影响。Lotus团队正在与所有的交易所合作,纠正他们对API的使用,确定使用规范。

各大媒体相继转发官方报道澄清事实,到此,此次Filecoin主网双花问题基本告一段落。

大家或许有疑问,什么是“双花问题”?为什么会造成这么大的影响,简单的说按照字面意思,就是一笔钱花了两次或者多次,就好比我花100元用支付宝购物,结果支付宝系统出BUG,而我的余额中并没有扣款,接着我再用这100元去吃饭,这就是双花问题!如果这样也行的话,那区块链将没有任何信任可言了。

双花问题是怎么产生的

1、控制超过51%的算力:当第一次的交易通过验证并记录在区块中后,在该网络中以更好的算力验证出新的区块链条,并且在新的链条中将这笔数字资产第二次花费,因新的区块链条更长,这样就导致第一次交易所在的区块链条就被放弃,第一次花费的数字资产就会回到账户,这就造成了双花。所以在Filecoin网络,官方也控制了单一节点的有效算力不能超过全网的20%,这也是为了避免出现控制全网算力的现象,并且现在Filecoin网络有效算力已经达到3.377EB,进行算力的攻击成本太高;

2、时间差:由于共识机制,导致区块确认时间长,用一定数量的数字货币进行交易,在这笔交易还没有确认之前完成之前,再次进行二次交易;

历史 上出现过哪些“双花漏洞”

2018年一矿工控制至少BTG(比特黄金)51%算力,成功在交易所窃取38万枚BTG,现价值高达1200万美元;

2019年攻击者租借超过51%算力,进行双花攻击,获利最少5.4万枚ETC,现价值约65万美元;

潜藏在货币流转特性中的秘密,DCEP如何优雅地解决“双花问题”

上一篇文章我们已经谈过,账户体系可以完美地解决数据作为货币会产生的双花问题,但由于这种账户机制,会使得货币的流转丧失并行的特征,很难在一个独立的系统当中容纳大量的交易同时进行。

那么,我们如何才能让这些账户可以实现数据的并行化处理呢?

换一个思路来思考账户结构。

我们之前的账户体系当中,不同的用户账户所记录的是一个数字,我们利用一个数字来表示一个用户手中所持有的货币的数量。但现在我们不再使用一个数字来表示账户的货币数额了,而是将每个货币都变为一个独立的数据段记录在账本当中。

当用户要进行交易的时候,只需要选择一部分货币,并将这这些货币复制给新的用户,同时将原本用户手里的货币标记为作废即可。

假设张三的账户中存在着100张代表着一元的货币,每一个一元货币都有着独一无二的编号,那么当张三向李四转移50块钱的时候,张三只需要在自己的账户当中选择出这50张货币,告诉账户的管理者,我要把这50张货币转移给李四。而账户的管理者在收到这样的一个信息请求之后,他就会把这50张货币在账户当中标记为作废。与此同时,在李四的账户当中产生50张新的一元货币。

这种处理方法也就是现在所谓比特币UTXO结构所采用的一种方式。它的优点在于可以允许货币同时由多个账户转向多个账户。交易过程中系统会自动加上时间戳,如果用户用同一笔UTXO付给两个人,系统中的节点只确认先接收到的那一笔。

然而,实际上比特币的交易实现,并没有采用 50 张一元这种做法,而是让每一个货币都有自己的面额。

这也很好理解,因为既然货币是可以被生成和销毁的,那么为什么不直接生成一张50元呢,更加简单便捷。

在比特币账户账本中,货币是以一个字符串的形式来进行记录的。每一个货币都有自己的独立ID。这个ID是由UTXO交易哈希值与UTXO中的位置索引决定。

这种记账方式的优势在于交易逻辑清晰。它可以通过算法分析出交易之间的依赖关系,并将可以实现一定程度上的交易并行化处理。

尽管并行化的问题得以解决,系统中也存在了真实货币的概念,然而用户并没有真实拥有这些货币,它们被存储在区块链上。

既然如此,为什么我们不让用户 “拿着” 这些货币呢?

听起来这似乎只是一个简单的操作,只要将这个货币的数据记录从我们的账本上拿到用户手中即可。

但这一个小小的变化,却能使我们整个系统实现了质的飞跃。

实际上,这就是 DCEP 的设计逻辑。

让用户手中真实持有代表货币的字符串。这些字符串数据通过数字签名技术进行签名,保证货币确实由央行发行。

如此,整个DCEP体系摆脱了原有的账本。体系中流转的不仅仅是价值,而是现金。用户的所有交易行为都会被表达为加密字符串的交换过程。通过这样的方式,真正的实现了货币的流转流程与现金的等价关系。

这种方式可以真正让数字货币的流转方式模拟了真实货币的流转方式,与现有的任何一种账本记录的方式有着本质的区别。

在原本的账本形式中,用户所拥有的只是一个证明你身份的字符串,并不是现金。现金是被放在账本管理机构手中的。换言之,用户拥有的仅仅是货币的价值,而不是货币的物理属性。用户永远不知道管理机构利用自己的现金做了什么。

另外,生活中用户也并不关注储存在银行中的货币的编号。他们只需要在使用时,考虑货币的面额即可。而这样的设计会使得货币展现出与真实现金的不同特征。

例如,账户中记录的货币是可以被分割的,理论上这种划分是可以无限进行下去的。账户系统中两个相同的一元并无区别,他们都只是一个在系统中记录的数字。

说到这里,不得不提及一个来自于区块链行业的概念——NFT。

这个概念与银行账户的价值记录方式有所不同。它的全称是非同质化代币。

简单来说,就是每一张货币都不一样。如同现金,虽然两张一百元货币的价值都是一百元,但是他们在物理上却是不相同的。

现实中,每张真实的货币都是可以被任何人真实拿在手中的。钱的物理属性与价值被统一管理。每张货币也都拥有一个唯一的编号,这个编号可以用于追踪货币,同时也保证了货币本身的独立性。每一张货币都是不可分的。我们不能把一样百元大钞撕成两半,把其中的一半当作五十元来用。那么,如果我们需要调整货币的面额,就要把手中的货币进行兑换。

以上这两种系统的区别,本质上是现金与账户的区别。

从这个角度来讲,DCEP的设计模式,说明了它就是一种真实的现金。

它的任何属性,包括流通特性都与真实的现金是一模一样的。

而在此基础上,由于数据可以被远程传输和管理,DCEP又比现金有了更大的优势。

DCEP作为现金的一种表现形式,它的技术设计当然不可能是账户机制完成的。

尽管数字货币在到达用户的手中后,可以实现货币流通的并行化,但是考虑到由于数据本身是可以被复制的,而用于保证DCEP真实性的数字签名即使是在被复制之后,也能被正确的验证,我们仍然需要解决数字货币“双花问题”。

解决这种问题的方法就潜藏在现金货币的流转特性中。

之前已经说过,每一张现金上都是存在一个唯一的编号。

事实上,这个编号就是解决DCEP双花问题的关键。通过编号,我们就能很优雅地解决“双花问题”。

“双花问题”问题简单来说就是,支付方已经将一笔钱付给接收方,但却依旧拥有被转移货币的支配权。换言之,这笔钱同时被两个人所拥有了。

从这个角度上来讲,避免货币“双花”的核心点,就是保证同一时间,一个货币只能被一个人拥有。

在DCEP场景下,通过DCEP本身所具有的编号,我们就可以成功实现追踪每一张货币的所有者。

因此,在 DCEP 体系下,解决问题的方式就是构造一个登记中心,记录 DCEP 字符串编号与所有者身份编号的映射关系。

正如图中所述的流程,当Alice向Bob发送一笔数字货币时,Alice先向Bob发送自己所拥有的数字货币字符串。同时 Alice 也会向数字货币登记中心通知,告知数字货币登记中心自己的这张货币0x001的所有权已经发生了转移。数字货币登记中心会根据Alice所发送的数字签名信息验证Alice的身份,确保Alice真实确实是货币0x001的所有者的情况下,把这张货币的所有权记录修改为Bob。

虽然我们使用了一个登记中心用于记录所有货币转移过程的身份变化,但是这个中心并不会限制整个数字货币的性能。因为数字货币的登记中心所管理的每一张货币都是相互独立的,天然满足成为 Stateless 的特性。在这个基础上,整个系统是可以无限并行化扩展的,这也就意味着DCEP的核心系统理论上是可以对外提供无限扩展的高性能支持的。

至于Stateless,这是一个计算机术语。

Stateless的设计可以保证整个系统中不存在性能瓶颈。任何一个系统的设计只要满足Stateless的特性,那么这个系统的性能便可以被无限的扩展。

在整个数字货币登记中心系统中,每一张货币的所有权记录都是独立的,正如同真实的现金在社会中流转的过程。

某种意义上,DCEP的设计目标是为了全国乃至全世界的货币流转过程提供支持。这对整个系统的性能有很高的要求。

而DCEP所采用模拟真实现金流转过程的技术方案,既能巧妙地解决数字货币可能产生的双花问题,同时又借助于货币流转的并行化特征,保证货币的流转结算过程可以被完美地并行化处理。

无论从区块链上加密货币的形态上来看,还是从实现的技术特性上来看,DCEP 的设计模式可以说是与区块链完全不相同的设计模式。

本质上,区块链无论采取什么样的形式,它都是一种账本的形态,而 DCEP 的实现则是一种真实的现金。

显然,DCEP 的设计更加符合数字货币这个场景的需求。

区块链双花问题扩展的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链如何解决双重支付问题、区块链双花问题扩展的信息别忘了在本站进行查找喔。

标签: #区块链双花问题扩展

  • 评论列表

留言评论