首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链是怎么工作的:“赌徒困境”的第三种选择

作者 Michele D’Aliessi等

编译 刘开元

本文的目的是解释区块链是如何工作的,而不深入讨论技术细节。只需深入挖掘,就可以对底层逻辑和机制有一个大致的了解。

注:文中的“交易”亦可理解成“活动”

区块链技术可能是继互联网之后最好的发明。它允许价值无须经过权威中心的信任而进行交换。想象一下你我在明天武汉的天气上打赌50元。我打赌天气会很晴朗,你打赌肯定会下雨。那么,我们就有三种选择来概括这个赌约的结果:

1.我们可以信任彼此。无论下雨还是晴天,输家都会给胜者50元。如果我们是好朋 友,这可能是一个很好的打赌方式。然而,现实中无论是朋友还是陌生人,一个人 很可能会赖账。

2.我们可以把赌注变成合同。在订立合约后,双方都更有可能付款。不过,一旦输家 决定赖账,胜者便须支付额外款项以应付上诉官司的法律开支;而仲裁可能需要很 长时间。特别是对于小金额合约,这似乎不是管理交易的最佳方式。

3.我们可以让中立的第三方参与进来。我们每人给第三方50元,然后她就会把总数给 获奖者。但是她也可以带着我们的钱逃走。

因此,我们最后选择了前两种方案之一:信托或合约。

为什么说信任和契约都只是次优解决方案?因为我们不能信任陌生人,执行合同需要时间和金钱。

但是区块链技术很有趣,它为我们提供了安全、快速和廉价的第三种选择。

有了区块链,我们可以编写几行代码,创建一个运行在区块链上的程序。我们都将50元发送到该区块。这个程序将维护100美元的安全,并自动在几个数据源里验证明天的天气。

晴天or雨天,它会自动将全部金额转移给获胜者。每一方都可以公开检查合约逻辑,一旦合约在区块链上运行,就不能更改或停止。

对于50元的赌注来说,这种技术代价可能太高了。但是想象一下,当你卖掉一套房子或一家公司甚至你要选举美国总统的时候呢?

区块链技术最著名和讨论最多的应用是比特币:一种可以用来交换产品和服务的数字货币。

“比特币第一次为互联网用户提供了一种向另一个互联网用户传输专有的数字化财产的方式,这种方式可以保证传输是安全和有保障的。因为每个人都知道且认同转移已经发生,没有人能够质疑传输的合法性。这一突破的影响怎么强调都不为过。“

——马克·安德烈森

那么,什么是比特币?

一比特币是比特币(BTC)数字货币的单位。就像美元本身没有价值一样,它的价值只是因为我们认同了这样一种交易模式:通过我们的“动”以换取在我们控制下的更高数额的货币,同时在这个系统中人人遵守此规则。

是的,只要你“动”,你就应该获得合理的回报。

为了跟踪比特币的数量,我们每个人应该拥有使用区块链分类账技术的数字文件(数字钱包),用于跟踪所有比特币交易。

图1-简化比特币分类账数字文件

大分类账文件(总钱包)不存储在中央实体服务器(如银行)或单个数据中心中。它通过一个存储数据和执行计算的私有计算机网络分散到世界各地。该网络中的每一台计算机都表示一“节点”的区块链网络,并拥有分类账档案。

如果二毛想把比特币发送给张杨,她会向网络发送一条消息,称她账户中的比特币数量应该减少5比特币,张杨账户的数量应该增加同样的数量。接着,各节点在网络中,将接收消息并将请求的交易应用于分类账副本,从而更新帐户余额。

图2-交易请求讯息简化流程

分类账由一组联网计算机而非银行集中实体维护,这一事实有几个含义:

1.在中央银行系统中,我们只知道自己的交易活动和账户余额;而在区块链上,每个 人都可以看到其他人的所有交易。

2.比特币网络是分布式的,这意味着如果出了什么问题,就没有求助中心,也没有人 可以提起诉讼。

