IOTA PoW Computation Pearl-Driver for FPGAs

IOTA PoW Computation Pearl-Driver for FPGAs


Category: Crypto Core

Created: April 25, 2018

Updated: January 27, 2020

Language: VHDL

Other project properties

Development Status: Beta

Additional info: Design done, FPGA proven

WishBone compliant: No

WishBone version: n/a

License: Others



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.

Project Website

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

,Synthesis Report Cyclon 2,

Here the wiring between Raspi and Altera-DE1

Connection Altera DE1 and Raspi,

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

Link to dcurl

Further instructions on the Project Website

Next Steps


  • 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

Cyclon 10 LP Prototype,

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:





MIT license