From 9294b7315c4d210780ec5c776f9a61fc6d624e29 Mon Sep 17 00:00:00 2001 From: xilibi2003 Date: Sat, 29 Jun 2024 13:11:26 +0800 Subject: [PATCH] modify some bitcoin description --- .../\345\205\261\350\257\206.md" | 43 +++++---- ...76\346\265\217\350\247\210\345\231\250.md" | 18 ++-- .../Statechain.md" | 2 +- ...71\345\270\201\345\210\206\345\217\211.md" | 44 ++++----- "bitcoin/\345\215\217\350\256\256/RGB.md" | 2 +- .../Taproot.md" | 8 +- .../UTXO.md" | 22 +++-- ...54\350\201\252\345\205\261\350\257\206.md" | 12 +-- .../\346\257\224\347\211\271\345\270\201.md" | 49 +++------- ...71\345\270\201\344\270\273\347\275\221.md" | 34 ------- ...71\345\270\201\344\272\244\346\230\223.md" | 90 +++++-------------- ...01\345\256\242\346\210\267\347\253\257.md" | 39 +++----- ...24\347\246\273\350\247\201\350\257\201.md" | 41 +++------ 13 files changed, 135 insertions(+), 269 deletions(-) rename "bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\205\261\350\257\206.md" => "bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\344\270\255\346\234\254\350\201\252\345\205\261\350\257\206.md" (95%) delete mode 100644 "bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\270\273\347\275\221.md" diff --git "a/basic/\345\205\261\350\257\206/\345\205\261\350\257\206.md" "b/basic/\345\205\261\350\257\206/\345\205\261\350\257\206.md" index bce72f0..80cf1d2 100644 --- "a/basic/\345\205\261\350\257\206/\345\205\261\350\257\206.md" +++ "b/basic/\345\205\261\350\257\206/\345\205\261\350\257\206.md" @@ -1,42 +1,55 @@ -# 什么是共识算法 +## 共识 -## 定义 +共识机制是区块链网络中用来确保所有节点对数据的一致性达成共识的协议。它是区块链技术的核心组件,确保分布式系统中的所有参与者都能就网络状态达成一致,并且保证数据的安全和可靠性。 -区块链共识算法是一种用于解决分布式系统中节点之间达成一致意见的机制。在区块链网络中,不同节点可能拥有不同的数据和状态,因此需要一种算法来确保所有节点就交易的有效性、区块的顺序以及网络的状态达成一致。共识算法的目标是解决分布式环境下可能出现的数据不一致、恶意行为和双重支付等问题。 -# 常见的区块链共识算法: -## 1. **工作量证明(Proof of Work,PoW)**: +区块链共识算法是一种用于解决分布式系统中节点之间达成一致意见的机制。在区块链网络中,不同节点可能拥有不同的数据和状态,因此需要一种机制来确保所有节点就交易的有效性、区块的顺序以及网络的状态达成一致。共识机制的目标是解决分布式环境下可能出现的数据不一致、恶意行为和双重支付等问题。 + +## 常见的共识机制: + +### 1. **工作量证明(Proof of Work,PoW)**: + 这是比特币最早使用的共识算法。在[PoW](https://learnblockchain.cn/tags/PoW)中,节点(矿工)需要通过解决一个复杂的数学难题来竞争获得添加下一个区块的权利。第一个解出问题的节点可以添加区块,并获得一定数量的奖励。由于解题过程需要大量计算资源,PoW算法被认为是能源消耗较大的算法。 -## 2. **权益证明(Proof of Stake,PoS)**: +### 2. **权益证明(Proof of Stake,PoS)**: + 在[PoS](https://learnblockchain.cn/tags/PoS)中,节点的权益(通常是持有的加密货币数量)决定了他们被选中添加下一个区块的概率。这减少了能源消耗,因为没有解题过程,但也引入了一些新的问题,如"悔矿"问题,即持有者可能更有动机保护网络的稳定性,而不是支持新的变化。 -## 3. **权威证明(Proof of Authority,PoA)**: +### 3. **权威证明(Proof of Authority,PoA)**: + 在PoA中,网络中的权威节点(通常是已知实体或经过验证的实体)获得添加区块的权限。这种方法适用于私有链或联盟链,其中信任性更高,但不适用于公有链,因为它违背了去中心化的原则。 -## 4. **权益证明+工作量证明(Delegated Proof of Stake,DPoS)**: +### 4. **权益证明+工作量证明(Delegated Proof of Stake,DPoS)**: + [DPoS](https://learnblockchain.cn/tags/DPoS) 引入了代表制度,持币人可以投票选出一些节点作为“代表”来验证交易和添加区块。代表的数量通常较少,这减少了共识过程的复杂性,但也引入了中心化的潜在问题。 -## 5. **权益证明+权威证明(Proof of Elapsed Time,PoET)**: +### 5. **权益证明+权威证明(Proof of Elapsed Time,PoET)**: + PoET是一种以身份验证为基础的共识算法,节点通过等待随机时间来获得添加区块的权利。这个等待时间是由一个可信的随机时间模块分配的。 -## 6. **哈希时钟(Hashgraph)**: +### 6. **哈希时钟(Hashgraph)**: + 哈希时钟是一种基于事件流的共识算法,它使用一种称为“虚拟异步”的通信模型来实现高效的共识。节点按照一种链式结构记录事件,并通过对事件的哈希计算来创建一个“哈希时钟”。这个算法旨在提供快速的最终性,即一旦事件被添加到哈希时钟中,它就被视为不可更改。 -## 7. **拜占庭容错(Byzantine Fault Tolerance,BFT)**: +### 7. **拜占庭容错(Byzantine Fault Tolerance,BFT)**: + 拜占庭容错是一组共识算法,用于解决分布式系统中的拜占庭将军问题。在这个问题中,一些节点可能是恶意的,它们可能发送虚假的信息以干扰共识过程。BFT算法通过允许节点在一定数量的恶意节点存在的情况下仍然达成一致,保证了系统的安全性。 -## 8. **HoneyBadgerBFT**: +### 8. **HoneyBadgerBFT**: + HoneyBadgerBFT是一种异步拜占庭容错算法,它通过使用密码学原语和广播协议来实现安全的共识。它的设计旨在提供高吞吐量和低延迟,适用于需要高性能和强安全性的应用场景。 -## 9. **Ripple Protocol Consensus Algorithm(RPCA)**: +### 9. **Ripple Protocol Consensus Algorithm(RPCA)**: + Ripple是一种基于联盟链的支付协议,它使用一种独特的共识算法来确认交易。RPCA基于特定的一致性规则,节点通过选择最有可能被其他节点选中的交易来达成共识。 -## 10. **Algorand**: +### 10. **Algorand**: + Algorand是一种采用权益证明(PoS)的共识算法,其独特之处在于,它每个区块只包含一个交易。节点在一个分层的共识过程中轮流参与,以选择下一个区块的提议者和验证者,从而实现高效且安全的共识。 -## 11. **Avalanche**: +### 11. **Avalanche**: + Avalanche是一种基于反馈机制的共识算法,旨在提供快速的最终性和高度的可扩展性。节点根据其他节点的反馈来投票选择下一个区块,这种反馈机制帮助网络快速达成共识。 >这些共识算法各有特点,适用于不同的区块链项目和应用场景。它们的设计考虑了安全性、吞吐量、延迟和可扩展性等因素,以满足不同需求下的共识需求。随着区块链技术的不断发展,可能会出现更多创新的共识算法。 \ No newline at end of file diff --git "a/basic/\345\237\272\347\241\200\346\246\202\345\277\265/\345\214\272\345\235\227\351\223\276\346\265\217\350\247\210\345\231\250.md" "b/basic/\345\237\272\347\241\200\346\246\202\345\277\265/\345\214\272\345\235\227\351\223\276\346\265\217\350\247\210\345\231\250.md" index 8c4c1ce..01094c0 100644 --- "a/basic/\345\237\272\347\241\200\346\246\202\345\277\265/\345\214\272\345\235\227\351\223\276\346\265\217\350\247\210\345\231\250.md" +++ "b/basic/\345\237\272\347\241\200\346\246\202\345\277\265/\345\214\272\345\235\227\351\223\276\346\265\217\350\247\210\345\231\250.md" @@ -1,10 +1,8 @@ -# 区块链浏览器 +## 区块链浏览器 -## 介绍 +区块链的所有数据都是开放的,但不是每个人都能写代码去查看链上的交易,大家需要通过一个窗口来查看交易数据。这个窗口就是**区块链浏览器**。 -对于区块链,所有的数据都是开放的,但不是每个人都能写代码去查看链上的交易,大多数人会通过一个公开的窗口来查看数据。这个公开的窗口就是**区块链浏览器**。 - -区块链所有信息往往会包括:ChainInfo、BlockInfo、 TransactionInfo 、ContractInfo(TokenInfo、Scriptinfo) 、AddressInfo 等等,这也基本构成了区块链浏览器产品的产品架构。 +区块链浏览器信息往往会包括:ChainInfo、BlockInfo、 TransactionInfo 、ContractInfo(TokenInfo、Scriptinfo) 、AddressInfo 等等。 ### ChainInfo @@ -15,15 +13,15 @@ ChainInfo 一般是该区块链的总体性概述,一般放置于浏览器页 * **安全指标:**算力、计算难度、挖矿收益、算力集中度等 * **繁荣指标**:交易数量、交易池、活跃账户、合约与token等 * **价格指标**:市场价格、市值等 -* **特色指标:**譬如比特币体系下的 Script,EOS 体系下的 Ram/超级节点,Cosmos 体系下的 staking ,Nervos 体系下的 Cell 信息等 +* **特色指标**: POS 共识下的 staking ,Nervos 体系下的 Cell 信息等 ### BlockInfo BlockInfo 是指区块链的区块维度信息,一般会包括区块列表页、区块详情页。在这里就涉及到区块链的数据结构的问题。我们可以看下比特币的 Block 数据结构:比特币的数据结构往往由以下的一些数据组成,产品经理要做的往往是确定信息的优先级并进行有序排列即可。通过这种方式,我们可以基本地勾画出 BlockInfo 的基本信息。 -![v2-c5c0d96f375f686ed04667c716ba6f39_720w](/graph/v2-c5c0d96f375f686ed04667c716ba6f39_720w.png) +![ ](../../graph/v2-c5c0d96f375f686ed04667c716ba6f39_720w.png) -![v2-2ef780c576a7e0d4de859d19e8de6aba_720w](/graph/v2-2ef780c576a7e0d4de859d19e8de6aba_720w.webp) +![ ](../../graph/v2-2ef780c576a7e0d4de859d19e8de6aba_720w.webp) 但是这显然是不够的。BlockInfo 还有大量信息可以挖掘,这些信息充满了该区块链的特点,我们以比特币举例: @@ -46,11 +44,11 @@ AddressInfo 主要聚焦于给使用者一个”账户”概念,在比特币 ### 比特币浏览器 -https://btc.com/stats +https://btc.com/ ### 以太坊浏览器 -https://etherscan.io/charts +https://etherscan.io/ *** diff --git "a/bitcoin/\344\272\214\345\261\202\346\211\251\345\256\271/\346\211\251\345\256\271\346\212\200\346\234\257/Statechain.md" "b/bitcoin/\344\272\214\345\261\202\346\211\251\345\256\271/\346\211\251\345\256\271\346\212\200\346\234\257/Statechain.md" index e6bf0a0..58344e2 100644 --- "a/bitcoin/\344\272\214\345\261\202\346\211\251\345\256\271/\346\211\251\345\256\271\346\212\200\346\234\257/Statechain.md" +++ "b/bitcoin/\344\272\214\345\261\202\346\211\251\345\256\271/\346\211\251\345\256\271\346\212\200\346\234\257/Statechain.md" @@ -24,7 +24,7 @@ Alice也还保留着这边临时密钥。但是,如果她想要Victor帮忙签 Alice和Bob(以及后续所有获得了临时密钥的人)使用一个为闪电网络设计的密码学方法,叫做 “**Eltoo**”。Eltoo 使得Bob可以用自己的备份交易 “**覆盖**”Alice的备份交易。所以,如果Alice尝试欺诈,把自己的旧备份交易广播出去,Bob 既可以在 Alice 的等待期里与Victor联系,联手拿回自己的钱;也可以使用自己的备份交易直接覆盖掉 Alice 的交易。 -![statechain](/graph/statechain.png) +![statechain](../../../graph/statechain.png) *** diff --git "a/bitcoin/\345\210\206\345\217\211/\346\257\224\347\211\271\345\270\201\345\210\206\345\217\211.md" "b/bitcoin/\345\210\206\345\217\211/\346\257\224\347\211\271\345\270\201\345\210\206\345\217\211.md" index bf337b0..71e172d 100644 --- "a/bitcoin/\345\210\206\345\217\211/\346\257\224\347\211\271\345\270\201\345\210\206\345\217\211.md" +++ "b/bitcoin/\345\210\206\345\217\211/\346\257\224\347\211\271\345\270\201\345\210\206\345\217\211.md" @@ -1,42 +1,42 @@ -# 比特币分叉 +## 比特币分叉 -## 什么是分叉? +比特币分叉(Bitcoin Fork)是指比特币区块链的分裂,产生了不同版本的区块链和相应的加密货币。分叉主要分为硬分叉(Hard Fork)和软分叉(Soft Fork)两种类型。分叉通常是由于社区对协议升级或变更的意见不一致而导致的。 -*** +### 硬分叉 -由于协议规则的变化或更新,区块链分裂成两个独立的分支。指向同一个父块的2个区块被同时生成。某些部分的矿工看到其中一个区块,其他的矿工则看到另外一个区块,这导致2种区块链同时增长。分叉又分为软分叉和硬分叉。 +硬分叉是指对区块链协议进行不兼容的升级,这意味着新版本的节点无法与旧版本的节点兼容(旧节点不接受新版本的区块)。硬分叉会导致区块链分裂成两个独立的链,产生两个不同的加密货币。 -### 软分叉 -软分叉大体分为两种: -1.**旧节点接受新区块,新节点也接受旧区块。** +经典硬分叉实例: -2.**旧节点接受新区块,新节点不接受旧区块。** +**比特币现金(Bitcoin Cash, BCH)**:比特币社区在扩展区块大小和交易处理速度方面存在分歧。支持者希望通过增加区块大小(从1MB到8MB)来提高交易吞吐量。 -对于第一种来说,这种情况并不会导致分叉,因为这种升级并没有改变区块的格式。P2SH的升级就是这一类。 +**比特币黄金(Bitcoin Gold, BTG)**:为了使挖矿更加去中心化,比特币黄金采用了新的挖矿算法(Equihash),使普通用户可以使用GPU进行挖矿,避免ASIC矿机的垄断。 -对于第二种来说,我们又要分两种情况讨论: +**比特币 SV(Bitcoin SV, BSV)**:比特币现金社区内部关于协议升级和愿景的分歧导致的分叉 -* 如果新节点的算力超过50%,这个时候虽然旧节点会在新区块上挖矿,但是由于新节点不接受旧区块,导致新节点不会在旧区块上挖矿。再加上新节点的算力较大,那么最终最长链一定是由新区块组成的链。而且,这条最长链是双方都认为合法的一条。旧节点在这个时候,出于自身利益的考虑,也会升级成新节点——这就是软分叉的最好结果。 -* 如果新节点的的算力不足50%,这个时候由于新节点不会在旧区块上挖矿,所以即便新节点先挖出了几块矿,但是后面肯定会全都是旧区块。然后,新节点会认为只有新节点的才是合法的,而旧节点虽然认为两条都合法,但是新区块的那条算力不足导致不是最长链,所以它仍旧会选择原来那条。 -### 硬分叉 -硬分叉则为:**旧节点不接受新区块**。 +### 软分叉 -这里我们还是分两种情况讨论: +软分叉是指对区块链协议进行向后兼容的升级,这意味着新旧版本的节点可以共存,并且旧节点仍然可以验证新的区块和交易。软分叉通常用于改进网络功能或增加新特性,而不需要所有参与者都立即升级。 -* 如果新节点的算力超过50%,那么无论新节点能不能接受旧区块,链都会自然分为两条,一条只有旧区块,一条只有新区块。新节点不能接受新区块这种情况很好理解,即便算力不超过50%,也会分成两条链,无非是一边用户多,一边用户少而已。新节点能接受旧区块时,新节点虽然接受有旧区块的链,但是因为只要有了新区块旧节点就不会在上面挖矿,所以最终会还是会分成两条链,一条只有旧区块,一条只有新区块。 -* 如果新节点的算力不超过50%,对于新节点不能接受旧区块的情况,结果和上面的分析一样会分裂成两条链。而对于新节点接受旧区块的情况,这与第二种软分叉的第一种情况正好相反,也就是升级失败。此时最长链为旧区块为主导,新节点失去了话语权。 -值得注意的是,硬分叉不等于分裂!因为硬分叉只代表新旧节点会分成两条链,但是不代表两方的节点永远分道扬镳。双方仍旧可以放弃自己的阵营加入对方,只不过其中的一条链会被废弃,这些区块会变成孤块。这并不可怕,这种暂时性的分叉在比特币的世界几乎每天都在发生。 -## 分叉的历史 +常见的软分叉实例: + + **隔离见证** 通过将签名数据从区块中分离出来,增加了每个区块的实际容量,从而提高交易处理速度和效率, 更多参考: [隔离见证 - 百科](https://learnblockchain.cn/tags/%E9%9A%94%E7%A6%BB%E8%A7%81%E8%AF%81) + +**Taproot** 旨在提高比特币的隐私性、效率和智能合约功能。它引入了Schnorr签名和MAST(Merkelized Abstract Syntax Tree)等技术。更多参考: [Taproot - 百科](https://learnblockchain.cn/tags/Taproot) + + + +### 比特币历史分叉图 + -*** -![分叉历史](/graph/%E5%88%86%E5%8F%89%E5%8E%86%E5%8F%B2.png) +![分叉历史](../../graph/%E5%88%86%E5%8F%89%E5%8E%86%E5%8F%B2.png) ### BTC、BCH、BSV的诞生始末 @@ -66,7 +66,7 @@ 从分叉前最后一周的出块数据来看,84.2%的区块由BCHN社区挖出,由BCHA挖出的占0%。BCHN阵营对比BCHABC阵营在算力上占绝对优势。 -![饼图](/graph/%E9%A5%BC%E5%9B%BE.png) +![饼图](../../graph/%E9%A5%BC%E5%9B%BE.png) 最终,于2020年11月15日,BCH正式硬分叉为BCHA和BCHN。其中BCHN以绝对的优势胜出,并延续了BCH的基因。 diff --git "a/bitcoin/\345\215\217\350\256\256/RGB.md" "b/bitcoin/\345\215\217\350\256\256/RGB.md" index 3a5e133..ee3e72a 100644 --- "a/bitcoin/\345\215\217\350\256\256/RGB.md" +++ "b/bitcoin/\345\215\217\350\256\256/RGB.md" @@ -31,7 +31,7 @@ RGB实际上就是将**链下资产的发行**与**链上的UTXO变更**做一 5. 在比特币网络上,Pam 得币这件事对应着一个新的UTXO C,表示着Pam当前目前持有比特币UTXO; 6. 同理,当 Pam 转币时,他原有的UTXO C也会被销毁,进而形成一个新的UTXO D... -![RGB](/graph/RGB.png) +![RGB](../../graph/RGB.png) 如果这个$MATT币一直在不同人手里转下去,最终在比特币主网上会有与这些转账所对应的UTXO来进行标识,并且每次当下发生的转账,都会使得原来的UTXO被销毁,而产生新的UTXO。 diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/Taproot.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/Taproot.md" index 6a2a6be..17db981 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/Taproot.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/Taproot.md" @@ -1,6 +1,4 @@ -# Taproot - -## 介绍 +## Taproot Taproot是比特币网络的一次升级,于2021年11月14日上线。自SegWit(隔离见证)问世以来,Taproot与Schnorr签名一直是备受期待的比特币技术升级。Taproot旨在改变比特币脚本的运作方式,提升私密性、可扩展性与安全性。Taproot与名为Schnorr签名的相关升级结合后,将有望实现上述目标及更多计划。 @@ -10,13 +8,13 @@ Taproot是一次优化比特币脚本的软分叉,提升私密性、效率以 在不可能三角中,Taproot升级主要应对了两个方面。一个是进一步提高匿名性能力,也就是进一步提升安全性;另一个是期望通过改变区块本身的数据结构来提升交易性能,减少交易中不必要的数据负担。 -![不可能三角](../graph/%E4%B8%8D%E5%8F%AF%E8%83%BD%E4%B8%89%E8%A7%92.png) +![不可能三角](../../graph/%E4%B8%8D%E5%8F%AF%E8%83%BD%E4%B8%89%E8%A7%92.png) Taproot升级由3项不同的比特币改进提案(BIP)组成,其中包括:**Taproot**、**Tapscript**及其核心,即名为“**Schnorr签名**”的全新数字签名方案。Taproot旨在为比特币用户带来诸多好处,例如**提升交易私密性和降低交易费用**。还将让比特币执行更多复杂的交易,从而拓宽用例,与以太坊一较高下,尤其是智能合约功能和网络对[去中心化金融(DeFi)](https://academy.binance.com/en/glossary/defi)和[非同质化代币(NFT)](https://academy.binance.com/en/glossary/non-fungible-token-nft)的支持。 Taproot提案最初由Bitcoin Core开发者Greg Maxwell在2018年1月提出。2020年10月,Pieter Wuille创建代码拉取请求,将Taproot并入Bitcoin Core代码库。为了全面部署升级,节点运行者须采用Taproot的全新共识规则。该提案最终得到90%的矿工支持,并于**2021年11月14日在区块709,632中正式激活**。 -## Taproot如何运作? +### Taproot 如何运作? ### Schnorr签名(BIP340) diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/UTXO.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/UTXO.md" index d5b6d01..c4a4221 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/UTXO.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/UTXO.md" @@ -1,23 +1,21 @@ -# UTXO +## UTXO : 未花费的交易输出 -## 介绍 +UTXO 未花费的交易输出(Unspent Transaction Output ),是比特币和其他基于比特币的加密货币系统中管理账户余额的一种机制。它记录了每个交易输出的状态,以追踪每个比特币的所有权。 -*** +在UTXO模型中,比特币交易是通过消耗(花费)之前的UTXO并创建新的UTXO来进行的。每个UTXO代表一笔未被花费的比特币金额,直到它被新的交易消耗为止。 -未花费的交易输出(Unspent Transaction Output/UTXO),它是中本聪最早在比特币中采用的一个具体技术方案。未花费的交易输出是比特币交易中的基本概念,当我们要计算用户的剩余资产时,我们需要通过计算UTXO来得到。 +当我们要计算地址余额时,是通过所有 UTXO 得到。UTXO都会**作为一个整体被消耗**(不可分割性),交易剩余的金额需要“**找零**“。 -**花费与未花费**的概念:举个简单的例子,你手上有一笔现金,未花费就说明现金属于你,花费了就说明现金不属于你。在比特币世界中,如果你有一笔未花费的交易输出,那么它就是你的资产。 -> 在交易过程中,对方向你转账,我们把转入到对应地址的过程称为交易输出,如果你没花费转入的金额,那么说明这个交易输出未花费,仍旧是你的资产。 -一个UTXO可以是1“**聪**”(satoshi)的任意整数倍。(1 BTC=1亿聪) + [比特币交易](https://learnblockchain.cn/tags/比特币交易)的构成由**输入(Inputs)** 和 **输出(Outputs)** 构成: -值得注意的是,当你把未花费的交易输出进行花费时,不论这笔交易输出是否超过了所需的金额,UTXO都会**作为一个整体被消耗**。UTXO具有不可分割性,溢出的金额会被“**找零**”,重新回到你的账户下,并且存放在一个新的地址。 +1. **输入(Inputs)**:指向之前交易的UTXO。每个输入都引用一个特定的UTXO,并提供用于花费该UTXO的证明(通常是一个数字签名来解锁)。 +2. **输出(Outputs)**:创建新的UTXO,指定接收者的地址和金额。每个输出指定了比特币的接收者和金额,并生成一个新的UTXO。 -一笔比特币交易通过使用所有者的签名来解锁UTXO,并通过使用新的所有者的比特币地址来锁定并创建UTXO。 -## 与UTXO相关知识 -*** +一个UTXO可以是1“**聪**”(satoshi,1 BTC=1亿聪 )的任意整数倍。 + + -1.[比特币交易](比特币交易.md) diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\205\261\350\257\206.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\344\270\255\346\234\254\350\201\252\345\205\261\350\257\206.md" similarity index 95% rename from "bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\205\261\350\257\206.md" rename to "bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\344\270\255\346\234\254\350\201\252\345\205\261\350\257\206.md" index 2d4e2ec..0eac457 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\205\261\350\257\206.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\344\270\255\346\234\254\350\201\252\345\205\261\350\257\206.md" @@ -1,8 +1,4 @@ -# 比特币共识 - -## 介绍 - -*** +## 中本聪共识 由于比特币采用去中心化的区块链设计,节点各处分散且平行。因此必须要设计一套制度来维护系统的运作顺序与公平性,统一区块链的版本,并且奖励提供资源来维护区块链的使用者,以及惩罚恶意危害着。共识机制就此产生。共识机制需要解决的根本问题是:某个节点如何添加一个区块到区块链中而得到全网的同意。 @@ -12,11 +8,11 @@ 比特币中采用了一种巧妙的方案:POW工作量证明,即通过算力进行投票。 -## POW工作量证明 +### POW工作量证明 + -*** -![工作量证明流程](/graph/%E5%B7%A5%E4%BD%9C%E9%87%8F%E8%AF%81%E6%98%8E%E6%B5%81%E7%A8%8B.png) +![工作量证明流程](../../graph/%E5%B7%A5%E4%BD%9C%E9%87%8F%E8%AF%81%E6%98%8E%E6%B5%81%E7%A8%8B.png) ### POW原理 diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201.md" index a3a00c3..abc8dd5 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201.md" @@ -1,7 +1,7 @@ - ## 比特币 ### 什么是比特币? + 比特币(Bitcoin)是第一种去中心化的加密货币,最初由中本聪在2008年11月1日提出,并于2009 作为开源软件发布。比特币通过一种点对点(peer-to-peer)的网络实现,无需中央机构或银行,用户之间可以直接进行交易。比特币被认为是区块链技术的首次应用。 比特币使用整个[P2P网络](https://learnblockchain.cn/tags/p2p网络)中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学确保了货币所有权和流通交易的匿名性。 @@ -14,71 +14,48 @@ **2. 挖矿出块**:矿工通过解决复杂的数学难题(哈希计算)来验证交易并将其打包到区块中。成功解决难题的矿工获得新生成的比特币作为奖励。挖矿难度会根据全网计算能力自动调整,确保平均每10分钟生成一个新区块。 +### 比特币相关概念 -### 相关概念 - -#### [比特币客户端](比特币客户端.md) - -比特币客户端是一款电脑或移动设备上的应用程序,可以用来管理比特币资产和进行比特币交易。比特币客户端分为三种类型:全节点客户端、轻量级客户端和网页客户端。 - -#### [比特币分叉](/bitcoin/分叉/比特币分叉.md) - -由于协议规则的变化或更新,区块链分裂成两个独立的分支。指向同一个父块的2个区块被同时生成。某些部分的矿工看到其中一个区块,其他的矿工则看到另外一个区块,这导致2种区块链同时增长。分叉主要分为两种类型:软分叉和硬分叉。其中比特币硬分叉导致了[比特币现金](/bitcoin/分叉/bitcoin_cash.md)的出现。 +**比特币客户端**: 用户与比特币网络交互的应用程序,用于发送和接收比特币交易、查看交易历史、管理比特币钱包等功能,详情参考[ 比特币客户端百科](https://learnblockchain.cn/tags/%E6%AF%94%E7%89%B9%E5%B8%81%E5%AE%A2%E6%88%B7%E7%AB%AF) -#### [比特币共识](比特币共识.md) -由于加密货币大多采用去中心化的区块链设计,节点各处分散且平行。因此必须要设计一套制度来维护系统的运作顺序与公平性,统一区块链的版本,并且奖励提供资源来维护区块链的使用者,以及惩罚恶意危害着。共识机制就此产生。比较典型的比特币共识机制有:[POW工作量证明](POW.md)。 -#### [比特币钱包](/bitcoin/钱包/btc钱包.md) +**比特币钱包**: 是用于发送和接收比特币的设备或程序(通常比特币客户端也会包含钱包模块)。与现实中的钱包不同,钱包是不存储货币的。实际上,钱包管理的的是[私钥](private key.md)。 -比特币钱包是用于发送和接收比特币的设备或程序。需要注意的是,与我们现实中的钱包不同,比特币钱包是不储存比特币的。实际上,比特币钱包存储的是[私钥](private key.md)。拥有私钥就可以访问一个特定的地址,并且可以消费与该地址相关的任何比特币。 -#### 比特币网络 -> 比特币主网是指比特币交易的原始和主要网络,在上面流通的比特币具有真实的经济价值。 +**比特币分叉(Bitcoin Fork)**: 是指比特币区块链的分裂,产生了不同版本的区块链和相应的加密货币。分叉主要分为硬分叉(Hard Fork)和软分叉(Soft Fork)两种类型。分叉通常是由于社区对协议升级或变更的意见不一致而导致的。更多参考[ 比特币分叉 - 百科](https://learnblockchain.cn/tags/%E6%AF%94%E7%89%B9%E5%B8%81%E5%88%86%E5%8F%89) -详情请阅读:[比特币主网](/bitcoin/比特币主网/比特币主网.md) -#### 比特币二层扩容 -> 比特币是基于区块链架构的,通常我们将区块链看作三层:Layer 0、Layer 1和Layer 2。其中Layer 2对应的是区块链分层架构中的应用层和合约层。其中对Layer 2扩容也被称作二层扩容。 + **共识**:在去中心化网络中,各节点各处分散且平行。因此必须要设计一套制度来维护系统的运作,统一区块链的账本数据,并且奖励提供资源来维护区块链的矿工。这就是共识机制要处理的问题。比特币使用:[中本聪共识 - POW工作量](https://learnblockchain.cn/tags/%E4%B8%AD%E6%9C%AC%E8%81%AA%E5%85%B1%E8%AF%86)。 -详情请阅读:[比特币二层扩容](/bitcoin/二层扩容/比特币二层扩容.md) -#### UTXO +**比特币网络**:比特币是一个点对点网络,由矿工、节点和用户共同维护。比特币主网:流通真实的比特币的价值网络。比特币测试网:与主网的功能类似,方便开发人员或测试人员使用,测试网币不具有真实的经济。 -> 未花费的交易输出(Unspent Transaction Output)Transaction被简称为UTXO。比特币交易由交易输入和交易输出组成,每一笔交易都要花费一笔输入,产生一笔输出。交易的输入是之前交易未花费的输出,这笔交易的输出可以被当做下一笔新交易的输入。 -详情请阅读:[UTXO](/bitcoin/比特币主网/UTXO.md) -#### Script +**比特币二层扩容**:旨在通过将部分交易移出比特币主链,从而提高交易吞吐量、减少交易费用和缩短交易确认时间。 比特币扩容方案有:[闪电网络](https://learnblockchain.cn/tags/%E9%97%AA%E7%94%B5%E7%BD%91%E7%BB%9C) 、[BitVM 有效性证明](https://learnblockchain.cn/tags/BitVM)、 [RGB 客户端验证](https://learnblockchain.cn/tags/RGB)、[RGB++ 同构绑定](https://learnblockchain.cn/tags/RGB++) -> Script即为脚本,是一种对比特币网络上的节点进行解释的编程语言,是一种基于堆栈的语言。其中的scriptSig和scriptPubKey分别管理着每一笔交易的“钥匙”和“锁”。 -详情请阅读:[Script](/bitcoin/比特币主网/Script.md) +**UTXO(Unspent Output Transaction)**: 未花费的交易输出 被简称为 UTXO 。比特币的加密货币系统中管理账户余额的一种机制,比特币交易是通过消耗(花费)之前的UTXO并创建新的UTXO来进行的。每个 UTXO 代表一笔未被花费的比特币金额,直到它被新的交易消耗为止。详情参考 [UTXO 百科](https://learnblockchain.cn/tags/UTXO) 。 -#### 隔离见证 -> 隔离见证,即Segregated Witness(简称SegWit)。见证指的是对交易合法性的验证,也就是签名;隔离指的是把见证数据从交易信息里抽离出来,单独存放。其目的为解决比特币的拥堵问题。 -详情请阅读:[隔离见证](/bitcoin/比特币主网/隔离见证.md) +**比特币脚本**:是一种对[比特币交易](https://learnblockchain.cn/tags/比特币交易)进行编程、基于堆栈的语言。有两类脚本: scriptSig 和 scriptPubKey ,分别管理着每一笔交易的“钥匙”和“锁”。 -#### Taproot -> Taproot是比特币网络的一次升级,是自隔离见证问世以来备受期待的比特币技术升级,旨在改变比特币脚本的运作方式,提升私密性、可扩展性和安全性。 -详情请阅读:[Taproot](/bitcoin/比特币主网/Taproot.md) + **比特币区块链浏览器**: 用于查看比特币区块链上的交易和区块信息。它允许用户搜索特定的交易、区块、地址等,并查看详细的交易历史、余额和区块信息。更多[区块链浏览器](https://learnblockchain.cn/tags/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%B5%8F%E8%A7%88%E5%99%A8) -#### 比特币区块链浏览器 -> 对于区块链,所有的数据都是开放的,但不是每个人都能写代码去查看链上的交易,大多数人会通过一个公开的窗口来查看数据。这个公开的窗口就是区块链浏览器。 -详情请阅读:[区块链浏览器](/basic/基础概念/区块链浏览器.md) +### 更多内容 - Awsome Bitcoin +如果你是开发者,为软件开发人员准备的比特币服务和工具列表: https://github.com/igorbarinov/awesome-bitcoin -### Awsome Bitcoin diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\270\273\347\275\221.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\270\273\347\275\221.md" deleted file mode 100644 index 6c7ca50..0000000 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\270\273\347\275\221.md" +++ /dev/null @@ -1,34 +0,0 @@ -# 比特币主网 - -## 介绍 - -*** - -### 什么是主网? - -比特币主网是比特币交易的原始和主要网络,在上面流通的比特币具有真实的经济价值。 - -主网是相对于测试网来说的,即正式上线的、独立的区块链网络。测试网与主网的功能类似,主要用作项目快速开发迭代以及社区早期参与。 - -### 什么是测试网? - -测试网(Testnet)是可用于测试的替代区块链。测试网币并没有货币价值,因此不具有真实的经济价值。在测试网中开发人员或测试人员无需使用真实的货币即可进行试验。同时,测试网允许开发人员在不影响原始网络运行情况下进行测试,是一种用于测试目的的并行网络。 - -当然,测试网与比特币区块链(Livenet)是不兼容的。意味着既不能在测试网使用真实币,也不能在Livenet中使用测试网币。 - -### 主网与测试网的异同 - -+ 相同点在于:测试网与主网在相同协议下运行,工作原理一般是相似的,并且私钥(公钥、地址)的生成方式相同。 -+ 不同点在于:主网是真正要运营的网络,测试网只是主网上线前测试用的虚拟网络,为主网上线做准备;主网上流通的货币具有实际的投资与交换价值,测试网则没有;主网与测试网使用不同的存储空间,两个网络相互独立,无法进行交互;测试网的状态可以随需求调整,相对不稳定。而主网上线后就是一个稳定运行的区块链网络。 - -### 什么是主网上线? - -主网一般指公有链,公有链代表了一个项目的底层设施。主网上线即是指这个底层设施搭建好了,已经可以放在网络里供开发者来使用了。就像Windows、iOS操作系统一样,这些系统只有搭建好并上传到网络里,开发者才能在上面开发各种软件和应用,用户才能使用系统上的各种功能。 - -### 主网上线的意义 - -+ 主网上线前,大多数加密代币是基于以太坊平台的ERC-20代币,或基于其他底层区块链的侧链项目。这类代币不具备独立的运行和挖矿能力,相当于是其他底层区块链上的临时通证,不具有真实的经济价值。主网上线后,项目将不再依靠以太坊或者是其他底层区块链的侧链项目,而是拥有自己独立运行的区块链网络,作为一个独立的个体被开发者和用户认可和使用。 -+ 主网上线意味着项目生态启动,后续的商业行为才有意义,不会成为无根之木。 - - - diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\272\244\346\230\223.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\272\244\346\230\223.md" index c634249..199077d 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\272\244\346\230\223.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\344\272\244\346\230\223.md" @@ -1,31 +1,32 @@ -# 比特币交易 +## 比特币交易 -## 介绍 +比特币交易是通过比特币网络进行的数字货币转移。 -*** +### 比特币交易步骤 -比特币交易其实就是比特币价值在交易双方之间的转移。可以划分为:链上交易和链下交易。 +1. **创建交易**:用户使用比特币钱包创建交易,指定输入、输出和交易费用。交易通过私钥签名,确保其真实性。 -## 链上交易 +2. **广播交易**:创建的交易通过比特币网络广播给其他节点。 -*** +3. **验证交易**:比特币节点验证交易是否合法,包括检查签名和确保输入未被双花。 -链上交易(On-chain transaction)是比特币的常规交易方式,指的是发生在区块链网络上的交易。交易一旦经过验证(矿工们验证交易的过程就是在“挖矿”),其就会记录在区块链网络的公共分类账上。 +4. **包含在区块中**:矿工将验证后的交易包含在一个新的区块中,并通过工作量证明(PoW)算法解决区块的数学难题。 -![交易流程](/graph/%E4%BA%A4%E6%98%93%E6%B5%81%E7%A8%8B.png) +5. **区块确认**:当一个区块被成功挖出并添加到区块链上,交易即被确认。通常,交易需要多个区块确认(如 6 次确认)才被认为安全。 -### 交易包含的内容 +![交易流程](../../graph/%E4%BA%A4%E6%98%93%E6%B5%81%E7%A8%8B.png) -* 包含**一个或多个输入**,用来支付交易输出所需价值 -* 包含**一个或多个输出** -* 包含每笔交易**输入的所有权证明** -* 所有输出的累加会**略小于**所有输入的累加,两者的差值隐含了**手续费** +#### 比特币交易结构 -### 交易找零 +比特币交易由以下几个部分组成: -假设A要给B转账500元,A提供的输入地址内有600元,并且交易中需要支付5元手续费。那么此时就会产生两个输出:一个是支付给B的500元已花费的交易输出,另一个是95元**未花费的交易输出**([UTXO](UTXO.md))。也就是在现实生活中出现的**找零**现象。一般来说,除非交易输入总额与输出总额加上手续费完全相等,否则交易中一定会产生一些找零。找零输出会返回给原来的所有者。值得注意的是找零地址和输入提供的地址是不同的,通常是所有者钱包的**新地址。** +* 包含**一个或多个输入(inputs)**:交易来源,即比特币从哪里来。输入引用了以前交易id 、输出索引及解锁脚本(或称脚本签名)。 +* 包含**一个或多个输出**(outputs):定了比特币要发送到哪里。每个输出包含一个接收地址和发送的比特币数量。 +* 所有输出的累加会**略小于**所有输入的累加,两者的差值隐含了**手续费**, 以激励矿工将其交易包含在区块中 -### 比特币交易输入 + + +#### 比特币交易输入 交易输入通过引用将UTXO标记为“将被消费”,并通过**解锁脚本**(又称脚本签名)提供所有权证明。构建一个交易时,一个钱包从它控制的UTXO中选择足够的面值来支付请求的付款。有时一个UTXO就足够,有时需要不止一个。对于用于付款的每个UTXO,钱包将创建一个指向该UTXO的输入(将该UTXO设置为输入),使用解锁脚本来解锁。 @@ -36,7 +37,7 @@ * 一个**scriptSig**(脚本签名),满足UTXO的消费条件,解锁用于支出 * 一个**序列号**,目前未被使用的的交易替换功能,设为0xFFFFFFFF(4294967295) -### 比特币交易输出 +#### 比特币交易输出 比特币交易的**基本组成部分**是交易输出。交易输出是比特币不可分割的基本组合,记录在区块链上,并被整个网络认可有效。比特币全节点跟踪所有可找到的和可使用的输出,也就是上面提到的“未花费的交易输出”。每个交易都会创造输出,生成一定数量的UTXO。 @@ -45,59 +46,10 @@ * 一定量的比特币,面值为“**聪**”(satoshis),是**最小的比特币单位**(1比特币=1亿聪) * 确定花费输出所需条件的**加密难题**。这个加密难题也被称为**锁定脚本**(locking script)、见证脚本(witness script)或脚本公钥(scriptPubKey),并且这个难题只能收款方才能解开 -关于脚本的知识,请点击[此处](Script.md)获取。 - -![交易输入输出](../graph/%E4%BA%A4%E6%98%93%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA.png) - -当我们要计算剩余资产的时候,只需要看每一笔流入账户的交易输出有哪些未被花费就行。 - -### 交易的类型 - -* **普通交易**:从一个地址到另一个地址的简单支付,有一个输入和两个输出(包括目标输出和找零) -* **打包资金的交易**:集合多个输入到一个输出的模式 -* **分散资金的交易**:一个输入分配给多个输出,即多个接收者 -* **币基交易**:它是每个区块中的第一笔交易,这种交易存在的原因是作为对挖矿的奖励,创造出全新的可花费比特币用来支付给“赢家”矿工。其没有输入,只有输出。 - -### 链上交易的优缺点 - -优点: - -* **安全性**:存储在区块链上的数据是端到端加密的,一旦记录无法更改 -* **去中心化**:区块链不受中央管理机构的监督,意味着几乎没有中间人违反信任或操纵数据流的风险 -* **透明度**:使用分布式账本意味着交易在多个位置同时记录和验证。使用区块链浏览器,任何人可以将交易追溯到唯一的钱包地址并查看其活动,从而可以独立验证索赔和交易 - -缺点: - -* **交易缓慢**:区块链交易速度会受到队列中待处理的交易量的影响,可能会导致网络拥堵 -* **高交易费用**:当交易量高时,网络费用也会上涨。需求量大时,网络的使用可能会变的非常昂贵 -* **电力使用**:工作量证明共识机制下,挖掘的过程使用大量算力和能源 - -## 链下交易 - -*** - -链下交易将部分工作从区块链生态系统中转移出来,之后可以重新集成到区块链中。在链下网络上,用户同意第三方将处理验证和验证交易。 - -链下系统通过促进更快、更便宜的交易来解决区块链网络的**可扩展性问题**。一种脱链交易方法是使用第 2 层(Layer 2),这是建立在主区块链(主网)之上的第二个区块链,以帮助主网扩展速度和成本。 - -其中**闪电网络**是一种基于Layer 2的技术。闪电网络的主要是实现是,支付的双方在链下建立一个"通道",双方可以在这个“通道”多次进行支付交易,在需要结算时,关闭通道即可。当支付的双方没有直接的"通道"时可以借助第三方节点进行中转。 - -此外还有**侧链**技术,即将比特币交易被转移到另一条区块链上,该侧链支持其他种类的区块链与比特币的链进行交互。 - -### 链下交易的优缺点 - -优点: - -- **更快的交易速度:**链下交易无需等待主区块链网络确认交易,使其更快甚至即时处理 -- **降低成本:**链下确认的交易几乎不需要任何费用,因为不需要通过挖矿或质押进行验证的过程。此功能在处理大量加密货币时特别有用 -- **更高的匿名性:**链下交易提供更多隐私,因为数据不会公开广播到网络 +关于脚本的知识,点击[此处](https://learnblockchain.cn/tags/%E6%AF%94%E7%89%B9%E5%B8%81%E8%84%9A%E6%9C%AC)获取。 -缺点: +![交易输入输出](../../graph/%E4%BA%A4%E6%98%93%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA.png) -- **透明度较低:**链下发生的交易不遵循与区块链相同的协议,从而增加了争议的可能性 -- **无共识方法:**如果网络上所有用户没有达成共识,验证和认证可能会留给中介。这意味着需要给予第三方信任,而不是让所有网络参与者作为一个集体达成一致 -- **可能不太安全:**添加到区块链的块无法更改,因此在区块链之外操作会使网络更容易受到欺诈活动的影响 -*** -参考文章: https://zhuanlan.zhihu.com/p/559311782 +比特币交易可以通过[区块浏览器](https://learnblockchain.cn/tags/%E5%8C%BA%E5%9D%97%E9%93%BE%E6%B5%8F%E8%A7%88%E5%99%A8)(如 Blockchain.info 或 Blockchair)进行查看。这些工具可以显示特定交易的详细信息,包括输入、输出、交易费和确认状态。 diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\256\242\346\210\267\347\253\257.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\256\242\346\210\267\347\253\257.md" index 0d6c681..0173a53 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\256\242\346\210\267\347\253\257.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\346\257\224\347\211\271\345\270\201\345\256\242\346\210\267\347\253\257.md" @@ -1,39 +1,28 @@ -# 比特币客户端 +## 比特币客户端 -## 介绍 +比特币客户端是用户与比特币网络交互的应用程序,用于发送和接收比特币交易、查看交易历史、管理比特币钱包等功能。最常用的比特币客户端之一是 Bitcoin Core,它是比特币网络的官方客户端。 -*** +比特币客户端有多种类型和选择,根据不同的功能和特点,可以分为以下几类: -比特币客户端是一种可在电脑或手机上运行的软件,让用户能够连接到比特币网络进行比特币的发送、接收、存储、查询等操作。比特币客户端有多种类型和选择,根据不同的功能和特点,可以分为以下几类: +* **全节点客户端**:下载并验证整个比特币区块链的数据的,让用户可以完全自主地参与比特币网络的运行和维护,不需要依赖任何第三方服务。全节点客户端的特点是安全可靠、隐私保护更好,但需要占用大量的存储空间和网络带宽。Bitcoin Core 是一个全节点客户端。 +* **轻量级客户端**:只下载与用户相关的区块头,不下载完整区块链,占用资源少,但依赖远程服务器(如SPV节点)进行交易验证。Electrum 是常见轻量级客户端。通常钱包应用软件就是一个轻量级客户端。 -* **全节点客户端**:这类客户端是下载并验证整个比特币区块链的数据的,让用户可以完全自主地参与比特币网络的运行和维护,不需要依赖任何第三方服务。这类客户端的优点是安全可靠、隐私保护、功能强大,缺点是占用大量的存储空间和网络带宽,运行速度较慢。比较知名的全节点客户端有:Bitcoin Core、Bitcoin Knots、Bitcoin Unlimited等。 -* **轻量级客户端**:这类客户端是只下载并验证部分比特币区块链的数据的,让用户可以便捷地使用比特币网络的基本功能,不需要下载整个区块链。这类客户端的优点是占用少量的存储空间和网络带宽,运行速度较快,缺点是安全性能和隐私性能较低,需要依赖第三方服务。比较知名的轻量级客户端有:Electrum、Bitcoin Wallet 、BRD 等。 -## 如何选择比特币客户端? -*** +### 常见比特币客户端及钱包 -要选择一个适合自己的比特币客户端,需要考虑以下几个方面: +1. **[Bitcoin Core](bitcoin.org):** 比特币的官方客户端,由比特币核心开发团队维护。是一个全节点客户端,Bitcoin Core 也包括一个比特币钱包功能,允许用户管理比特币资产官网: -- **功能需求**:根据自己的使用目标和策略,选择能够满足自己功能需求的客户端,比如想要完全控制自己的资产和信息就选择全节点客户端,想要快速方便地进行交易就选择轻量级客户端或网页客户端。 -- **安全性能**:根据自己的安全要求,选择能够保障自己资产和信息安全的客户端,比如选择有良好声誉和合规性的服务商或平台,选择有多重加密和验证的技术措施,选择有及时更新和修复的维护团队。 -- **用户体验**:根据自己的使用习惯,选择能够提供良好用户体验的客户端,比如选择有清晰和友好的界面设计,选择有流畅和稳定的运行速度,选择有及时和有效的客服支持。 +2. **[btcd](github.com/btcsuite/btcd)**:Go语言实现的全节点,比特币协议的完整实现。 -*** +3. **[Electrum](electrum.org):** 一款轻量级的比特币客户端,提供了一个安全的比特币钱包,支持冷存储、多签名、硬件钱包等高级功能。 +4. **[Exodus](exodus.com):** 一个多加密货币钱包客户端,支持比特币和其他数字资产。它具有用户友好的界面,使用户能够轻松管理多种加密货币。 +5. **[Atomic Wallet](https://atomicwallet.io/):** 一款多加密货币钱包客户端,支持比特币和多种其他加密货币。它具有用户友好的界面,支持原子交换和多种高级功能。 -## 常见客户端 -1. **Bitcoin Core:** Bitcoin Core 是比特币的官方客户端,由比特币核心开发团队维护。它是一个全节点客户端,需要下载和同步整个比特币区块链,因此需要大量的存储空间和计算资源。Bitcoin Core 也包括一个比特币钱包功能,允许用户管理比特币资产。 +6. **[Trezor](https://trezor.io/) Suite:** Trezor Suite 是与 Trezor 硬件钱包配合使用的比特币客户端,提供了额外的安全性。它允许用户管理比特币资产、进行硬件钱包交易等。 -2. **Electrum:** Electrum 是一款轻量级的比特币客户端,不需要下载整个区块链,因此更节省存储空间和时间。它提供了一个安全的比特币钱包,支持冷存储、多签名、硬件钱包等高级功能。 +7. **[Ledger](https://www.ledger.com/) Live:** Ledger Live 是与 Ledger 硬件钱包一起使用的客户端,也支持比特币和其他加密货币。它提供了硬件钱包的安全性,同时提供了方便的用户界面。 -3. **Exodus:** Exodus 是一个多加密货币钱包客户端,支持比特币和其他数字资产。它具有用户友好的界面,使用户能够轻松管理多种加密货币。 - -4. **Atomic Wallet:** Atomic Wallet 是一款多加密货币钱包客户端,支持比特币和多种其他加密货币。它具有用户友好的界面,支持原子交换和多种高级功能。 - -5. **Trezor Suite:** Trezor Suite 是与 Trezor 硬件钱包配合使用的比特币客户端,提供了额外的安全性。它允许用户管理比特币资产、进行硬件钱包交易等。 - -6. **Ledger Live:** Ledger Live 是与 Ledger 硬件钱包一起使用的客户端,也支持比特币和其他加密货币。它提供了硬件钱包的安全性,同时提供了方便的用户界面。 - -7. **Mobile Wallets:** 还有许多移动端比特币客户端,如Electrum钱包、Coinbase钱包、BRD钱包等,这些应用程序可以在智能手机上使用,允许用户随时随地访问他们的比特币钱包。 + diff --git "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\351\232\224\347\246\273\350\247\201\350\257\201.md" "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\351\232\224\347\246\273\350\247\201\350\257\201.md" index bceb6e9..54fe4bd 100644 --- "a/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\351\232\224\347\246\273\350\247\201\350\257\201.md" +++ "b/bitcoin/\345\237\272\347\241\200\346\246\202\345\277\265/\351\232\224\347\246\273\350\247\201\350\257\201.md" @@ -1,47 +1,26 @@ -# 隔离见证 +## 隔离见证(Segregated Witness, SegWit) -## 介绍 +**隔离见证**(SegWit)是一个由多个 BIP(141、142、143、144 和 145)描述的**软分叉**,其主要用意是**优化比特币交易和区块的结构**,将**交易的签名**(也叫 “脚本签名(scriptSig)”、“见证(witness)” 或 “解锁脚本(unlocking script)”)从交易中移到一个独立的结构中。它**不仅允许降低比特币交易的数据量大小**(因此能让一个区块塞下更多的交易),**也能解决 “交易可塑性(transaction malleability)” 问题**(也就是阻碍闪电网络实现的缺陷),对**支付通道和闪电网络**这样基于比特币交易结构的技术来说极为关键。 -*** +SegWit在2017年8月24日正式激活,成为比特币网络的一部分。 -**隔离见证**(SegWit)是一个由多个 BIP(141、142、143、144 和 145)描述的**软分叉**,其主要用意是**优化比特币交易和区块的结构**,将**交易的签名**(也叫 “脚本签名(scriptSig)”、“见证(witness)” 或 “解锁脚本(unlocking script)”)从交易中移到一个独立的结构中。它**不仅允许降低比特币交易的数据量大小**(因此能让一个区块塞下更多的交易),**也能解决 “交易熔融性(transaction malleability)” 问题**(也就是阻碍闪电网络实现的缺陷),对**支付通道和闪电网络**这样基于比特币交易结构的技术来说极为关键。 +### 隔离见证改进点 -## 隔离见证主要优势 +#### 提高扩展性 -### 增加容量 +通过分离见证数据,增加了每个区块能容纳的[交易](https://learnblockchain.cn/tags/%E6%AF%94%E7%89%B9%E5%B8%81%E4%BA%A4%E6%98%93)数量,从而提高了比特币网络的处理能力。 -隔离见证的最大优势之一就是**增加区块容量**。通过从交易输入中删除签名数据,可以在一个区块中存储更多交易。 +包括两个主要部分:输入和输出。 如果没有隔离见证,则签名数据最多可占用一个区块的65%。使用隔离见证,会把签名数据从交易的输入中移除。这使有效区块大小从1 MB增加到大约4 MB。 -交易包括两个主要部分:输入和输出。本质上,输入包含发送者的公共地址,而输出包含接收者的公共地址。但是,发送人必须证明他们已经转移了资金,并且必须使用数字签名。 +此外,隔离见证还引入了**区块权重(weight)**的概念。将区块权重视为替代区块大小的概念。本质上,区块权重是一种度量单位,它包括所有的区块数据:包括交易数据(1 MB)和签名数据(最大3 MB)。 -如果没有隔离见证,则签名数据最多可占用一个区块的65%。使用隔离见证,会把签名数据从交易的输入中移除。这使有效区块大小从1 MB增加到大约4 MB。 -请注意,隔离见证并不仅仅是区块大小的增加。相反,它是一种工程解决方案,可以在**不增加区块大小限制的情况下增加有效区块的大小**。更具体地说,实际区块大小仍为1 MB,但有效块大小的限制为4 MB。 -此外,隔离见证还引入了**区块权重**的概念。我们可以将区块权重视为替代区块大小的概念。本质上,区块权重是一种度量单位,它包括所有的区块数据:包括交易数据(1 MB)和签名数据(最大3 MB),这些数据不再是输入字段的一部分。 +#### 交易可塑性问题修复 -### 交易速度提升 - -除了可以存储更多交易的区块,隔离见证还能够提高交易速度,由于区块链中可能存储大量的交易数据。即使区块的出块时间相同,但区块中可以容纳更多的事务,因此TPS(每秒交易量)会更高。 - -交易速度的提升也能够帮助降低比特币网络的交易成本。在实施隔离见证之前,每笔交易费用大多在30美元以上。但是,随着隔离见证的实施,交易成本大幅降低至每笔交易1美元。 - -### 交易延展性修复 - -比特币面临的另一个主要问题是篡改交易签名。如果签名被篡改,则可能导致两方之间的交易被破坏。由于存储在区块链上的数据实际上是不可变的,因此无效交易会永久存储在区块链上。 +交易可塑性问题 (Transaction Malleability) 是比特币交易 A 发出之后,在还没有被确认之前,攻击者通过修改某些交易数据(使用新的签名数据),使得一笔交易的唯一标识——交易哈希发生了改变,就形成了新的交易 B ,**假如交易 B 先被记录到比特币账本中,那么交易 A 会因为双重支付问题,被验证为不合法,从而拒绝**。 使用隔离见证,签名不再是交易数据的一部分,从而消除了更改此数据的可能性。此修复程序支持在区块链社区内进行进一步的创新,包括**二层协议**和**智能合约**。 -## SegWit与SegWit2x - -SegWit是软分叉升级,意味着它支持向后兼容。换句话说,未更新SegWit的比特币节点仍然能够处理交易。但是,隔离见证还有另一个可实施的版本,称为SegWit2x(S2X),该版本需要进行硬分叉升级。 - -SegWit和SegWit2x之间的主要区别在于,后者**不仅将包括交易批处理的更改**,而且还包括**增加区块大小**(从1MB增加到2MB)。尽管如此,较大的区块大小会增加节点操作员和矿工的负担,因为他们要处理更多的数据。 - -另一个显著区别是SegWit提案由比特币社区支持和执行。其中也催生了UASF的概念,UASF代表用户激活的软分叉。 - -另一方面,SegWit2x建议对管理比特币的基本规则进行实质性修改。但是由于开发人员无法就其采用和实施达成共识,因此SegWit2x最终被暂停。 -*** -参考文章:https://academy.binance.com/zh/articles/a-beginners-guide-to-segretated-witness-segwit?&utm_campaign=web_share_copy