查看原文
其他

宝,我在玩比特币,什么币?爱你北鼻

青苗法鸣 2022-10-02

原创文章,已得到独家授权,转载请添加公共微信“qmfmggwx2”进行接洽,取得许可后方可转载。对未经许可转载导致的侵权,本编辑部保留追究的权利。


编者按:事实上,比特币问世已有十余年,作为比特币基础技术架构的区块链也早已被广泛应用于生产生活的各类场景中。比特币因何兴起?它又是如何改变了中心化的信任机制?对于上述疑问,一位法学生给了我们有趣、有梗、有料的答案!


作者简介

清风,中国石油大学(华东)文法学院硕士研究生,研究方向:经济法学。


提到比特币,大家脑海里想到的往往是这些:“比特币跳水!印钞机恐变碎钞机”、“比特币暴涨,如何抓住财富机遇?”、“比特币,彻底的庞氏骗局......”不难发现,比特币在投资圈已然混的风生水起,有的人将它视为“创富神器”,有的人因他一贫如洗。殊不知,如今的比特币早已背离了设计者的初衷。因此,本篇文章就详细介绍比特币提出的最初动机,它究竟解决了哪些问题以及比特币的关键运行原理。


一、虎口夺食:对抗国家发币的逆向选择

2008年11月1日,中本聪发布《比特币:一种点对点的电子现金系统》白皮书,构想出去中心化的记账系统。2009年的1月3日,中本聪发布了开源的第一版比特币客户端,并通过“挖矿”得到了50枚比特币,由此产生的第一批比特币区块被称为“创世区块”(Genesis block)。值得注意的是,他在创世区块留了这么一句话:“当时正是英国财政大臣第二次出手纾解银行危机之时。”



中本聪是谁已经不重要了,重要的是他为什么设计比特币以及比特币的运行原理是什么?


首先回答第一个问题,中本聪为什么设计出比特币。众所周知,2008年全球陷入次贷危机,各国财政都过得相对惨淡。中本聪在创世区块留下的话显然是对现状不满,以及嘲讽英国政府应对策略拙劣,而这可以窥探其初衷。即中本聪似乎是一名奥地利学派的忠粉,因为奥地利学派不支持政府采取通货膨胀手段缓解金融危机,他们认为经济危机和经济盛衰的凶手都是政府人为操纵货币导致的。


更有趣的是,中本聪发布比特币白皮书的网站,必须提供出生日期进行注册,中本聪填写的是1975年4月5日,当然,没有人会认为这些信息是真实的,但如果认为是胡乱填的,又低估了一个密码学家的自我修养。原因在于,1933年的4月5号,美国总统弗兰克林·罗斯福签署了政府法令6102,法令规定所有美国公民持有黄金是非法的,必须以美元予以兑换。此举目的是让美国的债务贬值以抗大萧条,事实上该项措施也确定起到了预期效果。但对于本国国民而言,法令使得国民财富被强制洗劫了将近40%。直到1975年,福特总统签署“黄金合法化”法案,方才宣布美国人可以再一次合法地拥有黄金。


综合上述政治隐喻,便可以揣摩中本聪的真实想法,那就是为了防止通货膨胀,保护国民私有财产,绝对不能让国家来发币。


国家不发币,谁来发币?中本聪给出了答案,是去中心化的节点,是计算!接下来让我们走进比特币的世界观。


二、惊险一跳:比特币的运行原理

前文提到,为了对抗国家发币可能引发的通货膨胀,中本聪设计了一种去中心化的电子记账系统。对于去中心化的电子记账系统该如何理解呢?


在解释去中心化的记账概念之前,首先要知道什么是中心化的记账系统。我们日常生活中用到的微信、支付宝、银联、信用卡等进行消费转账,背后都是银行在进行记账,之所以让银行来记账,是因为我国银行一般不会倒闭破产,背后是国家信用。结果是,我们花了多少钱,剩了多少钱都可以在银行查到。银行就是记账的中心!


但中心化的记账系统存在着三个显著的问题,第一:腐败。权力导致腐败,绝对的权力导致绝对的腐败!相关新闻可以在网上查到,在此不再赘述。


第二,管理不善。这主要表现在大量印钱导致的通货膨胀。比如,美国就是通过大量印钱应对经济危机,但大量印钱导致物价飞涨,钱的购买力就会急剧下降(实际上是钱的价值在下降)。一个非常极端的例子就是委内瑞拉与津巴布韦,用称钱的方式买卫生纸你见过么?


第三,信用崩塌。政府的信用并非一直稳固,有的国家可以随时否决现金的法律地位,比如印度曾一夜之间取消大面值纸币,多么痛的领悟!



中心化的记账存在着诸多弊端,于是,去中心化的记账系统应运而生。


去中心化的记账系统中,货币发行没有法定机构,市场交易没有政府监管。每个人的交易信息都是公开的,当然每个人也都是匿名的,网络中的每一个用户都可以对别人的交易记录进行记账,而且账本都是允许让别人看的。例如在交易网络中,有甲、乙、丙、丁四人,彼此间进行交易。


交易社区中的每个用户均可以对上述交易信息进行记账,并将交易信息进行打包向全网广播,其他所有用户发现后,便可以根据前者的区块信息继续打包,如此循环往复,每个区块如同链条牵引一般,持续不断。一般而言,每一个区块的内存约为1兆,可以储存大约4000条信息。


(一)为什么要帮别人记账?

如此,问题来了,对与自己有关的账目进行记录倒也无可厚非,用户为什么还要帮别人记账呢?  


答案是:记账有奖励!!!这同时也是区块链的激励机制。


奖励形式是比特币,奖励来源主要包括两个,一部分为手续费。不同于银行高额手续费,比特币交易的手续费较低,这份手续费交易双方支付,并奖励给记账的用户;另一部分为系统提供的打包奖励,打包奖励是最主要的奖励来源。接下来,我们主要介绍打包奖励。


中本聪原本构想十分钟可以打一个包,奖励50个比特币;每过四年奖励减半;

计算可知:比特币总的存量大约有50×6×24×365×4×(1+1/2+1/4+1/8+....)≈2100万枚。截止到2021年已经挖出了大约1400万枚,预计2140年比特币将会全部被挖出。


比特币问世不久,一个人、一台笔记本电脑,就可以挖到比特币。那时候的挖矿,成本低廉,所以才有程序员愿意花费一万个自己挖的比特币去买两份披萨。同时,2100万固定数量保证了它不会通货膨胀的基本设计理念,也成为了最近几年来疯涨万倍的关键因素。比特币的行情,据作者所知,现在大约每枚比特币价值约3万美元



(二)为什么记账的是他不是我?

如此高涨的行情自然驱使着众多用户争相记账,但问题是,在整个交易网络中,只能有一个记账者,因为一旦记账者多了,交易网络的信任机制就会瞬间崩塌,大家不知道该相信哪一份账单。所以接下来的问题是,整个交易网络究竟选择谁来记账?为什么选择他?


对于记账人选择的难题,中本聪设计工作量证明法作为解决方式。简单来说,就是每个人可以选择做一道非常难的数学题。这道数学题仅凭人脑是根本算不出来,必须借助高速计算机来运算,谁能在第一时间运算出来,就能证明你的工作能力强,就会得到大家的认可(共识机制),你就能获得记账权,或者说获得比特币的权利。


这里用来计算数学题的计算机被称为“矿机”,每个参与计算的人又被成为“矿工”,如果你房间屯着大量的“矿机”,那便可以称之为“矿场”。



(三)记账不易:让人头大的“哈希函数”

这是一道怎样的数学题,难到需要使用高速计算机来运算呢?


