IOTA PoW Computation Pearl-Driver for FPGAs
Category: Crypto Core
Created: April 25, 2018
Updated: January 27, 2020
Other project properties
Development Status: Beta
Additional info: Design done, FPGA proven
WishBone compliant: No
WishBone version: n/a
IOTA PoW needs a lot of computational power which makes sending transactions on smaller microcontrollers (like ARM) very slow.
This is a port of IRI's official Pearl-Diver for PoW-computation for FPGAs which speeds up the process of doing Proof-Of-Work significantly by a factor of more than 140 compared to e.g. a Raspberry Pi.
For instance, finding the nonce of a single transaction takes about 90s on a Raspi. Finding the nonce hardware accelerated by this core reduces the time to ~300ms.
The sources in the SVN contain everything for being synthesizable directly on an Altera DE1 board but the next step will be a custom PCB with Cyclon 10 which can directly plugged on top of a Raspberry Pi.
You can find the project website (with more instructions) on Project Website
Technical Data of Proof-Of-Concept
- Running on EP2C20 @ 200MHz archieving about 12MHash/s
- Resource usage is about 79%
- The core if 5-fold parallel (that means, 5 Curl-P81 hashes are calculated in parallel) but it is customizable
- Only Altera PLL and no other vendor specific core or unusual libaries needed - so it's very easy to retarget this project to different FPGAs
Here the wiring between Raspi and Altera-DE1
Integration into dcurl library
dcurl is a very fast Curl-Hashing-Library which not only supports graphics cards (OpenCL) but also provides highly optimized variants for SSE and AVX capable CPUs.
I did a fork of the library and added code for support of the VHDL Pearl-Diver.
The advantage is that every software working together with dcurl library can make use of the FPGA version of Curl (on Raspberry Pi – for different targets the low level control of SPI has to be replaced).
There is also a IRI variant which supports directly the dcurl-Library, so IRI can directly make use of this core
Further instructions on the Project Website
- Custom PCB with Cyclon 10 LP 25kLE
- 7-fold parallel mit 140MHz in a low-power FPGA reaching about 12MH/s.
- Can be plugged onto Raspberry or used without Raspberry Pi over USB
- PCB already being manufactured
Layout, Schematic, BOM
Layout, Schematic, BOM will be published openly when the custom PCB is assembled and works 😊
This project consumed a lot of work and time and financial resources. I would be very happy if some people would consider to leave a small donation: