比特币的信任模型

2019-01-07 15:00 栏目:经验之谈 来源: 查看()
比特币是一种分散的数字货币,基于信任系统,基于加密挑战,如椭圆曲线的各种属性。在缺乏对比特币数学的深入研究的情况下,让我们看看比特币信任系统是如何构建的。要正确理解本文的主要思想,您不需要了解加密。但是,您应该对私钥和公钥有基本的了解。

“我在哪里签名?”

每次您要授权付款时,系统都会要求您执行某种形式的验证。验证的目的是,一旦您以自己的名义批准交易,交易就是不可逆转的。当然,在某些情况下,您可能希望添加一个条款,如果不满足某些条件,则必须在另一个方向托管付款。但是,一旦交易得到授权和签署,这将成为定局。唯一的问题是:你能否完全确认它确实是由它所代表的人授权的?使用签名来识别用户是一个老问题。曾经有一段时间人们用昂贵的徽章封印信件,以证明信件 确实来自一个权威机构。

信件的执行和信件的应用已被PGP密钥取代。 PGP密钥很有趣,因为在某些方面它们与比特币密钥非常相似。让我们花一点时间来看看PGP,看看比特币是如何建立在这个基础上的。

比特币的信任模型

有两种方法可以使用PGP密钥:

1.用于加密和解密电子邮件。如果有人拦截了该消息,则他们无法破译该消息。
2.签署消息。如果有人拦截,他们可以验证邮件的真实性。

比特币的信任模型

PGP有效地取代了密封装置。该过程如下。首先,必须生成公钥 - 私钥对。现在你写一封电子邮件。完成后,您将获取私钥和​​电子邮件,通过PGP签名程序运行它,并显示签名。该签名只能由持有私钥的人生成。你怎么能确定?您将获得消息和签名,并通过提供发件人公钥的PGP验证程序运行它。此应用程序将告诉您该电子邮件是否实际上是由他声称的人写的。唯一需要回答的问题是:如何获取公钥?这是一个有趣的问题,因为加密不会为您提供任何机制。它完全掌握在用户手中。通常,在PGP的情况下,用户上传他们的一些中央服务器公钥,以便任何人都可以使用它们。

比特币使用非常类似的公钥加密过程。但是,比特币计划不需要签署消息,而是允许您签署交易。

比特币交易是如何签署的?

现在您已了解PGP加密的工作原理,您可以开始考虑比特币签名。但这有点棘手。天真的想法是,当您创建一个从您的帐户提供比特币的X面额并将其转移到Y的交易时,您只需要签署此建议。但有一个问题。如果您只是创建一个表明您想要转移资产的交易,谁会验证您确实有钱?这将需要一些中央机构进行核实。比特币的初衷并非如此。因为权力最终掌握在用户手中。比特币提供了一个很棒的解决方案。这个想法是这个:只有当你在过去的某个时刻收到比特币时,你才有可能拥有比特币。因此,唯一可以宣布交易的人是持有私钥的人。因此,比特币签名有两用:

·它验证您是交易的真正创建者,并且
·你确实有要转移的比特币。

后者是最基本的。我们将在其他帖子中看到这是如何构成钱包(或帐户集合)的基础。顺便说一句,以太坊以稍微不同的方式引入了单独帐户的概念。但比特币只是一个交易链。因此,对于所有权,您必须扫描交易链并使用它们,您必须解锁它们并在交易中使用它们。

注意:您可能想知道为什么: Ethereum有更好的设计,因为它允许创建一个帐户。这取决于用例。设计的简单性使系统简化,比特币确实实现了价值存储。

每个事务都由输入和输出组成。每个输入包含一些以前的事务。每个输出包括资金发送到的目的地。签署事务时,您同时对输入和输出进行签名。通过签署输入,您实际上是在说您是这些令牌的真正所有者。通过对输出进行签名,您同意您确实希望将这些令牌发送到指定的地址。为了维持资本流动,交易的每个输出都用作另一个交易的输入。

比特币的信任模型

输出消耗是输入

足够的理论。让我们看看真正的交易。

比特币的信任模型

这是通过线路传输的实际事务。我们无法从中理解任何事情。我们如何解释它?一个字:协议。

该协议是定义交换数据的标准方法。根据计算机网络的事务协议规则,我们可以看到如何构造事务。

比特币的信任模型

交易协议

比特币的信任模型

输入交易协议

比特币的信任模型

产出交易协议


让我们根据协议细分交易。

比特币的信任模型

头 包含元数据信息。例如,它告诉程序这是一个事务消息。

版本
允许向后兼容。如果使用新字段更新协议,则旧事务不应变得无法识别。

企业的目击者
这是一个作为证人分离的一部分而引入的领域。我们将在另一天看到它。

参考交易
事件 仅包含对正在使用的上一个事务的特定输出的引用。它使用事务哈希值和输出索引号的组合(从0开始)。如果需要,程序可以使用其哈希值来获取整个事务。使用索引号,它知道哪个输出用作输入。

要计算事务哈希值,您需要连接事务的完整十六进制表示并计算字符串的SHA256两次。

序列
见https://bitcoin.stackexchange.com/a/55113。

价值
发送的金额(由satoshi表示)。

锁定时间
解锁此事务的块编号或时间戳。

公钥脚本(scriptPubKey)
交易的目的地。此脚本中隐藏的是接收者的公钥哈希,以十六进制表示。要获得相应的比特币地址,只需将此十六进制转换为Base58即可。

签名脚本(scriptSig)
与scriptPubKey类似,scriptSig包含授权事务的签名。签名本身以外的所有部分均已签名。

现在我们知道了编码规则,让我们解码它:

有一个事务输入,具有两个输出的hash2936ee6a0db4e4901988503bb6e966128dd5fa01bcf08451f78a1d5b08dbbd6事务的第0个索引。其中一个是0.05 BTC,地址是3swtkzdetsfxyjqgdwtvpqu高仿lv64rvktbzthukvxxre4th6tsgxnrg
剩下的33.54 BTC,地址是3q7mcidryx4d9pefdeqckuq2iug4i4efb8buho7gflckepynwkr4h。

您可能已经注意到,不是简单地调用公钥和签名,而是最好调用公钥脚本和签名脚本。这是一个非常强大的概念,我们将在其他时间探索。但我会留下这样的想法。:有时您希望创建可编程事务,以便仅在满足某些条件时才执行。例如,如果您发现问题,可能需要退回刚刚购买的商品。或者您的经理想要批准您所做的每笔交易。该脚本支持有趣的用例,并正在进一步改进脚本。

交易是比特币分散的点对点现金系统的关键组成部分。公钥加密确保没有人只能接受您创建的事务并更改它,因此比特币的当前地址将与您要发送的目标不同。它还确保除私钥所有者之外的任何人都不能访问发送给他的资金。

简而言之,:事务是不可逆转且无可争辩的。要使用先前事务的输出作为新事务的输入,您需要一个私钥。这允许您对消息进行签名。要将资产发送到帐户,需要使用其公钥。交易是比特币系统的核心功能之一。

但这不是整个信托系统。如果我创建一个事务,广播它,然后快速创建另一个事务,并广播该事务,该怎么办?谁会撤销他们中的一个?一般而言,世卫组织确保系统中的所有内容都公平地完成。如果比特币需要一个实体来检查一切是否公平公正,那么它就不会被视为分散的。在本文的第二部分中,您将了解如何在没有中央组织的情况下确保一切正常。

上面讨论了如何以加密的方式密封交易,以便除了所有者之外的任何人都不能做出j决定。我们简要讨论如何通过网络提交和广播这些交易。我们还讨论了接收器如何接收这些事务并在后续事务中使用它们来创建一个序列,在该序列中,前一个事务的输出被用作新事务的输入。

