goTenna Mesh and Blockchain: Potential Applications and Integrations


Does the Mesh unit know when it has passed along a message? Does a message know how many hops it has taken and through which devices it has passed?

One possibility is that the messages become blocks in the blockchain of your own creation. As long as your blockchain is a low power blockchain like the one Ethereum is supposedly going to switch over to (Casper) then you have the immutable proof that device x transmitted message y and should be paid a miner fee (gas). There should be no opportunity to spoof things because the blockchain wont confirm those transactions unless other devices agree.

This is all pretty theoretical at this point in my mind, I am certainly not an expert on this issue, but I think a lot here depends on validation from the hardware.


Yes & yes to those two questions!


You (goTenna) should reach out to @VitalikButerin and see if you can get him involved. It feels a lot like Ethereum is a good fit here, although I also saw something about the Lightning Network that made it seem like a good choice as well.

A lot of the projects are about remote sensors to monitor air and soil quality and goTenna mesh seems like the ideal way to both get the data in from the field and store it on the blockchain so it can used. Bottom line is there is a lot of untapped potential cool new world stuff blockchain and goTenna Mesh can unlock and I can’t wait to see what people come up with!


can you get / see the ID and hops with out a paired local device?


The goTenna Mesh firmware does know IDs and hop count, but the only way to retrieve these today is using a paired local device.


I can imagine a really cool integration with Lightning to enable off-grid financial transactions:


RE: Device GPS

The only issue with encrypting the GPS location provided by the device GPS is the possibility of GPS spoofing:

Making the device appear to be in a remote location to collect higher fees. A countermeasure to this would be GPS locations from nodes in the vicinity of the goTenna Mesh device that is spoofing. Basically, any other Mesh nodes that can “see” the signal from the spoofed node might provide enough data to flag it for spoofing if enough are around it’s actual physical location.

The question might be how to provide enough signaling in the network to accomplish this without chewing up too much capacity. Ultimately, all of this may not be worth the cost in bandwidth.

Just some things to consider.


Right, there’s some really interesting hardware oracle things that use nonces and some other weird math stuff I don’t get haha.


Hey @danielagotenna has anyone developed something on the SDK to send data from computer to GoTenna mesh?


Hey @Legion! Not as far as I know but people are definitely interested in doing this.

At the end of this month we expect to release a new SDK that will work for both v1 goTenna and goTenna Mesh, and it will be very similar to the currently-available v1 goTenna SDK in that it opens up the Bluetooth-LE data interface for use with custom software applications…

We’d like to one day find the time to open the USB port to respond to commands because that would make it easier to integrate with non-iOS/Android applications (and have an SDK that supports pretty much all OS’s), but fortunately Bluetooth-LE is pretty fast (and power-efficient).


That would be great. I really feel like opening this up beyond phones is a huge untapped market for goTenna!


@Turnerb Agree! We just have limited engineering resources and many competing priorities so we don’t have this built into our immediate product roadmap yet, it’s just on a long list of good ideas we hope to one day get to. If there’s significant clear demand for this from more people that’d help move it into the actual to-do list… but let’s see how everyone uses/likes the Mesh SDK when it’s out at the end of August, and take it from there :slight_smile:



Hey, yeah, I’ve been thinking about this example a lot given GPS spoofing is so easy to do and hard to track. I’ve been wondering whether there may be some things (i.e. potentially anything having to do with GPS data) we will have to exclude from whatever incentivization structure we build, simply to prevent fraud. We need to dive into this more though… thanks for sharing that link!

Well-put. Basically the resource constraints & coordination complexities in a mobile mesh network like goTenna Mesh will require a design that’s a lot more lightweight and, moreover, presumes offline nodes most/a lot of the time… which means the problems to think about and solve are a lot harder than any blockchain that currently exists, I think.

Something else I’ve been thinking about is given any incentivization for a goTenna Mesh build-out (and for any other mesh network, for that matter) would have to be able to validate non-digital behaviors, there may be some things we may just have to choose to exclude from the blockchain incentive layer… BUT maybe there are non-blockchain ways of incentivizing those behaviors instead? In a phone call with a blockchain dev I recently met, we started discussing how a combination incentive system might work — e.g. blockchain layer for digital, simple-to-validate behaviors PLUS a credit/reputation-based system for non-digital and/or easily-spoofed behaviors.

Curious to hear your thoughts on the above @mivyx @Legion @Turnerb @kb1eea @femmesh?

EDIT: Fixed formatting.


@mivyx @Legion @kb1eea @femmesh @danielagotenna

