区块链知识总结——以太坊的挖矿算法

BTC mining:

BTC chain is scured by mining.

BTC mining 饱受争议的是:需要用到专业的ASIC芯片,这与去中心化的理念背道而驰。

因此,包括以太坊在内的许多加密货币进行ASIC Resistance(抗拒专用矿机)。由于ASIC芯片相对普通计算机来说,算力强但访问内存性能差距不大,因此常用的方法为Memory Hard Mining Puzzle,即增加对内存访问的需求

莱特币:

  • 设置一个很大的数组,按照顺序填充伪随机数。
  • Seed为种子节点,通过Seed进行一些运算获得第一个数,之后每个数字都是通过前一个位置的值取哈希得到的,这样的数组中取值存在前后依赖关系。
  • 在需要求解Puzzle的时候,按照伪随机顺序,从数组中读取一些数,每次读取位置与前一个数相关。例如:第一次,从A位置读取其中数据,根据A中数据计算获得下一次读取位置B;第二次,从B位置读取其中数据,根据B中数据计算获得下一次读取位置C;如果数组足够大,对于挖矿矿工来说,必须保存该数组以便查询,否则每次不仅计算位置,还要根据Seed计算整个数组数据,才能查询到对应位置的数据。这对于矿工来说,计算复杂度大幅度上升。当然,矿工可以选择只保存一部分数据,例如:只保存奇数位置数据,偶数位置需要时再根据前一个奇数位置数据计算即可,从而对内存空间大小减少了一半(计算复杂度提高一点,但内存减少一半)。

以太坊算法:

核心思路:除了进行运算,还要增加其对内存的访问,从而实现对ASIC芯片不友好。

以太坊的puzzle基于Scrypt。Scrypt为一个对内存性能要求较高的哈希函数,之前多用于计算机安全密码学领域。

因为哈希函数的输出并不能提前预料,所以看上去就像是一大堆随机的数据,因此称其为"伪随机数"。

以太坊中,设计了两个数据集,一大一小。小的为16MB的cache(轻节点保存用于验证 ),大的数据集为1G的dataset(DAG )(矿工为了挖矿更快,减少重复计算则需要存储1GB的大数据集。),1G的数据集是通过16MB数据集生成而来的。(注:以太坊中这两个数组大小并不固定,因为考虑到计算机内存不断增大,因此该两个数组需要定期增大)

  • 16MB的Cache数据生成方式与莱特币中生成方式较为类似:通过Seed进行一些运算获得第一个数,之后每个数字都是通过前一个位置的值取哈希获得的
  • 大的DAG生成方式:大的数组中每个元素都是从小数组中按照伪随机顺序读取一些元素,方法同莱特币中相同。如第一次读取A位置数据,对当前哈希值更新迭代算出下一次读取位置B,再进行哈希值更新迭代计算出C位置元素。如此来回迭代读取256次,最终算出一个哈希值作为DAG中第一个元素,如此类推,DAG中每个元素生成方式都依次类推。

求解puzzle,即以太坊挖矿过程:

根据区块block header和其中的Nonce值计算一个初始哈希,根据其映射到某个初始位置A1,读取A1位置的数及其相邻的后一个位置A2上的数,根据该两个数进行运算,算得下一个位置B1,读取B1和B2位置上的数,依次类推,迭代读取64次,共读取128个数。最后,计算出一个哈希值与挖矿难度目标阈值比较,若不符合就更换Nonce,重复以上操作直到最终计算哈希值符合难度要求(注意有可能当前区块已经被挖出)。

python伪代码实现:

相关推荐
MicroTech20255 小时前
微算法科技(NASDAQ :MLGO)量子增强区块链联邦学习:基于量子拜占庭协议的技术革新
科技·算法·区块链
Web3VentureView6 小时前
SYNBO 亮相香港 Web3 嘉年华:在 AI+Web3 时代重思链上一级市场基础设施
人工智能·web3·区块链·加密货币·web4·synbo
搬砖魁首1 天前
Fabric系列 - HSM之3 区块链上的结合
区块链·php·fabric·长安链·hsm
TechMasterPlus1 天前
FilAPP 技术深度解析:基于 Filecoin 的去中心化文件存储应用架构
架构·去中心化·区块链
许强0xq2 天前
订单流战争:AI、区块链与市场透明度的终极博弈
web3·区块链·智能合约·solidity·dapp
BlockChain8882 天前
以太坊交易全流程详解
区块链
weixin_413838562 天前
基于区块链的校园二手书交易系统
vue.js·spring·区块链·fabric
f16422542 天前
区块链入门知识
区块链
迷藏4943 天前
**发散创新:基于Solid协议的Web3.0去中心化身份认证系统实战解析**在Web3.
java·python·web3·去中心化·区块链
CIO_Alliance3 天前
区块链技术在iPaaS系统集成中的应用
区块链·ipaas·系统集成·制造业·企业数智化转型·零售电商