We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Metanet node
Metanet UnspendableA transaction that is a node in a tree of on-chain content, linked to its parent by the parent's signature.
What it is
The Metanet structures data on chain as a directed graph, so content in different transactions can be related, named and found. A node is a transaction with an OP_RETURN output that starts with the four-byte Metanet flag, "meta", followed by the node's public key and its parent's transaction id. An edge from parent to child exists only when the parent's key signs an input of the child, so only a parent can add children. Nobody needs to trust an index: anyone can rebuild the whole graph from the chain.
Script pattern
-
Input: <Sig P_parent> <P_parent>The parent's signature and key. This is what creates the edge. -
OP_FALSE OP_RETURNA data output. -
"meta"The Metanet flag: this transaction is a node. -
<P_node>The node's public key: its address. -
<TxID_parent>The parent's transaction id. Without it, the node is a root. -
<attributes and content> …Optional: a name, keywords, a file and its type.
The node's id is H(P_node || TxID_node): its key and its own transaction id, hashed together.
How it is spent
The node's OP_RETURN output cannot be spent. Its key, P_node, signs for the node's children in later transactions.
Background
nChain proposed the Metanet as a layer on the blockchain that needs no change to the protocol or its consensus rules. Its technical summary describes how nodes, edges, versions and names give the chain the shape of an internet, with resource locators like URLs. Bitblocks detects Metanet nodes as they sync, and the Metanet explorer walks their trees.
Concepts
- Node
- A transaction carrying the Metanet flag. It stores content, and it has a public key, P_node, written in its OP_RETURN. Its id is the hash of that key and its transaction id.
- Edge
- A link from a parent to a child. It exists only when the parent's key signs an input of the child, so a parent alone decides its children. A node has at most one parent and may have any number of children. An edge is a logical link: the child need not spend an output of the parent.
- Root
- A node with no parent, or whose parent field does not point to a valid Metanet node. A root is like a top-level domain; its children are sub-domains, and a node with no children is an end point.
- Versions
- Two nodes with the same public key are versions of one node. The one with the most proof of work behind it is the latest: the higher block, or within a block, the later transaction.
- MURL
- A Metanet URL, built like a web address from a domain name, a path and a file: mnp://bobsblog/path/file. Each part maps to a node in the tree.
- Search
- A node's fixed attributes are its id and its parent's id; a name and keywords are optional. An explorer finds every transaction with the flag, checks it is a valid node, and indexes its keywords. A node may also carry a hash of its content, so it can be found by what it holds.
- Insertion methods
- Content can go in one OP_RETURN after the node fields; in an OP_RETURN header followed by pushes that are dropped with OP_DROP; or across several sibling transactions that share a parent and carry an index for reassembly.
On chain
- 45ee01a595faa4183efa5a1e9351392f6b162f4d15faf9e31d1449671ca86069 block 957,679
- fffb68a93817bb5533420f022232624bde7f618b5a504f8850b0e6db8711f7fe block 957,679
- 5cd8d60ee8a07e6dca2af647a61193856fa0b617ab7f0154c70400de4eb1ab70 block 957,679
- ed2c85edb4eb47982022f96e946a9942c35c45d62376fc698249da0249adeb76 block 957,679
- dca2a1763989ccd5b152714671ed248585f9506f34bff7c77932969de79fb64e block 957,679
Transactions our protocol detector tagged Metanet. Transaction pages need sign-in.
Specification
- The Metanet Technical Summary (nChain, PDF)
- Open the Metanet explorer
- /api/v1/types/metanet
- /api/v1/txs?type=metanet every stored tx of this type, newest first, with an API key or signed in.