比特币提供了世界上第一种智能合约编程语言。脚本称为这种语言,它使用户可以编码可以使用硬币的不同条件。但是,尽管这是一个革命性的概念,但使用起来并不容易,尤其是对于更复杂的支出条件而言。编写复杂的合同以及验证合同是否按预期进行都容易发生人为错误。但是,尤其是在资金紧张的情况下,正确解释条件至关重要. 在过去的一年中,区块链工程师Andrew Poelstra,Pieter Wuille和Sanket Kanjalkar着手改善这一点。通过将Script精简为基本要素,他们的“新”编程语言-“文字稿” —消除了复杂性,应该使参与其中的每个人都可以更轻松,更安全地进行比特币编程. “从理论上讲,Miniscript比脚本更具限制性,” Blockstream研究总监兼Miniscript联合设计师Andrew Poelstra告诉《比特币杂志》。 “但是它可以完成人们实际使用脚本的所有工作。” 脚本 让我们从头开始. 每个比特币交易都包括两个主要部分:输入和输出,这两个部分都由代码段组成。输入“解锁”硬币,输出再次“锁定”硬币,指定在何种条件下可以在后续交易输入中将其解锁。此类要求通常包括有效的密码签名,但还有更多的可能性。例如,在花费硬币之前可能已经经过了一定的时间,或者必须包含特定的秘密号码. 交易中的此代码是使用Script创建的,Script是专门为比特币设计的编程语言。脚本的灵感来自于Forth,这是一种1960年代发明的编程语言,最初是为操作射电望远镜而设计的。脚本进行了调整,但是使其更适合比特币. 例如,脚本没有使“循环”产生的操作码(指令):该语言不支持无限制次数地执行相同的计算。在比特币中,无需执行无数次相同的计算,因为比特币节点实际上并不计算交易,而是验证交易。 (有关为何会出现这种情况的更多技术说明,请参见 这个帖子 由Blockstream工程师Russell O’Connor设计。) 脚本也是“未键入的”。这意味着可以用不同的方式来解释和使用计算结果。例如,有效签名的结果可以为“ true”,但可以将“ true”依次解释并用作数字“ 1”,然后在数学方程式中使用:“ true”加“ true”将添加最多为“ 2”,例如,如果需要最少两个有效签名,则意味着提供了足够的签名. 在本文中,这将我们带到了Script最重要的属性:很难“关于的原因.实质上,这意味着可以用多种方式来解释计算结果。例如,即使签名无效,也可以编写脚本,以使事务由于某些其他原因仍然有效. Poelstra解释说:“比特币脚本中有一些操作码确实很荒唐。” “就像,将签名解释为真/假值,在其上分支;将该布尔值转换为数字,然后索引到堆栈中,然后根据该数字重新排列堆栈。而如何做到这一点的具体规则实在是太疯狂了。” 这可能会使Script难以使用。特别是如果花费(“解锁”)硬币的要求变得更加复杂,则交易的作者可能会无意中在代码中包含某些内容,以使硬币可以在与预期不同的条件下花费。相反,交易的接收者可能没有注意到这种怪癖,而将硬币丢给了确实注意到这一点的攻击者. 问题的具体示例 这是这些问题如何限制Script有用性的具体示例. Blockstream Green钱包具有标准的“共同签名”设置。钱包用户控制两个键之一,而Blockstream控制另一个键。资金可以两种方式使用。首先,每当用户想要花费硬币时,他们就签署交易并要求Blockstream也对其进行签署。 Blockstream通常会这样做,尽管这可能需要用户通过诸如电子邮件确认之类的辅助手段来确认他们确实要进行交易。但是,Blockstream的一端可能出了点问题–也许公司消失了或丢失了密钥,或者由于其他原因而无法签名。在那种情况下,用户仍然可以使用备用解决方案来花费其比特币:在时间锁定到期后,他们可以在经过预定时间后创建有效交易。大概一个月. 这可以正常工作,但也有一定的局限性。即使他们可能想在设置结束时增加更多的灵活性,用户也无法再利用比特币的智能合约潜力. Poelstra说:“目前,Green具有适用于所有客户的固定脚本,它基本上只是一个简单的多重签名。” “但实际上,我们不应该在乎脚本说的是什么。我们关心的是:在超时之前,没有我们的签名就不可能花掉硬币吗?如果用户想与我们一起使用一些疯狂的策略,只要满足我们关心的一个条件,我们就应该能够支持它。” 例如,用户可能希望在一年过去后允许亲人去世,以防他们去世。或者,也许用户实际上是一家公司,并且它想创建一个多重签名设置,其中三分之二的董事会成员可以一起花费硬币(与Blockstream结合使用). 当前,从技术上讲,这可以通过比特币脚本实现。但是,这将需要用户设计自定义设置,而Blockstream将需要参与此自定义设置. Poelstra解释说:“但是,如果用户给我们一个任意脚本,我们就无法判断我们关心的一个条件是否得到满足,因为所有脚本行为的总和确实很复杂。” “例如,如果脚本似乎带有签名,我们需要考虑如果用户提供非签名会发生什么。可以欺骗硬币花掉吗?” 文字稿 在过去的一年中,Miniscript由Poelstra,Blockstream核心技术工程师Pieter Wuille和Blockstream实习生Sanket Kanjalkar设计。 (但是,Miniscript并不是正式的Blockstream产品。) 简而言之,Miniscript是Script的“精简版”版本:“ Script工具包”中的“工具”选项,使人们更易于使用和验证。精心选择了这些工具以启用几乎可以使用Script进行的任何操作-只有一些附带的例外情况,实际上没有人真正使用过这些例外情况。因此,尽管一行Miniscript仍然是有效的Script行,但它通过防止代码的意外(可能是意外的)结果而从本质上避免了人为错误. 以上述问题为例,使用Miniscript,用户可以轻松地设计设置,使Blockstream可以轻松检查其一个条件是否得到满足。具体来说,Blockstream可以看到,只有在签署或一个月过去之后,这笔资金才能被使用-不管用户设置的结尾是否包括其他条件,无论是额外的时间锁定,多重签名还是其他。使用Miniscript,不会有任何意外的怪癖会超越Blockstream的终结. Miniscript非常直接且可预测,实际上,设置总是可以变成决策树:设置的可视化(“图形编码”),这很容易推理. 例如,下面的可视化显示了一种设置,其中三分之二的用户需要签名才能移动硬币。作为备用选项,可以使用紧急钥匙来移动硬币,但必须经过一段时间后才能移动. 缩图的可视化 [作者注:感谢Tejaswi Nadahalli的贡献 […]
核心协议,技术
运营编辑:想学习如何为比特币做贡献?尝试“好第一期”
继续学习人们可以了解比特币技术方面的各种方式的系列文章,在本文中,我们将重点介绍比特币核心GitHub存储库中的良好先发问题。. 比特币核心被广泛认为是比特币的参考实现。尽管直到那时才使用“ Bitcoin Core”这个名字 2013年, 客户本身可以追溯到2009年中本聪(Satoshi Nakomoto)的第一个发行版。后来创建了其他比特币实现,例如libbitcoin(C ++),bcoin(Javascript)和btcd(Go)。. 认识GitHub Bitcoin Core是一个开源项目。拥有互联网连接的任何人都可以查看和下载代码和文档。比特币核心(以及许多其他软件项目)使用开源且非专有的Git版本控制系统来跟踪分布式贡献者之间代码库中的更改. Git由Linux内核的创建者Linus Torvalds开发。相反,GitHub(最近被Microsoft收购)提供专有软件,该软件围绕Git协议提供便捷的工具和社交功能。 Bitcoin Core并不依赖GitHub的持续生存,尽管如果将来突然迁移或阻止该项目使用GitHub软件会带来不便和破坏性,. 在微软收购GitHub期间, 讨论 在比特币社区和其他开源项目中,它们是否应该摆脱对GitHub的任何未来依赖。随着越来越多的贡献者和潜在贡献者的出现,这种观点变得越来越流行。 被禁止 从使用GitHub软件开始。微软也可能会先采取行动, 禁止整个项目 如果他们被认为在政治上有争议。时间将证明,在未来几年中,Bitcoin Core和其他比特币实施是否会继续利用GitHub公认的精心设计的,用户友好的功能. 寻找“良好的第一期” 这些功能之一是GitHub Issues,用于发布和跟踪错误,增强功能和请求。任何GitHub用户都可以创建问题,尽管建议他们仅在研究问题并与IRC上的现有贡献者讨论后才打开问题。您无需请求权限即可开始处理问题。但是,如果您这样做,我们鼓励您对此问题发表评论,以鼓励与其他贡献者的合作。如果需要的话,这也是一种寻求帮助的好方法. 目的 “好第一期” 标签旨在突出显示哪些问题适合于可能对代码库没有深入了解的新贡献者。优秀的第一期并不是针对软件开发初学者的。至少,您需要基本的Git熟练度,理想情况下也需要C ++和/或Python熟练度,因为Bitcoin Core代码库是用这些语言编写的. 比特币核心的良好第一期凸显了解决该问题的“有用技能”。学习C ++和/或Python做出与代码相关的贡献是个好主意,但是如果您不精通这些语言,则可以选择从对文档进行实质性改进或找到需要解决的第一问题作为开始 外壳脚本, 自动制作 或者 CMake的 经验. “错别字”与“真实”问题 有些人是通过更正变量名,注释或文档中的基本错字开始的。杰里米·鲁宾(Jeremy Rubin)有 开玩笑的 他故意将错别字留在自己的贡献中,以便新的贡献者可以找到它们并进行更正。尽管这是开始成为新贡献者的一种方法,但最好是专注于良好的先发问题,而不是为错别字提交拉取请求(PR). 好的先期问题已被突出显示为现有贡献者所缺少的,对项目具有重大价值的事物。不会设置它们来识别拼写错误,并且现有的贡献者和维护者宁愿将时间集中在审查和合并上 高优先级审查 拉取请求。 (拉动请求是由贡献者提出的更改建议,只有在维护人员经过审查并在有足够的共识后才能合并,才可以进行合并。) 因此,最好将错别字作为更实质性的拉动请求的一部分进行更正。如前所述,值得记住的是,审查现有的PR通常比提交新的PR更有价值。约翰·纽伯里(John Newbery)建议,一个好的经验法则是,对于您个人提交的每个PR,都要审查5-15个PR。在撰写本文时,大约有300个未决请求和700个未决问题需要测试和审查. 大量的实践和学习机会 Fabian Jahr是最近对Bitcoin Core的新贡献者,他发现新贡献者中经常缺乏的主要技能是足够的Git熟练程度,例如 壁球犯. 要求参与者在命令行中输入Git命令。如果您是命令行和/或Git的初学者,最好完成不受Bitcoin […]
Bitcoin Core 0.14.0发布:有什么新功能?
今天标志着Bitcoin Core 0.14.0的正式发布,Bitcoin Core 0.14.0是八年前由中本聪(Satoshi Nakamoto)推出的第十四代比特币原始软件客户端。监督者 比特币核心 首席维护者Wladimir van der Laan,这个最新的主要版本是由近100位贡献者在六个月的时间内开发的. Bitcoin Core 0.14.0具有重要的改进清单。但是,与某些以前的发行版相比,这些发行版中的大多数都涉及软件的“内部”:性能提高是在后台进行的,但对于日常用户而言可能并不十分明显。. 也就是说,这是一些更显着的变化. “ Assumevalid”块 每当新节点在网络上引导时,它就会同步整个区块链。它下载并验证曾经开采过的所有区块,并验证所有这些区块中的所有交易。不幸的是,这可能要花费一些时间。即使是新的高端笔记本电脑,通常也需要一天以上的时间才能赶上。对于较旧或较低等级的机器,它需要更长的时间. “ Assumevalid”显着加快了此过程。本质上,Bitcoin Core 0.14.0节点假定直到某个区块的所有交易都是有效的。尽管同步节点仍在验证所有块的工作量证明并记录整个交易历史,但它不再为每个单独的交易检查签名和类似数据. 关于哪个块有效的假设是可配置的。默认情况下 块453354 适用于Bitcoin Core 0.14.0。但是,想要完全验证每笔交易的用户,即使是数年前的那些用户,仍然可以. 值得注意的是,与建立特定区块必须是区块链一部分的检查点系统相反,假定的有效区块不一定具有约束力。如果一个替代的区块链更长,那么一个比特币核心0.14.0节点将很容易地切换到没有假定有效区块的替代区块链. 改进的费用估算 由于比特币区块已被填满,尤其是在过去的一年中,并非所有通过网络发送的交易都可以放入下一个区块。因此,矿工通常会优先考虑费用最高的交易。包含更多费用的交易更有可能被包含在下一个区块中或此后不久的区块中。包含较低费用的交易出价高,需要更长的时间才能确认. 当然,并不是每个人都需要他们的交易尽快确认。由于价格快速波动而将比特币发送到交易所的用户可能会急于确认其交易。同时,在自己的钱包之间移动比特币的用户可能会更耐心. 从Bitcoin Core 0.10.0开始,用户可以相应地调整其费用。如果他们比较着急,可以手动收取较高的费用,如果不是,则可以手动收取较低的费用。 Bitcoin Core 0.11.0和0.12.0均完善了费用估算软件,Bitcoin 0.14.0现在包括另一组改进,特别是在边缘情况下,该算法更加健壮. 此外,默认的确认目标已从25个区块降低到6个区块;即使用户未触摸费用设置,大多数由Bitcoin Core进行的交易也应在一个小时内确认. 选择加入收费寄送 除了改进的费用估算外,Bitcoin Core 0.14.0用户还有另一种选择可以加快交易速度. 一年前首次发布时,Bitcoin Core 0.12.0发行了,比特币交易可以用“按费用替换”标记来标记。交易的发件人可以用包含更高费用的较新交易替换其初始交易。这使他们能够“跳过生产线”并更快地确认交易. 到目前为止,Bitcoin Core仅在节点行为中包括选择加入按费用收费:它接受并转发带有“按费用收费”标志的交易(而不是将其拒绝为双倍支出)。但是,比特币核心用户无法利用选择加入的收费替代自己的费用;到目前为止,只有钱包用户喜欢 电子 或者 绿色地址 可以. 现在,在Bitcoin Core […]
Bitcoin Core 0.20.0发布:新功能
今天标志着的正式发布 比特币核心0.20.0, 中本聪(Satoshi Nakamoto)于11年前发布的第20个主要版本的比特币原始软件客户端. 监督者 比特币核心 首席维护者Wladimir van der Laan,这个最新的主要版本是由100多个贡献者在大约六个月的时间内开发的。超过500个合并的拉取请求的结果,Bitcoin Core 0.20.0主要清理并强化了Bitcoin Core代码库,改进了硬件钱包集成,提高了网络可靠性,并进行了其他一些改进. 以下是一些比较明显的变化. GUI中的进一步硬件钱包集成 自0.18.0版以来,Bitcoin Core已与硬件钱包兼容。但是,用户仍无法通过Bitcoin Core的图形用户界面(GUI)使用硬件钱包进行交易;他们必须改为使用命令行界面(CLI)来执行此操作. Bitcoin Core 0.20.0正在朝着将硬件钱包集成到GUI中迈出一步。用户现在可以使用部分签名的比特币交易(PSBT)格式在Bitcoin Core GUI中创建不带签名的交易,并将其复制到剪贴板。复制后,他们可以将交易转移到其硬件钱包中进行签名-但是,这种转移尚未实现自动化,并且广播交易仍需要使用CLI. 未来的比特币核心版本将继续推进硬件钱包集成. Asmap提供更可靠的网络连接 比特币核心连接到比特币网络上的多个对等点(其他比特币节点)。 Bitcoin Core根据其IP地址映射其他节点,以与来自不同地区和Internet服务提供商(ISP)的对等方建立连接。如果节点从世界各地的对等节点接收到数据块和交易,则可以降低保留某些数据(例如特定交易)的风险. 比特币核心目前通过以下方式映射IP地址 网络运营商组. 但是,其中一些组实际上是同一组的一部分 自治系统 (AS):网络运营商群组的群集共享关键的互联网路由,因此可能共享相同的路由瓶颈,从而可能过滤数据. Bitcoin Core 0.20.0包含一个称为Asmap的新配置选项,该选项通过自治系统编号(ASN)映射IP地址。这样可以确保该节点与来自不同AS的对等方连接,从而减少了潜在的网络瓶颈,从而进一步限制了保留特定数据的风险。 (但是,将IP地址映射到网络运营商的组中仍然是当前的默认配置。) 删除BIP61拒绝消息 拒绝邮件(BIP61)是节点从对等方收到的交易被拒绝时返回的通知,以及原因。 (也许是因为该交易无效,也许是因为该交易未包含足够的费用,也许还有其他原因被拒绝。) 但是,比特币核心开发人员并不认为拒绝消息很有用。最重要的是,不应假定对等方可靠地返回拒绝消息。换句话说,如果节点未收到拒绝消息,则不一定表示交易已被接受。这限制了消息的实用性,同时还有更好的解决方案来检查交易是否有效并包含足够的费用。同时,这些消息使对等协议变得更加复杂,并且占用了带宽. 因此,默认情况下,BIP61拒绝消息已在Bitcoin Core 0.18.0中被禁用。比特币0.20.0现在已经完全删除了该功能. 删除BIP70付款协议(和OpenSSL) 付款协议(BIP 70)是几年前设计的,目的是改善比特币的付款体验。用户和商家可以交流有关付款的其他详细信息,例如人类可读的目的地地址(商家名称)和退款地址,以防购买出现问题. 尽管比特币核心集成了支付协议,但该标准从未得到广泛采用。相反,大多数钱包仍然使用更基本的URI方案(BIP21):可点击的链接或可扫描的QR码格式,例如,传达付款地址和金额. 也许比缺乏采用更为重要的是,BIP70支付协议遭受了 许多安全和隐私漏洞 这些年来。最值得注意的是,它依赖于OpenSSL软件库的加密功能,需要进行一系列的紧急通知紧急升级。由于这些原因,一些比特币钱包有, 拒绝了 完全实施BIP70. Bitcoin Core […]
Bitcoin Core 0.15.0发布:这是新功能
今天标志着的正式发布 比特币核心0.15.0, 中本聪(Satoshi Nakamoto)在大约九年前推出的第15代比特币原始软件客户端。监督者 比特币核心 首席维护者Wladimir van der Laan,这个最新的主要版本是在六个月的时间内由近100位贡献者开发的,主要贡献是通过 链码实验室, 区块流 和 麻省理工学院的数字货币计划. 与先前版本的软件实现相比,Bitcoin Core 0.15.0提供了显着的性能和可用性改进。它还引入了一些新功能,可以更好地处理网络的当前状态。. 这些是一些更显着的变化. Chainstate数据库重组 与该软件的先前版本相比,最大的变化之一是如何存储比特币区块链的状态。该“ chainstate”或“ UTXO-set”保存在专用数据库中,而之前已按交易进行了分类。如果一项交易将比特币发送到多个输出(“地址”),则这些不同的输出将存储为单个数据库条目,并引用该交易. 在Bitcoin Core 0.15.0中,这些输出分别存储在单个数据库条目中。如果单个交易将比特币发送到不同的输出,则每个输出将单独存储。尽管此方法确实占用了更多的磁盘空间,但如果稍后将这些输出之一用于以下操作,则它需要较少的计算资源。. 这种新数据结构最具体的好处是,新节点的初始同步时间减少了约40%。它还引入了更简单的代码,减少了内存使用量等等。此外,该漏洞还修复了一个理论上可能导致比特币核心节点崩溃的错误,该漏洞在上周末于巴黎举行的“破坏比特币”会议上有争议地披露。. 改进的费用估算 在过去的一两年中,由于比特币区块已被填满,因此并非所有交易都适合开采的第一个区块。取而代之的是,矿工通常会优先考虑包含最多费用的交易。如果用户希望快速确认其交易,则应支付足够高的费用。如果他不着急,那么较低的费用就足够了. 但是,比特币网络在发现块的速度或随时传输的交易数量方面具有固有的不可预测性。这使得很难包括正确的交易费. Bitcoin Core 0.15.0降低了费用不确定性:该软件的最新版本包含明显更好的费用估算算法。这主要是因为该软件在进行估算时会考虑更多数据,例如,较早的已确认交易中包含的费用以及未确认的交易中的费用-证明不足的费用. 此外,用户可以享受更大的灵活性。首先,Bitcoin Core 0.15.0首次允许用户包括可能使他们的交易长达一周才能确认的费用。而且,也是新近推出的,用户可以选择接受或多或少的风险,因为交易突然涌入可能导致交易延迟. 用户界面中的按费用替换 即使通过改进的费用估算,用户仍可能需要等待比其确认交易更长时间的时间,这也许是因为网络上突然出现交易繁忙,或者可能是因为用户改变了主意而宁愿这样做。由于其他原因或其他原因,使交易确认的速度比最初支付的速度快. 对于这些情况,某些钱包允许用户在其交易中添加“按费用替换”标签。有了这样的标签,网络上的节点和矿工就知道发件人可能希望用包含更高费用的较新交易来代替该交易。这有效地使用户能够顺畅地进行交易,以更快地确认交易. 比特币核心节点已经支持按费用替换超过一年了:如果新交易包含更多费用,它们已经可以替换“按费用替换”标记的交易。但是对于比特币核心钱包用户本身来说,利用它绝非易事. 到目前为止. 比特币核心0.15.0钱包在其用户界面中引入了“按费用替换”切换。这使用户可以包含适当的标签,从而使他们以后可以轻松地增加交易费用. 多钱包支持(仅客户端和RPC) Bitcoin Core 0.15.0允许用户首次创建多个钱包。这些钱包都有各自独立的比特币地址,私钥和资金。用户可以将不同的钱包用于不同的目的;例如,一个钱包可用于个人日常购买,另一个钱包可用于与业务相关的交易,而另一个钱包仅用于交易. 使用多个钱包可以带来很多好处。例如,它使记帐更加容易和方便。此外,由于不同的钱包无法通过区块链分析相互链接,因此用户可以更轻松地从增加的隐私中受益。也可以将不同的钱包用于特定的应用程序等等. 目前,普通钱包用户还没有多钱包支持。只有通过命令行或通过连接的应用程序进行操作的高级用户才能使用该功能. 其他改进 除了上述值得注意的更改外,Bitcoin Core 0.15.0还包括大多数其他主要的主要Bitcoin Core版本所做的其他性能改进。具体而言,这些更改加快了从网络下载块的速度,使节点启动更快,并且最新的节点将能够更快地验证新块,从而缩短了网络传播时间. 最后,值得一提的是,Bitcoin Core 0.15.0将与网络上的BTC1对等方断开连接。这意味着,如果SegWit2x硬分叉将网络拆分,则比特币网络的中断较少,因为两种类型的节点都可以更轻松地找到兼容的对等点。尽管此更改已引起了媒体的关注,但此更改不应真正引起注意. 感谢Chaincode […]
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.
Bitcoin Core 0.19.0发布:这是新功能
今天(2019年11月24日)标志着 比特币核心0.19.0, 中本聪(Satoshi Nakamoto)在11年前发布的第19个主要版本的比特币原始软件客户端,至今仍是网络上占主导地位的比特币实施。 (尽管由于在Bitcoin Core 0.19.0发布过程的后期发现了一个问题,所以发布供下载的版本实际上是0.19.0.1.。) 比特币核心 首席维护者Wladimir van der Laan,这个最新的主要版本是由一百多位贡献者在大约六个月的时间内开发的. 550个合并拉取请求的结果,Bitcoin Core 0.19.0包括一系列性能改进,现代化和错误修复以及其他更改. 以下是其中一些更改的概述. 默认情况下,GUI中的Bech32地址 “ bech32”地址格式(BIP 173)已于2018年初发布的Bitcoin Core 0.16.0中引入,但现在首次在Bitcoin Core钱包图形用户界面(GUI)中设置为默认选项. Bech32地址是以“ bc1”开头的地址(与以1或3开头的地址相对)。这些地址也稍长一些,但是使用的字符比当前地址格式少,因为不再有区别小写和大写字母之间。 (例如,这样可以减少人为错误的可能性,例如当一个地址被大声读出时。)Bech32地址还旨在限制错别字引起的错误。. 此外,bech32在SegWit的上下文中提供了很多好处。提供SegWit的某些钱包(包括到目前为止默认情况下的默认比特币核心钱包)通过将其“包装”到P2SH输出(地址以“ 3”开头)来实现。要从这样的地址花费比特币,用户必须显示一段代码-“兑换脚本”-以表明比特币确实被锁定在SegWit输出中。使用新的bech32地址,可以跳过此步骤,这意味着来自SegWit输出的支出将需要更少的数据通过比特币网络传输并包含在区块链中。这使得bech32输出的事务比P2SH输出的SegWit事务便宜。. 由于并非所有比特币钱包都支持发送到bech32地址,因此,Bitcoin Core 0.19.0用户仍可以通过GUI中的切换来选择生成PS2H接收地址。. 默认情况下,两个额外的仅阻止出站连接 比特币节点连接到其他几个比特币节点,一起形成对等网络。通过该网络,节点共享块,交易和一些其他交易数据. 但是对等网络可能会遭受诸如“分区攻击”之类的攻击。如果攻击者控制了足够多的比特币节点,它可能会通过拦截所有流量来“切断”比特币网络的某些部分(甚至是特定节点)。然后,例如,可以将网络的分区部分欺骗为有效地接受少数链而不是最长的链,这反过来又可能为双重攻击打开大门. 如果网络分区部分中的节点甚至只有一个与主网络上诚实节点的连接,则可以抵抗分区攻击。然后,它将接收并中继所有交易和区块,并拒绝少数链,转而支持多数链. 一种实现这一目标并使分区攻击更难以进行的方法是,使节点之间建立更多的连接。但是,更多的连接确实需要更多的内存和带宽。需要权衡. Bitcoin Core 0.19.0将传出连接的默认值增加了两个,但是-巧妙地-这两个额外的连接仅用于中继块-它们不中继交易或其他交易数据。这最小程度地增加了带宽需求,同时仍然使分区攻击更难以成功实施. 不推荐使用Bloom过滤器 Bitcoin Core是一个完整的节点实现,这意味着它下载并验证了所有Bitcoin块。尽管这是最佳的安全性,但它并不十分适合移动电话等资源匮乏的计算设备。因此,移动钱包(以及某些台式机钱包)通常是“轻型客户端”:这些仅下载交易和与它们有关的(部分)区块. 实现此目的的一种方法是使用Bloom Blooms过滤器,该过滤器如今已被多个钱包使用。简而言之,布隆过滤器是轻客户端用来从网络上或多或少的随机完整节点请求相关数据的一种加密技巧。但是,不幸的是,这些年来,Bloom Filters非常不适合隐私,这一点变得很明显:它们实质上将所有地址公开给整个节点。最重要的是,支持Bloom Filter请求的确会消耗整个节点的CPU和磁盘空间,而整个节点本身并没有直接的好处. 特别是由于后一个原因,默认情况下,Bitcoin Core 0.19.0不再支持Bloom Bloom请求。用户仍然可以切换默认设置以支持Bloom Blooms(Bloom筛选器). 值得注意的是,即使没有人更改默认设置,整个比特币网络几乎肯定会在未来几年内继续支持Bloom Blooms过滤器,这仅仅是因为较旧的Bitcoin Core节点通常在新版本推出后已经使用了很多年。被释放. 对紧凑型客户端块过滤的更多支持 […]
Bitcoin Core 0.17.0发布:这是新功能
今天标志着的正式发布 比特币核心0.17.0, 中本聪(Satoshi Nakamoto)在大约10年前推出的第17代比特币原始软件客户端,至今仍是网络上占主导地位的比特币实施。监督者 比特币核心 首席维护者Wladimir van der Laan,这个最新的主要版本是由135个贡献者在大约七个月的时间内开发的. 超过700个合并的合并请求的结果,Bitcoin Core 0.17.0包括一系列性能改进和错误修复以及其他更改. 以下是其中一些更改的概述. 改进硬币选择 钱包中的硬币有效地存储为单独的块(“交易输出”)。通常,每个收到的付款都有一个大块;因此,大多数块代表不同的数量。从钱包付款时,会将不同的部分加在一起,以构成足以支付的大笔金额,再加上费用。不同的块通常未加总到所需的确切数量,但是,在这种情况下,将“更改地址”添加到交易中,将所有剩余资金退回同一钱包. 到目前为止,Bitcoin Core钱包将不同的区块加在一起。只有这样,它才能计算并添加支付交易所需的费用。但是在某些情况下,向交易中添加费用意味着添加的块不再构成足够大的金额,在这种情况下,必须包括一个额外的块. 比特币核心0.17.0引入了由 比特币 工程师Mark Erhardt。这提供了两个具体的改进。首先,在避免将每个大块的费用选择为交易的一部分之前计算费用,以避免以后必须添加新的大块。其次,该算法尝试匹配不同的块,以使它们加起来达到所需的确切数量,并尽可能避免使用“更改地址”(发送剩余的“更改”的地方)。 (具有大块的大钱包,例如由交易所或其他高流量实体操作的大钱包,比其他钱包更不需要更改地址。) 此外,Bitcoin Core 0.17.0中的硬币选择算法还包括一项可选的隐私改进措施. 虽然违反最佳做法,但有可能收到同一位比特币地址的多笔付款。 (例如,捐赠地址经常发生这种情况。)重复使用地址本身就不利于隐私,因为很明显该地址上的所有硬币和从该地址进行的所有付款均来自同一用户。但是,如果在不同的交易中使用绑定到同一地址的不同数据块,并将它们链接到最初与该地址不相关的数据块,则情况更糟。. 为了解决最后一个问题,Bitcoin Core 0.17.0为用户提供了一个选项,可以让他们优先考虑在交易中添加与同一地址绑定的块,并在可能的情况下将其他任何块都排除在交易之外. 轻松创建和使用新钱包 从Bitcoin Core 0.15.0开始,可以创建多个彼此独立运行的钱包。这些钱包都有各自独立的比特币地址,私钥和资金。用户可以将不同的钱包用于不同的目的;例如,一个钱包可以用于个人日常购买,另一个可以用于与业务相关的交易,而另一个则可以用于交易。由于不同的钱包无法通过区块链分析相互链接,这可以使记帐更加容易和便捷,并且用户可以更轻松地从增加的隐私中受益。. 但是,到目前为止,只能在启动节点时创建新的钱包,并且它不适用于Bitcoin Core钱包(GUI)用户。这两个限制现在都已解决。 Bitcoin Core 0.17.0允许用户随时创建新的钱包,并且在GUI中提供了此功能. 另外一个好处是,Bitcoin Core 0.17.0引入了一项称为“ Scantxoutset”的功能。这使用户可以通过检查未使用的交易输出(UTXO)设置而不是重新扫描整个交易历史记录,来快速验证其新钱包是否已包含硬币(例如,因为私钥是从另一个钱包导入的)。. 非高清到高清钱包升级 早于0.13.0的比特币核心版本仍要求用户备份其所有私钥,而自那时起,所有比特币核心版本均提供了分层确定性(HD)钱包。 HD钱包用户只需要存储一个种子短语(单词列表)作为备份. 但是,比特币核心用户谁 已升级 他们的系统使用的比特币核心0.13.0及更高版本无法创建新的高清钱包。非HD钱包和HD钱包之间的不兼容性意味着这些用户仍然无法备份其所有私钥. 现在,Bitcoin Core 0.17.0允许这些用户也升级到HD格式。此外,已经拥有高清钱包的比特币核心钱包用户现在可以选择生成或导入新的高清种子。. 仅观看-钱包 比特币钱包通常存储私钥,允许用户花费其硬币。但是,比特币核心现在也支持“仅监视”地址已有一段时间了。这些地址的私钥未存储在钱包中,但附加到这些地址的硬币仍在钱包中可见。这使用户可以轻松地接受付款并跟踪其资金,例如,离线存储其私钥. Bitcoin […]