3
Recently IBM and Microsoft showed their interest (IBM post, Microsoft post) in utilization of blockchain for internet of things 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.
Since the majority of honest nodes will be low-computational power devices (maybe like raspberry pi) 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.
Is there any mining algorithm that can resist nodes with high-computational power to a certain extent, so the blockchain can be utilized in a network of low-computational power devices?
From security perspective is it possible to allow only certain devices connect the network (let's say if they will somehow proove that they are limited in computational power within acceptable range defined by network)?
Regarding 2: i think you did not understand me. I meant when connecting peers send each other versions and if versions are the same, nodes proceed with exchanging verack messages. Hence maybe these devices 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. It is easy to get memory information both from Windows and Linux machines. So when I send such data along with version, based on it a node can either accept me or decline. Can it be a solution? – Nur – 2015-01-08T15:10:28.570
That's not a trustless solution because any node can lie about its capabilities. I have a laptop and a Raspberry Pi in the room with me right now: I can't make the RPi act like the more powerful laptop, but I can easily make the laptop act like the less powerful RPi. – David A. Harding – 2015-01-08T15:14:58.130