3.该分块系统的设计方法是不需要信任机制的,通过特殊的数学函数和代码来获得安 全性和可靠性。

我们可以将区块链定义为:允许一组相互连接的计算机维护一个更新的、安全的分类账的系统。

为了能够在区块链上执行交易,你需要一个允许存储和交换比特币的钱包程序。这意味着只有你才能用一种特殊的加密方法把你的比特币钱包加以保护,该方法使用一对不同但相互连接的密钥:私钥和公钥。如果消息是用特定公钥加密的,则只有配对私钥的所有者才能解密和读取消息。

另一方面,如果使用私钥加密消息,则只能使用配对公钥对其进行解密。当二毛想要发送比特币时,她需要广播一条用她的私钥加密的消息。所以只有她才能把她拥有的比特币花光,因为二毛是唯一知道自己的私钥的人。网络中的每个节点都可以通过使用钱包的公钥解密交易请求讯息来交叉检查交易请求是否来自二毛。

当使用钱包的私钥加密交易请求时,你将生成一个数字签名。

该数字签名被区块链计算机用于双重检查交易的来源和真实性。数字签名是由你的交易请求和私钥组合而成的文本字符串,因此不能用于其他交易。如果更改交易请求消息中的单个字符,则数字签名将发生更改,因此任何潜在攻击者都无法更改你的交易请求或更改您发送的比特币数量。

图3-简化数字签名交易加密过程

要发送比特币,你需要证明你拥有特定钱包的私钥,因为需要使用它来加密交易请求消息。请注意,由于你只在消息被加密后才广播消息,所以你不必透露你的私钥。

区块链中的每个节点都保存着分类账的副本。那么,各节点如何知道你的帐户余额呢?

区块链系统根本不需要跟踪账户余额。它只记录所请求的每一笔交易。实际上,分类账并不记录账户余额,它只跟踪比特币网络中的每一笔交易。要了解你的钱包账户余额,你需要分析和验证所有发生在连接钱包的网络中的交易。

图4-账户交易记录

这种账户验证是通过链接到以前的交易来执行的。

为了将10个比特币发送给范冰冰,李晨必须生成一个交易请求,其中包括之前交易的链接。这些交易的总余额等于或超过10个比特币。这些链接称为“输入”。网络中的节点将验证这些交易的总量是否等于或超过10个比特币,并且这些输入尚未被使用。

实际上,每次在交易中引用输入时,这些输入在任何未来交易中都被认为无效。这一切都将自动在范冰冰的钱包和比特币网络节点进行双重检查。李晨只需要使用公钥发送一个10 BTC的交易到范冰冰的钱包。

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

拥有比特币意味着,在分类账中有一些交易始终指向你的钱包地址,而且还没有被使用。

在比特币网络上执行交易的所有代码都是开源的,这意味着任何拥有笔记本电脑和互联网连接的人都可以操作交易。但是,如果用于广播交易请求消息的代码出现错误,相关的比特币将永久丢失。

请记住,由于网络是分布式的,因此没有客服,也没有任何人可以帮助你恢复丢失的交易记录或忘记的钱包密码。

因此,如果你对在比特币网络上进行交易感兴趣,建议使用开放源代码和官方版本的比特币钱包软件并将钱包的密码或私钥存储在一个非常安全的数据库中。

哼,好吧,但这真的安全吗?这和为什么它叫区块链有关吗?

任何人都可以通过匿名连接访问比特币网络(即TOR网络或者是VPN网络),并在提交或接收交易时只显示他的公钥。

但是,如果有人一次又一次地使用相同的公钥,则可以将所有交易连接到同一个所有者。

比特币网络允许产生任意数量的钱包,每个钱包都有自己的私钥和公钥。这使你可以通过不同的钱包接收来源不同相互独立的付款。除非你把收到的所有比特币都寄到一个钱包里,否则你不可能知道你所拥有的这些钱包的私钥。