创建事务后,您需要将其写入某处,以便以后可以引用它。这需要一个存储模型,其中可以记录所有事务(也称为分类帐)。为什么我们需要先前的交易?因为为了验证交易是否正确而不是欺诈,您必须从头开始跟踪(从Nakamoto的帐户开始)。我建议你暂停并思考为什么你需要这样做。有没有更有效的方法来处理这个问题?

比特币的信任模型

这显然是一个繁琐的过程!每分钟有数百万笔交易,您无法花费所有计算资源来确定交易的结构。有一种简单而优雅的方法可以解决这个问题。将一组事务存储在块中并将它们链接在一起。而不是在单个交易上加盖标记。通过这种方式,当检查事务是否确实正确而不是欺诈时,您只需要获取先前引用的事务及其块并验证它。

这总结了比特币的存储模式。但是你怎么沟通?区块链中有不同的角色 - 每个角色都有自己的一组角色。有些人正在向区块链添加块。有些只是将块传递给其他块 - 确保考虑所有块。有些人正在创建/转移实际交易。有些人只是验证这些交易。有些只是监控区块链上发生的活动。但是,如何在不受外界影响的情况下以自我维持的方式发生这种情况?

比特币的信任模型

在我们深入研究这个理论之前,我想介绍一下系统中的一些关键角色。我们稍后会进一步阐述其目的。这些参与者(更具体地,:节点)可以以某种形式重叠,但是在概念上是独立的实体。

钱包
钱包(也称简单支付验证节点)有两个功能:
1.它需要扫描区块链以查看属于他的交易
2.它需要创建一个广播(并最终挖掘)到网络的事务。

种子
在任何时候,每个节点都连接到其他几个任意节点;类似网格的结构,形成点对点节点。但是,为了发现其他节点,节点必须首先连接到“种子”节点——,这将引入其他节点。

矿工
矿工将区块放入区块链中。它们汇总了所有未经证实的交易;按采矿费(最高)对它们进行排序,并将它们添加到区块链中。然后将这个新的挖掘块广播到网络的其他部分。简而言之,矿工的工作是将交易转换为块。

中继器
转发器只是监控活动。他们可以判断网络的健康状况;参与消息传递;或查询区块链以获取其他统计信息。

在上面的讨论中,我们在讨论中提到,对于具有加密签名的交易系统,仍然可能滥用该系统。您如何确保添加到区块链的交易没有被篡改?如果顽皮的参与者开始用不正确的交易/消息轰炸系统怎么办?如果有人同时向A和x BTC发送x BTC,B会发生什么?哪一个有效?如果矿工接受两个不同的交易?如何协调节点之间的网络变化?您可以使用一个问题来总结系统在:中的调节方式吗? Br />
这些都是加密,受保护,不受信任的网络中的所有问题。——从某种意义上说,没有人可以伤害生态系统。所有节点必须符合网络规则。如果有任何异议,一组节点可以拍摄当前区块链的快照;

提出的比特币解决方案中的关键概念是形成明确定义的块顺序。如果您已经订购了一个区块并且得到了所有同行的一致同意,那么区块链中不会多次发生相同的交易。一种简单的方法是简单地为块添加索引(1,2,3 ......)。更好的方法是添加时间戳而不是数字,因为时间戳还提供有关块创建时间的附加信息,然后每个块可以引用先前的时间戳(假设每个时间戳都是唯一的)。我们的系统中仍然存在明显的问题。你能看出它是什么吗?

比特币的信任模型

