Author

Topic: 2017-07-27 胡翌霖 比特币:通俗介绍 (Read 370 times)

copper member
Activity: 94
Merit: 1
5.发行:比特币挖矿vs.央行
话说刘备究竟是发钱给关羽还是张飞,这件事情和黄忠马超等人有什么关系呢?他们帮着记录和打包有什么好处呢?当然要有好处,才能让这个系统保持运转。一方面,刘备发钱的时候,除了关羽收到的部分之外,一般需要附带一定的手续费,最终谁第一个完成打包,把刘备的这笔交易记录包含了进去,那么他就能获得这些交易中附带的所有手续费(当然,如果是一群人合力完成打包,还需要内部再去瓜分)。如果刘备特别抠门,一点手续费不加,那么那些参与打包竞赛的人完全可以装作没看见,不帮你打包,直到有谁大发善心免费帮忙记录,交易才可能完成确认。而手续费给的多的,往往大家都抢着记录。所以给足手续费的人,才能保证在大约10分钟内就得到第一个确认,给的少的就不保证了。具体给多少合适,就取决于相应时间的网络环境了,当然一些钱包客户端会智能给出参考建议。

另外,在比特币发展初期,交易不是很多,没多少手续费,怎么激励大家参与打包竞赛呢?中本聪又非常聪明地,把“货币发行”这个环节嵌在这里了。中本聪规定,打包成功的人,除了能获得这个包内所有交易的手续费之外,还有额外的奖励,这奖励的比特币是凭空产生的新币。这笔新币也会自动发送到在打包游戏中胜出的用户所提供的地址里。在最初即便没有实际的交易发生,打包游戏也始终以10分钟一包的节奏进行着,这些新币奖励就是比特币最初的来源。

在最初的大概四年内(以1个包10分钟来计算,因为比特币的加速发展,实际上是3年多点),每个打包成功的用户可以获得50个比特币的奖励,第二个四年减半(25个),之后每四年奖励都减半,目前的新币奖励是12.5个。我们知道等比数列是很快收敛的,再过十几二十年新币的产出相对于手续费可能就微不足道了。

这就让算力竞赛顺便也达成了央行的职能,那就是货币的发行。现代信用货币的发行其实是贫富分化的源泉,事实上越是接近发行源头的人,比如金融家,就越是容易钱生钱,靠乘法赚钱,而远离中心的人,就只能靠加法赚钱。另外,任何央行总是会把钱越发越多,货币总是越来越贬值,美其名曰刺激消费,能讲出很多钱必须贬值的经济学道理来,但归根结底无非是因为人家大权在握,你不服也得服。

而比特币通过这种无中心的发行方式,让任何拥有算力的人,都可以获得新币。而且新币的增发也不是少数的掌权者任性决定,而是从一开始就固定好了一个收敛的等比数列,最终保证无数年内比特币生成的总量有一个确定的上限(2100万)。

当然,被央行经济学洗脑的人会觉得这种模式不对,认为越来越贬值的货币才是好货币,越来越稀缺的货币就很糟糕。我不在这里争论这个问题。但无论如何,如果你希望手里的钱不贬值,希望货币始终保持稀缺,那么你永远指望不上任何一个央行会发行这样的货币,只有比特币实现了这种梦想。

鉴于可以从算力竞赛中获取新币奖励,所以比特币算力竞赛又被称作“挖矿”,新币的获得更像淘金而不是依靠印刷厂。要参与挖矿,不需要向任何人申请,只有在任何能连接互联网的地方布置相应的计算设备,就可以开工了。


比特币矿场

6.市场:比特币交易所vs.外汇/股票交易所
以上基本上把比特币的基本原理讲完了,总结一下:拥有比特币,本质上就是拥有若干个有余额的“账号”,这“账号”由一对“私钥——公钥”组成,公钥公布给别人,让别人往里头汇钱(或者参与挖矿获得新币),私钥相当于只有自己掌握的图章,用来签发交易,从而动用自己的余额给别人汇钱。所有的交易都由整个比特币网络记录,形成“公共账本”即“区块链”。这个公共账本怎么记账,则通过“算力游戏”决定,每次算力游戏胜出的人,有权打包一组交易记录,并获得这批交易中的手续费,以及相应的新币奖励。这种靠参加打包游戏赚取新币的活动,叫做“挖矿”。

简单来说,维持比特币交易系统的可靠性,只需要通过私钥签发和记账竞赛这两大类活动,不需要从央行到银行柜台这一套中心化的金融体系来维护。

但是当然,随着比特币网络的发展,许多专门的中间机构也会出现,承担相应的角色。

比如挖矿方面,最初都是电脑玩家用个人电脑各自挖矿,而后来随着算力游戏越来越难,挖矿越来越需要合力完成,于是便有了“矿池”,好比军营那样,把战斗力集中起来一起挖,挖到之后再瓜分。专业的矿池和大型矿场已经成为比特币“矿业”的主力。

再比如交易方面。比特币的交易本来是不需要中介的,不需要通过银行才能跨国汇款,只要两人连上网,就随时可以交易。如果我希望从你手里得到比特币,那就把我的公开地址发给你,让你往里头汇比特币就行了——当然,我再通过什么方式付给你相应的人民币或其它商品,来等价交换,这就是我们两个自由协商的事情了。我希望花掉手里的比特币余额,那么也同样只要找到另一个希望获得比特币的人,和他商量好怎么交换,你付币他发货就好了。比较高端的用法还有用多个私钥管一个账户,进行“多重签名”,这里不多讲。

比特币交易不需要中介,但并不是说不能有中介,中介是自由市场必然会形成的角色,比特币市场自然也不例外。比如比特币和人民币的兑换,我们当然可以随时私下联络完成交换,但有需求的人多了,大家希望以更快的速度更合理的价位完成交易,那就有了中介的余地。提供集合竞价的交易所当然也就必然产生。交易所先帮助客户寄存人民币和比特币,客户向交易所报价,然后交易所自动帮报价匹配的客户之间达成交易。交易所最新匹配完成的交易报价,就形成了“市场牌价”,这个牌价可以给其它私下交易提供参考意义,但也没有什么决定性,你要是有本事,现在也可以在交易所之外把1个比特币卖出100万,只要有人愿意买就行了。

这就是交易所的原理,其实和比特币无关,其它各种外汇交易所、股票交易所之类的,也都是类似的道理。之所以还是提一下,是因为太多人有误解,以为比特币就是在交易所里的某种东西,而不是脱离交易所能够被你自己全权掌握的东西。这很可能是因为流行的股票交易所给你带来的错觉,因为我们普通老百姓一般不能把股票从股票交易所里“提出来”,不能在交易所之外私下交易股票。这其实也不是股票本身的特性,而是政府为了管制你,大庄家为了收割你,才建立出来的规则。无论如何,交易所顶多只是代管、寄存的功能,比特币交易本身从来不依赖于交易所的存在。

由于比特币交易所最初是在自由市场中自发形成的,而不是由政府或金融家自上而下设立出来的,所以一开始就明显带有自由的特性。比如常见的外汇交易所或股票交易所都不是24小时开通的,甚至还有诸如当天买完隔天才能卖之类的规则。比特币交易所跨国界、全天候、无涨跌停限制等特性令人瞩目,但其实也是理所当然的,反倒是传统交易所的各种约束其实没什么道理。


自由的市场,愿意买的找到愿意卖的,就能达成交易
 

最后附上最近关于分叉问题的评论:

7月24日 08:30
一些人危言耸听搞得好像分叉是比特币末日一样,也许他们关心的只是下个月的期货合约会不会爆仓,但如果从长远发展来看,分叉没那么可怕,甚至是好事。
我一直都希望,比特币成长历程中应该有一次真正的分叉。毕竟分叉是去中心化自由之路的永远不可能摆脱的可能性,避免了这次分叉危机,还会有下一次。与其等真正成熟普及之后再恐惧分叉,不如早点做个演练。分叉完之后社区怎么组织,交易所怎么应对,普通用户怎么操作,来过一次之后大家心里才有底了。 ​​​​

