Hardware-accelerated implementation for IOTA PearlDiver, which utilizes multi-threaded SIMD, FPGA and GPU.
dcurl exploits SIMD instructions on CPU and OpenCL on GPU. Both CPU and GPU accelerations can be enabled in multi-threaded execuction fashion, resulting in much faster proof-of-work (PoW) for IOTA. In addition, dcurl supports FPGA-accelerated PoW, described in docs/fpga-accelerator.md. dcurl can be regarded as the drop-in replacement for ccurl. IOTA Reference Implementation (IRI) adaptation is available to benefit from hardware-accelerated PoW.
Check docs/build-n-test.md for details.
After integrating dcurl into IRI, performance of attachToTangle is measured as following.
- Each sampling is measured with 30 transaction trytes and total 200 samples are measured.
- mwm = 14, 26 CPU threads to find nonce
- Settings: enable 2 pow tasks in CPU, 1 pow tasks in GPU at the same time
Modified IRI accepting external PoW Library Supported IRI version: 1.7.0
Load the external dcurl shared library from the installed JAR file
$ cd ~/iri && make check
$ java -jar target/iri.jar -p <port> --pearldiver-exlib dcurl
Here is a partial list of open source projects that have adopted dcurl. If you are using dcurl and would like your projects added to the list, please send pull requests to dcurl.
- iota-gpu-pow: IOTA PoW node
- You can construct a IOTA PoW node, which uses
ccurl
by default - Generate a drop-in replacement for
ccurl
and acquire performance boost.$ make BUILD_COMPAT=1 check
$ cp ./build/libdcurl.so <iota-gpu-pow>/libccurl.so
- iota.keccak.pow.node.js: IOTA PoW node using the iota.keccak.js implementation
- iota.keccak.js can be used to build high performance node-js spammers but is also capable of signing inputs for value bundles. Using a smart implementation and remote PoW, it is capable of performing > 100 TPS for IRI.
- IOTA PoW Hardware Accelerator FPGA for Raspberry Pi took dcurl for prototyping.
- Check shufps/dcurl and shufps/iota_vhdl_pow for tracking historical changes outperforming 200x speedup than a Raspberry Pi without hardware hccelerator.
- tangle-accelerator: caching proxy server for IOTA, which can cache API requests and rewrite their responses as needed to be routed through full nodes.
- An instance of Tangle-accelerator can serve thousands of Tangle requests at once without accessing remote full nodes frequently.
- As an intermediate server accelerateing interactions with the Tangle, it faciliates dcurl to perform hardware-accelerated PoW operations on edge devices.
dcurl
is freely redistributable under the MIT License.
Use of this source code is governed by a MIT-style license that can be
found in the LICENSE
file.