联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame > hashgames

基于FPGA的PHASH GAME - Online Skill Game ET 300oseidon哈希算法硬件加速方案

发布时间:2025-02-01 12:14:02  点击量:

  HASH GAME - Online Skill Game GET 300

基于FPGA的PHASH GAME - Online Skill Game GET 300oseidon哈希算法硬件加速方案

  零知识证明是一类用于验证计算完整性(Computational Integrity)的密码学协议。其基本的思想是: 使证明者(Prover)能够在不泄露任何有效信息的情况下向验证者(Verifier)证明某个计算等式的成立。由于能够兼顾隐私保护和计算完整性证明,零知识证明具备广泛的应用场景,也是目前密码学、区块链以及可信计算方向上的研究热点之一。其具体的应用场景包括: 匿名线上拍卖、云数据库SQL查询验证、去中心化数据存储系统等。尤其是在区块链和加密货币领域,零知识证明凭借其出色的隐私保护特性, 近年来获得了大量开发者和设计者的青睐, 包括加密货币Zcash和Pinocchio以及分布式存储系统Filecoin等在其设计中都采用了ZK-SNARK零知识证明算法。

  虽然零知识证明能在提供计算完整性验证的同时兼顾隐私的保护, 但其代价是提高了证明生成和验证的计算复杂度,这在一定程度上阻碍了其在实际项目中获得更加广泛的应用。目前,加速零知识证明的途径主要有两种,一方面是通过设计专用的硬件电路或者GPU来加速证明算法中的计算瓶颈;另一方面,可以通过优化证明对象,使待证函数更加适配于证明算法进而减少证明生成过程的计算复杂度。例如,当Poseidon哈希算法和SHA-256算法同时作为ZK-SNARK的证明对象时,Poseidon所需的证明生成的计算量要显著小于SHA-256。

  Poseidon哈希算法概述Poseidon哈希函数的计算流程大致如下图所示,从输入和输出的角度看,Poseidon哈希函数将输入的t个有限域元素组成的向量映射到一个输出有限域元素。对于本次课题加速的Filecoin Poseidon实例,t的取值可以是3、5、9或12,同时每个元素的位宽为255 Bit。具体的计算过程由RF次Full Round循环和RP 次Partial Round循环组成。每次循环迭代都需要依次完成Add Round Constants常数模加、S-Box五次方模幂和MDS Mixing向量-矩阵模乘三个阶段的计算。

  和RISC-V处理器开发中常用的Chisel类似,SpinalHDL是一种基于高级编程语言Scala的硬件生成器语言HCL(HCL: Hardware Construction Language)。基于SpinalHDL的硬件开发流程:首先需要使用Scala以及SpinalHDL中提供的电路单元描述整体的电路结构,然后编译运行Scala代码生成对应的Verilog程序,并在Verilog代码的基础上完成仿真、调试以及综合等流程。

  c.更加可靠的电路描述方式:首先,SpinalHDL为电路设计提供了更加准确的描述模型,例如,Verilog中只能使用wire描述信号,而Spinal提供了包括UInt(无符号整数)、SInt(有符号整数)、Bits(比特信号)等更加精确的描述模型。在此基础上,SpinalHDL在编译生成Verilog代码的过程中会对电路描述进行相应的设计规则检查,包括: Bits信号不能用于算术运算、信号连接时的位宽匹配、误用锁存器等问题。

  Poseidon加速器 IP 设计在上述FPGA系统架构设计的基础上,这部分内容将介绍其中的核心模块Poseidon加速器IP的设计与实现细节。对于任意算法的硬件加速器,其设计与实现大体上都可以分成单元运算电路和整体硬件架构两部分。对于单元运算电路而言,诸如加法器、乘法器和模乘器等,其设计的主要目标是如何在更少的硬件开销下达到更佳的计算性能。在单元运算电路的基础上,硬件架构设计需要考虑的是如何提升每个运算单元的利用率,进而使加速器整体达到更高的数据吞吐率。本节将对Poseidon涉及的两种模运算,包括模加和模乘的具体电路实现以及加速器硬件架构的设计做详细地介绍。

  上述两种模加的实现方式均需要两个加/减法器,分别完成加法和取余的计算步骤,然后经过一个多路选择器仲裁后输出,而第二种方法通过与门生成对应的选通信号,相比前一种方式能够节约一个比较器的电路开销。具体的实现中,由于Poseidon操作数位宽为255比特,在代码中直接实现单周期加法器会对整体的时序产生较大的影响。为了提高电路的工作频率,我们将图(b)中两个255比特加法器进行了全流水线化,每个加法器进行五级流水线的分割,并在多路选择器的输出端添加一级寄存器,使得整体模加电路总共包含11级流水延迟。流水线化后的模加电路结构如上图 (c) 所示。

  其次,从取余的角度,和模加中通过减/加法即可实现不同,模乘运算的取余通常需要在除法的基础上完成,而除法器需要复杂的电路结构同时会消耗大量逻辑资源,对于硬件实现不够友好。因此,大部分模乘电路的设计都采用了优化的取余方式,将除法转换成其他容易在硬件上实现的算术运算。本次项目基于Montgomery Reduction算法实现模乘器电路。Montgomery算法的基本思想是通过数域转换的方式,将操作数和运算结果转换到Montgomery域内,在该数域内取余计算中的除法可以简化成移位实现,具体的算法定义如下所示:

  Poseidon哈希算法总共由(RF+RP)次迭代组成,对于Filecoin Poseidon实例,根据中间状态向量大小的不同,总共需要63 - 65次循环。由于FPGA硬件资源的限制,设计中不可能将所有循环都在电路上展开。因此需要基于折叠的思路,即时分复用的方式,在有限的循环单元上完成Poseidon哈希算法的所有迭代。具体的实现里,每个PoseidonLoop都可以完成一次Partial Round或Full Round的计算,而整个PoseidonLoop的数据通路呈环状结构,输入数据在环中不断的流动,直至所有迭代完成后输出。

  a.吞吐率测试:在 AMD Xilinx提供的XDMA驱动的基础上项目中为加速器编写了简单的性能测试程序。该测试程序向FPGA加速器写入一定数量的输入数据,并记录加速器完成所有数据哈希运算所需要的时间。基于该测试程序,我们分别测试了Poseidon加速器在三种长度输入数据下的性能表现。当输入数据的大小为 arity2,加速器在0.877秒内完成了850000次的哈希运算,数据吞吐率可达到29.1651MB/s, 即每秒大约能够完成1M次哈希运算;

  b.Lotus-Bench测试结果:Lotus中提供了计算机硬件在Filecoin计算负载下性能表现的基准测试程序Lotus-Bench;该测试更加接近实际的工作负载,能够得到更加准确的测试结果。在Lotus-Bench的基础上,我们分别测试了CPU, GPU和FPGA 在preCommit阶段(该阶段主要完成Poseidon哈希函数的计算)处理512MB数据所需要的时间。FPGA在 Lotus-Bench 测试下的算力可达到 15.65MB/s,大约是AMD Ryzen 5900X CPU实现的2倍,但和RTX 3070 GPU的加速性能相比仍有很大的提升空间。

  本项目为Filecoin区块链应用中的Poseidon哈希函数提供了基于FPGA的加速方案。硬件上,我们基于AMD Xilinx Varium C1100 FPGA板卡搭建了一个完整的加速系统,该系统主要由XDMA、FIFO以及Poseidon加速器IP三部分组成。其中,Poseidon加速器IP是整个系统的核心部分,其设计与实现主要可以分成单元运算电路和整体架构两个部分。在单元运算电路的实现中,我们基于Karatsuba-Offman算法将高位宽乘法分解成若干并行的小乘法器实现,同时采用Montgomery Reduction算法将取余过程中复杂的除法运算转换成乘法实现。在加速器架构的设计上,我们针对具体的FPGA硬件资源限制,基于流水线和折叠技术设计了一个串行的Poseidon计算架构。最终,FPGA加速系统能够工作在100MHz并为Filecoin提供两倍于AMD Ryzen 5900X处理器的加速性能。

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: