主页 > 官网最新版imtoken钱包 > 科普 | 区块链是如何工作的(注释版)

科普 | 区块链是如何工作的(注释版)

官网最新版imtoken钱包 2023-06-27 06:44:13

编者按:本文最初写于2016年7月,对于已经知道的人来说,文章中的内容可能很常见,就像一张九九乘法表。 但也许其他人会需要它,所以我们仍在努力。

区块链技术可能是继互联网之后最伟大的发明。 它使人们能够在没有信任和去中心化的情况下交换价值。 假设我们对旧金山明天的天气下注 50 美元。 我打赌明天会是晴天,而你认为​​会下雨。 今天我们有三种方法来完成这个赌注:

我们可以互相信任。 无论晴天还是下雨,输家都会向赢家支付 50 美元。 如果我们是朋友,这当然是完成赌注的好方法。 然而,无论我们是朋友还是陌生人,失败者有一百万种拒绝支付的方式。

我们可以把赌注变成合同。 合同一经签订,双方均有义务履行赌注并支付赌注。 但是,如果失败者决定拒绝履行,获胜者将不得不付出额外的代价,并花费大量时间通过法律途径追求自己的合法权益。 特别是对于小赌注,这似乎不是最佳方式。

我们也可能邀请中立的第三方。 下注的玩家每人支付 50 美元给第三方,然后第三方支付 100 美元给赢家。 不过,这个所谓的第三方也有可能卷款潜逃。 因此,这种方式与前两种并无根本区别:要么相互信任,要么诉诸契约。

最好的解决方案既不是信任也不是合同:我们不能信任陌生人,而合同会花费大量金钱和时间。 区块链技术之所以能在这方面脱颖而出比特币密钥忘了怎么办,正是因为它给了我们第三种选择,即安全、快速、廉价。

区块链允许我们编写几行代码并在链上运行一个程序,双方各向其发送 50 美元。 该程序将获得 100 美元并根据多个数据源自动查找明天的天气。 无论是晴天还是下雨,它都会自动将钱转给赢家。 任何一方都有权检查合约逻辑,程序一旦开始在链上运行,就不能更改或暂停。 对于 50 美元的赌注来说,这可能有点过分了,但对于房屋销售或公司间交易来说,这是合乎逻辑的选择。

编者按:截至目前(2019 年 7 月 3 日),上述段落在描述区块链可以做什么方面有点夸张,实际上并没有做到。 但这并不影响本文后续部分的价值,相信读者在详细阅读后面的文章后,自己也能理解为什么上面这段话不可行,但区块链还是有其价值的。

本文不会深入技术细节,只会发布理解该技术底层逻辑和机制所必需的知识。

比特币基础

比特币密钥忘了怎么办_比特币怎么比特币钱包_马斯克叫停比特币买车 比特币跳水

- 图片由作者提供 -

区块链最著名和讨论最多的应用是比特币,它是一种可以与美元、欧元、人民币和其他国家货币一样进行产品和服务交易的数字货币。 让我们通过区块链技术的第一个应用来了解它是如何工作的。

“比特币允许我们做一些我们以前从未做过的事情——让一个互联网用户能够安全可靠地将一种独特的数字资产转移给另一个用户,而且每个人都知道它发生了,但没有人可以质疑汇款的合法性。我无法用言语来赞美这一开创性的成就。”

——马克·安德森

比特币是数字货币比特币(BTC)的基本单位。 和美元一样,比特币本身没有使用价值; 它之所以有价值,是因为人们同意用它来支付商品和服务以换取更多的货币,并相信其他人也会这样做。

比特币怎么比特币钱包_马斯克叫停比特币买车 比特币跳水_比特币密钥忘了怎么办

为了跟踪我们每个人拥有多少比特币,区块链使用分类帐,一种记录所有比特币交易的数字文件。

比特币密钥忘了怎么办_马斯克叫停比特币买车 比特币跳水_比特币怎么比特币钱包

-图 1. 简化的比特币账本数字文件-

分类帐文件不存储在中央处理器中,例如银行或数据中心。 它通过私人计算机网络存储在世界各地,通过该网络存储数据并执行计算。 每台计算机代表区块链网络的一个“节点”,并持有一份账本文件的副本。

