Re: [Din] [DIN] question about a quorum intersection in SCP

David Mazieres <> Thu, 14 March 2019 07:30 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 62A58127916 for <>; Thu, 14 Mar 2019 00:30:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id OiXRbUAHf3Yq for <>; Thu, 14 Mar 2019 00:30:08 -0700 (PDT)
Received: from ( [IPv6:2001:470:806d:1::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E5E1C1277C9 for <>; Thu, 14 Mar 2019 00:30:07 -0700 (PDT)
Received: from (localhost []) by ( with ESMTP id x2E7U7U3042721; Thu, 14 Mar 2019 00:30:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=scs; t=1552548607; bh=m6XTYl9eHCMAApRn0JXZQWSgWG23+aAl1x3AhX7Ud7Y=; h=From:To:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version; b=PBSsy1DHZ8b53K74kKDE4FCP3J+jFhFe2NXjEqDtiVtjoT63vCzQsGRGZ5CT3aR49 k9UhgWZlNXOdMQzaA2x2fbLRzj7X2qcyT1h9Mr6eizX6kgpy3PvYPXXPaLtnpdU0+P z8AQzgzFqaiBW0Jo6j0FQWlM2QhxkMvCmolb9N00=
Received: (from dm@localhost) by ( id x2E7U6pb077893; Thu, 14 Mar 2019 00:30:06 -0700 (PDT)
From: David Mazieres <>
To: Vasiliy Kevroletin <>,
In-Reply-To: <>
References: <>
Reply-To: David Mazieres expires 2019-06-03 PDT <>
Date: Thu, 14 Mar 2019 00:30:06 -0700
Message-ID: <>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <>
Subject: Re: [Din] [DIN] question about a quorum intersection in SCP
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of distributed Internet Infrastructure approaches, aspects such as Service Federation, and underlying technologies" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 14 Mar 2019 07:30:11 -0000

Vasiliy Kevroletin <> writes:

> Hello, mailing list
> *About me*
> My name is Vasiliy Kevroletin, currently, I am studying SCP as a part
> of my work at I have a question about Stellar network and
> SCP.
> *Short version*
> How system ensures (both in practice and in theory), that there will be quorum
> intersection despite ill-behaved nodes?

You don't need to ensure this on a whole system level.  In fact you
can't, because of Sybil attacks, in which an attacker creates fake
nodes.  The point is that everyone keeps agreement with the people they
consider important, and this works transitively.

BTW, you may find our recent Simplified SCP useful if you are looking at

> *Long version*
> As far as I understand, to guarantee safety, the paper requires FBAS
> to have quorum intersection despite ill-behaved nodes (correct me
> please if I am wrong).  Which, for me, sounds reasonable and similar
> to the requirement from the classical PBFT algorithm to have `2*f + 1`
> well-behaving nodes.

Sort of, except there's no longer any f.

> However, the requirement of quorum intersection seems to be more complex
> compared to the classical PBFT, because in SCP each node has it's own "trust
> preferences" (quorum slices). Which means that the choice of each node
> contributes to the security of the whole system. I don't know right terminology,
> but I try to visualize union of all quorum slices as a graph and I intuitively
> call it as a "trust graph". My question can be reformulated as "how to analyze a
> trust graph?". I am interested both in mathematical analysis, experiments and
> observing a real-world functioning system.
> I am interested in the analysis of "trust graph" to answer more practical
> questions:
> + how each node should choose quorum slices? are there any guidelines?

Many applications provide an extrinsic rationale for trust.

For example, if all the certificate authorities ran SCP, no CA wants to
be the one that signed conflicting messages and therefore proved it
couldn't be trusted.  Hence, depending on "all CAs" (even though
different people have different notions of what "all CAs" means) might
be good in some contexts.

Another example, in Stellar, if you have digital dollar tokens backed by
a company like Stronghold or AnchorUSD, you inherently need those
companies to redeem your tokens, so want to put them in your quorum
slices to avoid getting forked from them.

> + does someone have an idea if it possible to get some metrics from the system
>   (for example amount of Stake) and automatically propose (or recommend) quorum
>   slices for each node?

In a counterparty-free blockchain that would make sense (like Bitcoin or
Ethereum).  For other applications, the replicated state machine might
not have a notion of stake.

> + is it possible to somehow analyze existing system and understand that there
>   are potential problems with choices of particular nodes? For example, that
>   failure of only a few nodes can partition the system

That question might be worth investigating.