While the original network regards the sudden non-response of these nodes as failures, it is below the maximum of (n/3)-1, and can continue operating. The network split containing 4 nodes regards the sudden non-response of 11 nodes as a critical issue as there has been > than (n/3)-1 failures which is easily detectable. That split network can then act accordingly, pausing operation and perhaps even informing users of the sudden critical issue until reconnection to the main network partition.
How does this function if you're releasing something as open source where people will be running their own custom clients? Is it safe to say this relies on hard coded client level restrictions rather than protocol based restrictions? Instead of relying on resources (51%) to attack the base protocol, you have a resourceless attack of people just modifying the client? Am I missing something here?
If I do this in Bitcoin, I have to expend gigantic resources in order to make my decision or my decision doesn't exist, which by all metrics, I would consider a "vote". Also, as you said, eMunie nodes are very cheap to run, you can create a huge number of Sybil nodes at the start of the network, then diverge your nodes from the real (but smaller) network and render it non-functional?
(n/3)-1 is neither a client nor protocol restriction, it is an information theory restriction.
In all true Byzantine agreement solutions there has to exist a either a set of trusted parties that can come to a majority, or a leader ( a set of 1) has to be elected to decide for everyone else based on their inputs ( it should be apparent in both cases that (n/3)-1 applies to both as does f3+1). In the case of non-leader solutions, that set can be a defined list that never changes, a set that is built from neighboring nodes, or a set that is deterministic from some globally agreed upon inputs.
Changes to the client, or protocol would do nothing other than cause those modified to fail, either immediately or some time in the future, as they would not be operating in line with everyone else.
Regarding the Sybil nodes you are forgetting about trust decay, and the need to replenish it to continue holding whatever position you currently do. Nodes with high trust at day-0 will not have high trust at day-90 unless they maintain it, due to decay and possible network growth. As I've said many times in the this thread, to do that has a cost, both in effort and financial terms. But lets get into detail about what is required in a natural environment to build/hold trust in and the potential "costs".
For a Sybil attack to be able to gain enough trust for an adversary to be in a position of influence, no matter how many nodes you have, the collective network penetration of these nodes should be 1 to be the most efficient.
Network penetration of value 1 is defined as: all attackers nodes are connected to all non-SN transaction producing nodes (TXPN) at all times and that the attacker has an equal presence at all TXPNs as that TXPN has honest SN connections. For example if all TXPNs have 3 honest SN connections, you need to have 3 connections there also, all coming from different nodes you own.
A penetration of 1 would ensure that all of your nodes have a 50% chance of receiving an endorsement, less than 1 means that some of your nodes are not connected to TXPNs, so the probability of that TXPN endorsing an honest SN instead of yours if/when it creates a transaction is higher, thus making it harder for you to build trust.
Generally the maximum penetration you could achieve would be around 0.8 in a natural environment, maybe 0.85 with a lot of effort.
Achieving a penetration anywhere near 1 in a natural environment will be very hard:
- logistics of ensuring the required amount of all your SNs are connected all TXPNs
- you wont know how many honest SNs any TXPN has, as nodes can change the default # accepted connections
- TXPNs coming online, going offline, rotating connections and all manner of other activities you can't preempt
If your network penetration is < 1, then you need more connections/nodes to ensure you are receiving a as many of the endorsements as possible to gain trust. More nodes = more effort/cost.
Because you need connections to all present TXPNs in the network, the quantity of TXPNs defines how many nodes you will need depending on what each node can support. In our tests, an SN with an i7 Intel processor can support 100-150 connections concurrently, perform work requests presented by connected TXPNs as its advertising a service, process ALL POW challenges from connected TXPNs correctly, and keep sync with the network. A node of that performance with 100-150 connections is pretty much flat out and burning 100-150w of electricity, sounds quite costly, just like mining!
In a natural Sybil attack its worse than that, as attackers need multiple connections to all TXPNs to acquire a good portion of any trust being endorsed from these TXPNs, and these additional connections need to support the associated work that comes with them, as TXPNs do not, of course, know that you are the same entity. By default 8 connections are accepted per TXPN, both inbound and outbound, so you need to hold at least 4 of those connections on all TXPNs at all times to get close to a penetration of 1. Your nodes are doing at least 4x more work in the network other SNs, and so cost 4x as much to operate. Any earnings from doing the work requested to ensure a chance of endorsement will be less than it costs you to operate them.
Finally he will have to foot the cost of operating those nodes in that manner for almost 90 days until he reaches peak trust, as before 90 days, he may not have enough influence to direct any conflicts in the network towards his preferred outcome.
Manipulated Sybil attacks, are much easier! An attacker can guarantee a network penetration of very close to 1, because the attacker is also in control of the TXPNs making the transactions and can easily ensure that his TXPNs are always connected to one of his SNs. Manipulated Sybil attacks are costly in fees though, but can build trust much more rapidly.