区块链中孤块 区块链的块

皕利分享 104 0

今天给各位分享区块链中孤块的知识,其中也会对区块链的块进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

详解比特币挖矿原理

可以将区块链看作一本记录所有交易的公开总帐簿(列表)区块链中孤块,比特币网络中的每个参与者都把它看作一本所有权的权威记录。

比特币没有中心机构区块链中孤块,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。

至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。

通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。

在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。

在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。

每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表区块链中孤块

交易的语法和数据结构必须正确。

输入与输出列表都不能为空。

交易的字节大小是小于MAX_BLOCK_SIZE的。

每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。

没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。

nLockTime是小于或等于INT_MAX的。

交易的字节大小是大于或等于100的。

交易中的签名数量应小于签名操作数量上限。

解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。

池中或位于主分支区块中的一个匹配交易必须是存在的。

对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。

对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。

对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。

对于每一个输入,引用的输出是必须存在的,并且没有被花费。

使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。

如果输入值的总和小于输出值的总和,交易将被中止。

如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。

每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。

以下挖矿节点取名为 A挖矿节点

挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。

验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。

A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。

一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:

High Priority 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。

然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。

如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。

在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。

UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。

块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。

区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。

A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。

用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,区块链中孤块你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。

需要以下参数

• block的版本 version

• 上一个block的hash值: prev_hash

• 需要写入的交易记录的hash树的值: merkle_root

• 更新时间: ntime

• 当前难度: nbits

挖矿的过程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) TARGET

上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。

简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要区块链中孤块你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。

如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?

比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。

那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。

为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。

举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。

比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。

每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。

比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。

节点维护三种区块:

· 第一种是连接到主链上的,

· 第二种是从主链上产生分支的(备用链),

· 第三种是在已知链中没有找到已知父区块的。

有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。

如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。

选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。

因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。

当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。

分叉之前

分叉开始

我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。

假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。

比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。

分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。

所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。

从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。

比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。

【科普】如何选择区块链的最长链

本文由币车HIT( biche.yaofache.com )大V养成计划支持。

基于逐利,节点就会自发的遵守协议。共识就是数以万计的独立节点遵守了简单的规则(通过异步交互)自发形成的。

比特币没有中心机构,几乎所有的完整节点都有一份公共总帐本,那么大家如何达成共识:确认哪一份才是公认权威的总账本呢?

为什么要遵守协议

这其实是一个经济问题,在经济活动中的每个人都是自私自利的,追求的是利益的最大化,一个节点工作量只有在其他的节点认同其是有效的(打包的新区块,其他的节点只有验证通过才会加入到区块链中,并在网络上传播),才能够过得收益, 而只有遵守规则才会得到其他的节点认同。 因此,基于逐利,节点就会自发的遵守协议。共识就是数以万计的独立节点遵守了简单的规则(通过异步交互)自发形成的。

去中心化共识

实际上,比特币的共识由所有节点的4个独立过程相互作用而产生:

每个节点(挖矿节点)依据标准对每个交易进行独立验证;挖矿节点通过完成工作量证明,将交易记录独立打包进新区块;每个节点独立的对新区块进行校验并组装进区块链;每个节点对区块链进行独立选择,在工作量证明机制下选择累计工作量最大的区块链;共识最终目的是保证比特币不停的在工作量最大的区块链上运转,工作量最大的区块链就是权威的公共总帐本。

最长链的选择

先来一个定义,把累计了最多难度的区块链。在一般情况下,也是包含最多区块的那个链称为主链

每一个(挖矿)节点总是选择并尝试延长主链。

分叉

当有两名矿工在几乎在相同的时间内,各自都算得了工作量证明解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。 当这个两个区块传播时,一些节点首先收到#3458A, 一些节点首先收到#3458B,这两个候选区块(通常这两个候选区块会包含几乎相同的交易)都是主链的延伸,分叉就会产生,这时分叉出有竞争关系的两条链。两个块都收到的节点,会把其中有更多工作量的一条会继续作为主链,另一条作为备用链保存(保存是因为备用链将来可能会超过主链难度称为新主链)。

分叉解决

收到#3458A的(挖矿)节点,会立刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受#3458B区块的节点会以这个区块为链的顶点开始生成新块,延长这个链(下面称为B链)。 当原本以#3458A为父区块求解的节点在收到#3458B, #3459B之后,会立刻将B链作为主链(因为#3458A为顶点的链已经不是最长链了)继续挖矿。节点也有可能先收到#3459B,再收到#3458B,收到#3459B时,会被认为是“孤块“(因为还找不到#3459B的父块#3458B)保存在孤块池中,一旦收到父块#3458B时,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。

