数字货币:比特币数据报告与操作指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2

数字货币基本原理

(一)防止货币伪造

对于杜绝伪造货币,比特币的解决方案是保留所有货币的所有流通信息(即全网总账本),可对每一个货币的来源进行追溯,一直到创造出该货币的那个时刻;每进行一次交易,就多记录一次流通信息,并在点对点网络上进行广播,使得所有节点(即参与流通渠道维护的所有计算机)都保存有全部货币的全部流通信息。这样任意一个节点在交易之前就可以轻松发现伪造的货币,从而杜绝伪造货币的流通。

(二)防止重复支付

为了防止同一个货币被同一个人重复花费,中本聪采用了工作量证明法。如前所述,每个交易都要向网络进行广播,重复花费多次就意味着多次广播关于同一个比特币的交易。其他网络节点将把其接收到的其中某一次交易放到一个区块A内(一个区块包含了多个近期的交易单)进行验证,验证方法是进行一次耗时的计算,如果计算成功,则向全网进行广播。如果另一个节点在区块A的基础上完成了下一个区块B的验证,它就会把B的区块挂在A区块之后,依此类推,形成一个区块链。

对于同一比特币的多次交易会形成多个区块链,最终的结果就是:哪个链条最长,哪个交易就被确认为有效,其他交易则被废弃。这样就确保了一个比特币只能被一个人支付一次。

(三)无须第三方监管

通过工作量证明法,比特币还基本杜绝了非法篡改历史交易记录的可能性,因为历史记录一旦被篡改,就意味着某个比特币的交易记录出现了一个新分支,篡改者需要自行对新分支进行验证;与此同时,其他所有网络节点仍在老分支上进行验证,持续构造验证链,除非篡改者拥有超越其他所有网络节点之和的计算能力,否则它的分支增长速度永远无法追上老分支,结果是他的篡改行为必将被宣告无效。

在所有节点上保存全部交易记录,通过耗时的计算对交易进行验证,二者结合起来,就构成了一个安全、可靠的去中心化的支付系统。其本质是把集中监管的工作量交付给一个人人参与的庞大网络,网络中的所有节点都承担监管职责。如欲伪造货币或欺骗其他用户,就是与整个网络作对,因而无法得逞。

(四)比特币的发行

比特币的发行源于货币流通渠道自身。由于每个比特币的每笔交易都需要进行验证,为了鼓励节点全身心投入验证以维护系统的正常运作,中本聪提出了相应的激励机制:“对每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者(也就是第一个对交易进行成功验证的人)拥有的新的电子货币。这样就增加了促使节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的方法”, “如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中”。也就是说,第一批比特币可被视为“创世纪”比特币,在被“创造”出来之后进行流通,后续比特币通过验证“创世纪”比特币参与的交易产生,再加入流通渠道,产生滚雪球效应,从而使得比特币越来越多。

但是比特币无法永远增加,由于算法本身的设计,每4年产生的比特币数值会减半,因而最终比特币的数量会趋近于2100万个。

因为对比特币系统进行维护的人可以通过复杂的计算获得比特币奖励,过程类似于矿工挖矿,因此维护者被称为“矿工”,其维护行为被称为“挖矿”。值得注意的是,“矿工”自带设备(一般为定制化的计算机,又称矿机)、自发参与维护,因而人数很多且时刻变化,不会形成固定的“第三方监管者”。而在特定的时间间隔内,只有一个矿工能够得到奖励,挖矿的争夺非常激烈,从而保证了系统的安全性和稳固性。

(五)挖矿

比特币的本质是一个互相验证的公开记账系统,而挖矿的本质则是在争夺记账权。从工作内容来看,“挖矿”是将过去一段时间内发生的、尚未经过网络公认的交易信息收集、检验、确认,最后打包加密成为一个无法被篡改的交易记录信息块,从而成为这个比特币网络上公认已经完成的交易记录,永久保存。

在比特币的世界里,大约每10分钟会向公开账本上记录一个数据块,这个数据块里包含了这10分钟内全网已被验证的交易。因为所有的挖矿计算机都在尝试打包这个数据块提交,于是最后以谁提交的为最终结果,是需要争夺的。最终成功生成那个“交易记录块”(即区块)的人,可以获得伴随这些交易而生成的交易费用,外加一笔额外的报酬。交易费用一般都是转出资金方自愿提供给挖矿者的,因此不是系统新增的货币;额外的报酬是新生成的比特币——这就是前面所说的“比特币的发行”。

