File tree Expand file tree Collapse file tree 5 files changed +265
-2
lines changed
i18n/zh-CN/docusaurus-plugin-content-docs
current/blockchain/bitcoin-basics/blockchain Expand file tree Collapse file tree 5 files changed +265
-2
lines changed Original file line number Diff line number Diff line change 204
204
"description" : " The generated-index page description for category Blockchain in sidebar blockchainSidebar"
205
205
},
206
206
"sidebar.blockchainSidebar.category.Block" : {
207
- "message" : " 区块 " ,
207
+ "message" : " 区块结构 " ,
208
208
"description" : " The label for category Block in sidebar blockchainSidebar"
209
209
},
210
210
"sidebar.blockchainSidebar.category.Block.link.generated-index.description" : {
211
211
"message" : " 区块的内部结构以及相关概念。" ,
212
212
"description" : " The generated-index page description for category Block in sidebar blockchainSidebar"
213
213
},
214
214
"sidebar.blockchainSidebar.category.Transaction" : {
215
- "message" : " 交易 " ,
215
+ "message" : " 交易结构 " ,
216
216
"description" : " The label for category Transaction in sidebar blockchainSidebar"
217
217
},
218
218
"sidebar.blockchainSidebar.category.Transaction.link.generated-index.description" : {
Original file line number Diff line number Diff line change 1
1
---
2
2
sidebar_position : 4
3
3
---
4
+
4
5
# 51攻击
6
+
7
+ 51%攻击详解。
8
+
9
+ 也可以参考挖矿概念中的[ 51%攻击] ( ../../../mining/concepts/reorg-orphan-51attack.md ) 。
10
+
11
+ ## 什么是51%攻击
12
+
13
+ 51%攻击是指在区块链网络中,某个实体或组织控制了超过50%的算力(计算能力),从而能够对区块链进行恶意操作。这种攻击主要针对使用工作量证明(Proof
14
+ of Work, PoW)共识机制的区块链网络,如比特币和以太坊。
15
+
16
+ ## 51%攻击的条件
17
+
18
+ 要实现51%攻击,需要满足以下条件:
19
+
20
+ ### 1. 控制超过50%的算力
21
+
22
+ 攻击者需要拥有全网超过50%的计算能力。这意味着攻击者能够在区块链网络中挖出比其他所有节点更多的区块,从而控制新区块的生成。
23
+
24
+ ### 2. 资源和成本
25
+
26
+ 控制超过50%的算力需要巨大的硬件资源和电力成本。对于大型区块链网络,如比特币,这些成本是非常高的,通常需要成千上万的矿机和大量的电力。
27
+
28
+ ## 51%攻击可能带来的危害
29
+
30
+ ### 1. 双花攻击(Double Spend)
31
+
32
+ 攻击者可以利用51%攻击实现双花,即同一笔加密货币可以被花费两次。这通过创建一个包含双重支出交易的分叉链并迅速超过原链,使得攻击者可以回滚交易并重新使用相同的币。
33
+
34
+ ### 2. 阻止交易确认
35
+
36
+ 攻击者可以阻止其他矿工确认交易,导致特定的交易无法被包含在区块中,从而拒绝服务攻击(DoS),使得网络变得不可靠。
37
+
38
+ ### 3. 重组区块链
39
+
40
+ 攻击者可以通过创建一个更长的分叉链重组区块链,撤销已确认的交易。这会破坏区块链的不可篡改性和透明性,降低用户对网络的信任。
41
+
42
+ ## 如何防范51%攻击
43
+
44
+ ### 1. 增加算力和去中心化
45
+
46
+ 通过吸引更多矿工加入网络,增加全网算力,并确保算力分布的去中心化,减少单个实体控制大部分算力的风险。
47
+
48
+ ### 2. 使用其他共识机制
49
+
50
+ 采用权益证明(Proof of Stake, PoS)等其他共识机制,可以降低51%攻击的可能性。在PoS中,攻击者需要控制大量的代币,成本和风险都非常高。
51
+
52
+ ### 3. 改进协议
53
+
54
+ 协议层面的改进,如Bitcoin Core开发团队实施的区块验证和防止链重组的措施,可以有效减少51%攻击的风险。
55
+
56
+ ### 4. 增加交易确认数
57
+
58
+ 用户可以等待更多的交易确认数,增加交易被恶意回滚的难度。通常,6次确认被认为是安全的。
59
+
60
+ ### 5. 提高检测和响应能力
61
+
62
+ 网络中可以实施监控机制,及时检测异常算力增长和可疑活动,并快速响应,采取措施防止攻击的发生。
63
+
64
+ ## 总结
65
+
66
+ 51%攻击是区块链网络面临的一种严重威胁,需要攻击者控制超过50%的算力。其可能带来双花攻击、交易阻止和区块链重组等危害。通过增加算力和去中心化、采用其他共识机制、协议改进、增加交易确认数以及提高检测和响应能力,可以有效防范51%攻击,确保区块链网络的安全性和可靠性。了解51%攻击及其防范措施,有助于更好地维护和保护区块链网络的安全。
Original file line number Diff line number Diff line change 2
2
sidebar_position : 1
3
3
---
4
4
# 区块高度
5
+
6
+ 介绍区块高度的概念和作用。
7
+
8
+ ## 1. 什么是区块高度
9
+
10
+ 区块高度(Block Height)是区块链中的一个重要概念,表示区块在区块链中的位置。区块高度是从创世区块(Genesis Block)开始计算的,第一个区块的高度为0,第二个区块的高度为1,以此类推,每增加一个区块,区块高度增加1。因此,区块高度是一个连续的正整数序列,反映了区块链的长度。
11
+
12
+ ## 2. 区块高度的作用
13
+
14
+ 区块高度在区块链网络中有多个重要作用:
15
+
16
+ 1 . ** 标识区块位置** :区块高度为每个区块提供了一个唯一的位置标识,使得区块在区块链中可以被准确定位。
17
+ 2 . ** 验证区块链的长度** :通过区块高度可以判断区块链的长度,进而评估区块链的安全性和稳定性。
18
+ 3 . ** 确定交易确认数** :区块高度用于计算交易的确认数,确认数是指交易被包含在区块中后,经过了多少个区块的确认。
19
+ 4 . ** 共识机制** :在一些共识机制中,区块高度用于解决分叉问题,选择最长的链作为主链。
20
+
21
+ ## 3. 如何使用CLI获取区块高度
22
+
23
+ 使用mvc-cli的命令行接口(CLI),可以方便地获取区块高度。以下是一些常用命令及其用法:
24
+
25
+ ### 3.1 获取最新区块高度
26
+
27
+ ``` bash
28
+ mvc-cli getblockcount
29
+ ```
30
+
31
+ 此命令返回当前区块链的最新区块高度。例如:
32
+
33
+ ``` bash
34
+ > mvc-cli getblockcount
35
+ 654321
36
+ ```
37
+
38
+ ### 3.2 获取特定区块的详细信息
39
+
40
+ 首先,需要知道区块的哈希值,然后使用以下命令:
41
+
42
+ ``` bash
43
+ mvc-cli getblock < blockhash>
44
+ ```
45
+
46
+ 示例:
47
+
48
+ ``` bash
49
+ > mvc-cli getblock 0000000000000000000d6a7253fba0c0c5fdf60b7e7a3e63a7a1f4c8122da533
50
+ {
51
+ ...
52
+ " height" : 654321,
53
+ ...
54
+ }
55
+ ```
56
+
57
+ ### 3.3 获取区块哈希
58
+
59
+ 通过区块高度获取区块哈希:
60
+
61
+ ``` bash
62
+ mvc-cli getblockhash < height>
63
+ ```
64
+
65
+ 示例:
66
+
67
+ ``` bash
68
+ > mvc-cli getblockhash 654321
69
+ 0000000000000000000d6a7253fba0c0c5fdf60b7e7a3e63a7a1f4c8122da533
70
+ ```
71
+
72
+ ## 4. 区块高度和确认数的关系
73
+
74
+ 确认数(Confirmations)是衡量一笔交易在区块链中被确认的程度。确认数与区块高度密切相关,具体关系如下:
75
+
76
+ 1 . ** 初次确认** :当一笔交易被打包进一个区块时,该区块的区块高度立即为该交易提供了第一次确认,确认数为1。
77
+ 2 . ** 后续确认** :每当区块链上增加一个新块,所有之前的交易确认数都会增加1。确认数等于当前最新区块高度减去交易所在区块的区块高度再加1。
78
+
79
+ 例如,如果当前最新区块高度为654321,而某笔交易在区块高度654318的区块中被打包,那么该交易的确认数为:
80
+
81
+ ``` bash
82
+ 654321 - 654318 + 1 = 4
83
+ ```
84
+
85
+ 确认数的增加表明该交易在区块链中得到了更多次的验证,从而提高了交易的安全性和不可篡改性。
86
+
87
+ ## 5. 区块高度在不同场景中的应用
88
+
89
+ ### 5.1 交易确认
90
+
91
+ 在比特币网络中,交易需要一定数量的确认才能被认为是完全有效的。通常,6次确认被认为是安全的,即在交易所在区块之后又增加了5个区块。
92
+
93
+ ### 5.2 区块链分叉
94
+
95
+ 区块链分叉是指区块链分成两条或多条链的情况。通过比较区块高度,节点可以选择最长链作为主链,以确保全网的一致性。
96
+
97
+ ### 5.3 节点同步
98
+
99
+ 节点在加入区块链网络时,需要同步区块链数据。通过获取最新区块高度,节点可以判断当前的同步进度,并决定是否需要下载更多区块。
Original file line number Diff line number Diff line change 1
1
---
2
2
sidebar_position : 2
3
3
---
4
+
4
5
# 最长链原则
6
+
7
+ 介绍什么是最长链原则,以及在区块链共识中的作用。
8
+
9
+ ## 1. 什么是最长链原则
10
+
11
+ 最长链原则(Longest Chain Rule)是比特币和其他区块链系统中用来确定哪条链为有效链的规则。该原则规定,网络中的节点应选择累计工作量(chainwork)最大的那条链作为有效的区块链。这通常被称为最长链。
12
+
13
+ ## 2. 在区块链共识中的作用
14
+
15
+ ### 2.1 解决分叉问题
16
+
17
+ 在区块链网络中,由于节点分布全球,可能会同时生成两个不同的区块,从而形成链的分叉。根据最长链原则,节点会选择累计工作量最大的链作为主链。这样,随着更多区块的加入,最终会有一条链被选择为有效链,另一条链被抛弃。
18
+
19
+ ### 2.2 保证交易的确认
20
+
21
+ 最长链原则确保所有节点最终会对同一条链达成一致,这样可以保证链上的交易是被全网认可的。一旦交易所在的区块被多个后续区块确认,该交易被认为是可靠且不可篡改的。
22
+
23
+ ### 2.3 提高网络安全性
24
+
25
+ 通过确保节点选择累计工作量最大的链,最长链原则增加了攻击者成功重组链的难度。攻击者需要拥有超过全网一半的算力(即51%攻击)才能重组区块链,篡改交易记录。这样的高成本大大提高了攻击的难度和代价,从而增强了网络的安全性。
26
+
27
+ ## 3. 如何使用CLI获取区块高度和链工作量
28
+
29
+ ### 获取最新区块高度
30
+
31
+ ``` bash
32
+ mvc-cli getblockcount
33
+ ```
34
+
35
+ ### 获取区块的详细信息,包括链工作量
36
+
37
+ ``` bash
38
+ mvc-cli getblock < blockhash>
39
+ ```
40
+
41
+ ### 获取区块哈希
42
+
43
+ ``` bash
44
+ mvc-cli getblockhash < height>
45
+ ```
46
+
47
+ ## 4. 区块高度和确认数的关系
48
+
49
+ 确认数是指交易被包含在区块中后,又有多少个区块叠加在其上。例如,如果某交易在区块高度654318被打包,当前最新区块高度为654321,则该交易的确认数为4(654321 -
50
+ 654318 + 1)。
51
+
52
+ ## 总结
53
+
54
+ 最长链原则是区块链网络中达成共识的重要机制,通过选择累计工作量最大的链来解决分叉问题,保证交易的确认,提升网络的安全性。了解并应用最长链原则,有助于深入理解区块链技术及其在去中心化系统中的应用。
Original file line number Diff line number Diff line change 2
2
sidebar_position : 3
3
3
---
4
4
# 区块重组
5
+
6
+ 从区块链共识角度介绍区块重组。
7
+
8
+ 也可以参考挖矿概念中的[ 区块重组] ( ../../../mining/concepts/reorg-orphan-51attack.md ) 。
9
+
10
+ ## 什么是区块重组
11
+
12
+ 区块重组(Block Reorganization),简称“区块重组”或“重组”,是指区块链网络在发现一条更长的合法链时,将当前主链上的某些区块移除,并将新的区块添加到主链上。这一过程通常是由区块链网络的共识机制(如比特币的工作量证明机制)触发的。
13
+
14
+ ## 为什么会产生区块重组
15
+
16
+ 区块重组的产生原因主要有以下几个方面:
17
+
18
+ ### 1. 链的分叉
19
+
20
+ 在分布式区块链网络中,不同节点可能会在同一时间发现并广播两个不同的有效区块,导致链的分叉。这种情况下,不同节点可能会有不同的链副本。
21
+
22
+ ### 2. 网络延迟
23
+
24
+ 由于网络延迟,不同节点可能会在不同时间接收到新区块。当一个节点发现比当前链更长的链时,它会触发区块重组,以跟随更长的链。
25
+
26
+ ### 3. 竞争区块
27
+
28
+ 矿工在同一时间挖到区块时,可能会同时广播这些区块。由于工作量证明机制,其他节点会选择工作量更大的链,导致重组。
29
+
30
+ ## 区块链重组之后如何达成一致性共识
31
+
32
+ 在区块重组过程中,节点需要遵循以下步骤来达成一致性共识:
33
+
34
+ ### 1. 验证新链
35
+
36
+ 节点在接收到新的区块链时,会验证新链上的每个区块,确保其合法性和有效性。这包括验证每个区块的哈希值、交易的有效性以及工作量证明。
37
+
38
+ ### 2. 比较链长度
39
+
40
+ 节点会比较当前链和新链的长度(或累计工作量)。如果新链更长(累计工作量更大),节点会选择新链作为主链。
41
+
42
+ ### 3. 移除旧区块
43
+
44
+ 节点会移除当前链上与新链冲突的区块,这些被移除的区块及其交易会被放回内存池中,等待重新打包。
45
+
46
+ ### 4. 添加新区块
47
+
48
+ 节点会将新链上的区块添加到主链上,并将这些区块中的交易标记为已确认。
49
+
50
+ ### 5. 广播共识
51
+
52
+ 节点在完成重组后,会将新的主链广播给其他节点,确保全网达成一致性共识。
53
+
54
+ ## 区块重组的影响
55
+
56
+ 区块重组可能会导致一些暂时的交易确认延迟或逆转,但它是区块链系统保持一致性和安全性的必要机制。通过及时重组并选择累计工作量最大的链,区块链网络能够有效抵御双花攻击和其他恶意行为,确保交易记录的可靠性和不可篡改性。
57
+
58
+ ## 总结
59
+
60
+ 区块重组是区块链网络中处理链分叉和网络延迟的重要机制。它通过验证新链、比较链长度、移除旧区块和添加新区块来确保全网的一致性和安全性。了解区块重组的原理和过程,有助于深入理解区块链技术的运行机制及其在去中心化系统中的应用。
You can’t perform that action at this time.
0 commit comments