分叉挖矿
『壹』 区块链入门必备108知识点
区块链入门必备108知识点
(欢迎同频者交流)
1、什么是区块链
把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块。
每个区块里保存了上一个区块的 hash值,使区块之间产生关系,也就是说的链了。合起来就叫区块链。
2.什么是比特币
比特币概念是2009年 中本聪提出的,总量是2100万个。比特币链大约每10分钟产生一个区块,这个区块是矿工挖了10分钟挖出来的。作为给矿工奖励,一定数量的比特币会发给矿工们,但是这个一定数量是每四年减半一次。现在是12.5个。照这样下去2040年全部的比特币问世。
3.什么是 以太坊
以太坊与比特币最大的区别是有了智能合约。使得开发者在上边可以开发,运行各种应用。
4.分布式账本
它是一种在网络成员之间共享,复制和同步的数据库。直白说,在区块链上的所有用户都有记账功能,而且内容一致,这样保证了数据不可篡改性。
5.什么是准匿名性
相信大家都有钱包,发送交易都用的钱包地址(一串字符串)这就是准匿名。
6.什么是开放透明性/可追溯
区块链存储了从 历史 到现在的所有数据,任何人都可以查看,而且还可以查看到 历史 上的任何数据。
7.什么是不可篡改
历史 数据和当前交易的数据不可篡改。数据被存在链上的区块上,有一个hash值,如果修改该区块信息,那么它的 hash值也变了,它后边的所有区块的hash值也必须修改,使成为新的链。同时主链还在进行交易产生区块。修改后链也必须一直和主链同步产生区块,保证链的长度一样。代价太大了,只为修改一条数据。
8.什么是抗ddos攻击
ddos:黑客通过控制许多人的电脑或者手机,让他们同时访问一个网站,由于服务器的宽带是有限的,大量流量的涌入可能会使得网站可能无法正常工作,从而遭受损失。但区块链是分布式的,不存在一个中心服务器,一个节点出现故障,其他节点不受影响。理论上是超过51%的节点遭受攻击,会出现问题。
9.主链的定义
以比特币为例,某个时间点一个区块让2个矿工同时挖出来,然后接下来最先产生6个区块的链就是主链
10.单链/多链
单链指的是一条链上处理所有事物的数据结构。多链结构,其核心本质是公有链+N个子链构成。只有一条,子链理论上可以有无数条,每一个子链都可以运行一个或多个DAPP系统
11.公有链/联盟链/私有链
公有链:每个人都可以参与到区块链
联盟链:只允许联盟成员参与记账和查询
私有链:写入和查看的权限只掌握在一个组织手里。
12.共识层数据层等
区块链整体结构有六个:数据层,网络层,共识层,激励层,合约层,应用层。数据层:记录数据的一层,属于底层技术; 网络层:构建区块链网络的一种架构,它决定了用户与用户之间通过何种方式组织起来。共识层:提供了一套规则,让大家接收和存储的信息达成一致。激励层:设计激励政策,鼓励用户参与到区块链生态中;合约层:一般指“智能合约”,它是一套可以自动执行,根据自己需求编写的合约体系。应用层:区块链上的应用程序,与手机的app类似前分布式存储研发中心
13.时间戳
时间戳是指从1970年1月1日0时0分0秒0...到现在的当前时间的总秒数,或者总纳秒数等等很大的数字。每个区块生成时都有一个时间戳,表明生成区块的时间。
14.区块/区块头/区块体
区块是区块链的基本单元,区块头和区块体是区块链的组成部分。区块头里面包含的信息有上一个区块的hash,本区块的hash,时间戳等等。区块体就是区块里的详细数据。
15.Merkle树
Merkle树,也叫二叉树,是存储数据的一种数据结构,最底层是所有区块包含的原始数据,上一层是每个区块的hash值,这一层的hash两两组合产生新的hash值,形成新的一层,然后一层层往上,-直到产生一个hash值。这样的结构可以用于快速比较大量的数据,不需要下载全部的数据就可以快速的查找你想要的最底层的 历史 数据。
16什么是扩容
比特币的一个区块大小大约是1M左右,可以保存4000笔交易记录。扩容就是想把区块变大,能保存更多的数据。
17.什么是链
每个区块都会保存上一个区块的 hash,使区块之间产生关系,这个关系就是链。通过这个链把区块交易记录以及状态变化等的数据存储起来。
18.区块高度
这个不是距离上说的高度,它指是该区块与所在链上第一个区块之间相差的区块总个数。这个高度说明了就是第几个区块,只是标识作用。
19.分叉
同一时间内产生了两个区块(区块里的交易信息是一样的,只是区块的hash值不一样),之后在这两个区块上分叉出来两条链,这两条链接下来谁先生成6个区块,谁就是主链,另外的一条链丢弃。
20. 幽灵协议
算力高的矿池很容易比算力低的矿机产生区块速度快,导致区块链上大部分区块由这些算力高的矿池产生的。而算力低的矿机产生的区块因为慢,没有存储到链上,这些区块将会作废。
幽灵协议使得本来应该作废的区块,也可以短暂的留在链上,而且也可以作为
工作量证明的一部分。这样一来,小算力
的矿工,对主链的贡献比重就增大了,大型矿池就无法独家垄断对新区块的确认。
21.孤块
之前说过分叉,孤块就是同一时间产生的区块,有一个形成了链,另一个后边没有形成链。那么这个没形成链的块就叫
孤块。
22.叔块
上边说的孤块,通过幽灵协议,使它成为工作量证明的一部分,那它就不会被丢弃,会保存在主链上。这个区块就是下
23重放攻击
就是黑客把已经发送给服务器的消息,重新又发了一遍,有时候这样可以骗取服务器的多次响应。
24.有向无环图
也叫数据集合DAG(有向非循环图),DAG是一种理想的多链数据结构。现在说的区块链大都是单链,也就是一个区块连一个区块,DAG是多个区块相连。好处是可以同时生成好几个区块,于是网络可以同时处理大量交易,吞吐量肯定就上升了。但是缺点很多,目前属于研究阶段。
25.什么是挖矿
挖矿过程就是对以上这六个字段进行一系列的转换、连接和哈希运算,并随着不断一个一个试要寻找的随机数,最后成功找到一个随机数满足条件:经过哈希运算后的值,比预设难度值的 哈希值小,那么,就挖矿成功了,节点可以向邻近节点进行广播该区块,邻近节点收到该区块对以上六个字段进行同样的运算,验证合规,再向其它结点转播,其它结点也用同样的算法进行验证,如果全网有51%的结点都验证成功,这个区块就算真正地“挖矿”成功了,每个结点都把这个区块加在上一个区块的后面,并把区块中与自己记录相同的列表删除,再次复生上述过程。另外要说的是,不管挖矿成不成功每个节点都预先把奖励的比特币50个、所有交易的手续费(总输入-总输出)记在交易列表的第一项了(这是“挖矿”最根本的目的,也是保证区块链能长期稳定运行的根本原因),输出地址就是本结点的地址,但如果挖矿不成功,这笔交易就作废了,没有任何奖励。而且这笔叫作“生产交易”的交易不参与“挖矿”计算。
26.矿机/矿场
矿机就是各种配置的计算机,算力是他们的最大差距。矿机集中在一个地的地方就是矿场
27.矿池
就是矿工们联合起来一起组成一个团队,这个团队下的计算机群就是矿池。挖矿奖励,是根据自己的算力贡献度分发。
28.挖矿难度和算力
挖矿难度是为了保证产生区块的间隔时间稳定在某个时间短内,如比特币10分钟出
块1个。算力就是矿机的配置。
29.验证
当区块链里的验证是对交易合法性的一种确认,交易消息在节点之间传播时每个节点都会验证一次这笔交易是否合法。比如验证交易的语法是否正确,交易的金额是否大于0,输入的交易金额是否合理,等等。验证通过后打包,交给矿工挖矿。
30.交易广播
就是该节点给其他节点通过网络发送信息。
31.矿工费
区块链要像永动机一样不停的工作,需要矿工一直维护着这个系统。所以要给矿工们好处费,才能持久。
32.交易确认
当交易发生时,记录该笔交易的区块将进行第一次确认,并在该区块之后的链上的每一个区块进行再次确认:当确认数达到6个及以上时,通常认为这笔交易比较安全并难以篡改。
33.双重交易
就是我有10块钱,我用这10块钱买了一包烟,然后瞬间操作用这还没到付的10块钱又买了杯咖啡。所以验证交易的时候,要确认这10块钱是否已花费。
34.UTXO未花费的交易输出
它是一个包含交易数据和执行代码的数据结构,可以理解为存在但尚未消费的数字货币。
35.每秒交易数量TPS
也就是吞吐量,tps指系统每秒能处理的交易数量。
36.钱包
与支付宝类似,用来存储数字货币的,用区块链技术更加安全。
37.冷钱包/热钱包
冷钱包就是离线钱包,原理是储存在本地,运用二维码通信让私钥永不触网。热钱包就是在线钱包,原理是将私钥加密后存储在服务器上,当需要使用时再从服务器上下载下来,并在浏览器端进行解密。
38.软件钱包/ 硬件钱包
软件钱包是一种计算机程序。一般而言,软件钱包是与区块链交互的程序,可以让用户接收、存储和发送数字货币,可以存储多个密钥。硬件钱包是专门处理数字货币的智能设备。
39.空投
项目方把数字货币发送给各个用户钱包地址。
40.映射
映射跟区块链货币的发行相关,是链与链之间的映射。比如有一些区块链公司,前期没有完成链的开发,它就依托于以太坊发行自己的货币,前期货币的发行、交易等都在以太坊上进行操作。随着公司的发展,公司自己的链开发完成了公司想要把之前在以太坊上的信息全部对应到自己的链上,这个过程就是映射。
41.仓位
指投资人实有投资和实际投资资金的比例
42.全仓
全部资金买入比特币
43.减仓
把部分比特币卖出,但不全部卖出
44.重仓
资金和比特币相比,比特币份额占多
45.轻仓
资金和比特币相比,资金份额占多
46.空仓
把手里所持比特币全部卖出,全部转为资金
47.止盈
获得一定收益后,将所持比特币卖出以保住盈利
48.止损
亏损到一定程度后,将所持比特币卖出以防止亏损进一步扩大
49.牛市
价格持续上升,前景乐观
50.熊市
价格持续下跌,前景黯淡
51.多头(做多)
买方,认为币价未来会上涨,买入币,待币价上涨后,高价卖出获利了结
52.空头(做空)
卖方,认为币价未来会下跌,将手中持有的币(或向交易平台借币)卖出,待币价下跌后,低价买入获利了结
53.建仓
买入比特币等虚拟货币
54.补仓
分批买入比特币等虚拟货币,如:先买入1BTC,之后再买入1BTC
55.全仓
将所有资金一次性全部买入某一种虚拟币
56.反弹
币价下跌时,因下跌过快而价格回升调整
57.盘整(横盘)
价格波动幅度较小,币价稳定
58.阴跌
币价缓慢下滑
59.跳水(瀑布)
币价快速下跌,幅度很大
60.割肉
买入比特币后,币价下跌,为避免亏损扩大而赔本卖出比特币。或借币做空后,币价上涨,赔本买入比特币
61.套牢
预期币价上涨,不料买入后币价却下跌;或预期币价下跌,不料卖出后,币价却上涨
62.解套
买入比特币后币价下跌造成暂时的账面损失,但之后币价回升,扭亏为盈
63.踏空
因看淡后市卖出比特币后,币价却一路上涨,未能及时买入,因此未能赚得利润
64.超买
币价持续上升到一定高度,买方力量基本用尽,币价即将下跌
65.超卖
币价持续下跌到一定低点,卖方力量基本用尽,币价即将回升
66.诱多
币价盘整已久,下跌可能性较大,空头大多已卖出比特币,突然空方将币价拉高,诱使多方以为币价将会上涨,纷纷买入,结果空方打压币价,使多方套牢
67.诱空
多头买入比特币后,故意打压币价,使空头以为币价将会下跌,纷纷抛出,结果误入多头的陷阱
68.什么是NFT
NFT全称“Non-Fungible Tokens” 即非同质化代币,简单来说,即区块链上一种无法分割的版权证明,主要作用数字资产确权,转移,与数字货币区别在于,它独一无二,不可分割,本质上,是一种独特的数字资产。
69.什么是元宇宙
元宇宙是一个虚拟时空间的集合, 由一系列的增强现实(AR), 虚拟现实(VR) 和互联网(Internet)所组成,其中数字货币承载着这个世界中价值转移的功能。
70.什么是DeFi
DeFi,全称为Decentralized Finance,即“去中心化金融”或者“分布式金融”。“去中心化金融”,与传统中心化金融相对,指建立在开放的去中心化网络中的各类金融领域的应用,目标是建立一个多层面的金融系统,以区块链技术和密码货币为基础,重新创造并完善已有的金融体系
71.谁是中本聪?
72.比特币和Q币不一样
比特币是一种去中心化的数字资产,没有发行主体。Q币是由腾讯公司发行的电子货币,类似于电子积分,其实不是货币。Q币需要有中心化的发行机构,Q币因为腾讯公司的信用背书,才能被认可和使用。使用范围也局限在腾讯的 游戏 和服务中,Q币的价值完全基于人们对腾讯公司的信任。
比特币不通过中心化机构发行,但却能够得到全球的广泛认可,是因为比特币可以自证其信,比特币的发行和流通由全网矿工共同记账,不需要中心机构也能确保任何人都无法窜改账本。
73.矿机是什么?
以比特币为例,比特币矿机就是通过运行大量计算争夺记账权从而获得新生比特币奖励的专业设备,一般由挖矿芯片、散热片和风扇组成,只执行单一的计算程序,耗电量较大。挖矿实际是矿工之间比拼算力,拥有较多算力的矿工挖到比特币的概率更大。随着全网算力上涨,用传统的设备(CPU、GPU)挖到比特的难度越来越大,人们开发出专门用来挖矿的芯片。芯片是矿机最核心的零件。芯片运转的过程会产生大量的热,为了散热降温,比特币矿机一般配有散热片和风扇。用户在电脑上下载比特币挖矿软件,用该软件分配好每台矿机的任务,就可以开始挖矿了。每种币的算法不同,所需要的矿机也各不相同。
74.量化交易是什么?
量化交易,有时候也称自动化交易,是指以先进的数学模型替代人为的主观判断,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下做出非理性的投资决策。量化交易有很多种,包括跨平台搬砖、趋势交易、对冲等。跨平台搬砖是指,当不同目标平台价差达到一定金额,在价高的平台卖出,在价低的平台买入。
75.区块链资产场外交易
场外交易也叫OTC交易。用户需要自己寻找交易对手,不通过撮合成交,成交价格由交易双方协商确定,交易双方可以借助当面协商或者电话通讯等方式充分沟通。
76.时间戳是什么?
区块链通过时间戳保证每个区块依次顺序相连。时间戳使区块链上每一笔数据都具有时间标记。简单来说,时间戳证明了区块链上什么时候发生了什么事情,且任何人无法篡改。
77.区块链分叉是什么?
在中心化系统中升级软件十分简单,在应用商店点击“升级”即可。但是在区块链等去中心化系统中,“升级”并不是那么简单,甚至可能一言不合造成区块链分叉。简单说,分叉是指区块链在进行“升级”时发生了意见分歧,从而导致区块链分叉。因为没有中心化机构,比特币等数字资产每次代码升级都需要获得比特币社区的一致认可,如果比特币社区无法达成一致,区块链很可能形成分叉。
78.软分叉和硬分叉
硬分叉,是指当比特币代码发生改变后,旧节点拒绝接受由新节点创造的区块。不符合原规则的区块将被忽略,矿工会按照原规则,在他们最后验证的区块之后创建新的区块。 软分叉是指旧的节点并不会意识到比特币代码发生改变,并继续接受由新节点创造的区块。矿工们可能会在他们完全没有理解,或者验证过的区块上进行工作。软分叉和硬分叉都"向后兼容",这样才能保证新节点可以从头验证区块链。向后兼容是指新软件接受由旧软件所产生的数据或者代码,比如说Windows 10可以运行Windows XP的应用。而软分叉还可以"向前兼容"。
79.区块链项目分类和应用
从目前主流的区块链项目来看,区块链项目主要为四类:第一类:币类;第二类:平台类;第三类:应用类;第四类:资产代币化。
80.对标美元的USDT
USDT是Tether公司推出的对标美元(USD)的代币Tether USD。1USDT=1美元,用户可以随时使用USDT与USD进行1:1兑换。Tether公司执行1:1准备金保证制度,即每个USDT代币,都会有1美元的准备金保障,对USDT价格的恒定形成支撑。某个数字资产单价是多少USDT,也就相当于是它的单价是多少美元(USD)。
81.山寨币和竞争币
山寨币是指以比特币代码为模板,对其底层技术区块链进行了一些修改的区块链资产,其中有技术性创新或改进的又称为竞争币。因为比特币代码开源,导致比特币的抄袭成本很低,甚至只需复制比特币的代码,修改一些参数,便可以生成一条全新的区块链。
82.三大交易所
币安
Okex
火币
83.行情软件
Mytoken
非小号
84.资讯网站
巴比特
金色 财经
币世界快讯
85.区块链浏览器
BTC
ETH
BCH
LTC
ETC
86.钱包
Imtoken
比特派
MetaMask(小狐狸 )
87. 去中心化交易所
uniswap
88. NFT交易所
Opensea
Super Rare
89. 梯子
自备,购买靠谱梯子
90. 平台币
平台发行的数字货币,用于抵扣手续费,交易等
91. 牛市、熊市
牛市:上涨行情
熊市:下跌行情
92. 区块链1.0
基于分布式账本的货币交易体系,代表为比特币
93. 区块链2.0
以太坊(智能合约)为代表的合同区块链技术为2.0
94. 区块链3.0
智能化物联网时代,超出金融领域,为各种行业提供去中心化解决方案
95. 智能合约
智能合约,Smart Contract,是一种旨在以信息化方式传播、验证或执行合同的计算机协议,简单说,提前定好电子合约,一旦双方确认,合同自动执行。
96. 什么是通证?
通证经济就是以Token为唯一参考标准的经济体系,也就是说相当于通行证,你拥有Token ,就拥有权益,就拥有发言权。
97. 大数据 和 区块链 的 区别
大数据是生产资料,AI是新的生产力,区块链是新的生产关系。大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。简单理解为,大数据就是长期积累的海量数据,短期无法获取。区块链可以作为大数据的获取方式,但无法取代大数据。大数据只是作为在区块链运行的介质,没有绝对的技术性能,所以两者不能混淆。(生产关系简单理解就是劳动交换和消费关系,核心在于生产力,生产力核心在于生产工具)
98. 什么是ICO?
ICO,Initial Coin Offering, 首次公开代币发行,就是区块链数字货币行业中的众筹。是2017最为热门的话题和投资趋势,国家9.4出台监管方案。说到ICO,人们会想到IPO,两者有着本质不同。
99. 数字货币五个特征
第一个特征:去中心化
第二个特征:有开源代码
第三个特征:有独立的电子钱包
第四个特征:恒量发行的
第五个特征:可以全球流通
100.什么叫去中心化?
没有发行方,不属于任何机构或国家,由互联网网络专家设计、开发并存放于互联网上,公开发行的币种。
101. 什么叫衡量(稀缺性)?
发行总量一旦设定,永久固定,不能更改,不能随意超发,可接受全球互联网监督。因挖掘和开釆难度虽时间数量变化,时间越长,开采难度越大,所开釆的币就越少,因此具有稀缺性。
102. 什么叫开源代码?
用字母数字组成的存放在互联网上,任何人都可以查出其设计的源代码,所有人都可以参与,可以挖掘,全球公开化。
103. 什么叫匿名交易? 专有钱包私密?
每个人都可以在网上注册下载钱包,无需实名认证,完全由加密数字代码组成,全球即时点对点发送、交易,无需借助银行和任何机构,非本人授权任何人都无法追踪、查询。
104.什么是合约交易?
合约交易是指买卖双方对约定未来某个时间按指定价格接收一定数量的某种资产的协议进行交易。合约交易的买卖对象是由交易所统一制定的标准化合约,交易所规定了其商品种类,交易时间,数量等标准化信息。合约代表了买卖双方所拥有的权利和义务。
105.数字货币产业链
芯片厂家 矿机厂商 矿机代理 挖矿 出矿到交易所 散户炒币
106.北 枫 是谁?
北 枫 :数字货币价值投资者
投资风格:稳健
建立社区 :北斗 社区 (高质量价投社区 )
107.北斗 投资策略
长短结合,价投为主,不碰合约,不玩短线
合理布局,科学操作,稳健保守,挣周期钱
108.北 枫 ?
欢迎币友,共谋发展
『贰』 比特币挖矿什么意思
比特币挖矿,是一种利用电脑硬件计算出比特币的位置并获取的过程。
挖矿是在比特币系统中进行记录数据的一个激励过程,在比特币系统个人用户通过利用CPU或者GPU进行哈希运算,当计算出特定的哈希值之后便拥有了打包区块的权利。
而为了奖励这个用户进行打包区块,系统就给予一定的比特币作为报酬。因为这个过程很像现实生活中“挖矿”所以大多数人就把这个过程叫做挖矿。除了比特币外,其他的电子虚拟货币也可以通过挖矿奖励获取,如以太坊、门罗币等等。
(2)分叉挖矿扩展阅读:
挖矿风险:
1,货币安全
比特币的支取需要多达数百位的密钥,而多数人会将这一长串的数字记录于电脑上,但经常发生的如硬盘损坏等问题,会让密钥永久丢失,这也导致了比特币的丢失。
2,系统风险
系统风险在比特币这个里面非常常见,最常见的当属于分叉。分叉会导致币价下跌,挖矿收益锐减。不过很多情况表明,分叉反而让矿工收益,分叉出来的竞争币也需要矿工的算力来完成铸币和交易的过程,为了争取更多的矿工,竞争币会提供更多的区块奖励及手续费来吸引矿工。风险反而成就了矿工。
『叁』 比特币分叉往事补遗
互联网是有记忆的。
最近比特币屡创新高,华尔街机构纷纷入场囤币,连马斯克都忍不住公开喊单,得到了主流媒体和金融机构的认可,大家都对比特币系统的安全性没有任何质疑。
不过,很多人可能想象不到,就在三年前,比特币还面临过诞生以来最大的一次危机——差点被 BCH 集团夺权篡位,甚至连“比特币”这个名字都差点不保。
比特币分叉都是上一个牛市的陈年旧事了,本来不想多说,但是最近又有一些无聊的人,抹黑中伤币信,我们不说话,让一些不明真相的朋友还真以为币信十恶不赦,成了反派的代名词,还是简单说一说当年的币信为保护比特币网络做的一些事情吧。
这些事情都已经过去好多年,这些年来一直没对外提,也不求什么名利,只求大家知晓真相,去伪存真,同时也在茶余饭后,多一些谈资。
BCH 分叉党为什么仇视币信?
很多人觉得当年“比特币分叉”这件事并没什么大不了的,毕竟这种现象现在在加密数字货币社区很常见,可能一个程序员用不了几天就能成功将一个币种分叉。
但是在当年,分叉是一件非常严重的事情,牵扯到方方面面的人和事,牵扯到诸多信仰和利益,简直和“佛道之争”不遑多让,简直已经达到你死我活,兵戎相见的地步。
这并不夸张说辞,而是事实。
现实中很多关系非常好的朋友,合作伙伴,因为比特币分叉这件事而反目成仇,老死不相往来。
很多人无法理解,为什么 BCH 分叉集团对比特币支持者、对币信恨之入骨?天天怼天怼地各种造谣?而且有时候为了让自己的谣言看上去逻辑完备,往往不惜花大量时间去搜集各种资料,然后移花接木,张冠李戴,让众多不明群众看了觉得“资料详实”,大呼过瘾。
原因就在于,币信断了 BCH 分叉集团的财路。
正所谓“断人财路,如杀人父母”,币信在瓦解 BCH 集团分叉s行动的过程中,做了许多工作,甚至在关键时期守护了比特币两周时间,成功瓦解了BCH(之前叫 BCC ) 篡权夺位的阴谋。
不得不说,BCH 集团真的是知行合一,他们也有信仰,他们真的相信 BCH 肯定会成功,能够打败比特币,所以他们把手头的比特币基本上都换成了 BCH ,要是被他们篡权成功,其回报之丰厚绝对难以想象。
结果这一切都被币信在关键时刻给毁了,你说他们恨不恨?
币信和比特大陆的恩怨
有关比特币分叉的文章有很多,我这里就不再多说,感兴趣的朋友看一下虎扑的文章《比特币分叉往事》或者搜索其他文章了解。
这里主要说说在分叉大战整个过程中,币信扮演了一个什么样的角色,因为这个事情遭受了怎样的损失。
可能很多朋友在 2018 年的时候,看到过比特大陆因专利的事情状告币信矿业公司的新闻,其中的被告还有深圳比特微(神马矿机)和新特能源股份有限公司(矿场方)。
当时很多人看到这个新闻其实挺震惊的,因为币信星空和比特大陆吴忌寒两人的关系其实一向都非常好,私底下经常一起约饭。
他们怎么突然就对簿公堂了?到底发生了什么事情?
在那个官司中,涉及到的专利叫做串联供电技术。
说起串联供电技术,就不得不提到一个技术宅男——瓦西里。
瓦西里早年是俄罗斯的 Bitfury 公司(2013 年就已经开始做比特币矿机公司)的工程师。从 Bitfury 出来之后,2014 年,瓦西里被一个名叫 Yuri 的俄罗斯人忽悠到了中国,因为 Yuri 跟他说他联系到了中国的烤猫,能够拿到他们的芯片做矿机,可以发大财。
那个时候,烤猫公司刚刚宣布,他们不再自己做矿机,而是直接转型成为芯片提供商,欢迎大家采购芯片。
Yuri 是个典型的商人,由于当时烤猫最新芯片矿机方案不成熟,在尝试几次做矿机方案不成功之后,他转而向烤猫兜售他的“串联供电”技术。
这项技术早就存在,但是瓦西里受其启发,第一次成果将其用在矿机主板上。
有了这项技术,矿机可以不用昂贵的电源控制芯片,直接对挖矿芯片供电,这样不但可以节省大量成本,还可以不受电源芯片货源的制约。(当时比特大陆将市场上的电源芯片一扫而空,不但没货还抬升了价格)
这项技术说起来简单,实现也简单,但研发却非常困难,因为没有电源芯片控制,电流无法稳定输出,很容易造成电流均衡而烧毁芯片。
烤猫对这项技术非常感兴趣,于是和 Yuri 谈了很多次,但是 Yuri 的条件太苛刻,后来烤猫得知这项技术的实际拥有者并不是 Yuri 而是瓦西里,于是直接找到瓦西里,购买了他的技术,并且还将瓦西里招到了公司当硬件开发工程师。
后来,杨作兴从 RockMiner 离开,加入了烤猫矿机( ASICMiner )研发团队,和瓦西里成为同事,一起研发矿机和芯片。
2015 年,烤猫突然人间蒸发,烤猫公司也原地解散,所有技术封存。后来道杨作兴在比特大陆兼职了一段时间,顺便将串联电源技术带到了比特大陆。
到了 2016 年 ,杨作兴有了创业的想法,首先是找吴忌寒聊,得到了吴忌寒的单方面的支持,然后吴让他去找詹聊一下,却遭到了詹克团的当面否决,甚至詹还当面将杨作兴的商业计划书直接用碎纸机碎成碎片。
于是,杨作兴创办了神马矿机,从此和比特大陆打擂台。
自然,神马矿机也顺理成章地用上了串联电源技术。
值得说一下的是,杨作兴创业之前曾多次找到星空聊创业的事情,在詹之后,杨再次找到星空,确认杨下决心要做矿机芯片后,星空联合其他几位朋友一起投了,成为了神马矿机的大股东之一。
星空投资神马矿机的逻辑很简单——由于烤猫失踪,烤猫矿机彻底退出 历史 舞台,当时比特大陆的蚂蚁矿机一家独大,基本处于垄断地位,这对比特币网络并不好,很容易出大问题。(事实证明这个判断是非常正确的)
当时一起投资神马矿机的,还有鱼池的神鱼和王纯,大家的想法都非常一致,不能让比特大陆再这样搞下去。
要知道,为了能够成功分叉比特币,比特大陆很早就开始布局,他们在那段时间,将大量矿机优先卖给支持分叉的人,支持比特币的人反而很难拿到货。
并且,大区块的支持者甚至只需要支付 10% 的货款,这相当于是给他们做了一个五倍杠杆,只需要支付一份算力的钱,就能获得五份算力。
很多人因此而发家致富,因此也对比特大陆更加忠心耿耿,在支持分叉的岐途上一路走到黑。
幸运地是,神马矿机研发顺利,并且迅速成长成为能够和比特大陆一较高下的矿机厂商。
币信矿业当时是比特大陆的超级客户,为了支持神马矿机的发展,也采购了大量的神马矿机。
在分叉大战期间,当 BCH 集团意识到是币信在暗中保护比特币网络的时候,他们采用了围魏救赵的方式,将神马公司和币信矿业公司,以侵犯专利为由,一起告上了法庭。
虽然最终这个官司比特大陆输了,但是他们却达到了预期目的——矿场场地方为了避免风险,要求币信的矿机限时从矿场中搬离,币信算力因此暂时消失,这场较量才告一段落。
经此一战,币信损失惨重。
一方面,币信用自有算力去阻止 BCH 算力暴击(后文有解释),每天就有将近 100 个比特币的损失(持续了一个难度周期,即 14 日)。
另外一方面,因为矿场被迫搬离,这其中又耽误了很长时间无法挖矿,中间也有不小的损耗,币信也遭受了巨大亏损。
不过,这个时候,BCH 集团针对比特币精心策划地采用的紧急难度调整算法(EDA)已经失去了最佳作用时间,他们原本想用这个方式来偷袭比特币网络的阴谋也彻底破产。
如果当时没有币信算力的狙击,BCH 真的有可能已经成功篡位,不但算力超过比特币,可能连比特币这个名字都被其抢走,比特币可能成长到今天的规模和地位。
因为这件事情,星空和吴忌寒这两个原来的好兄弟,也因此反目成仇,断了往来。币信从此也成为了 BCH 利益相关者的肉中刺,眼中钉,欲处之而后快。
币信为什么不支持 BCH ?
众所周知,其实无论是币信也好,还是鱼池也好,当年和比特大陆的关系其实都不错,包括香港共识和纽约共识大会,大家都坐在一起谈,一起讨论。
目的当然是共赢,希望比特币发展得更好。
但是,这一切在 2017 年之后事情开始有了变化,吴忌寒逐渐有了要分叉的想法,并且他在 2017 年 8 月将这个想法付诸实践。
在这个过程中,BCH 阵营的做法一直相当具有攻击性,一副我就要干死你的架势。其实分叉就分叉吧,各自好好做自己的事情就好,但是 BCH 从一开始就打算好了,要踩比特币上位。
其实说来很讽刺,原来的比特币布道者,却摇身一变成为了比特币最坚定的反对力量,攻讦比特币也最卖力。
他们说“BCH 才是真正的比特币”,号召大家把比特币卖了买 BCH。不知道多少人信了他们的谎言,将自己幸苦囤的比特币换成了 BCH,因此而损失惨重,最终不得不彻底离开了这个行业。请问,这种行为和诈骗有什么区别?
他们说比特币区块小,无法处理太多交易,链上非常堵。结果大家发现比特币没他们说的那么堵,于是他们就发起“粉尘攻击”,短时间内发送大量的小额垃圾交易,造成比特币网络拥堵的假象。然后他们鼓吹大区块,造谣说比特币最终会因拥堵而消亡。(事实上,比特币至今还活得很好,并且越来越健壮。)
记得当年杀毒软件是如何作恶的吗?为了卖出他们的软件,有些无良公司会自己炮制病毒,等用户中毒之后,再去兜售产品。他们的行为简直如出一辙。
当时澳本聪站出来支持分叉,于是他们与其一拍即合,请来了澳本聪为 BCH 站台,写文章,开发布会,一顿骚操作猛如虎,风光得不可一世。
当时他们万万没想到,出来混总是要还的,澳本聪这个诈骗犯可不是易与之辈。仅仅是三个月之后,澳本聪就反手给了 BCH 致命 一刀,掀起了差点将 BCH 彻底毁灭的分叉大战。
没错,BCH 分叉比特币,澳本聪又来分叉 BCH,另外分出个 BSV,真是一出好戏!
币信一直都是比特币的信徒,或许 BCH 的初衷是好的,但是在后续的推进过程中,币信自然非常不认可他们所采取的各种作恶手段。
也许这些手段在政治斗争中非常常见,摸黑陷害竞争对手都是常用伎俩,但这是比特币社区,寄托了无数人的期望和信仰,最初的信仰者就是一小撮理想主义者,变成这个样子,肯定是大家所不愿看到的。
并且,BCH 背后主要推手是比特大陆,无论是开发人员,还是社区中的意见领袖,大部分都是比特大陆资助的,BCH 俨然就是一个公司币,过于中心化,想要取比特币而代之,显然是不合适的。
并不是说公司币不行,例如 BNB 这样的平台币就做得非常好,但是如果这个公司币想要干翻比特币自己上位,那就有点定位不清了。
总之,BCH 集团的很多行为都透露出他们的极其不靠谱,要是将比特币的未来寄希望在这样一群人身上,那比特币迟早玩完,这是所有比特币社区的人不愿看到的。
于是,在关键时刻,币信决定出手干预。
币信是如何保护比特币网络的?
不得不承认,BCH 为了赢得这场分叉之战,的确做了大量的工作和准备,在很久之前就开始聘请社区内的一些意见领袖开始造势,不停地写文章,有些文章写得还挺有深度,看上去有理有据,逻辑完备。(后来澳本聪也采用了同样的套路,忽悠了一大批死忠粉)
除了舆论战,在技术和未来愿景方面,BCH 集团也画了很多大饼,看上去让人神往,由于大区块的特性,的确有很多比特币无法实现的功能,这让很多人对其充满了期待。
如果这些还只是常规操作,那么有一点不得不让人惊艳,那就是—— BCH 的紧急难度调整机制(EDA)。
因为 BCH 使用和比特币同样的算法,按正常的思路,BCH 要想分叉成功,并且持续保持出块,就必须拥有庞大的算力支撑,因为分叉的时候,比特币网络的难度已经非常大了,小算力根本爆不出块。
所以,他们想出了一个紧急难度调整机制:如果当前区块的前6个区块出块时间大于12小时,则难度自动下调20%,如果当前区块的 MTP 时间和从当前块往前数第6个块的 MTP 时间相差大于12个小时,就应急降低20%难度。
简单来说,就是如果一定时间内不出块,就会自动下调20%难度,再不出块就继续下调 20%,直到出块为止。这样就算只有很小的算力,也能保证能够出块。
这个机制乍一看像是防守机制,纯粹是为了自保,为了自己能够生存下去而已,但是各位别被其表象所迷惑了,这实际上是一个极具有攻击性的机制,因为难度只有下调,没有上调。
设计这套机制的人,深谙人性之道,他们懂得,矿工其实是趋利的,只要哪里有钱赚,就会用脚投票,直接把算力切到哪里。
当 BCH 的难度降低了,拥有同样的算力,那矿工就能够挖到更多的币,只要所得到的利润大于比特币,那么矿工的算力就会被吸引过来。
这样,就算 BCH 的价格比比特币低,只要难度够低,矿工就能赚更多钱,算力就会过来。
而 BCH 的算力和比特币的算力是互斥的,挖 BCH 就不能挖 BTC,是一种此消彼长的关系,一旦比特币算力都迁移到 BCH 网络,再配合拉涨币价,在当时的环境下,还真有可能会被 BCH 篡位成功。
要知道,当时很多中立方都表示过,哪个网络的算力大就支持哪个币是真正的比特币。
不得不承认,紧急难度调整机制的设计的确非常天才,所以,这种机制也被人称为针对比特币的“算力暴击”。
BCH 集团酝酿多时,花费了大量的人力物力筹备分叉,他们准备在分叉之后,立刻对比特币展开“算力暴击”,即分叉完成之后,就把自己的算力从 BCH 网络撤出,让难度大幅下降,同时大幅度拉涨币价,这样就可以吸引大部分的矿工算力过来,比特币网络的算力就会暴降,让比特币网络因拥堵不出块而无法运转,最终一举奠定胜局。
这个计划近乎完美。
这简直就是针对比特币的阳谋,大家都知道怎么回事,但是就是没办法去破解,因为当时 BCH 集团控制了一半以上的比特币算力,只要吸引 10%左右的算力过来,比特币网络就可能运转不了了。
当时除了 BCH 集团控制的算力和矿池,就只有三个矿池占比比较大,分别是鱼池鱼池、国池(比特币中国矿池)、和币信矿池。
矿池就算想要支持比特币,那也得矿工答应,矿池是无法控制用户的算力的,不然矿工肯定会用脚投票直接走人。
所以,BCH 集团当时觉得胜券在握了,估计他们连庆祝酒会都已经准备好了。
但是,让他们万万没有想到的是,等分叉完毕,BCH 出了几个块,当他们将自有算力从 BCH 网络撤出,静静等待不出块而难度自动下降之时,意外却出现了——有神秘算力突然接入了 BCH 网络,爆块继续。
由于有持续爆块,BCH 的紧急难度调整机制就无法生效,因为这样难度一直降不下来(出块间隔时间小于 12 小时)。
并且,为了防止神秘算力针对 BCH 网络发动 51%攻击,他们又不得不很尴尬地重新将自己的算力切回来,持续挖着。
这些神秘算力隐藏了 Coinbase 和地址,一时间所有人都搞不清其来路。
突然出现的神秘算力打乱了“算力暴击计划”的节奏,本来等难度降低后,他们准备了大量的资金要配合拉盘,一时间拉盘计划也无法继续推进,生生卡住了。
这种情形,就仿佛一个刺客,针对刺杀目标发动了致命一击,然后突然出现了一股神秘力量,将这致命一击给挡住了,并且持续守护着目标,导致刺客后续的一系列攻击都无法实施。
BCH集团非常费解:这股神秘力量到底从哪里来的?
前面说过,除了 BCH 集团自己控制的算力,另外拥有比较大的算力的,就只剩下鱼池、国池和币信矿池这三方。
鱼池和国池都是散户的算力,他们根本无法动用,只有币信矿池基本都是自己的算力,也就是说只有币信有这个条件做这件事。
答案呼之欲出:币信!
是的,这股神秘算力就是币信的自有算力。
币信在 BCH 集团准备针对比特币发动第一次也是最强的一次算力暴击的时候,出手了。
其他人没办法做这件事情,只有币信有这个条件,只有币信能做,那就由币信来做!
为了比特币的未来,舍我其谁?
要知道,当时难度没降下来,矿工挖 BCH 肯定是不划算的,币信矿业顶着每天几十甚至上百比特币的巨额亏损,硬生生守护了比特币一个难度周期!(即两周时间)
BCH 集团也很快反应过来,知道这肯定是币信干的好事,但是没办法,在技术上他们是无法拒绝币信的算力的,只能干瞪眼。
通过这个方式,他们终于将币信算力赶出了 BCH 网络,这才得以对比特币实施算力暴击。
币信矿场刚停机,他们就迫不及待开始拉盘了,BCH 开始大涨,但那个时候已经他们无力回天了,因为最佳狙击时机已过,他们已经失去了“天时”,效果大打折扣。
尽管后面 BCH 针对比特币多次算力暴击,导致比特币网络算力经常不稳定,但胜负已定,已经无关紧要,不影响大局。
经此一役,币信损失惨重,不但损失了十几天的比特币挖矿收益,矿场也不得不搬离,损失的比特币在现在看来,简直是个天文数字。
但是,这一切都是值得的,币信为守护了比特币贡献了自己的力量,帮比特币挡住了致命一击,做了比特币信仰者该做的事情。
虽然币信因为这件事几乎将以前所有挖矿赚到的利润都一次性亏了出去,但长期来看,币信肯是受益的。
后记
这些往事封存已久,很多人其实并不清楚其中的细节,也不知道币信当年做的事情,这其实也没什么,币信一直都活得很好。
但是这么多年来,币信一直被一些别有用心者抹黑造谣,实在心累,想想还是写点文字,将事实公布,免得无辜吃瓜群众被其误导。
分叉风波已经过去多年,比特币依然还是那个比特币,比特币社区也比以前更加健壮,这是我们这些比特币信仰者最大的幸福。
Long Bitcoin, Short the world!
#欧易OKEx# #比特币[超话]# #数字货币#
『肆』 区块链为什么有分叉分叉会发生什么情况
区块链的分叉(fork)的形成原因可能有多种。
当两个结点几乎在同一个时间挖到了矿并同时发布区块,此时就出现临时性的的分叉(state fork),
本质上是对比特币这个区块链当前的状态产生了意见分歧,
当人为的发起分叉攻击(forking attack),也就是故意造成这类分叉(deliberate fork)还有一类分叉是,当比特币的协议发生了改变的时候,软件需要升级。而在分布式系统中不能保证所有节点同时升级软件,假设存在部分节点未升级,会导致协议分叉(protocol fork)。对协议修改的内容的不同,又可以将分叉分为硬分叉(hard fork)和软分叉(soft fork);
比特币协议增加新协议,扩展新功能,未升级软件的旧节点会不认可这些修改,会认为这些特性是非法的。这也就是对比特币协议内容产生分歧,从而导致的分叉叫 硬分叉 。此时,就出现了新节点永远沿着新节点产生的链挖矿,旧节点永远沿着旧节点链挖矿,由于新节点算力足够强,所以形成两条永远都在延伸且平行的链。只要这部分旧节点永远不更新,则旧链将一直延续,可见这种分叉是持久性的。
出现hard fork后,便变成了两条平行的链,也就造成了社区分裂。社区中有一部分人,会认为下面的链才是根正苗红,各个链上的货币独立。以太坊历史上的一件大事就是硬分叉事件。以太坊称为ETH,但目前看到的ETH已经不是最初的ETH了,以太坊在历史上发生过硬分叉,另一个链称为ETC。实际上,ETC才是以太坊设计原本的协议,而ETH是黑客攻击ETH上一个智能合约THE DAO后,进行回滚的协议链(将黑客攻击偷取的以太币采用硬分叉方式回滚回到另一智能合约,然后退还给真正拥有者)。
分叉之初,由于两个链分叉造成了互相影响,产生了很多麻烦。比如:在ETH链上有一笔转账B->C,有人便在ETC链上回放,将ETC链上的货币页转给了C(C收到两笔钱)。后来,对两条链各添加了一个chainID,将两个链区分开,才使得这两条链真正分开。
如果对BTC协议添加限制,使得原本合法交易在新交易中不合法,便会形成软分叉。
当大多数节点已经更新完毕之后,旧节点认可新节点挖出的区块,因此发布自己挖出的区块,但新节点不认可旧结点挖出的区块,便沿着上一个新节点发布的区块继续挖矿,当新节点拥有大部分算力的时候,新链会越来越长,从而旧节点挖出并发布的区块一直被抛弃,无法获得出块奖励,最终倒逼旧节点升级软件,实现所有节点认可新协议并进行升级。可见,只要系统中拥有半数以上算力节点更新软件,此类分叉不会出现永久性分叉。比特币脚本中的P2SH就是通过软分叉方法加进去的。
这一部分我并没有查到太多的资料,但是在绝大多数共识协议之中我们都假设需要过半算力;
在理论上,如果掌握了50%以上的算力,就拥有了获得记账权的绝对优势,可以更快地生成区块,也拥有了篡改区块链数据的权利。因此,当具有过半的算力,也就是51%都是诚实可靠的,能保证整一个区块链在合法有序的进行运行。
但是为什么选择过半的算力,而不是过半的用户?比特币系统,任何人都可以加入,且创建账户及其简单,只需要本地产生公私钥对即可。只有转账(交易)时候,比特币系统才能知道该账户的存在。这样,黑客可以使用计算机专门生成大量公私钥对,当其产生大量公私钥对超过系统中一半数目,就可以获得支配地位(女巫攻击)。因此,比特币系统中很巧妙的使用算力作为投票的依据。
『伍』 最长区块链才是正确的区块链
什么是最长链?为什么是正确的区块链?
比特币白皮书规定,节点永远认为最长链是正确的区块链,并将持续在它上面延长。所有矿工都在最长链上挖矿,有利于区块链账本的唯一性。如果给你转账的比特币交易不记录在最长链上,你将有可能面临财产损失。
怎样算是“最长的区块链”呢?因为全世界的矿工同时在挖矿,有可能同时有2个矿工算出了正确的答案,那么区块链就会形成分叉,剩下的矿工有可能在其中任意一条分叉上继续挖矿,延长区块链。
所以我们通常要求在比特币转账被打包之后,还需要经历6个区块的确认,确保矿工不会再回到另一条分叉上挖矿时,才算真正的转账成功。
『陆』 详解比特币挖矿原理
可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与者都把它看作一本所有权的权威记录。
比特币没有中心机构,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。
至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。
通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。
在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。
在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:
交易的语法和数据结构必须正确。
输入与输出列表都不能为空。
交易的字节大小是小于MAX_BLOCK_SIZE的。
每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。
没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。
nLockTime是小于或等于INT_MAX的。
交易的字节大小是大于或等于100的。
交易中的签名数量应小于签名操作数量上限。
解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。
池中或位于主分支区块中的一个匹配交易必须是存在的。
对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。
对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。
对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。
对于每一个输入,引用的输出是必须存在的,并且没有被花费。
使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。
如果输入值的总和小于输出值的总和,交易将被中止。
如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。
每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。
以下挖矿节点取名为 A挖矿节点
挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。
验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。
A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。
一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。
然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。
如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。
在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。
UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。
区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。
A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。
用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。
需要以下参数
• block的版本 version
• 上一个block的hash值: prev_hash
• 需要写入的交易记录的hash树的值: merkle_root
• 更新时间: ntime
• 当前难度: nbits
挖矿的过程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。
简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。
如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?
比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。
那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。
为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。
举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。
每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。
比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。
节点维护三种区块:
· 第一种是连接到主链上的,
· 第二种是从主链上产生分支的(备用链),
· 第三种是在已知链中没有找到已知父区块的。
有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。
如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。
选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。
因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。
当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。
分叉之前
分叉开始
我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。
假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。
比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。
分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。
所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。
从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。
比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。
『柒』 关于分叉你想要知道的事情
一、分叉指什么?
分叉,从字面意义可以理解为将区块链分裂成两个路径。通常是在规则重新修正的过程中,参与矿工需要在两个路径中二选一。
二、分叉是怎么形成的?
我们前面讲到过挖矿本身,是指网络上的矿工谁最早发现新的区块,并将他加入到最长的链上,但如果有两个矿工几乎同时发现区块呢,都添加到前一个区块上,这时区块就会分叉称两条路,但是,当新的下一个区块被发现,并添加到其中一条上时,这种不确定性就会消失,最长的链仍然会一直持续下去,那另一条链就会被网络“孤立”“抛弃”。
当开发者想修改决定交易是否成立的软件规则,也可以自愿对网络进行分叉。
当一个区块包含无效交易时,该区块将被网络忽略,发现这个区块的矿工就会失去区块奖励。因此通常矿工只想挖到有效区块,并加入最长的链。
三、为什么要分叉?
我们都知道区块链的特性,尤其比如说比特币的特性,挖矿的逻辑,发放奖励的标准,以及是否为有效交易的规则都是预先就设定好的,所有参与挖矿的矿工们都是在遵循既有的游戏规则。
同时,我们也可以想得到,一切预先设定好的既有规则,很难保证能够一直适用于后续的运作中,一旦出现小的问题,或者需要修复修正的地方怎么办,网络维护者们通常会采用网络升级并且向下兼容的方式进行,这就是软分叉。
而另一种情况是,软件升级并且互不兼容,或者社区对于规则有歧义,并且双方无法达成一致时,可能会分割网络算力,如果非常大算力比重的矿工挖矿时,遵循的是两条不同的规则,则会在网络上形成两条不同的,互相完全不兼容的链,并且都会一直延续下去,有不同的拥趸。我们都说加密数字货币的价值是靠共识决定的,所以有共识在,两个链都会有价值,这是常规意义上说的硬分叉。
四、什么是软分叉和硬分叉?
硬分叉 是软件升级,将不兼容旧软件的新规则引入网络。你可以将它看作规则的延伸(使区块大小为2MB,而不是1MB的新规则将需要硬分叉)。
分叉后,继续运行旧版软件的节点将发现新交易是无效的。因此为了切换到新链继续挖有效区块,所有网络节点必须升级为新规则。
当出现某种政治僵局,社区部分人坚持旧规则,就会出现问题。旧链的哈希率、网络算力将变得不合时宜。重要的是,旧链的数据和规则仍被看作具备价值,矿工当然希望继续挖矿,开发者也希望继续支持它。
软分叉 是强化一些规则,并且向后兼容。
没升级的节点会继续将新交易视为有效的。然而未升级节点继续挖出的区块将被升级节点拒绝。因此软分叉需要网络的大部分算力。
软分叉是升级比特币的常用方法,因为它使网络分裂的风险被认为是较低的。过去成功的软分叉包括BIP 66软件升级(涉及签名验证)、P2SH(修改比特币地址格式)。
五、分叉是无限制的吗?
是,根据上面的描述你应该可以看得到,分叉并没有数量时间的限制,如果需要软件升级,或者社区分歧无法达成一致,分叉是随时都可以进行的,但考虑到社群所有人的利益,并不会非常频繁的发生。
六、分叉会带来什么?
最简单的,硬分叉会产生分叉币,如果社区无法达成一致,则原有的共识会割裂成两个阵营,分别维护不同的规则和网络,比如前段时间很火的 BCH 算力之争,最后分叉造成 BCHABC 和 BCHSV 两种代币,原有的价值会被割裂成两部分。之前持有 BCH的人,在分叉结束后会1:1根据快照收到同样数量的另一种分叉币。
『捌』 GHOST,DAG,SPECTRE,PHANTOM和CONFLUX技术原理
DAG概念,当做继比特币,以太坊后新的一代区块链技术(区块链3.0),那么DAG区块链是什么?DAG的由来是什么?它的技术理念是怎么样的?运行在DAG区块链上的协议有哪些?
要想解释DAG,离不开Yonatan Sompolinsky 和 Aviv Zohar两位以色列人,他们是DAG区块链这一概念的提出者。在DAG之前,Aviv Zohar提出了一个GHOST协议(以太坊初期就采用了GHOST协议),该协议解决的是链分叉带来的安全性问题,而分叉的区块链 在GHOST协议下数据结构就从一条链变成了一个树(Tree),而之后Aviv Zohar进一步提出了一个inclusive协议,在inclusive协议规则下,区块的结构就变成了有向无环图(DAG)。
接下来本文将:
1.介绍 GHOST协议,DAG由来 背后的 设计原理
2.介绍三种针对DAG型区块链设计的协议,SPECTRE、PHANTOM和CONFLUX。
GHOST协议是为了解决 分叉 导致 链安全性降低 的一个协议。
下边将通过解释什么是 分叉 ,为什么 分叉会降低链的安全性 , 链上扩容 为什么会导致更多分叉来详细介绍GHOST协议。
一笔比特币交易为什么要等6个区块的交易时长呢?
等待不是为了 防范51%攻击 的。落后6个区块,如果拥有超过51%的算力,只要足够长的时间,一定能够产生更长的链完成攻击。它是为了防止 分叉 带来的风险。
比特币在 理想情况 下,不同节点之间有相同的一条区块链,全部节点都是基于 同一个区块 进行挖矿,但当两个挖矿节点 几乎同时 挖到一个新的区块,当它们接收到对方产生的区块时,不同的节点将选择基于 其中一个 区块挖矿, 分叉 产生了。之后节点会根据哪条 分叉更长 ,选择哪条是主链进行挖矿,而不是主链的分叉区块全部被 抛弃 。
比特币每天都会发生 二分叉 ,但出现连续的 六次分叉 几乎不可能,于是要等待6个区块的确认时间。(这种分叉不是来自恶意攻击,是 偶然性以及网络延迟 导致的。
分叉将‘攻击不超过51%算力,比特币就是安全的’这一理论推翻。
在比特币中,当链有 分叉 时,将选择分叉 最长 的链作为主链,恶意攻击就是产生一条比主链更长的链 代替主链。
下图中蓝色区块代表诚实区块,红色代表攻击区块。2号、3号蓝色区块产生 分叉 ,此时攻击节点产生5个攻击区块(红色)就能产生一条 更长 的链完成攻击。虽然蓝色区块总数更多(有6个), 但分叉的区块没有增加链的长度 ,这种情况下,红色攻击方在算力(假设每个区块代表算力相同)没有超过51%的情况下攻击成功。
比特币当前安全的原因在于10分钟的区块时间降低了分叉可能性,但其实际安全算力仍低于51%,也就是说,不需要51%的算力也能攻击成功。
采用 大区块 以及 小的产出时间 将导致链有 很多分叉。
比特币当前处理交易量很低,改进这个缺陷一个可行方法就是 增大区块的大小和减小区块的产出时间 。大区块需要更多的网络传输时间、单位时间更多的区块数都会导致 更多的分叉 。
链上扩容的方案对比特币处理交易能力提升是巨大的 ,假如每个区块大小变为原来的八倍(8M),出块时间缩短为原来的五分之一(2分钟),理想情况下,比特币的处理交易量将变为原来的 40倍 ,实际情况会产生分叉,交易量不会有这么高。
主链选择中,采用计算最大子树来代替比特币中的最长链规则。
比特币的最长链规则在有分叉情况下,将降低链的安全性,分叉越多,安全性越低。链上扩容将导致更多分叉,导致链不安全。
Yonatan Sompolinsky提出GHOST规则, 当有分叉时,通过计算最大子树,也就是每条分叉拥有的所有区块数来决定哪条链是主链 。图0中,链在区块0后分叉了,上边分叉总计有6个蓝色区块,下边分叉有5个红色区块,蓝色区块1是主链,所以 红色攻击失败 。
在有大量分叉的情况下,GHOST规则将链安全性直接提到了51%,分叉对采用GHOST协议的链安全性没有影响。
根据GHOST规则,上图中虽然诚实节点产生了12个区块,但加入主链的只有4个区块,大量区块 被丢弃 ,假定比特币每个区块大小变为原来的八倍(8M),出块时间缩短为原来的十分之一(1分钟),分叉率为0.33(产生的区块加入主链的概率),比特币的处理交易能力将变为原来的 26.6倍 。
GHOST协议解决了链上扩容导致分叉带来的安全性问题。
区块的结构类型就从一条链变为树
在GHOST的提出后,Yonatan Sompolinsky提出一种新的设想,新产生的区块指向所有已知的分叉末端区块,即一个区块有多个父亲,此时 区块链就从一条链变为多条分叉链共同组成的的结构,这样的链结构就被叫做DAG(有向无环图) 。
Yonatan Sompolinsky进而提出了在DAG上运行的 inclusive协议 ,原理如下:
遗憾的是, Yonatan Sompolinsky之后并没有详细介绍补充该协议 ,而是提出了一种新思路的DAG协议——SPECTRE。
看完上边内容之后,你会发现, 最长链规则下,分叉的区块对比特币安全性和交易量没有任何贡献 ,白白的浪费了算力,而 GHOST通过计算分叉区块个数来提升链的安全性 ,但分叉区块除了纳入区块计数外,区块内包含的交易信息却全部 被丢弃 。
这种新的区块结构带来了新的特性,当然,比特币的 最长链规则 也可以在DAG上实施,只不过安全性和处理交易能力不佳,而GHOST协议可以提高安全性和处理交易能力,为了 最大化 利用DAG区块链特性,社区提出了不同的协议,接下来介绍Yonatan Sompolinsky 提出的 SPECTRE协议 ,以及 PHANTOM协议 ,以及国内某社区提出的 CONFLUX协议 。
丢弃主链概念,所有产生的区块共同构成账本,不丢弃任何一个区块
只要是产生的区块就不会被丢弃,所有的区块都是有效的,所有区块共同组成账本,这样进一步提高了区块链的处理交易能力, 该设计的关键在于设计算法来保证区块链不会被恶意攻击成功。
SPECTRE协议较为复杂,下边将从其如何产生区块、如何处理冲突交易以及产生可信交易集三个方面进行描述。
SPECTRE协议中,当产生区块时,要指向之前所有分叉的末端区块。
下图中,左边为比特币产生区块时,当有分叉出现,新区块将选择基于其中一个产生新的区块,而SPECTRE中,将基于所有分叉末端区块产生新的区块。同时,当有新区块产生时,节点要立刻将新区块(包含基于哪些区块产生这一信息)发送给与自己相连接的节点。
仔细观察,GHOST协议中虽然有分叉,但每个区块都只基于前边某一个区块产生,而SPECTRE协议中要基于当前节点知道的所有末端区块产生下一个区块。
SPECTRE协议将矿工维持交易不冲突的要求剥除
比特币就像一本 权威 的账本,只要是里边记录的,就一定是真的(不考虑分叉和恶意攻击),而SPECTRE产生的DAG就像一本 不权威 账本,里边的交易信息可能冲突(上边图1中两个1区块中可能包含冲突交易信息)。
该协议下,挖矿节点只 负责迅速挖区块 (能够达到1秒一个区块),而对分叉中可能包含的冲突交易在挖矿阶段并 不做任何处理 ,将记录交易速度最大化,让DAG这种区块链有着恐怖的处理交易能力。
是时候解决挖矿不解决的 冲突交易 问题了,SPECTRE的思路是设计一个计算投票的算法,让诚实区块会投票给诚实的区块,后边的诚实区块会给前边的 堆叠算力 ,从而让恶意攻击失败,其安全算力也是 51% 。
拿双花举例,下图中,X和Y区块中包含着两条冲突交易会导致双花,此时DAG中的区块会对X和Y进行投票, 决定哪一个交易有效。
投票规则如下,投X的标蓝,投Y的标红,X<Y代表X先于Y:
根据投票结果,X中的那条交易信息 有效 ,Y中对应的那条交易信息 无效 。 Yonatan Sompolinsky也对 不指向前边区块 以及 产生区块不发给邻居节点的恶意攻击 有进行分析,在投票规则中,低于50%算力的攻击者会失败。
投票听起来像是一个主动地中心化行为,实际上不是,程序根据当前DAG区块所处的状态自发完成这一区块投票计算过程,就相当于,给定一个DAG数据,输入为两条冲突信息,运行该规则算法,将得出一对冲突交易的哪一个为有效。
SPECTRE可信交易集就相当于超过当前6个区块的比特币链里组成的交易集合。 区块链从数字加密货币的角度来说,就是一个 账本 ,从账本上的交易信息中得出每个 账户 所拥有的货币,所以,得出 确定的、不可能更改 的交易信息就至关重要,SPECTRE可信交易集产生过程如下:
SPECTRE并不会对所有区块进行排序,所有区块没有一个完整的线形顺序,有的只是决定冲突信息先后的区块顺序对。
比特币中的高度代表的就是 线形顺序 ,高度低的区块中交易信息先于高度高的区块里的信息,高度高的区块就不能 包含和高度低的区块冲突的交易 ,而SPECTRE有大量的分叉,区块高度不能代表线形顺序,前边的区块交易信息不一定先于后边的分叉区块交易信息,交易信息的有效性要由投票算法来决定,区块投票算法很快,再加上它将 所有分叉区块 都包含进来,也就没有了比特币所面临的 分叉风险 (等待6个区块),交易确认时间可以达到10秒。
至此,和比特币相比,SPECTRE对应的DAG区块链有三个特点:
SPECTRE协议非常 适合DAG型数字加密货币 ,但当它用于智能合约时,它的缺陷就出来了,智能合约需要一个 严格的线性顺序 ,对此Yonatan Sompolinsky新设计了 PHANTOM 协议来对DAG区块形成一个 线性顺序 ,下边将详细介绍PHANTOM协议。
SPECTRE和PHANTOM是两个完整的独立的协议,不是一个对另一个的补充。
PHANTOM的挖矿机制和SPECTRE一样,会产生同样类型的DAG,不同的是PHANTOM通过对 区块连通度分析 ,判定区块诚实还是恶意,按照分类对区块排序,对DAG区块产生一个严格的 线性顺序 ,通过线性顺序来判断 冲突交易有效性 。
DAG中,攻击者有两种攻击手段, 一产生的区块不基于已知的末端区块,二不立即发布自己产生的区块 ,前者会让自己区块指向的区块变少,后者让其他节点产生的区块不会指向自己的区块,这两种情况都会导致这些恶意区块的与其它区块的 连接度低 。
诚实区块在考虑网络最大延迟下,经过一定时间一定会传遍整个网络,一定会被后边的区块所指向,诚实节点在产生新区块时也一定会指向自己所知道的末端区块。
通过对 区块指出去的边和指向该区块的边 进行分析,也就是区块的 连通度 ,当考虑最大的网络延迟,连通度会有一个 极限值K ,低于该值的区块可以被认定为恶意区块,在排序中要处于 劣势 。
接下来,进行区块 诚实和恶意 判定,判定分两步,第一步最重要, 实现复杂也耗费时间 ,主要为通过对区块连通度的判定,将强连通度的区块标为蓝色视为诚实区块,弱的标为红色视为恶意区块。
第二步 先对蓝色区块集排序 ,拓扑排序,然后对 红色区块集排序 。红色区块的顺序要处于弱势,例如上图中C,它处于A和I之间,那么它的顺序会排在I的前一个区块,而D、H都会排在C前。 注意通过考虑最大延迟时间设定连通度的值,几乎所有正常诚实节点产生的区块都会被标记为蓝色
至此,PHANTOM协议实现了对DAG的 线性排序 ,通过线性顺序就可以提取 无冲突交易集 ,进而提取 可信交易集 ,虽然耗时较长,满足智能合约的要求。
Yonatan Sompolinsky在PHANTOM协议论文结尾,提出一种将PHANTOM + SPECTRE结合起来的可能协议,没有详细展开介绍。下图是几种协议的对比:
至此,介绍了Yonatan Sompolinsky一开始从分叉导致不安全提出的GHOST,到后来将DAG引入区块链,设计了SPECTRE协议,以及为智能合约考虑的PHANTOM协议。接下来,介绍国内某社区提出的CONFLUX协议。
GHOST有 主链但丢弃分叉区块 ;SPECTRE 没有主链,包含所有分叉,但没有线性顺序 ;PHANTOM 没有主链,包含分叉且有线性顺序 ,而CONFLUX 即有主链,又是DAG,利用主链让DAG产生线性排序 ,下面将从挖矿机制和区块排序两方面来说明CONFLUX协议。
CONFLUX协议定义了根源边和参考边。 新区块是基于前一个主链区块产生的,新区块用根源边(实线)指向前一区块,用参考边(虚线)指向分叉的其他区块末端 ,如下图最后一个新区块实线指向H,虚线指向分叉末端区块K。 根源边用于代表区块基于哪个区块产生,给哪个区块堆叠算力,参考边用于表示分叉的其它区块产生在该区块之前。
挖矿过程如下:
根源边只能有一条,参考边可多条(视情况而定)
以主链区块为分割点,将DAG分段,段间段内设计简单排序算法
CONFLUX协议下产生的区块链如上(图2),接下来对其进行线性排序,排序算法如下:
通过上述排序,DAG有了一个 线性顺序 ,上图DAG区块顺序为 Genesis, A, B, C, D, F, E, G, J, I, H, and K 。接下来对该线性顺序的区块里的交易信息进行交易排序, 单一区块 里可能包含的冲突交易将直接按照该区块内交易信息排列 先后顺序 决定。
至此,CONFLUX对DAG所有区块产生一个 线性顺序 ,进而可以对区块内交易信息排序,产生 无冲突交易集 ,超过一定时间的无冲突交易组成 可信交易集 。 主链只是排序的标尺,作为分割时段的标准,CONFLUX包含所有分叉区块。
GHOST论文
Inclusive论文
SPECTRE论文
PHANTOM论文
CONFLUX论文
DAGlabs 相关讲解视频合集