Notary Chains and Scaling MSC Transactions

Guest Post by Paul Snow Lead Developer and Founder |


NotaryChains is a deceptively simple yet critical technology for leveraging the power of the Bitcoin block chain.  The goal of the project is to build a protocol stack, beginning with a proof of existence layer, and ending with a layer providing proof of process.  All of which is secured with the Bitcoin block chain, without adding a significant number of transactions to the Bitcoin block chain, nor requiring any changes to the Bitcoin protocol.

Proof of Existence

The lowest layer in the NotaryChains protocol stack implements Proof of Existence.  This is done by collecting the unique fingerprints (hashes) of digital artifacts (financial transactions, documents, pictures, media files, etc.) into what we refer to as a notary block.  The unique fingerprint (hash) of the notary block is then placed into the Bitcoin block chain.  In this way, an unlimited number of digital artifacts can be secured by a single entry in the Bitcoin block chain.

Each entry submitted by a user to the Proof of Existence layer is time stamped, and added in order of receipt to the current notary block.  An intermediate hash can be provided to the user at submission as proof of its position in the current notary block.  Periodically the notary block is completed, and sealed by adding its hash to the Bitcoin block chain.  

The hash in the Bitcoin block chain provides a rough time stamp of the entire notary block, and the time stamps internal to the notary block provide a finer time stamp of each entry.  All the notary blocks are shared to all interested parties using one or more platforms for sharing data.  Initially we will share them over BitTorrent, but in the future we may share over the SAFE network, Storej, or other technologies.

Proof of Existence only requires the document, the appropriate notary block, and the Bitcoin block chain to prove a document’s existence at a point in time.  Proof of Existence does not require the continued running of NotaryChains, nor can anyone alter the notary blocks after the fact to remove or modify an entry without breaking the hashes stored in the Bitcoin block chain.

Entries and Meta Data

The next layer in the NotaryChains protocol is to add information about documents, and perhaps link documents with other documents within an entry.  An entry is a structured data representation (such as XML or JSON).  Such a structure can include a document’s URL, its hash, perhaps a database key, or any other information useful for tracking with the document.  It can even include multiple document hashes and information, tying documents together.  Notary chains hashes the entry, and records the hash in the current notary block (picking up a time stamp and type).

Again, all that is required for proof of an entry will be the documents referenced, the entry, the notary block, and the Bitcoin block chain.  

Notary Chains: Chains of Entries

Finally, entries can be managed in chains.  Each chain gets its own type, and the first entry represents the genesis entry for the chain.  The first entry defines the rules by which the chain is audited.  Any attempt to add an entry that does not conform to the rules of the chain is disregarded.  The first entry will generally provide an link to the documentation for the rules for the notary chain.  This should include a text description as well as a reference application that performs an audit of the chain.  Constructed in this way, any entry must past the audit in order to be a valid entry in the chain.

NotaryChains will provide support for some basic types.  These types will likely include:

  • Logs — periodic logging of data streams, such as security cameras, building access, computer access, etc.  
  • Accounts — documents the use of a resource.  Can allow for limited access (like limited numbers of views of a movie, limited visits to a gym, etc.).  Allows for a business to sell so many units to a user, and allows a user to document their use of those units via signed access.
  • Coins — Provides for the trading of tokens.  Configuration choices will include specifying conditions for the generation of coins, arbitrary creation of coins, authority to reverse transactions or not, and other coin features. 
  • Versions — Allows the updating of software versions.  Binary and Source can signed and the signatures placed in a notary chain.  updates can be validated by signatures and by being part of a version chain.  Particularly useful to manage generic notary chain types, so that bugs and security issues can be addressed in a way that can be validated against the appropriate notary chain.

Federated Servers

NotaryChains will use a set of independently managed and controlled federated servers.  Each of these servers will be responsible for performing real time audits of the other servers.  If a server fails a dead man switch test, another server of the federated set will pick up responsibility for processing submissions to that server.  

This architecture allows for much more rapid clearing of submissions.  Furthermore, the centralized processing of transactions insures no double spends are possible, as the server handling the transaction is responsible for managing race conditions on a first come first serve basis.  Other features of the protocol (not discussed here) insure proper ordering of submissions even if they do not arrive at the server in order. Notary Chains also allows the audit particular notary chains with partial information (not all notary blocks, not all entries are required for a cryptographically secure audit).

The MSC Protocol and NotaryChains

NotaryChains is using the MSC Platform to issue the digital token associated with the NotaryChains protocol.  Upon completing all the layers, NotaryChain tokens will be converted to native coins running on NotaryChains.  In fact, we may even be able to help improve the speed and reduce the cost of MSC transaction by running synced MasterCore nodes on the NotaryChains platform.

The advantages to running MasterCore on NotaryCains include:

  • The NotaryChains system of record secured by the Bitcoin block chain  Because the notary blocks are hashed into the Bitcoin block chain, they are just as secure as Bitcoin transactions themselves. 
  • Reduced load on the Bitcoin block chain  Unlimited MSC transactions can be performed on NotaryChains for each entry NotaryChains places in the block chain. 
  • Fast transaction processing  Centralized servers allow for millisecond processing of MSC transactions that currently take quite a long time on the Bitcoin block chain.  
  • Secure transactions  All transactions of MSC will require cryptographic signatures.  This means even if the centralized servers wanted to misdirect MSC transactions, they could not.  They will not have the private keys to do so.
  • Simplified protocols  The flexible entry format means that MSC transactions (as well as many other applications) can clearly add all the data and entries required to support the Master protocol.  NotaryChains allows the flexibility to construct transactions exactly as required by the application rather than force them into an awkward encoding scheme.

We are looking forward to working with MSC core developers and delivering the NotaryChain protocol to the Bitcoin ecosystem.

To find more information see our website, whitepaper, and GitHub at these links:

I look forward to community feedback on this topic.
Paul Snow
Lead Developer and Founder |
Notary Chains and Scaling MSC Transactions