比特币的有限性就由“额外的报酬”数量来控制。依据比特币系统的设计,大约每10分钟可以生产一个“交易记录块”,最初每生产一个“交易记录块”可以获得50比特币的额外报酬,这意味着比特币网络每天增加7200个比特币,但是该报酬每4年就会减半,因此最终整个系统中最多只能有2100万个比特币。

(六)区块链

矿工们为争夺记账权所运行的计算,实际上是根据哈希值反向求解随机数。大家比赛的是在10分钟内看谁找到一个随机数,这个随机数与上一个数据块的哈希以及10分钟内验证过的新交易记录合起来可以得到满足某个条件的最小哈希值。这个值越小对应的比特币网络的难度系数越高。由于哈希值的结果相当随机,无法预知结果大小,所以只能采取穷举法比拼算力。如果某个矿工10分钟内没抢到记账权,就只能等待下一轮的竞争。

之所以在求解随机数时要加上一个区块的哈希,是因为这样所有的数据块就被组成了一条可以从前到后不断验证的数据链条。修改中间任何一个数据块的任何交易记录,都会导致从此之后的所有数据块的哈希无法验证成功,而如果企图修改记录后重新找一个合理值算出符合条件的哈希重新打包,那就意味着之后所有的数据块都需要重新计算哈希,即使都找到了还必须比整个比特币网络计算得更快,才能让网络接受你的结果,这意味着攻击者要拥有超过整个比特币网络其他部分的计算力,换句话说,要使用超过整个网络50%以上的计算力才能保证攻击有效。

这个数据链条就称为区块链,又称全网总账本,它永久保存在每个用户的计算机上。只有拥有50%以上全网算力才可能篡改这个全网总账本,比特币系统就是通过区块链+“挖矿”的机制实现了货币无法被伪造、交易无法被篡改和双重支付无法得逞的目标。

(七)计算难度与确认次数

矿工找到一个有效的哈希值后,就会迅速把生成的数据块转发出去,别的矿工收到并认可这个数据块后,就会以它为基础进行下一轮的计算。如果期间收到具有更小哈希值的块,则首先以数据链长度为优先,其次以哈希值更小为优先,抛弃之前的结果,在新的基础上继续进行下一轮计算。

为了自动协调比特币的发行速度,系统根据之前若干数据块生成的平均速度自动调整挖矿难度。如果之前数据块的生成时间低于10分钟,就把难度提高,如果高于10分钟就自动把难度降低。难度提升很简单,就是降低哈希值的下限,由于哈希算法的特性,这会造成计算量的指数级上升,因而会增加矿工计算的时间。

对于某笔特定的比特币交易(主要指转账,即把比特币由一个地址转到另外一个地址),正常情况下,这笔交易的交易单会被打包到当前的数据块中。当某个矿工计算出了满足当前数据块要求的哈希值并广播出去,这笔交易得到第1次确认。其他矿工过10分钟后把新的数据块挂接在当前数据块之后,区块链延长,每延长一个块就意味着得到的确认加1。当一笔交易获得了6次确认,就可以认为这笔交易已经得到了全网的认同,合法、有效,而且不可撤销。

(八)客户端钱包软件

在比特币体系里,用户的账户(地址)由本地客户端自动生成,是类似1Gz9XmfTK4aH89MVXky1QxtyMcG44NqDRv的一串字符。用户告诉别人这一地址后,对方就可以向该地址转账了。

比特币地址其实是一套非对称密钥对中的公钥,这对密钥通过椭圆曲线算法生成,其独特之处在于:使用公钥加密一段信息后,使用公钥解不开,必须使用私钥才可以解开;同样,使用私钥加密一段信息后,使用私钥解不开,必须使用公钥才可以解开。更加独特的是,根据私钥可以很容易地算出公钥,但是根据公钥几乎无法算出私钥。

因此,用户可以把自己的地址(公钥)告诉别人,与其进行加密通信。例如,用户A把自己的公钥告诉B,然后以自己的私钥加密信息,用户B用A的公钥解开这份加密信息,并可确认该信息由A发出(因为只有用A的公钥才可以解开);用户B用A的公钥加密信息,用户A用自己的私钥解开这份加密信息,并可确认该信息是发给自己的(因为只有用自己的私钥才能解开)。但是用户绝不能把私钥告诉别人,因为私钥唯一确定了地址(公钥)的所有权,而且无法通过公钥计算出来。一旦告诉了别人自己的私钥,就等于把该地址里所存的比特币拱手让给了对方,对方可根据私钥计算出公钥(地址),然后从区块链(全网总账本)中查找该地址关联的比特币信息,并动用这些比特币。

