比特币核心 由中本聪(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的 发行说明 对于所有细节),但总之…… […]
为什么对比特币进行一些更改需要共识:比特币的4层
长期存在的区块大小争议以及最近推出的几种新的比特币实现方式突显出,并非所有比特币节点都应用完全相同的规则-也许更重要的是,在实施这些规则时,并非所有开发团队都应用类似的策略. 背后的开发团队 比特币核心, 比特币历史悠久的“参考客户”,在实施规则更改(例如提高区块大小限制)之前,需要社区达成广泛共识,而其他更改则未遵循相同的标准. 同时,一些比特币分叉,例如 比特币LJR, 通常被开发社区所接受,而其他人,例如 比特币经典, 引起很多争议。一些人认为这是不一致的. 但是这种差异可以解释。在某些分支中实施的某些规则更改对比特币网络的影响与其他方面有很大不同。或更具体地说:某些规则更改会影响比特币网络的不同层。其中一些规则更改可以拆分比特币网络,而另一些则不能. 澄清这些差异, 比特币核心 开发商和 西弗雷克斯 首席执行官埃里克·隆布罗佐(Eric Lombrozo)最近提议在所有比特币改进提案中标记相关层。这些是他指定的比特币网络上的四个主要层 BIP 123, 以及每个共识的重要性. 共识规则 共识规则是比特币最重要的规则。它们确定了区块奖励中包含的比特币数量,挖矿难度,所需的工作量证明类型以及实际上的区块大小限制等诸多方面. 这些规则非常重要,因为它们确定哪些块被完整节点视为有效。如果所有完整节点都应用相同的共识规则,则可以确保它们都维护相同的区块链副本. 但是,如果不同的节点应用不同的共识规则,则它们冒接受其他节点拒绝的块的风险。这种差异可能导致不同的节点维护完全不兼容的区块链版本,从而有效地分裂了比特币网络. 比特币的共识规则可以通过两种方式进行更改。将附加规则添加到协议的更改(使先前有效的块无效)的更改称为软分叉。软叉需要大多数散列功能来支持此更改。根据新规则生产的块在旧规则下也将有效,因此未升级的节点仍将遵循最长的链条. 但是,未升级的矿工可能会根据新规则生成无效的区块,从而浪费了哈希功能。而且,未升级的完整节点将不再能够验证块是否遵守新规则,从而要求它们等待额外的确认以实现相同级别的安全性。. 由于这些原因和其他原因,Bitcoin Core开发团队表示,通常需要95%的哈希算力的超级多数才能同意软分叉. 从协议中删除规则(使之前无效的块生效)的共识规则更改称为硬分叉。硬分叉要求网络上的所有完整节点都采用。任何未实施更改的节点可能根本不会遵循最长的链,因为它可能会认为该链无效,而是停留在“旧”链上。如上所述,这可能会拆分比特币网络。这种分裂将持续多久,这实际上不是技术问题,而是有关政治,社会学,经济学,博弈论等的辩论. 在最坏的情况下,对没有达成共识的共识规则进行软分叉更改可能会(在最坏的情况下)导致少数矿工浪费哈希能力,并(略)降低整个节点的安全性. 在最坏的情况下,在没有共识的情况下硬性更改共识规则可能会分裂比特币网络. 对等层 比特币网络的对等层涵盖了完整节点如何共享数据以及它们共享什么数据。这包括用于发送和接收事务和块的协议规则,以及特殊数据包,例如隔离证人或可逆Bloom查找表. 最重要的是,对等层必须确保新的块以及通过验证整个块所需的数据包遍及整个网络。如果此中继策略失败,则可能导致网络分裂,其中不同节点持有不同版本的区块链-至少直到区块再次找到遍及整个网络的方式为止. 但是,与共识规则相反,如果不是每个节点都应用完全相同的中继策略,则不一定是一个大问题。由于大多数节点都将块转发给至少八个对等方,因此即使某些节点未正确转发,此放大器也应确保所有节点都接收到所有块. 在中继事务方面,节点还有更多的回旋余地。如今,比特币网络上的大多数节点都采用“先见之明”的策略:如果它们收到两个或多个冲突的交易,则拒绝后者。但是,越来越多的节点采用“按费用替换”策略的变体,这意味着它们选择了包含最高费用的交易,而不论哪个先发生。此外,某些节点完全拒绝某些类型的交易,或者根本不中继任何交易. 也就是说,矿工最终决定他们将哪些交易包含在区块中,以及原因。仅当事务中继策略发生巨大变化或具有足够的限制性时,才可能仅凭这些原因就无法确定哪些事务已被确认. 在最坏的情况下,在没有共识的情况下更改对等层可能会分裂网络。如果无法在整个网络中找到障碍,就存在这种风险。但是,重新连接网络后,拆分将自动解决. 如果更改仅涉及交易,则在最坏的情况下,它们可能阻止某些交易的确认。这也可能降低未确认交易的可靠性。但是它不能分割网络. 应用程序编程接口和远程过程调用 应用程序编程接口(API)和远程过程调用(RPC)层是对等协议之上的通信层。许多比特币软件应用程序(例如移动钱包和区块浏览器)通过连接到API或软件库,通过这些层与区块链进行通信. 如果这些层之一发生故障,则所有连接的软件应用程序将无法与比特币网络可靠地通信。移动钱包不会知道他们是否收到了比特币,而区块链浏览器也无法判断是否找到了新的区块。但是,所有其他比特币用户都不会注意到任何事情。网络本身仍然运行良好. 在最坏的情况下,未经一致同意而对API和RPC层进行更改可能会使这些层的用户与比特币网络完全断开连接。但是,这样的改变不能分裂网络本身. 应用领域 最后,应用程序层是指比特币软件应用程序如何创建和使用某些类型的数据,这些数据实际上并没有直接接触网络,但是对于跨应用程序同步很有用. 例如,这包括地址格式,私钥生成或钱包备份。如果一个钱包生成了另一个钱包认为无效的地址,则无法在它们之间进行交易。或者,如果一个钱包使用一种方法创建备份地址种子,而另一个钱包使用另一种方法,则用户将无法使用每个钱包恢复其私钥。钱包备份也是如此. 在最坏的情况下,未经一致同意对应用程序层进行更改可能会阻止某些用户进行相互交易,并带来其他不便。此类更改无法拆分网络。感谢您到Lombrozo寻求技术指导.
Bitcoin Core 0.16.0发布:这是新功能
今天是9年前由中本聪(Satoshi Nakamoto)推出的第16代比特币原始软件客户端Bitcoin Core 0.16.0的正式发布。最新的主要版本由比特币核心首席维护者弗拉基米尔·范德兰(Wladimir van der Laan)监督,由大约100位贡献者在五个月的时间内开发. 与新版本一样,Bitcoin Core 0.16.0包括性能改进,错误修复和其他优化。该版本特别包含了钱包界面中的一些新增功能。最值得注意的是,Bitcoin Core 0.16.0使钱包见证人可以完全使用隔离见证(SegWit),这是大多数努力的重点,这也是为什么此版本有时被称为“隔离见证”的原因。 以下是一些最显着的变化的概述. 电子钱包界面中的隔离证人 隔离见证当然是2017年主要的比特币协议升级,即使不是有史以来最大的协议升级。它为升级的节点引入了全新的块数据结构,而未升级的节点可以继续正常运行。除其他好处外,SegWit还用块“权重”限制代替了比特币的块大小限制,从而允许具有最多4兆交易数据的块,因此,网络上的交易容量增加了. 隔离见证本身是在2016年10月发布的Bitcoin Core 0.13.1中首次引入的。升级于2017年8月启动。但是,Bitcoin Core 0.16.0是第一个允许钱包用户生成SegWit地址以接收付款的Bitcoin Core版本。这意味着当在这些地址上收到的资金稍后用于付款时,Bitcoin Core钱包用户将利用SegWit提供的增加的区块空间。在其他条件相同的情况下,与非隔离见证交易相比,这些用户应能够支付较低的费用. 比特币核心并不是第一个为用户启用隔离见证的钱包。在过去的六个月中,其他几个钱包已经引入了此功能。自从Bitcoin Core开发团队编写并提出了升级建议以来,值得注意的是,该功能尚未提供给Bitcoin Core钱包用户使用。. Bech32:比特币的新地址格式 在比特币核心钱包中引入隔离见证(SegWit)的同时,一种新的地址格式也称为“ bech32”。这种地址格式是由前Blockstream首席技术官Gregory Maxwell和Blockstream开发人员Pieter Wuille博士开发的,因为它以“ bc1”开头,而不是比特币地址通常开头的1或3,因此可以识别。更重要的是,bech32地址使用的字符少于当前地址格式,因为小写和大写字母之间不再有区别。这样可以减少人为错误的可能性(例如,大声读出地址时)。 Bech32地址还旨在限制其他类型的错误,例如由错别字引起的错误. 此外,bech32在SegWit钱包支持的背景下提供了很多好处。到目前为止,大多数提供SegWit的钱包都是通过将其“包装”到P2SH输出(地址以3开头)来实现的。要从这样的地址花费硬币,用户必须显示一段代码-“兑换脚本”,以表明硬币确实被锁定在SegWit输出中。使用新的bech32地址,可以跳过此步骤,这意味着从SegWit地址进行的支出将需要较少的数据通过比特币网络传输并包含在区块链中. 由于并非所有比特币钱包都支持bech32地址,因此Bitcoin Core 0.16.0用户将能够选择是生成bech32收款地址还是P2SH地址,而P2SH仍是当前的默认设置。比特币核心钱包当然支持将交易发送到任何类型的比特币地址. 费用替代作为默认发送选项 由于过去几年来比特币区块已被填满,因此并非网络上的所有交易都适合开采的第一个可用区块。取而代之的是,矿工通常会优先考虑费用最高的交易。如果用户希望快速确认其交易,则应支付足够高的费用。对于不太紧急的交易,较低的费用就足够了。许多钱包都包含费用估算算法,以计算在不同时间段内确认交易的费用水平. 但是,比特币网络在发现块的速度以及随时传输的交易数量方面具有固有的不可预测性。这可能会导致难以收取正确的交易费,这意味着用户可能需要等待比预期更长的时间才能进行确认. 从Bitcoin Core 0.15.0开始,钱包用户已经能够在交易中添加“按费用替换”标签。有了这样的标签,网络上的节点和矿工就知道发件人可能想用包含更高费用的较新的交易来代替该交易。这有效地使Bitcoin Core钱包用户可以轻松地在线增加交易量,从而更快地确认. Bitcoin Core 0.16.0首次使“按费用替换”成为默认发送选项。用户仍然可以通过取消选中一个框来选择不在其交易中添加“按费用收费”标签,但如果不取消勾选,则可以替换他们的交易。这样可以防止用户不经意间就放弃自己的选择,而仅在为时已晚可以轻易增加交易量时才注意到. 有关Bitcoin Core 0.16.0的新功能的更多详细信息,请参见 发行说明. 您可以从下载比特币核心0.16.0 bitcoincore.org.
BIP 8,BIP 9或现代软叉激活:下一步如何升级比特币
Taproot是一项提议的协议升级,它将改善比特币的隐私和灵活性,目前尚处于开发的后期阶段。比特币核心贡献者同意升级将使比特币受益,到目前为止,它似乎也普遍受到更广泛的比特币生态系统的欢迎。因此,Taproot可能会进入比特币核心版本,其他比特币实现也可能随之而来. 但是仍然存在一个问题:比特币网络本身应该如何升级? Taproot是共识协议的更改,这意味着比特币节点必须以某种方式从旧规则切换到新规则,而又不将网络分成执行不同规则的派系。由于各种原因,在过去有时证明这是一个挑战. 现在正在考虑采用改进的策略来激活协议升级. 以前的软叉和BIP 9 好消息是Taproot将是一个软叉。这种类型的升级会增加或收紧规则,而不是像硬叉那样删除或放松规则。添加或加强规则的好处是,升级节点认为有效的任何内容,未升级节点认为有效的任何东西。 (如果旧节点同时接受事务类型A和B,但新规则仅允许事务类型A,则旧节点将在执行新规则的网络上保持兼容。) 比特币最早的软叉是在卖旗日激活的。开发人员(特别是中本聪)在新的比特币软件客户端版本的代码中嵌入了将来的日期,并指定了升级节点将执行新规则的时间点。鼓励矿工和用户在该日期之前进行升级,以避免网络分裂。 (顺便说一句,在那些日子里,矿工和用户比今天更像是同一个人。) 由于未升级的节点仍与新规则兼容,因此,软分叉的一个方便好处是,如果大多数散列功能强制执行升级,则整个比特币网络都将在其区块链版本上达成共识。这也意味着在实施新协议规则时,迫切需要立即升级所有节点,从而为用户提供了一定的灵活性。 (尽管仍然鼓励用户进行升级;他们最终是通过拒绝交易和破坏交易规则的块来强制执行新规则的用户。) 自2012年左右以来,软叉已越来越多地利用散列功能作为协调机制以协调向新规则的转换。通过在他们的块中嵌入一些数据,矿工可以向其他矿工和网络的其余部分发出信号,告知他们他们已升级软件,从而可以执行新规则。一旦有足够的散列功率信号支持,就会触发所有升级的节点以强制执行新规则. 经过几次升级,该策略演变为比特币改进提案9(BIP 9)。例如,BIP 9是用于激活比特币上次软叉升级的机制,即隔离见证(SegWit)。矿工需要一年的时间来激活升级,要求在任何难度间隔内的95%的区块都包含准备就绪信号位。如果一年后仍未发生,则激活期将到期,升级将失败。 (然后当然可以再次尝试。) 但是,对于SegWit而言,BIP 9的运行并不顺利。与以前的某些升级一样,一些矿工可能由于冷漠而无法进行升级:通常没有很大的动力促使矿工快速升级。但是一个更大的问题是,一些矿工已经将信号处理过程理解为对升级的一种投票,他们会(或不会)发出信号表示对升级的支持,而不是表示已准备就绪。更糟糕的是,一些矿工最终使用此“投票”来阻止升级,以试图在比特币开发过程中获得政治影响力,和/或他们“投票”反对升级,以暗中受益于比特币的怪癖。升级将修复的协议. 经过长时间的激烈争吵,SegWit最终确实激活了,但是只有在替代的比特币客户包括了新的激活方案之后。一些用户运行的BIP 148客户端中包含的BIP 148被编程为仅接受标志日开始支持协议升级的块。同时,BTC 91(包含在btc1客户端中)由矿工在BIP 148卖旗日之前运行,有效地将哈希功率要求从95%降低到75%。面对潜在的分裂网络和可能的收入损失,受阻矿工承认。但是对于大多数比特币核心开发人员来说,BIP 9证明自己是次优的解决方案,他们开始考虑替代方案. BIP 8 BIP 8 是BIP 9的早期替代方案,由BIP 148作者Shaolinfry and Bitcoin Knots和Bitcoin Core贡献者Luke-jr提出。它最初类似于BIP 9,但是有一个关键的区别:不是在一年没有足够的散列功率支持后升级失败,而是这样做了,并在那个时间点激活了软分叉。类似于卖旗日,所有升级后的节点将从那时起开始执行新规则。仍未能升级的矿工可能会冒险挖掘已升级的矿工和用户拒绝的挖矿区块. BIP 8背后的主要思想是-当然,假设用户进行了升级-矿工无法阻止软分叉,因此无法利用这一杠杆来谋取利益。他们可以加快激活速度并帮助协调平稳的协议升级,但是即使他们自己不激活升级,升级也最终会发生. BIP 8的最新草案包括一些显着变化。例如,当信令周期即将到期时,BIP 8允许为节点配置两种不同的策略:如前两段所述,强制激活,或者像BIP 9一样不强制激活。升级本身时,节点(如果已配置)实际上会执行升级信号。然后,拒绝表示不支持升级的块,因此至少在升级后的节点上仍可以保证升级。这两个更改的组合具有一个有趣的特性,即如果所有比特币散列功能中的大多数被迫发出信号表示支持升级,那么即使未配置为强制执行信号发送的BIP 8节点也将随升级一起进行. 反对BIP 8(特别是其强制信号传递(或自动激活))的论点是,它可能具有风险,尤其是在较短的时间范围内。如果多数哈希算力和至少一些用户没有升级,则此方案可能会在升级和未升级节点之间划分网络。假设大多数用户支持升级,则最终可能会偏向于网络的升级部分。但是,未升级的用户在此期间可能会遭受资金损失的风险,而未升级的矿工则会浪费哈希功能,从而损害比特币的安全性. 通过提供足够的升级时间,可以最好地解决这种风险。不幸的是,并不是每个人都同意多少时间就足够了。一些人认为强制信号传输可能在一年内开始,其他人则认为这需要花费几年时间. BIP 8的另一个复杂功能是为强制信令设置默认值。如果默认情况下关闭了强制信令,则用户可能会发现自己不协调,从而增加了网络分裂的风险。另一方面,如果在比特币核心版本中将强制信令选择为默认,则历史上广泛采用的比特币核心实际上保证了升级将会发生。一些人认为,这会使比特币核心开发人员对比特币的协议规则产生太大的影响。 BIP 8的合著者Luke-jr希望BIP 8仅通过特殊的客户端进行部署,类似于BIP 148客户端. 其他人则认为,Bitcoin Core开发人员始终会根据自己的最佳判断发布软件,同时牢记用户需求并避免有争议的升级。设置BIP […]
Guix naredi razvoj Bitcoin Core bolj nezaupljiv
Že leta 2016 je razvoj Bitcoinov postal model za celotno odprtokodno skupnost z integracijo stavbe Gitian – „računalnik v računalniku“, ki razvijalcem omogoča preglednejše binarne datoteke. Toda z nedavno združitev Guixa, ki podpira deterministične in zagonske zgradbe Bitcoin Core, je delo na protokolu postalo še bolj nezaupljivo. Čeprav je vpleten postopek precej izpopolnjen in večinoma […]

Facebook
Twitter



