EIP-1355: Ethash 1a
Authors | Paweł Bylica (@chfast), Jean M. Cyr (@jean-m-cyr) |
---|---|
Created | 2018-08-26 |
Discussion Link | https://ethereum-magicians.org/t/eip-1355-ethash-1a/1167 |
Table of Contents
Motivation
提供对 Ethash 算法的最小改动集合,以阻碍和延迟基于 ASIC 挖矿的采用。
Specification
- 定义哈希函数
fnv1a()
为def fnv1a(v1, v2): return ((v1 ^ v2) * FNV1A_PRIME) % 2**32
其中
FNV1A_PRIME
是 16777499 或 16777639。 - 将 Ethash 算法中确定 DAG 项索引的哈希函数从
fnv()
更改为新的fnv1a()
。 在 Main Loop 中更改p = fnv(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes
为
p = fnv1a(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes
Rationale
通常关于去中心化和网络安全的论点。
除非可编程,否则 ASIC 被硬连接以按给定顺序执行顺序操作。 fnv1a 更改了应用异或和乘法的顺序,有效地禁用了当前的 ASIC 浪潮。 第二个目标是最小化 ethash 更改,以尽可能减少破坏,促进快速开发,并降低分析和测试要求。 最小化对 ethash 的更改可降低更新所有受影响网络组件的风险,并降低调整现有 GPU 的风险。 预计这种特定更改对现有 GPU 性能没有影响。
将 fnv 更改为 fnv1a 没有加密含义。 它只是一个高效的哈希函数,具有良好的分散特性,用于扰乱 DAG 索引。 我们仍然专注于通过减少对严格密码分析的需求来降低风险。
FNV Primes
16777639 满足 Wikipedia 中的所有要求。
16777499 是 FNV 作者首选的,但由于历史原因未在参考 FNV 实现中使用。 请参阅 A few remarks on FNV primes。
Copyright
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Citation
Please cite this document as:
Paweł Bylica (@chfast), Jean M. Cyr (@jean-m-cyr), "EIP-1355: Ethash 1a [DRAFT]," Ethereum Improvement Proposals, no. 1355, August 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1355.