区块链基础知识

区块链简介

去中心化的方式建立信任,不需要大机构的背书。

区块链定义:基于区块链技术形成的公共数据库(公共账本)
区块链技术:多个参与方之间基于现代密码学、分布式一致性协议、点对点网络通信技术和智能合约编程语言等形成的数据交换、处理和存储的技术组合。同时,仍在不断发展和演化中。

区块链分类

从参与方的角度来分,可以分为公共链、联盟链和私有链。从链与链的关系的角度来分,可以分为主链和侧链。不同区块链还可以形成网络,网络总链与链的互联互通。产生互联链Interchain的概念

公共链

对外公开,用户不用注册就能匿名参与。
比特币和以太坊都是公链。
也叫非许可链Permissionless Blockchain。

公链适用于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B场景

联盟链

联盟链Consortium Blockchain,仅限联盟成员参与。读写权限、参与记账权限按照联盟规则来制定。也叫做许可链Permissioned Blockchain.
例如有四十多家银行参与的R3和Linux基金会支持的超级账本Hyperleder。

联盟链适用于机构间的交易、结算或清算等B2B场景。

私有链

私有组织使用,区块链上的读写权限、参与记账权限按私有组织股则来制定。应用场景一般是企业内部的应用,如数据库管理、审计。
把制度写在区块链上。还有政府的一些应用,比如政府的预算和执行,或者政府的行业统计数据。

私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范内部和外部对数据的安全攻击。

Coin Science的Multichain平台提供一个在企业内部快速部署私链的解决方案。可以用于去中心化交易所、数据库同步、货币结算、债券发行和P2P交易、消费行业积分奖励机制等场景。

侧链

侧链是能和比特币区块链交互,并与比特币挂钩的区块链。
主链不易改动。
比特币每秒只能确认7笔交易,通过侧链Side Chains提升效率,扩展比特币功能是一个有效的做法。例如闪电网络把交易放在侧链,只有在做清算时才用上主链。矿工打包少了,回报就少了。

互联链

针对特定领域的应用可能会形成各自垂直领域的区块链,这些区块链会有互联互通的需求,通过某种协议连接起来。可以类比互联网

区块链的价值与应用

区块链技术是一揽子技术,根据业务需要可以针对性的组合和创新。
价值很多,很大,这个需要慢慢理解,放一放,先上手技术。

区块链技术

基本概念

数据区块

区块结构分为区块头和区块体

挖矿

矿工通过把网络尚未记录的现有交易打包到一个区块,然后不断遍历尝试来寻找一个随机数,使得新区快加上随机数的哈希值满足一定的难度条件。找到了就相当于确定了区块链最新的一个区块,也相当于获得了区块链的本轮记账权。
然后把新节点广播出去。

挖矿与分叉问题

穷举随机数算法,把上个区块的哈希值加上十分钟内的全部交易单打包,再加上一个随机数,算出一个256位的字符串哈希值,输入的随机数nonce使哈希值满足一定条件就获得这个区块的交易记账权。

后续矿工总是选择累计工作量证明最大的区块链。结果就是自动抛弃分叉处的短链。

时间戳与不可篡改性

时间戳是歌灵位置时间到现在的总秒数,通常是一个字符序列,唯一标识某一刻的时间。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。

时间戳技术很简单,但意义重大,极大的增强了不可篡改性

分布式数据库

可以理解为一个分布式数据库

UTXO交易模式

比特币就是UTXO,
交易UTXO + 区块链 = 比特币系统

哈希函数
Merkle树
双花
  1. 双花如何发生?

花了一次,还没有上链的时候再花一次

  1. 如何避免

时间戳+UTXO+数字签名

P2P网络

P2P网络是一种在peer(对等者)之间分配任务和工作负载的分布式架构,是对等计算模型在应用层形成的一种组网或网络形式。

每个节点均承担网络路由,验证数据区块等功能。根据存储数据量分为全节点和轻节点。

全节点存储了所有区块链数据,数据校验不需要别的节点,硬件成本高。

轻节点只存储部分,需要别的数据时通过建议支付验证(Simplified Payment Verification, SPV)向临近节点请求数据来完成验证更新

加密算法

非对称加密算法(椭圆曲线加密算法,ECC)

数字签名