比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易确认更快地完成,也会导致更加频繁地区块链分叉。与之相对地,长的间隔会减少分叉数量,却会导致更长的确认时间。

区块链入门必备108知识点

区块链入门必备108知识点

(欢迎同频者交流)

1、什么是区块链

把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块。

每个区块里保存了上一个区块的 hash值,使区块之间产生关系,也就是说的链了。合起来就叫区块链。

2.什么是比特币

比特币概念是2009年 中本聪提出的,总量是2100万个。比特币链大约每10分钟产生一个区块,这个区块是矿工挖了10分钟挖出来的。作为给矿工奖励,一定数量的比特币会发给矿工们,但是这个一定数量是每四年减半一次。现在是12.5个。照这样下去2040年全部的比特币问世。

3.什么是 以太坊

以太坊与比特币最大的区别是有了智能合约。使得开发者在上边可以开发,运行各种应用。

4.分布式账本

它是一种在网络成员之间共享,复制和同步的数据库。直白说,在区块链上的所有用户都有记账功能,而且内容一致,这样保证了数据不可篡改性。

5.什么是准匿名性

相信大家都有钱包,发送交易都用的钱包地址(一串字符串)这就是准匿名。

6.什么是开放透明性/可追溯

区块链存储了从 历史 到现在的所有数据,任何人都可以查看,而且还可以查看到 历史 上的任何数据。

7.什么是不可篡改

历史 数据和当前交易的数据不可篡改。数据被存在链上的区块上,有一个hash值,如果修改该区块信息,那么它的 hash值也变了,它后边的所有区块的hash值也必须修改,使成为新的链。同时主链还在进行交易产生区块。修改后链也必须一直和主链同步产生区块,保证链的长度一样。代价太大了,只为修改一条数据。

8.什么是抗ddos攻击

ddos:黑客通过控制许多人的电脑或者手机,让他们同时访问一个网站,由于服务器的宽带是有限的,大量流量的涌入可能会使得网站可能无法正常工作,从而遭受损失。但区块链是分布式的,不存在一个中心服务器,一个节点出现故障,其他节点不受影响。理论上是超过51%的节点遭受攻击,会出现问题。

9.主链的定义

以比特币为例,某个时间点一个区块让2个矿工同时挖出来,然后接下来最先产生6个区块的链就是主链

10.单链/多链

单链指的是一条链上处理所有事物的数据结构。多链结构,其核心本质是公有链+N个子链构成。只有一条,子链理论上可以有无数条,每一个子链都可以运行一个或多个DAPP系统

11.公有链/联盟链/私有链

公有链:每个人都可以参与到区块链

联盟链:只允许联盟成员参与记账和查询

私有链:写入和查看的权限只掌握在一个组织手里。

12.共识层数据层等

区块链整体结构有六个:数据层,网络层,共识层,激励层,合约层,应用层。数据层:记录数据的一层,属于底层技术; 网络层:构建区块链网络的一种架构,它决定了用户与用户之间通过何种方式组织起来。共识层:提供了一套规则,让大家接收和存储的信息达成一致。激励层:设计激励政策,鼓励用户参与到区块链生态中;合约层:一般指“智能合约”,它是一套可以自动执行,根据自己需求编写的合约体系。应用层:区块链上的应用程序,与手机的app类似前分布式存储研发中心

13.时间戳

时间戳是指从1970年1月1日0时0分0秒0...到现在的当前时间的总秒数,或者总纳秒数等等很大的数字。每个区块生成时都有一个时间戳,表明生成区块的时间。

14.区块/区块头/区块体

区块是区块链的基本单元,区块头和区块体是区块链的组成部分。区块头里面包含的信息有上一个区块的hash,本区块的hash,时间戳等等。区块体就是区块里的详细数据。

15.Merkle树

Merkle树,也叫二叉树,是存储数据的一种数据结构,最底层是所有区块包含的原始数据,上一层是每个区块的hash值,这一层的hash两两组合产生新的hash值,形成新的一层,然后一层层往上,-直到产生一个hash值。这样的结构可以用于快速比较大量的数据,不需要下载全部的数据就可以快速的查找你想要的最底层的 历史 数据。

16什么是扩容

比特币的一个区块大小大约是1M左右,可以保存4000笔交易记录。扩容就是想把区块变大,能保存更多的数据。

17.什么是链

每个区块都会保存上一个区块的 hash,使区块之间产生关系,这个关系就是链。通过这个链把区块交易记录以及状态变化等的数据存储起来。

18.区块高度