7月25日 21:47
关于比特币分叉后的所谓“重放攻击”,也有危言耸听的,我看到有人说为了规避,先要把币存在交易所里,而不要留在自己钱包里。说出这种建议的人,不是愚蠢透顶,就是别有用心。无论任何时候,自己掌握的私钥冷钱包永远是比特币最安全的保存方式,没有之一。
所谓重放攻击,无非就是因为分叉的两支拥有相同的私钥、公钥和交易格式。你在分叉1上掌握A地址的私钥,就等于在分叉2上也拥有A地址。一笔从A地址发往B地址的交易,同时可能在两个分叉上被认可。如果你只想在分叉1上从A发到B,但网络上的捣蛋鬼可以“帮助”你在分叉2上也从A发到B,这就是重放攻击。
所以规避重放攻击很简单,你在1上发起A到B的同时,在2上发起A到C,保证A、B、C三个地址都是你控制的私钥。如果这两笔交易都成功了,那么你的币就成功分叉了,再也不怕重放攻击了。如果被重放攻击了,那也无所谓,两笔交易都被发到B上了,但B还是属于你的,再试一次就行了。只要你自己掌握私钥,币永远丢不了。
当然,如果你希望分叉后第一时间马上卖币,那恐怕还是要事先存在交易所。但只是为了自己持有安全考虑,永远是自己掌握私钥最安全,没有例外。
copper member
Activity: 94
Merit: 1
文/胡翌霖 2017年7月27日
原文链接 https://yilinhut.net/2017/07/27/6872.html

吹了那么多年比特币,文章写了不少,不过仔细一想,其实还没有写过一篇对比特币基本原理的通俗讲解。虽然网上随便搜索能找到一大堆,但也没有发现特别对我胃口的。在上海战高温期间心血来潮,想写一篇试试。

(这篇文章显然不应景,最近火热的是比特币分叉危机,关于这个问题,我最近发了两篇微博,附在最后)

我希望以尽量通俗的方式讲清楚比特币的基本原理,不过多涉及诸如比特币值不值钱,是不是骗局之类的问题,这些辩护性问题我早有文章谈过。

许多人对“比特币”的困惑,与这个概念本身的多义性有关。“比特币”可以指一种货币的计量单位,可以指一种开源软件,也可以指一套网络协议或相应的网络系统等。

对比来看,“人民币”就没这样的歧义了,我们一般说的人民币就是指货币的计量单位,就是“钱”,当然在“钱”背后还有一系列东西,比如钱的容器(钱包、银行卡),汇兑和结算机构(银行)、发行和监管机构(央行、印钞厂)等等一系列事物。

“比特币”这一个概念笼统地涵盖了从钱、钱包、银行到印钞厂等一整套事物,那就难怪它显得难以捉摸了。如果把这些个环节分条缕析地展开来谈,那么比特币也不会比人民币更难理解。

1.计量单位:比特币vs.元角分
如果仅仅就货币单位而言,其实没啥难理解的,无非就是一个计量符号罢了,比如今天1美元能换6.8人民币,1盎司黄金能换1240美元,1瓶茅台酒2000来块人民币,1手茅台股票473人民币……类似地,1个比特币能换19000人民币,和以上例子没什么本质差别。

就“计量单位”而言,“均匀分割”是上述比特币、黄金、人民币、股票甚至茅台酒等等事物的共同点。所谓均匀分割,指的是首先它能够分割与合并,1块2公斤的黄金可以比较容易地分割成2块1公斤的黄金,价值基本不变。2块钱人民币能分割成2个1块钱,价值基本不变。显然不是每一种商品都是这样,比如一颗2克拉的钻石切割成两块,价值就变了,1+1≠2。

同样是分割,分割有多困难,能达到多精细,分割后的均匀性等,都有所不同。比如要把10元人民币兑换成两张5元的,随便找个街头小贩就能完成,但要把一块黄金换成或切成两块一样重的,就需要找专门的地方才能做到,而且需要一定的成本。另一方面,人民币分割下去最小的单位是1分,黄金可能能切割得任意小,但也取决于工艺水平。

均匀性方面,金银有成色问题,同样重量的黄金未必价值完全相等。人民币理论上完全等价,但不同的“容器”也有所差异,比如公交车上只收钢镚,自动存款机只收百元新钞,这家店允许刷卡,那家店允许支付宝,等等。同样是“1块钱”,存在银行卡里的和放在支付宝里的未必等同。

货币本质上也是可以在市场上进行交换的一种商品,但并不是每种商品都适合做货币,“均匀分割”就是货币的基本特征。越是容易分割,分割后越是均匀同质,越是容易计量,那么就越是适合成为货币,用来衡量其它商品的价值。

从这方面看,货币的数字化无疑是大势所趋,毕竟要比起均匀分割的能力来,任何实物都比不上抽象的数字。不需要切割,也不需要找零,想怎么分就怎么分。

目前来说,比特币可以分割的最小单位是“聪”,1比特币=1亿聪。这个精度在现在肯定是绰绰有余,至于将来如果需要,在社区共识的情况下很容易升级,再切分成比聪更小的单位也是可能的。

值得注意的是,在这里“比特币”作为计量单位,其实是有严重混淆的,因为比特币其实缺乏量词,严格上说只有“聪”算是个量词。我们知道人民币的量词是元、角、分,美元则用“刀”,金银用“两”,俄罗斯叫“卢布”,英国用“磅”……我们计算价格的时候,一般会说这件东西卖“100元”,或者说“100元人民币”,而不是说“100人民币”。

之所以这个混淆值得一提,是因为这的确给许多新手带来了实际的误会,那就是——“比特币太贵了!”当他们这么说的时候,往往指的不是整个比特币网络或其总市值太贵了,而是指它的“单价”太贵了,都一万多块钱了,要不咱们还是买山寨币吧,你看狗狗币才1分钱……但事实上这所谓的单价,取决于“单位”的设定,而这单位是任意设定的。比如我们把比特币的最小量“聪”叫做“分”,然后10聪=1毛,10毛=1元,那么现在“1元比特币”也才1分多点人民币。


比特币可以随意切分

2.钱的容器:比特币钱包vs.银行卡
第二种可能被称作比特币的东西,是比特币的客户端,比如去下载官方开发团队的客户端,可能就是类似这样的一个文件:“bitcoin-0.14.2-win64.zip”,当然,安装完成后,它的名字可能叫“比特币钱包”、“bitcoin-core”、“bitcoin-qt”等等。那么这个软件是做什么的呢?

它的功能确实像“钱包”,主要是提供了一种钱的容器。我们知道钱包本身并不是钱,只是提供了一个存入和取出钱款的容器。这种容器可以有许多形式,塑料的、牛皮的等等,只影响手感而不影响你的财富。当然,货币其实早已经数字化了,除了实物钱包储存实物货币之外,我们更多的钱其实都是存在银行里的。这时候银行存折、银行卡等,也可以说是钱的载体。

我们会说:“这张银行卡里有一百万”,是什么意思呢?不是说撕碎这张卡之后会蹦出多少个钢镚来,而是说在其中以某种形式存在着一套记录或凭证,使得你可以通过这张银行卡,支配相应的钱。

事实上你的钱存在银行里,准确说其实银行里也并没有某些固定的实物,始终对应为你的存款。和你的存款相对应的无非就是某些数字罢了,你究竟有多少钱取决于银行里的记录,而银行卡是你可以去修改这一记录的凭证,你可以通过银行卡把你账下的一些数字划转给别人,这就是“支付”。

当然,别人也都可以修改你的存款记录,不过只能做加法,不能做减法,那就是说,别人不需要使用你的银行卡,就可以给你的账户里送钱,当然,你需要向他们公开你的银行卡号。

所以银行卡其实包含两重功能:支付凭证与收款代码。前者是只有你自己掌握的,比如银行卡内部的某种加密机制,或你网上银行的密码,只有掌握了支付凭证,你才能动用你的存款,向别人支付。后者是可以公开给别人的,就是你的银行卡号,别人可以根据这个卡号向你汇款。

而比特币,本质上也是这两重功能:支付凭证和收款代码。在比特币这里,叫做私钥和公钥,它们其实就是两串字符,比如私钥形如5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss,公钥形如1YiLinDDwvBLT19CTUsNHdiQhXBENwURb(更准确地说,这是公钥的压缩版,但入门者不必分那么细)。

比特币技术奠基于密码学原理,我们不需要搞懂密码学,只需要大概知道,密码学基于某些计算和它的逆运算在难度上的不对称性。比如给几个质数A、B、C让你把它们乘起来得到D;或者反过来,先给定D,让你分解质因数——后者是前者的逆运算,但算起来困难得多。

比特币的私钥和公钥就是这样的关系,知道前者,能够很容易算出后者,但知道后者,反过来算出前者,则极为困难,用人类现有的计算能力算到天荒地老也算不出来。

再用更通俗的比方来讲,私钥好比是你公司的图章,公钥好比是你公司的名字,拥有图章的人当然知道公司名字,但知道公司名字的人并不就拥有图章,反过来伪造一个图章非常困难(对比特币而言是天荒地老级的困难,不用担心萝卜章问题)。公司的名字是公开的,别人要送东西给你,知道名字就找得到了,但要以你们公司的名义发出什么指令,就只有掌握图章的人才有权。但行使权力时也不需要把图章本身送出去,只需要“盖个章”就行了,而且盖的是“骑缝章”,每签署一份文件都需要盖一次章,而这个骑缝章是不能被挪用到另一份文件上的。