Since GPS information can be spoofed, if there is an economic incentive to spoof it then it will happen. You can decide to make the incentive low enough that no one will care enough to do it, or maybe you try a different way to incentivize people.

I think credit/reputation is a decent system that has been shown to work in the past, however, I wonder how that would work if I decide to sell my goTenna units with a good reputation to someone else? Also, resetting one’s reputation can be as easy as getting a new email address, or in this case, a new wallet address for the incentive token.

In thinking about the network, there are three basic scenarios I think of…

In the image below, you have user A trying to send a message to user B through nodes N. In this scenario, if user A and B are too far apart, then without Node N1, this message does not make it so you want to incentivize the user who is running N1 for supplying the only link in a network that can get the message through.

In this next image, you have user A trying to send a message to user B through nodes N(1-7). This message has lots of different paths to get to user B, but you should most likely only incentivize the Nodes that the message passed through to get to user B. Presumably this would be some path like A->N1->B given that path has the least hops and should make it through the quickest…

And if you image a scenario like the one below, then you need to figure out how to give Node N1 more than any of the other nodes because once again, without that Node, the message goes no where.

This makes me think that as far as incentives go, you want to reward the Nodes that are setup in a location where they have the least number of upstream connections. I have no idea if this is possible to detect on the goTenna mesh network:):grinning:


Yeah, an off blockchain layer could definitely good for a lot of things (probably not just for unvalidated data). However, doesn’t the data still have to be validated even when using off-blockchain incentive layers?

Maybe the solution is to have a centralized incentivization methods built on blockchain so you guys could manually reward people that you need to manually verify.


Actually, now that I think about it, N1 might be incentivized even without a special system.

Let’s say I’m N1 and I live in MiddleofNowhere. MiddleofNowhere is in between CoolCity and ReallyCoolCity. Of course, people from CC and RCC want to message each other.

N1 knows this, and he also knows that there’s no one else in MON that will setup a node. So N1 creates a Node and because he is the only one, he also has no competition and every message goes through him. He gets more money because he has no competition. Maybe he can set his own transaction fee and it could be higher than normal.

In this way, economic laws govern the system instead of code.


Being able to set fee’s for each node would be a really great feature, its like the gas you pay on the ethereum network or the miner fee’s you pay on the bitcoin network. However, I think things would be a little bit different on the goTenna Mesh network. For one thing, the messages have to get through no matter what, especially if its a call for help. You don’t have the option of passing on delivering the message because its not willing to pay the fee.

It might actually be a good idea to just keep it simple and reward every node in the mesh, no matter there position in the network. I was thinking about a case where a small number of individuals have competing goTenna Mesh units in a given area. If I know that I can go make the units I don’t own lose power or disappear and that I will be rewarded for that with more traffic, then I think that would be a bad situation.

I also think about weather underground and the fact that they have over 250,000 weather stations that people paid for with their own money to contribute their weather data to a network (The Weather Channel) that is profiting from that data. I suspect that for the first couple of years you could get away with just rewarding people for being a part of the network, even when that means nothing more than bragging rights for having setup a more remote station that everyone else on the network.


That’s true. Maybe there could be some sort of leaderboard like “most remote node”, “most used node”, etc. If someone spoofs it, it doesn’t really matter because they don’t get rewarded with extra stuff. And the cost of being “caught out” would be relatively big (people wouldn’t trust you).


I think a combination incentive system might actually work pretty well. There are definitely some hurdles on the digital side. The blockchain technology used will need to be very thin and simple but offer rewards for staying online. I definitely think there is an opportunity here given all the innovation in the blockchain world in the last couple of years. Leveraging credit/reputation/gamification for non-digital/easily spoofed behaviors would tie everything together nicely. Some testing should validate or invalidate assumptions.

Lots of table-topping should be done to consider every possible scenario with whatever solutions are being considered. Things like, what if someone tries to game the system by buying 15 goTennas and turning them all on in their house and leaving them on all the time. What happens in this scenario (besides flooding their home with RF)? Does this help or hurt the network overall? Should there be disinsentives in place to prevent this kind of saturation or does it really matter from the network’s perspective?

I think in the end it will boil down to considering very carefully what behaviors are being incentivized and consider how people could take advantage of those incentives. Choosing the right technology once those ideas are dialed-in becomes a case of matching needs to available solutions and testing.

This is a pretty exciting thing to think about. If there was a coast-to-coast network of goTennas able to pass communications even in the event of some disaster, imagine how useful this could be.


Post about Filecoin (via Protocol Labs) that Ryan from Blockstack wrote & sent over to me today: