当前位置: 主页 > 比特币 > 会议活动 >

【比特币白皮书】什么是比特币?解读比特币白皮书让你更容易理解



  【比特币白皮书】什么是比特币?解读比特币白皮书让你更容易理解,2018年区块链概念蓦然火了起来,而使用了区块链技术的比特币因其不断飙升的价格更加吸引人的眼球。那么究竟什么是比特币?本文通过解读中本聪的比特币白皮书,让大家对比特币以及作为其底层技术的区块链能够快速理解。引用部分是白皮书原文翻译,随后是解读。

  因为白皮书本身较长,概念又比较绕,再加上解读,文章就比较冗长,为避免观者疲劳,我会分成两个部分介绍,此是第一部分。

  

  【摘要】本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另一方,中见不需要通过任何金融机构。虽然数字签名部分解决了这个问题,但是任然需要第三方的支持才能防止双重支付的话,那么这种系统也就失去了存在价值。我们在此提出了一种解决方案,使现金系统在点对点的环境下运行,并防止双重支付的问题。该网络通过随机散列对全部交易加上时间戳,将他们合并入一个不断延伸的,基于随机散列的工作量证明的链条作为交易记录,除非全部的完成工作量证明,负责形成的交易将不可更改。最长的链条不仅将作为被观察到的事件序列的证明,而且被看做是来自CPU计算能力最大的池。只要大多数CPU计算能力没有打算合作起来对全网进行攻击,那么诚实的节点将生成最长的、超过攻击者的链条。这个系统本身需要的基础设施非常少。信息尽最大努力在全网传播即可,节点可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。

  其实早年一帮极客就已经在琢磨一个去中心化的支付系统,但是这个系统有两个问题一直困扰着他们。第一,是一个去中心化的P2P系统。第二,在这个去中心化的支付系统中如何解决双重支付的问题。在白皮书的摘要中,中本聪就给出了这两个问题,而整篇白皮书正是围绕解决这两个问题的技术方案展开的。

  在比特币的白皮书问世之前,已经有了关于去中心化的p2p系统比较完善的解决方案,所以白皮书的重点就都放在了在这个去中心化的系统中如何解决双重支付的问题。

  值得注意的是,传统的P2P系统需要一个第三方来支持,比如我们最常用的迅雷下载就是一个P2P网络,它需要一个中心化的服务器帮助点对点来建立连接。而比特币的系统中不存在这么一个第三方,这样“一个去中心化的P2P支付系统”就变得很容易理解了。

  比特币引入了基于时间戳的随机散列,并且让按照时间的先后顺序来排列,以此来解决这个去中心化P2P支付系统中的双重支付问题,由此人们将这个技术形象的称为“区块链”。

  摘要中“形成的交易记录将不可更改”,“这个系统本身需要的基础设施非常少”也是两个很大看点,接下来我们也会详细介绍。

  1. 简介

  互联网上的贸易,几乎都需要借助金融机构作为可资信赖的第三方来处理电子支付信息。虽然这类系统在绝大多数情况下都运作良好,但是这类系统仍然内生性地受制于“基于信用的模式”的弱点。我们无法实现完全不可逆的交易,因为金融机构总是不可避免地会出面协调争端。而金融中介的存在,也会增加交易的成本,并且限制了实际可行的最小交易规模,也限制了日常的小额支付交易。并且潜在的损失还在于,很多商品和服务本身是无法退货的,如果缺乏不可逆的支付手段,互联网的贸易就大大受限。因为有潜在的退款的可能,就需要交易双方拥有信任。而商家也必须提防自己的客户,因此会向客户索取完全不必要的个人信息。而实际的商业行为中,一定比例的欺诈性客户也被认为是不可避免的,相关损失视作销售费用处理。而在使用物理现金的情况下,这些销售费用和支付问题上的不确定性却是可以避免的,因为此时没有第三方信用中介的存在。

  所以,我们非常需要这样一种电子支付系统,它基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与。杜绝回滚支付交易的可能,这就可以保护特定的卖家免于欺诈;而对于想要保护买家的人来说,在此环境下设立通常的第三方担保机制也可谓轻松加愉快。在这篇论文中,我们将提出一种通过点对点分布式的时间戳服务器来生成依照时间前后排列并加以记录的电子交易证明,从而解决双重支付问题。只要诚实的节点所控制的计算能力的总和,大于有合作关系的攻击者的计算能力的总和,该系统就是安全的。

  白皮书的简介中介绍了前面提到的“形成的交易记录将不可更改”,可以说这是比特币一个很大的特点,也是被广泛认可的一个特点,正是因为这个特点,比特币才能运用技术手段解决去中心化系统中的信任问题,杜绝作弊行为。但是这就出现了一个很有趣的现象。

  简介中提到了“不可逆的支付手段”如何保护商家的利益,但是结合我们实际的生活经验来看,我们作为消费者网购一件商品,收到以后我们对这件产品并不满意,退货后我们的货款是可以退回来的,如果我们使用了这种“不可逆的支付手段”,那就意味着无论我们对于这件商品是否满意,退款是没有可能的,货再烂也得收着。

  我们再来看看转款的例子,我们给别人转款的时候手滑,不慎按错了号码转错了账户,在一定时间内这个记录可以回滚,我们转错的钱还是可以回到自己的手中的,但是如果用了这个“不可逆的支付手段”,那我们转错的钱就真的变成了人家的钱。所以如果在使用这个“不可逆的支付手段”后,我们遇到了上述两种情况,那我们的权益要怎么保护就成了问题。

  从上面的两个例子可以看出,“形成的交易记录将不可更改”是很大一个特点并受到追捧,但是这个特点同时也给这个系统带来了很大的一个缺陷。

  从这一点考虑出发,我们可以得到一个结论:作为比特币底层技术的区块链不是万能的,不是随便一个应用场景都需要用到区块链技术。在目前这个近乎狂热的环境下,我们都应该给自己降降温,在面对一个项目时,我们要仔细思考一下,这个项目究竟需不需区块链。

  2. 交易  我们定义,一枚电子货币是这样的一串数字签名:每一位所有者通过对前一次交易和下一位拥有者的公钥 签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。而收款人通过对签名进行检验,就能够验证该链条的所有者。

  

  这张图告诉我们,比特币其实就是一条交易记录,那我们如何保证这条记录不被篡改,这就用到了非对称加密算法。

  说的简单一点,“妈给了一块钱”这条记录,意味着你现在拥有一块钱,但是这条记录有可能被别人篡改,所以你妈利用她自己的私钥(private key)行使花费自己资产的权力,用你的公钥(public key)(这个公钥就是我们常常听到的比特币钱包地址)在这条记录后面进行加密,而这条记录只有你的私钥(private key)才能打开,因为你的私钥只有你自己知道,这也就意味这条“妈给了一块钱”的记录现在只属于你自己。

  现在你也有了自己的资产,你也可以创建一条新的记录,用自己的私钥(private key)来行使花费自己资产的权力,用下一个人的公钥(public key)加密,将这条记录支付给下一个人。如此一个记录一个记录的传下去,就形成了一个链条。

  该过程的问题在于,收款人将难以检验,之前的某位所有者,是否对这枚电子货币进行了双重支付。通常的解决方案,就是引入信得过的第三方权威,或者类似于造币厂(mint)的机构,来对每一笔交易进行检验,以防止双重支付。在每一笔交易结束后,这枚电子货币就要被造币厂回收,而造币厂将发行一枚新的电子货币;而只有造币厂直接发行的电子货币,才算作有效,这样就能够防止双重支付。可是该解决方案的问题在于,整个货币系统的命运完全依赖于运作造币厂的公司,因为每一笔交易都要经过该造币厂的确认,而该造币厂就好比是一家银行。

  这里面就提出了最重要的防止双重支付的问题,也就是你妈在创建“妈给了你一块钱”这条记录时,是否也创建了“给了老公一块钱”这么一条记录,那么这两条记录究竟哪一条是可信的就成了问题,如果甄别不出来,那整个系统就会乱套。在传统的支付体系当中,为了防止这种情况,就直接引入一个可以信任的第三方(比如支付宝,银行),而这又与这个比特币去中心化的理念相悖,所以中本聪在下面提出了解决双重支付问题的关键。

  我们需要收款人有某种方法,能够确保之前的所有者没有对更早发生的交易实施签名。从逻辑上看,为了达到目的,实际上我们需要关注的只是于本交易之前发生的交易,而不需要关注这笔交易发生之后是否会有双重支付的尝试。为了确保某一次交易是不存在的,那么唯一的方法就是获悉之前发生过的所有交易。在造币厂模型里面,造币厂获悉所有的交易,并且决定了交易完成的先后顺序。如果想要在电子系统中排除第三方中介机构,那么交易信息就应当被公开宣布,我们需要整个系统内的所有参与者,都有唯一公认的历史交易序列。收款人需要确保在交易期间绝大多数的节点都认同该交易是首次出现。

  “从逻辑上看,为了达到目的,实际上我们需要关注的只是于本交易之前发生的交易,而不需要关注这笔交易发生之后是否会有双重支付的尝试。”这句话很重要,是如何在去中心化支付系统中解决双重支付问题的核心。

  依然延续前面的例子,你妈在创建“妈给你一块钱”和“给老公一块钱”这聊天记录的时候,一定是存在先后顺序的,不管间隙再怎么短,其中的一条记录一定是在另一条记录之前创建出来的,那么在这个系统中,我们只认可先创建出来的那条记录为有效记录将之保存在系统中。在这条有效的记录之后所创建出的记录统统证明为无效即可,由此我们就可以解决双重支付的问题。

  如果想要在这个去中心化的系统中来证明那一条记录是先创建出来的,是有效的,光有你和你妈两个人是不够的,所以在你妈先创建出“妈给你一块钱”这套记录后,你第一时间就将这条记录告诉你的七大姑八大姨(每一个对应着区块链中的一个节点),让大家共同来见证,“妈给你一块钱”这条记录是有效的,并分别把这条记录保存下来,那你就从你妈那里成功获得了这个资产。在这之后你妈又创建了“给老公一块”这条记录,大家就可以不用去理会,将之视为无效即可,因为在此之前,大家都知道你妈已经将她的这部分资产转交给了你。

  3. 时间戳服务器

  本解决方案首先提出一个“时间戳服务器”。时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络的发帖一样。显然,该时间戳能够证实特定数据必然于某特定时刻是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强,这样就形成了一个链条(Chain)。

  

  为了便于理解我们就无视“时间戳服务器”这个概念,接着上面的例子来讲。

  前面我们提到了,“妈给你一块钱”这条记录之所以被视为有效,是因为大家都参与了见证,证明这条记录是先创建出来的记录,那我们接下来该干什么了,就是要给这条记录标注一个时间,在这个时间之后你妈再创建出“给老公一块钱”的记录我们就将之视为无效。

  但是问题又来了,你和你妈同在一个地方,但是你七大姑在东北,八大姨在美国,这时间不能统一呀。所以在比特币系统当中,时间来自于连接的其他节点时间的中位数,也就是你、你妈、你七大姑和八大姨你们几个的时间取一个中位数来给记录做时间标注。

  那如果这个时间和现实世界的时间相差太多怎么办,其实也没关系,我们可以将之看做是比特币系统中的自有时间。只要以后的交易是按照比特币系统中的自有时间来排列,系统就不会受到影响。

【版权声明】该文章由本站整理于网络的相关信息,本站不拥有所有权,不承担相关法律责任。


相关资讯

站长统计