作者:黄马褂
时间:2018年9月28日
来源:https://zhuanlan.zhihu.com/p/45358326
Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one partyto another without going through a financial institution.
摘要:Purely,纯粹的,一种纯粹的电子现金版本,可以让在线支付直接从一端发送到另一端,不需要通过金融机构。
Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending.
数字签名提供了部分解决方案,这里是part of solution, 是指数字签名只是解决方案其中之一,不是全部。
但是主要的利益将失去,如果一个可信的第三方仍旧被要求去防止双重支付。
什么意思?虽然数字签名可以为避免双重支付提供部分的解决方案,但是,即便我用了数字签名这个办法,却还是需要第三方可信机构的介入,才能避免双重支付的话,那我这个系统还是没什么存在的意义。也就是说,我这个系统,搞出来就是不需要第三方可信机构,就可以避免双重支付的。
实际上,这个双重支付,就是比特币要解决的核心问题之一。通篇几乎都是围绕解决双重支付来讲的。
什么是双重支付,也就是双花?一笔钱花两次。举个最简单的例子,你就明白了。
比如,我去一个包子店买包子,我买了一笼包子,花了10块钱。我没有用现金支付,比如我用微信支付的,然后我向店员展示一下我手机上的支付记录,我说你看我付钱了啊,然后店员把包子给我,我拿走了。这时,假设这个包子店有很多个窗口,我又跑到另外一个窗口,还把我手机上刚才的支付记录拿给他看,说你看,我付钱了,请给我拿一笼包子。如果,这个时候,之前那个第一次收钱的店员没有告诉这个店员,我已经把包子拿走了,而这个店员面前也没有任何信息任何通知告知他我已经完成上一笔交易,那么他就很可能再给我一笼包子,因为他看到我的支付信息了嘛。这就构成了双重支付,就是我的一笔钱,买了两次包子,花了两次。理论上来说,如果这个包子店,窗口和店员足够多,而互相之间又没有足够及时的通讯机制,或者压根没有联系,那么我一个人,只花一笼包子的钱,是不是可以把这个店吃垮?哈哈
现实生活里面,如果我们使用现金,使用纸币,几乎不会出现这种问题。因为第一,你的10块钱现金,通过购物给了别人,你手上就没这张10块钱了。你都没有了,你怎么双重支付,你怎么能花两次。而且,纸币上有非常严格的防伪标识,你想自己复制一张一模一样的,第一,你没那本事,第二,就算你有那本事,你敢吗?
但是,在信息社会,在数字世界里,你的大部分钱只是一串数字而已,复制、修改、删除很容易。像我们整天用微信支付,用支付宝支付,无非就是我们账户上的数字和商家账户上的数字改来改去。比方说,你在某个银行有100块存款,你用微信支付吃了顿饭,花光了。你的存款余额为0了,就是银行把你的账户上的数字减掉100,改成0,在餐馆的账户上增加100。这笔账,这笔交易,对于你、餐馆、银行三方而言,无非就是靠银行这个中间机构在银行的服务器上和总账上修改了一个数字而已。那么,如果银行搞事情,或者我找了黑客,或者通过银行内鬼,把我账户再改成100,那是不是我的账上又有100块钱了啊,100块钱还可以继续再用。
又或者说,我在银行存了100块,结果银行把我账上的数字删了,给改成了0,那我岂不是秒变穷光蛋。虽然我只有100块也是穷光蛋。
为什么我们还放心把钱存在银行。因为信任银行,信任它会正确的记账,不会搞事情。但是,如果,万一,银行真的搞点事情呢,做点手脚呢?或者银行没搞事情,结果发生战争了,国家都被灭了呢?或者突然外星飞来一个陨石,把银行所有服务器全部都砸了呢?备份都不剩。很抱歉,这种情况,你破产了,你的钱要不回来了,没人能承认你当初在银行存了多少钱。
前面讲的就是这个双重支付,也叫双花。继续。上面抛出了问题,下面就该提解决方案了。
We propose a solution to the double-spending problem using a peer-to-peer network.
我们提出一种解决方案来解决双重支付问题,使用一个点对点网络。
The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work.
这个网络给交易打上时间戳,用什么方式呢,用这个方式,hash这些交易进入一个持续的链条,这个链条是hash-based,是基于hash的,然后是使用工作量证明的,通过这种方式构成一个记录,这个记录不能被修改,除非,重新来做这个工作量证明。
就是它把每笔交易打上时间戳,再hash他们进入一个链条,而这个链条也是经过hash的,同时也是基于工作量证明的。这样来确保这些记录不能被修改。如果要修改只能怎么做呢,只能重头到尾重新做一遍工作量证明。
这里要着重讲一下hash这个概念,什么是hash,hash一般翻译成散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,变换的过程,就叫hash,输出的结果,就叫哈希值。那输出的结果长度不够怎么办,那就用0和1来补全。
举个例子,我们知道比如微博、知乎上面,经常看到一些短网址,就是你把一个特别长的网络地址,转换成一个很短的网络地址,因为有的文章或者网址有字数限制,你把长网址整体复制粘贴进去,超出字数限制了,发布不了,我们就通过一些转换工具,把这个长网址转换为短网址,就可以贴进去了。而点击这个短网址,实际上也能打开原来长网址那个网页。这样类比一下就比较明白了。
所以比特币网络里面,每笔交易信息是经过hash的,然后串联交易的这个链条,也是经过hash的,经过hash的目的,就是让他不能被修改。因为这个hash结合了单向的加密,就是只能从原来的信息hash成新的信息,不能从新的信息反推回原来的信息,只能验证。
The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power.
serves as,充当的意思,最长的链条不仅充当了被见证的事件序列的证明,也充当了来自最大CPU计算能力池的证明。
直白点说,就是,通过最多的CPU计算能力,也就是通过最大量的计算,才产生这个最长的链条,这个最长的链条上面的信息,就是已经被认可的交易信息序列。
As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they’ll generate the longest chain and outpace attackers.
只要大多数的CPU算力被控制在不打算合作起来攻击网络的节点手上,这些算力就能合起来产生最长的链条并且超过攻击者的链条。
也就是网络只认可最长链条,只要最长链条不是攻击链条,那么这条最长链就是一直被认可的。而产生攻击链条,就是作假的链条,需要控制大多数的CPU算力才能实现。如果大多数的CPU算力都是被诚实的节点控制的,只要他们不联合起来造反,那么没有造反。
这个节点联合起来造反,经常被称为51%攻击。因为采用了复杂的POW工作量证明计算,所以更改交易记录将非常的耗时和需要大量运算,几乎接近无利可图,因为你得到的利益可能与你付出的成本对等,或者说几乎不可实现。这样从客观上实现了“不可更改”的目的,但是,如果多数人都认为应该修改交易呢?怎么办?
比如黑客盗了比特币,拿去交易了,如果根据“多数人赞同就是正义“这种观点,那这些交易都不是合法的,都应该撤销掉,就是交易记录应该被修改掉,但是,又根据工作量证明这个设计,这个要回滚这些交易的代价实在太大,大到几乎不可能实现,在这里,你就知道比特币系统其实也不是那么完美了吧。然后会出现什么呢,对,分叉。就是一些节点认为应该继续走,而另一些节点认为应该回滚,修改交易,这些本来诚实的节点,因为意见不统一,就会分叉了。
The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.
网络本身只需要最小的结构。信息尽最大努力被广播出去,节点可以随时离开和重新加入这个网络,接受在它离开期间产生的最长的工作量证明链条。
就是说,这个比特币网络系统结构很简单,为什么简单,因为没有了中心化的服务器,相关的各种成本,硬件啊、人工啊、房租啊、设备维护啊、电力啊,就会大大降低。你们只管尽可能广泛的传播每笔交易信息就好了,我有节点维护着呢,即便节点中途离开了,他也可以随时回来加入网络,而加入进来继续接受这个最长了链条就好了,一切还是正常。
本系列全部文章:
相关文章:
- None Found