最近需要做一个区块链的演讲,在此记录一下。
说区块链就不得不提到比特币,那么说之前我们先谈谈现有的银行支付或者在线支付的情况。
假设嘻哈要用支付宝付1元给小明,我的步骤如下
表面上看我付款是直接与小明进行交易,但是实际上你目前是在信任一个隐含(hidden)的第三方,那就是支付宝了
支付宝上的用户就像如下图所示的结构
学过图论的同学应该知道,这样的结构非常不稳定,当中心节点受到破坏之后,所有节点都会受到影响。现实中那就是,如果支付宝遭到黑客攻击,篡改了我们的信息,那么我们的钱很有可能不翼而飞。虽然我们相信支付宝足够安全,但是诸如Facebook的事件还是值得敲警钟的。
因为这样,所以嘻哈坚持不把鸡蛋放在一个篮子的原则,还用微信支付 2333
但是有一个叫中本聪(Satoshi Nakamoto)的天才为了解决这个问题在十年前利用区块链技术发明了一种叫比特币的东西,8年前大家还用一万个比特币换pizza呢,不知道现在做何感想
🍕
今天不谈比特币的价格,想谈谈比特币背后的区块链技术是怎么做到去中心化,人人都是VIP的
要做到这点,就拿支付宝的例子来说,因为只有支付宝一个人掌握了我们所有人的账单记录,如果被篡改,我们大家都会被影响。那么如果所有人都有这个账单的话,黑客就得把所有人的账单都改成他想要的才行,就我们中国几亿个忠实用户来说,这黑客可得累死呢!
比特币就是基于这种想法,让人人都是账单的记录维护者,使得这个网络人人都是VIP,也少了信息不对称的风险。
首先区块链是一条区块组成的链,那么这条链怎么来的呢?
在比特币系统中,假设A付钱给B,那么当AB确认交易后,我们需要告诉整个系统我们的交易成功了,经过确认之后会有矿工讲AB的交易记录记下,并准备打包成一个区块,放入原有的区块链中。多个区块按照产生的时间先后依次连接,就形成了区块链。
但是问题又来了,网络有延迟,以哪个的时间为准呢?一秒钟可能会产生N个区块,到底加哪一个呢?
于是中本聪提出了一个叫做Proof of work的概念,这个概念基于去算一个密码学的解,类似于暴力计算(我不喜欢称之为难题,因为其实挺浪费资源的又没解决实际问题)。
一个区块的样子如下
由一个头信息(HEAD),一个奖励信息,和账单信息加上随机数组成。
头信息需要通过计算上一个区块的Hash值来得出,具体如下
通过一个叫做SHA256的函数把这个文件加密成一个256位的01序列,这个加密函数呢有几个性质
- 账单文件如果发生微小改动,这个函数值会完全不一样(这就是随机数的用处)
- 每一位出现0和1 的概率是一样的(1/2)
- 正向计算很简单反向计算现在几乎不可能
基于第二条性质,我们如果学过高中概率论就知道,如果我们需要前面连续N个数都为0,那么发生的概率是(1/2)的N次方,当N很大的时候这个概率很低,可能需要计算2的N次方才出现一次。基于此,我们只需要设置N的大小,就能把问题变得很困难,而且还是可控的,可以控制为全世界的计算机平均计算10分钟才能得到一个00000001010这样的序列。一旦得到了这个序列,那么系统就说你被证明工作很辛苦了,我批准你这个区块做好了,矿工立刻将其加入到区块链的尾部并告知全世界,并且得到了12.5比特币。由于比特币只维护最长的那一条链,由于他先做好了,他的链是目前全世界最长的一条,其他人在看到他做好了之后并且验证有效之后,就放弃手头的工作,转而去计算他那条链之后的账单(如果你不这样做的话,可能别人都走得很远了你才回过神来做了无用功)。当然细心的小伙伴可能发现了还有一些问题没有解释清楚,如果有问题的小伙伴可以在下方留言。
如果有黑客想要对这条上的数据链进行篡改,就需要比别人都计算得快,当他是系统中最长的链时,他就成功了。然而由于Proof of Work,这个工作量实在太大了,如果很难有人凭借一己之力来对抗全世界。即使他可以(操纵了全球51%的电脑),他也没必要去操纵比特币了。
之后是我用电脑6个核心模拟的区块链生成视频
可以看出,黑客即使占用了1/6的电脑,速度还是远远慢于整个系统。代码可以在此下载:https://github.com/xihajun/Bitcoin_simulation
想多了解的可以看看这些嘻哈参考的视频:
欢迎转载:注明转载出处就好:):嘻哈小屋 » 【总结】区块链技术以及加密算法模拟