Metanet Protocol

A typical Metanet graph.

The Metanet Protocol is a layer-2 overlay protocol that defines a method for creating data structure over Bitcoin SV. The protocol utilises nodes and edges to specify directed acyclic graph (DAG) data structures on the Bitcoin SV blockchain. The Metanet protocol can be used to replicate file systems, internet domains, ownership structures and code repositories on the blockchain.

There are tools available to write and read Metanet graphs, and a growing a range of projects that use the Metanet protocol to structure their application data.

Node and Edge Structure

The Metanet Protocol is a protocol for creating graph structures comprising nodes and edges on the blockchain. In the Metanet protocol the following definitions of node and edge are used:

A Metanet node is a transaction that conforms to the Metanet transaction format specified in Metanet technical summary document produced by nChain. The basic components of a Metanet transaction include a protocol flag, Metanet-specific data attributes, and any content data that is to be stored by a Metanet node transaction.

The protocol flag is a 4-byte hexadecimal prefix that signifies that a transaction is using the format of the Metanet protocol. The hexadecimal value of the prefix was chosen to be the hexademical encoding 0x4d455441 of the string ‘meta’ by public poll on June 5th 2019.

The Metanet-specific data attributes of a Metanet node transaction include the following:

  • {\displaystyle P_{node}} – the public key defining the node.
  • {\displaystyle TxID_{node}} – the unique transaction ID of the node.
  • {\displaystyle P_{parent}} – the public key defining a parent of the node.
  • {\displaystyle SigP_{parent}} – a signature created using the private key associated with the public key defining a parent of the node.
  • {\displaystyle TxID_{parent}} – the unique transaction ID of the a parent of the node.

The Metanet-specific data attributes listed above are used collectively to define a Metanet node and its position within a larger graph structure of multiple Metanet nodes, known as a Metanet graph.

It is possible that a node does not have any parents and such a node is termed a root node. A root node will have null values for any {\displaystyle P_{parent}}{\displaystyle SigP_{parent}}, and {\displaystyle TxID_{parent}} attributes, and can therefore use a valid signature from any public key in its input(s).

A Metanet transaction is defined as a transaction that contains an OP_FALSE OP_RETURN payload containing:

  • The