《区块链技术与应用》北大肖臻老师——课程笔记【21-23】

  • 一、权益证明
  • 二、ETH-TheDAO

提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。

一、权益证明

权益证明proof of stake
比特币和 以太坊目前都是使用基于工作量的证明,这种共识机制受到一个普遍的批评——浪费电。

Y轴是TWH=Terawatt hours 10的 12次方
KWH=Kilowatt hours 10的3次方 (千瓦式)

一个交易要花一千度电。


以太坊能耗比比特币低的原因:比特币出块时间长,以太坊出块时间短,平均下来能耗低。

挖矿过程中的这些能耗是不是必须的?
矿工为了取得出块奖励而挖矿,为了激励矿工参与维护系统而有出块奖励。
挖矿的收益实际上是靠投入的资金决定的。

权益证明(virtual mining)
采用权益证明的加密货币会在发行之前预留一部分货币给开发者,也会出售一部分货币来获得发行的资金。

和工作量证明相比,权益证明的优点:
1、省去了挖矿的过程,避免了对能耗和环境的影响,减少了温室气体的排放
2、基于工作量证明的系统维护系统的安全不是一个闭环,挖矿设备不是在系统的生态圈中,是外部的资源,可以转化为挖矿的算力,转化成对挖矿攻击的能力。
采用权益证明,假设如果要发动51%攻击,需要有占比51%以上的币种,才能发动。这些币种是系统内部的,是一个闭环,外部的资源不会对系统安全造成直接影响。

权益证明遇到的挑战——两边下注问题 nothing at stake
在一条链上,出现分叉A、B,A链暂时是最长合法链,权益证明的情况下,可以对A、B两条链同时下注,锁定的币不会影响其他链的使用。

以太坊中准备采用的协议证明是Casper the Friendly Finality Gadget(FFG),在过渡阶段要和工作量证明混合使用,为工作量证明提供Finality, Finality是最终状态,包含在Finality的交易不会被取消。

Casper协议引入验证者(validator),要想成为validator,需要投入一定数量的以太币作为保证金,保证金会被系统锁定住。 Validator的作用是推动系统达成共识,投票决定哪条链是最长合法链,投票权重取决于投入保证金数目大小。

具体做法:挖矿时每挖出一个区块就作为一个epoch,决定是否能成为Finality要进行投票,两轮投票(two-phase commit),第一轮投票是prepare message,第二轮投票是commit message, Caspe协议规定每一轮投票都要得到2/3验证者才能通过,按照保证金实际大小来算。
实际系统中,不区分两个message,把epoch从原来100个区块减少到50个区块,每个epoch只用一轮投票就行,这轮投票对于上一个epoch是commit message,对于下一个epoch是prepare message,要连续两轮投票都得到2/3的票数才算有效。
验证者参与这个过程的好处:
如果验证者履行职责,可以得到相应的奖励,如果有不良行为被发现,要受到相应的惩罚,如扣除保证金、没收全部保证金(销毁)。
验证者有一定任期,任期满了要经过一段时间的等待期,等待期是为了其他节点可以检举揭发。如果等待期过了没有问题,验证者可以取回保证金和应得奖励。

通过验证者投票达成的Finality有没有可能被推翻?
单纯矿工发动攻击不会推翻Finality。大量的验证者给前后两个有冲突的Finality投票了,如果出现这种情况,至少有1/3的验证者给两边都投票了,一旦发现,这些验证者的保证金会被没收。

为什么以太坊不一开始就用 权益证明?
因为权益证明不是很成熟,工作量证明比较成熟,经过时间检验。比特币和以太坊的算法都经过了bug bounty的检验,没有人发现什么漏洞。EOS加密货币用权益证明的思想,用DPOS协议,先用投票方法选出21个投票节点,然后再由超级节点产生区块。基于权益证明的共识机制目前处于探索状态。

