因为2017年比特币价格飞涨,数字货币挖矿也得到了极大的关注。在任意一个游戏爱好者都可以用个人GPU挖矿的同时,专业矿工已经通过运营大批量矿机来赚钱。这样的事实对我们有很大的吸引力。
但是新接触的人往往会有很多疑惑,比如:挖矿是在做什么?为什么有新闻爆出:挖矿可能会消耗超过一个国家居民的耗电量?挖矿背后有什么经济原理?在虚拟货币的生态系统中有哪些角色?
Bminer团队将发布一系列博客深入探讨挖矿这件事。我们希望通过这种方式帮助用户建立对整个生态系统,以及对未来发展的深入认知。
开创性的发明
比特币白皮书开创性地描述了一种去中心化的电子支付系统。换句话说,这个系统允许交易双方安全进行代币转账。比方说:当Alice在网络中成功的向Bob转移了一个代币,这个系统会保证:
有效性。 Alice 必须有足够的代币余额可转移给 Bob。
完整性。 Alice 不多不少地转移给 Bob 了一个代币,这笔交易被确认后将不可被更改。
不可否认性。 网络中的任何人都能任意查看和验证交易,因此,Alice,Bob或其他方都不能否认已经发生过的交易。
一致性和前瞻性。 最终,所有参与者都可在交易发生后的一定时间以内,按顺序查看网络中发生的所有交易。
图表1: 有效交易和可能存在被攻击的案例。攻击包含重复支付,抵赖交易,修改交易金额,透支金额。比特币网络从设计之初就可防止上述各类型的攻击。
整个网络最终形成了一个分布式不可修改的账本。所有的参与者都能够以相同的顺序查看到网络中发生的所有交易。
自然而然地,这项技术被用于实现分布式账本和支付网络 ---- 当每个参与者都可以看到所有的交易信息,并有能力计算出每自己和其他参与者的账户余额的时候,我们就能很直接地实现像比特币这样的支付网络。
一个分布式不可修改的账目是相当强大的。它的底层技术,被称作区块链。区块链技术可以让我们的食品更安全,打击人口贩卖,改变医学研究等。以支付网络为例,以下部分描述了区块链如何解决支付问题。
传统方式:中央集权
最简单的方式是由一个权威机构发布总账。每一个网络中的组织都信任这个权威机构。
这个模型和现实世界的模式相似。基本流程就是一个权威机构(比如:银行)负责验证和整理所有的信息,每一个网络中的参与者都可检索和验证从权威机构来的所有的交易。
图表2 描述了一个支付系统和权威机构的交互流程。
图表 2: 用一个中央集权的机构来构建支付网络。用户提交信息到权威机构,权威机构负责验证所有的交易并且整理。权威机构签署和发布经过确认的交易信息。
上述模型足够简单,然而缺点是如果中心节点(中央集权机构)失效,那么整个系统就失效了。而中心节点的职责就是保证账目的安全。由于整个网络非常值钱,我们毫不意外整个系统是需要大量的钱来填补支出和阻止别有用心的人黑进来窃取有价值的信息。
区块链:分布式不可修改账本
不再需要权威机构,区块链将权力赋予给所有的参与者。整个网络不再有单点验证的问题,但也产生了2个新问题:
如何防范恶意参与者加入无效交易信息甚至篡改它们?
如果网络中存在冲突的信息,如何协调?
区块链巧妙的利用密码散列函数来解决上述问题。加密散列函数的工作方式类似于封住信封口盖在融蜡上的邮票。如果您没有原始邮票,很难伪造邮票,但很容易验证邮票及其保护的内容是否完好无损。特别的是,密码散列函数需要一个字节列表并输出一个确定性的,固定长度的摘要。改变一个字节会使加密哈希函数的结果非常不同。没有像SHA-256这样的安全加密散列函数了,获得符合某些标准的摘要的唯一方法是枚举输入并使用函数计算结果。
从更高的层面上来看,比特币网络是这样运转的:开始交易时,发起者(例如Alice)首先将交易广播到网络,一些参与者(即“矿工”)会持续接收这些交易,验证交易并将他们封装在一个区块里。然后枚举下面的公式中的随机数,使得输出的值具有一定数量的零:
其中“||”表示串联两个字节序列。
挖矿程序一旦找到满足公式的随机数,就会将该块广播给网络。网络中的其他参与者将重新验证区块中的每一笔交易并且决定是否接收这个新产生的区块。这个流程通常被称为“Proof-of-Work” ,它需要做大量工作来证明该区块的合法所有权。 一旦该块在大部分网络中被接受,交易信息就被存在了区块链里。
图表 3: 这是区块链的前3个区块,区块通过虚拟签名串在一起。
值得注意的一点是,因为区块包含了前一个区块的序列从而自然的形成了区块链。 想要篡改区块中的任意一个交易,篡改者需要计算它所在块的匹配序列以及所有随后形成的区块。
区块链基本不可篡改,因为代价非常昂贵。 在写这片博客的时候,挖掘一个区块(包含12.5 BTC的奖励)在美国可能至少需要40,000美元。假设网络中的其他人都没有在挖矿, 篡改1笔1小时前发生的交易需要重新挖掘约6个区块,这相当于24万美元。
另外一个问题是,矿工们会看到不同待确认的交易,假如矿工在相近时间内挖出了不同的区块,为了协调处理,区块链采用“最长链取胜”的规则,即参与者始终支持最长的那条链,因为最长说明得到了更多次数的校验。因为形成区块的时间(~10分钟)比网络延迟(以毫秒为单位)长得多,所有的参与者有足够的时长转移到新的区块上,因此整个网络是始终收敛而不是发散状。
下期内容简介:
区块链巧妙地使用密码学实现了分布式不可修改的账本,这为我们的生活带来了变革的机会。
这篇博客文章描述了区块链技术背后的机制,在本系列的下一篇博客文章中,我们将深入挖掘经济学,以了解生态系统的激励结构。
网友评论