萌新理解区块链

  区块链很火,但是之前其实一直有些云里雾里,今天抽时间,认真了解了一下其中的原理。 

  这个是今天学习的教材,从CSDN首页上摘取的,国外大神写的,认真读完很有收获。

  https://mp.weixin.qq.com/s?__biz=MzU2MTE1NDk2Mg==&mid=2247485990&idx=1&sn=d99f22c3b8e6f41b8d06cf9f1c24c5c1&scene=21#wechat_redirect

 之前其实一直不明白,为啥子要挖矿,花费大量电量,有些挖矿的厂子可能包下一座小电厂,进行挖矿活动。算出那几个数字,能制造出何种实际价值。 今天读完这篇文章后,算是有了一个大概的理解了。
首先,算出的数字本身是没有意义的,但有意义的是,算出这个数字的过程。
矿工的工作,在区块链中,从我的理解来看,有两个意义:
一方面矿工的计算,为区块链提供安全机制,和信任的基石。
另一方面,矿工完成的这一过程,获得奖金。
这是一个完整的机制,完整的循环,一体两面。
区块链去中心化,在我看来,不是没有中心,而是把传统社会的中心,也是信任的基石,从社会科学的产物,如政府、银行等,抽象上升到了 数学公理,客观事实。 也在这一刻,我有点明白了这一转变的伟大之处。
另外,原本依赖于银行人员、公信机构人员完成的维护公信的工作量,转变成了矿工,进行穷举搜索的过程,将人力成本,变成了资源成本。
区块链技术是优秀的、进步的,但实话讲,怎么获得大众的认可还有很长的路要走,类似我之前状态的人,还有很多,因为虽然本身这个信任基石没有问题,但很多人其实不理解其中的原理,更无从认可, 毕竟信任更多的是社会性,其本身是离不开广大群众的。

 

以下是我自己摘录的一些零散笔记:

1、用 CAP 定理来看,以太坊一个区块链,满足了 C 一致性, P 分区容错性,A 可用性应该很差啊?
      难道区块链不属于分布式系统吗?(定理的前提) 还是本身 不需要 高可用这一特性? (实现目标)
2、 Merkle 树感觉很强, 感觉比我大学时期记忆的树强了很多,不知道是不是没有学到家的缘故。
看来是得重新学习数据结构了。
Merkle树可以实现轻节点的快速查询。根节点作为数据安全证明; 每个局部区块都可以在无需保存整个状态的情况下,验证以太坊一部分状态。
3、 终于理解了,为什么要有比特币,为什么需要矿工, 通过Gas,在区块链上的每一笔交易,都需要被验证, 这个验证的费用,由发起交易方支付,验证这个交易的过程,就是由矿工进行的。  而第一个完成运算的矿工,将收到最大金额的奖励,其他矿工,如果在 交易发起方支付的 虚拟货币消耗完前,就完成的交易证明,那么他们会瓜分剩余的 虚拟货币。
4、 去中心化: 之前的交易,都必须有一个中心, 这个中心必须由政府或者机构完成。 现在区块链中,数据安全由 Merkle 树的根节点保证, 交易维护工作,由网上分布式的矿工完成。
5、 区块的验证时间(矿工挖矿的所需要消耗的时间),通过难度机制实现平衡,耗时越长,难度越大,这时就减少区块的验证难度,保证每个区块的验证时间为 15 秒。

执行模式:
6、 以太坊虚拟机 EVM(Ethernet virtual machine) , 采用堆栈结构,先入后出, 与冯诺依曼计算机不同,代码不是存放在内存中,而是放在 一个虚拟的 ROM (read only memory),修改合约时,通过 solidiy 高级语言编程,之后编译成可在 EVM 中执行的 字节码(这个与java 很相似)。
7、 由于存在 Gas 机制,整个以太坊中 Gas 的存量,会约束可以完成的计算总量。这是EVM与传统图灵完备(可以模拟执行计算机上所有运算,包括循环)虚拟机的不同。
8、 EVM 运行机制:这个有点云里雾里的:
       (1) EVM 具有几个全局状态:
                  可用的 Gas 、 程序计数器、 内存内容、 内存活跃数、 栈内容
       (2) 一个堆栈是一个循环,每个循环执行,程序计数器加一,同时 gas 消耗;
       (3)执行一个堆栈的结果,总体分为两类:一类为 可控结果, 一类为异常,
                 发生异常: gas不足、栈条目数不足、栈条目数超过1024、无效的 jump指令等,
                 或者系统宕机、这时,任何更改将被丢弃。
       (4)可控状态: EVM 生成结果状态、保留执行结束后的 gas。
9、 工作量证明 及 安全机制:这一段我觉得没法精简,所以全摘录了
       总体而言,PoW的目的是以一种安全加密方式证明工作量,基于特定的计算量生成某些输出(即nonce)。这是因为除了穷举所有可能性之外,没有更好的办法来找到低于要求阈值的nonce。重复应用哈希函数的输出具有均匀分布,因此我们可以确信,找到这样一个nonce所需的平均时间取决于难度阈值。难度越大,解决问题的时间就越长。这样,PoW算法对难度概念赋予了真实的意义,这个概念被用来增强区块链的安全。

那么,区块链安全又是指什么?很简单:就是要创建一个每个人都信任的区块链。正如先前在本文中讨论的那样,如果存在一个以上的链,用户将对其失去信任,因为他们无法合理地确定哪一个链是「有效的」链。为了让一组用户接受存储在块环链上的基本状态,需要一个大家都相信的且单一规范的区块链。

而这正是PoW的作用:它确保一个特定的区块链可以保持规范,使攻击者难以创建新的区块,或者覆盖历史的某一部分(例如擦除交易或创建虚假的交易),或者对一个分叉进行维护。为了验证他们的区块,攻击者需要比网络中的其他任何人都更快地解决nonce问题,这样网络就会相信他们的链条是最重链(基于之前提到的GHOST协议的原则)。这是基本上不可能的,除非攻击者拥有超过一半的网络挖掘能力,因此这种情况被称为「51%攻击」。

10、 矿工的收入构成:
      (1) 贡献算力中获胜的奖励;
      (2) Gas 成本
      (3) ommer作为区块的一部分额外奖励


11、 ommer:
比起比特币之类的区块链,以太坊的构建方式使区块生成时间要低很多。这样可以更快地处理交易。然而,缩短区块生成时间的一个缺点是,矿工们要找到更多相互竞争的区块解决方案。这些相互竞争的区块也被称为「孤儿区块」,不能进入主链。

Ommer的目的是帮助奖励矿工,也包括这些孤儿区块。矿工的ommer必须是「有效的」,也就是说在目前区块的第六代或更小的范围内。六代之后,陈旧的孤儿区块就不能再被引用。比起完整的区块,Ommer块获得的奖励要小一些。尽管如此,矿工们仍然有一定的动力去挖掘这些孤儿区块并获得回报。

12、 以太坊正在从 Pow 工作量证明机制, 过度到 POS 机制:

资料来源: https://blog.csdn.net/sqc3375177/article/details/79528191


PoW背后的基本概念很简单:工作端提交已知难于计算但易于验证的计算结果,而其
他任何人都能够通过验证这个答案就确信工作端为了求得结果已经完成了量相当大的计算
工作。然而PoW机制存在明显的弊端。一方面,PoW的前提是,节点和算力是均匀分布
的,因为通过CPU的计算能力来进行投票,拥有钱包(节点)数和算力值应该是大致匹配
的,然而随着人们将CPU挖矿逐渐升级到GPU、FPGA,直至ASIC矿机挖矿,节点数和算
力值也渐渐失配。另一方面,PoW太浪费了。比特币网络每秒可完成数百万亿次SHA256
计算,但这些计算除了使恶意攻击者不能轻易地伪装成几百万个节点和打垮比特币网络,
并没有更多实际或科学价值。当然,相对于允许世界上任何一个人在瞬间就能通过去中心
化和半匿名的全球货币网络,给其他人几乎没有手续费地转账所带来的巨大好处,它的浪
费也许只算是很小的代价。
有鉴于此,人们提出了一些工作量证明的替代者。权益证明(Proof of Stake,PoS)
就是其中的一种方法。
权益证明要求用户证明拥有某些数量的货币(即对货币的权益),点点币
(Peercoin)是首先采用权益证明的货币,尽管它依然使用工作量证明挖矿。

POS --- Proof of Stake

大多数地方叫权益证明,其实可以看作是股权证明,也是一种共识算法,在基于权益证明的数字货币中,下一个区块的选择是根据不同节点的股份和时间进行随机选择的。打个比方说,假如你买了1万个数字货币,然后就放在POS机制中,这样你就拥有了机会去获得新的区块从而得到奖励,机会有多大呢,就是那些拥有1千个数字货币的人的10倍概率,因为你有1万个,1万是1千的十倍,10%的股份分红是1%股份的10倍,道理是一样的。

由于创造新的区块并不会消耗大量的 CPU,这也就给了很多节点作弊的机会,每一个节点为了最大化利益会在多条链上同时挖矿。显然这个问题要被解决,这里引入了惩罚机制,惩罚同时在多条链上投票的节点,第二种方法是直接惩罚在错误的链上创建块的节点。

优势:不需要浪费算力,同时,进行51%攻击的代价更高,因为想要进行51%攻击的话,你得拥有51%的货币。也就是说,这东西越值钱,攻击的成本就越高。


DPOS --- Delegated Proof of Stake
上面介绍的权益证明算法可以将整个区块链网络理解为一家公司,占比最大的人有更多的机会得到区块;对于小股东来说,能产生区块的可能性很小,只能得到股份带来的分红和收益。

但是在这里介绍的DPOS委托权益证明能够让每一个人选出可以代表自己利益的人参与到获取区块的争夺中,这样多个小股东就能够通过投票选出自己的代理人,争取自己的利益。

在委托权益证明中,每一个参与者都能够选举任意数量的节点生成下一个区块,得票最多的前 M 个节点会被选择成为区块的创建者,下一个区块的创建者就会从这样一组当选者中随机选取,除此之外,M的数量也是由整个网络投票决定的,所以可以尽可能地保证网络的去中心化,而且最重要的还是随机选出的,也就是说数量M不确定,M中选取哪一个也不确定,再加上足够多的总量,可以确定几乎是不可操控的。


总结:
介绍了POS(权益证明)是通过持有股份来获取新区块的机会,优点是不需要消耗计算资源,但是小股东获取的利益有限。
DPOS(委托权益证明)让每个人都可以选出代表自己利益的人,多个小股东聚集到一起,增加了获取区块的机会,并且通过获取总票数中随机的一部分投票,在随机中再随机选一个来生成区块,更大程度上确保了不可篡改性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值