今天给各位分享区块链双花问题的知识,其中也会对区块链两大创新进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
入门科普:什么是双花?
想要了解区块链,首先要熟悉区块链相关区块链双花问题的各种名词。就比如我们今天讲到区块链双花问题的“双花”,可能有人就要问,双花是什么花?哈哈哈,开玩笑,让我们来学习一下什么是“双花”吧。
01
“双花”是什么?
双重支付又名“双花”,也就是双重花费的意思。 举个例子:如果我钱包里面有100元,我可以去购买等值的物品。当我去商店后,发现台灯和桌子都是100元,那我只能买其中一样东西。而我们所说的双花问题,正好与之相反,同样的100元,我可以购买两样东西。
在加密货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产被重复使用的情况 ,这也称之为双花,又叫双重消费攻击。
02
双花问题是如何发生的?
在区块链系统中,双花问题会在以下情况下出现:
1、由于共识机制导致区块确认时间长,用一个数字货币去进行一次交易,可以在这笔交易还未被确认完成前,进行第二笔交易。
2、 控制算力来实现双花 ,第一次交易被验证通过并被记录入区块后,在该网络中有更高的算力验证出新的更长链条,在该链条中这笔钱被第二次花费,由于第二次花费的区块链条更长使第一次交易区块所在链条为无效链条,这样一来,第一次交易所在的区块链被区块链网络放弃,第一次花费的钱就又回到自己账户了,就导致了双花问题。
03
比特币如何避免双花问题?
为了解决双花问题,我们日常的数字资产使用依赖于第三方信任机构进行。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统, 比特币通过UTXO、时间戳等技术的整合来解决双花问题。
1、首先每笔交易都要先确认对应比特币之前的情况,要检查它是否存在于用户的UTXO中。如果不在,那么该交易会被系统拒绝。
2、如果用户用同一笔UTXO付给两个人,系统中的节点只确认先接收到的那一笔。
3、当两笔时间上很接近的交易被不同节点确认,区块链将发生分叉。剩余节点选择在他们认为的最长链上构建新的区块。
4、当其中一笔交易被6个节点确认后,它将成为系统最长链,可以认为这笔交易获得了最终的确认。
一句话解释区块链,你却为什么听不懂?
区块链区块链双花问题,现在这个概念异常火爆区块链双花问题,几乎哪里都在讲区块链双花问题,几乎人人都在谈。但是,真正懂的人似乎并不多。
你一定在网上看到过这样的文章:“X分钟告诉你什么是区块链”、“X张图讲清楚区块链”等等,但是看完后还是云里雾里。
你也一定听过,有人用一句话来解释区块链: 区块链,就是一个分布式账本。
确实是一句话,但是我知道,你还是没听懂。
你不懂什么是“分布式”,更不懂什么是“分布式账本”,尤其困惑的是:不就是个账本吗,怎么就成了要改变世界的技术了?
既然这样解释你听不懂,那么我尝试从另外一个角度来解释区块链。
当然,也是一句话。
让我们仔细想想,区块链技术无论多么高深莫测,也不过是一种工具而已, 只要是工具,就是用来解决某种问题的。
从这个角度说,区块链技术和你家里的榔头没有任何区别:榔头是种工具,要解决的问题就是墙上的钉子。
一种工具,如果它“ 是什么 ”很难解释清楚,那么就换个问题: 它解决了什么? 通过回答这个新问题,能否帮助我们最终理解这个工具?
举个例子:
艾卡哚司他尔(Epacadostater) 是一种极其复杂的分子化合物,代表了当今生物医学领域最高技术成果。如果讲定义,你几乎不可能给一个外行人说明白它是什么;但是从它所解决的问题出发,一句话就可以解释清楚这种神奇的药物: 它是一种治疗艾滋病的特效药物。
这次,我知道你一定懂了。不是因为你理解了 艾卡哚司他尔(Epacadostater) 的定义,而是因为你理解它所解决的问题:艾滋病。
所以,通过理解问题来理解工具,这种思维方式是完全可行的。
那么,区块链要解决的是什么问题?
简单的一句话解释: 区块链技术是一种解决双花问题的有效方案。
好吧,我承认骗你了,你还是没懂。不过先别打我,其实我们已经很接近了。
看看这两句话:
这两句话的关键在于:你明白 艾滋病 ,但你不懂“ 双花”问题 ,正是由于这种认知上的差异,导致你能听懂第一句,却听不懂第二句。
所以, 理解双花问题,是理解区块链的关键!
下面就解释下什么是“双花”问题”,虽然不是用一句话,但是也不难理解。
从我们日常用的微信开始,你一定熟悉下面两个场景:
表面看来,两种场景似乎差不多,但实际上,却有着巨大的差异!
你把照片发给别人,照片还在,但是发钱钱却没了,为什么?
也许你觉得本该如此:如果钱还在,人人岂不都有花不完的钱(梦想成真)!
不,这背后的道理一点都不平常。我来解释下为什么。
现在,我们每个人都要同时面对两个不同的世界:一个物理的现实世界,一个虚拟的网络世界(手机、电脑、互联网等),前者是由原子、分子组成,而后者的组成元素则是“数字”。我姑且把第二个世界称之为“数字世界”
“数字世界”是人类最伟大的发明之一,很多在现实世界中难以完成的任务,在“数字世界”中可以轻而易举的实现。
比如,在现实世界中,你有一张纸质照片,你希望分享给你远方的朋友,同时自己也想保留一份。要做到这点,你需要去照相馆复印,然后到邮局寄出。麻烦不说,还花时间。
而这一切在数字世界里,只需要你在手机上轻轻一点,一瞬间,你远方朋友就收到了这张照片。很方便。
为什么如此方便?
在现实世界中,分子原子是不容易复制的,也没有办法高速传输,而在数字世界里,数字极其容易复制,也可以高速传输(实际上,你在手机上发送照片,你是把这张照片的拷贝发出去,拷贝在数字世界是个很自然的事情)。
就是依赖这种特质,数字世界提供了远超现实世界的便利性,大大改变了我们的生活。
然而,人们发现这种便利性遇到一个巨大的困难: 如何在数字世界中传输“钱”?
在现实世界里,你把100元现金给你朋友,你的兜里自然少了这100元现金,而你朋友的兜里自然会多这100元现金。这种实物上的操作,不需要别人介入。
然而,在数字世界中,所有东西的组成元素都是数字,100元钱(或其他有价值的东西)和照片没有区别,都是数字。数字,就可以被轻易的复制和传输。
但是你显然不能用转照片的方法(复制数字拷贝)转钱,照片转走,你可以保留一份原件,但是钱转走了,你的钱不能保留。
换句话说, 数字世界中你的照片可以有无数份拷贝,而“钱”只能有一份。 “钱”在不同所有者之间流通的必须是它的“真身”,只是换了所有者而已,而不像照片一样可以有多个“分身”。
因为这种“唯一性”是和数字世界的天性不符,所以必须有额外的机制确保这点。否则,钱一旦可以被复制,那么你可以先把100元转给一个人,再把复制品转给其他人,等于一个100元被花了两次,这就是所谓的“双花问题(double spending)”。
综上,虽然“双花”问题可以让人人都有花不完的钱,但是,现代金融体系是绝对不能接受这点的。
怎么解决呢,之前的解决方案你很熟悉, 就是银行 ,由银行来负责记录每笔钱的所有者。
银行会给每人一个账户,在你交易完成后,银行会做如下操作:记录你的账户上少了100元,记录你朋友的账户上多了100元,100元只是换了所有者,并没有被复制。这里银行充当一个可信的中介。
但是银行系统有种种问题:
缓慢 ,转一笔钱可能要几天才能到账,这可不是数字世界该有的效率。
风险 ,银行对黑客攻击防不胜防。
昂贵 ,高昂的手续费,你懂得。
出于这些原因,我们不想让银行来做这个“中介”,那有没有其他办法,不需要任何中介,也能解决前面说的双花问题呢?
很长时间以来,答案是没有。
人们没有办法在一个没有银行的数字世界中解决双花问题。直到某天,一个天才想出了区块链技术,一切从此改变区块链双花问题!
区块链技术就是解决双花问题的有效方案。它让人类第一次在交易方面充分享受到了数字世界的优势,快速、安全、可靠而且廉价。有了区块链技术,你可以像发送照片一样转账给朋友,更重要的是,整个过程中 ~没~有~银~行!
完美!
下面是这篇文章的总结:
1. 不要从区块链的定义来理解区块链,而要从它解决的问题入手。
2. 现实世界由分子和原子组成, 不容易复制和传输。
3. 数字世界一切皆由数字组成,解决了现实世界不易复制和传输的问题, 但是带来新的双花问题。
4. 构建一个以银行为中心的网络,可以解决数字世界的双花问题, 但是又带来其他问题:效率低,成本高,安全性差等。
5. 区块链技术,解决了上面的问题。一句话的解释就是:区块链,是一种工具,能够在去中心化的数字世界中解决双花问题。
希望读到这里,你可以通过理解“双花”问题来理解区块链是做什么的。至于区块链具体是如何工作的,我会在后续的文章给大家介绍。
最后,艾卡哚司他尔(Epacadostater)是我杜撰的,没有这种东西。
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万美元;
双花理论是什么概念
在学习区块链的过程中区块链双花问题,大家一定对会听到“双花”这个词区块链双花问题,意思就是双重支付,或者更直白点就是一笔资金被花费区块链双花问题了两次。这篇文章区块链双花问题我们来简单的分析一下为什么会有双花,比特币是如何避免双花的。
在传统的交易中,因为有银行这样的中心化机构,所以是不会存在双花问题的:每一笔支付都将从你的银行账户中扣除相应的资金,所有的明细在银行都有记录。但是在比特币中,因为没有账户的概念,而是引入了UTXO即未花费交易输出。因为没有银行这样的中心化机构的保证,当发生一笔交易时就可能存在着双花的危险:比方说A有一个比特币,然后区块链双花问题他同时构造两笔交易T1和T2来花费这1个比特币,其中一个给了B,从B那里买件衣服,一个给了C,从C那里买双鞋。如果不引入某种机制来避免这种情况,那作为数字货币的比特币将没有任何存在的意义。接下来就来分析一下比特币是如何做到防止这种“双花”攻击的。
(1) 正常情况
首先我们来看看正常情况,说白了就是绝大多数时候,区块链的共识机制就能将双花消灭在萌芽状态。我们还是以上面提到的例子来做说明:
假设A构造了两笔交易T1和T2,将自己价值1btc的UTXO分别转给了B和C,妄图同时从B和C那里获得好处。然后A几乎在同一时间将构造好的这两笔交易广播至网络。
假设网络中的矿工节点先收到了交易T1,发现这笔交易的资金来源确实没有被花费过,于是将T1加入到自己的内存交易池中等待打包进区块。
大部分情况下,这个矿工节点会在不久后又收到交易T2,此时因为T2所指向的交易输入与已经加入交易池的T1相同,于是矿工节点会拒绝处理该交易。网络中其他的矿工节点都类似,因此A试图双花的尝试胎死腹中。
(2) 分叉情况
上面说的是正常的情况,但是也有非正常的情况要考虑:假设矿工节点M1和M2几乎在同一时间挖出了区块,并且很不幸M1挖到区块时只收到了交易T1,而M2挖到的区块时只收到了交易T2,这样交易T1和T2被分别打包进两个区块。因为这两个区块是差不多同一时间被挖出,于是造成了区块链的分叉:
网络中某些节点(可能是离M1近的)先收到了M1打包的区块BLK1,于是用该区块延长自己的区块链,而另外一些节点(邻近M2的)则先收到M2打包的区块BLK2,用该区块延长自己的区块链,于是整个区块链网络
潜藏在货币流转特性中的秘密,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 的设计更加符合数字货币这个场景的需求。
在区块链中,双花问题是什么问题呢?
什么是双花问题呢区块链双花问题?
双花问题区块链双花问题,简单讲就是一笔钱能被花两次三次很多次。为什么双花问题会成为比特币系统里面一个这么重要的问题呢?
原因就在于:比特币区块链双花问题,是虚拟货币,它是虚拟的,通过代码形式呈现出来的,是可以被复制下来的。一旦被攻破区块链双花问题了代码漏洞,那么就可以循环使用同一笔比特币,这样一来,比特币这种“钱”就会变得很鸡肋。
区块链双花问题我们想一下,要是一笔钱可以花很多次,你有500块钱,你去买一件500块钱的衣服,还能循环使用,再去买一双500块钱的鞋,这样一来,钱还能叫钱吗?
所以,中本聪在设定比特币系统的时候,他所有的技术手段基本上都是围绕着解决
“双花问题”的,来保护比特币作为一种货币,它自身的一个支付手段职能。
其实,这个双花问题在我们现在的中心化世界里面根本不是问题,因为有银行,钱的交易结算都是通过银行,很安全,有问题直接找银行。
但是,在去中心化世界里面呢,没有银行这样一个中心机构,还必须保证一笔钱只能花一次,怎么样实现在去中心化的前提下,杜绝“双花问题”呢,这是一个难题。
这里插一句,中本聪为什么如此执着的追求“去中心化”呢,自找烦恼吗?不是,他希望能够通过去中心化,来解决一些社会问题,其中最主要的问题就是:因为权力机构过量发行货币造成的通货膨胀。
所以,我们总结一下他的逻辑:中心化的货币增发导致通货膨胀——所以我们要实现去中心化——去中心化要面临很多问题,最大的问题是双花问题——所以我们要解决双花问题——怎么解决双花问题?
这里,中本聪就引入了UTXO和“时间戳”概念,依靠这两种手段来解决双花问题。
写到这里,本文关于区块链双花问题和区块链两大创新的介绍到此为止了,如果能碰巧解决你现在面临的问题,如果你还想更加了解这方面的信息,记得收藏关注本站。
标签: #区块链双花问题
评论列表