如果大卫想支付比特币给桑德拉,他会在网络上广播,宣布大卫账户中的比特币将减少 5 个比特币,桑德拉账户中的比特币将增加相同数量的比特币。 网络中的每个节点都会收到此消息,并在其账本副本上覆盖交易请求,从而更新两个账户余额。

马斯克叫停比特币买车 比特币跳水_比特币怎么比特币钱包_比特币密钥忘了怎么办

- 图 2. 简化的交易请求消息 -

由于账本是由一组相互连接的计算机维护的,而不是像银行这样的中心化实体,因此区块链具有以下特点:

我们可以将区块链定义为允许一组相互连接的计算机维护一个可以持续更新的安全分类帐的系统。 为了在区块链上进行交易,您需要一个钱包——一个可以让您存储和交易比特币的程序。 由于每个人的比特币只能由他们自己使用,因此每个钱包都受到一种特殊的加密技术的保护,该技术使用一对不同但相关的密钥:私钥和公钥。

编者按:使用两个不同但相关的私钥的想法来自非对称密码学,即使用两个不同的密钥进行加密和解密的密码技术。 在这种模式下,私钥就是Private Key,指的是行为者自己保管的密钥,可以推导出公钥(但不能反向推导出私钥)并且(出于实际需要)不应该公开对任何人来说,公钥就是Public Key,由私钥派生而来,可以公开给任何人。

公钥加密有两种一般用途。 一种是加密通信,发送方用接收方的公钥加密,接收方用自己的私钥解密,保证保密性; 另一种是数字签名,签名者使用自己的私钥进行签名,验证者使用签名者的公钥进行验证,这样签名的身份就可以得到保证(不能被欺诈或否认)。

.... 当大卫想要支付比特币时,他需要广播一条用他钱包中的私钥加密的消息。 由于只有大卫知道解锁钱包对应的私钥,因此只有他可以使用他持有的比特币。 网络中的任何节点都可以使用大卫钱包对应的公钥解密信息,从而检查交易请求是否确实来自大卫本人。

当您使用钱包中的私钥对交易请求消息进行加密时,您也会生成一个数字签名,区块链中的计算机会检查签名以确定交易请求的来源和真实性。 这个数字签名是由您的交易请求和私钥生成的一串文本; 因此它不能用于其他交易。 如果您更改交易请求消息中的任何单个字符,数字签名就会变得不同,因此任何攻击者(如果有)都无法更改交易请求或交易金额。

马斯克叫停比特币买车 比特币跳水_比特币密钥忘了怎么办_比特币怎么比特币钱包

-图 3. 简化的数字签名-

鉴于交易请求信息需要使用私钥加密,这意味着您在支付比特币之前始终需要证明您是钱包私钥的所有者。 由于消息在广播之前总是加密的,因此您永远不会泄露您的私钥。

马斯克叫停比特币买车 比特币跳水_比特币怎么比特币钱包_比特币密钥忘了怎么办

编者按:进一步阅读:

“”

“”

跟踪您的钱包余额

区块链中的每个节点都保存一份账本副本。 那么,节点怎么知道你的账户余额呢? 区块链系统本身不跟踪余额; 它只是记录每笔确认和验证的交易。 事实上,分类帐不跟踪余额,而只跟踪比特币网络内广播的每笔交易(图 4)。 要确定您的钱包余额,您需要分析和验证网络中与您的钱包相关的每一笔交易。

马斯克叫停比特币买车 比特币跳水_比特币怎么比特币钱包_比特币密钥忘了怎么办

-图 4. 区块链账本-

“余额”的验证基于先前执行的交易。 为了给约翰支付 10 个比特币,Mary 需要生成一个交易请求,其中包含 Mary 之前总共收到至少 10 个比特币的交易链接。 这些链接称为“输入”。 网络中的节点确认交易金额并确保这些“输入”尚未花费。 事实上,每当您在交易中包含某些“输入”时,它们在此之后的交易中就会变得无效。 以上内容会在小丽的钱包中自动完成,并通过比特币网络的节点进行二次确认; 她刚刚通过约翰的公钥向约翰的钱包支付了 10 个比特币。