这个不是距离上说的高度,它指是该区块与所在链上第一个区块之间相差的区块总个数。这个高度说明了就是第几个区块,只是标识作用。

19.分叉

同一时间内产生了两个区块(区块里的交易信息是一样的,只是区块的hash值不一样),之后在这两个区块上分叉出来两条链,这两条链接下来谁先生成6个区块,谁就是主链,另外的一条链丢弃。

20. 幽灵协议

算力高的矿池很容易比算力低的矿机产生区块速度快,导致区块链上大部分区块由这些算力高的矿池产生的。而算力低的矿机产生的区块因为慢,没有存储到链上,这些区块将会作废。

幽灵协议使得本来应该作废的区块,也可以短暂的留在链上,而且也可以作为

工作量证明的一部分。这样一来,小算力

的矿工,对主链的贡献比重就增大了,大型矿池就无法独家垄断对新区块的确认。

21.孤块

之前说过分叉,孤块就是同一时间产生的区块,有一个形成了链,另一个后边没有形成链。那么这个没形成链的块就叫

孤块。

22.叔块

上边说的孤块,通过幽灵协议,使它成为工作量证明的一部分,那它就不会被丢弃,会保存在主链上。这个区块就是下

23重放攻击

就是黑客把已经发送给服务器的消息,重新又发了一遍,有时候这样可以骗取服务器的多次响应。

24.有向无环图

也叫数据集合DAG(有向非循环图),DAG是一种理想的多链数据结构。现在说的区块链大都是单链,也就是一个区块连一个区块,DAG是多个区块相连。好处是可以同时生成好几个区块,于是网络可以同时处理大量交易,吞吐量肯定就上升了。但是缺点很多,目前属于研究阶段。

25.什么是挖矿

挖矿过程就是对以上这六个字段进行一系列的转换、连接和哈希运算,并随着不断一个一个试要寻找的随机数,最后成功找到一个随机数满足条件:经过哈希运算后的值,比预设难度值的 哈希值小,那么,就挖矿成功了,节点可以向邻近节点进行广播该区块,邻近节点收到该区块对以上六个字段进行同样的运算,验证合规,再向其它结点转播,其它结点也用同样的算法进行验证,如果全网有51%的结点都验证成功,这个区块就算真正地“挖矿”成功了,每个结点都把这个区块加在上一个区块的后面,并把区块中与自己记录相同的列表删除,再次复生上述过程。另外要说的是,不管挖矿成不成功每个节点都预先把奖励的比特币50个、所有交易的手续费(总输入-总输出)记在交易列表的第一项了(这是“挖矿”最根本的目的,也是保证区块链能长期稳定运行的根本原因),输出地址就是本结点的地址,但如果挖矿不成功,这笔交易就作废了,没有任何奖励。而且这笔叫作“生产交易”的交易不参与“挖矿”计算。

26.矿机/矿场

矿机就是各种配置的计算机,算力是他们的最大差距。矿机集中在一个地的地方就是矿场

27.矿池

就是矿工们联合起来一起组成一个团队,这个团队下的计算机群就是矿池。挖矿奖励,是根据自己的算力贡献度分发。

28.挖矿难度和算力

挖矿难度是为了保证产生区块的间隔时间稳定在某个时间短内,如比特币10分钟出

块1个。算力就是矿机的配置。

29.验证

当区块链里的验证是对交易合法性的一种确认,交易消息在节点之间传播时每个节点都会验证一次这笔交易是否合法。比如验证交易的语法是否正确,交易的金额是否大于0,输入的交易金额是否合理,等等。验证通过后打包,交给矿工挖矿。

30.交易广播

就是该节点给其他节点通过网络发送信息。

31.矿工费

区块链要像永动机一样不停的工作,需要矿工一直维护着这个系统。所以要给矿工们好处费,才能持久。

32.交易确认

当交易发生时,记录该笔交易的区块将进行第一次确认,并在该区块之后的链上的每一个区块进行再次确认:当确认数达到6个及以上时,通常认为这笔交易比较安全并难以篡改。

33.双重交易

就是我有10块钱,我用这10块钱买了一包烟,然后瞬间操作用这还没到付的10块钱又买了杯咖啡。所以验证交易的时候,要确认这10块钱是否已花费。

34.UTXO未花费的交易输出

它是一个包含交易数据和执行代码的数据结构,可以理解为存在但尚未消费的数字货币。

35.每秒交易数量TPS

也就是吞吐量,tps指系统每秒能处理的交易数量。

36.钱包

与支付宝类似,用来存储数字货币的,用区块链技术更加安全。

37.冷钱包/热钱包