很多人对工作量证明有反感,因为觉得是无用功,白浪费了很多电,但其实挖矿对环境的影响是有限的,挖矿的一个好处是把多余的电能转化为钱的一种手段。

二、ETH-TheDAO

DAO:去中心化的自治组织,建立在代码基础上,规章制度写在代码中,通过区块链共识协议维持这种规章制度的执行。

TheDAO:具体的一个DAO,用来众筹投资项目,本质是一个运行在以太坊上的智能合约,如果要参与TheDAO,可以发以太币给这个智能合约,换回TheDAO的代币。需要决定投资哪个项目,可以通过代币决定,代币越多,权重越大,如果有收益,也按照合约中规章制度决定收益分配。(出于非营利性目的)

DAC:去中心化的自治公司,出于盈利目的。现实中不具有公司的法律地位。

TheDAO只存活了三个月。 TheDAO中要收回收益是通过拆分实现,拆分也是一种建立子基金的方法。如果有少部分人认为投资的项目不好,可以通过拆分独立出来,成立自己的子基金,拆分时手中的代币要被收回去,换成相应数量的以太币。拆分的极端例子就是单个的投资者成立一个子基金,这是投资者取回收益的唯一途径。拆分之前有七天辩论区,讨论拆分好不好,要不要加入,拆分之后有28天锁定期,打入的以太币收益要在28以后才能取出来。

拆分的理念是民主制度的绝对体现。 TheDAO存在时间短的问题出现在拆分 DAO的实现。


把钱还给调用这个函数的人,把TheDAO的数额减少,再把调用者数量清零。正确的操作顺序是先把账户清零,再转账,黑客就是利用这个漏洞,进行重入攻击。黑客利用这个攻击转走了差不多1//3的以太币。

以太坊对heDAO事件有两个方面的讨论,一方面认为要采取补救措施,要进行回滚,保证广大投资者的正当利益,另一方认为不需要采取补救措施,因为黑客的行为没有违反代码中的规则。

TheDAO补救措施
1、回滚分叉攻击。会影响其他区块交易的状态,是不可行的。只能针对黑客进行交易的交易进行回滚,其他发生正常的交易不能受到影响。两步走:1、锁定黑客账户,不允许和黑客账户相关的账户进行交易(大部分节点进行升级-软分叉,升级后有个bug,和gas相关,检查地址错误没有收取gas,然后有大量非法交易,之后这个方法失败了。);2是退钱。硬分叉——把TheDAO的钱强行转到另一个合约上,这个不需要本人同意强制执行,新升级矿工挖到第192万区块自动执行。实现用智能合约投票,大部分人支持硬分叉,最后硬分叉成功,黑客行为没有得到获利。

硬分叉后新链的以太币符号是ETH,旧链上的是ETC(经典以太坊)。刚开始两条链记账本一样,基本 规则大致一样,容易出现重放攻击,后来使用Chain ID区分开来。

无论是软分叉还是硬分叉都是把TheDAO所有账户进行处理,为什么不能针对黑客账户进行处理?
TheDAO智能合约有bug,这次是黑客利用了,如果只针对黑客账户处理,以后可能还会有其他账户这样利用这个bug。所有有BUG的智能合约都是作废了,所以这个TheDAO也最终解体了。


