其实区块链 双花攻击的问题并不复杂,但是又很多的朋友都不太了解区块链双花攻击,因此呢,今天小编就来为大家分享区块链 双花攻击的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
本文目录
区块链是如何解决信任问题的?
合作是人类文明最重要的推动力量,没有信任,就没有合作。合作的阻力是影响人类社会文化发展的关键因素。在中心化的世界中,如何解决信任问题,一直以来都是无法得到根本解决的难题。
区块链是人类有史以来第一次通过技术手段解决信任问题,这也是区块链的核心价值。区块链其最高境界是建立共识信任体系,一种被动的信任模式。通过这种共识的连接形成一个完整的共同体;依靠一切生命的力量来抵御内心的恐惧,敢于信任,拥抱合作。
与传统技术的最大区别是,区块链是一种分散式信任机制。区块链技术尝试打破中心化信任的垄断和崩塌风险,用去中心化的思路尝试构建全新、更加健壮的信任体系。可以说,信任是区块链核心的核心,价值、通证、资产等都是构建在其上的延伸。
区块链技术信任机制,其有以下3点重要的属性:
1)分散性:构建信用的节点和主题越分散,这套机制的可信度越强。具体包含分散信用的主体数(或节点数)越多,节点的分散性越强。
2)健壮性:狭义的健壮性,即主体间算力、投票权重的均匀程度
(bias),依赖于共识算法,不同区块链的实现,健壮性的衡量标准不同等。理论上不存在寡头、超级节点的网络更具可信度。广义的健壮性,则扩展到整套区块链方案层面。
3)安全性:由于区块链在一定程度是公开、多方参与来共同构建信用的机制,如果存在漏洞导致这套机制并不能按预设运行,那么这套信用机制以及构建在之上的应用将瞬间崩塌。
有没有从根本上实现分散式信任重建、以及这套机制是否足够分散、健壮和安全,是对行业里众多区块链方案进行评估的首要标准。
什么叫区块链?
区块链的概念那么到底什么是区块链呢?工信部指导发布的《区块链技术和应用发展白皮书2016》的解释是:狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。专业的解释或许有些拗口。顾名思义,区块链(blockchain)是一种数据以区块(block)为单位产生和存储,并按照时间顺序首尾相连形成链式(chain)结构,同时通过密码学保证不可篡改、不可伪造及数据传输访问安全的去中心化分布式账本。区块链中所谓的账本,其作用和现实生活中的账本基本一致,按照一定的格式记录流水等交易信息。特别是在各种数字货币中,交易内容就是各种转账信息。只是随着区块链的发展,记录的交易内容由各种转账记录扩展至各个领域的数据。比如,在供应链溯源应用中,区块中记录了供应链各个环节中物品所处的责任方、位置等信息。要探寻区块链的本质,什么是区块、什么是链,首先需要了解区块链的数据结构,即这些交易以怎样的结构保存在账本中。区块是链式结构的基本数据单元,聚合了所有交易相关信息,主要包含区块头和区块主体两部分。区块头主要由父区块哈希值(PreviousHash)、时间戳(Timestamp)、默克尔树根(MerkleTreeRoot)等信息构成;区块主体一般包含一串交易的列表。每个区块中的区块头所保存的父区块的哈希值,便唯一地指定了该区块的父区块,在区块间构成了连接关系,从而组成了区块链的基本数据结构。
数字货币的双离线交易的双花是如何防范的?
比特币如何防范“双花”问题
举个例子来说。在矿工矿池的节点进行打包时,不会将两个交易都打包。万一不小心都打包了。即使找到随机数。那其他节点也会验证时,拒绝承认这个区块打包成功。只有一个交易会从0确认到1确认。而有一个到1确认之后,另外一个就因不符合规则而失效了。而假设我有1个比特币,在两台机器上同时转给a和b两个人,这种情况是0确认双花。0确认双花一直都存在是系统原理,不是漏洞,不能也不需修复,因此呼吁比特应用,都要等待1确认,重要的交易甚至要等6确认,以避免孤立区块的情况。判断交易是否合理,不仅仅是矿池节点,任何一个核心节点都会进行。即查询历史区块链,判断交易的输出是否不大于输入。
如何防止黑客双花攻击?
什么是双花攻击?
“双花攻击”(doublespendattack)又叫“双重消费攻击”,通俗的理解,就是一笔资金,通过某种方式被花费了两次,取得了超过该笔资金的服务。
举一个夸张的例子
Hacker在银行有存款1000万,向商户A购买了一匹钢材,价值1000万;商户A支持通过支票支付的方式。
那么商户A是如何确认这张支票不是“空头”的呢?
他会向对应的银行(中心化的有认证资质的机构)去查询这张支票的拥有者是否账户上有足够1000万的余额可供提取。商户A查询的即时结果是:足额。所以商户A就(基于某种信任)hacker发货。
然后,hacker又到了商户B去购买了价值1000万的实木家具,同样是采用支票支付方式。过程同上。
上述过程中,hacker通过欺诈的手段(借助于可信任的中心化认证机构),将银行中的1000万资产消费了两次,获取到了两次的收益,这就是“双花攻击”。
双花攻击一般发生在数字货币领域。
怎么解决双花攻击正常情况
区块链的共识机制就能将双花消灭在萌芽状态。
假设hacker构造了两笔交易T1和T2,将自己价值1btc的UTXO分别转给了B和C,妄图同时从B和C那里获得好处。然后hacker几乎在同一时间将构造好的这两笔交易广播至网络。
假设网络中的矿工节点先收到了交易T1,发现这笔交易的资金来源确实没有被花费过,于是将T1加入到自己的内存交易池中等待打包进区块。
大部分情况下,这个矿工节点会在不久后又收到交易T2,此时因为T2所指向的交易输入与已经加入交易池的T1相同,于是矿工节点会拒绝处理该交易。网络中其他的矿工节点都类似,因此hacker试图双花的尝试胎死腹中。
分叉情况
假设矿工节点M1和M2几乎在同一时间挖出了区块,并且很不幸M1挖到区块时只收到了交易T1,而M2挖到的区块时只收到了交易T2,这样交易T1和T2被分别打包进两个区块。因为这两个区块是差不多同一时间被挖出,于是造成了区块链的分叉,
网络中某些节点(可能是离M1近的)先收到了M1打包的区块BLK1,于是用该区块延长自己的区块链,而另外一些节点(邻近M2的)则先收到M2打包的区块BLK2,用该区块延长自己的区块链,于是整个区块链网络中呈现出了不一致的问题。
像这种不一致问题,一般只需要一个确认就能得到解决:假设随后又收到新区块,而新区块是以BLK1作为父区块,那么之前用BLK1延长自己区块链的节点,只需要将新区块链接到自己的区块链上,而之前以BLK2延长自己区块链的节点,则需要切换到新的最长链上,如下图:
因此在出现分叉的情况下,通常也只需要等一个区块的确认时间网络节点中的区块链就可以重新一致,在这个例子中,经过一个区块的确认期以后,B最终确认自己收到A的1btc,而因为包含有转账给C的交易T2的区块BLK2位于备用链上,因此无法通过支付验证。hacker的双花尝试也以失败告终。
文章分享结束,区块链 双花攻击和区块链双花攻击的答案你都知道了吗?欢迎再次光临本站哦!