Steem Light Nodes

in #steemportal8 years ago (edited)

This is just a little sketch of an idea at the moment, but I think it is enough. I might write it into my development roadmap for steemportal. Basically it is a Steem Witness Proxy node.

This thing will accept all the standard RPC queries that a full node would, but it only keeps data in a cache that has actually been requested, and it will download query results from multiple random nodes to verify and protect against Sybil attacks. It would then also make sense for it to keep score rankings for divergent results and deprioritise their results and frequency of queries with a slowly regrowth in case the particular node stops doing this.

It's like a web accelerator proxy, for Steem. It would allow for smaller platforms to run such a proxy locally, and accelerate the reloading of old content. It would also limit bandwidth usage as well. It is a better solution than the relatively centralised clusters used by electrum for bitcoin. It can be integrated into any steem-using application as a minimalistic version of a full node, that just stores relevant data to a user, without having to trust the network, by ensuring data consistency between its sources.

It would allow lightweight Steem applications to be built where a user has either storage or bandwidth limitations. I think eventually there could be a payment system where you pay the RPC node operators for blocks of data transfer as well. Seeing as this does not accrue to any other relationship with the nodes, it does not compromise identity, but merely rewards RPC node operators for their services.

Protecting source address is an issue, and could be solved by using a Tor tunnel, indeed, Witness RPC operators could also use them to keep the traffic inside the tunnel. But this is not so important, since it is just an additional layer in the transport. Actually, this could be a way to move towards making it profitable to run Tor-like networks. Witness node operators could run both the hidden service and an internal relay only node. Some of the profits from paying for Witness RPC nodes could contribute towards running such relays, the first instance of which I can see a way to make money running a Tor relay.

Sort:  

Wow
Awesome

I realised something quite interesting while thinking about this.

I had been focusing on Tor-like proxy relay systems as a primary means of defeating traffic analysis attacks. But to some extent, networks like Bitmessage do this. They only don't protect the origin IP of a brand new transaction.

But here is the killer: What if the nodes themselves participated in an onion-like transaction 3-hop onion encrypted request packet? The outgoing step is then automatically location obfuscated, and then it propagates and everyone is sharing it around, as normal.

This is a simple thing to implement, and dramatically lightens the individual cost for protecting users from this kind of surveillance, which requires massive numbers of compromised nodes. It is a small addition, adds little bandwidth cost and zero data storage cost. It gives the advantage of Tor-like networks but eliminates the cost of half of the trip for the message - onto the blockchain or Bitmessage style time-limited message cache. You only obfuscate the source of a request. The results are stored everywhere, a little time passes and everyone can access it. If they run a full node, their node grabs the data as a matter of course, like everyone else.

This can be added as a feature for Steem Witness RPC endpoints, and Bitmessage nodes equally simply. It just allows you to send a request, containing a package of data, and who it is to be forwarded to. In fact, it could be deliberately altered so sometimes it is 1 hop, sometimes 2, sometimes 5. This reduces mathematical analysis of intermediary packets being correlated back to source nodes.

This would make sense to be added to all blockchain systems. Transaction writing through onion transaction posts, through an indeterminate circuit to a random final receiver node.

Running a full witness node could have benefits. If you also sell blocks of traffic to other nodes, you can leverage bandwidth discount in your region to earn a little reward extra for this.

It tends to grow bigger the more I look at it, really. This is something that Steem could implement. The bitmessage/bit-chat type message propagation system integrates all into one unit. And this proxy node that still runs full capacity email/IM relaying, and you can interface to it from the same machine through the same access pathway, with always where your messages are posted, appearing from random other nodes. And nodes paying each other (peering) to do traffic, the proxy only goes one way, or, in other words, the source of the funds for the full nodes to pay their costs.

It doesn't matter who you pay. You pay hundreds of other nodes some amount. The certificates they issue to permit you transit do not contain identifying data. They don't know where they came from because you did 3 or 4 or 6 hops in between. If a thread-ordering system also is present, you can switch your path between even each packet you send. It could be fanned out to multiple intermediaries in hops by using secret shares to break up the message into parts that have to all be assembled in some minimum number to retrieve the original data.

The routing is entirely client-side, and depends on a cloud of nodes that all participate in the protocol only. Since running such a node can be profitable, as you get accessed by client only (proxy) light nodes, who are a net income point. There will be many of these. Those who aren't, will be running full nodes, and peering. The money will bounce around a lot but it keeps score of who did what for who, which is not any kind of identifying information.

It ends the question of how to anonymise the new internet. Build this kind of routing into the post propagation system, and the distribution of the data eliminates the other problem of who received it.

We don't need Tor, just blockchains with transaction send source obfuscation.

really interesting prospects for future projects in Steemit.

Coin Marketplace

STEEM 0.19
TRX 0.13
JST 0.028
BTC 64074.25
ETH 3195.10
USDT 1.00
SBD 2.62