去中心化,意味着陌生人之间的转账支付是直接进行的,没有第三方提供信用担保,这怎么可能呢?nothing is impossible,中本聪就设计出来了,当然技术上很复杂。我们这里先打个比方介绍一下,感受一下这根葱的厉害。
比如Alice要向Bob转账,注意两人互相不认识,毫无信任感,那如何直接转账呢?在我们目前的具有中心的网络下,Alice向Bob转账100元,银行收到Alice请求,并检查Alice账户余额,如果大于100,便减少100,同时Bob账户增加100余额。所有人的账户都是非公开的,权力掌握在中心机构手中。但在本聪的设计中,在一个去中心化的网络中,每一个用户自己都有一个账本,这个账本记录了从第一枚比特币诞生以来的所有交易记录,Alice要向Bob转账5个btc,会在村口喊一句“Alice要转账5btc给Bob”,村口居民张三听到Alice的声音,掏出自己的小本子,检验了一下Alice的账户,发现Alice有5个btc,便写下Alice向Bob转账5个btc。同时也喊出“Alice要转账5btc给Bob”,这样村民一传十十传百,直到每个村民都把这笔交易记录在自己的账本上。这样,每一个村民的账本都是一样的,这就是所谓的去中心化账本。在去中心化的网络中,刚才说的各个村民就是体系中的各个节点。这个去中心化的体系中每个节点的账本都是一样的,所以它几乎不可能摧毁。传统网路中,如果银行体系被破坏了,那么大家的账目就混乱了。但是在比特币网络中,每个节点都明确的记录了本聪开比特币以来的所有账目,即使节点几乎都炸毁了,只要还剩一个节点、就可以还原出所有记录,除非瞬间摧毁整个互联网。
我们要记住,在去中心化网络中,所有人都是不可信任的,这是我们的前提,上述例子中,居民自发记账,有没有可能记错呢?当然可能,张三如果跟Alice有仇,给人家肆意篡改,到时候我们该相信哪个账本呢?在大家都不互相信任的体系如何做到这点呢?首先要做的是要先验证这条消息是不是Alice本人发出的,这里用的办法就是签名,Alice广播这条信息的时候要在信息下签个名,当然网络上要数字签名了,大家收到这个信息以后要对照一下字迹,发现确实是Alice发送的,就承认这条信息是真的,验证数字签名的算法叫椭圆曲线数字签名算法,是一种非对称加密算法。
非对称加密算法,听着都很可怕,这里只能举个例子,听听气质,听完气质长精神。什么叫非对称加密呢?那要先明白啥叫对称加密。在传统的对称加密过程中,比如我要传递一个秘密数字给佐尔格,加密方式就是给这个数字加上33。当然佐尔格要知道这个加密方式,当他看到写着223这个数字的纸条的时候,他就会用223减去33,等于190。这个190就是我想传递给佐尔格的数字;佐尔格看后非常震惊,马上通过秘密渠道告知斯大林:德军要用动用190个师闪击苏联。
这种加密方式的关键在于、双方要实现约定加密方式,但如果事先无法约定怎么办,或者这种加密方式被敌方所窃取或者所破解了怎么办?这就是我们在很多谍战片里的情景,一旦密码本丢失,整套密码系统就完蛋了。
那么,有没有一种办法,即使对方知道了加密方式也破解不了信息?这个可以有,这就是非对称加密。
你知道了我的加密方式,竟然都破解不了我的信息,这个非对称加密要满足如下条件:有一个解密方式A与加密方式B,我要传递信息M,使用加密方式B进行运算,得到加密信息X=F(M,B),这个过程的好处在于,即使你知道我的加密方式B和加密后得到的信息X,你依然无法算出我的原始信息M,而原始信息M=F(X,A),即原始信息必须使用解密方式A算出。这里的A称为私钥,B称为公钥——意思就是私人密钥和公开密钥,比如特工小孙需要接受情报,他大可以放心的把公钥在网络上公布,任何想要给他发送信息的人只要按照公钥B的方式进行加密,得到加密信息X,小孙只需要对X使用自己的私钥解密即可,这样就避免了对称加密中加密方式的传递和破解问题,只要小孙保管好自己的私钥,这个体系几乎很完美,但是大家基本没听懂,对吧?
所以这里必须要举一个例子,一个非常简化的例子,简直就是一个小游戏、小魔术。大家提提神,我们一起小游戏。你现在随便想一个三位数,但你别告诉我,因为怕被旁人听见,你加密后告诉我,你把你想好的这个三位数乘以91,然后告诉我最后三位就行了;然后呢?然后我就知道你想的那个三位数是多少了,办法很简单,就是我把你告诉我的最后三位再乘以11,所得到数字的最后三位就是你想的数字。
那我们试一下,假定你想好的数字是321,想把这个数字加密后告诉我,于是你用91乘以321,等于29211,然后你告诉我最后三位是211,随后我用211乘以11,得到数字2321,这个数字的最后三位不正是你想告诉我的321吗?哇塞,好神奇。
或许有朋友觉得,是不是碰巧了啊。你321这个数字太特殊了啊。Ok,我们再来一次。这回你想好的三位数是598,然后你乘以91,这个乘以91就是公钥;598乘以91=54418,其最后三位是418,所以你把418告诉了我。于是我拿出了我的私钥11,乘以418,得到了数字4598,其最后三位是598,不正是你真正想要给我传递的598吗?我乘以11就是解密的过程。此所谓:公钥加密、私钥解密。就算别人偷听到了你秘密告诉我的418、并且也知道这是经过公钥加密的——也就是乘以91了,但他只要不知道我的私钥、也就是不知道乘以11,那他看着418照样无法解密,只能看着418干瞪眼,无法破解出598这个真正信息。
这就是非对称加密的牛逼之处——“公钥加密,私钥破解”,而传统的对称加密就是加密和破解用的是同样的密钥,而非对称用的两套密钥——“公钥加密,私钥破解”。
此时此刻,估计有盆友觉得震惊了,为什么我一乘11,直接就解密了呢?因为91乘以11等于1001,任何三位数乘以1001的后三位就是三位数本身。
大家注意,刚才这个例子只是一个极其简单的非对称加密。人家比特币所用的非对称加密那是相当的复杂,叫什么椭圆曲线数字签名算法。我们在刚才的例子里面,我们只说了单向的公钥加密、私钥解密,比特币世界里的椭圆曲线算法更神奇,不但有公钥加密、私钥解密,还有私钥加密、公钥解密,私钥可以推出公钥,但公钥推不出私钥。有了这点公钥和私钥的概念,我们可以讲述一下比特币系统下Alice向Bob转账的过程。
你作为一个比特币的用户,自然会有一个钱包,这个钱包下面可以生成一大堆的地址和对应的密码,由用户自主选择一个,甚至每一笔交易都使用一个新的公钥(当然只能是收款),这样可以避免任何人对你的追查,如果你频繁使用一个公钥,这些交易记录大家还可以推出一些有限信息,比如频繁程度,额度大小等,可以对你的财富做一些推测,你的隐私会受到威胁。在比特币的世界里我们把钱包里的地址叫公钥,把对应的密码叫私钥。我们可以简单理解公钥就是我们银行卡账号,私钥就是银行卡密码。我们每一个人在比特币世界里可以有茫茫多的银行卡,而且每张银行卡并不与你本人任何身份信息绑定,这就是比特币的匿名性。任何人只要有这个私钥,也就是密码,就可以操纵对应银行卡,也就是公钥里的比特币。
现在Alice要向Bob转账5btc,Alice会把这条信息用自己的私钥加密并发送到Bob的地址,也就是Bob的公钥,其实就是Alice先使用Bob的公钥加密一层信息,把这条加密后的信息再使用Alice自己的私钥加密一层,这时信息已经被加密了两层,一层是Bob公钥,一层是Alice私钥。大家收到这条信息以后,会用Alice的公钥来验证加密信息是不是Alice发送的,其实就是用公钥解密了Alice这层信息,从而验证了这条信息确实来自于Alice,但是这条信息还使用了Bob的公钥加密,Bob再用自己的私钥对这条信息进行解密,也就是用自己的密码打开了银行账号,也就是用自己的私钥打开了自己的公钥。
理论上如果你找到了一个私钥,那么你就是可以操纵其余额的,因为私钥是可以推出对应的公钥的,然后你就可以像上述一样对这个地址的记录进行数字签名,相当于就掌握了这个地址。反过来说,如果你的私钥丢了,那这个地址上的整个钱也就消失了,你想申诉?申诉个nothing,整个比特币世界是去中心化的,就没有中心机构可以申诉。
早期有很多用户不知道其中厉害,还将私钥保存在电脑里,结果被黑客入侵,私钥被盗,其中的比特币就全没了。所以,千万不要把私钥存在联网的电脑,可以写在纸上,再把纸放在鞋垫下面,这样不但安全、还能增高。或许有人担心,既然私钥是随机生成的,那么有没有可能大家生成了相同的私钥呢?有可能,nothing is impossible,但这种可能性有多小呢?小到了只有零可以与其媲美,所以大家不用担心私钥重合的问题。
现在要谈另一个重要问题,就是如何验证广播信息的真实性。也就是Alice广播说她要给Bob转5个币,但有可能她在骗人,因为她只有3个币,怎么能给Bob转5个?对呀,如何确认Alice的话是真的呢?以下我会把Alice当做你来说,这样你更有感觉、更有feeling。
如果要是有中心机构银行,那就好办了,就只要统计你的余额就好了;而比特币只储存交易记录,只验证这笔交易中涉及比特币的来源与去向,并不是对于你的余额进行检验。比如你要转账两枚比特币,这两枚的编号分别是1和2;系统并不关心你总共有多少枚比特币,而是检验编号1的比特币上次发送到了你的公钥,而且并没有再被发送出去,那这个比特币就可以被转账发送出去;编号2也同理,如果你只转账2btc,那么系统到此就判定结束了,如果你需要转账3枚,那么你就必须再援引一个btc的交易记录,我们说过,它记录了比特币诞生以来的所有交易记录,每一项资产和交易记录都是公开可查的!这就是公开透明的特点。别忘了,我们是与陌生人打交道,时时刻刻都是不信任。
事实上,Alice传达的信息中:我要给Bob转账5个btc。这5个btc都是有编号的,我们可以查这5个btc上一次是从哪里转到Alice这里的?这5个币有没有从Alice这里转走?如果都满足,那就表明Alice可以转走这5个币。所以比特币是一种去中心化的账本大家听出点意思了吧,比特币世界算你的余额,是算从你这个账户诞生开始每一笔收支,加减到现在你的正值,由于每一笔交易都是全网验证过的,每一笔交易的比特币都是有来龙去脉的,所以可以说它是相当安全的。当你在电脑上下载比特币客户端的时候,系统会一次性的下载所有交易记录,而且会验证一遍,一般需要一天一夜的时间,好麻烦啊;不过只要验证一次、就一劳永逸了。
Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
http://www.jinse.com/blockchain/157529.html
Panyang that han ek baca