比特币怎样利用密码学实现这种效果,就不是入门级介绍的任务了,但总而言之它就是做到了。拥有比特币其实就相当于拥有一个或许多个“账户”,每个账户都有私钥和公钥,你拥有私钥,然后把公钥公布出去,特别是告诉会给你汇款的人。一旦有人给你汇款了,你的账户里就有钱了,你如果想动用账户里的钱,就写一份文件,说把多少钱汇给谁谁谁,然后动用你的私钥对这个文件盖一个“骑缝章”,然后把这份文件公开出去,别人看到这份文件,确定了图章有效,就认可了交易成功,你的账户下的钱就汇出去了。

总之比特币其实就是两串字符,私钥负责签署向别人的汇款,公钥则负责让别人向你汇款。那么问题来了,盖图章我会,用私钥签署这件事情我不会啊,咋整呢?所以这就是比特币“钱包”的作用,客户端软件无非就是提供了一套存储你的私钥的容器,然后帮助你随时运用私钥签署交易。懂得代码的程序员其实不需要任何特别的软件,就可以直接凭私钥签发交易,而钱包软件只是让这一过程变得平易近人罢了。

所以比特币钱包有无数款式,但共同点一定是保存私钥,并帮助你使用私钥。最最安全的保存方式,就是压根不用任何钱包软件,把私钥写在纸上,锁进保险柜里,这样世界上最高明的黑客也不可能窃取你的私钥,当然以物理形式撬门进来扛走你的保险柜的毛贼,倒是有可能窃取你的私钥了。这种纸钱包怎么生成,我就不多说了,可以搜索“比特币冷钱包”、“比特币冷储存”之类的关键词了解。但从轻巧和方便角度来说,在线钱包也有优势。当然在线钱包也分两种,一种是真的钱包,一种是假的钱包。所谓真的钱包,就是指这个钱包仍然是帮助你保存并使用私钥的,而且保证只有你自己掌握私钥;而假的钱包,其实你并不拥有私钥,顶多只是一份托管协议,让网站帮你保管罢了,从安全性而言,永远是自己掌握私钥才是真的可靠。

顺便说一下,私钥怎么获得呢?自己按照一定的规则算出来就行了,不需要在联网的环境,只需要几行简单的代码,加上一个随机数生成器,就可以自己生成一大堆私钥和相应的公钥。不用担心你和另一个人恰好生成了同一个私钥,只要你的随机数生成器不出毛病,这种“巧合”也要等到天荒地老才能发生。

你可以自娱自乐地生成一大堆比特币地址,但你有一大堆空白存折并没有什么卵用,你需要把生成好的公钥公布出去,有别人给你打过钱之后,你这个公钥及其对应的私钥才是有用的。也只有实际发生过交易之后,你的地址才会被记录到比特币的公共账本里。所以说要加入比特币的持有者,你不需要找任何机构“开户”,直接找别人给你打钱就行了。


钱包只是容器

3.发起交易:区块链vs.银行
银行卡是你支付的凭证,但你的银行卡里究竟有多少钱,不是银行卡本身说了算,而是银行说了算。当然你自己也可能有一本存折,上面记录了你做了哪些交易,余额多少,但你的账本不作数的,银行里也有一份记录,那个才作准。你记得你有一百万,银行说你一分钱也没,那么你还是花不出钱来的。

所以银行卡刷下去,最终还要通过POS机或ATM,和银行联网,以银行的账本为准。

那么比特币的账目以谁的为准呢?比特币不需要银行,那么它的账本存在哪里呢?答案就是存在每一个比特币用户那里。

比特币的客户端有两种,一种是轻便的,另一种是完整的。在每一个完整的客户端中,都会保存比特币问世至今所有交易的记录,而且保持与网络的同步,持续运行完整客户端,维护全部功能的,又叫做比特币网络中的“节点”。

当然,这个总账的数据越变越大,现在已经快120G了。好在并不是每一个比特币用户都需要保存完整的记录,保存交易记录的任务,势必越来越依赖专业机构来维护。

