长期存在的区块大小争议以及最近推出的几种新的比特币实现方式突显出,并非所有比特币节点都应用完全相同的规则-也许更重要的是,在实施这些规则时,并非所有开发团队都应用类似的策略. 背后的开发团队 比特币核心, 比特币历史悠久的“参考客户”,在实施规则更改(例如提高区块大小限制)之前,需要社区达成广泛共识,而其他更改则未遵循相同的标准. 同时,一些比特币分叉,例如 比特币LJR, 通常被开发社区所接受,而其他人,例如 比特币经典, 引起很多争议。一些人认为这是不一致的. 但是这种差异可以解释。在某些分支中实施的某些规则更改对比特币网络的影响与其他方面有很大不同。或更具体地说:某些规则更改会影响比特币网络的不同层。其中一些规则更改可以拆分比特币网络,而另一些则不能. 澄清这些差异, 比特币核心 开发商和 西弗雷克斯 首席执行官埃里克·隆布罗佐(Eric Lombrozo)最近提议在所有比特币改进提案中标记相关层。这些是他指定的比特币网络上的四个主要层 BIP 123, 以及每个共识的重要性. 共识规则 共识规则是比特币最重要的规则。它们确定了区块奖励中包含的比特币数量,挖矿难度,所需的工作量证明类型以及实际上的区块大小限制等诸多方面. 这些规则非常重要,因为它们确定哪些块被完整节点视为有效。如果所有完整节点都应用相同的共识规则,则可以确保它们都维护相同的区块链副本. 但是,如果不同的节点应用不同的共识规则,则它们冒接受其他节点拒绝的块的风险。这种差异可能导致不同的节点维护完全不兼容的区块链版本,从而有效地分裂了比特币网络. 比特币的共识规则可以通过两种方式进行更改。将附加规则添加到协议的更改(使先前有效的块无效)的更改称为软分叉。软叉需要大多数散列功能来支持此更改。根据新规则生产的块在旧规则下也将有效,因此未升级的节点仍将遵循最长的链条. 但是,未升级的矿工可能会根据新规则生成无效的区块,从而浪费了哈希功能。而且,未升级的完整节点将不再能够验证块是否遵守新规则,从而要求它们等待额外的确认以实现相同级别的安全性。. 由于这些原因和其他原因,Bitcoin Core开发团队表示,通常需要95%的哈希算力的超级多数才能同意软分叉. 从协议中删除规则(使之前无效的块生效)的共识规则更改称为硬分叉。硬分叉要求网络上的所有完整节点都采用。任何未实施更改的节点可能根本不会遵循最长的链,因为它可能会认为该链无效,而是停留在“旧”链上。如上所述,这可能会拆分比特币网络。这种分裂将持续多久,这实际上不是技术问题,而是有关政治,社会学,经济学,博弈论等的辩论. 在最坏的情况下,对没有达成共识的共识规则进行软分叉更改可能会(在最坏的情况下)导致少数矿工浪费哈希能力,并(略)降低整个节点的安全性. 在最坏的情况下,在没有共识的情况下硬性更改共识规则可能会分裂比特币网络. 对等层 比特币网络的对等层涵盖了完整节点如何共享数据以及它们共享什么数据。这包括用于发送和接收事务和块的协议规则,以及特殊数据包,例如隔离证人或可逆Bloom查找表. 最重要的是,对等层必须确保新的块以及通过验证整个块所需的数据包遍及整个网络。如果此中继策略失败,则可能导致网络分裂,其中不同节点持有不同版本的区块链-至少直到区块再次找到遍及整个网络的方式为止. 但是,与共识规则相反,如果不是每个节点都应用完全相同的中继策略,则不一定是一个大问题。由于大多数节点都将块转发给至少八个对等方,因此即使某些节点未正确转发,此放大器也应确保所有节点都接收到所有块. 在中继事务方面,节点还有更多的回旋余地。如今,比特币网络上的大多数节点都采用“先见之明”的策略:如果它们收到两个或多个冲突的交易,则拒绝后者。但是,越来越多的节点采用“按费用替换”策略的变体,这意味着它们选择了包含最高费用的交易,而不论哪个先发生。此外,某些节点完全拒绝某些类型的交易,或者根本不中继任何交易. 也就是说,矿工最终决定他们将哪些交易包含在区块中,以及原因。仅当事务中继策略发生巨大变化或具有足够的限制性时,才可能仅凭这些原因就无法确定哪些事务已被确认. 在最坏的情况下,在没有共识的情况下更改对等层可能会分裂网络。如果无法在整个网络中找到障碍,就存在这种风险。但是,重新连接网络后,拆分将自动解决. 如果更改仅涉及交易,则在最坏的情况下,它们可能阻止某些交易的确认。这也可能降低未确认交易的可靠性。但是它不能分割网络. 应用程序编程接口和远程过程调用 应用程序编程接口(API)和远程过程调用(RPC)层是对等协议之上的通信层。许多比特币软件应用程序(例如移动钱包和区块浏览器)通过连接到API或软件库,通过这些层与区块链进行通信. 如果这些层之一发生故障,则所有连接的软件应用程序将无法与比特币网络可靠地通信。移动钱包不会知道他们是否收到了比特币,而区块链浏览器也无法判断是否找到了新的区块。但是,所有其他比特币用户都不会注意到任何事情。网络本身仍然运行良好. 在最坏的情况下,未经一致同意而对API和RPC层进行更改可能会使这些层的用户与比特币网络完全断开连接。但是,这样的改变不能分裂网络本身. 应用领域 最后,应用程序层是指比特币软件应用程序如何创建和使用某些类型的数据,这些数据实际上并没有直接接触网络,但是对于跨应用程序同步很有用. 例如,这包括地址格式,私钥生成或钱包备份。如果一个钱包生成了另一个钱包认为无效的地址,则无法在它们之间进行交易。或者,如果一个钱包使用一种方法创建备份地址种子,而另一个钱包使用另一种方法,则用户将无法使用每个钱包恢复其私钥。钱包备份也是如此. 在最坏的情况下,未经一致同意对应用程序层进行更改可能会阻止某些用户进行相互交易,并带来其他不便。此类更改无法拆分网络。感谢您到Lombrozo寻求技术指导.
技术的
Bitcoin Core 0.13.0的新功能是什么?
比特币核心 由中本聪(Satoshi Nakamoto)于八年前首次发布的第十三代比特币参考客户端0.13.0现在已被标记为可发布。这是软件发布过程中的最后一步,并启动了Gitian构建过程. 大约100个贡献者在大约五个月的时间内开发了Bitcoin Core 0.13.0。尽管这段时间的大部分开发工作都集中在“隔离见证”上,只有在未来的次要版本中才能激活“隔离见证”,但与“比特币核心0.12.0”相比,比特币Core 0.13.0包含了十几项显着的改进. 这些是最重要的变化. 孩子为父母买单 随着时间的流逝,比特币网络上的交易数量一直在稳定增长。结果,更多的区块被填满,矿工通常收取更高的费用以将交易包括在区块中。不包含足够费用的交易通常需要更长的时间才能确认,甚至根本无法确认。事实证明,这有些问题,特别是在网络上进行了所谓的“压力测试”的时期,网络上的交易总数激增,并且交易大量延迟. 单个用户可以通过在交易中收取更高的费用来解决此问题,从而激励矿工对这些交易进行优先级排序。即使在发送交易后,也可以使用“加入收费替代”(RBF)来实现;但是,还没有很多钱包包含此选项。此外,RBF仅是事务发送方的选项。到目前为止,收款人还无法提高传入交易的费用以加快确认速度. 这个问题可以通过“孩子为父母付钱”(CPFP)的技巧有效地解决。 CPFP是矿工用来选择要在区块中包含哪些交易的策略。借助CPFP,矿工不必选择收入最高(且有效)的交易,而是选择利润最高的交易 放 交易。换句话说:如果后续交易符合以下条件,他们将选择低价交易 依靠 在低价交易上提供了足够高的费用来弥补。矿工将同时包括这两个矿工. 实际上,这意味着低手续费交易的接收者可以“附加”高手续费交易,将相同的硬币花费在自己身上。受到新的高价交易的激励,矿工将包括交易集。这样,接收方无需等待确认的时间,而矿工可以增加其收入. 紧凑块支持 比特币的点对点协议目前效率低下。节点互相发送两次最多的交易数据:一次是作为最初通过网络发送时的交易,一次是在确认交易时作为块的一部分. 这有一些缺点。首先,两次发送交易数据需要比实际更多的带宽,这增加了运行Bitcoin Core的成本。其次,也许更重要的是,同时将新块转发给多个对等方可能会导致显着的出站带宽峰值。每当发现新的块时,这可能会中断Internet使用,这可能会给用户带来烦恼。也许,更重要的是,它也可能减慢网络上的块传播。缓慢的区块传播反过来会有利于更大的矿池,从而激励更加集中的采矿格局. 紧凑块(BIP 152),由Bitcoin Core和 区块流 开发人员Matt Corallo旨在减少过多的数据传输。当找到一个新的块时,节点最初只传递非常紧凑的事务数据散列。由于节点最初通过网络发送时已经收到了完整的交易数据,因此他们可以使用这些哈希值来确定哪些交易包含在区块中并自行重建区块. 但是,此技巧并不总是能完美解决。如果某个节点在收到哈希之前尚未收到初始交易,则该节点当然无法选择该交易。此外,在极少数情况下 错误的 交易可能会散列为 正确的 散列,愚弄该节点以使其认为它接收了正确的事务,直到它尝试重建该块并发现它没有加起来. 在这两种失败的情况下,节点毕竟只是简单地请求特定的交易数据。即使其中仅包含一些完整的事务,紧凑块也将通过网络更快地传输,并且所需带宽大大减少. 分层确定性密钥生成 到目前为止,Bitcoin Core为每个新的Bitcoin地址生成了一个新的,完全随机的公钥和私钥对。尽管这出于安全性和隐私性原因很重要,但也可能给用户带来一些负担。为了保护所有私钥免于丢失,它们需要进行定期备份. 分层确定性(HD)密钥生成(BIP 32),这是比特币核心开发人员Gregory Maxwell和Dr. Pieter Wuille以及Armory开发人员Alan Reiner在2012年和2013年开发的一种加密技巧,解决了这个问题。通过HD密钥生成,Bitcoin Core为每个新地址创建一个全新的密钥对,但是所有这些密钥均来自一个12字的种子。只要用户记住这12个单词的种子,他们就可以重新生成所有私钥并访问其所有资金. 应当指出,HD密钥生成不是比特币世界中的新功能。许多钱包已经包含该选件已有好几年了。它只是在比特币的参考客户端中从未存在过-直到现在. 表现 & 安全 当然,Bitcoin Core 0.13.0引入了重要的性能和安全升级列表。这些改进的全部范围超出了本文的范围(请参阅Bitcoin Core 0.13.0的 发行说明 对于所有细节),但总之…… […]
Bitcoin Core 0.12.0发布:有什么新功能?
今天标志着的正式发布 比特币核心 0.12.0,是七年前中本聪首次发布的第十二代比特币参考客户端。最新版本的比特币核心(Bitcoin Core)在七个月内由近100位贡献者开发,包括20多项改进,特别是在性能,安全性和可用性方面. 这些是第六个最显着的变化. 内存池限制 内存池是由所有完整节点分别存储的未确认事务的集合。当新交易通过比特币网络传输时,内存池在区块之间填满,而当这些交易包含在区块中时,内存池将耗尽。但是,如果由于合法交易或垃圾邮件攻击而导致一系列后续块在很长一段时间内保持满状态,则内存池可能不会完全耗尽,积压的积压可能会增加。没有最大限制,积压甚至可能增长到节点内存不足并崩溃的地步。 (这是“坠毁着陆”前比特币XT首席开发人员Mike Hearn担心的情况。) 顾名思义,内存池限制对内存池的最大大小施加了硬性限制,以防止出现这种情况。如果达到最大值,则节点拒绝或清除其内存存储池,该存储池每字节收费最低. 全节点运营商可以配置其限制,但是Bitcoin Core 0.12.0中的默认最大大小设置为300 MB. 钱包用户的区块链修剪 运行完整节点的负担之一是需要存储完整的区块链。这加起来 55 GB 在撰写本文时,在当前1 MB的块大小限制下,每年还可以增长50 GB. 为了降低此要求,Bitcoin Core 0.12.0允许用户修剪区块链,这意味着一旦节点验证,他们就可以摆脱较旧的数据。保留的数据量是可配置的,尽管Bitcoin Core 0.12.0仍将需要至少2 GB的磁盘空间. 修剪区块链确实意味着这些节点将不再能够与对等节点共享所有区块链数据,例如第一次与网络同步的完整节点. (应该注意的是,修剪区块链最初是在Bitcoin Core 0.11.0中引入的,但尚不适用于将Bitcoin Core作为钱包运行的用户。) 上传流量限制 完整的节点通过比特币的对等网络不断地传输和中继交易,并互相阻止。这通常需要下载适量的数据,但是同时与多个对等方共享同一数据可能会增加可观的上载成本. 比特币核心0.12.0引入了可配置的数据上限,用于上传流量。如果达到此上限,节点将抢占一个星期以上的上传块,这通常是由首先与网络同步的节点请求的。此外,所有轻客户端将断开连接,不再再提供任何块数据. 选择加入费用代替 随着比特币网络上交易数量的增加,并非所有交易都可能陷入困境。因此,矿工可能会选择由用户支付的费用最高的交易。这意味着某些交易-来自支付过低费用的用户-根本无法确认。而且,由于许多完整的节点和矿工当前拒绝发生冲突的交易(与早期交易使用相同的输入发送),因此低价交易可能会“卡在”网络上. 为了解决这个问题,Bitcoin Core 0.12.0引入了按费用选择加入。如果使用收取费用的选择加入发送交易,则用户可以通过收取更高的费用将自己的交易替换为更新的交易。 (这也意味着,矿工可以选择收入更高的交易来增加收入。) 选择加入费用替代的“选择加入”部分意味着这些类型的交易将不是默认交易,并且将在比特币网络上标记为“替代费用交易”。依赖零确认交易的任何人都应该监视这些以费用代替的交易,因为在确认之前很容易将它们还原。 (当然,零确认交易是 永远不安全.) 选择收费替代收费实际上是否有用取决于比特币矿工;他们最终决定将哪些交易包括在区块中,以及根据什么政策. 默认情况下Tor 虽然通常声称比特币向用户提供匿名性,但事实并非完全如此。例如,可以通过对等网络将比特币用户取消匿名。如果确定交易源自哪个IP地址,则此信息可用于识别比特币用户. 为了保护用户的隐私,Bitcoin Core 0.12.0通过匿名工具Tor(洋葱路由器)自动连接到比特币网络(如果Tor安装在同一台计算机上)。 Tor会在广播数据之前对数据进行加密并将其路由到世界各地的多个节点。这使得很难(也许不可能)追踪比特币交易的起源. (应注意,仅使用Tor可能不足以保护比特币用户的身份。有关更多信息,请参阅《比特币杂志》的《比特币隐私入门指南》。) 更快的签名验证 签名是一种加密技巧,其中私钥与任何其他数据“组合”以计算唯一的数字字符串。可以使用相应的公用密钥来验证签名是使用私钥创建的。以比特币为例,签名被有效地用来证明比特币的所有权,并以此来验证交易. 但是,有几种方法可以进行这种加密技巧,从而可能导致不同的签名-均以自己的方式有效。而且,如果不同的比特币节点采用不同的验证方法,则某些节点可能认为某些交易有效,而其他节点则认为无效,这可能会使比特币网络分裂. […]
Bitcoin Core 0.21.0发布:新功能
今天标志着的正式发布 比特币核心0.21.0, 中本聪(Satoshi Nakamoto)于大约12年前推出的第21个主要版本的比特币原始软件客户端. 监督者 比特币核心 首席维护者Wladimir van der Laan,这个最新的主要版本是由一百多个贡献者在大约六个月的时间内开发的。超过600个合并的请求请求的结果,Bitcoin Core 0.21.0是近年来最大的Bitcoin Core版本之一,引入了各种新功能以及隐私和性能改进,同时朝着Schnorr / Taproot协议升级迈出了一大步. 以下是一些较明显的更改. 描述符钱包 当硬币被发送到比特币地址时,实际发生的情况是,它们被“锁定”在未花费的交易输出(UTXO)中,如果条件隐藏在后面的交易中,则仅在随后的交易中被“解锁”(花费)。满足了UTXO的要求。典型的条件是包含与特定公共密钥相对应的有效签名。但是条件还可以例如包括密码,时间锁的失效或签名的组合(multisig)。. 直到现在,Bitcoin Core仍被设计为围绕着其对应的私钥管理其钱包中的UTXO,即使私钥只是花费硬币的几种潜在条件之一。相反,Bitcoin Core 0.21.0引入了“描述符钱包”。描述符钱包使用户可以根据使用它们的条件类型对他们的UTXO进行分类。 (例如:一个仅需要有效签名的用于UTXO的钱包,以及一个用于多签名UTXO的钱包。) 描述符钱包对于在Bitcoin Core之上设计软件的应用程序开发人员特别有用。现在可以轻松地将特定的应用程序设计为仅使用特定类型的UTXO,例如multisig UTXO,而忽略任何非multisig UTXO。. 常规用户现在也可能注意到差异,因为实现了描述符钱包。也许最值得注意的是,当启动新的Bitcoin Core节点时,不会创建任何默认钱包。取而代之的是,仅当用户明确选择这样做时才创建新钱包,从而允许他们仅创建特定所需类型的钱包。描述符钱包还更好地支持“仅观看”钱包:即使节点没有使用它们所需的私钥,也可以跟踪某些UTXO的钱包. 升级到Bitcoin Core 0.21.0的Bitcoin Core用户现在仍然可以使用其旧版钱包。 (旧版钱包最终将被弃用,这意味着用户将需要将其旧版钱包迁移到描述符钱包,但这在以后的Bitcoin Core发行版之前绝对没有必要。) 通过对等网络服务紧凑型块过滤器 “轻量级客户”是比特币钱包和应用程序,它们不下载并验证整个比特币区块链,而是仅下载并验证与它们特别相关的部分区块和交易。这不是最佳的安全性,但是资源消耗少得多. 一种流行的方法是使用布隆过滤器。简而言之,布隆过滤器是一种加密技巧,可以从网络上或多或少的随机对等节点中请求相关数据。但是不幸的是,多年来,很明显,布隆过滤器相当不注重隐私:它们实质上将用户的所有地址透露给(或多或少随机的)对等节点,这当然可以由侵犯隐私的人来操作。窥探. 布隆过滤器解决方案的一种更新且保留更多隐私的替代方法称为“紧凑客户端块过滤”(BIP) 157/158)。紧凑的客户端块过滤从本质上改变了Bloom Filter的窍门。完整的节点不是为轻钱包创建发送给完整节点的过滤器,而是为每个块创建过滤器,并根据请求将其发送给轻客户端。然后,轻量客户端使用这些过滤器来确定与它们相关的交易是否可能已包含在一个区块中。如果是这样,轻型钱包将获取整个区块并从中提取任何相关的交易数据。 (会有一些误报;即使过滤器建议可能,这些区块中也没有相关的交易数据。) 现有的Bitcoin Core版本可能已经在本地创建了筛选器,并可以通过远程过程调用(RPC)将其用于运行在节点顶部的应用程序(例如钱包)。比特币核心0.21.0现在还包含一个选项,可以根据要求通过比特币的对等网络使这些过滤器可用。这使得现在可以操作使用布隆过滤器的独立照明客户端. 重播次数更少 除了布隆过滤器,侦听器还可以通过网络分析破坏比特币用户的隐私。如果他们能够确定特定交易源自哪个节点,则可以将该节点的比特币地址绑定到其IP地址,该IP地址又可以与真实世界的身份相关联. 到目前为止,当比特币核心节点向比特币网络广播交易时,他们将尝试每十五分钟重新广播一次交易,直到将交易包含在一个区块中为止。这意味着,如果这些Bitcoin Core节点连接到侦听对等方,则对于侦听将很明显,尝试每15分钟重新广播某个交易的Bitcoin Core节点也是该交易发起的节点. 比特币核心0.21.0大大降低了它尝试重新广播交易的频率:每12到36小时仅一次。自从首次广播以来,不必频繁地重新广播就可以更早地确认交易,因此该节点根本不需要重新广播的可能性. 在未来的Bitcoin Core版本中,此隐私泄漏将被完全修复。然后,比特币核心节点将仅根据其自身的内存池和费用计算来重新广播应已确认的交易。此外,它还将重新广播其他交易,而不仅仅是自己的交易. Tor V3支持 由于最近对保留隐私的Tor协议进行了升级,新的V3(版本3)Tor地址比之前的V2(版本2)地址长。 […]
在首次激活会议中,比特币开发人员讨论Taproot的路径
Taproot于2020年10月合并到Bitcoin Core中,仅保留了这一备受期待的协议升级的激活方法,该方法专注于为比特币增加智能合约灵活性和更多交易隐私. 上周,比特币开发社区通过Internet中继聊天(IRC)聚集在一起,讨论了Taproot激活的参数以及BIP 8信令机制的两个代码提取请求(PR). “为了更接近终点线,我们将在2月2日(星期二)世界标准时间19:00在IRC的## taproot激活频道上组织一次会议,”比特币开发组织者Michael Folkson 通过bitcoin-dev邮件列表宣布. “主要目标将是最终确定修订后的BIP 8激活方法……” 最终,该会议提供了更多关于自SegWit可能向前发展以来比特币最重要的协议变化的见解。. 编者注:为清晰起见,对下面IRC中复制的语句进行了稍微编辑,但在编写时以其他方式显示. 修改提案 比特币开发商 安东尼·汤斯 已经编译了 提案和可能的方案 用于激活Taproot. 在2月2日的会议上, 似乎获得最多支持的是“ BIP 8(false,1y)”和“ BIP 8(true,1y)”。但是,没有进行表决,只是讨论了每种替代激活方法。. 但是,这是什么意思? BIP 8是一种允许通过软叉(特别是矿工激活的软叉或MASF)升级比特币网络中共识的机制,可以选择在一段时间后添加用户激活的软叉(UASF)。在最新的共识更新(SegWit)中,除了BIP 9的MASF外,还使用了用户激活的软叉(UASF)。但是,Taproot对于矿工似乎没有争议,因此这次不太可能需要使用UASF. 回到提案中,参数为“ lockinontimeout”和“ timeout”,其中lockinontimeout基本上表示是否将强制激活,而“ timeout”表示将在其中激活窗口。另一个没有引起足够讨论的相关参数是“ startheight”. 如果lockinontimeout为false,并且更新没有足够的支持,则会取消更新并定义新的投标。 (比特币开发者 卢克(Luke Dashjr) 将lockintimeout = false描述为为矿工提供了他们原本不希望拥有的额外权力), “如果您以(timeout = T,lockinontimeout = false)开始,则在碰到T时有三种可能性:激活失败,您尝试重新激活(例如timeout = T + 1year,lockinontimeout = true);在此之前,您告诉所有人将其软件切换为(timeout = T,lockinontimeout = true),此时您已将MASF升级为UASF,” […]

Facebook
Twitter