你好,我是高朋,今天桌克密码学课更新到了,比特币跟区块链的课程了,我们一起了解下,比特币的那些环节用到了加密法。
中本聪设计比特币的初衷是 ,做一个点对点的电子现金支付系统,摆脱中央银行的管制。
比如说收款和支付都是匿名,交易不能更改、不能伪造,币的数量有限,不能出现通货膨胀等,所有这些功能都由程序自动保障。
既然没有某个机构维护,币又不能伪造,加密技术就一定会用到了。
比特币中的密码学并不复杂,只有2种:一个是SHA256加密法,另一个是非对称钥匙系统。
我们先说SHA256,它的全称是“安全哈希算法”,可不是嘻哈算法。“哈希”是Hash的音译,Hash就是进行Hash函数运算的意思。
Hash函数是这样,不论原始数据有多长、有多少位,经过Hash运算后,输出的值的长度都是固定的。
这有点像图书馆里给图书编号,不论是一本20页的足球规则手册,还是1700多页的《资本论》,它们的图书编号都是一个几厘米长的条形码。
但这个条形码要派上用场,需要几个先决条件:
1. 任何书不论篇幅长短,都能通过Hash函数计算出唯一一个条形码;
2. 条形码的长度是固定的;
3. 不可能通过条形码,反推出原书的内容。
Hash函数类型很多,比如说比特币中用到了SHA256,256就代表经过函数运算后的结果,是一个256位的2进制数字。你可以把它理解为条形码的长度。
2
为什么我们要把一个东西转换为一个256位的数字呢?其实最早是为了验证两个文件是否相等而想出的办法。 桌克,估计跟我一样也是个金庸迷,他用了金庸武侠小说的人文来举例子了。
比如:
少林方丈玄慈大师把武功秘籍《易筋经》写成一个程序放在网上,供爱好者下载修炼。但玄慈担心有些心术不正的人,把这份文件的内容偷偷改几个字,故意让练功的人走火入魔。为了防范这个,他可以怎么做呢?他就可以把原版《易筋经》通过SHA256运算一下,生成一个值,我们称之为S1。
玄慈上传这份文档后,也把S1等于多少写上,并且注明“可能有坏人偷偷更改经文,为了避免爱好者走火入魔,请你们下载后先做一次SHA256运算,看看运算结果和我给的S1是不是一样,如果完全一致,你们下载的《易筋经》就是正版,就可以练了”。
SHA256在验证改动与否这方面,真的挺强。比如下面这3行文字只是标点上有些微小变化,内容是不变的,但它们对应的SH256值却差异非常大,一望便知这几条文字肯定是不一样的。
原文里微小的不同,就会造成SHA256值巨大的差异,而且这种差异是毫无规律可循的。
原文1:动静不失,人所易明。 S1: 284c4ddd2e5ef97924cc70e90cd02fd792e3fd62 原文3:动静不失,人所易明 S2:991780940ced6e6f910013f2ba2ac732e23601ef 原文3:动静不失人所易明 S2:62e07ce4d7d529a6268841d521bf882d3b385199
3
那你要问了:这种函数用在比特币的哪一种功能上了呢?答案是好几处都用到了。
第一处就是支付信息的部分。
什么是支付信息?比如段誉找薛神医治病后需要付钱,段誉就写了一张付款的纸条,上面写“段誉需要支付100元给薛神医”,这就是支付信息。
但这条信息是有风险的,万一有人篡改了内容怎么办?在100元后面加一个“万”字,那段誉就亏死了;或者把薛神医改成薛老师,那薛神医就哭了。
而刚刚的SHA256算法,就避免了信息被篡改的问题。“段誉需要支付100元给薛神医”这条信息的SHA256值是确定的,在发出这条信息的同时给出SHA256值,之后任何的改动都会被发现。
但只保证了支付信息没有被改动过,这是不够的。因为如果有心怀不轨的坏人,写出很多条“段誉需要支付1亿元给薛神医”,然后录入支付系统,那段誉可就要哭死了。
所以,还需要加上数字签名。数字签名你可以理解成私钥。
它们共同保证了支付信息的内容,不但没被篡改过,而且还是发信人认可的。
4
如果江湖上每个人付钱的人和收款的人都用这种方式记账,把信息都记录在同一个账本上,而且这个账本还是可靠的话,欠债还钱的事儿就都说得清了,江湖恩怨也自然少了很多。
其中最重要的一条就是:段誉支付薛神医100元钱,可是段誉钱包里真的还有这么多钱吗?
这个疑问在传统银行系统里不是问题,因为央行可以查看任何人的账户余额。但是设计一个没有中央集权的交易系统,也就是大家聊起比特币最常说的“去中心化”的交易系统。
在比特币系统中,任何一个参与者和其他参与者有同样高的权限,不存在谁管理谁,谁限制谁。所以余额够不够这一步,只能通过单独的设计。
余额有多少,不能自己说了算,自己说自己还剩多少钱没人信。这一步的解决方法是——每笔交易都必须把以前的交易作为基础。
比如“段誉支付100元给薛神医”,这笔交易可以进行的前提是,之前有人付给段誉过钱,而且那笔钱不但超过100块,还没使用过。这样段誉支付100块给薛神医,这笔交易才能达成。
咱们假如之前曼陀山庄的王夫人,已经给过段誉100块钱了。那么段誉给薛神医付钱时,就会发送标准信息:
王夫人支付100元给段誉,段誉支付100元给薛神医。
然后,外加段誉的数字签名和段誉的公钥。
薛神医收到标准信息后,该用SHA256确认的确认,该用私钥解锁的解锁,通过一番运算,就可以确认这笔交易。
5
听到这里,你可能觉得很麻烦,跟我们的银行卡的转账比起来,费劲多了,效率低多了,
之所以这么别扭、这么麻烦,是因为比特币规定了,写入账本的信息必须以之前的交易为基础。之所以要以之前的交易为基础,是因为这套交易系统里没有中央银行。之所以一定要去除中央银行,那就不是技术原因了,而是价值观的问题。
那个价值观,就是去中心化。
不只是中本聪一个人,相当多密码学界的人都是这样的,他们可能平时上班是网络安全专家,下班就是黑客。他们凭借缜密的思维构建了开放的互联网世界,于是就不希望这个世界里有监控,有审查,有墙。
互联网在他们脑中,应该和他们的思想一样,是自由开放的。
由这套理想主义价值观创造的社区,就是开源社区;由这套价值观设计的货币,就是比特币。
有人想玩mgk项目不,我这边有分享的平台耶
8分钟区块链 回复 @木木林鸟: 下载mytoken一查便知
高老师 微信号
哪个左老板,哪里有他的节目?请有知道的朋友告诉我一下
chen陈庆明 回复 @俞凌雄助理: 卓克
用图书馆的例子比喻哈希函数,很直观,通俗易懂!
慢慢理解区块链的底层原理。
高老师,为啥各平台的币价不一样,比如MYTOKEN和火币,币安的价格
张朋飞_a3 回复 @李营村: 就像菜市场个菜价都有一点区别一样,各平台随时都在交易,最后一笔的成交价决定了这个平台的现价。个人看法,还请高老师给出正确答案
通俗易懂
现在更新节目的主播,微乎其微了
一个是SHA256加密法,也就是安全哈希算法,另一个是非对称钥匙系统。他保证了支付系统的安全可靠运行。是由智能合约自动执行。任何人无法篡改和控制。
草原老六 回复 @草原老六: 感觉今天内容好理解多了!感谢高老师一年的坚持,让大家点滴积累知识!