没,五分钟是不可能的讲完的.
正好做crypto的presentation,我负责的blockchain内容在五分钟内飞过.
个人的确觉得区块链这个概念很有意思,于是记载分享一下.
联动co487的笔记.
我觉得讲的超清晰的youtube视频:
这里我换个逻辑顺序来讲.
Bitcoin,或说虚拟货币,跟blockchain密不可分.
这里讲blockchain在虚拟货币中的应用.
Blockchain跟其他的银行系统不同的是,
它依靠的不是trust central authority.
是trust computational work(计算量).
的意思是,想要在blockchain里(通过伪造数据的方式)偷钱,是有可能的,只是计算量太大太大太大,大到概率上,成本上,都无法实现,所以才安全.
首先得介绍达成如此复杂计算量的基石.
Blockchain里最核心的算法是hash function.
Hash function简单的说是one way function.
像是黑盒子,把任何的message放进去会output一个fix length,但看上去像乱码一样的数串.
当然并不是乱码,它是单向加密了.
一个message放进同一个hash function下,不论是什么时候放进去,都是会output同一个hash value.
那串乱码就是那个message对应的的hash value.
比如我在图书馆里给Fune的description:
ca4f9dcf204e2037bfe5884867bead98bd9cbaf8
是来自于名为sha1 hash function output的hash value.
使用的Message是Welcome.
可以用online generator跑一遍,output肯定是一样的.
Hash function特性:
更改一个bit hash value会全部变掉.
比如大小写的更变,我input进welcome:
c0b137fe2d792459f26ff763cce44574a5b5ab03
完全不同吧.
这是因为hash function被设计成,单向加密,算法很复杂很复杂,目的是完全没法从hash value猜原本的message.
唯一得到原本message的方法是 一条一条尝试,再比较答案.
Hash在实际下的运用是密码储存.
比如银行得知道密码,才知道是否这位用户输入了正确的密码与否.
银行有密码储存安全性的顾虑,如何使密码安全?
所以比起直接储存密码,他们可以储存密码的hash value.
这样当用户输入密码时,自动hash一下,然后再比较hash value可以达到同样的效果了.
同时万一数据泄露,得到hash value并不能反向解码出原本的密码.
我猜系统不能恢复忘记的密码,而只能重设密码,可能也是,“系统其实并不知道你真正的密码”的原因吧.
了解了hash function之后可以稍微讲些blockchain.
Blockchain是由一个个,储藏了转账记录的block组成的.
也就是说谁有多少钱,是用那些转账记录所记载的.
那么如何让每一条转账记录安全呢?
得讲到digital signature(数字签名).
Digital signature可以算一种特殊的hash function.
它跟刚刚所讲的藏密码例子的hash function不同的是,它目的不是藏信息,而是大小写例子里的,稍微变一下 hash value会全部更变,的特性.
如何实际运作的,是比如我们有Alice,她要给:
Alice给Bob转账了100.
的信息签名.
Alice拥有两个key,private和public.
Private key是她自己用在“签名”这件事情上的.
Public key是其他人用来鉴定这条消息是否是Alice所签,或在Alice签名后,是否有任何人篡改.
在视频里提到了个细节.虽然没办法将签过名的“Alice给Bob转账了100.”给篡改,但如果Bob把这条信息复制了一百遍呢?
视频里讲真正的转账信息是会带序号的,比如说:
1.Alice给Bob转账了100.
那第二条应该以2开头,如果Bob只是复制,那会把1也复制进去,信息一眼就会看出有问题.
所以这就是一个block example.
当交易进行过后,所有user 会把他们的记录签名,播报出去,然后block creater(等会讲)将那些记录收入在一个block里面.
单单给记录签名是不够的,得给整个block加道锁才行.
所以blockchain另一个很重要的概念:proof of work,确保block安全.
还记得blockchain是因为computational work(计算量)而安全的吗.
Block设定,在整理好了的交易记录后,加上某组特殊的message,使整个block的hash value以很多零(视频里以30个零举例)开头.
因为hash function的单向性质,要得到这个特殊pattern的hash value,找到这特殊message的方式是一个一个bit去试.
每一个message能hash出来的概率,因为hash value算是0和1组成的,是2^30分之一,粗略来说是一百万分之一.
要找到这组数真的得很多很多的计算量.
任何一个在block里的数被篡改了,就能把这百万分之一的寻找再跑一遍.
最后把block连起来.
Blockchain大体是这样.
每一个block里包括了上一个block的hash value来有迹可循.
也有proof of work像保险栓一样保证这个block安全.
最后是block creator.
刚说到block creator是负责接收每个人发送的转账记录,他们也负责计算proof of work.
这个系统同意每个成功计算出proof of work的block creator在block中记载他们获得的(受规定的)奖励.
这个钱不从任何人来,整个比特币是如此增加的.
所以有很多很多人在同时收集信息,计算,把他们算出来的block发出去.
那如果有两个人都算出了下一个block呢:
回到计算量的规则上来,blockchain是信任计算量大的chain,也就是更长的chain.
当有两条平行的chain,就看后面接下去的chain,总会有一条更长,之后短的那条长不过另一条,就算死掉.
这样会保证整个系统的安全:假设我伪造了一个block,但我一个人的计算能力是比不上那么多人的同时计算,就算我能接一个两个,我无法造出整条链.
所以你看整个blockchain的安全是建立在数学的构建和大量block creator的实施.
如果没有那么多block creator提供的计算量,那也保证不了安全.
有评论说blockchain这个概念也可以用在其他的地方,比如信息储存,track投票记录.
我觉得是很有趣的idea.
但blockchain还有个特别之处是,吸引大量block creator的原因是有钱可赚.
这又是另一件事情了.
一个国家所发行的货币,价值所被认可,来自于对那个国家政府的可信度.
而比特币这样去中心的货币,没有调控,价格能过山车大跳水是完全来自于使用的人给予的价值.
当人们认同它的价值,大量人开始使用,比特币价值提升,吸引更多的block creator,才更加保持这种安全平衡.
像是民主所带来的公平,一样的东西.