编者按:以上只是比特币等使用UTXOs代表资金的区块链的一个特点。 并非所有区块链都是如此,例如以太坊。

比特币密钥忘了怎么办_比特币怎么比特币钱包_马斯克叫停比特币买车 比特币跳水

-图5.区块链交易请求结构-

那么,系统如何验证这些交易的输入是否有效呢? 它通过查询“输入”来检查与您用于支付的钱包相关的所有交易。 为了加快检查速度,网络节点会保留未花费硬币的记录。 由于这种安全检查,我们可以确保比特币不会被重复使用(即相同数量的钱同时支付给不同的人)。

拥有比特币还意味着比特币账本中的一些交易指向你的钱包地址,它们还没有被用作“输入”。 用于在比特币网络上执行交易的所有代码都是开源的; 也就是说,任何拥有互联网连接的笔记本电脑的所有者都可以进行交易。 然而,一旦用于广播交易请求信息的代码出现任何问题,与交易相关的比特币将永远丢失。

编者按:实际上,上段最后一句是错误的。 因为只要代码不破坏账本,全网都有无数的副本; 记在账本上的钱只要没花掉,自然不会少。 但是会不会有一些软件错误会让比特币变得一文不值? 请参阅以下文章中的讨论:

“”

请记住,由于网络是分布式的,因此没有客户服务电话,也没有人可以帮助您找回消失的交易或忘记的密码。 因此,如果您对比特币网络交易感兴趣,最好使用官方开源版本的比特币钱包(如Bitcoin Core),并将您的钱包密码和私钥妥善保管。

马斯克叫停比特币买车 比特币跳水_比特币密钥忘了怎么办_比特币怎么比特币钱包

比特币钱包里的钱真的安全吗? “区块链”这个名字的由来说~

每个人都可以匿名连接到比特币网络(例如,你可以通过 TOR 网络或 VPN 网络连接到比特币网络),发送和接收交易的过程只需要公开公钥(无需公开其他信息)。 如果某人总是使用同一个公钥,那么人们只能通过他的公钥查询他的所有交易。 但是人们可以创建很多钱包,每个钱包都有不同的私钥,这样用户就可以使用不同的钱包来接收转账。 除非您将所有比特币转移到一个钱包中,否则其他任何人都不可能知道哪个钱包地址是您的。

比特币地址总数为 2160,即 1461501637330902918203684832716283019655932542976。

大量的比特币钱包地址让每个用户都拥有自己的钱包,不用担心被攻击者破解。

尽管有这种设置,但仍有一个安全漏洞未解决——提取用过的比特币。 由于交易在节点之间是随机传递的,因此两个交易在节点之间传输的顺序可能不同。 攻击者可以先发送一个交易订单比特币密钥忘了怎么办,等对方发货后,立即将相反的交易订单发送到自己的账户。 在这种情况下,部分节点可能在收到第一笔交易指令之前已经收到了第二笔交易指令,因此第一笔支付交易指令被视为无效。 但此时,交易条目已经显示为“完成”。 那么,问题来了——人们如何检查哪个交易订单先来? 使用时间戳对交易进行排序是非常不安全的,因为时间戳很容易被伪造。 因此,(在这样一个开放的网络中)没有(简单的技术)方法来辨别交易的顺序; 这就产生了欺诈的可能性。

如果有人恶意撤回交易,网络中节点收到的交易顺序就会不一致。 因此,区块链系统有意设计成要求节点达成共识(consensus),以防止上述欺诈事件的发生。

比特币网络通过将交易分成块来对单个交易进行排序,每个块包含一定数量的交易以及该块与前一个块之间的链接。 这样,块在时间上一个接一个地排列。 区块因此成为了时间序列的链条,因此得名:区块链。

比特币密钥忘了怎么办_比特币怎么比特币钱包_马斯克叫停比特币买车 比特币跳水

-图6.简化的区块链排序结构-

同一个区块中的交易被认为是同时发生的,没有被包含在区块中的交易是未确认的交易。 每个节点都可以将交易打包成一个数据块并广播到网络中,提示其他节点接受该数据块作为最新的块。 但是,根据这个意思,任何节点都可以提议一个新的块。 面对众多答案,系统中的节点该如何就下一个区块达成共识?

每个区块必须解决由(计算上的)不可逆加密哈希函数设定的复杂数学问题,才能成为区块链中的成员(区块)。 解决这个复杂的数学问题的唯一方法是不断猜测随机数结合前一个块的内容,直到找到一个符合定义的结果。 一台普通的计算机需要将近一年的时间才能正确猜出这个数字。 这个数字听起来很大,但不要忘记网络中有数以万计的计算机在猜测数字,平均每 10 分钟就会产生一个区块。 解决数学难题的节点获得广播该区块并要求所有人接受它作为最新区块的权利。

编者按:这样说可能更容易。 在设计上,(除了第一个block)每个block都必须指定继承前一个block; 结合上一个块的内容,我们可以设计一个密码哈希函数 计算题:要求改变输入,使得哈希函数的结果满足一定的形式要求(比如小于某个值)。 因为散列函数的结果是随机的并且在计算上是单向的(不可能从 y 推导出 x),所以找到满意解决方案的唯一方法是蛮力。 找到这样的解决方案后,找到解决方案的节点可以广播相应的块,并要求其他节点接受它。

上面的“10分钟”是比特币的“出块间隔”(或“出块时间”)。 不同的区块链往往有不同的出块时间。

有关加密哈希函数,请参阅:“”

这时候可能会有一些善于提问的同学举手问:如果两个节点同时解决问题,将自己的区块发送到网络中会怎样?

在这种情况下,两个块都被广播到网络,其他节点继续在他们首先收到的块上添加块。 然而,比特币协议要求每个节点在它能看到的最长链上添加一个区块。 因此,如果不清楚哪个区块是最新的区块(同时挖出两个区块),一旦某个区块后面的区块被挖出,按照最长链规则,问题就解决了。

马斯克叫停比特币买车 比特币跳水_比特币怎么比特币钱包_比特币密钥忘了怎么办

比特币密钥忘了怎么办_马斯克叫停比特币买车 比特币跳水_比特币怎么比特币钱包

-图 7. 链顶端的歧义解决逻辑-

由于同时挖出区块的概率很低,所以几乎不可能在每个高度同时出现多个区块。 因此,整个区块链会很快稳定在一条每个节点都认同的链上。

但“哪个区块是区块链的顶端”的分歧给了骗子可乘之机。 如果交易恰好在非最长链中(图7中的区块B),一旦(最长链)挖出下一个区块,该交易和该区块中的其他交易将恢复为“未确认交易(状态)” ”。

数学竞赛保护比特币区块链系统中的交易,简而言之,每一个攻击者无疑都是单挑整个网络。

我们来看看这个例子,Mary是如何利用链顶的模糊性来进行“双花攻击”的。 玛丽转了一些钱给约翰,当约翰知道后,他把钱寄给了玛丽。 由于节点总是使用最长链规则来确认交易,如果Mary能够挖出更长的链并同时撤回上述交易,John将钱财两失。

马斯克叫停比特币买车 比特币跳水_比特币密钥忘了怎么办_比特币怎么比特币钱包

-图 8. 玛丽的“双花攻击”-

系统如何防止此类欺诈? 每个区块都会引用前一个区块的区块ID(详见6.6)。 前一个块的 ID 也是节点(“矿工”)解决以将后续块放在链上的密码学难题的一个元素。 预先计算一个区块序列是非常困难的,因为解决一个谜题并将一个新区块放到链上需要大量的随机猜测。 在这次数学竞赛中,寡不敌众的玛丽暂时把下一个方块放在了第一位,但她的如意算盘太早了——她几乎不可能连续解决第二个、第三个、第三个方块。 四……毕竟她的对手是全网!

如果玛丽使用超快的计算机和整个互联网会怎么样? 答案还是一样。 由于网络上有数以万计的对手,无论玛丽使用的计算机有多快,玛丽在进行双花攻击时真的不太可能需要一道一道地解决数学问题(不要怪我打人哦)。