这道数学题叫做哈希函数(通常为SHA256),又称散列算法,就是指一种把任何长度的数据提炼出固定长度数字“指纹”的方法。按照官方的解释,哈希算法有一个输入和一个输出,输入时任意长度的数据,在算法内部不管输入的数据是何种形式,都以单纯的比特序列来处理。简单来说对于哈希算法,它看到的输入就是一串由0和1组成的二进制数。哈希算法的输出就是最后的哈希值或者散列值,具体来说就是哈希算法把数据打乱混合,压缩成摘要,使得数据量变小,重新创建一个叫做哈希值的指纹。只有完全一样的输入值才能得到完全一样的输出值;输入值与输出值之间没有规律,所以不能通过输出值算出输入值,要想找到特定的输出值,只能采用枚举法,不断更换输入值,直到找到满足条件的输出值。


官方的解释总是那样绕口且复杂,为方便理解,给大家举个例子。


甲作为一个矿工,他如何进行解题呢?首先,他会在交易网络中发现前一个区块的信息,然后他会将前块信息的作为哈希运算的条件之一,哈希运算的其他条件(字符串)还包括时间戳、难度随机数、区块版本号等内容。接下来,他会对字符串进行哈希运算,最终得出的结果是仅包含0与1的二进位制结果,如0.000000101010101.....。


假设系统要求,运算结果的前六位必须为0,上述的结果正好符合这个条件,那就说明甲算对了这道数学题,他就能打包向全网广播并获得比特币的奖励。



因为进行哈希运算的所有条件中,前块信息、时间戳、区块版本号等内容是已经确定,不能更改的,能够改变的只能是难度随机数,也就是系统规定前几位为0的条件。因此,只能利用计算机一个一个的去试,才能解题成功。而随着挖矿者人数越来越多,难度随机数也会而来越大,所以如果想要尽快算出正确结果,只能从矿机算力矿机数量两个方面下功夫了。


(四)不容忽视的三个问题!

事情到这里就结束了么?No No No!这里忽略了三个非常重要的问题,那就是如何防伪、防止双重支付以及防止故意篡改。


首先是防伪。别人怎么能知道我所打包的交易信息是真实的呢?这里就要涉及到区块链中的电子签名与非对称加密。


首先,比特币的用户注册之初便会得到一个字符串--私钥,同时根据私钥可以得到一个公玥的字符串和一个地址。私钥相当于你的私人钱包,是匿名而且隐密的,公玥与地址则是公开的。私钥的作用是对数据进行加密,公玥则可以进行解密,有趣的是,通过私钥可以推算出公玥,而通过公玥却不能倒推出私钥,这被称为“非对称加密”。非对称加密意味着只有节点用户自身可以加密,其他用户只能进行解密。


例如,甲利用私钥将自己与其他的人的交易记录进行加密,随后甲向全网进行广播,广播的内容为交易记录、公玥以及密码。其他用户看到后会对这条记录产生疑问?即交易记录是否是真的?于是其他用户就会进行验证,验证的方式为:通过对交易记录进行哈希运算,得出一个结果A;然后根据广播的公玥、密码同样进行哈希运算,得出结果B,两个结果相互对比,若一致,说明交易记录是真的,若不一致,说明交易记录是伪造的,最终会拒绝这条信息,不会将其打包。这样一来,就能保证甲与他人的交易信息确实是由甲本人发出,而不是伪造的。



其次是,如何防止双重支付。所谓的双重支付是指在交易网络中,甲同时向所有用户广播其分别与乙、丙发生了数额为1比特币的交易。实际上,甲只与其中一人的交易为真实的,那其他的用户如何辨别呢?这就类似于民法中的“一物二卖”的情形。



由于比特币交易网络是公开的,这就意味着某个用户在何时取得比特币,在何时消费了比特币,全网其他用户是可以进行追溯检查的。


例如,某个用户甲同时向全网广播两条交易记录,分别为:交易记录1:甲向乙支付1比特币,交易记录2:甲向丙支付1比特币。其他用户可能有的先接收到交易记录1,后接收到交易记录2,有的用户则可能相反,于是接受到交易记录的用户便会对交易记录进行打包确认,只要某个用户,如A率先解开了哈希函数的值,就证明了这条交易记录被确认了,其他正在打包、解题的用户就会放弃手头的工作,转而在A广播的区块后面继续打包,而另一条交易记录则会被抛弃。通常而言,广播的信息在接下来的10-20分钟内通过一个 挖矿的处理过程被比特币网络所确认,这同时意味着比特币钱包之间的价值转移。


从局部来看,虽然在某一时刻各个小组的账簿主干可能存在不一致,但大方向是一致的,那些偶尔由于不同步产生的小分支,会很快被淹没在历史中。如此一来,即便甲进行了双重支付,也只能确认其中的一条交易记录,即便确认的这条可能是虚构的,但整体而言确保了形式上的公平。


最后,如何防止故意篡改。在介绍解释如何防止篡改之前,首先要向大家介绍比特币一个重要的原则--最长链原则。在矿工打包、接链的时候,可能会出现这样一种情形,那就是同时有两个或者多个矿工找到了哈希函数的值,这就意味着一条区块链可能会出现分链的情况。而一旦区块链进行分链,将立刻粉碎交易社区的信任,这是绝不能容许的。因此,中本聪设计了最长链原则,保证了区块链的唯一性。一般认为,最长的链是最正确的链!因此,即便短时间内区块链出现了分叉的苗头,后续的矿工还是会继续对多个分链继续运算,一旦某个分链超过了其他分链,那么该分链就自动成为主链而被全网所承认。那其他分链有木有上位的可能呢?当然有,只要某分链拥有的算力远远超过其他分链,就可以在长度上超过其他分链,成为主链。



在了解最长链原则之后,便可以轻松解决故意篡改的问题了。如果你在修改某一个区块的交易信息,为了确保其他用户相信你的修改,你就必要努力运算,疯狂做链,最终你所延伸出的区块链超过了原有的链条,那么大家自动默认你的区块链是正确的,是值得信任的。后续的记账者也会在你所修改的链条下继续记账。如此,你便达到了篡改的目的。当然,上述情形只是理想中的状态,几乎不会有人控制全网50%以上的算力,而且,即便有人获取了50%的算力,仅仅使用这如此庞大的资源去修改某一条交易信息,着实得不偿失,还不如继续挖矿呢。


三、前路漫漫,诸君慎行

综上,比特币相比于传统货币或者传统中心化的记账系统有如下优势,第一,你可以自己掌握自己的货币,拥有更多的交易自主权。第二,比特币交易没有“中间商赚差价”,交易成本更低。第三,比特币的基础技术架构是区块链,保证了交易的公开透明与可追溯。


但比特币的缺点同样明显,首先,2100万的货币定额限制了商业发展,宏观经济运行的理想状态是温和通胀,而比特币作为货币却保持通缩,长久下去容易引发大萧条。其次,短期来看,比特币价格一天三变,完全背离了货币的稳定性,更像是投资品;长期来看,比特币抢了政府的饭碗,在工厂与军队面前,故事再美好,设计再精巧,都是浮云。最后,挖矿大量消耗能源。比特币挖矿每年消耗约133.68太瓦时的用电量,已经超过了挪威、荷兰等国家,并且这一数字还在呈指数级增长。


总之,对于比特币我们要理性看待,其早已从原有的打包奖励演化为炙手可热的投资品,既然是投资品,最后还是落到了那句话,币圈有风险,投资需谨慎啊!


本文责编 ✎ Leila

本期编辑 ✎ 倩妹



推荐阅读

“数据垄断”:从表象到本相

论数据垄断:大数据视野下反垄断的法理思考

论算法创作物的可版权性与著作权归属

理性看待本次《个人所得税法》修改

影响中国30年:分税制改革始末



联系我们

长期收稿邮箱:qmfmbjb@163.com


社群交流请添加公共微信:

公共微信1:qmfmggwx  

公共微信2:qmfmggwx2


付费咨询与讲座请添加小助手微信:qfxzsggwx


商务合作请添加微信:Fuermodian


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存