整理自 :极客时间专栏<深入浅出区块链>
0.开篇词
0.1专栏结构
- 浅说区块链基础
- 深入区块链技术
- 数字货币与数字资产
- 区块链与当下互联网
- 如何从业区块链
1.到底什么才是区块链
区块链定义:
- 区块链是一个分布式网络
- 区块链可以帮助多个节点达成共识去记录和Token相关的事情
- 区块链可以帮助所有人无门槛地构建属于自己的小经济系统
2.区块链到底是怎样运行的
此节讲的一般;读书比较好
3. 浅说区块链共识机制
分布式系统的经典问题:拜占庭将军问题
参考:
https://learnblockchain.cn/2018/02/05/bitcoin-byzantine/
拜占庭将军问题是Leslie Lamport(2013年的图灵讲得住)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。
这个例子大意是这样的:
拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。这10支军队在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?
拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,已经假定了信道是没有问题的.
中心化记账:大家信任记账者即可
去中心化记账:谁有权利记账,如何避免记账者作弊–>共识机制
最典型的入门型共识机制:PoW工作量证明 (它与一般分布式算法的区别在于:PoW结合经济学上的理性人的假说,发明了激励机制,让做好人的奖励大于做坏人的获利)
Pow工作量证明的补充:解决双花攻击
所有记账节点都会遵循以下两条规则:
- 一个代币如果已经被话费,那么会被标记成已花费,如果再次接受到这个代币被花费的请求,那么记账节点会拒绝打包这笔交易
- 如果同时接受到两个区块,这两个区块中装的两笔交易中出现了一个代币被花费两次的情况,这种情况也就是我们所说的分叉(fork),那么选择挖矿难度比较大的那个区块.
4.区块链的应用类型
5.如何理解数字货币?它与区块链又是怎么样的关系
数字货币:
- 电子货币
- 虚拟货币
- 数字货币
6.体验数字货币
7.区块链常见误区
如果说政府是法币的背书;数字货币的背书可以认为是社区
分布式领域的CAP定理:
consistency:一致性,表示同样数据在分布式系统中所有地方都是被复制成相同;
Availability:可用性,表示所有在分布式系统活跃的节点都能够处理操作且能响应查询
Parition tolerance:分区容错性,表示不同节点之前数据同步有意外情况产生时,能够容错.
去中心化不是区块链唯一的评价标准.
8. 最主流区块链项目有哪些?
比特币,以太坊,瑞波币等
9.技术基础
区块链的技术定义:一个提供了拜占庭容错,并保证在最终一致性的分布式数据库.从数据结构上来看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,他提供了基于密码学的公私钥管理体系来管理账户
区块链在技术上的7个特征:
1.区块链的存储基于分布式数据库;
2.数据库是区块链的数据载体,区块链是交易的业务逻辑载体
3.区块链按时间序列化区块数据,整个网络有一个最终确定状态
4.区块链只对添加有效,对其他操作无效;
5.交易基于非对称加密的公私钥验证;
6.区块链要求拜占庭将军容错;
7.共识算法能够解决双花问题.
区块链类型:公有链,私有链;联盟链,
区块链的核心技术组成:
P2P网络协议:负责交易数据的网络传输和广播,节点发现和维护
分布式一致性算法(共识机制):
经典分布式计算领域:Raft与Paxos算法家族代表的非拜占庭容错算法和具有拜占庭容错特性的PBFT共识算法
区块链领域:PoW工作量证明算法,POS权益证明算法以及DPOS代理权益证明算法
加密签名算法:哈希算法,Scrypt算法等
账户与存储模型:UTXO 为花费的交易输入输出
10.P2P网络
P2P网络协议很多,如:BitTorrent,ED2K等
P2P主要四个内容:
- 网络连接和拓扑结构:(区块链是基于TCP/IP协议的,与HTTP协议同属一层-应用层)
- 节点发现:初始节点发现(DNS-seed和代码中hardcode)和启动后节点发现
- 黑名单与长连接
- 局域网穿透
- 节点交互协议
11.共识算法与分布式一致性算法
分布式系统面临的问题:
一致性问题:在某个分布式系统中,任意节点的提案能够在约定的协议下被其他所有节点所认可;
可终止性问题:系统必须在有限的时间内给出一致性的结果
合法性问题:提案必须是系统内的节点提出的;
一致性主要体现在下面两种类型的问题:
1.非人为恶意的意外投票过程
2.人为恶意篡改投票过程
发生人为恶意篡改投票过程可称之为系统发生了拜占庭错误
如果可以容忍拜占庭错误而不至于崩溃,我们将这样的系统称之为拜占庭容错系统.
有关分布式系统的定理:
- FLP不可能性:不存在一个通用的共识算法可以解决所有拜占庭错误
- CAP定理:系统不能同时满足CAP中的三个,选择其中两个作为主要强化的点,另外一个必然会被弱化
共识算法与分布式一致性算法:
1.经典的分布式一致性算法
Raft协议,Paxos协议,PBFT(实用性拜占庭容错系统,容错阈值33%)
2.区块链共识算法
PoW共识算法(容错阈值是50%),PoS共识算法,DPOS共识算法.
区块链并没有跳出分布式系统的理论框架,只是给出一种不同于计算科学领域的解决方案.
12.PoW共识
1997年被提出,最早应用于如抵抗垃圾邮件等场景;
PoW挖矿算法大致分为两个大类:计算困难和内存困难;
计算困难->目前有专业矿机
内存困难->没有专业矿机
Pow优缺点
优点:存在成本,可以稳定币价,信任度高
缺点:耗费能源;自私挖矿(会形成矿霸,间接导致51%攻击);51%算力攻击问题(即攻击者只要拥有超过全网51%的算力,既可以发起"双花攻击",甚至"重放攻击"等高收益攻击)
13.POS共识机制(proof of Stake)
为了解决PoW挖矿出现的大量资源浪费的问题;
币龄:币数量*天数 (如100个币,在某地址上9天,则币龄为900)
pos:节点所拥有的币龄越多获得记账的概率就越大
Pow的基本逻辑和步骤:
先寻找一个nonce小于目标值,公式表示为:
Hash(block_header) <Target
pow下所有旷工的目标值是一样的,只要计算结果hash小于目标值即可,简化;来看就是前导0的个数
而在Pos中,这个公式变更为:
Hash(block_header) <Target* CoinAge
可见每个矿工的目标值是不一样的,你的币龄越大,获得答案就越容易.
PoS相关问题
PoS解决了PoW挖矿资源浪费的问题,还解决了51% 攻击的问题,因为若你能发起51%攻击,意味着你拥有全网51%的币或者币龄,这样发动攻击,你的损失也会是最大的.
PoS的缺陷问题:
一是币发行的问题,一开始只有创世块上有币,意味着只有一个节点可以挖矿,如何将币分散出去是一个难题,所以早期的PoS挖矿都采用分阶段挖矿:第一阶段采用PoW挖矿,第二阶段采用PoS挖矿.二是由于币龄与时间挂钩,以为这可以无限囤积一定的币,等过了很久之后再一次性挖矿发起攻击,解决是引入一个时间上限来控制时间因素的自热增长.
三是即使有了时间上下限,用户还是倾向于囤积代币,解决是币龄按时间衰减.
四是离线攻击,即使引入了时间上下限,时间仍然是流动的,也就是不需要要求节点长时间在线.而离线挖矿是灾难的.
14.DPOS共识机制(Delegated Proof of Stake)
DPOS共识算法就是将Pos共识算法中的记账这转换为指定节点数的小圈子,而不是所有人都可以参与记账.这将极大的提高系统的吞吐量. DPoS的目的就是为了提高性能,缩短交易确认时间.
15. 哈希与加密算法
区块链中主要应用了两类密码学算法:哈希算法和非对称加密算法
哈希算法:
- 原像不可逆
- 难题友好性
- 发散性
- 抗碰撞性
Hash算法:MD5(破解),SHA-1(破解),SHA-2,SHA-3
默克尔树(Merkle Tree):hash算法的另一个重要应用,通常是一颗二叉树,也可能是多叉树.
非对称加密算法
常见对称加密算法:DES,3DES,AES
常见非对称加密算法:RSA,ECC等
16.UTXO与普通账户模型
区块链网络中有两种记账模式,除了UTXO模型还有Account Based模型结构(也叫普通账户模型或者账户余额模型)
普通账户模型
余额模型…
UTXO模型(未花费的交易输出)
UTXO的核心设计思路是无状态,他记录的是交易事件,而不是最终状态,也就是说
只记录变更事件,用户需要根据历史记录自行计算余额.
UTXO的缺陷:
1.可表达的状态少
2.区块链盲点
3.价值盲点
UTXO是比特币的原生设计,在此之前没有这种逻辑数据结构,但是UTXI并不是所有
区块链所必需的,公链开发工程中是否选用UTXO模型需要根据业务场景进行判断.
17.## 去中心化与区块链交易性能
区块链本身TPS看似很低效,为什么说它提高了交易效率?
传统的交易发生在中心化平台,在平台内部,交易效率是提升的,但是整个交易的
生命周期,可能是被延长的;
区块链点对点的交易模式,TPS看似低效,但是它提供了全局无缝衔接的资产流转流程.
提高TPS:
sharding分片和闪电网络
18.智能合约和以太坊
智能合约:有一个计算机处理,可执行合约条款的交易协议,其总体目标是满足协议既定的条件,例如支付,抵押,保密协议.
以太坊
Ethereum项目的目标是打造一个去中心化的新一代互联网应用平台,这个平台称作Dapp平台.
这些Dapp基于以太坊智能合约虚拟机开发,编译和部署,并且可以自定义业务逻辑,部署后全网可见且自动执行,理想情况下不存在宕机,审查,欺诈,第三方干预的情况.
以太坊核心概念
智能合约虚拟机EVM:EVM是一个轻量级虚拟机隔离环境,可以把它理解为一个封闭的容器,这个容器里面装了一个正在运行的Dapp,可以看成是无法和外界交互的Docker Container
Solidity编程语言:Solidity与JavaScript类似
账户模型:Ethereum没有采用UTXO模型,也不同于银行账户,而是由以太坊开发者自己设计乐自己的账户模型;
以太坊账户有两种:一是合约账户CA (智能合约代码用的账户),二是外部账户EOA(人用的账户)
以太币和GAS:Gas是执行智能合约操作的燃料,智能合约 的每一个步骤都会消耗Gas,Gas由以太币转化而来,最小单位为wei,1ETH = 10的18次方wei
以太币可以通过PoW挖矿而产生
交易和消息:以太坊上的交易和比特币中的UTXO交易不同,它是指EOA账户讲一个经过签名的数据包发送到另一个账户的过程,这个过程产生的账户状态变化将被存储到以太坊区块链上.
交易指的是一个只能合约账户调用其他合约账户的过程,可以类比函数的调用过程.
以太坊和比特币的主要区别
以太坊不是一个单纯的数字货币项目,他可以提供全世界无差别的区块链只能合约引用平台,这个平台基于区块链四大核心技术核心要素:P2P网路,共识机制,账户模型,加密模块.
在以太坊推出了EVM和Solidity之后,区块链的开发者出现两类:一是公链底层开发者(C++和GO),而是智能合约开发者(Solidity)
除了智能合约之外,以太坊还设计了一下内容:
1.研究实现了自己的PoW挖矿算法—ETHASH,内存困难型的挖矿算法;
2.叔伯块激励机制,降低挖矿中心化的趋势;
3.设计了Gas机制,避免程序死循环消耗全网资源; 研究自己的POS共识算法-Casper
19.搭建自己的智能合约
搭建一条智能合约
1.下载并安装Geth
…
2.搭建以太坊私联
我们可以使用Geth搭建一条属于自己的以太坊区块链,也就是以太坊私链(在主网上运行和开发智能合约会消耗以太币)
3.编写并部署属于自己的智能合约
…
4.智能合约标准模板
…
20.区块链项目详解:BTS
什么是比特股:是一个公开透明的,7*24小时不简短运行的,基于区块链技术的去中心化交易平台
比特股的两个机制
人人承兑和锚定机制
法币 <--(人人承兑)--> 系统内置货币(锚定资产) <--(锚定机制)-->bts
(bts:是比特股上流通的平台代币,大约总量在36亿)
人人承兑: 提供了从法币到系统内置货币的转换,比特股系统内置了多种货币,它锚定了多数法币
实际上就是让法币和比特股系统内置货币的交换能够进行.并且这个过程不需要只在一个地方兑换.
锚定机制:是一种去中心化的抵押机制. 比特股系统内置了多种货币 ,如bitCNY,bitUSD,他们可与CNY,USD等1:1兑换的.
系统内置货币发行商是系统自身,发型给抵押了bts的用户,发行数量是有抵押的代币的数量决定的,你用bts抵押,然后换区bitCNY.
比特股的技术概览
21.引人瞩目的区块链项目:EOS,IOTA,Cardano
22.国内区块链项目技术一览
23.联盟链的困境
联盟链:需要准入许可,也叫许可链.
超级账本 HyperLedger (5个技术框架和4个辅助性工具)
Fabric
Fabric 架构上分为三个模块:成员关系管理(相当于账户权限管理系系统),区块链服务(提供和区块链一样的账本结构),Chaincode服务(相当于智能合约)
24.比特币专题(一):历史与货币
无国界共识,记账是本质,高效的资源调度,三权分立的社区自治形态
25.比特币专题(二):扩容之争,IFO与链上治理
扩容之争背后其实是社区治理的难题:如何让社区达成一致
ICO:区块链众筹(出一个白皮书,然后以要新出一个代币来集资)
IFO:(以要出一个由比特币分叉出来的代币为噱头来集资)
链上治理:指的是人们直接在区块链发起社区提案,并进行决策的过程
26.数字货币与数字资产
数字货币:原生型数字货币和锚定型数字货币
数字资产:Token
27.弄懂数字货币交易平台(一)
交易的两种模式
场内交易:成交单优先模式,有交易场所将买卖双方聚集在一起,进行竞价交易方式;
场外交易:报价单优先模式,买卖方不通过第三方直接成为交易对手的交易方式.
数字资产交易平台
…
28.弄懂数字交易平台(二)
两套账本:
…
数字货币交易所包含的系统模块:
Web业务逻辑系统(通常包含用户账户模块,登录网关,账户安全管理,KYC人证,行情推送等),交易撮合系统(交易所的核心模块),运营后台管理系统(交易所运营人员使用的系统),资金管理系统.
交易
(具体流程看专栏或者查阅其他资料)
29.互联网身份与区块链数字身份
人-身份证号,身份证只是人的凭证而不是人的身份.人的身份托管在政府机构,银行,医院等数据库中,关于人的客观历史事件被记录下来,这些记录组成了一个人,使人变得有一定辨识度.
互联网身份问题:
1.安全性问题
2.不同机构的身份数据兼容成本很高
3.用户无法控制属于自己的数据.
4.重复的创建和管理不同应用下的身份
5.虚假身份欺诈
是否可以去做区块链身份,它的核心功能将会是:验证和授权
30.区块链即服务BaaS(Blocking as a Service)
ass 后缀,一般都是云计算范畴的,如Iaas(infranstructure as a Service),SaaS(Software as a Service)等
什么是区块链即服务:提供多种方式的查询,交易广播,交易验证服务,使得公有区块链的服务可以集成到互联网应用的架构中,这些服务包括了数字货币,数字资产,身份验证服务,第三方监管服务.
32.数字货币钱包服务
数字货币钱包分类:
按用户端平台划分的钱包
按货币类型分类的钱包
按私钥存储方式来区分的钱包
按访问方式进行分类的钱包
扫描区块技术 Block scan: 把全节点钱包中的数据转换为数据库服务器中的数据,这需要一种扫描区块技术,简称扫快
扫块:扫描全节点钱包中的所有区块,然后将其解析后存储到数据库服务器的过程,这些数据库可以是MongoDB,也可以是mysql.
按照元界区块链结构,将表分为四大类:
第一类是区块block;第二类是交易Tx,第三类是交易输入输出tb_input,tb_output;第四块是分叉处理
区块浏览器:(或者叫做资产浏览器)
主要工作就是将区块链扫描到数据库服务器中,然后搭建一个web访问服务,用户只需要输入交易哈希或者区块哈希,就可以查询交易是否已经被打包和确认.
数字货币钱包服务:
…
32.33.区块链与供应链
34.从业区块链需要了解什么
35.搭建你的迷你区块链
略…