让我们回首一下适才餐厅的消费场景。Dan回到餐厅,这次在窗口上看到一个“此处接管比特币付出”的标签。他对上一次的用餐很是满足,所以他再次点了同样的套餐。耗费了他0.005 BTC。
双花问题是数字现金系统中的一个潜在问题,在该系统中,沟通的资金同时付出给两个吸收者。假如没有符合的机制,仅凭借协议是无法彻底办理双花问题的,用户无法验证是否本身所吸收的资金没有同时在其他处所被付出。
· 芬妮进攻(Finney attacks): 进攻者将一个生意业务预挖为一个区块,而没有当即将其广播到网络中。相反,他将沟通的代币耗费在另一笔生意业务中,然后才广播他之前所预挖的区块,这大概会使付出无效。芬妮进攻需要产生一系列相关联的工作,而且还取决于吸收者可以或许接管未经确认的生意业务。
正如我们所看到的,期待区块确认可以或许大大低完工为双花受害者的风险。
要向用户刊行雷同于现金的数字资产(具有匿名性和点对点生意业务属性),银行可以利用盲签方法-暗码学家David Chaum在1982年的论文《不行追溯的盲签付出方案》中对此举办了具体说明。
可是,亏得中心化的金融方案利用了盲签方法作为办理该问题的一种方法。厥后,事情量证明机制和区块链技能的建设催生了比特币,成为一种强大的去中心化钱币形式,这种形式可以或许有效防御双重付出的产生,这反过来又引发了成千上万其他加密钱币项目。
此刻,上面所有的生意业务记录都已经查对无误,假如Erin但愿以同样的方法利用她的账户余额,则必需在银行账户上执行沟通的操纵。
“双花”问题大概会让某些用户在电子现金系统上多次利用同一笔资金,谋取不妥的经济收益。在传统上,该规模也缺乏相对应的办理方案。
可是,如前所述,该生意业务仅可以或许在被区块链确认后才气有效。假如在没有区块链确认的环境下就确认吸收到该笔资金,就像接上一案例中吸收40美元的eCash一样,假如不当即通过银行兑现,发送方可以将该笔资金又在其他处所。因此,我们发起Erin在确认Dan的付款之前至少期待6个区块确认(约莫1个小时)。
总结
在数字现金方面,确保特定的钱币单位不行反复是至关重要的。假如Alice可以吸收10个钱币单位,并可以将其复制粘贴10次,然后发明本身拥有了100个钱币单位,那么整个系统将受到粉碎。同样,假如她可以同时将沟通的10个钱币单位同时发给Bob和Carol,则这样机制将无法正常事情。因此,为了使数字钱币可以或许正常运行,必需有符合的机制来防备这种行为的产生。
· 51%进攻:单个实体或组织设法节制高出50%的哈希算力,这使他们可以删除或修改生意业务的顺序。这种进攻在比特币网络上产生是极不行能的,但在其他区块链网络中大概产生过。
中心化方法比去中心化方案更容易实施。凡是,需要布置一名监视员来打点系统并节制单元的刊行和分派。大卫·肖姆(David Chaum)的eCash就是通过中心化方法办理双花问题的一个有效例子。
Chaumian eCash的配置对付私人转账十分有代价。可是,由于银行是中心化节点,大概存在单点妨碍,因此,某些环境下是无法正常事情的。而某种水平上,银行所刊行的资产大概一文不值,因为其代价完全是凭据银行的愿意,然后将其兑换成美元。客户会受银行阁下,必需依靠银行的诺言背书才气浮现代价。这也正是加密钱币旨在办理的问题。
Dan可以消除盲因子,以袒露与每个数字现金“账单”相关的随机数,该随机数可以用作每个单位的独一标识符(很是雷同于序列号)。他向Erin透露了个中的两个,Erin此刻必需当即向银行申请验证这笔资金,以防备Dan将其付出给其他人。银行将查抄签名是否有效,假如一切正确,它将向Erin的帐户中存入40美元。
在这种环境下,假如某个用户(Dan)但愿在银行账户中支取100美元的数字现金,则必需先通知银行。假如他的帐户中有余额,那么他将生成一个随机数(对付较小的面额,则需要生成多个)。假设他生成了五个随机数,每个数字代表的代价为20美元。为了防备银行可以或许追踪到特定的钱币单位,Dan通过为每个随机单元添加盲因子来夹杂随机数。
· 比赛进攻(Race attacks): 利用沟通的资金持续广播两个斗嘴的生意业务,但只有一项生意业务获得确认。进攻者的方针是通过验证对他有利的生意业务来使另一个付出无效(譬喻,将沟通的资金发送到他节制的地点)。比赛进攻一般要求吸收者在生意业务未经确认前,就确认该笔付出已到账。
Erin向他展示了一个民众地点,他必需将资金发送到该地点上。Dan付出后,,广播了该生意业务,这实质上是一个已签名的动静,指出Dan拥有的0.005 BTC此刻已经在Erin的手中。无需过多透露细节,任何与Dan举办了签名生意业务的人都可以验证他确实拥有这些代币,因此有权发送它们。
如何防备双重支出的产生?
什么是双重支出?
比特币白皮书中提出的最大创新是双花问题的办理方案。中本聪提出了一种数据布局,尽量此刻没有这样引用,但它此刻被遍及称为区块链。
中心化方法
比特币双花问题
去中心化方法
可是,针对某些未确认生意业务,大概呈现少数的双重支出进攻。譬喻,对付某些代价较低的消费场景,商家大概不会期待生意业务被区块链验证才举办确认。繁忙的快餐店大概无法期待每笔购物生意业务都在区块链长举办验证。因此,假如一家企业启用了“即时”付款,那么就大概产生双花支出。有人大概会点一个汉堡,然后举办付出,同时他会当即将沟通的资金发送到他们本身的地点。当后头这笔生意业务的手续用度较高时,后头的生意业务很大概会首先被确认,因此将使先前的生意业务无效。
假如生意业务被区块链正式确认,则代币就不行能被反复利用,因为所有权已分派给新用户,而且整个网络都可以对此举办验证。出于这个原因,很多人发起在接管有效付款之前先期待多次确认。随后的每个区块的验证,城市对修改或重写区块链,增加极大的事情量(雷同于产生51%进攻)。
有两种双花进攻的普遍方法:
比特币通过经心设计,至少现阶段按预期利用协议时,可以有效防备双重支出进攻。也就是说,假如我们期待区块中的生意业务确认,则发送者没有简朴的要领可以除掉它。为此,他们将需要“反转”区块链,这需要很是复杂的哈希计较资源。
用户广播生意业务时,不会当即将其添加到区块链中,必需首先通过挖矿将其打包在区块中。这样,吸收者在确定生意业务已经添加到区块链之后,才可以认为该生意业务有效。不然,他们有失去资金的风险,因为发送方大概在其他处所付出了沟通的代币。
区块链实际上只是具有某些奇特属性的数据库。网络上的参加者(称为节点)运行专门的软件,该软件使节点可以或许将其数据库副本与其他节点举办同步。促使整个网络都可以从创世区块开始,审核和追溯链上产生的生意业务。通过果真查察区块链,可以很容易地检测和防备欺诈行为勾当,譬喻识别出举办双花支出的生意业务。
在没有监视机制的生态系统中如何确保不产生“双花”付出,是相当更具挑战性的。具有同等本领的参加者必需凭据一组法则举办协商,防备欺诈的产生,并鼓励所有用户诚信策划。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。