[Bitcoin-development] Setting the record straight on Proof-of-Publication

paul snow snow.paul at gmail.com
Tue Dec 16 20:28:29 UTC 2014

Peter provides an excellent summary of Proof of Publication, which starts
with defining it as being composed of a solution to the double spend
problem.  He requires Proof-of-receipt (proof every member of p in audience
P has received a message m), Proof-of-non-publication (proof a message m
has not been published to an audience P), and Proof-of-membership (proof
some q is a member of P).

He goes on to state (curiously) that Factom cannot provide Proof of

Proof of Audience

Let's first satisfy the easier proofs. A Factom user can know they are in
the Factom audience if they have access to the Bitcoin Blockchain,
knowledge of Factom's first anchor (Merkle root stored in the blockchain)
and the Factom network for distributing Factom's structures.  They can
pretty much know that they are in the Audience.

Proof of Receipt

Proof of receipt is also pretty easy for the Factom user.  User submit
entries, and Factom publishes a Merkle Root to the Bitcoin Blockchain.  The
Merkle proof to the entry proves receipt.  To get the Merkle proof requires
access to Factom structures, which all in the audience have access to by
definition.  But the proof itself only requires the blockchain.

At this point the user can have a Merkle proof of their entry rooted in the

Proof of non-publication

Last, can the Factom user have a  Proof-of-non-publication.  Well,
absolutely.  The Factom state limits the public keys that can be used to
write the anchors in the blockchain.  Entries that are not written with
those public keys are discounted out of hand.  Just like publishing in Mad
Magazine does not qualify if publishing a notice in the New York Times is
the standard.

The complaint Peter has that the user cannot see all the "child chains"
(what we call Factom Chains) is invalid.  The user can absolutely see all
the Directory Blocks (which documents all Factom Chains) if they have
access to Factom. But the user doesn't need to prove publication in all
chains.  Some of those chains are like Car Magazines, Math Textbooks,
Toaster manuals, etc. Without restricting the domain of publication there
is no proof of the negative. The negative must be proved in the standard of
publication, i.e. the user's chain.  And the user can in fact know their
chain, and can enumerate their chain, without regard to most of the other
data in Factom.

Peter seems to be operating under the assumption that the audience for a
Factom user must necessarily be limited to information found in the
blockchain.  Yet the user certainly should have access to Factom if they
are a Factom user.  Factom then is no different from the New York Times,
and the trust in Factom is less. As Peter says himself, he has to trust the
New York Times doesn't publish multiple versions of the same issue. The
user of the New York Times would have no way to know if there were other
versions of an issue outside of looking at all New York Times issues ever

Factom on the other hand documents their "issues" on the blockchain.  Any
fork in publication is obvious as it would require different Bitcoin
addresses to be used, and the blocks would have to have validating
signatures of majorities of all the Factom servers. As long as a fork in
Factom can be clearly identified, and no fork exists, proof of the negative
is assured.  And upon a fork, one must assume the users will specify which
fork should be used.

Proof of publication does not require a system that cannot fork, since no
such non-trivial system exists.  What is required is that forks can be
detected, and that a path can be chosen to move forward.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20141216/d02c40c2/attachment.html>

More information about the bitcoin-dev mailing list