Mary 需要控制全网 50% 的算力,才有 50% 的机会在其他节点之前解锁一个区块。 即使在这种情况下,她也只有 25% 的机会连续生产两个区块。 简单地说,她需要生产的连续区块越多,她成功的可能性就越小。 再敲小黑板——比特币区块链系统中的交易被这种数学竞赛“保护”起来,攻击者无疑会以石打石。

因此,随着时间的推移,交易也更加安全。 例如,一个小时前确认并存储在区块中的交易比十分钟前确认的交易更安全。 由于区块平均每十分钟增加一个,因此一小时前保存在区块中的交易已经被确认并且不可逆。

比特币怎么比特币钱包_比特币密钥忘了怎么办_马斯克叫停比特币买车 比特币跳水

-图 9. 区块链的交易安全性-

比特币挖矿

发送比特币时,您需要参考钱包中有资金的收款人。 这适用于网络中的每笔交易。

比特币怎么比特币钱包_比特币密钥忘了怎么办_马斯克叫停比特币买车 比特币跳水

编者按:这就是所谓的“UTXO”,即在比特币系统中,钱并不像我们的银行账户那样以数字的形式存在,而是以票据(note)的形式存在。 当你要转账时,你相当于把账单拆分成(或拼成)特定数量的账单,然后通过提供收款人私钥才能解锁的方式锁定资金。 以后收款人想花钱的时候也是一样:用自己的私钥解锁。

另一方面,以太坊使用账户模型,很像我们的银行账户。 详情可见:

“”

那么,在这一点上,我们要问——比特币最初是从哪里来的?

作为平衡比特币通货紧缩性质(由软件错误和丢失钱包密码引起)的一种方式,人们每次解决一个区块的数学问题时都会得到奖励。 这种为了获得比特币奖励而运行比特币软件的行为称为“挖矿”,其实很像淘金。

激励个人运营节点的主要动机是奖励,而这种激励也提供了必要的算力,以保证交易的正常运行和区块链网络的稳定。 之前我们也提到过,普通计算机破解一个区块需要将近一年的时间,所以节点一般会组成一个团队来减少每个节点需要猜测的次数。 分组工作可以加快猜对数字的奖励,然后可以在小组内共享。 我们称这些团体为“矿池”。

有些矿池非常大,集中了全网20%以上的算力。 如此庞大的算力似乎对网络的安全构成了挑战,从上述双花攻击的例子中我们可以看出。 但即使有些矿池可能集中了全网50%的算力,但区块在链中的深度越高,交易的安全性就越高。

值得一提的是,一些算力强大的矿池已经决定有意识地限制其成员数量,以确保全网安全。

随着科技创新和节点数量的增加,全网的算力很可能会越来越强,比特币协议也会重新校准求解问题的难度,确保平均一个区块是每十分钟添加一次。 这保证了网络的稳定性和整体安全性。

此外,区块奖励每四年减半,因此挖矿(运行网络)对人们来说并不总是那么有吸引力。 为了鼓励节点继续运行,可以在每笔交易中附加少量交易费用。 这些奖励会奖励给成功开采区块的矿工。 有了这种机制,高费用的交易通常会比低费用的交易更快地被包括在内。 这样,你是不是希望交易尽快得到确认(更贵)? 或者想节省一点交易费用(较慢)? 这是你的选择。 目前,比特币网络中的交易手续费仍远低于银行。 另外,比特币的交易手续费与交易金额无关。

比特币的优势和挑战

看完这篇文章,你对区块链的运作有了一个大概的了解。 现在让我们快速回顾一下为什么区块链如此有趣~

区块链技术的显着优势是:

然而,区块链仍有一些挑战需要解决:

总的来说,区块链有可能彻底改变许多行业,从广告到能源分配。 去中心化的特性和不需要信任是它最神奇的力量。

新的用例一直在增加,例如:一个可以运行智能合约的完全去中心化的平台——以太坊。 然而,重要的是要记住,这项技术仍处于早期阶段。 随着新工具的开发以帮助提高区块链安全性,区块链技术日复一日地涵盖更广泛的功能、工具和服务。

原文链接: