Hi all,
There have been some heated discussions on here since Mike Hearn's 'proof of passport' talk for identifying valid nodes to prevent man-in-the-middle attacks (here:
http://www.iamsatoshi.com/coinscrum-networking-evening-circle-london/).
I think that
any solution that would require a token external to the bitcoin network itself, such as passports or ID cards, are inherently counter to the trustless, decentralised nature of bitcoin, as well as being potentially open to manipulation by unsavoury characters or forces either now or later.
The problem as it stands was stated quite well by erik777:
The bottom line is if you're trying to detect the integrity of a node you're talking to, you are asking peers that have talked to that node in the past that you've talked to in better contexts. Each node can track latency, uptime, etc, on all the nodes they talk to. They don't have to share details, just how normal it is.
To be sure, you can't 100% trust any node. That's not the goal. You're just trying to make it more difficult for someone to create a fake bitcoin network on a wifi spot they are hosting. This can make it virtually impossible to pop up a bunch of new nodes with no history on the bitcoin network, or to bring them up and down. Does it rule out every type of node fraud? No, but it makes it much harder. You'd have to create a history on the network with your nodes. And, as soon as your nodes are identified as bad, that history would become moot, requiring a new history.
You are creating higher credibility for nodes with a HISTORY of uptime, consistent latency with its peers, and presence on the blockchain over those that are new, credibility you'd primarily use when on an untrusted local network and you need transaction confirmation quickly, the scenario Mike is trying to address with passports.
This is not the same as real world trust networks. This is based purely on network data, with the network reinforcing itself, increasing its own integrity dynamically. This is still conducive to a trustless network so long as you don't make it part of your core, but an add-on to offset those times when you can't otherwise trust the network and nodes you are currently talking to without a historical linkage.
My personal feeling is that a 'proof-of-connectivity' relying on data transmission rates and time-stamping might be a way forward, and I'm currently looking for academic papers that could back this idea up in purely mathematical/objective terms. For example - if I gave you a starting point such as a nearby train station, and told you times and turns you could identify my house with 100% accuracy each time.
If you could start with one node and probe a map of its connectivity to others nearby, you'd end up with a trustless connectivity map accurately identifying that node.
Or imagine a 'Stargate' model, where a sequence of latencies to nearby nodes produces an unforgeable code/identifier. Each block originating from a node could even be labelled with its 'gate address'. Furthermore, this could generate a node map that's permanently encoded into the block chain, growing organically with the network but also allowing the identification of spoofed nodes (for example, nodes that suddenly appear and have a fixed time lag to one particular group of nodes that it's trying to spoof, but 'wrong' latencies to other supposedly nearby nodes).
So, we all know that:
1. Time moves in one direction
2. Networks have non-zero latencies between nodes
3. Geographic location can correlate with local network latency/routing
4. Time stamping CAN be highly accurate with modern technology
I believe a combination of these factors would allow more objective identification of nodes, using inherent properties of the network itself to provide zero-trust identification. The results could be hashed and encoded into blocks delivered by a particular node, thereby putting a form of the map into the blockchain.
I am NOT advocating white/black/brown-listing in any fashion, merely local trustworthiness built upon a history of functionality within the greater network.
All thoughts welcome. Previous discussion here: (
https://bitcointalksearch.org/topic/m.4753847).