区块链技术可能是自互联网本身以来最好的发明。它允许在不需要信任或中央机构的情况下进行价值交换。想象一下,你和我为明天的旧金山天气下注50 美元。我敢打赌今天是晴天,而你会下雨。今天,我们有三种选择来管理此交易:
我们可以互相信任。下雨或晴天时,失败者将给获胜者50 美元。如果我们是朋友,这可能是处理它的好方法。然而,一个人不能轻易付出,无论是朋友还是陌生人。我们可以把赌注变成合同。有了合同,双方都会更倾向于支付。但如果两人中的任何一方决定不支付,获胜者将不得不支付额外的费用来支付法律费用,而法庭案件可能会持续很长时间。特别是对于少量现金,这似乎不是管理交易的最佳方式。我们可以让中立的第三方参与进来。我们每人将赠送50 美元给第三方,第三方将把全部金额捐给获胜者。但是,嘿,她也可以拿走我们所有的钱。所以我们最终选择了前两个选项之一:信任或合同。信任和合同都不是最佳解决方案:我们不能信任陌生人,执行合同需要时间和金钱。区块链技术之所以有趣,是因为它给了我们安全、快速、廉价的第三种选择。
区块链允许我们编写几行代码,一个运行在区块链上的程序,我们都向该行发送50 美元。该程序将获得100 美元并自动检查多个数据源的明天天气。晴天或雨天,它会自动将全部金额转给获胜者。合约逻辑可以被各方检查,一旦在区块链上运行,就无法更改或停止。对于50 美元的赌注来说,这可能是太多的工作,但想象一下出售房屋或企业。
本文在不深入技术细节的情况下解释了区块链的工作原理,而是深入挖掘,让您对底层逻辑和机制有一个大致的了解。
由于志愿者的努力和区块链社区的支持,简体中文和普通话版本也已推出。
比特币的基础
区块链技术最著名和讨论最多的应用是比特币,它是一种可以兑换产品和服务的数字货币,就像美元、欧元、人民币和其他国家货币一样。让我们使用区块链技术的第一个应用来了解它是如何工作的。
“比特币第一次为我们提供了一种方式,让一个互联网用户可以将独特的数字资产转移给另一个互联网用户,确保转移是安全的,每个人都知道它发生了,没有人可以质疑转移的完整性。”合法性。这一突破的影响怎么强调都不为过。”
— 马克安德森
比特币是比特币(BTC) 数字货币的单位。与美元一样,比特币本身没有价值。它之所以有价值,只是因为我们同意交易商品和服务以使我们控制更多的钱,并且我们相信其他人也会这样做。
为了跟踪我们每个人拥有多少比特币,区块链使用分类帐(一种跟踪所有比特币交易的数字文件)。
分类帐文件不存储在中央实体服务器(例如银行)或单个数据中心中。它通过存储数据和执行计算的私人计算机网络分布在世界各地。这些计算机中的每一个都代表区块链网络的一个“节点”,并拥有分类帐文件的副本。
如果大卫想发送比特币给桑德拉,他向网络广播一条消息说他账户中的比特币数量应减少5 BTC,而桑德拉账户中的比特币数量应增加相同数量。网络中的每个节点都将接收消息并将请求的交易应用于其分类账副本,更新账户余额。
分类帐由一组连接的计算机而不是像银行这样的集中实体维护的事实有几个含义:
在我们的银行系统中,我们只知道自己的交易和账户余额;在区块链上,每个人都可以看到其他人的交易。虽然您通常可以信任您的银行,但比特币网络是分布式的,如果出现问题,您无需致电服务台或起诉任何人。区块链系统被设计为无需信任。安全性和可靠性是通过特殊的数学函数和代码实现的。我们可以将区块链定义为允许一组连接的计算机维护单个更新和安全分类帐的系统。为了在区块链上执行交易,您需要一个钱包,一个允许您存储和交换比特币的程序。由于只有您可以使用您的比特币,因此每个钱包都受到一种特殊的加密方法的保护,该方法使用一对独特但相互关联的密钥:私钥和公钥。
如果消息是用特定的公钥加密的,则只有配对私钥的所有者才能解密和读取消息。反之亦然:如果您使用私钥加密消息,则只有配对的公钥才能解密它。当大卫想要发送比特币时,他需要广播一条用他钱包的私钥加密的消息。由于David 是唯一知道解锁钱包所需的私钥的人,因此他是唯一可以使用他的比特币的人。网络中的每个节点都可以使用其钱包的公钥来解密消息,交叉检查交易请求是否来自David。
当您使用钱包的私钥加密交易请求时,您会生成一个数字签名,区块链计算机使用该数字签名来验证交易的来源和真实性。数字签名是由您的交易请求和您的私钥生成的一串文本;因此它不能用于其他交易。如果您更改交易请求消息
息中的单个字符,则数字签名将更改,因此任何潜在的攻击者都无法更改您的交易请求或更改您发送的比特币数量。
要发送比特币,您需要证明自己拥有特定钱包的私钥,因为您需要该密钥来加密交易请求消息。由于仅在消息加密后才广播消息,因此您无需透露私钥。
跟踪您的钱包余额
区块链中的每个节点都保留着分类账的副本。那么,节点如何知道您的帐户余额?区块链系统根本不跟踪账户余额;它仅记录每笔经过验证和批准的交易。实际上,分类账不跟踪余额,仅跟踪比特币网络中广播的每个交易(图4)。为了确定您的钱包余额,您需要分析并验证连接到您的钱包的整个网络上发生的所有交易。
图4-区块链分类帐
该“余额”验证是基于到先前交易的链接执行的。为了将10个比特币发送给John,Mary必须生成一个交易请求,该交易请求包括指向之前传入交易的链接,这些链接加起来至少有10个比特币。这些链接称为“输入”。网络中的节点会验证数量并确保尚未花费这些输入。实际上,每次您引用交易中的输入时,它们对于以后的任何交易都被视为无效。所有这些操作都是在Mary的钱包中自动执行的,并由比特币网络节点仔细检查;她仅使用John的公钥向John的钱包发送了10 BTC交易。
那么,系统如何才能相信输入交易有效?它检查与您用于通过输入引用发送比特币的钱包相关的所有先前交易。为了加快验证过程,网络节点保留了未用交易的特殊记录。由于进行了此安全检查,因此无法双重使用比特币。
拥有比特币意味着账本中有一些指向您的钱包地址的交易,尚未被用作输入。在比特币网络上执行交易的所有代码都是开源的。这意味着任何拥有笔记本电脑和互联网连接的人都可以进行交易。但是,如果用于广播交易请求消息的代码有误,则相关的比特币将永久丢失。
请记住,由于网络是分布式的,因此没有客户支持电话,也没有任何人可以帮助您恢复丢失的交易或忘记的钱包密码。因此,如果您有兴趣在比特币网络上进行交易,则最好使用开源和正式版本的比特币钱包软件(例如Bitcoin Core),并将钱包的密码或私钥存储在一个非常好的位置。安全的存储库。
但这真的安全吗?为什么称之为区块链?
任何人都可以通过匿名连接(例如TOR网络或VPN网络)访问比特币网络,并提交或接收显示其公钥的交易。但是,如果某人反复使用同一公钥,则可以将所有交易连接到同一所有者。比特币网络允许您生成任意数量的钱包,每个钱包都有自己的私钥和公钥。这使您可以在不同的钱包上接收付款,除非您将所有接收到的比特币发送到单个钱包,否则任何人都无法知道您拥有所有这些钱包的私钥。
可能的比特币地址总数为21或1461501637330902918203684832716283019655932542976。
在允许任何人拥有钱包的同时,这一庞大的数目可保护网络免受可能的攻击。
通过这种设置,仍然存在一个主要的安全漏洞,在花费比特币后,可以利用该漏洞来召回比特币。事务在网络中从一个节点传递到另一个节点,因此两个事务到达每个节点的顺序可以不同。攻击者可以发送交易,等待对方发送产品,然后将反向交易发送回自己的帐户。在这种情况下,某些节点可以在第一笔交易之前收到第二笔交易,因此,由于交易输入将被标记为已花费,因此认为初始支付交易无效。您怎么知道先请求哪个交易?按时间戳订购交易是不安全的因为它很容易被伪造。因此,无法判断交易是否先于另一笔交易进行,这会增加欺诈的可能性。
如果发生这种情况,网络节点之间在每个节点接收到的交易顺序上将存在分歧。因此,区块链系统已设计为使用节点协议来订购交易并防止上述欺诈行为。
Bitcoin的网络订单交易通过其分组为块 ; 每个区块都包含一定数量的交易以及到上一个区块的链接。这就是将一个块放在另一个块之后的原因。因此,将块组织成一个与时间相关的链(图6),该链为整个系统命名:区块链。
同一区块中的事务被视为同时发生,而尚未在区块中的事务被视为未确认。每个节点都可以将事务分组为一个块,然后将其广播到网络,作为对下一个块的建议。由于任何节点都可以建议一个新的块,系统如何同意下一个块?
要添加到区块链中,每个块 必须包含使用不可逆的密码哈希函数创建的复杂数学问题的答案。解决此类数学问题的唯一方法是猜测随机数,该随机数与先前的块内容结合可生成定义的结果。典型的计算机可能需要大约一年的时间才能猜出正确的数字并解决数学问题。但是,由于网络中有大量正在猜测数字的计算机,因此平均每10分钟就会解决一个块。解决数学问题的节点获得将下一个块放置在链上并将其广播到网络的权利。
如果两个节点同时解决问题并将它们的块同时发送到网络,该怎么办?在这种情况下,两个块都被广播,并且每个节点都在它首先接收的块上构建。但是,区块链系统要求每个节点立即在可用的最长区块链上构建。因此,如果不清楚哪个块是最后一个块,则在解决下一个块时,每个节点将采用最长的链作为唯一选择。
由于同时解决区块的可能性低,几乎不可能一次又一次地解决多个区块,建立不同的“尾巴”,因此整个区块链可以快速稳定到每个节点都同意的单个字符串区块。
关于哪个块代表链尾的末端的分歧,再次打开了欺诈的可能性。如果某个交易恰好位于属于较短尾部的区块中(如图7中的区块B所示),则在解决了下一个区块后,该交易以及该区块中的所有其他交易将返回到未确认的交易中。
比特币区块链系统中的交易受到数学竞赛的保护:任何攻击者都在与整个网络竞争。
让我们看看Mary如何利用这种链末尾的歧义来执行双重支出攻击。玛丽寄钱给约翰,约翰将产品寄给玛丽。由于节点始终采用较长的尾巴作为已确认的交易,因此,如果Mary可以生成包含相同反向引用的反向交易的较长的尾巴,则John将会失去金钱和产品。
系统如何防止此类欺诈?每个块都包含对前一个块的引用 (请参见图6)。该参考是数学问题的一部分,需要将其扩展到网络上才能解决。因此,由于要解决一个区块并将其放置在区块链上需要大量随机猜测,因此很难预先计算一系列区块。玛丽正在与其他网络竞争,以解决数学问题,使她能够将下一个区块放在链上。即使她先于其他人解决了问题,也不太可能连续解决两个,三个或更多的问题,因为每次她都在与整个网络竞争。
玛丽可以使用超快速计算机生成足够的随机猜测值来与整个网络竞争以解决区块吗?是的,但是即使使用非常非常快的计算机,由于网络中的大量成员,Mary不太可能在执行双重花费攻击的确切时间连续解决几个区块。
她将需要控制整个网络50%的计算能力,才能有50%的机会在其他节点之前解决一个块-即使在这种情况下,她也只有25%的机会解决两个块连续。连续解决的障碍越多,成功的可能性就越低。比特币区块链系统中的交易受到数学竞赛的保护:任何攻击者都在与整个网络竞争。
因此,随着时间的推移,交易变得越来越安全。例如,在一小时前确认的区块中包含的安全性比最近10分钟内确认的区块中的安全性高。由于平均平均每10分钟将一个区块添加到链中,因此一个小时前第一次包含在该区块中的交易很可能已被处理,现在是不可逆的。
挖矿比特币
为了发送比特币,您需要将传入交易引用到您自己的钱包中。这适用于网络上的每笔交易。那么,比特币从何而来呢?
作为一种平衡由于软件错误和钱包密码丢失而导致的比特币通缩性质的方法,对那些解决每个区块的数学问题的人给予奖励。运行比特币区块链软件以获得这些比特币奖励的活动称为“采矿”,这非常类似于开采黄金。
奖励是私人操作节点的主要动机,从而为处理交易和稳定区块链网络提供了必要的计算能力。
因为一台典型的计算机要花很长时间才能解决一个块 (平均大约一年),所以节点按组分组在一起,将猜测的数目相除以解决下一个块。分组工作可以加快猜测正确数字并获得奖励的过程,然后由小组成员共享。这些组称为采矿池。
其中一些采矿池非常大,占网络总计算能力的20%以上。如上面的双花攻击示例所示,这对网络安全具有明显的影响。即使这些池中的一个可能潜在地获得了50%的网络计算能力,一个区块沿着链条走得越远,其中的交易就越安全。
但是,其中一些具有强大计算能力的采矿池已决定限制其成员,以维护整体网络安全。
由于技术创新和节点数量的增加,随着时间的流逝,整个网络的计算能力可能会增加,因此区块链系统重新校准了求解下一个区块的数学难度,以使整个网络的平均目标时间为10分钟。这样可以确保网络的稳定性和整体安全性。
此外,每四年块奖励减少一半,因此随着时间的推移,开采比特币(运行网络)的兴趣就减少了。为了鼓励节点继续运行,可以向每笔交易收取少量奖励费用;这些奖励是由成功收集此类交易的节点收集的,并解决了其数学问题。由于这种机制,与高报酬相关联的交易通常比与低报酬相关联的交易处理得更快。这意味着,在发送交易时,您可以决定是想更快(更昂贵)还是更便宜(需要更多时间)来处理它。与银行收取的费用相比,比特币网络中的交易费用目前很小,并且与交易金额无关。
区块链的好处和挑战
既然您已经对区块链的工作原理有了一个大致的了解,让我们快速看一下为什么它如此有趣。
使用区块链技术具有显着的优势:
- 您可以完全控制自己拥有的价值;没有第三方拥有您的价值或可以限制您的使用。
- 从地球上任何地方进行价值交易的成本非常低。这允许小额付款。
- 可以在几分钟内转移价值,并且可以在几小时而不是几天或几周后认为交易是安全的。
- 任何人都可以随时验证在区块链上进行的每笔交易,从而实现完全透明。
- 可以利用区块链技术来构建去中心化的应用程序,这些应用程序可以快速安全地管理信息并转移价值。
但是,有一些挑战需要解决:
- 交易可以匿名发送和接收。这样既可以保护用户的隐私,又可以允许网络上的非法活动。
- 尽管出现了许多交易平台,并且数字货币越来越流行,但是用比特币交易商品和服务仍然不容易。
- 像许多其他加密货币一样,比特币也非常不稳定:市场上没有多少比特币可用,需求也在迅速变化。比特币价格不稳定,会根据加密货币行业的重大事件或公告而变化。
总体而言,区块链技术具有革新多个行业的潜力。它的主要力量在于其分散的性质和消除信任需求的能力。
新的应用用例无时无刻不在出现-诸如创建一个完全分散的平台的可能性,该平台运行像以太坊这样的智能合约。但重要的是要记住,该技术仍处于起步阶段。每天都在开发新工具,以改善区块链安全性,同时提供更广泛的功能,工具和服务。