冷钱包就是离线钱包,原理是储存在本地,运用二维码通信让私钥永不触网。热钱包就是在线钱包,原理是将私钥加密后存储在服务器上,当需要使用时再从服务器上下载下来,并在浏览器端进行解密。

38.软件钱包/ 硬件钱包

软件钱包是一种计算机程序。一般而言,软件钱包是与区块链交互的程序,可以让用户接收、存储和发送数字货币,可以存储多个密钥。硬件钱包是专门处理数字货币的智能设备。

39.空投

项目方把数字货币发送给各个用户钱包地址。

40.映射

映射跟区块链货币的发行相关,是链与链之间的映射。比如有一些区块链公司,前期没有完成链的开发,它就依托于以太坊发行自己的货币,前期货币的发行、交易等都在以太坊上进行操作。随着公司的发展,公司自己的链开发完成了公司想要把之前在以太坊上的信息全部对应到自己的链上,这个过程就是映射。

41.仓位

指投资人实有投资和实际投资资金的比例

42.全仓

全部资金买入比特币

43.减仓

把部分比特币卖出,但不全部卖出

44.重仓

资金和比特币相比,比特币份额占多

45.轻仓

资金和比特币相比,资金份额占多

46.空仓

把手里所持比特币全部卖出,全部转为资金

47.止盈

获得一定收益后,将所持比特币卖出以保住盈利

48.止损

亏损到一定程度后,将所持比特币卖出以防止亏损进一步扩大

49.牛市

价格持续上升,前景乐观

50.熊市

价格持续下跌,前景黯淡

51.多头(做多)

买方,认为币价未来会上涨,买入币,待币价上涨后,高价卖出获利了结

52.空头(做空)

卖方,认为币价未来会下跌,将手中持有的币(或向交易平台借币)卖出,待币价下跌后,低价买入获利了结

53.建仓

买入比特币等虚拟货币

54.补仓

分批买入比特币等虚拟货币,如:先买入1BTC,之后再买入1BTC

55.全仓

将所有资金一次性全部买入某一种虚拟币

56.反弹

币价下跌时,因下跌过快而价格回升调整

57.盘整(横盘)

价格波动幅度较小,币价稳定

58.阴跌

币价缓慢下滑

59.跳水(瀑布)

币价快速下跌,幅度很大

60.割肉

买入比特币后,币价下跌,为避免亏损扩大而赔本卖出比特币。或借币做空后,币价上涨,赔本买入比特币

61.套牢

预期币价上涨,不料买入后币价却下跌;或预期币价下跌,不料卖出后,币价却上涨

62.解套

买入比特币后币价下跌造成暂时的账面损失,但之后币价回升,扭亏为盈

63.踏空

因看淡后市卖出比特币后,币价却一路上涨,未能及时买入,因此未能赚得利润

64.超买

币价持续上升到一定高度,买方力量基本用尽,币价即将下跌

65.超卖

币价持续下跌到一定低点,卖方力量基本用尽,币价即将回升

66.诱多

币价盘整已久,下跌可能性较大,空头大多已卖出比特币,突然空方将币价拉高,诱使多方以为币价将会上涨,纷纷买入,结果空方打压币价,使多方套牢

67.诱空

多头买入比特币后,故意打压币价,使空头以为币价将会下跌,纷纷抛出,结果误入多头的陷阱

68.什么是NFT

NFT全称“Non-Fungible Tokens” 即非同质化代币,简单来说,即区块链上一种无法分割的版权证明,主要作用数字资产确权,转移,与数字货币区别在于,它独一无二,不可分割,本质上,是一种独特的数字资产。

69.什么是元宇宙

元宇宙是一个虚拟时空间的集合, 由一系列的增强现实(AR), 虚拟现实(VR) 和互联网(Internet)所组成,其中数字货币承载着这个世界中价值转移的功能。

70.什么是DeFi

DeFi,全称为Decentralized Finance,即“去中心化金融”或者“分布式金融”。“去中心化金融”,与传统中心化金融相对,指建立在开放的去中心化网络中的各类金融领域的应用,目标是建立一个多层面的金融系统,以区块链技术和密码货币为基础,重新创造并完善已有的金融体系

71.谁是中本聪?

72.比特币和Q币不一样

比特币是一种去中心化的数字资产,没有发行主体。Q币是由腾讯公司发行的电子货币,类似于电子积分,其实不是货币。Q币需要有中心化的发行机构,Q币因为腾讯公司的信用背书,才能被认可和使用。使用范围也局限在腾讯的 游戏 和服务中,Q币的价值完全基于人们对腾讯公司的信任。

