Masters And Edges

Any decentralized system, no matter whether it’s a cryptocurrency like Bitcoin or Ethereum, or something else like Tor, Kazaa, BitTorrent, DNS, or Skype, needs a number of servers with a special level of trust. When new clients connect to the network they have to interact with some servers they can fully trust. Then, those “nodes” can redirect the client to other places. Something similar existed in Zold from the first day, but got a special name just a week ago.

Bitcoin has seven entry points (at the time of writing hard-coded in chainparams.cpp). They are owned by Pieter Wuille, Matt Corallo, Luke Dashjr, Christian Decker, Jonas Schnelli, Peter Todd, and Sjors Provoost. When a new Bitcoin node starts, it discovers the network through one or a few of those seven “master” nodes.

Ethereum has ten “bootstrap” nodes (at the time of writing hard-coded in mainnet_bootnodes.json), which were introduced in the first days of their project. Who owns them, I’m not sure, the file doesn’t disclose their names.

It is inevitable. There is no other way to build a decentralized system.

In other words, true decentralization is a myth.

We’ve always had the same in Zold. At the moment we have six “master” nodes, which are hard-coded in masters file in our main GitHub repository. Those nodes are maintained by myself at the moment. The list will be updated in the future, when we get more volunteers, who will be ready to provide their equipment and we will be able to trust they will always run the software we create, without modifications.

Just recently, a week ago, we added a new feature to our command line client: intolerance for no-masters FETCH and PUSH operations. Simply put, your attempt to fetch a wallet from the network will fail if no master nodes took part in it. All other nodes, which are not masters (and they are obviously in majority) we call “edges.” Thus, if only edges are returning the wallet, it cannot be trusted.

This feature seriously increases trust in the entire system.

I believe, we will need more master nodes in the future, when the number of wallets and transactions grows.

And, by the way, any client can disable this additional trust check, by using this newly introduced command-line argument: --tolerate-edges.