提到比特币,在很多人印象中无非这么几种,要么是带着革命光环、科技背景的金融良药,要么是笼罩者阴谋论、传销等影子的庞氏骗局,说明大多数人对这个新生事物缺乏根本的了解,包括我身边的一些朋友,对此也是一知半解。因此我觉得有必要写篇比特币原理的入门文章,介绍下比特币的基本原理,为帮助大家快速理解,本文写的也相对简单些,只讲基本的概念,干货居多,注意食用。
比特币的发展
比特币有着颇具奇幻色彩的发展历史,而它的实际发展史却只有短短的8年时间,它自2008年金融危机开始萌芽,当时各国为应对危机纷纷出台宽松货币政策,主权货币信用跌至冰点,信用货币的缺点暴露无遗,换言之,基于国家信用的货币体系,显得不那么可靠了。比特币就此诞生,它的根基着眼于数学而非信用,把整个交易体系的可靠性寄托在密码学上,基于数学之上的是交易规则的创新。
最早在中本聪一篇论文《比特币:一种点对点的电子现金系统》中,介绍了一种基于去中心化网络的数字货币,目的在于设计一种可以降低交易成本、保证交易匿名性以及脱离中央结算机构控制的货币体系。
2009年比特币在线交易网络上线运行,第一批总计50个比特币由中本聪本人挖到;
2010年美国一位程序员完成第一笔交易,用1万个比特币买了一个披萨(以现在汇率,这1万个比特币现在约值6000多万人民币(2017年1月),史上最贵披萨);
2011年是比特币较为黑暗的一年,出现了多起黑客偷窃事件,以及全球最大的网络黑市丝绸之路(SilkRoad)将比特币纳入结算方式,以提高其网站的匿名性,开始了比特币暗黑的一面,高度的匿名化也为非法行为提供了绝好的工具;
此后比特币便顺风顺水,对人民币汇率甚至一度接近1万,假如你在09年投资至今,投资回报率至少在1000倍以上;
短短8年时间,一个乌托邦般的理想主义货币计划,到现在总市值近200亿美金,中本聪去中心化的货币设计,不得不说非常成功。当然除金融行业的发展背景,比特币本身有这以下几个优良的特性,才使它的规模得以日益扩大。
一,货币发行规则。比特币的发行是基于奖励的,每促成一个区块的生成,该节点便获得相应奖励,这样大家就有动力投入资金去维护整个交易网络的正常运行(交易网络的正常运行是需要耗费巨大算力的),目前绝大多数算力是由矿机提供的,而矿机的主要目的是为了获取奖励,这种设计使得货币发行和节点的扩充巧妙结合起来,相互激励。
二,可靠的分布式账本。分布式账本优势在于,保证了交易的不可篡改,除非你能修改整个网络节点账本的一半以上,这种可能性微乎其微。
三,匿名交易。比特币的崛起和黑市贸易、非法洗钱等是密不可分的,而这些交易需要可靠的匿名交易平台,比特币的钱包地址(相当于平时使用的银行账号)是匿名的,并且钱包地址的生成是基于密码学的,即你可以为一笔交易生成成千上万个“帐号”,真假难辨且完全匿名,增加追踪难度。
比特币基于数学原理,而非信用,就这点而论,它是现代货币进化的一个重要标志,人类第一次使用数学来作为货币的根基,比特币天生就有着相对公平、公正的基因,它为我们的经济找到一种新的可能,即摆脱有着上千年历史的中心化的金融体系,以数学的理性构建新的经济形态。
基本数学原理
比特币的数学原理,主要涉及到两个方面,一是数字签名及不对称加密技术,二是数字指纹技术,有了解数字加密技术的,可以略过该段介绍。
1,数字签名机制
数字签名是现代计算机密码学的一个重要概念,比特币的数字签名是基于不对称加密算法来完成的,具体示例如下:假如小明想向小红发送一条信息,但是这条信息可能被小张监听到,于是他俩想到一个好办法,就是通过一套商量好的加密规则,将信息加密,这样即使小张监听到内容,由于他不知道加密规则,还是破译不了这条信息内容,这叫对称加密。
对称加密场景
但是对称加密有个明显缺点是,小明需要把加密规则告知小红,小张要是能截取到加密规则,那以后小明和小红的信息交流就可以被破解,并且小张也可以假冒小明向小红发送假冒信息,因此我们需要另一套通讯规则来避免这种情况。
非对称加密可以有效解决上述问题。首先,小明需要一对公钥和私钥,公钥和私钥是成对存在的,公钥由私钥通过一个不可逆的数学公式生成,公钥和私钥遵循以下规则:
1,用公钥加密的信息,可以用私钥解密,但反过来不可以;
2,用私钥签名的信息,可以用公钥验证,即验证签名;
有了上述规则我们就可以设计如下的信息交互场景:
使用私钥签名、公钥验证场景
我们从上图可以看出,在这种情况下,整个系统没有人可以假冒小明发信息,因为只有小明知道自己的秘钥,这种设计可以有效保证发信人的不被恶意伪冒。
当然,这套机制也可以进行加密的信息传输:
公钥加密、私钥解密示例
以上就是数字签名及不对称加密的主要内容了,两者配合使用,可以保证交易的安全性,而签名算法的大概原理,可以用下面一个简单的数学例子来说明:
我们对两个数求和,比如2+8=10,这个结果只需一次运算就可以验证,但是由10推理出2和8就相对困难了,因为有很多种可能性。这说明我们可以找出一个不可逆或很难逆向求解的数学算法,用这个算法来实现来非对称加密。
实际上,比特币使用的是椭圆曲线数字签名算法(SECP256K1),该算法可以很大程度保证该交易过程不被破解,我们在平时使用时完全不必担心。比特币钱包地址的生成也是基于该算法,首先由随机字符串产生一个秘钥,再通过秘钥使用算法产生公钥,该公钥经过一定变换生成比特币钱包地址,也就是说,我们只要知道随机种子或者秘钥,就可以推算出钱包的地址,但该过程不可逆,因此保护好自己的秘钥非常重要。
2,数字指纹
假如小明发送信息给小红,小红如何验证这条信息没有被小张截取后篡改过呢?小明想了个聪明的办法,他事先把发送的信息通过一些变换,生成了一段字符串,原始信息要是被篡改,那这段字符串也会发生很大变化,随后将两端报文发送给小红。小红接到后先将接受到的信息进行相同变换,得到一个字符串,再将该字符串和小明生成的字符串比较,如果相等,就说明该条信息没有被篡改过。流程如下:
1,小明将发送的信息通过一个算法变换,得出一个指纹字符串。
2,将该信息和对应的指纹字符串发送给小红。
3,小红提取出该信息,并进行相同变换,得出第二个指纹字符串。
4,小红通过对比两个字符串,即可得出信息是否被篡改过。
我们将上述过程称为数字指纹技术,这种技术被广泛用于比特币交易系统中,常见的数字指纹算法有MD5/SHA1/SHA256等,注意数字指纹也是不可逆的,即不可能通过指纹字符串逆推出原始信息。
交易原理
比特币的交易是去中心化的,为了方便理解,我们不妨想象一个的故事,故事的主角有三个人:小明、小红、小张,小明想转一笔钱给小红,传统的交易流程应该是这样的:
1,指定结算中心用来记账,并且需要维护一个的中央账本,此图中由小张扮演此角色;
小张作为结算中心的职能
2,小明向小红支付的结算过程。
小明向小红支付100元的结算过程
我们看出,小明对小红的支付行为,是由小张代为完成,小张是通过操作账本来完成转账工作,账本是不透明的,每个人只能查到自己的账户信息,而小张则可以随意查看、操作个人账户。
3,货币的发行
我们现行的货币体系是基于信用的,事实上,我们使用的货币价值是以国家信用做支撑,是由中央银行发行货币,中央银行估算出市场需要的货币总量,再印发相应货币数量,然后主要通过商业银行以负债的形发放出去,这样货币就流通到市场上了,整个货币的发行,是以中央银行为中心,凭空印发出来的,而货币的价值很大程度依赖于我们对中央银行的信任。
4,此系统存在的问题。
显然,在这样一个结算体系中,小张的位置至关重要,所有人的账户信息被整理在一个由他维护的中央账本中,对小明和小红来说,此次支付是建立在对小张的信任上的,因此,基于中心化的交易体系有以下弊端:
1,过度依赖中央结算机构,中央结算机构有能力冻结所有人账户;
2,唯一的总账本有丢失或损害等风险;
3,交易成本相对较高,需要一个中心机构来进行所有账面操作;
4,通胀风险,由于货币由中心机构发行,存在这些机构乱发货币的风险,不过各国央行通常使用此手段来调控经济;
针对这些问题,比特币给了相对更好的解决方案,由于比特币使用分布式账本,也没有中央结算机构,因此它在底层原理上就与传统货币体系大相径庭。事实上,比特币所有的交易节点都是平等的,每个节点负责维护一个账本,隔一段时间所有账本会同步一次,比特币网络也提供了“民主”的账本决策机制,保证每时每刻只有一个有效账本,其交易大致流程如下:
小明、小红和小张三人之间需要交易,但三人互不信任,他们无法接受由其中一人单独负责记账,于是他们商定,每人自己维护一个账本,该账本无差别地记录所有交易,不依赖某一个账本。在这种情况下,每个人都是记账员,但是,每个人记账的结果可能不一样,那以谁为准呢?于是他们又商定,账本的最终版本用投票的机制保证,三人中有两人的记账结果一致,那那就强制所有人的账本和该最终版本同步,于是他们开始愉快交易起来,过程如下图:
分布式的账本同步过程
我们重新审视这个过程发生了什么:
1,交易摆脱了对中央账本的依赖,记账由所有人共同参与;
2,民主化的决策机制,半数以上的相同账本被视为有效账本,其余则被强制同步;
3,记账成本分散化,分担到整个网络中;
4,杜绝了篡改账本的可能,至少要篡改网络中半数以上的账本才可以起效;
以上便是去中心化交易的核心原理,但这个系统仍有一些致命漏洞,比如双重支付等,此处先按下不表。
真实的比特币交易是建立在密码学上的,彼此间的通讯的隐私保障由一对公钥和私钥完成,简化步骤如下:
第一步,小明想向小红转一笔钱,他先用自己私钥签名一段转账信息,该信息包含如下:
1,小明自己的钱包地址;
2,小红的钱包地址;
3,转账信息(转账金额、时间等);
4,小明的公钥;
第二步,小明将此转账信息通过比特币网络广播至全网,全网每个节点都可以收到这个转账请求;
第三步,由其他人(小张和小强)验证这条转账信息,主要验证以下几点:
1,该信息是否由小明发出,通过小明的公钥即可验证;
2,小明的钱包地址下是否有足够金额,因为账本是公开的,所有人都可以查阅,根据交易记录即可查到小明的余额是否足够。
第四步,其他人公布验证结果,并投票决定这笔交易是否有效,如果有效则将这条交易记录保存到最新账本中,其它账本全都同步至此账本(实际上,这部分工作由很多矿工完成,这是被简化的流程,现阶段可以先这样理解)。
第五步,小红确认收款,小红通过观察同步后的最新账本即可知道是否到账。
小明向小红转账100元的场景
以上便是简化版的比特币交易流程,我们注意到,在这个流程中,进行信息验证的小强和小张扮演着至关重要的作用,这部分人便是矿工。
矿工
我想很多人对比特币的第一印象,便是矿工,经常有新闻报道某某矿工挖到多少比特币,一夜暴富之类。同时疑问也随之而来,矿工的主要工作是什么?挖矿是如何进行的?挖矿为何需要那么高的配置?
实际上矿工在比特币网络中主要工作是记账,每个矿工都持有一个账本,该账本从其它旷工中复制得来,在中本聪的设计中,谁记账速度越快,账本就以谁为准,谁获取到记账权,系统将自动奖励一定数量的比特币,因此矿工存在事实上的竞争关系,比拼的是计算机的算力。
在这种制度激励下,为了获取奖励,就会不停有矿工加入,更巧妙的是,矿工不仅承担了记账这项核心的工作,系统也通过奖励比特币起到了发行货币的效果,一举两得。
你可能会想,记账并不需要消耗太多计算机性能啊,那些矿工为何要花费巨资购置性能超群的显卡呢?这又要讲到中本聪的另外一个规则设计,他规定,所有矿工必须计算一个数字,这个数字是完全随机的,谁算对谁就可以获取记账权,而算出这个数字需要计算机不停尝试所有可能,这时谁算力强,谁就最可能算出该数字,夺取记账权,获得奖励,具体步骤如下:
1,小明广播了一个转账请求;
2,这个转账请求被所有矿工收到;
3,所有矿工开始检验这条交易请求的有效性,即通过公钥验证发送人,数字密钥验证是否被篡改,自以及该支付账号的余额是否足够;
4,验证工作完成后,矿工又开始计算一个数字,这需要耗费很大的算力,谁优先算出,谁就能获取到本次交易的记账权;
5,矿工A优先胜出,他将自己算出的结果广播出去,由其他矿工检验;
6,其他矿工检验通过,承认A记账的合法性;
7,A矿工将该条交易信息添加到自己持有的账本后面;
8,系统定时将A的账本同步至其它矿工,保证账本的一致性;
当然以上是简化的流程,实际上,矿工争夺的是区块(可理解成账本中的一页)的打包权,区块是全网10分钟内所有交易的集合,矿工获取到该区块的打包权后,盖上时间戳,再将该区块加入区块链(可理解成账本)的尾部。
账本同步问题
我们从上面描述可以看出,比特币的核心在于如何同步这些分布式账本,并防止这些账本出现大的分歧,对此问题,中本聪提出,所有账本以记录链条最长的账本为准:
比特币的账本树
当两个节点的账本记录不一致时,如上图的分支1和分支2,系统将默认链条最长的为主分支,在此图中,分支2被选为主分支,即所有账本以该分支同步。这种机制就保证了不会出现太大分叉。在比特币系统中,每隔10分钟所有节点会自动同步一次账本,将最新的分支同步到自己的账本上。
双重支付问题
存在这么一种可能,小张打算从小明和小红手上买取东西,但他计划一份钱两处花,原理如下:
1,先向小明发起正确的支付请求,等待小明确认;
2,这笔交易被确认后,最新的账本多了一个分支,该分支被小明看到并确认支付;
向小明支付的账本分支
3,小明确认收到以后,小张将自己账本的最新分支后退一次,绕过小明的支付记录,并以此为起点,向小红发起支付;
向小红支付完后的账本分支情况
4,此时账本出现两个分支,然后小张在小红这条分支上,继续交易,因为比特币会默认最长分支为主分支,那小明支付的那条分支会被忽略删除。
双重支付完成
上述问题就是所谓的双重支付,为了杜绝这种情况,中本聪提出,当一笔支付完成时,交易链条在当前交易基础上,至少增长6个交易页,才能被承认。由于每促成一个交易页,需要花费很大算力计算一个随机数,在这种规定下,小张要想实现双重支付,就必须在小红的分支页上至少再生成6个交易页,才能被承认,这其中花费的算力成本是不可估量的,即使拥有很大算力,也很难追赶上账本的自然增长,并且中本聪从数学角度证明了这种机制的可行性,这样就能防止出现双重支付。
中本聪提出的工作量证明机制,就是为了防止出现双重支付,这也是比特币在设计上优于其他电子货币的一个体现。
区块链技术
区块是一堆交易记录的集合,我们可以理解成普通记账本中的一页,每个页面记录很多不同的交易信息,这些书页按时间顺序装订起来便是区块链,分布式账本便是区块链技术的一种体现。
在比特币网络中,每个10分钟会将全网的交易打包起来,加上时间戳形成区块,并入比特币账本,此账本便是区块链。打包是由各节点竞争来决定,谁最先算出那个随机数,就由谁来负责打包记账。
区块链技术不仅应用于比特币,现在越来越受其他行业青睐,它的优点不言而喻,分布式存储结构、去中心化的决策机制,可以有效保证信息的安全性及决策的公正性,这也是比特币潜在的价值之一。
比特币钱包
由于比特币账本公开,意味着所有人都有权查看每一笔交易,所有交易记录都是透明可见的,那它如何实现匿名交易呢?这就涉及到比特币钱包地址的生成机制,在比特币网络中,钱包地址这个概念相当于我们日常使用的银行账户,密钥相当于对应的账户密码,不同之处在于,比特币没有开户过程,不用通过身份认证,我们想要获取一个钱包地址非常简单:
第一步,生成一个随机字符串(也可以自己定义一个口令);
第二步,由此字符串或口令(私钥)经过变换(散列变换SECP256K1),生成公钥;
第三步,生成的公钥经过重新编码(BASE58),生成钱包地址,公钥和钱包地址是可逆的,两者在密码学上等价;
由上面流程可以看出,我们可以离线生成大量钱包地址,且这些钱包没有被实名登记,相当于我们可以生成大量没有用户的银行账号,甚至为每一笔交易生成多个钱包地址,加大追踪难度,有效藏匿财富,如钱包应用BLOCKCHAIN就为每次交易生成单独的钱包地址。
那如果政府强制钱包地址实名登记呢?比特币钱包的生成不依赖任何机构,离线即可生成,无法做到完全的实名登记。
从比特币钱包的生成原理,发展出一个很有意思的概念,即脑钱包,它是这样运作的:
1,使用者想象一段文字,可以是任何东西,只有使用者知道;
2,用这段文字生成密钥;
3,用密钥生成钱包地址;
因此,只要使用者知道那段初始文字,随时都可以再现出钱包密钥和地址,只要这段初始文字不泄密,那钱包对应的财富就是安全的,不必需要银行卡、存折等,只需要记住一段文字。
假设你是一个贪官或犯罪分子,需要接受一笔汇款,于是你想象出来一段只有自己知道密语,并用该密语生成比特币钱包,然后将钱包地址发给对方,对方用人民币或美元兑换为比特币,再将这些比特币转入你指定的钱包地址,一次非法交易就完成了。在这个过程中,你是完全匿名的,唯一最重要的密语存在自己大脑中,不需要用虚假身份开户,并且随时可以兑现,更重要的是不会走银行结算体系。
从这点来讲,比特币可以有效降低了受贿、洗钱、非法交易等的监管风险。
比特币的价值回归
诚然,比特币汇率屡创新高,但仍旧很难认清比特币真正的价值支撑,在长达近8年的发展历程中,比特币始终没能回归到它的货币本质,从现在发展看,比特币仍将有很长一段时期会摇摆着寻找自己的价值锚点。当今比特币的价值聚焦在如下几个方面:
1,稀缺性,比特币的发行是个收敛的过程,每隔一段时间奖励减半,即货币发行量减半,随着时间增长,最终比特币会减产至0个,至此所有比特币发行完毕,数目稳定在2100万个,长期来看比特币还是有一定投资价值,就这点来讲,比特币和黄金更像;
2,技术价值,由比特币衍生出来的区块链技术,已经慢慢开始应用的其他领域,这种技术对相关行业的价值自不可估量,国外已有多家银行将区块链技术应用到具体业务中,提高自身业务效率,但技术价值不能算作比特币自身价值。
3,黑色产业,比特币自上线就深得黑产的喜爱,最著名的莫过于丝绸之路(SilkRoad),该网站大量出售违禁品,小到毒品大到枪械军火,应有尽有。比特币涉及的非法领域,很难估算规模,但通过比特币换汇、洗钱确实能容易点,我们只能揣测存在大量的和比特币相关的地下产业。
4,货币本质,实际上,比特币现在的货币属性相当微弱,整个亚太地区,也没有几家支持比特币支付的线下商店,尽管它确实是一种流通中的货币。比特币要不想沦为单纯的投资物品,就需要加强自己的货币属性,回归它的货币本质。
比特币身处的环境日益复杂,其能力的多样性也被不断发掘着,从最初的理想化货币到现在的多面手,比特币是否能回归到作为货币的本质,依然不得而知。现在国内的比特币市场,仍以投机为主,每年比特币价格都会急剧震荡一段时间,幕后庄家之心自不言而喻。至于比特币,它依旧在价值回归的道路上继续迷茫着。