比特币不通过中心化机构发行,但却能够得到全球的广泛认可,是因为比特币可以自证其信,比特币的发行和流通由全网矿工共同记账,不需要中心机构也能确保任何人都无法窜改账本。

73.矿机是什么?

以比特币为例,比特币矿机就是通过运行大量计算争夺记账权从而获得新生比特币奖励的专业设备,一般由挖矿芯片、散热片和风扇组成,只执行单一的计算程序,耗电量较大。挖矿实际是矿工之间比拼算力,拥有较多算力的矿工挖到比特币的概率更大。随着全网算力上涨,用传统的设备(CPU、GPU)挖到比特的难度越来越大,人们开发出专门用来挖矿的芯片。芯片是矿机最核心的零件。芯片运转的过程会产生大量的热,为了散热降温,比特币矿机一般配有散热片和风扇。用户在电脑上下载比特币挖矿软件,用该软件分配好每台矿机的任务,就可以开始挖矿了。每种币的算法不同,所需要的矿机也各不相同。

74.量化交易是什么?

量化交易,有时候也称自动化交易,是指以先进的数学模型替代人为的主观判断,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下做出非理性的投资决策。量化交易有很多种,包括跨平台搬砖、趋势交易、对冲等。跨平台搬砖是指,当不同目标平台价差达到一定金额,在价高的平台卖出,在价低的平台买入。

75.区块链资产场外交易

场外交易也叫OTC交易。用户需要自己寻找交易对手,不通过撮合成交,成交价格由交易双方协商确定,交易双方可以借助当面协商或者电话通讯等方式充分沟通。

76.时间戳是什么?

区块链通过时间戳保证每个区块依次顺序相连。时间戳使区块链上每一笔数据都具有时间标记。简单来说,时间戳证明了区块链上什么时候发生了什么事情,且任何人无法篡改。

77.区块链分叉是什么?

在中心化系统中升级软件十分简单,在应用商店点击“升级”即可。但是在区块链等去中心化系统中,“升级”并不是那么简单,甚至可能一言不合造成区块链分叉。简单说,分叉是指区块链在进行“升级”时发生了意见分歧,从而导致区块链分叉。因为没有中心化机构,比特币等数字资产每次代码升级都需要获得比特币社区的一致认可,如果比特币社区无法达成一致,区块链很可能形成分叉。

78.软分叉和硬分叉

硬分叉,是指当比特币代码发生改变后,旧节点拒绝接受由新节点创造的区块。不符合原规则的区块将被忽略,矿工会按照原规则,在他们最后验证的区块之后创建新的区块。 软分叉是指旧的节点并不会意识到比特币代码发生改变,并继续接受由新节点创造的区块。矿工们可能会在他们完全没有理解,或者验证过的区块上进行工作。软分叉和硬分叉都"向后兼容",这样才能保证新节点可以从头验证区块链。向后兼容是指新软件接受由旧软件所产生的数据或者代码,比如说Windows 10可以运行Windows XP的应用。而软分叉还可以"向前兼容"。

79.区块链项目分类和应用

从目前主流的区块链项目来看,区块链项目主要为四类:第一类:币类;第二类:平台类;第三类:应用类;第四类:资产代币化。

80.对标美元的USDT

USDT是Tether公司推出的对标美元(USD)的代币Tether USD。1USDT=1美元,用户可以随时使用USDT与USD进行1:1兑换。Tether公司执行1:1准备金保证制度,即每个USDT代币,都会有1美元的准备金保障,对USDT价格的恒定形成支撑。某个数字资产单价是多少USDT,也就相当于是它的单价是多少美元(USD)。

81.山寨币和竞争币

山寨币是指以比特币代码为模板,对其底层技术区块链进行了一些修改的区块链资产,其中有技术性创新或改进的又称为竞争币。因为比特币代码开源,导致比特币的抄袭成本很低,甚至只需复制比特币的代码,修改一些参数,便可以生成一条全新的区块链。

82.三大交易所

币安

Okex

火币

83.行情软件

Mytoken

非小号

84.资讯网站

巴比特

金色 财经

币世界快讯

85.区块链浏览器

BTC

ETH

BCH

LTC

ETC

86.钱包

Imtoken

比特派

MetaMask(小狐狸 )

87. 去中心化交易所

uniswap

88. NFT交易所

Opensea

Super Rare

89. 梯子

自备,购买靠谱梯子

90. 平台币

平台发行的数字货币,用于抵扣手续费,交易等

91. 牛市、熊市

牛市:上涨行情

熊市:下跌行情

92. 区块链1.0

基于分布式账本的货币交易体系,代表为比特币

93. 区块链2.0

