区块链基本知识点!划重点!!!(书接上回)

释放双眼,带上耳机,听听看~!

二、学习区块链的去中心化共识思想
  假如上面的私钥和助记词理解的差不多会用了,那么基本就大半已经进门了。若非要有个衡量是否入门链币圈的标准的话,那便是看对去中心化共识思想的理解情况了。若说已进圈了,却还不懂什么是去中心化,什么是共识,那么其进的可能是假币圈,包着区块链外衣的CX圈而已。

2.1去中心化下的共识决策是区块链的关键
  从上面的私钥和助记词可以看出,私钥的获得是自己从2^256中随机选出来的,每个助记词(除有校验的最后一个需要点计算)是从2048个字词中随机选出的,而并不是像银行或支付宝微信那样,要向某中心注册申请账户。

  区块链区别于传统的数据库技术的关键,并不是数据存储结构上是否区块相先后链接的链的形式存储,而是在权限上是否有中心,在决策上是否需要经过共识。在纯正的区块链数字货币生态中,是不应存在能控制整个币的中心的。低层上依靠拥有全部账单的全节点的运行门槛较低,分布在全球各处,要想要求全体改变规则或数据会很难。顶层决策上,不会被处于中心的某人或某机构决策,并不是没有决策,而是靠达成充分共识后整个社区一起来决策。链币圈常见的也是证实有效的共识机制是POW和POS及他们的变种。简单说靠算力投票或者币量投票来达到共识门槛激活决策。有些全节点过少,决策机制完全少数人说了算的币种,严格来说不属于币圈。

2.2币量转移记录的去中心化存储
  从上面私钥的学习,知道了链币圈的匿名的去中心化获取的账户系统。仅仅只有账户是不够的,还要有方法记录某个地址上有多少区块链币资产,以及记录转移。

  为避免引入中心来记账,诞生了区块链技术。可以将区块链看作是一个去中心化的账本,一个个有序的区块,就像是账本里的一页页的纸面。不同之处在于,传统的账本往往两三份备份就够了,而区块链账本是很多很多份备份,每个同步之后的全节点都有完整的账本,比特币有上万个分布在全球各地。

  区块链账本有两种记录方式。一种是以太坊,柚子等使用的,类似于支付宝微信支付那种,直接记录某个账户地址上有多少币,有转账后,记录最新的余额。这种方式很好理解不多介绍,但有一定的造假风险可能的。另外一种是比特币,狗狗币等较纯正数字货币使用的UTXO模式。简单说,像黄金样,从币的视角,记录从诞生到各币址间转移的过程。某个币址上,每当有币转入便增加一个UTXO,所有的UTXO中的币之和,才是这个币地址上的币量,不会直接记录地址的币量,而是分散记录各个UTXO。当想向外支付币时,可以选一个大于支出额的UTXO,或者同时用几个UTXO,用完之后将不再是UTXO。而当大于支出额时,可增加一个支出给自己的支出项,即找零支出的UTXO。因此一般一个常规的也是常见的交易是1对2交易,即一个要消耗的UTXO作为来源,一个支付支出,一个找零支出。当然也可构造需要的多对多交易。虽然这种记录和交易方式,往往需要钱包软件来辅助,自己构造交易的门槛较高。但是能极大的增加安全性,能追踪来源每笔币量的所有历史转移的记录,在币转移链层面再加上区块链,即可非常有效地防止币造假。

2.3新币量转移记录的去中心化下的共识确认
  上面知道了,币地址和历史记录都能随机生产和全球存储下,便能基本形成去中心化账本记账系统了。最后还剩下个很关键的问题,新记录怎么写入账本,以及如何避免双花。

  区块链是由一个个区块串成的链,简单说,新的转币记录,会收录放到新区块中,然后将这个新区块再链到区块链上,成为最新高度区块,同步到全球各地的全节点,进而这个新的转币记录就录入到区块链了。

  (1)新的转币记录,能否放到新区块中

  这个首先要UTXO正确,就是说这个地址有可以花费的历史上收到但未支出的币,以及就是要通过签名验证,即从密码学角度说明地址对应的私钥的持有人,同意这笔交易,收币的格式也要正确。另外还需要满足一条是,已收录到这个新区块的交易相互之间不能有冲突。即同一个UTXO在区块中只能包含在一笔交易中,不能有双花。若不满足,那么区块若包含了冲突交易,那这区块将会是非合规的区块,不会被正常的全节点们接纳的。

  (2)新区块能否进入区块链成为最新区块

  首先只要遵守规则,任何人理论上都可收集整理些当前最新交易打包形成新区块的。为了鼓励大家来积极打包交易到新区块,中本聪甚至还在比特币中规定了四年左右减半的新币奖励给打包的新区块在区块链主链中成功接纳的录入者。现在经过了两次减半为12.5BTC,明年2020年产量减半后为6.25BTC。另外还可以获得区块中的各交易给的手续费。

  大量币奖励下,肯定很多人都想让自己整理出来的新区块成为区块链主链上的最新区块。关键哪样的区块才有资格成为区块链的最新区块,被全球各全节点接纳。DPOS机制较好理解,币投票选出来几十个特殊的节点,按规则,由他们轮流出的区块,作为区块链的最新区块。但是有较大地变中心化的风险,这些节点若形成联盟便可控制新交易记录是否收录,甚至可以冻结一些币地址上的币。而纯正加密数字货币,采用POW来决定哪个新区块写入区块链。简单说,对固定长度的区块头求HASH,微调整区块头的内容后再重新HASH,会出现随机的全新HASH值。算力越大HASH的次数会越多,然后从众多HASH结果中,寻找难度满足要求的HASH。当满足时,便可以发布广播出去,大家计算确认区块合规,且难度满足要求的区块便可认为是最新区块。难度是什么呢?简单理解难度是HASH前面有多少位是零,另外0后面的数也要小于一定值,是连续变化的,为匹配新的全网算力,以便十分钟左右出一块,比特币会每两周左右调整一次难度。另外矿业会有矿池集中矿工算力一起来挖,为了计算各矿工的算力贡献,一般矿池会给矿工一个比全网难度低很多的虚拟难度,每完成一个满足虚拟难度的HASH计算结果,便会获得一个share,根据share量,矿工来从矿池分得收益。矿池在获得矿工提交的share中的HASH后,判断满足虚拟难度给其记下贡献,同时验证下是否满足全网难度,若满足则补充好区块内容及时广播出去,即可大概率成为区块链的主链最新区块,同时获得区块奖励了。

  (3)最新区块能否确认为历史区块

  当你的交易已经广播但并没有出现在区块链上,只是存在于一些全节点的内存池中时,为0确认状态。这个状态的交易理论上并不是区块链交易,有较大0确认双花可能的。因此几乎没有应用支持0确认,除非很小额或不重要交易。另外就是你的交易出现在最新区块中,这时交易为1确认状态。这时在各区块链浏览器,在各全节点都可看到了。已经有1确认的币交易是相当安全的,尤其是比特币BTC高全网算力。但并不代表绝对安全,因此重要的交易依然建议等中本聪建议的6确认状态,就是说在交易所在区块的后面再出现5个区块。这是为什么呢?

  看上面区块成为最新区块的过程,有一种较巧合的情况,在几乎相同的时间里,不同的矿池都广播出来了打包合规且满足难道要求的区块A和区块B。约有一半全节点接纳了A,另外一半接纳了B。因为A和B是同一高度因此不会同时接纳的。一般情况,正常交易尤其是手续费较高的交易会同时包含在A和B中,因此哪个最终到区块链历史主链,问题不大。但若有笔交易只在A中,B中没有,即若应用的节点是接受A的其便看到了1确认,而若最后B最终到了区块链,A成为孤立区块,便从应用的视角看,这个1确认的交易又取消了。这便是1确认双花。理论上是可能出现的。至于A和B谁能最终进入区块链谁又被孤立,要看下个高度的区块是基于谁打包出来的。若又巧了,基于A的下一区块,和基于B的下一区块,又是几乎同时出来,那就看下下个区块,谁先出来,直到找到一条更长的链,所有全节点都转向接受最长链为主链,放弃短链,短链上的区块既被孤立。

  因为POW机制的特性,出现孤立区块是正常现象。单个的孤立区块每几天就可能有一个,而两三个高度的孤立区块是很少见到。而当孤立链过长且在孤立链上的算力即便明知自己是短链,也不愿意放弃时,就有可能形成硬分叉分裂。自然产生的硬分叉是没有的,但主动主观干预改动代码故意不合并下的主动硬分叉大致如图。

上面这些分枝硬分叉,大多 是路线决策不同引起的。在处理路线决策出现分歧时,应坚持达成足够共识再激活,否则维持原有共识,是维持币圈不分裂的关键。例如:比特币的SW隔离验证软分叉升级,一直都是坚持达到高达95%的算力投票共识,才会激活。因此比特币BTC从来都没有分裂,只是多一些分山币而已。见《B7.Bite酱一比特币并未分裂,仅仅多了分叉山寨币而已,且未来会更多》。而某些人认为只要75%即可激活是很危险的,这么低的激活门槛很可能造成未来很多个子分叉分裂币种。

未完待续

欲知后事如何,请听下回分解!!!

矿业新闻

从诞生到主网上线,FIL的发展进程

2020-11-2 14:24:06

矿业新闻

参与FIL前需要注意什么

2020-11-2 14:30:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索