Recently IBM and Microsoft showed their interest (IBM post, Microsoft post) in utilizing bitcoin's blockchain for internet of things (IoT) development. Let's assume that in close future the blockchain technique to be implemented in smart cars overlaying road conditions or traffic data to each other. Bitcoin's Blockchain is based on a SHA256 Proof-of-Work or finding a proof which when is hashed is more than a target. This helps to tackle double-spending attack.
In the example of future smart cars described above the majority of honest nodes will be low-computational power devices (maybe like raspberry pi) therefore, it will be easy for adversary to perform a double-spending attack if implemented mining algorithm will not be able to bottleneck mining capabilities of devices.
In the question "How can I make sure password hashing is secure on computers while not being prohibitively slow on mobile devices?" Mr.nsl is looking for a password hashing algorithm that can give balance between security and speed for fast-CPU and slow mobile devices. I am looking for an algorithm that can resist fast CPU/GPU to use their computational power for overtaking advantage over the network of low-computational device. Therefore I have two assumptions how to tackle this issue:
- Utilize a hashing function that can provide a fairness/balance to a certain extent between low-computing and faster-computing devices (e.g., between laptop and raspberry PI).
- While connecting to peers in a network nodes send each other versions and if versions are the same, nodes proceed with exchanging verack (a connection ackknowledgement) messages. Hence maybe these devices should along with a version of installed client should send their computational abilities. Therefore if a requesting peer possesses too much of computational power no other nodes will connecto to him.
Even though I understand that solving proof-of-work is directly influenced on one's computational speed, can a crypto person suggest me a memory hard hashing algorithm that can satisfy assumption #1, i.e. be good for the raspberry pi (which currently has max of 512 MB RAM) and not let an average computer with 8GB to overtake a network and perform double-spending attacks?
Also, is it physically possible to send your real computational power during a handshake with a node?