Why is the ‘Integrity’ property required in consensus protocols?

Formally a consensus protocol must satisfy the following three properties:


  • Eventually, every correct process decides some value.


  • If all the correct processes proposed the same value "v", then any correct process must decide "v".


  • Every correct process must agree on the same value.

"Termination" certifies the protocol is resilient to halting failures. "Agreement" deters any two correct processes from deciding on different values which would break consensus. But what about "Integrity", why is it required? If all correct processes propose "x" but then they all decide "y" (e.g. f(x) = y), is that a violation of consensus?

Does a 2-party decentralized consensus protocol exist?

Assume there are 2 people in a conversation. Each one may support a given stance on an issue (the support is binary, either agreement=1, or disagreement=0). Both want to find more like-minded individuals, without revealing their (potentially incriminating) stance to someone who does not support it. We can assume that neither one of them wants to be misrepresenting themselves, so they will not lie about their stance, but otherwise if possible, both will attempt to find out the stance of their counterparty without giving out their own.

In technical terms: 2 parties (called A, B), each knowing 1 boolean value (v_A, v_B), want to compute a shared value v_A AND v_B, without revealing the underlying values to each other. By the properties of AND, it is unavoidable that if v_A is true, A is able to deduce v_B from the result, but in the opposite case (v_A is false), this isn’t possible (as requested).

In a centralized scenario, this could be easily solved by both parties providing the values to a trusted third party, which computes the result and sends it back to both parties, but TTP might not always be available.

Is it possible to construct a protocol that achieves this goal without a third party, under the constraints mentioned at the end of first paragraph?

I know undergraduate math reasonably well, with some basics in homomorphic encryption, signature algorithms, and a few articles about zero knowledge proofs. Feel free to leave pointers to more literature, I’m be happy to learn what’s necessary on my own.

P.S.: I’m aware that the practical cryptographic use of such a protocol is very limited, as neither of the parties can be forced to provide correct value (and always providing 1 leads to discovery of the other value), and trying to incriminate them by publishing it, even if undeniable, would reveal your own support.

Is there a general consensus about not combining Unearthed Arcana (UA) materials with multi-classing?

Is there a general consensus about not combining Unearthed Arcana (UA) materials with multi-classing?

I have come across posts where contributors (in the comments) state that you cannot use a particular feature from Unearthed Arcana (UA) because the player had already chosen to multi-class.

Where does this notion come from?

I realise the DM has the final say on this, but is there an official statement in the published materials or a tweet to support this, or is it merely based on opinion?

The main argument I’ve seen is this: It is UA material and not part of the main set of rules yet; it has not been adjusted for multi-classing. Therefore players who multi-class are not be allowed to use materials from UA.

Consensus without majority

I am new to distributed computing but after a quick look at Paxos and Raft it is clear that for those algorithms to work majority of the servers should be up and running.

So is it fundamental to this type of consensus problems (non Byzantine, fail stop) to have half of the servers running all the time? Is it proven or does there exist an algorithm which works for fewer running machines?

n thread consensus queues

Its generally agreed that wait free queues have a consensus number of 2. But what about this following code for a consensus protocol for a queue. How is it that this does not go against the idea above?

(Im going to have a wild guess and say this code is not wait free?)

lets say we have a queue with 3 elements, and there are 3 threads. The top element about to be popped from the queue is 1, the rest of the values in the queue is -1

class ConsensusQueue()    queue = new Queue()    queue.enqueue(-1)    queue.enqueue(1)    queue.enqueue(1)    atomic_reg = new AtomicRegister()  def decide(value):     d = queue.dequeue()     if d == -1:        atomic_reg.set(value)     return atomic_reg    

What is the consensus on which books should be banned due to either exploitability, lack of balance, or poor editing?

At first this may seem to be a largely opinion-based question, but the more that I read the more that there appears to be a consensus. For example, in something resembling decreasing order of the frequency that I’ve seen these claims, the following appear to be commonly believed:

  • Any content focused on Epic level gameplay, such as the Epic Level Handbook or Deities & Demigods, should be banned from player use. The reasons for this vary, but I usually see either poor editing, completely lack of balance, or complete lack of thought listed as reasons. The best example is Epic Spellcasting and its numerous dysfunctions, although I could also point to absurdities like the lack of balance between Saleient Divine Abilities (even in the hands of NPCs) or Boccob only having two classes.
  • Serpent Kingdoms is so poorly written and so exploitable that it should be ignored. For example, see “GeneralCategories” (sic) here or recall Pun-pun.
  • Unless you don’t like the flavor or one or two feats that cause ruling debates, the Expanded Psionics Handbook and the Tome of Battle are some of the best 3.5e books.
  • The Book of Exalted Deeds largely contains material that was originally made for NPCs and some of it, particularly anything that requires the Sacred Vow feat, is dangerous to include in your game and may even damage your group. Vow of Poverty is an excellent example, along with the Apostle of Peace.

To me, this list is evidence that some consensus exists on which books should be banned due to either exploitability, lack of balance, or poor editing. My question is this – aside from the examples listed above, what other consensuses exist and what is the reasoning behind them? To be clear, I’m only looking for information on what non-third party books should be banned entirely. I don’t care too much for anything like “be careful what you use from Unearthed Arcana and Dragon Magazine“, “the PHB has poor class balance”, or “don’t allow Domain Wizard”. I just want to know what entire books are frequently forbidden and why.

What is the relationship between Consistency Models and Consensus Algorithms?

I know that:

Each replication technique should follow a consistency model. A consistency model defines a set of rules for the order of the write and read operations. In some replication techniques (like state machine replication), to execute each write operation, replicas should reach consensus on executing or rejecting the operation.

In my opinion, a consensus algorithm is a subset of the rules which are related to the write operations and defined by a consistency model. Is it correct?