Cardano on ARM-Based IoT Gateway

Our engineer is advising that Cardano may be one of the best proof-of-stake crypto options for use in an IoT network. We sell IoT Sensor and Gateway devices into a variety of applications and we are considering addition of a crypto node support to our Gateway to incentivize private citizens to install these Gateways within public spaces where they can support roaming sensors. This concept is not new. The Helium blockchain supports a “People’s Network” of such devices. Helium only supports simple sensors that acquire small data sets on rare occasion. We leverage much faster BLE and Wi-Fi HaLow sensor connections - supporting data streaming when required by applications including vibration analysis and even video. This leads to some general questions:

  • Can Cardano run effectively on ARM-based devices with much less RAM memory than typical miners (think 2 GHz, Quad-Core ARM with 2 GB of RAM and 16 GB of Flash memory)? Note that we have tried running a Relay Node in a Docker container, but were unsuccessful - even after setting up a swap disk to account for our lack of RAM. Our engineer advises that Cardano’s dev is in Haskell - and Haskell support for ARM is the limiting factor. Is Haskell improvements for ARM expected or is Cardano simply the wrong choice for ARM-based systems today and into the near future?
  • Does the Cardano API allow for us to enable a stake pool delegation amount based on things like the number of active Gateways (Relay Nodes) and the amount of Sensor data that these Gateways process?
  • Does Cardano have tech resources that are available for a conversation to answer the above questions and others that may pop up?

Thanks,

Mark J

1 Like

A full node currently will require at least 8 GB of RAM memory. The chain DB stored on disk is growing and currently has ~61 GB

Haskell support since the mainnet launch improved a lot. Back in 2020/2021 when 4GB RAM was enough the aarch64 based node was stable and reliable. With growing numbers in UTXO-set, Database and more functionality (Smart Scripts, Native Tokens) it became more and more a challenge to keep up with Cardano’s one-second slot-beat. Multiple CPU-cores are not that useful. better to have only two with maximum possible processing speed (GHz, architecture instruction sets)

I think the most important question is whether you really want and need to run a full node for each edge sensor/point/location? Wouldn’t it make sense to run a redundant set of full nodes with an enabled query/transmit API layer on a data centre class infrastructure? Then have your ARM sensor aggregation nodes where it makes the most sense, transmitting signed transactions and data to the full nodes.

To be honest, I don’t understand this question exactly. Stake delegations are not directly related to or dependent on TX transfers.

the Developer Portal is a very good place to learn a lot and find further links. There are a number of client tools and scripts that also run on ARM devices.

2 Likes

Thank you @werkof (Markus). Your answers are greatly appreciated.

Your suggestion regarding running a Relay Node on each Gateway is a good one. It looks like our best path forward is to only run wallets on Gateways along with our own code that interacts with data center class infrastructure (in our case that will be GCP). From our engineers Cardano API review, it looks like we cannot adjust stake based on other things - but maybe that is ok if we provide other incentives.

Thanks again.

Mark J

1 Like