Alert Source Discuss
🛑 Withdrawn Standards Track: Core

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

Motivation

提供对 Ethash 算法的最小改动集合,以阻碍和延迟基于 ASIC 挖矿的采用。

Specification

  1. 定义哈希函数 fnv1a()
    def fnv1a(v1, v2):
        return ((v1 ^ v2) * FNV1A_PRIME) % 2**32
    

    其中 FNV1A_PRIME 是 16777499 或 16777639。

  2. 将 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

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.