比特币是一种去中心化的数字货币,基于信任体系和椭圆曲线的各种性质等密码学问题。不深究比特币的数学方面,我们来看看比特币的信任体系是如何构建的。要正确理解这篇论文的关键思想,我们不需要深入了解密码学。但是,您应该对私钥和公钥有一个基本的了解。
每次您想要授权支付时,都会要求您执行某种形式的验证。验证的目的是一旦你以自己的名义批准了一笔交易,这笔交易就不可逆转。当然,在某些情况下,你可能希望添加一个条款,如果不满足某些条件,支付必须进行另一个方向的管理。但一旦交易获得授权并签署,它将成为定局。唯一的问题是:你能完全肯定地确认它确实是由它所代表的人授权的吗?使用签名来识别用户是一个老问题。曾经有一段时间,人们用昂贵的徽章来密封信件,以证明它们确实来自权威。
封一封信,套用一封信的做法已经被PGP key取代。PGP密钥很有趣,因为它们在某些方面与比特币密钥非常相似。我们先花一分钟看一下PGP,然后看看比特币是如何建立在这个基础上的。
PGP密钥有两种使用方法:1。用于加密和解密电子邮件。如果有人截获了这封邮件,他们就无法破译其内容。2.在信息上签名。如果有人拦截,可以验证消息的真实性。
PGP有效地替代了密封装置。过程如下。首先,必须生成一个公钥-私钥对。现在你写电子邮件。尚力财经小编2022 在那之后,你拿着你的私人钥匙和电子邮件,通过PGP签名程序运行它,然后一个签名就会出现。这个签名只能由持有私钥的人生成。我们怎么能确定?您获得消息和签名,并通过提供发送者公钥的PGP验证器运行它。这个程序会告诉你这封邮件是否真的是他自称的那个人写的。唯一需要回答的问题是:如何获得公钥?这是一个有趣的问题,因为加密技术并没有给你提供任何机制。完全掌握在用户手中。通常,在PGP的情况下,用户上传一些他们的中央服务器公钥,这样任何人都可以使用它们。比特币使用非常相似的公钥加密过程。然而,比特币程序不需要对消息进行签名,而是允许您对交易进行签名。
现在你知道了PGP加密的工作原理,你可以开始考虑比特币签名了。但是有点棘手。天真的想法是,当你创建一个交易提议,从你的账户中扣除X金额的比特币,并将其转移到Y,你只需要签署这个提议。但是有一个问题。如果你只是在创造一个交易,也就是说你要转移资产,那么谁来验证你确实有钱?这将需要一些中央权威机构进行核查。比特币最初并不是这样设计的。因为权力最终还是在用户手里。比特币想出了一个绝妙的解决方案。这个想法是这样的:你只有在过去的某个时候收到了比特币,你才能拥有它。这样,唯一可以声明交易的人就是持有私钥的人。因此,比特币签名有双重目的:它验证你是交易的真正创造者,并且你确实拥有你将要转移的比特币。后者是最基本的。我们将在其他帖子中看到这是如何形成钱包(或帐户集合)的基础。顺便说一下,以太坊以稍微不同的方式引入了独立账户的概念。但比特币只是一个交易链。因此,对于所有权,你必须扫描交易链并使用它们,你必须解锁它们并在交易中使用它们。注意:你可能想知道为什么以太坊有更好的设计,因为它允许你创建账户。这取决于用例。设计的简洁使系统保持精简,比特币真正达到了价值存储的目的。 每个事务由一个输入和一个输出组成。每个输入都包含一些以前的事务。每个输出包括资金发送到的目的地。当您签署事务时尚力财经小编2022,您同时签署了输入和输出。通过签署输入,您实际上是在说您是这些令牌的真正所有者。通过对输出结果进行签名,您同意您确实想要将这些令牌发送到指定的地址。为了保持资金流动,一个交易的每一个输出都被用作另一个交易的输入。
产出消耗足够投入
的理论。让我们来看一个真实的交易。
这是通过电汇传输的实际交易。我们从中学不到任何东西。我们该如何解释?一个字:协议。协议是定义数据交换的标准方法。从计算机网络的交易协议规则中,我们可以看出交易是如何构成的。
交易协议
输入交易协议
输出交易协议
我们按照协议来分解交易吧。头包含元数据信息。例如,它告诉程序这是一个事务消息。版本允许向后兼容。如果用新的字段更新协议,旧的交易应该是不可识别的。证人事务这是作为隔离证人改革的一部分而引入的一个领域。我们改天再看。被引用的事务仅包含对正在使用的前一个事务的特定输出的引用。它使用事务哈希值和输出索引号的组合(从0开始)。如果需要,程序可以使用它的哈希值来获取整个事务。使用索引号,它知道使用哪个输出作为输入。要计算事务哈希值,您需要连接事务的完整十六进制表示,并计算字符串的SHA256两次。序列见https://bitcoin.stackexchange.com/a/55113。发送的值的数量(以satoshi表示)。锁定时间解锁该事务的块号或时间戳。scriptPubKey键事务的目标。隐藏在这个脚本中的是接收方公钥的哈希值,用十六进制表示。要获得相应的比特币地址,只需将这个十六进制转换为Base58。ScriptSig类似于scriptPubKey,scriptSig包含授权交易的签名。除了签名本身以外,所有部分都已签字。既然知道了编码的规则,那就来解码一下:有一个事务输入,即hash 2936 ee 6a 0 db 4 e 490198503 bb 6 e 96128 D5 fa 01 BCF 08451 f 78 a 1d 5b 08 dbbd 6事务的第0个索引,有两个输出。其中一个是0.05 BTC,地址为3 swtkzdetsfxyjjqgdwtvpqulv 64 rvktbzthukvxr E4 th 6 tsgxnrg,另一个是33.54 BTC,地址为3 q 7 mcidryx4d 9 pefdeqckkuq 2 iug 4 I 4 efb 8 buho 7 gflckepynwkr 4h。你可能注意到了,与其简单地调用公钥和签名,不如调用公钥脚本和签名脚本。这是一个非常强大的概念,我们将在其他时间深入探讨。但是我将告诉您,有时您希望创建一个可编程的事务,以便它只在满足某些条件时执行。比如发现问题,可能想把刚买的货退了。或者你的经理想批准你做的每一笔交易。脚本支持有趣的用例,进一步改进脚本的工作正在进行中。它是比特币去中心化点对点电子现金系统的关键组成部分。公钥加密确保没有人能够接受您创建的事务并对其进行更改。因此,现在比特币的地址将与你打算将它发送到的目的地不同。它还确保了除了私钥的所有者之外,没有人能够访问发送给他的资金。总结一下:交易不可逆,无可争议。要使用前一个事务的输出作为新事务的输入,您需要私钥。这允许您对邮件进行签名。要将资产发送到帐户,您需要它们的公钥。是交易比特币系统的核心特征之一。但这并不是信任体系的全部。如果我创建一个事务,广播它,然后快速创建另一个事务并广播该事务,会怎么样?谁来废除其中的一个?总的来说,世卫组织确保系统中的每件事都是公平的。 如果比特币需要一个实体来检查一切是否公平公正,就不算去中心化。在本文的第二部分,您将看到如何确保在没有中央组织的情况下一切顺利运行。
以上讨论的是如何通过加密的方式将交易封存,让除了所有者以外的任何人都无法对其做出J决策。我们简单讨论了这些交易是如何通过网络提交并广播到全网的。我们还讨论了接收者如何接收这些事务并在后续事务中使用它们,从而创建一个序列,在该序列中,前一个事务的输出被用作新事务的输入。在创建一个事务后,您需要将它写在某个地方,以便以后可以引用它。这需要一个可以记录所有交易的存储模型(也称为分类账)。为什么我们需要以前的交易?因为为了验证一笔交易是正确的,没有欺诈,你必须从一开始就跟踪它(从中本聪的账户)。我建议你暂停一下,想想你为什么需要这么做。有没有更有效的方法来处理这个问题?
这显然是一个繁琐的过程!由于每分钟都有数百万个事务发生,您不能花费所有的计算资源来试图弄清楚事务是如何构造的。这里有一个简单而优雅的方法来解决这个问题。将一组事务存储在块中,并将这些块链接在一起。而不是在接受的单笔交易上盖章。这样,在检查一个交易是否真实和不欺诈时,您只需要获取前面引用的交易及其块并验证它们。这就概括了比特币的存储模式。但是怎么沟通呢?区块链中有不同的角色,每个角色都有自己的角色集。一些人正在给区块链增加街区。有些只是将块传递给其他块—确保所有块都被考虑在内。一些正在创建/传输实际交易。有些只是核实这些交易。有些人只是监视区块链上发生的活动。但这一切是如何在没有外界影响的情况下,以自持的方式发生的?在我们深入研究理论之前,我想介绍一下系统中的一些关键角色。稍后我们将进一步解释它的目的。这些参与者(更具体地说:节点)可能以某种形式重叠,但它们在概念上是独立的实体。钱包(又称简单支付验证节点)有两个功能:1 .它需要扫描区块链来查看哪些交易属于他;2.它需要创建向网络广播(并最终被挖掘)的事务。在任何时刻,每个节点都与其他几个任意节点相连;形成点对点节点的网格状结构。然而,为了发现其他节点,一个节点必须首先连接到“种子”节点3354,这将引入其他节点。矿工将石块放入区块链。他们收集所有未确认的交易;根据采矿费用(最高)对它们进行排序,并将其添加到区块链中。然后将这个新挖掘的块广播到网络的其他部分。简而言之,矿工的工作就是把交易转换成块。中继器只监视活动。他们可以判断网络的健康状况;参与消息传递;或向区块链查询其他统计信息。在上面的讨论中,我们提到了仍然有可能滥用加密签名的交易系统。如何确保添加到区块链的交易没有被篡改?如果一个调皮的参与者开始用不正确的交易/消息轰炸系统,我该怎么办?如果有人同时给A发X个BTC,给B发X个BTC会怎么样?哪个有效?如果矿商接受两个不同的交易会怎样?节点如何协调地进行网络变化?可以用一个问题来概括:这个系统是如何监管的?在加密、受保护和不受信任的网络中,这些都是难题。从某种意义上说,谁也不能伤害生态系统。 所有节点都必须遵守网络规则。如果有任何异议,一组节点可以拍摄当前区块链的快照;提出的比特币解决方案中的一个关键概念是形成一个定义明确的区块序列。如果您已经订购了该区块,并且得到了所有同行的一致同意,则同一笔交易不能在区块链中出现多次。一种简单的方法是简单地向块(1,2,3…)添加索引。更好的方法是添加时间戳而不是数字,因为时间戳还提供了关于块的创建时间的附加信息,然后每个块可以引用以前的时间戳(假设每个时间戳都是唯一的)。我们的系统还有一个明显的问题。你能说出这是什么吗?任何人都可以随时创建一个块,向网络发送几十个块的垃圾信息。这将导致网络瘫痪,比特币将完全无法使用。比特币白皮书中提出的解决方案如下:在向区块链添加块时,矿工需要解决一个密码难题,并将生成的哈希值添加到块中。这个谜题的设计方法是这样的:验证是否解对了很容易,如果事先不知道答案就很难解。另外,比特币网络可以定期调整这个谜题。比如2019年初,挖矿难度比两年前增加了1800%左右。这样做是为了抵消矿机hash能力的增加,保持系统的平衡。当然,如果矿工没有动力去剥削这些交易,所有这些工作都将毫无意义。所以所有交易都要收费。——费用由矿工承担。在2140年之前,矿工还将获得一些BTC,作为继续采矿的额外激励。这项额外工作生成的哈希值也用于排序;而不是依靠时间戳。然而,我们仍然在块上使用时间戳,因为它们为我们提供了有价值的信息。到目前为止,我们已经有了一个带时间戳、垃圾邮件保护的链接块,它由看起来相当可靠的事务组成。让我们进一步测试一下。矿工有可能实施恶意行为吗?例如,他能否在一个从未有人要求的区块中引入一项交易?如果两个不同的块包含由两个不同的挖掘器几乎同时生成的一组相同的事务会怎样?
这是两个不同的问题,但值得探讨。为了解决第一个问题,我们需要介绍比特币区块链如何巧妙地处理哈希值。哈希值是固定大小的数据,用于确保某些输入的完整性。首先,我们计算一个块中所有事务的哈希值。然后,我们使用一种称为Merkle root construction的技术来计算根哈希值。这个哈希值可以看作:所有的哈希值。简单地说,根散列保证了块中所有事务的完整性。矿机或中继器不可能引入不属于原块的事务,因为这样会破坏整个块的哈希值。很好。同时生产多个区块怎么办?这个有点复杂,因为比特币的论文没有给出具体的答案。而是被留在了一个碰运气的游戏里。不幸的是,有人必须输掉这场战斗。让我们画一幅画。假设中国矿商X和美国矿商Y的区块都包含交易t,X生成的区块b1和生成的区块链是[.].Ab1],而Y的区块链看起来像[.].ab2].这两个块被广播和转发,直到最终74%的节点知道区块链[.].Ab1],而18%的人知道区块链是[.].ab2].这两个区块链似乎都很有效,尽管它们相互矛盾。现在德国一个矿工Y把区块链当成了[…aB1]。他制作另一个C块并广播它。他的范围是94%的节点。所有以前和区块链[…AB2]打交道的矿工,现在都看到了这个新的区块链[…AB1 C],他们会决定抛弃以前的链条,换上最新的版本。如果他们不这样做,而是继续使用旧的采矿链,他们可能会把采矿区块交给大多数人。最后,最流行的区块链版本被认为是标准版本。 这就是为什么一般建议等到6个街区后再接受交易,因为区块链的地位可能会改变。作为一个挖掘者,你希望能够访问尽可能多的节点,否则你所有的努力都可能白费。另一方面,矿权的统一也给比特币网络的去中心化带来风险。如果一群矿工获得51%的杂凑能力,他们可以有效地从他们最喜欢的区块链中被剥夺。这是对比特币区块链的实际威胁。目前,没有任何安全措施来确保将来不会发生这种情况。反对这种观点的人认为这是极其不可能的,而且会伤害所有参与者。者的利益。垃圾邮件保护(工作证明)结合区块链分支和最终的合并意味着我们应该在交易广播之后等待一段时间,然后才能有足够的信心说它已经在区块链网络中持久化。通常,开采一个新区块需要10分钟。如果我们等6个区块,我们的交易就会被深埋在账本里,我们可以非常自信地说,交易已经完成了。但是没有人喜欢喝等一个小时的咖啡。这就是比特币的瓶颈。这项技术不能用于日常使用,但却引领了互联网货币的发展。记住,比特币本身就是各种试图创造虚拟货币的高潮。所以,在我看来,说这项技术已经达到顶峰是不正确的。有很多改进的建议。下一个版本的加密货币可能在利用比特币(Bitcoin, et 尚力财经小编2022al)提出的概念的同时,处理当前系统面临的问题(比如波动性和交易速度)。
标签: 呈