主页 > imtoken苹果版官网 > 区块链技术解码、哈希函数与Filecoin的选择

区块链技术解码、哈希函数与Filecoin的选择

imtoken苹果版官网 2023-05-04 07:54:39

哈希函数是区块链使用的技术中最基础的部分,也是非常重要的部分之一。 一个好的散列函数在密码系统中也非常重要。 Filecoin作为新一代区块链,在哈希函数的采用上也非常大胆。 其中Posaidon是一种比较新的哈希算法。

哈希函数是区块链使用的技术中最基础的部分,也是非常重要的部分之一。 一个好的散列函数在密码系统中也非常重要。 Filecoin作为新一代区块链,在哈希函数的采用上也非常大胆。 其中Posaidon是一种比较新的哈希算法。

哈希的基本概念

IT 人员对哈希再熟悉不过了。 哈希表是一种基本的数据结构,这种数据结构依靠哈希函数进行索引和访问。 由于Hash函数在寻址上有高效的优势,算法复杂度基本为O(1)。 因此,哈希函数在数据库和其他数据处理系统中得到了广泛的应用。

简单来说,哈希函数就是将一个任意长度的输入,通过哈希算法转化为一个固定长度的输出,输出就是一个哈希值。 通常输入数据的长度大于计算出的哈希值,由于这个哈希值在一定程度上可以代表原始数据,所以也称为摘要。 工程师们比较熟悉的md5是使用最广泛的哈希函数,一般用于校验数据的完整性。

因为hash值是固定长度的,比如md5sum的输出是128位,也就是16个字节,那么这个hash值的所有可能性就是2^128。 该范围类似于 IP6 地址范围。

哈希函数可以通过以下属性进行评估:

密码学中使用的哈希函数

对于区块链从业者来说,哈希函数往往不是用于索引或检索数据(虽然这也很常见),而是用于单向计算和验证。 例如,在比特币中,SHA256 用于进行选举操作以获得生成块的权利,而 SHA256 和 RIPEMD-160 用于从私钥计算公钥和地址。

除了散列函数的一般特性外,密码学中使用的散列函数还有更严格的要求:

单向:很容易从数据中得到散列值,但不能逆向。或者逆向非常困难,理论上不可能

无相关性:要求输入稍有变化就产生完全不同的输出。这样从哈希值根本看不出数据之间的相关性

唯一性:不同的数据不能产生相同的哈希值。 我们这里说的不可能,基本上是人为无法实现的,也就是说概率是极小的; 这个功能也可以成为碰撞安全。

上面提到的md5 hash函数在区块链系统中根本没有被采用。 主要原因是碰撞安全性达不到要求。 密码学界在2007年发现了它的碰撞破解方法,最新发现它的双块攻击可以在普通电脑上很快实现。 广泛使用的SHA256函数的碰撞安全性是md5的2^64倍,

IPFS 中使用的哈希函数

IPFS 与传统存储系统的一个重要区别是内容寻址的使用。 所谓内容寻址,就是对内容进行哈希运算,将哈希值作为内容的索引。 由于哈希函数的确定性和唯一性,数据可以用哈希值来表示。

IPFS的CID(content identification,即hash)在数据格式的定义上采用了MultiHash,也就是说,它是一种可扩展的数据格式和方案。 用户可以根据需要随时支持新的协议。 其格式大致如下:

Qm开头的普通CID采用SHA256算法,Qm是SHA256的base58编码结果。 目前,IPFS 支持的常见哈希算法包括:

注1:SHA族的算法由美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布,是美国政府标准。 SHA-x 表示第 x 代。

注2:BLAKE2的改进版本于2012年12月21日公布。它由Jean-Philippe Aumasson、Samuel Nees、Zooko Wilcox-O'Hearn和Christian Winnerlein设计,用于替代广泛使用但已损坏的MD5和SHA-1算法。 Blake2 的特点是计算速度快,安全性高。

由于Filecoin的代码是基于IPFS的比特币使用了哪种函数,所以IPFS中使用的hash算法自然也被Filecoin采用,包括libp2p、IPLD、存储和检索市场。

Filecoin 使用的其他哈希算法

除了IPFS中的hash算法,Filecoin作为区块链,更多考虑的是hash算法的应用。最需要考虑的两个方面是:1)计算效率; 2)安全

这从Filecoin选择Blake-2b和SHA-3就可以看出来。 Blake 算法由其发明者 Jean-Philippe Aumasson、Luca Henzen、Willi Meier 和 Raphael C.-W 提交给 NIST。 Phan 参加 SHA-3 比赛,但最终输给了 Keccak(目前被以太坊使用,未来可能会被取代)。 但 Blake2 更高效,在实践中,安全性不逊色于 SHA-3。 因此,Blake2 在 Filecoin 中被广泛采用。

blake2b在Filecoin的以下几个地方使用:

Filecoin区别于现有区块链的一个显着特点是它的证明系统,即它的复制证明和时空证明机制。 在这套机制中,散列算法也被广泛使用。

Feistel算法

Feistel算法最初是一种对称密码算法比特币使用了哪种函数,它使用数据区块链加密。 没有太多的复杂性。 为什么它被用作哈希函数? 2005年发现使用Feistel算法可以实现完全均匀的哈希分布,满足随机性。 因此,这正好符合 SDR 中 exp parents 节点的选择规则。

基于Feistel算法的哈希函数也称为F-Hash。 Filecoin 使用 F-Hash 为 SDR 过程中的每个节点计算并找到父节点。 这些父节点是随机分布的,不规则的。 同时,这些父节点完全均匀分布在整个扇区空间中。 这简直就是使用 F-Hash 的最佳时机。

PedersenHash

区块链行业零知识证明孜孜不倦的探索者就是备受推崇的ZCash团队。 ZCash团队一直在追求如何更快更安全的进行零知识证明,

在 ZCash 中,PedersenHash 服务于 PedersenCommitment,在 ZCash 交易中起着举足轻重的作用。 Filecoin的复制证明和时空证明采用类似ZCash的零知识证明,所以使用PedersenHash是顺理成章的。

波塞冬哈希

然而,技术在不断改进。 随着ZCash的研究,2019年5月发表了一篇论文:Starkad and Poseidon: New Hash Functions for Zero-Knowledge Proof Systems。 这篇论文声称,使用 Poseidon,其约束复杂度相比 Pedersen 降低了 8 倍。 因此,电路复杂度大大降低。 证明和验证也更快。

在此情况下,Filecoin团队果断决定,在Filecoin的证明体系中,零知识证明相关的哈希算法采用Pedersen Poseidon。

最常用的是SHA256

虽然上面提到了很多不同的Hash算法,但在Filecoin中,SHA256仍然是使用最多的一种。 特别是在SDR的第一阶段,在每一层的计算过程中,所有节点的计算都使用SHA256。

这就带来了一个问题,就是专门支持SHA的芯片效率要高很多。 这也是为什么最近 Filecoin 团队一直在暗示 AMD 的 CPU 效率更高,因为 AMD 的大部分芯片都支持 SHA-NI,而 Intel 目前还不支持。 这个问题让英特尔设备非常尴尬,也让市场处于失衡状态。

既然如此,为什么Filecoin团队不改用Hash算法来达到一定的平衡。 不同的设备可以进入网络进行竞争不是对Filecoin网络更好吗? 但是,根据我的判断,事实并非如此。 因为这里有充分的理由使用 SHA-256。 具体原因是什么,留给读者自己去思考。

比特币转错到比特币现金地址了_比特币使用了哪种函数_比特币客户端使用