IOTA PoW needs a lot of computational power which makes sending transactions on smaller microcontrollers (like ARM) very slow. One of the main reasons is that the innerst loop of Curl-P81 can’t be computed very efficient on general purpose CPUs. Even modern CPUs with SIMD extension (like SSE or AVX) are heavily restricted when it comes to true parallel calculations.
This is a port of IOTA IRI’s 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.
The core concept is that FPGAs are able to calculate one round of Curl-P81 in a single clock cycle and one complete Hash in about 85 (including test for valid nonce). The core works 7-fold which means, in every 85 clock cycles 7 Hashes are calculated in parallel – this gives about 15.8MHash/s at a clock frequency of 188MHz. Moreover, the parallel computation can be adjusted easily to be even faster on larger FPGAs.
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.
This core can be also used by IRI when using a modified version which allows to use dcurl as external hashing libary.
So it is possible to build a full-node on raspberry pi with a decent hashing power for doing PoW calculations.
The project aims to be completly open source including all source codes, schematic, layouts.