完整的交易记录同时也决定了每个账户的余额。比如把你的银行账单从一开始看起:某年某月开户存入500,某年某月支出300,某年某日再汇入200,再支出100。如果以上的记录涵盖了全部的交易,那么我们马上就能够算出来你的“余额”是500-300+200-100=300元。

所以我们一旦知道比特币从创始以来的的全部交易记录,就可以计算出每一个账户有多少余额。

理所当然地,要有权发起一笔汇款,除了要求你掌握私钥之外,还要求你的账户里有足够的余额。

那么比如我掌握某个地址的私钥(这个地址有足够的余额),想要签发一笔汇款(到另一个地址),前面说了,好比就是签署一份盖了骑缝章的汇款单,写明从我名下的账户发送多少钱给另一个账户。但是我这张汇款单交给谁来结算呢?我划银行卡发出的交易当然是上报给银行,由银行负责验证和结算,而我用比特币钱包发出的交易,不是交给某一家机构,而是直接向整个网络“广播”。

其他比特币用户听到广播之后,就验证两件事情,一个是你是否有掌握这个地址的权限,也就是你对这笔交易“盖的章”是否有效;第二个就是你是否有足够的余额来完成支出,那就是把你这个地址以前发生过的所有交易加起来,看看余额够不够这笔新的开销。如果验证都通过了,那么他就会再帮助你继续广播,如此一传十十传百,有效的交易就会很快传遍全世界。最终这笔交易会被所有比特币用户记录在案。

所以比特币就是用一部共享的公共账本,取代了银行的角色,让所有比特币用户共同来扮演验证和结算的角色。

当然了,这里还要面临一个问题——以上这个流程有一个严重的漏洞,那就是说,向全网络的一传十十传百的广播,毕竟是需要时间的,那么我如果同时广播两条互相矛盾的交易呢?

刚才说到,要判断一笔交易是否有效,要验证两件事情,一是私钥签章是否有效,二是余额是否够用。私钥签章这件事情,是无论如何伪造不了的,但余额问题就麻烦了。

比如刘备的账户里有100元余额,刘备发起了一个汇款,要把100元汇给关羽,他盖好了骑缝章,把这笔汇款单广播出去。黄忠收听到这笔汇款单,一检查,发现签章是有效的,余额也够,所以他认为这笔交易是有效的。

但刘备很坏,他同时又发起了一个汇款,说要把100块钱汇给张飞,他又盖了个骑缝章,把汇款单广播出去,但先让马超听到。马超一看,签章有效,余额也够,所以他也认为这笔交易是有效的。

然后黄忠和马超都把他们认为有效的交易继续广播出去,诸葛亮同时收到了这两条广播。诸葛亮就头大了,听黄忠说刘备已经把他的100元汇给关羽了,但听马超说刘备的100块钱是给了张飞。如果这两笔交易都是有效的,那么原来刘备只有100块钱,现在关羽和张飞各自都多了100块钱,这当然行不通了,不然这哥仨来回倒腾,不就无限有钱了吗?所以要么关羽得钱,要么张飞得钱,这两笔交易只能有一笔是成立的。那么究竟是哪一笔有效呢?以黄忠的记录为准还是以马超的记录为准?

解决这个问题,才是比特币最核心的技术发明,这就是所谓“区块链”技术的关键意义。下面细说。


用户以不同方式掌握私钥↔公共账本和比特币网络

4.防伪:算力竞赛vs.诉诸权威
前面说到,要用一个公共账本来取代银行,需要解决一个关键的问题,就是杜绝把一笔钱花两次这种行为,也就是所谓的“双花”。保证每一笔钱只能花一次,保证互相矛盾的交易记录只能有其中一条记录才作准。

现在黄忠记录了关羽得钱,马超记录了张飞得钱,听黄忠的还是听马超的呢?当然也可以两个人都不听,那么钱还在刘备手里,但这其实是第三种记录了。钱到底在关羽还是张飞还是刘备手里,最终只能有一份记录被承认,谁说了算呢?

谁官大听谁的?在现实中大概是这样的。比如债主说你欠他钱,你说你已经还过了,到底给没给过钱闹到法院就听法官说了算;又比如在银行,银行柜员说你卡里没钱了,但你找领导投诉,领导查出来是系统故障,其实你卡里有钱,那么还是以领导的为准,对整个银行不信任,再找法院找政府,最终总是权力最大的机构说了算。