以太坊(智能合约)为代表的合同区块链技术为2.0

94. 区块链3.0

智能化物联网时代,超出金融领域,为各种行业提供去中心化解决方案

95. 智能合约

智能合约,Smart Contract,是一种旨在以信息化方式传播、验证或执行合同的计算机协议,简单说,提前定好电子合约,一旦双方确认,合同自动执行。

96. 什么是通证?

通证经济就是以Token为唯一参考标准的经济体系,也就是说相当于通行证,你拥有Token ,就拥有权益,就拥有发言权。

97. 大数据 和 区块链 的 区别

大数据是生产资料,AI是新的生产力,区块链是新的生产关系。大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。简单理解为,大数据就是长期积累的海量数据,短期无法获取。区块链可以作为大数据的获取方式,但无法取代大数据。大数据只是作为在区块链运行的介质,没有绝对的技术性能,所以两者不能混淆。(生产关系简单理解就是劳动交换和消费关系,核心在于生产力,生产力核心在于生产工具)

98. 什么是ICO?

ICO,Initial Coin Offering, 首次公开代币发行,就是区块链数字货币行业中的众筹。是2017最为热门的话题和投资趋势,国家9.4出台监管方案。说到ICO,人们会想到IPO,两者有着本质不同。

99. 数字货币五个特征

第一个特征:去中心化

第二个特征:有开源代码

第三个特征:有独立的电子钱包

第四个特征:恒量发行的

第五个特征:可以全球流通

100.什么叫去中心化?

没有发行方,不属于任何机构或国家,由互联网网络专家设计、开发并存放于互联网上,公开发行的币种。

101. 什么叫衡量(稀缺性)?

发行总量一旦设定,永久固定,不能更改,不能随意超发,可接受全球互联网监督。因挖掘和开釆难度虽时间数量变化,时间越长,开采难度越大,所开釆的币就越少,因此具有稀缺性。

102. 什么叫开源代码?

用字母数字组成的存放在互联网上,任何人都可以查出其设计的源代码,所有人都可以参与,可以挖掘,全球公开化。

103. 什么叫匿名交易? 专有钱包私密?

每个人都可以在网上注册下载钱包,无需实名认证,完全由加密数字代码组成,全球即时点对点发送、交易,无需借助银行和任何机构,非本人授权任何人都无法追踪、查询。

104.什么是合约交易?

合约交易是指买卖双方对约定未来某个时间按指定价格接收一定数量的某种资产的协议进行交易。合约交易的买卖对象是由交易所统一制定的标准化合约,交易所规定了其商品种类,交易时间,数量等标准化信息。合约代表了买卖双方所拥有的权利和义务。

105.数字货币产业链

芯片厂家 矿机厂商 矿机代理 挖矿 出矿到交易所 散户炒币

106.北 枫 是谁?

北 枫 :数字货币价值投资者

投资风格:稳健

建立社区 :北斗 社区 (高质量价投社区 )

107.北斗 投资策略

长短结合,价投为主,不碰合约,不玩短线

合理布局,科学操作,稳健保守,挣周期钱

108.北 枫 ?

欢迎币友,共谋发展

比特币之挖矿与共识(二)

比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时区块链中孤块,每一个节点在将它 转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。

独立校验还确保了诚实 的矿工生成的区块可以被纳入到区块链中,从而获得奖励。行为不诚实的矿工所产生的区块将被拒绝,这不但使他们失 去了奖励,而且也浪费了本来可以去寻找工作量证明解的机会,因而导致其电费亏损。

当一个节点接收到一个新的区块,它将对照一个长长的标准清单对该区块进行验证,若没有通过验证,这个区块将被拒 绝。这些标准可以在比特币核心客户端的CheckBlock函数和CheckBlockHead函数中获得

它包括:

为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?

这 是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒 绝,因此,该交易就不会成为总账的一部分。矿工们必须构建一个完美的区块,基于所有节点共享的规则,并且根据正 确工作量证明的解决方案进行挖矿,他们要花费大量的电力挖矿才能做到这一点。如果他们作弊,所有的电力和努力都 会浪费。这就是为什么独立校验是去中心化共识的重要组成部分。

比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块, 它将尝试将新的区块连接到到现存的区块链,将它们组装起来。

节点维护三种区块:第一种是连接到主链上的,第二种是从主链上产生分支的(备用链),最后一种是在已知链中没有 找到已知父区块的。在验证过程中,一旦发现有不符合标准的地方,验证就会失败,这样区块会被节点拒绝,所以也不 会加入到任何一条链中。

