主页 > imtoken钱包下载安卓最新版本 > 区块链技术原理演讲

区块链技术原理演讲

区块链技术原理演讲

未分类

1 简介

非常感谢梦真和btcbox组织这次区块链技术交流会,让我有机会和大家一起探讨区块链和比特币技术。

请允许我自我介绍。

我是一名软件工程师,自大学毕业以来已经编程了大约 11 年。

长期从事web服务器编程和分布式系统架构,擅长c++和javascript语言。

我参与过的项目主要有柯达数字影院系统、云云网搜索引擎、微博搜索引擎等。

2012年业余时间开始研究比特币,2016年开始全职开发asch系统,这是一个基于侧链技术的dapp开发平台,给大家稍微介绍一下。

今天和大家分享的是我对区块链技术原理的理解和理解。

区块链最初是比特币的底层技术,后来逐渐演变成一种通用的分布式账本技术。 区块链本质上是一个数据库,可以用来存储任何信息,除了在比特币中,存储的是转账信息。

区块链的思想虽然是在比特币之后发展起来的,但是根据我给人们布道的经验,如果我先讲区块链,然后再把比特币作为区块链在支付领域的一个例子来介绍,会比较受益。 容易明白。

因为比特币包含了很多区块链不需要的复杂概念,比如工作量证明、挖矿、链上交易等,如果去掉这些概念,区块链的本质就很简单了。

我们先来看一下区块链的定义,用一句话来表达:

区块链是一种基于链式数据结构和密码学技术的分布式数据库

关于区块链的好处和特点,比如:防篡改、去中心化、安全、透明、易溯源,我就不说了。 今天主要从技术角度介绍一下这些特性是如何实现的。

2. 架构

我把区块链技术分为5个层次

第一层是基础层,包括链式结构(这是区块链的本质,中本聪的灵感)、哈希函数、数字签名,数字签名的基础是非对称加密。

链式数据结构和哈希函数是防篡改的基础,数字签名是去中心化认证的基础。

第二层是网络层,因为区块链在大多数情况下是一个分布式系统,包括多个节点,节点之间的数据传输需要通过网络协议和广播或路由算法来实现。 这一层主要解决数据传输的问题。

第三层是共识层,我们暂时把这一层看成一个黑盒子。 如前所述,区块链本质上是一个数据库。 普通数据库涉及权限管理,属于集中管理。 既然区块链没有中介,就不能有中央管理员,那么谁来负责写数据呢? ,如果每个参与者都有写入数据的权利,那么在每个时刻,以哪个参与者的数据为准。 当参与者写入数据时,其他节点如何验证数据的正确性。 这一关主要解决这些问题。

第四层是数据层。 既然区块链是数据库,是共享账本,那么它存储什么样的数据,共享什么样的信息呢? 这一层解决了这个问题。 比如我们可以存储转账记录、投票记录、数字资产、版权登记等。

当然,我们也可以存储更复杂的数据,比如合同或者代码。 存储在区块链上的代码一般称为智能合约。 当然,这也取决于代码语言的完整性。

第五层是解释层。 当第四层存储合同或代码等复杂数据时,需要专门的解释器。 比如比特币的脚本引擎,以太坊的虚拟机等。

3.哈希函数和链结构

我们首先介绍哈希函数的特点。

哈希函数是一种数据汇总算法,可以为变长数据计算定长汇总信息。 我们可以把这个汇总信息理解为数据的指纹

该算法具有以下特点: 1. 源数据的微小变化也会引起数据指纹的剧烈变化,因此可以用来检测源数据的变化 2. 指纹数据的大小固定,易于存储 3. 它不可预测,暴力碰撞难度也极高

区块链是由多个区块串联而成,每个区块都有一个哈希值,哈希值作为一个区块的唯一标识,代表了该区块的内容。 区块中还存储了两个哈希值,一个是前一个区块的哈希值,一个是代表本区块所有交易数据的哈希值。