《区块链技术与应用》北大肖臻老师——课程笔记【21-23】相关推荐

  1. 《区块链技术与应用》北大肖臻老师——课程笔记【4-5】

    <区块链技术与应用>北大肖臻老师--课程笔记[4-5] 一.比特币协议 比特币脚本(BitCoin Script) Paxos协议 比特币 中的共识协议 (consensus in Bit ...

  2. 《区块链技术与应用》北大肖臻老师——课程笔记【6-8】

    <区块链技术与应用>北大肖臻老师--课程笔记[6-8] 一.BTC网络 二.BTC-挖矿难度 三.BTC-挖矿 提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供 ...

  3. 《区块链技术与应用》北大肖臻老师——课程笔记【1-3】

    <区块链技术与应用>北大肖臻老师--课程笔记[1-3] 一.课程介绍 二.密码学原理 1.哈希 1.哈希碰撞(cryptographic hash function) 2.不可逆性(hid ...

  4. 《区块链技术与应用》北大肖臻老师——课程笔记【11-12】

    <区块链技术与应用>北大肖臻老师--课程笔记[11-12] 一.BTC-问答 二.BTC-匿名性 1.匿名性 2.零知识证明 提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课 ...

  5. 《区块链技术与应用》北大肖臻老师——课程笔记【13-18】

    <区块链技术与应用>北大肖臻老师--课程笔记[13-18] 一.BTC-思考 1.哈希指针 2.区块恋 3.分布式共识 4.比特币的稀缺性 5.量子计算 二.ETH-以太坊概述 1.以太坊 ...

  6. 《区块链技术与应用》北大肖臻老师——课程笔记【19-20】

    <区块链技术与应用>北大肖臻老师--课程笔记[19-20] 一.ETH-挖矿算法 二.ETH-难度调整 提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考.如 ...

  7. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[29]总结

    质疑区块链的原因: (1)区块链的概念被滥用 ①保险公司的理赔问题 国外有人提出将保险理赔业务放在区块链上,因为现在的保险理赔业务太慢了(大约需要几个星期),如果把保险理赔业务用比特币系统实现的话,等 ...

  8. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[18]以太坊-Mining算法

    一.工作量证明(POW) 1.比特币系统的工作量证明 对于基于工作量证明的系统来说,Mining是保障区块链安全的重要手段(Block chain is secured by mining),比特币里 ...

  9. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[10]BTC思考

    1.BTC在设计的过程中很多地方用到了哈希指针,如块头就包含指向前一个区块的哈希指针,指针保存的是本地内存的地址,只在这台计算机上才有意义,发送到其他计算机上就没有意义了,那么在发布区块的时候哈希指针 ...

最新文章

  1. matlab中jet的例子,Python matplotlib.pyplot.jet()用法及代码示例
  2. 它是世界上最轻的固体!1000℃下不会熔化,上过火星,还能进你家......
  3. 实例34:python
  4. 杭州软件测试培训有用吗,杭州软件测试培训靠谱吗
  5. Python--协程(gevent模块)
  6. editview只输入英文_搜狗输入法Mac版更新:适配苹果M1处理器
  7. 工程桩基围护知识_地基基础工程专业承包资质
  8. 使用spring 配置数据源,并用数据源得到连接,操作sql
  9. swift开发网络篇—NSURLConnection基本使用
  10. java socket 异常处理_java.net.SocketException四大异常解决方案
  11. 在线ai伪原创文章生成助手
  12. r语言 rgl 强制过程中_R语言中编写最小工作示例(MWRE)
  13. 算法设计与分析 ——10-7课程总结
  14. oracle实现aes解密_AES加解密程序的实现
  15. 读书笔记:大型网站技术架构-核心原理与案例分析
  16. 20230429作业
  17. 基于32单片机的智能插座
  18. java推送数据到指定的外部接口
  19. NEC Programming Contest 2021(AtCoder Beginner Contest 229) B - Hard Calculation
  20. HTTP GET请求方式传递数组参数

热门文章

  1. 格局决定结局,九种职场高效思维你都有吗
  2. childnodes与children详解
  3. 解决前端直接跳转后台,未登录问题
  4. 基于树莓派实现AS608指纹识别
  5. 单元测试框架NUnit 之 constraints 约束
  6. LONGLONG to char *
  7. [论文阅读:姿态识别Transformer] POET: End-to-End Trainable Multi-Instance Pose Estimation with Transformers
  8. Windows 怎么查看是否已经真正激活
  9. 宝宝发烧手脚冰凉怎么办 如何正确给宝宝退烧
  10. Yolov5 网络改进之增加SE、CBAM、CA、ECA等注意力机制