从技术角度学习区块链(二)

上一篇文章,讲解了区块链的去中心化特性。整个区块链是建立在当代的密码学基础上的,今天,继续讨论区块链技术中使用各种加密算法以及技术。

区块链1.0

在区块链1.0使用了链表的数据结构、非对称加密算法、地址生成算法、数字签名、零知识证明等加密算法。

区块的数据结构(区块链入门教程

区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。每个区块包含两个部分。

  • 区块头(Head):记录当前区块的特征值
  • 区块体(Body):实际数据

区块头包含了当前区块的多项特征值。

  • 生成时间
  • 实际数据(即区块体)的哈希
  • 上一个区块的哈希

每个区块的哈希都是不一样的,可以通过哈希标识区块。

如果区块的内容变了,它的哈希一定会改变。

非对称加密算法

所谓对称加密算法,加密和解密都使用同一种规则(秘钥)。举个栗子,Alice选择一种加密规则对信息加密,Bob根据同一种加密规则进行解密,这就是对称加密算法(详情见RSA算法原理(一))。对称加密的问题在于,第一,传递秘钥的途中,容易遭到泄露。其次,对人力无法破解的算法,现代计算机是可以破解的。最简单破解方法就是穷举法,计算机的算力在知道加密方式的情况,有足够的时间是完全不需要秘钥就能破解的。这就诞生了,非对称加密算法。应用较为广泛的算法有RSA、ECC。区块链主要应用ECC(椭圆曲线加密算法)生成公钥和私钥。

地址生成算法

在区块链中不管你收币还是发币,每个人都有一个地址,这个地址是由你的公钥经过SHA-256算法与RIPEMD-160算法通过杂凑得到的。

数字签名

比如Alice需要转账给Bob一个比特币,就需要用到数字签名啦。详细过程如下,Alice使用自己的私钥,将交易信息(发送方Alice的地址+发送的数量+接收方Bob的地址)进行加密,生成摘要,这就是数字签名了。然后Alice会将这笔交易全部广播出去,其他人接受到这个信息,会使用Alice的公钥进行验证消息,证明是确实是由A发出的,并且消息内容在传输过程中,没有被篡改。

零知识证明

还是用Alice给Bob转账为例。Alice创建一个单独的支票r1,给Bob创建单独的支票r2,把r1支票记录在系统维护的一个作废列表里,,然后把这些操作广播出去,让矿工记录到区块链里,这样就完成整个转账过程了。在这个过程中,Bob根本就没有见到Alice的支票,旷工也不知道,他们只知道支票r1在作废列表,支票r2已生效了(因为并不在作废列表)。总结,所谓的零知识证明,就是节点不需要知道你们转账具体信息,谁转给谁,只需要知道必要的信息就可以完成整个转账流程。

区块链2.0

迄今为止,区块链技术安全的运行了9年,暂时还没有出现因为安全算法引起的事故。如果是在当代加密算法的基础被量子计算机攻破了,那整个区块链就没办法玩下去了。因此,区块链2.0的升级就是加入了智能合约。

智能合约

什么是智能合约?代码就是法律。你可以理解将现实中的合同数字化,但不仅仅是简单的数字化,它还是不可篡改的。把全部的业务逻辑放到链上,运用程序代码去实现合同内容,合约执行是不需要靠中介或者中心化的机构。如果触发了合约条件,智能合约就会按照预期的约定执行。再举一个栗子,比如你去坐飞机,购买了延误险,直接放在智能合约里面,如果飞机延误了,合约会按照约定自动赔偿打到你的账户,不需要做任何操作,这是智能合约的典型应用了。

区块链3.0

在现阶段,自行开发区块链的成本相当高,而且开发出来用户体验也不是很好。加入用操作系统来类比区块链技术的话,那么区块链1.0是dos操作系统,2.0是升级为98系统,但依然很原始,而3.0就变成xp系统了。

从3.0开始,把区块链升级为新版的”操作系统”了,系统提供几乎与中心化应用一般的用户体验,但整体是基于区块链的技术上构建的应用。整个构架相比1.0,更好,更快,更强。整体的用户体验升级,性能升级,提供更多基础组件,让更多的开发者把注意力花在自己的应用上。

这是一个应用为王的时代 。区块链技术被更多人接受肯定是也在3.0的时代。

这些都是区块链的基本概念,下一篇,我们会讲解分布式系统最重要的数据一致性算法,也就是区块链的共识算法。

始发于微信公众号:神秘极客

发表评论

电子邮件地址不会被公开。 必填项已用*标注