这个庞大的数字保护网络因此免受可能的攻击,同时允许任何人拥有钱包。

但是通过这种设置,仍然有一个很大的安全漏洞,黑客可以利用这个漏洞在使用比特币之后召回比特币。

交易在网络中从一个节点传递到另一个节点,因此到达每个节点的两个交易的顺序可能不同。攻击者可以发送交易,等待对方发送产品时将反向交易发送回自己的帐户。

在这种情况下,一些节点可以在第一个交易之前接收到第二个交易,因此认为它们的第一个支付请求无效,因为交易输入已经造成支付事实。

那你如何知道哪个交易是先被请求的?通过以下方式请求交易是不安全的。因为时间戳很容易是伪造的。因此,无法判断一项交易是否发生在另一项交易之前,这就有可能发生欺诈。

如果发生这种情况,网络之间就会有分歧。节点关于交易的顺序,每个人都收到了。所以区块链系统已被设计成使用节点均同意交易请求以防止上述欺诈行为。

比特币网络将交易组合成一个称为B-locks的东东,每个区块包含一定数量的交易,并链接到前面的区块。这就是为什么区块依次排在另一个后面。它们因此被组织成一个与时间相关的链(如图所示)。

于是整个系统起了一个名字:区块链.

图6-简化了的区块链序列结构

相同的交易区块被认为是同时发生的,并且没有被认为是未经证实的区块。每个节点可以将交易分组为区块并将其传输到网络,作为下一个区块的佐助。

既然任何节点都可以佐助新的区块,系统是如何达成一致的?

为了加入区块链,每个区块必须包含使用不可逆转的方法创建的复杂数学问题的答案—密码散列函数。解决这类数学问题的唯一方法是猜测随机数,这些随机数与前面的区块内容相结合,生成一个定义的结果(通常是某个值以下的数字)。

一台典型的计算机可能需要大约一年的时间才能猜出正确的数字并解决数学问题。然而,由于网络中猜测数字的计算机数量很高,平均每10分钟就会解决一个区块。解决此类数学问题的节点有权将下一个区块放置在链上,并将其公布到整个网络。

如果两个节点同时解决问题并同时将它们的区块传播到网络中,又会怎样呢?

在这种情况下,两个区块都被广播,每个节点构建在它首先接收的区块上,但是区块链系统要求每个节点立即构建最长的可用区块链。因此,如果对哪一个是最后一个区块有歧义,那么一旦解决了下一个区块,每个节点都将采用最长的链作为唯一的选择。

图7-链终止的模糊逻辑图

由于同时求解区块的概率很低,几乎不可能有多个区块同时成为“尾巴”的情况,所以整个区块链迅速稳定到一个每个节点都同意的单一的字符串连块。

让我们看看吴亦凡是如何利用链尾模糊性来进行双重支付(双花)攻击的。

吴亦凡把钱寄给杨洋,然后杨洋把产品寄给吴亦凡,现在由于节点总是采用较长尾作为确认交易,如果吴亦凡能够生成一个包含相同输入引用的反向交易的更长尾,那么杨洋就会失去他的钱和他的产品。

图8-玛丽的双重开支攻击

那么,系统如何防止这种欺诈呢?

各块包含对前一个区块的引用,以便传播下一区块网络。因此,由于需要大量的随机猜测来解决把它放在区块链上的问题。也就是说吴亦凡正在与网络的其他成员竞争,以解决这个数学问题,这使他能够把下一个区块放在链上。即使他比其他任何人都早解决了,也不太可能连续解决2,3个或更多的问题,因为每次他都在与整个网络竞争。

那么,吴亦凡能用一台超级快的计算机来产生足够多的随机猜测来与整个网络竞争解决问题吗?

是的,但是即使有一台非常快的计算机,由于网络中有大量的成员,吴亦凡不太可能在执行双支出攻击所需的确切时间内连续解决几个区块的竞争。