任何人都可以随时创建一个块,并向网络发送数十个垃圾块。这将导致网络崩溃,比特币将完全无法使用。比特币白皮书中提出的解决方案如下::在向区块链添加块时,要求矿工破解密码质询并将结果哈希值添加到块中。这个难题的设计方法就像这样:很容易验证它是否正确解决,但如果你事先不知道答案,那么很难解决。此外,比特币网络可以定期调整这个难题。例如,在2019年初,采矿难度比两年前高出约1800%。这样做是为了抵消采矿机器的散列功率的增加并保持系统的平衡。当然,如果矿工没有动力利用这些交易,那么所有这些工作都将毫无意义。这就是所有交易的收费原因。——费用由矿工承担。在2140年之前,矿工还将获得一些BTC作为继续采矿的额外奖励。这个额外工作生成的哈希也用于排序;它不依赖于时间戳。但是,我们仍然在块上使用时间戳,因为它们为我们提供了有价值的信息。


到目前为止,我们有一个带时间戳,受垃圾邮件保护的链接块,其中包含看起来相当可靠的交易。让我们进一步测试吧。矿工有可能做出恶意行为吗?例如,他可以在一个从未被任何人请求的块中引入事务吗?如果两个不同的区块包含由两个不同的矿工完全相同的一组,我该怎么办?

比特币的信任模型

这是两个不同的问题,但值得探讨。为了解决第一个问题,我们需要介绍比特币区块链如何巧妙地处理哈希值。哈希是一种固定大小的数据,用于确保某些输入的完整性。首先,我们计算块中所有事务的哈希值。然后,我们使用一种称为Merkle根构造的技术来计算根哈希值。该哈希值可以被认为是哈希值:。简而言之,根哈希保证了块中所有事务的完整性。矿工或转发器不可能引入不属于原始块的事务,因为这会破坏整个块的散列。非常好,那么同时生产了多少块?

这有点复杂,因为比特币论文没有给出具体答案。相反,它留在了运气的游戏中。不幸的是,有人必须输掉这场战斗。让我们画一幅画。假设交易者T包含在中国矿工X的区块中,美国矿工Y. x产生区块b1,结果区块链为[.. a→b1],y的区块链看起来像[... a→b2] ]。这两个块被广播和转发,直到最后74%的节点知道区块链[... a→b1],18%知道区块链是[... a→b2]。两种区块链似乎都是有效的,尽管是矛盾的。现在,一名德国矿工Y将区块链视为[... a→B1],他制作了另一个C区并进行广播。他的范围是94%的节点。之前使用区块链[... A→B2]的所有矿工现在都看到了这个新的区块链[... A→B1 C],他们将决定放弃之前的链并用最新版本替换它。如果他们不这样做,但继续使用旧的采矿链,他们将能够放弃对大多数采矿区。最后,最流行的区块链版本被认为是标准版本。这就是为什么通常建议等到6个街区之后才能接受交易,因为区块链的状态可能会发生变化。作为一名矿工,您希望能够访问尽可能多的节点,否则您的所有努力都会被浪费掉。另一方面,采矿权的统一也给比特币网络的分散化带来了风险。如果一群矿工获得51%的散列能力,他们可以有效地将他们从他们最喜欢的区块链中剥离出来。这是比特币区块链的真正威胁,目前还没有安全措施来确保将来不会发生这种情况。那些反对这种观点的人认为这种可能性极小,并且会损害所有参与者的利益。

垃圾邮件保护(工作证明)与区块链分支和最终合并相结合意味着我们应该在事务广播之后等待一段时间,然后我们才能充分相信它已经存在于区块链网络中。通常,挖掘新区块需要10分钟。如果我们等待六个街区,我们的交易将深埋在账簿中,我们可以自信地说这笔交易已经完成。但没有人喜欢喝咖啡一小时。这是比特币的瓶颈。这项技术不能用于日常使用,但它已导致互联网货币的发展。请记住,比特币本身就是创造虚拟货币的各种尝试的高潮。因此,在我看来,说这项技术达到顶峰是不正确的。有许多改进建议。下一版加密货币可以解决当前系统面临的问题(例如波动性和交易速度),同时利用比特币(等)提出的概念。


微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发