1

In the following article about "IOTA CryptoCore", it is written:

"IOTA core functions like address generation, signing, “Mini-Pow” and Proof of Work (PoW) need much computational power which makes it almost impossible (in a practical sense) to be done by small embedded systems."

  1. What is the difference of Mini-Pow with Proof of Work (PoW) ?
  2. And when they say:

"The PoW-core was later integrated into the IOTA Crypto Core."

Which PoW do they mean? Mini-Pow or Proof of Work (PoW) ? (Regarding to the fact that they say also:

"signing and PoW need much computational power which makes it almost impossible (in a practical sense) to be done by small embedded systems."

1

1) In mid 2017 the M-Bug was found and the work-around for it is (inoficially) called "Mini-PoW". It could happen that a Bundle-Hash contained "M" which exposed a private key (and all following keys) directly and weakened signatures significantly. The Workaround simply recreates bundle-hashs until no "M" is contained within the hash. This is a brute-force work-around for which reason it was also called "Mini-PoW". Actually it's not PoW at all, but it should* be done for signatures. The computational work of Mini-Pow vs PoW is about 1:200, so it's more an inconvenience than a real PoW. If in IOTA context is written about PoW, always the real PoW is meant.

2) The real PoW-core was integrated in the IOTA Crypto Core. "Mini-PoW" is more a software-thing which uses hardware-acceleration for keccak384 hashing but it really is more software whereas PoW is done completly on the FPGA.

*should means: it's done in every IOTA library but nodes would accept Bundle-Hashes with 'M's. In contrary transactions containing a wrong PoW-nonce would be rejected. But it's in everyone's interest to do the "Mini-PoW" for security reasons.

  • Thank you for your answer. Only two points remains yet unclear to me: (1) What do you mean by 'M' ? And (2) Is "CryptoCore" a micro-controller (or FPGA) which is able to do PoW completely ? (Because I heard that micro-controllers are not able to perform PoW.) Thanks again. – Questioner Sep 2 at 12:01
1

I'll try to answer.

1) The "M-bug" is effectively the normalized bundle-hash containing the character M. More information about it here: Why is the normalized hash considered insecure when containing the char 'M'

2) Proof-of-Work was implemented in VHDL between 26th April '18 and 26th Aug '18 and became the PiDiver: https://github.com/shufps/iota_vhdl_pow (Source: https://gitlab.com/iccfpga/iccfpga-core/wikis/home)

Where did you hear that micro-controllers are not able to perform PoW?

edit: Micro-controllers and PoW are not the best combination, one solution to it is Azimuth

  • Here: iota.stackexchange.com/a/2140/1928 , ( "... It is not feasible to compute the Proof-of-Work on microcontrollers due to their limited computational speed. Furthermore, the official CCurl implementation (Proof-of-Work computation in C) uses the pthreads library and other functionality which are not typically available on microcontrollers.") And Here: ecosystem.iota.org/projects/… , "... PoW need much computational power which makes it almost impossible to be done by small embedded systems." – Questioner Sep 2 at 14:24
  • Thanks for your links. As you can see, there are different approaches to solve the PoW issue for IoT. – Antonio Nardella Sep 2 at 14:35
  • Yes, for example, one of the approaches is outsourced PoW server; however, in that case, PoW is not done on the micro-controller, but on an external trusted server. But I mean performing PoW locally and directly on the micro-controller. – Questioner Sep 2 at 15:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.