任何时候,主链都是累计了最多难度的区块链。在一般情况下,主链也是包含最多区块的那个链,除非有两个等长的链 并且其中一个有更多的工作量证明。主链也会有一些分支,这些分支中的区块与主链上的区块互为“兄弟”区块。这些区 块是有效的,但不是主链的一部分。 保留这些分支的目的是如果在未来的某个时刻它们中的一个延长了并在难度值上超 过了主链,那么后续的区块就会引用它们。

如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被 保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从 孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有 可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。

选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链, 新块本身就代表它们的投票。

因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链全貌。

解决的办法是,每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就 是最长的或最大累计工作的链(greatest cumulative work chain)。节点通过累加链上的每个区块的工作量,得到建立这个链所要付出的工作量证明的总量。只要所有的节点选择最长累计工作的区块链,整个比特币网络最终会收敛到一致的状态。分叉即在不同区块链间发生的临时差异,当更多的区块添加到了某个分叉中,这个问题便会迎刃而解。

提示由于全球网络中的传输延迟,本节中描述的区块链分叉自动会发生。

然而,倒三角形的区块不会被丢弃。它被链接到星形链的父区块,并形成备用链。虽然节点X认为自己已经正确选择了获胜链,但是它还会保存“丢失”链,使得“丢失”链如果可能最终“获胜”,它还具有重新打包的所需的信息。

这是一个链的重新共识,因为这些节点被迫修改他们对块链的立场,把自己纳入更长的链。任何从事延伸星形-倒三角形的矿工现在都将停止这项工作,因为他们的候选人是“孤儿”,因为他们的父母“倒三角形”不再是最长的连锁。

“倒三角形”内的交易重新插入到内存池中用来包含在下一个块中,因为它们所在的块不再位于主链中。

整个网络重新回到单一链状态,星形-三角形-菱形,“菱形”成为链中的最后一个块。所有矿工立即开始研究以“菱形”为父区块的候选块,以扩展这条星形-三角形-菱形链。

从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。

然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。

2012年以来,比特币挖矿发展出一个解决区块头基本结构限制的方案。在比特币的早期,矿工可以通过遍历随机数 (Nonce)获得符合要求的hash来挖出一个块。

难度增长后,矿工经常在尝试了40亿个值后仍然没有出块。然而,这很容 易通过读取块的时间戳并计算经过的时间来解决。因为时间戳是区块头的一部分,它的变化可以让矿工用不同的随机值 再次遍历。当挖矿硬件的速度达到了4GH/秒,这种方法变得越来越困难,因为随机数的取值在一秒内就被用尽了。

当出现ASIC矿机并很快达到了TH/秒的hash速率后,挖矿软件为了找到有效的块, 需要更多的空间来储存nonce值 。可以把时间戳延后一点,但将来如果把它移动得太远,会导致区块变为无效。

区块头需要信息来源的一个新的“变革”。解决方案是使用coinbase交易作为额外的随机值来源,因为coinbase脚本可以储存2-100字节的数据,矿工们开始使用这个空间作为额外随机值的来源,允许他们去探索一个大得多的区块头值范围来找到有效的块。这个coinbase交易包含在merkle树中,这意味着任何coinbase脚本的变化将导致Merkle根的变化。

8个字节的额外随机数,加上4个字节的“标准”随机数,允许矿工每秒尝试2^96(8后面跟28个零)种可能性而无需修改时间戳。如果未来矿工穿过了以上所有的可能性,他们还可以通过修改时间戳来解决。同样,coinbase脚本中也有更多额外的空间可以为将来随机数的扩展做准备。

比特币的共识机制指的是,被矿工(或矿池)试图使用自己的算力实行欺骗或破坏的难度很大,至少理论上是这样。就像区块链中孤块我们前面讲的,比特币的共识机制依赖于这样一个前提,那就是绝大多数的矿工,出于自己利益最大化的考虑,都会 通过诚实地挖矿来维持整个比特币系统。然而,当一个或者一群拥有了整个系统中大量算力的矿工出现之后,他们就可以通过攻击比特币的共识机制来达到破坏比特币网络的安全性和可靠性的目的。

值得注意的是,共识攻击只能影响整个区块链未来的共识,或者说,最多能影响不久的过去几个区块的共识(最多影响过去10个块)。而且随着时间的推移,整个比特币块链被篡改的可能性越来越低。

理论上,一个区块链分叉可以变得很长,但实际上,要想实现一个非常长的区块链分叉需要的算力非常非常大,随着整个比特币区块链逐渐增长,过去的区块基本可以认为是无法被分叉篡改的。

同时,共识攻击也不会影响用户的私钥以及加密算法(ECDSA)。

