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

这篇具有很好参考价值的文章主要介绍了《区块链技术与应用》北大肖臻老师——课程笔记【19-20】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

一、ETH-挖矿算法

Block chain is secured by mining.
对于基于工作量证明的系统来说,挖矿是保障区块链安全的一个重要手段。
比特币的挖矿算法总的来说比较成功,没有发现什么大的漏洞。但是也有值得改进的地方,就是挖矿设备的专业化,只能用专门的设备来挖矿,这种做法和去中心化和设计初衷是相违背的。

Bug bounty——有的公司悬赏来找软件中的漏洞,如果可以找到就会得到一笔赏金。
比特币的挖矿算法是一个天然的Bug bounty,如果能发现里面的漏洞或有挖矿的捷径,就可以得到赏金。

怎么才能设计出对ASIC 不友好的mining puzzle?
一个常用的做法就是增加puzzle对内存访问的需求,即memory hard mining puzzle。ASIC在内存访问方面性能不强。例子:莱特币——puzzle基于scrypt,对内存要求很高的加密算法,用伪随机数填充进数组,按照伪随机数顺序读取一些数运算求解puzzle。

莱特币伪随机数的好处:如果数组足够大,会增加求解puzzle的难度,提高挖矿难度。

Time-memory tradeoff——只保存内存区数组内奇数位的伪随机数,要用到偶数位的就根据另一半计算得到,计算复杂度高一些,内存减少一半。这个设计不像比特币主要进行哈希运算,是在运算过程中增加对内存访问的需求,对矿工来说是mining hard,缺点是对轻节点是mining hard,轻节点验证难度和挖矿难度差不多一样。

实际莱特币使用数组只有128K,实验证明这样设计对遏制ASIC的生产和使用不足以带来实质性障碍。

设计puzzle的原则difficult to solve,but easy to verify。挖矿很难,验证很容易

任何一个加密货币都存在冷启动问题,包括比特币。
冷启动:
对于基于工作量证明的加密货币来说,挖矿人数越少,越不安全,发动恶意攻击的难度越低。

莱特币的出块速度是比特币的四倍,出块间隔是每隔两分半出一个,除了scrypt ,莱特币和比特币大致一样。

以太坊的mining puzzle设计和莱特币很不一样。以太坊有一大一小两个数据集,小的是16M cache,大的是1G dataset——DAG,大的是从小的中生成出来的,设计原因是便于验证,挖矿矿工保存大的,轻节点保存小的。
小的数据集是生成一个种子节点,经过运算数组第一个元素,依次取哈希,第一个元素取哈希得到第二个元素,依次类推,填充完伪随机数的数组,得到一个cache;莱特币是直接从数组中按照伪随机数顺序读取一些数进行运算。

以太坊还要生成一个大数组,两个数组都要定期增长。大的数组的元素都是从小数组按照伪随机顺序读取一些元素,和莱特币类似,一共读256次,最后得到一个哈希放在大数据集中的第一个元素。读取大数组中元素是每次读取两个相邻的元素,循环64次,大数组有128个数,最后算出一个哈希值和目标预值比较,是否符合难度要求,不是就把块头的nonce,重复过程,通过哈希值计算得到结果。

Ethash算法伪代码
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
calc_dataset函数通过不断调用calc_dataset_item函数来依次生成dataset中全部full_size个元素。
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
这两个哈希值无关,位置相邻,生成过程独立,每个元素独立生成给轻节点验证提供了方便。
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
这些是矿工挖矿的函数的伪代码,同样省略了一些细节,展示原理。
full_size指的是dataset的元素个数,dataset就是从cache生成的DAG,header是区块头,target就是挖矿的目标,我们需要调整nonce来使hashimoto_full的返回值小于等于target。
这里先随机初始化nonce,再一个个尝试nonce,直到得到的值小于target。
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
以太坊挖矿主要以GPU为主,ethash算法有效遏制了ASIC resistance
以太坊没有出现ASIC矿机还有另一个原因,以太坊很早就计算要从工作量证明转向权益证明,权益证明不挖矿,对ASIC产生有很大威胁,因为ASIC的研发生成成本很高。

要做到ASIC resistance一个做法是不断“吓唬”大家。

以太坊采用了**预挖矿(pre-mining)**的过程,在发行货币时预留一部分货币给以太坊开发者。
Pre-sale把pre-mining预留的币通过出售的方式换取一些资产,用于加密货币的开发工作。
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
最大的25个以太坊矿池所占的算力比重(挖矿集中化程度很高):
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
以太币价格随时间变化情况(大幅度涨幅是2017-2018年):
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
以太坊市值变化情况:
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
以太坊HashRate变化情况:
HashRate——所有矿工加在一起每秒钟计算哈希的速度
(不同加密货币的HashRate不能互相比较,它们的mining puzzle不同)
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
为什么有人认为用专业的ASIC芯片挖矿更安全?
用ASIC矿机发动攻击成本很高,一旦攻击成功会证明某种加密货币是不安全的,市值会大幅度降低,早期投入的成本就收不回来了。
如果用通用设备参与挖矿,发动攻击的成本大幅度下降,不用专门购买设备,可以临时攻击,不攻击时可以进行日常生产需要。有恶意的攻击者可能会租用云服务器来发动攻击。

二、ETH-难度调整

以太坊每个区块都有可能调整出块难度,调整方法也比较复杂。
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
总体稳定在15s左右。说明早期挖矿难度的调整主要是以稳定出块时间为主。
《区块链技术与应用》北大肖臻老师——课程笔记【19-20】
最长合法链对于以太坊来说应该叫做最难合法链,总难度最大。
一般来说,靠后的区块难度较大。文章来源地址https://www.toymoban.com/news/detail-484617.html


到了这里,关于《区块链技术与应用》北大肖臻老师——课程笔记【19-20】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[20]以太坊-权益证明

    目录 一、为什么要转入权益证明         1.比特币系统的相关数据          2.以太坊的统计数据         3.比特币和以太坊当成一个国家 二、思考         1.矿工为什么要挖矿?         2.为什么要给矿工这些收益,这些出块奖励呢?         3.矿工具体

    2023年04月25日
    浏览(33)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[21]以太坊-智能合约-1

    目录 一、什么是智能合约 二、智能合约的代码结构         1.Solidity语言         2.bid函数         3.fallback()函数  二、外部账户如何调用智能合约 三、一个合约如何调用另一个合约中的函数         1.直接调用         2.使用address类型的call()函数      

    2024年02月05日
    浏览(32)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[23]以太坊-智能合约-3

    智能合约-1 智能合约-2 1.假设某个全节点要打包一些交易到一个区块里,这些交易里有一些是对智能合约的调用,那么这个全节点应该先执行完智能合约再挖矿,还是先挖矿获得记账权再执行这些智能合约?         在区块链中,如果有一笔转账交易发布上去,需要所有的全

    2023年04月23日
    浏览(33)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[17]以太坊-GHOST协议

    目录 一、以太坊的出块时间及可能带来的问题         1.以太坊的出块时间         2.以太坊与比特币系统的平均出块时间对比         3.带来的问题 二、GHOST协议         1.GHOST协议的核心思想         2.GHOST协议的缺陷         3.改进后的GHOST协议    

    2024年02月09日
    浏览(36)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[25]以太坊-智能合约-5

    智能合约-1 智能合约-2 智能合约-3 智能合约-4 网上竞拍第二版:由投标者自己取回出价 (1)存在的问题         重入攻击,如果有黑客写了一个如下方程序会怎么样?         这个hack_bid跟前面的那个黑客合约hack_bid合约是一样的,通过调用拍卖bid函数参与竞拍,ha

    2024年03月11日
    浏览(51)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[22]以太坊-智能合约-2

    智能合约-1 目录 一、智能合约的创建和运行         1.智能合约的创建         2.汽油费         3.错误处理         4.嵌套调用 二、思考         1.GasLimit和GasUsed         2.以太坊中的GasLimit跟比特币的区别 1.智能合约的创建         智能合约 由一个外

    2024年02月19日
    浏览(40)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[15]以太坊-交易树和收据树

     目录 一、以太坊中的三种树 二、状态树、交易树和收据树的区别 三、交易树和收据树的用途         1.交易树和收据树的用途         2.如何实现复杂的查询操作         3.以太坊中Bloom Filter的用途 四、以太坊的运行过程        在以太坊中,存在三种基于树的

    2024年02月05日
    浏览(40)
  • 北大肖臻老师<<区块链技术>>笔记1

    课程的大纲 密码学基础 比特币的数据结构 共识协议和系统实现 挖矿算法和难度调整 比特币的脚本 软分叉和硬分叉 匿名和隐私保护 以太坊是后面的 首先是密码学基础的学习: crypto-currency(虚拟货币) 是不加密的,区块链上所有的教以都是公开的。其中有转账金额和地址。

    2024年02月02日
    浏览(29)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 脚本

    比特币系统中使用的脚本语言很简单, 唯一能访问的内存空间就是一个栈 ,这点和通用脚本语言的区别很大。 这个交易有一个输入和两个输出,其中一个输出已经被花出去了,另一个没有被花出去。 输入脚本 输入脚本包含两个操作,分别将两个很长的数压入栈中。 输出脚

    2024年01月21日
    浏览(58)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 分叉

    state fork 如果两个节点差不多同时挖到一个区块,这两个区块都是挂在当前的区块上的,不同节点先收到的区块不同,就会各自沿着先收到的区块往下扩展,这种时候就会出现临时性的分叉,称为 state fork ,即由于对区块链当前的状态有意见分歧而产生的分叉。 分叉攻击(

    2024年02月08日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包