认识区块链

335 阅读6分钟

技术发展三阶段:

  • 萌芽期:金融危机背景下,中本聪看到现代金融体系的不足(依赖可信的第三方金融机构),创建基于密码学而非信任关系的数字货币系统---比特币
  • 诞生期:V神在比特币的基础上,将智能合约与区块链相结合,创立去中心化应用平台---以太坊
  • 野蛮生长期:The DAO事件,以太坊硬分叉成ETH和ETC,驱动历史进入野蛮生长期

公链圈

研究对象是有币的公有开放区块链网络,比如比特币和以太坊

公链圈的发展离不开投资激励,一切的技术应用创新都围绕着如何繁荣交易市场,应用层面主要是去中心化金融和去中心化存储,技术层面主要是跨链

去中心化金融

通常称之为DEFI,金融是通过重新分配资产从而使资产升值的一种渠道,本质在于信用,风险和杠杆,与传统金融最大的区别在于对风险的控制手段,传统金融通过审核借贷人的信用记录和抵押物,同时会承担坏账的风险,defi则是通过智能合约控制风险,一切由程序代码自己控制,在不满足初始条件下合约会强制平仓

去中心化存储

利用分布式存储技术,将文件分块存储在不同节点,相较于中心化存储,隐私更高,成本更低,与区块链结合就是引入计费激励机制

跨链

通过中继链进行中转

联盟链圈

专注区块链技术在企业领域的研究,目前政府大力支持

数据存证

数据交换

价值转移

区块链网络是价值的基石,将目前信息网络向价值网络转移,区块链是价值的载体,是一种新型的社会生产关系,区块链技术是存储,密码学,点对点网络以及共识算法等基础技术的融合创新


技术特性

去中心化,可追溯性,不可篡改

存储:交易,区块,状态

交易:

在区块链中,交易等同于操作,向区块链网络提交一笔交易实质上是发起了一个操作,是一个原子操作

区块链中所有的交易基本上都是从区块链网络外发起的,区块链网络只接收交易而不生产交易,且不对交易做任何改动。

区块:

区块是指将节点一段时间内收到的所有(有效)交易打包而形成的一种数据结构

前置区块哈希用于区块间的关联,交易根哈希用于区块与交易的关联,区块高度用于标记当前区块在区块链中的位置,方便定位,而时间戳记录了区块打包的时间。

区块体则只有交易,且交易是有先后顺序的,一般是按照交易的时间戳字段进行排序。默克尔树结构

状态:

区块链中的每一笔交易都有一个输出,状态就是交易执行后输出的累积

数据库更看重状态,而区块链却以记录历史区块为主,状态为辅。

状态模型:

比特币为首的UTXO模型(未花费的交易输出)

以太坊为首的账户模型

通用模型,没有内置状态,自定义

密码学

区块链主要用到了哈希算法和非对称加密算法

哈希算法主要是SHA256,非对称加密算法主要是ECC椭圆加密算法

先对交易内容哈希,然后用私钥加密,称作数据签名,一方面通过私钥加密确定是自己操作的,同时通过哈希保证交易内容不被篡改

共识

共识是区块链技术的核心思想

节点会把一段时间内接收到的所有交易打个包组装成区块。区块的构建是有确切时间点的,这样就可以保证在这个时间点前的交易有序排列,而且区块是有编号的,即便因网络问题区块并未按照编号顺序进行扩散,其接收节点也可以等待前置区块接收到以后,再累积状态。

区块链中对状态的共识实质就是对区块的共识

  • 谁来产生区块
  • 什么时刻可以达成共识
  • 有多少节点参与了共识

联盟链与拜占庭容错共识是天生一对(PBFT共识算法),强一致共识协议

节点多的情况下不适用,因为会涉及大量的节点通信

公链一般采取激励共识,POW(工作量证明),POS(权益证明,谁拥有更多权益,谁就更有可能争夺到下个区块的提案权),DPOS(委托权益证明,将很多人的权益集中起来,以一种联合代表的形式)

POW利用哈希算法计算区块哈希,使得区块哈希以 N 个 0 开头,N 的多少取决于当前网络区块增长的速度,是一个动态调整的值。这样一来,PoW 就限制了一段时间内网络中区块提案的个数

多个节点同时计算出区块向外扩散,比特币网络允许有多条区块链存在,但只认同节点能接收到的最长的那条区块链是全网络共识的链,其余短的区块链都是无效链。

NFT:非同质化代币,不可替换,不可拆分

点对点

客户端-服务端模型

点对点模型

点对点网络的可用性是随着节点数的增多而增强的,网络的运行并不依赖任何单一节点,节点可以任意地加入或者退出。

比特币采用的是类似于混合型的网络拓扑结构,一个新节点的加入需要给节点指定几个已在比特币网络中的相邻节点信息,可以是普通节点,也可以是种子节点(局部中心化)。

当建立节点间连接以后,新节点将自身信息发送给相邻节点,相邻节点再将新节点的信息依次转发给它们各自的相邻节点,从而保证了新节点信息在网络中被广泛传播。新节点也可以从相邻节点获取该节点的相邻节点信息,从而选择性地连接更多节点,增强节点自身与整个网络连接的稳定性。