共识攻击也 不能从其他的钱包那里偷到比特币、不签名地支付比特币、重新分配比特币、改变过去的交易或者改变比特币持有纪录。共识攻击能够造成的唯一影响是影响最近的区块(最多10个)并且通过拒绝服务来影响未来区块的生成。

共识攻击的一个典型场景就是“51%攻击”。想象这么一个场景,一群矿工控制了整个比特币网络51%的算力,他们联合起来打算攻击整个比特币系统。由于这群矿工可以生成绝大多数的块,他们就可以通过故意制造块链分叉来实现“双重支 付”或者通过拒绝服务的方式来阻止特定的交易或者攻击特定的钱包地址。

区块链分叉/双重支付攻击指的是攻击者通过 不承认最近的某个交易,并在这个交易之前重构新的块,从而生成新的分叉,继而实现双重支付。有了充足算力的保证,一个攻击者可以一次性篡改最近的6个或者更多的区块,从而使得这些区块包含的本应无法篡改的交易消失。

值得注意的是,双重支付只能在攻击者拥有的钱包所发生的交易上进行,因为只有钱包的拥有者才能生成一个合法的签名用于双重支付交易。攻击者在自己的交易上进行双重支付攻击,如果可以通过使交易无效而实现对于不可逆转的购买行为不予付款, 这种攻击就是有利可图的。

攻击者Mallory在Carol的画廊买了描绘伟大的中本聪的三联组画(The Great Fire),Mallory通过转账价值25万美金的比特币 与Carol进行交易。在等到一个而不是六个交易确认之后,Carol放心地将这幅组画包好,交给了Mallory。这时,Mallory 的一个同伙,一个拥有大量算力的矿池的人Paul,在这笔交易写进区块链的时候,开始了51%攻击。

首先,Paul利用自己矿池的算力重新计算包含这笔交易的块,并且在新块里将原来的交易替换成了另外一笔交易(比如直接转给了Mallory 的另一个钱包而不是Carol的),从而实现了“双重支付”。这笔“双重支付”交易使用了跟原有交易一致的UTXO,但收款人被替换成了Mallory的钱包地址。

然后,Paul利用矿池在伪造的块的基础上,又计算出一个更新的块,这样,包含这 笔“双重支付”交易的块链比原有的块链高出了一个块。到此,高度更高的分叉区块链取代了原有的区块链,“双重支付”交 易取代了原来给Carol的交易,Carol既没有收到价值25万美金的比特币,原本拥有的三幅价值连城的画也被Mallory白白 拿走了。

在整个过程中,Paul矿池里的其他矿工可能自始至终都没有觉察到这笔“双重支付”交易有什么异样,因为挖矿程序都是自动在运行,并且不会时时监控每一个区块中的每一笔交易。

为了避免这类攻击,售卖大宗商品的商家应该在交易得到全网的6个确认之后再交付商品。或者,商家应该使用第三方 的多方签名的账户进行交易,并且也要等到交易账户获得全网多个确认之后再交付商品。一条交易的确认数越多,越难 被攻击者通过51%攻击篡改。

对于大宗商品的交易,即使在付款24小时之后再发货,对买卖双方来说使用比特币支付也 是方便并且有效率的。而24小时之后,这笔交易的全网确认数将达到至少144个(能有效降低被51%攻击的可能性)。

需要注意的是,51%攻击并不是像它的命名里说的那样,攻击者需要至少51%的算力才能发起,实际上,即使其拥有不 到51%的系统算力,依然可以尝试发起这种攻击。之所以命名为51%攻击,只是因为在攻击者的算力达到51%这个阈值 的时候,其发起的攻击尝试几乎肯定会成功。

本质上来看,共识攻击,就像是系统中所有矿工的算力被分成了两组,一 组为诚实算力,一组为攻击者算力,两组人都在争先恐后地计算块链上的新块,只是攻击者算力算出来的是精心构造 的、包含或者剔除了某些交易的块。因此,攻击者拥有的算力越少,在这场决逐中获胜的可能性就越小。

从另一个角度 讲,一个攻击者拥有的算力越多,其故意创造的分叉块链就可能越长,可能被篡改的最近的块或者或者受其控制的未来 的块就会越多。一些安全研究组织利用统计模型得出的结论是,算力达到全网的30%就足以发动51%攻击了。全网算力的急剧增长已经使得比特币系统不再可能被某一个矿工攻击,因为一个矿工已经不可能占据全网哪怕的1%算 力。

待补充

待补充

关于区块链中孤块和区块链的块的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签: #区块链中孤块

  • 评论列表

留言评论