他需要控制整个网络的50%的计算能力,才有50%的机会在其他节点之前解决一个区块,即使在这种情况下,他也有25%的机会连续解决两个区块。连续解决的次数越多,吴亦凡成功的可能性就越低。

比特币区块链系统中的交易受到数学竞赛的保护:任何攻击者都在与整个网络竞争。

图9-区块链交易安全原理

那么,比特币最初是从哪里来的呢?

为了对那些解决每个区块的数学问题的人给予奖励,平衡由于软件错误和钱包密码丢失而导致的比特币的通缩,于是那些为了获得这些比特币回报的活动被称为“采矿”——就像开采黄金一样。

这种奖励是推动私人节点挖掘算力的主要动力,从而提供处理比特币交易和稳定区块链网络所需的必要计算能力。

因为一个典型的计算机需要很长的时间来解决一个区块 (平均约1年),节点聚在一起,将每个节点必须尝试的猜测数除以节点数,以解决下一个区块。通过这种方式,小组能够更快地猜出正确的数字,并获得比小组成员之间共享的奖励更快的回报。

这样的团体叫做矿池.

其中一些矿池相当大,代表了整个网络计算能力的20%以上。这对网络安全有着明确的影响,如上文所示的双花攻击示例中所示。这些池中的一个可能获得50%的网络计算能力,只要一个区块占据的链越远,那么其中包含的交易就越安全。然而,其中一些获得大量计算能力份额的矿池决定限制其成员的数量,以保护整个网络安全。

由于技术革新和节点数量的增加,整个网络计算能力可能会随着时间的推移而增加,因此,区块链系统重新调整了数学问题的难度,以解决下一个问题,从而使整个网络的平均目标时间达到10分钟。这就保证了网络的稳定性和整体的安全性。

此外,每4年一次,区块奖励会减半,因此,随着时间的推移,挖掘比特币(运行网络)就变得不那么有趣了。为了防止节点停止运行,每个交易都可以附加小的奖励费,这些奖励由成功地将这些交易包含在区块中并解决其数学问题的节点收集。

由于这种机制,与较高报酬相关的交易处理速度通常比与低报酬相关的交易处理得更快。

这意味着,在发送事务时,你可以决定是否希望更快(=更昂贵)或更便宜(=花费更多时间)处理它。比特币网络中的交易费用目前非常小,如果与银行收费相比。

现在你已经大致了解了区块链是如何工作的,让我们快速地看看它为什么如此有趣。

1.你完全控制你拥有的价值,没有第三方持有你的价值或限制你访问它。

2.在地球上任何地方进行价值交易的成本都很低。

3.价值可以在几分钟内转移,交易能在几小时内被确认为安全,而非几天或几周。

4.由于任何人在任何时候都可以验证在区块链上所做的每一项交易,因此完全透明。

5.可以利用区块链技术来构建去中心化的应用,这将能够快速、安全地管理信息和转 移价值。

然而,有几个挑战需要解决的问题是:

1.交易可以匿名发送和接收。一方面,这保护了用户的隐私,另一方面允许网络上的 非法活动,因为机构无法跟踪用户的身份。

2.即使许多交易平台正在出现,以比特币换取商品和服务仍不是那么容易。然而,它 们正变得越来越受欢迎。

3.比特币和其他许多加密货币一样,非常不稳定:市场上没有那么多比特币可用,需 求也在迅速变化。比特币价格受到加密货币行业的重大事件或公告的影响。

4.这项技术还处于初级阶段。每天都开发新的工具来提高区块链的安全稳定性,同时 提供更广泛的工具和服务。

总的来说,区块链技术有可能使从广告到能源的几个行业发生革命性的变化。它的主要力量在于它不需要信任和权力下放的能力。这种优秀技术的许多案例正在出现(即创建一个完全分散的平台,该平台可以运行像Etalum这样的智能合约)。

也许,我们将重新认识价值的内涵。

本文首发#虎尔财经APP自媒体账号边际智库#已获得授权

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180307G1Q8R000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券