如果某个区块的交易信息发生变化,重新计算后该区块的哈希值将与之前不同,从而引发连锁反应。 该区块之后的所有区块的哈希值都会发生变化。 变化,如果产生一个区块有时间成本或者电力成本,那么改变一个交易数据的成本是巨大的,如果你在改变区块之后不重新计算所有的区块,那么区块链的链式结构将是当你发送这种将损坏的数据透露给其他人,其他人很容易检测到错误。 这就是防篡改的理论基础。

我们来对比一下普通数据库是如何组织数据的。 普通数据库都是用表来组织数据,行是基本的存储单位。 数据之间基本没有联系,只是有一些很弱的防止重复的约束,所以无法检测到数据的变化。 .

那么中心化系统为什么不安全。 因为只要有一条数据被黑客攻击或者滥用权限所改变,都会有天文数字的损失。

当然,仅仅链式结构还不足以完全实现防篡改,还需要其他特性。 比如每个节点都有一个完整的副本,每个区块的添加,或者每个共识的达成。 在大多数节点当前状态一致的情况下,当个别节点损坏或被篡改时比特币私钥随机碰撞,无法与大多数正常节点建立共识,其数据将不会被其他节点接受。

4. 数字签名和去中心化认证

一般的中心化系统都有一个账户数据库,里面存放着每个用户的用户名和密码。 用户登录时,需要将密码发送到网站后台,以验证用户的权限。 当然,也有一些安全措施比较先进的中央集群系统,也采用了非对称加密和数字签名技术,那就另当别论了。

区块链系统必须使用公私钥机制来完成用户认证,而不是用户名和密码,因为区块链是共享账本,所有数据都是公开的。

私钥一般是在一个非常大的地址空间中随机选取的一段数据。 比如比特币的私钥是256bit的随机数据,有2^256种可能。 作为对比比特币私钥随机碰撞,地球上的沙子大约是2^的80次方。

因此,黑客无法通过暴力破解和碰撞的方式窃取用户的私钥。

私钥由用户自己保管,公钥对外发布。 当用户需要转移资产或证明身份和权限时,他可以使用私钥对涉及的数据进行数字签名,就像在文档上盖章一样,然后其他人可以使用他之前发布的公钥来验证签名数据,这是去中心化认证。

非对称加密理论上保证不能从公钥推导出私钥或者需要非常高的难度,所以公开公钥是安全的,不会暴露私钥。 当然,量子计算机是一个隐患,但是区块链系统会用巧妙的方法来规避量子计算机的风险。 接收转账时,无需公开公钥。 只有当它发起交易时,公钥才会被暴露。

5.p2p网络

区块链系统是分布式的,一般由多个对等节点组成。 节点之间只有信息交换,没有从属关系或信任关系。 一个节点可以与多个其他节点建立连接。 这种网络结构称为p2p网络。

当一个节点要发布消息时,可以使用广播协议通知所有其他节点。 然而,当节点规模较大时,广播变得低效。 一般采用信息渐进扩散的算法,即先将信息发送给若干个邻居节点,然后邻居节点不断向外扩散,从而逐渐扩散到全网所有节点。

由于区块链系统的每个节点都有全量的数据备份,每个节点可以与多个节点建立连接,所以当一个节点退出,或者某个区域的网络出现瘫痪或阻塞时,不会影响到其他区域的节点正常工作,所以区块链的容错性很高。

当有新节点加入时,该节点会通过消息扩散通知其他节点,整个网络会越来越大,容错性会越来越高。

新节点如何加入网络? 通常,它们是通过软件内置的初始种子节点列表找到的。

6. 状态转移

我们可以将区块中的每笔交易数据视为一个动作。 当一个节点收到一个区块时,它会执行区块中的所有动作,每个动作都会引起节点状态的变化。 块要么执行所有操作,要么不执行任何操作。 每次生成新块时,区块链系统都会从一种状态移动到另一种状态。

因为节点只有在一致的状态下才能达成新的共识,即产生新的区块,所以每当一个新的区块产生并被大多数节点接受时,就意味着在之前的一段时间内,网络中的状态大多数节点是一致的。