但现在比特币诉诸公共账本,网络上所有人都能参与,但在网络上的交流不用露面,不需实名认证,也不看你官大官小,甚至你不知道一个人有多少账号。没准关羽、张飞这两个账户都是刘备一个人的“马甲”,他自己左手倒右手玩儿。

在这种情况下,我们不能说官大的说了算,也不能说人多的说了算,因为在网上,官职是看不到的,而人数是可以虚构的。总之,传统的民主与专制都行不通。

比特币的发明人中本聪想出来一个好主意。本质上还是少数服从多数,但不是比的权力大小或人数多少,而是比拼“算力”多寡。

怎么个比拼法呢?大家一起做解密游戏吧。中本聪设计,比特币网络上的记账者把一定时间内各自记录到的交易汇总打包,但这个汇总不是简单地罗列在一起,而是要遵循一定的游戏规则。这一组按照规则而打包出来的交易记录,就叫做“区块”,所以由一块接着一块打包的交易记录串联出来的比特币“公共账本”,又叫做“区块链”。

而这个打包交易记录的规则,也是利用了神奇的“密码学”,也就是说,打包很困难,但一旦成功打包,别人反过来验证打的包是否符合要求,则很容易。最早打包成功的那个人的给出的交易记录就最具权威了。

打个比方来说,就是出个难题大家一起做,谁先做出来谁最牛,大家就听谁说了算。然后在继续做下一个游戏,打包下一批交易记录。

当然,这种做题游戏是可以大家一起做的,10个人的算力叠加起来,就相当于1个人花10倍时间。所以比拼算力,还是比拼各自的同盟军的力量。你背后有五万步兵,我有八十三万大军,那么当然是我这伙人更厉害。但问题是我背后究竟有没有那么多力量,还是我吹牛皮吹出来的,最终还是要通过解题竞赛见真章,哪一方解题快,哪一方就厉害。

但是,如果黄忠先做出来答案,马超假装没看见(或者真的没看见,毕竟答案的广播也需要时间),拼命再做了一会儿,也做出来答案了,怎么办呢?这两个答案哪个更可靠呢?听黄忠还是听马超的问题不还是存在吗?

这里补充一句,因为“打包游戏”的答案和各自需要打包的对象(交易记录)有关,所以既然黄忠和马超承认的交易记录是不一样的,他们的答案也是不一样的,但可以都是“正确答案”,所谓正确答案,就是“按照游戏规则完成打包”。

的确,马超完成打包比黄忠慢一点,并不能说明他的计算能力一定更弱,因为实际比拼的时候有随机成分。我们说学霸比学渣厉害,但也可能个别有几道题,学渣碰巧蒙出来了而学霸算了半天。那么怎么判断呢?无非就是多做几道——如果学渣做完几套题库之后也总是表现得又快又准,那只能说明他压根不是学渣。

所以中本聪设计的是6个区块见分晓,也就是打6次包。因为马超和黄忠打的第一个包就有分歧,那么追随马超的人就必须在马超的第一个包之上再打下一个包,而支持黄忠的人则需要在黄忠的第一个包之上继续打,“区块链”就分成了两支互相竞争。中本聪说,接着最初的分歧后面,哪一支最先打到第6个包,哪一支才算赢了。所以马超的记录并不是在黄忠打包完成的那一刻被否决的,而是直到黄忠的支持者打满6个包的时候才尘埃落定。如果打到6个包还不能证明黄忠一方算力更强,那就好比一个文盲乱涂乱写结果高考考个满分那样,理论上始终有可能,但实际上可以忽略不计了。

当然,实际上来说,在大部分情况下,在黄忠率先打出第一个包的时候,交易被确认基本上就已经“万无一失”了,普通用户在日常使用时只要看到自己发出的交易被别人打包记录,基本上就足以安心了。

这个“打包游戏”的难度是动态调整的,以至于整个网络来说每次有一个人打成一个新包,时间间隔平均在10分钟左右。如果连着好几次都很快完成了,难度就会逐渐调高,反之就会逐渐调低。所以通常来说某笔交易在6个包后被最终确认需要1小时左右,而第一次打包成功是10分钟左右。

10分钟或1小时很漫长吗?要注意这个时间其实是相当于“验钞”的时间,而不是“汇款”的时间。比特币的“汇款”其实是即时到账的,无论是当面付款还是跨国汇款,只要在互联网上连接,就可以即时完成汇款,只是要确保万全,需要等待确认罢了。



最长链(在分歧之后最快打完6个包的)胜出
Jump to: