首页 > 编程语言 >06 ETH-挖矿算法

06 ETH-挖矿算法

时间:2023-05-02 14:55:28浏览次数:53  
标签:mining 06 以太 莱特 puzzle ASIC ETH 挖矿

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


06 ETH-挖矿算法

目录

挖矿是保障区块链安全的一个重要手段。

Blockchain is secured by mining.


bug bounty(悬赏找漏洞)

比特币的挖矿算法是一个天然的bug bounty,如果你能找到bug,就能获得很大的利润。


比特币的挖矿算法也有值得改进的地方。有一个饱受争议的问题,挖矿设备的专业化。

很多人认为与去中心化的理念背道而驰。也和比特币的设计初衷相违背的。

中本聪论文(one cpu,one vote)。


以太坊的mining puzzle的设计目标便是 ASIC resistance。

常用的做法是增加对内存访问的需求,也就是 memory hard mining puzzle。

ASIC芯片的优势是计算能力,但是对于内存访问上,没有很大的优势。


litecoin 莱特币的puzzle是基于scrypt(对内存要求很高的hash函数)。

scrypt的简单设计思想,内存中开设数组,使用伪随机数seed,对其进行hash,后面依次对前的数据进行hash。之后求解puzzle的时候,按照相应规则进行读取。

time-memory trade off

思想:增加运算过程中对内存访问的需求。(设计的任务更像是一个普通计算机该干的事情,而不是一个专用的挖矿设备)


问题:该设计思想好的地方是,挖矿的时候,对矿工来说,是memory hard,坏的地方,对轻节点来说,也是memory hard。

原则:difficult to solve, but easy to verify。

问题:验证puzzle需要的内存区域,和求解puzzle需要的把内存区域,几乎是一样大的。(轻节点也需要验证区块)


因为这个原因,实际莱特币使用的时候,数组只有128k,就是为了照顾轻节点。

当初莱特币发行的时候,目标不仅仅是 ASIC resistance,而且还是 gpu resistance。

实际上,莱特币要求的128kb的内存,不足以对ASIC芯片带来实质性的障碍。莱特币的设计目标没有达到。


虽然没有达到目标,但是对莱特币的能启动问题,是很有帮助的。

任何加密货币都存在能启动的问题。

莱特币早期的宣传对于聚集人气来说,是很重要的。

莱特币的出快速度是比特币的4倍(2.5分钟)。除此之外,两种加密货币基本是一样的。


以太坊的 memory hard mining puzzle

小:16M Cache

大:1G dataset,DAG


伪代码实现:

为什么挖矿只要hash块头的信息?

轻节点只需要下载区块头,就可以验证区块是否符合挖矿的难度要求。

汇总内容:


以太坊挖矿主要以使用GPU为主,从这一点来说,比莱特币要成功,起到了ASIC resistance。

ethash:以太坊的挖矿算法。

以太坊没有出现ASIC矿机,还有另外一个原因,以太坊计划从 PoW 转向 PoS。

权益证明:按照所占的权益进行投票,来形成共识。(类似股份投票的方式)

一个简单的办法,是不断吓唬大家。


以太坊中采用了预挖矿的过程(pre-mining)。

就是系统预留一部分加密货币给系统的早期开发者。比特币没有采用pre-mining。

pre-sale:将pre-mining中预留的一些币出售出去,换取一些资产。用于加密货币的开发工作。


以太坊的统计数据:

挖矿挖的在努力,关键还是不能输现在起跑线上。


以太坊最大的25个矿池比重:

以太坊价格变化:

以太坊市值:

以太坊的hashrate(所有矿工每秒挖矿的计算力):

以太坊中尝试一个nonce的工作量,要比比特币大得多。


有人认为让通用计算设备参与挖矿反而是不安全的。像比特币那样,采用专门的ASIC挖矿才是更安全的。

发动攻击的成本变得很高。

通用计算机挖矿,发动攻击的成本大幅度下降。(大型公司有很多服务器)

所有,有人认为让通用计算机参与挖矿是不好的,ASIC矿机一统天下才是最安全的。

标签:mining,06,以太,莱特,puzzle,ASIC,ETH,挖矿
From: https://www.cnblogs.com/yangyi215/p/17367692.html

相关文章

  • 01 ETH-以太坊概述
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click01ETH-以太坊概述目录01ETH-以太坊概述比特币区块链1.0,以太坊区块链2.0。比特币出块时间10分钟,以太坊出块时间十几秒,以太坊基于GHOST的共识协议改进......
  • 02 ETH-账户
    02ETH-账户目录02ETH-账户比特币的账户资产,根据UTXO中的信息来进行推算(基于交易的模式,不是基于账户的模式)。好处:隐私保护比较好。(本人有多少个账户信息,可能自己都说不清楚)缺点:使用上跟日常体验不太一样。每个币要说明来源;同时,每次交易必须把所有币花完。很多比特币钱包......
  • P2596 [ZJOI2006]书架
    \(\color{purple}\text{P2596[ZJOI2006]书架}\)解题方法考虑使用\(\text{FHQ}\)平衡树,我们只使用编号,而不使用权值,平衡树上的先序遍历即为书的放置顺序。\(\text{Query}\):这是最简单的操作,直接查询即可。\(\text{Ask}\):本题的核心,我们知道编号,因为没有权值,没法从根往下......
  • 03 ETH-状态树
    03ETH-状态树目录03ETH-状态树地址到状态(balance、nonce、code、storage)的映射。以太坊地址一般160bits,一般表示为40个16进制的数。那么如何设计映射?像是key:valuepair?那么,能不能只用一个hash表来实现?(如果不考虑hash碰撞的话),那这样是不是太简单了?用hash表的话,如果需要提......
  • 2、go程序接入prometheus
    参考:https://prometheus.io/docs/guides/go-application/go默认基础指标packagemainimport( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp")funcmain(){ http.Handle("/metrics",promhttp.Handler()) http.......
  • 06 BTC-挖矿难度
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click06BTC-挖矿难度目录06BTC-挖矿难度调整目标空间占输出空间的比例,来调整计算难度值。difficulty_1_target:难度目标为1时候的目标阈值,是一个很大的值......
  • CSP2022-06
    第一题 水题,没啥好说的#include<iostream>#include<cmath>usingnamespacestd;constintN=1e6;doublea[N];intmain(){intn;cin>>n;doublesum=0;for(inti=0;i<n;i++){cin>>a[i];......
  • MFC-GetHeaderCtrl获取列头指针
     CHeaderCtrl*phead=mylist4.GetHeaderCtrl();   ......
  • 7-006-(LeetCode- 152) 乘积最大子数组
    1.题目读题 考查点 2.解法思路 代码逻辑 具体实现113.总结......
  • struts2 s2-062 ONGL远程代码执行
    struts2s2-062ONGL远程代码执行一、Struts2介绍struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。struts2也是一个web层的MVC框架。Java中SSH框架SSH为Struts+Spring+Hibernate的一个集成框架,是目前较流行......