用户账户的地址和私钥都保存在比特币钱包文件里,一般情况下私钥是看不见的,由比特币客户端软件自动进行加密、解密运算。因此,钱包文件必须妥善保管,一旦丢失,钱包里所有地址保存的所有比特币就不安全了,有可能被别人盗走。由于整套比特币体系的去中心化和匿名性特性,比特币一旦被盗,没有任何人有权力或能力找回。

用户账户的地址及对应的私钥均由客户端软件自动生成。由于可使用的地址数目足够多,理论上超过2160个,而全世界的沙粒仅有约263个,每粒沙子都可以分配297个地址,仍然是一个巨大的天文数字。因此,不同用户账户地址重合的可能性基本上不存在。由于账户地址输入错误,导致这一地址恰好是别人账户地址的概率,比飞入你眼中的一粒沙,恰好是去年你在海滩踩到的一粒沙的概率还小得多。

(九)比特币转账

因为比特币不存在现金交易的概念,一切的交易都依靠账户间的数字转移,所以比特币的支付概念类似于银行转账。假设A有100个比特币,他要转账给B。那么A写一条信息“从A的地址转账100比特币到B的地址”,然后用自己钱包里的私钥加密并传播到整个比特币网络上,网络上的人都用A的地址(公钥)解密验证这条信息确实是由A发出,而通过历史交易数据计算出A的地址确实拥有100个比特币,于是整个网络公认此次转账操作,抢得记账权的矿工把当前时间区间内的所有交易记录(当然包括A给B的转账)打包挂在区块链上,A钱包中存款减少100比特币,B钱包中存款增加100比特币,并显示该笔转账被确认了一次。大约一个小时后,6次确认完成,B获得了这100个比特币的支配权,这次转账彻底完成。

非对称加密技术使这个转账过程得以顺利实现,矿工的挖矿则保证了交易的合法性、有效性和不可撤回性。

(十)匿名与公开

由于没有传统银行开户和身份认证的过程,比特币系统是纯匿名的,即无法把用户账户的地址与用户本人相关联,拥有某个地址私钥的人就拥有对该地址的唯一所有权。虽然我们可以根据本地完整的交易记录查询每个账号的流水信息,但却几乎没有办法知道这个账号的主人是谁。只要愿意,每个人都可以拥有几乎无限个地址。同样也没有任何人有能力操作他人账号上的比特币。这是人类历史上第一次从技术上保障了“货币”不可追踪、不可冻结、不可未经许可而占有。

反之,账户所有人可以轻易证明自己拥有某个地址上的财富。只需要使用私钥加密一条信息发布出来,大家就可以确认他对该账户的拥有权,而不必把私钥公开,这同样适用于证明某笔匿名支付确实由某人发出。

当然,虽然比特币系统是匿名的,但若一个组织愿意公开自己的比特币账号,那么整个网络可以随时追踪到该账号的所有流水信息。每一笔转账的到账时间、数额和支出都可以清晰地看到,相当于直接查询银行内部原始账单。对于NGO(非政府组织)或公益组织来说,可以大幅降低账目维护成本,做到100%的透明度。2013年的芦山地震,壹基金就曾接受比特币捐赠,其比特币账目在网络上清晰可查。

(十一)不可撤销与不可找回

前面已经提到,如果一笔交易被确认了足够多次,该交易即不可撤销、不可逆转。这意味着,如果一个人错误地把比特币打到另外一个人的合法地址中,除非对方愿意把比特币再打回来,否则这个人的比特币将永远无法追回。因为比特币世界不存在仲裁者,无法强制用户进行操作,因此错误的交易能否被挽回,只取决于对方的自觉性。

基于同样的原因,如果用户的钱包文件(私钥)损坏,就意味着钱包包含的所有地址上的所有比特币都彻底丢失了,彻底躺在了交易记录的历史中,任何人都可以看到它,但却得不到。因为这里可没有拿身份证找回这一码事。而如果想通过破解私钥的办法拿回丢失的比特币,只能等到量子计算机出现了。依据当前的加密理论,只有量子计算机才有可能在较短时间内破解椭圆曲线加密算法。