首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证ethash输出Ethereum块散列

验证ethash输出Ethereum块散列
EN

Ethereum用户
提问于 2018-01-25 03:08:15
回答 2查看 1.3K关注 0票数 2

维基上,它提到可以使用一个16 no的验证缓存来验证块哈希,而不需要生成完整的DAG,但是没有进一步的细节说明如何做到这一点。

验证算法是什么?

编辑:我并不是在寻找可以访问块散列的可靠解决方案。我正在寻找一种方法来验证一个Ethash输出是否是有效的。

EN

回答 2

Ethereum用户

发布于 2018-01-25 23:59:30

我在Ethash上找到了一个答案这里

代码语言:javascript
复制
def calc_dataset_item(cache, i):
    n = len(cache)
    r = HASH_BYTES // WORD_BYTES
    # initialize the mix
    mix = copy.copy(cache[i % n])
    mix[0] ^= i
    mix = sha3_512(mix)
    # fnv it with a lot of random cache nodes based on i
    for j in range(DATASET_PARENTS):
        cache_index = fnv(i ^ j, mix[j % r])
        mix = map(fnv, mix, cache[cache_index % n])
    return sha3_512(mix)

def hashimoto_light(full_size, cache, header, nonce):
    return hashimoto(header, nonce, full_size, lambda x: calc_dataset_item(cache, x))

与使用calc_dataset_item生成完整数据集不同,只动态地生成单个哈希周期所需的数据集项。

票数 1
EN

Ethereum用户

发布于 2018-01-25 03:49:05

此代码尝试:

代码语言:javascript
复制
function block_hash_validation(uint blockNumber, bytes32 blockHash) 
        constant returns(bool isValid) 
    {
        return (block.blockhash(blockNumber) == blockHash);
    }

希望能帮上忙。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/37418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档