数字签名就是在信息后加上一段内容,作为发送者的证明并且证明信息没有被篡改

要传送的信息先经过哈希得到一个值,再用私钥加密得到签名。对信息进行两次操作得到签名。

接受方通过发送方的公钥解密,然后对信息哈希,然后比对,验证需要三步。

公钥锁定比特币,私钥解锁,拥有私钥才能使用。

比特币的隐私模型

匿名性好一截。进行交易不需要身份信息。

框架与特点

框架简介
  1. 网络层

两个部分,P2P网络和TCP/IP协议。P2P网络提供了更好的安全性,任何一个节点被攻击都不会影响整个网络

  1. 数据层

三个部分,公共总账本,共识算法,密码学。在数据层面上,区块链就是一个只能追加、不可更改的分布式数据库系统,是一个分布式账本。通过公式算法保持账本的一致性。通过密码学的签名和哈希算法来确保这个账本不可篡改、不能作为,并且可追溯。

同时带有经济激励的工作量证明机制,使得即使拥有51%算力的人也不会损害自身利益去发起攻击

  1. 应用层

三个部分,可编程货币,可编程金融,可编程社会

区块链平台提供编程环境让用户编写智能合约。通过智能合约,可以把业务规则转化成在区块链平台自动执行的合约,该合约的执行不依赖可信任的第三方上。
因此,智能合约可以降低合约建立、执行和仲裁中所涉及的中间机构成本。

架构特点
  1. 去中心化
  2. 可靠数据库
  3. 开源可编程
  4. 集体维护
  5. 安全可信
  6. 准匿名性

    区块链运作的核心技术

    区块链的连接
    区块头中上一区块的哈希值用来实现区块的连接,区块头中的随机数用来实现挖矿机制
    共识机制
    1 PoW
    工作量证明

优点: 完全去中心化,节点自由进出

缺点: 浪费大量资源,挖矿激励机制导致矿池算力集中,不去中心化了。更大的问题是,PoW机制达成共识的周期长,每秒智能作7笔交易,不适合商业应用

2 PoS

Proof of Stake,权益证明,要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制。拥有代币越多的节点获得记账权的概率越大。为了平衡会引入其他机制。

优点: 一定程度上缩短了共识达成的时间,降低了资源浪费

缺点: 破坏者攻击网络的成本低。拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性

3 DPoS

股份授权机制,类似于董事会投票。持股人投票选出一定数量的见证人,见证人生成区块。持股人可以随时通过投票更换这些见证人。

优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证

缺点: 选举固定数量的见证人作为记账候选人有可能不适用与完全去中心化的场景。另外在网络节点数少的场景,选举的见证人的代表性也不强。

4 分布式一致性算法
基于传统的分布式技术。有解决拜占庭将军问题的拜占庭容错算法,如PBFT。还有解决非拜占庭问题的分布式一致性算法(Pasox, Raft)。 目前联盟链和私有链场景中常使用。

优点: 实现妙计的快速共识机制,保证一致性

缺点: 去中心化程度不如公链上的共识机制,更适合多方参与的多中心商业模式

解锁脚本

交易的输出其实是指向一个脚本,而不是地址。它类似一套规则,约束着接收方怎样才能划掉这个输出上锁定的资产。

交易的合法性也依赖于脚本。锁定脚本和解锁脚本。

比特币的脚本机制相对简单,不能实现复杂的逻辑。但为后来者们提供了可编程区块链的原型。

交易规则
交易优先级
Merkle证明

Merkle树的重要使用场景是快速支付验证。轻节点只下载区块头,数据大小为80字节。

能证明包含的交易,但无法证明任何当前的状态。

以太坊中有三棵树,分别对应交易transactions,收据recipts和状态State

RLP

Recursive Length Prefix,递归长度前缀编码,是以太坊中对象序列化的一个主要编码方式。先放着

区块链交易流程

  1. 交易的生成:新交易创建
  2. 交易的传播:交易通过P2P网络传播
  3. 工作量证明:交易验证
  4. 整个网络节点验证:3的验证结果在P2P网络中传播
  5. 记录到区块链:交易写入账本

文章标题:区块链基础知识

本文作者:Benny

发布时间:2020-06-08, 19:49:33

最后更新:2018-06-29, 18:34:22

原始链接:https://benny233.github.io/2020/06/08/区块链/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录