<ol>
<li><p>No, not in a fully decentralized way.  Hash-based methods (like what Bitcoin uses) will always be more efficient on more efficient hardware.  Proof-of-stake methods <a href="https://download.wpsoftware.net/bitcoin/pos.pdf" rel="nofollow">can't be fully decentralized.</a></p></li>
<li><p>No, hardware can't prove its capabilities in a fully decentralized way.  It is possible for a device to prove its maximum distance from you using the speed of light---if you send it a ping and it replies in <em>n</em> seconds, you know it's within <em>n</em> times 300,000 kilometers of you.  You can use similar hacks to prove other things---but you can't trustlessly export that proof to other users on the network you don't directly observe the phenomena, making it useless for block chains.</p></li>
</ol>

<p>I read the two articles you linked to, and I suspect they're using "block chain" as a buzz word.  There's no way to do fully decentralized mining without giving control of the block chain to the people with the most efficient hashing hardware.</p>

<p>Their plan is probably to install a key pair on each device, sign each device's public key with the IBM master key, and then tell each device to accept messages from other devices as long as those messages have been signed with a key that was also signed by the IBM master key.</p>

<p>For example, my IBM car GPS will send traffic updates to other nearby IBM car GPSes.  Those GPSes will count my update as one authenticated vote.  If other nearby IBM car GPSes send the same message, eventually the message will have enough votes to cause all nearby IBM GPSes to choose alternative routes.  This is nominally "decentralized" and it may work until some IBM sysadmin signs 10,000 public keys for himself in order to get everyone off the highway so he can get somewhere quicker.</p>

CC BY-SA 3.0
2015-01-08T15:10:28.570Z
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
CC BY-SA 3.0
2015-01-08T15:14:58.130Z
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
CC BY-SA 3.0
2015-01-08T14:29:47.940Z
2015-01-08T14:29:47.940Z
David A. Harding
<p>If you require a network key then you can achieve the objective of keeping a network secure and therefore your IoT application safe and sound.</p>

CC BY-SA 3.0
2015-01-09T02:18:38.973Z
2015-01-09T02:18:38.973Z
JohnHanks
<p>Recently IBM and Microsoft showed their interest (<a href="http://www.coindesk.com/ibm-executive-block-chain-internet-of-things/" rel="nofollow">IBM post</a>, <a href="https://www.cryptocoinsnews.com/microsoft-also-exploring-blockchain-technology-iot-world-distributed-connected-devices/" rel="nofollow">Microsoft post</a>) in utilization of blockchain for <a href="http://en.wikipedia.org/wiki/Internet_of_Things" rel="nofollow">internet of things</a> 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.</p>

<p>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. </p>

<ol>
<li><p>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?</p></li>
<li><p>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)?</p></li>
</ol>

<mining-theory><doublespend><algorithms>
Blockchain for internet-of-things or is there any mining algorithm that can be utilized in low-computational power devices preserving security?
Nur
# Blockchain for internet-of-things or is there any mining algorithm that can be utilized in low-computational power devices preserving security?

(Asked by: username_0 on 2015-01-08)

Recently IBM and Microsoft showed their interest ([IBM post](http://www.coindesk.com/ibm-executive-block-chain-internet-of-things/), [Microsoft post](https://www.cryptocoinsnews.com/microsoft-also-exploring-blockchain-technology-iot-world-distributed-connected-devices/)) in utilization of blockchain for [internet of things](http://en.wikipedia.org/wiki/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.

1. 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?
2. 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)?

**Tags:** mining-theory, doublespend, algorithms


---

## 2 answers

### Answer by username_1 on 2015-01-08. Score: 2

1. No, not in a fully decentralized way. Hash-based methods (like what Bitcoin uses) will always be more efficient on more efficient hardware. Proof-of-stake methods [can't be fully decentralized.](https://download.wpsoftware.net/bitcoin/pos.pdf)
2. No, hardware can't prove its capabilities in a fully decentralized way. It is possible for a device to prove its maximum distance from you using the speed of light---if you send it a ping and it replies in *n* seconds, you know it's within *n* times 300,000 kilometers of you. You can use similar hacks to prove other things---but you can't trustlessly export that proof to other users on the network you don't directly observe the phenomena, making it useless for block chains.

I read the two articles you linked to, and I suspect they're using "block chain" as a buzz word. There's no way to do fully decentralized mining without giving control of the block chain to the people with the most efficient hashing hardware.

Their plan is probably to install a key pair on each device, sign each device's public key with the IBM master key, and then tell each device to accept messages from other devices as long as those messages have been signed with a key that was also signed by the IBM master key.

For example, my IBM car GPS will send traffic updates to other nearby IBM car GPSes. Those GPSes will count my update as one authenticated vote. If other nearby IBM car GPSes send the same message, eventually the message will have enough votes to cause all nearby IBM GPSes to choose alternative routes. This is nominally "decentralized" and it may work until some IBM sysadmin signs 10,000 public keys for himself in order to get everyone off the highway so he can get somewhere quicker.

> **Comments:**
> **username_0**: 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?  
> **username_1**: 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.  

---

### Answer by username_2 on 2015-01-09. Score: 0

If you require a network key then you can achieve the objective of keeping a network secure and therefore your IoT application safe and sound.


---

