今天的越写越快乐系列为大家带来《区块链第一课》读书笔记的第二章节深入区块链技术中的密码学算法,通过自己的读书心得结合作者对于区块链技术的观点,希望给大家带来一个看待区块链不一样的视角。
关于作者
陈浩,元界CTO,海枫藤/RightBTC交易系统架构师,维优联合创始人,区块链技术早起布道者区块链数字经济布道者,开源贡献者,极客时间《深入浅出区块链》作者。
关于本书
这本书的副标题是深入浅出技术与应用,是写给区块链的入门者,也包括我这个菜鸟,书中的很多观点通俗易懂,值得我们去思考和深入挖掘个中的内涵。
读者对象
- 学习区块链的入门者,包括技术人员或者非技术人员;
- 希望了解区块链发展前沿概念、渴望全面梳理区块链知识结构的区块链从业者;
- 希望系统学习区块链技术的区块链领域技术人员;
- 不具有区块链从业经验,希望进一步了解区块链额产品经理、编辑或记者;
- 希望深刻理解区块链内涵、对区块链有浓厚兴趣的人。
哈希算法
哈希算法是一类数学函数算法,又称散列算法,它是一种数据映射关系。为了方便举例,我们假设 h = HASH(x|z)
,输入一个任意长度的数据z
,经过哈希运算后,返回固定长度的数据h
,其中z
叫作原像,h
是哈希结果,又称作“数据指纹”,z
的可选数据集合构成了X
。
哈希算法有下面4种特性:
- 原像不可逆。
- 难度友好性。
- 发散性。
- 抗碰撞性。
目前流行的哈希算法包括了MD5、SHA1和SHA2,其中MD5被证明不具有强抗碰撞性。SHA是一种哈希函数族,分为SHA1、SHA2、SHA3,代表了三代哈希标准,目前使用比较多的是SHA2系列。
区块链上的哈希算法
哈希算法被广泛地使用在构造和验证区块、交易的完整性上。哈希算法的4个特性使我们可以把任意的交易数据做成数据摘要,然后再将他们一个一个链接起来,形成数据块的链式结构,这样可以通过验证每个区块来间接地验证交易。每笔交易元数据也可以做成哈希数据摘要,用于验证交易数据的完整性。
在Blockchain Explorer区块链浏览器上,我们可以随处可见哈希编码(一大串看似有规则的字符串)。
默克尔树
哈希算法的一个重要应用是默克尔树。默克尔树是一种数据结构,通常是一个二叉树,也有可能是多叉树,它以特定的方式逐层向上计算,直到顶部,顶层叫作默克尔根。最常见和最简单的默克尔树是二叉默克尔树。比特币和以太坊都使用了默克尔树这种数据结构,只不过里面存放的数据都是哈希数据。以太坊中针对比特币的设计进行了改进,叫作默克尔帕特里夏树,相对于比特币在区块头中只有一棵树,以太坊有三棵树。
区块链的挖矿算法也应用了哈希算法,挖矿算法利用的是其难题友好性。
我们回顾一下比特币的地址是如何生成的,就了解了它是如何通过随机数一步步生成比特币地址的。
个人感想及收获
今天的文章我们回顾了哈希算法和其在区块链中的常见应用,我们可以利用它来校验区块的完整性,也可以利用它来生成链式的数据结构以供记录交易的信息,我们日常的生活中是否使用了这种算法呢,我们是如何看待这种哈希算法呢,我们该如何利用它呢,我们在复盘和理解这些知识点的时候有没有联想到其他有用的知识点呢,我们该如何理解区块链技术带给我们的改变呢,我相信世界在变,我们也要改变,我们坚信技术的发展会给我们的生活带来更大的变化,也会慢慢改变我们对这个世界的认知。若是我的文章对你有所启发,那将是我莫大的荣幸。
网友评论