课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,关于区块链和虚拟货币的技术发展已经非常迅速了,而且为了快速填补这方面的人才缺失,达内也开设了关于区块链技术的培训课程。下面,我们就一起来了解一下,到底什么是区块链吧。
非对称加密已经存在很长一段时间了,非对称加密包含了公钥和私钥。我们使用公钥加密并使用私钥解密,并且无法从这两者中的一个中获得另外一个。因此,在使用非对称加密技术时,我可以向某人发送一条信息,比如“我转账 100 美元”,每个人都知道它是我发送出去的,而且中间没有被篡改过。
假设有十个人,他们每个人都拥有一定数量(假设是美元)的新货币。他们每个人都确定(并确信)一个叫“X”的人支出了 30 万美元,但 X 是否真的拥有 30 万美元还不得而知。为了弄清楚情况,我们需要知道每个人的余额。我们只需要将他所有收入交易加起来,并扣除所有支出交易,这样就能得到余额。为此,我们需要了解有关收入和支出的信息,于是公共账本出现了。有了公共账本,我们就知道某人是否真的有能力支出 30 万美元。
比特币:开端
还有一个问题——如果我把所有钱同时发给两个人会怎样?这个问题被称为双重支出(double spending)。当然,这两个人不应该同时收到我账户里的钱。让他们自己商量谁将收到我账户里的钱?这样做不方便。通过查看时间戳来确定我把钱先转给了谁?这样做不保险。不过,还是有一个解决方案——对交易进行流水化。如果这样做了,那么很明显一笔付款发给了 John,那么就无法再将它发给二个人,因为我没有更多的钱。但现在还不清楚谁将决定交易的顺序。在银行和其他集中式系统中,银行本身就是受托人,也就是单一故障点和信任点,负责与一个接收人沟通。
在区块链中,不存在这样的单个受托人,取而代之的是网络中的大部分参与者(当然,这是指将整个网络作为一个整体,因为你不能相信每个个体参与者,因为其中肯定有一些骗子)。我们假设网络不受一个人的控制,并且大多数参与者严格按照自己的经济利益行事。
但流水化交易仍然存在问题,我们还需要在网络参与者中达成“共识”。这个问题需要通过共识算法来解决,这是区块链领域的一个关键算法。
在讨论特定的共识算法之前,先让我们来说说臭名昭著的区块链的“区块”。区块是一种技术度量,是批处理的一个实例,因此我们可以以“批量”的方式计算多个交易的共识,并且网络的开销成本可以通过多个交易来“分摊”。
区块内交易的顺序由网络参与者(即生成该区块的人员,也称为“矿工”)定义,但区块本身的顺序则由共识算法来确定。共识算法已经存在了相当长一段时间。例如,多主 NoSQL 系统中的 Paxos 和 Raft 等算法就属于共识算法,但它们并不适用于拥有数百万个参与者的网络。
比特币的工作证明(proof of work,PoW)共识算法在刚开始时被认为是革命性的。许多网络参与者(矿工)同时生成新区块,那么就有必要确定区块之间的顺序。为了让一个区块成为链中的下一个区块,矿工必须进行非常耗时的散列计算。对一个区块(随同一个随机串,一个递增的数字)进行持续的散列计算,直到散列值看起来像是一个符合某些条件的大数,例如包含 10 个前导零。这需要数十亿次的散列操作,这一过程代表矿工“证明”该区块的存在。但检查矿工的工作是否正确却十分容易——只需要再进行一次散列操作。需要注意的是,整个网络(其中包括成千上万的矿工)平均在 10 分钟内(比特币生成区块的平均间隔)只可以生成一个区块 。这大大减少了出现冲突的可能性,即同时有两个或多个区块作为下一个区块。
但是,冲突的可能性仍然存在。于是就有了如下规则——网络参与者接受形成最长链的那个区块。
事实上,它不是一个链,而是一个有许多分支和链的有向无环图(DAG)。链通常被称为“共同历史”(它是最长的链)。共识不会立即达成,至少需要在生成几个区块之后,所以必须等待一段时间。为了防止比特币的双重支出,人们通常会等待六个区块(这需要一个小时)。
除了交易数据之外,一个区块还包含对前一个区块的散列值。因此,过去的某些内容不可能被修改,因为如果修改了就会使其后的所有散列无效。在挖矿过程中,你将获得奖励,也就是新的资金收益!否则的话,该如何将资金引入到这个系统呢?如果说资金必须发放给某人,那么这个人就变得很特别,这与去集中化的想法是相矛盾的。为挖矿者发钱似乎是一种合乎逻辑和可接受的解决方案。
顺便说一些关于挖矿的事。矿工的主要工作是对新区块进行散列计算,这里没有使用非对称加密技术,因为只需要在将交易添加到区块之前检查交易。比特币使用 SHA-256 散列,以太坊则使用 Keccak-256。如果你是独自挖矿,那么在生成一个区块之前,需要很长的时间(每十分钟产生一个区块,而你的竞争者有成千上百万)。因此,矿工需要聚集在一起形成矿池。在矿池中,奖励在参与者之间通过各种方式进行分配,这意味着你有可能会更经常地获得奖励。在这种情况下,风险和收益都是“分散”的。随着时间趋于无限,来自矿池开采奖励的数学期望值(无视矿池佣金)等于独自挖矿的数学期望值。
到目前为止,我们主要介绍的是网络参与者之间的数据交换,并没有深入太多细节。要记住,数据通过网络进行点对点交换,让每个挖矿者都能看到交易。
这就是比特币区块链技术。
作者:Alex
译者:无明
节选:infoq
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!