这个状态有些抽象,我们举个具体的例子。

比如GOD发100BTC给alice,alice发40BTC给bob。 这是两个动作。 这两个动作执行完后,系统状态变成,alice拥有60BTC,bob拥有40BTC。 在这种状态下,如果alice想发起一个将61BYC转给别人的动作,是不可能的。 也就是说,这个动作是非法或无效的动作,不能被列入区块。 即使有人强行将这个动作插入区块并发送给其他节点,其他正常节点也会直接拒绝。

7.叉子

在正常情况下。 每个节点使用相同的软件版本并且具有一致的初始状态。 每次它接受一个一致的块并执行相同的动作,总能形成一个新的一致状态。

但是当软件升级时,这个升级改变了核心算法。 例如,提高了每个区块的容量上限。 以前是1M,现在是2M。 那么当新版节点创建新区块时,老节点是不会接受的,只有新版节点才会接受,这样系统就会不一致,新老节点在里面的内容是不一样的同一高度的区块,所以也可以有不同的状态,即从不同节点的角度来看,账户的余额是不同的。 这时候我们就说网络出现了分叉,这种分叉是无法修复的,因为老节点总是和容量增加的新节点产生的区块不兼容。 这种分叉称为硬分叉。 相应地,另一种分叉称为软分叉。 这种分叉不需要所有节点都升级,满足一定条件就可以淘汰。

8. 比特币

比特币是第一个应用区块链技术的系统,是区块链技术在支付领域的应用。 它的数据层存储由简单的脚本程序组成的转账或支付记录。

比特币使用工作量证明共识机制来选择数据编写者。 这种机制的流行术语是挖矿。 比特币也是通过奖励数据编写者来实现货币发行的。

9. 工作证明

工作量证明是一种思想,而真正体现这种思想的算法叫做hashcash,它最初是用来反垃圾邮件的。

为了防止垃圾邮件,邮件系统要求发件人附上一个随机数,邮件内容和随机数组合的数据哈希值满足特定条件,比如小于指定的哈希值。

这个随机数需要大量的计算,因为你不能根据目标哈希来反转随机数,只能不断尝试。

但是一旦找到,就很容易验证。 比如这个例子,程序尝试了4000多步,但是验证只需要计算一次。

这个随机数的专业术语叫做golden nonce,因为它非常珍贵,找到它就像挖金子一样。 计算出的散列称为 hashcash。

10、挖矿过程

比特币挖矿就是基于这样一个简单的原理。 最先找到 golden nonce 的矿工会急于释放这个区块,因为如果他不及时释放,其他矿工可能会立即释放他们挖出的区块以获得奖励。 如果被大多数节点接受,你的区块就很难被接受,也很难获得奖励。

而如果一个正在计算的矿工收到了其他矿工的区块,并验证他们是合法的,他将被迫立即停止当前的计算,并且必须尽快将新区块添加到本地区块链,然后根据这个新的区块 Block 重新开始新一轮的挖矿。 因为大部分节点都会按照默认算法来做,如果一个矿工不这样做,根据旧数据来挖,就是在做无用功,即使挖出来了,也不会被其他节点接受。

11. 解决冲突

除了硬分叉和软分叉。 系统中经常会出现临时的短叉,这是POW的特性造成的,因为挖矿是一种开放的算法,人人都可以是矿工,而挖矿是一种随机碰撞算法,有一定的成份运气好,所以网络中的两个节点有可能同时发布包含不同内容的合法区块。 这时候网络就会分叉。 比特币通过最长链同步规则消除了这种分叉。

例如,当一个红色节点收到一个绿色块时,它不会丢弃它,而是暂时存储起来。 当新一轮的区块产生时,程序会检查备份链是否成为最长链,如果是,则撤销之前执行的区块的所有动作,然后执行新的最长链上的所有区块,所以冲突被消除了。

12.攻击

我们之前说过,每个节点在收到区块后会立即暂停当前的计算,并在执行完新区块的状态转换后开始新的挖矿。

但是有一个前提,这个节点是一个正常的忠诚节点。 有一种情况,就是当一个节点在算力上有绝对优势的时候,他可以选择秘密挖矿,因为他在算力上有绝对优势,所以他有能力独立计算和超越区块中的区块正常网络链长,此时他可以通过双重支付的方式作弊,即先在正常网络中支付,确认支付后,再发布他偷偷挖出的更长的区块。 这时候其他节点会应用最长链规则,撤销旧区块,执行新区块,这样矿工的钱就回来了。

即使在算力上没有绝对优势,矿工仍然可以发起攻击,但成功的概率很低。 因此,对安全级别要求更高的系统必须考虑是否能够容忍这种概率和风险。 算力和攻击成功率的计算模型在比特币白皮书中都有,大家可以参考。

13. 脚本 14. 比特币问题和缺陷

因为ASIC的出现,一些ASIC厂商就有了垄断算力的可能,也就有了腐败的条件。 另外,矿工们组成一个矿池,这也导致矿池拥有非常强大的算力,而矿池是一个中心化的系统,它的管理员不像矿工那样有很好的经济激励,它也极有可能出现腐败现象。

浪费资源。 目前整个比特币网络的算力约为2000PH/s,一张2000元的显卡算力约为0.7G,电费为5.4元/天。 那么整个网络大概相当于30亿块显卡在工作。 当然,矿机的电费是远远低于显卡的。

吞吐量低。 因为比特币是一个高度冗余的系统,每个节点都有备份。 这会导致可伸缩性和性能问题。 例如,交易量低于每秒 7 笔交易。

最后,比特币网络的确认速度相对较慢且不稳定。 平均确认时间为每 10 分钟 1 次确认。 通常,3-6 次确认被认为是安全的,回滚的可能性非常低。

15.发展

正是因为比特币的这些缺陷,区块链才有了更多的发展动力。 一大批新技术不断涌现。

例如通过限制矿机研发提高算力垄断的哈希算法,以及将多种算法结合起来降低破解风险的组合哈希算法

在共识机制方面,POS算法解决了资源浪费的问题,DPOS的性能更好,出块时间更稳定。 PBFT算法可以解决一定条件下的finality问题,即理论上消除分叉的可能性。

Asch系统在共识机制上结合了DPOS和PBFT的优点,特别适用于对安全性和一致性要求高的系统。

此外,在存储方面,人们开始探索支付领域以外的应用场景,如数字资产、域名、身份认证、存证、去中心化交易所等。

以太坊结合了区块链和智能合约,提出了dapp开发平台的概念。

此时,区块链技术从比特币1.0时代进入2.0时代。

在扩展性和性能方面,也进行了大量的探索和尝试。

比如blockstream提出的sidechain机制,synereo提出的namespace机制,都是通过分片策略提高可扩展性,从而提高整体效率。

闪电网络技术将频繁小额支付的中间过程放到了链外,只将最终的结算交易存储在比特币区块链上,避免了比特币吞吐量低的劣势,也算是从另一个角度拓宽了应用比特币。

16.变奏曲

最初应用区块链技术的比特币是一个完全开放和自治的系统。 此功能有好处,但也有局限性。 比如政府和一些商业机构要求这种开放性要有一定的控制,或者要有一定的监管机制。

根据发展程度和去中心化程度,区块链可分为公有链、联盟链和私有链三种类型。

公链完全开发,任何人都可以参与,完全去中心化。

联盟链弱化了去中心化,只允许联盟成员参与,进入系统需要审批,但系统由整个联盟控制,也可以避免中心化,所以这是从去中心化到多中心的演进。

这样的系统节点数量有限,可以增加对关键节点的配置要求,从而大大提高性能。 例如,超级账本号称每秒可以实现数千笔货币交易。

联盟链不需要激励系统。

私有链是一个完全中心化的系统。 但仍然采用链式存储结构,防篡改特性依然保留。 数据的写权限虽然没有开放,但是可以根据情况开放读权限,所以它的数据内部容易审计,外部也容易监管。 .