js toc
This commit is contained in:
parent
5e3c9e1ec4
commit
bdf38efc52
5 changed files with 118 additions and 261 deletions
2
Makefile
2
Makefile
|
@ -1,3 +1,3 @@
|
||||||
index.html: index.md style.css
|
index.html: index.md style.css
|
||||||
./bin/gh-md-toc --insert index.md
|
# ./bin/gh-md-toc --insert index.md
|
||||||
./bin/mmark-linux-amd64 -head head.html -html index.md > index.html
|
./bin/mmark-linux-amd64 -head head.html -html index.md > index.html
|
24
head.html
24
head.html
|
@ -1,2 +1,26 @@
|
||||||
<link rel="stylesheet" type="text/css" href="normalize.css">
|
<link rel="stylesheet" type="text/css" href="normalize.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="tocbot.css">
|
||||||
<link rel="stylesheet" type="text/css" href="style.css">
|
<link rel="stylesheet" type="text/css" href="style.css">
|
||||||
|
<script src="tocbot.min.js"></script>
|
||||||
|
<script>
|
||||||
|
function ready(fn) {
|
||||||
|
if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading"){
|
||||||
|
fn();
|
||||||
|
} else {
|
||||||
|
document.addEventListener('DOMContentLoaded', fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ready(function() {
|
||||||
|
tocbot.init({
|
||||||
|
// Where to render the table of contents.
|
||||||
|
tocSelector: '#toc',
|
||||||
|
// Where to grab the headings to build the table of contents.
|
||||||
|
contentSelector: '#content',
|
||||||
|
// Which headings to grab inside of the contentSelector element.
|
||||||
|
headingSelector: 'h2, h3, h4, h5, h6',
|
||||||
|
collapseDepth: 3,
|
||||||
|
positionFixedSelector: "#toc",
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
193
index.html
193
index.html
|
@ -5,8 +5,31 @@
|
||||||
<meta name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.nl">
|
<meta name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.nl">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<link rel="stylesheet" type="text/css" href="normalize.css">
|
<link rel="stylesheet" type="text/css" href="normalize.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="tocbot.css">
|
||||||
<link rel="stylesheet" type="text/css" href="style.css">
|
<link rel="stylesheet" type="text/css" href="style.css">
|
||||||
</head>
|
<script src="tocbot.min.js"></script>
|
||||||
|
<script>
|
||||||
|
function ready(fn) {
|
||||||
|
if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading"){
|
||||||
|
fn();
|
||||||
|
} else {
|
||||||
|
document.addEventListener('DOMContentLoaded', fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ready(function() {
|
||||||
|
tocbot.init({
|
||||||
|
// Where to render the table of contents.
|
||||||
|
tocSelector: '#toc',
|
||||||
|
// Where to grab the headings to build the table of contents.
|
||||||
|
contentSelector: '#content',
|
||||||
|
// Which headings to grab inside of the contentSelector element.
|
||||||
|
headingSelector: 'h2, h3, h4, h5, h6',
|
||||||
|
collapseDepth: 3,
|
||||||
|
positionFixedSelector: "#toc",
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script></head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<h1 id="lbry-a-decentralized-digital-content-marketplace">LBRY: A Decentralized Digital Content Marketplace</h1>
|
<h1 id="lbry-a-decentralized-digital-content-marketplace">LBRY: A Decentralized Digital Content Marketplace</h1>
|
||||||
|
@ -17,6 +40,9 @@
|
||||||
<p>For more technical information about LBRY, visit <a href="https://lbry.tech">lbry.tech</a>.</p>
|
<p>For more technical information about LBRY, visit <a href="https://lbry.tech">lbry.tech</a>.</p>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
|
<p><nav id="toc"></nav>
|
||||||
|
<div id="content"></p>
|
||||||
|
|
||||||
<h2 id="introduction">Introduction</h2>
|
<h2 id="introduction">Introduction</h2>
|
||||||
|
|
||||||
<p>LBRY is a protocol for accessing and publishing digital content in a global, decentralized marketplace. Clients can use LBRY to publish, host, find, download, and pay for content — books, movies, music, or anything else. Anyone can participate and no permission is required, nor can anyone be blocked from participating. The system is distributed, so no single entity has unilateral control, nor will the removal of any single entity prevent the system from functioning.</p>
|
<p>LBRY is a protocol for accessing and publishing digital content in a global, decentralized marketplace. Clients can use LBRY to publish, host, find, download, and pay for content — books, movies, music, or anything else. Anyone can participate and no permission is required, nor can anyone be blocked from participating. The system is distributed, so no single entity has unilateral control, nor will the removal of any single entity prevent the system from functioning.</p>
|
||||||
|
@ -29,155 +55,6 @@
|
||||||
<li>why is it different/better than what existed before</li>
|
<li>why is it different/better than what existed before</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2 id="table-of-contents">Table of Contents</h2>
|
|
||||||
|
|
||||||
<p><div id="toc"></p>
|
|
||||||
|
|
||||||
<!--ts-->
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#overview">Overview</a></li>
|
|
||||||
<li><a href="#conventions-and-terminology">Conventions and Terminology</a></li>
|
|
||||||
<li><a href="#blockchain">Blockchain</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#claims">Claims</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#properties"><a name="user-content-claim-properties"></a>Properties</a></li>
|
|
||||||
<li><a href="#example-claim"><a name="user-content-example-claim"></a>Example Claim</a></li>
|
|
||||||
<li><a href="#operations"><a name="user-content-claim-operations"></a>Operations</a></li>
|
|
||||||
<li><a href="#supports">Supports</a></li>
|
|
||||||
<li><a href="#claimtrie">Claimtrie</a></li>
|
|
||||||
<li><a href="#statuses"><a name="user-content-claim-statuses"></a>Statuses</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#accepted">Accepted</a></li>
|
|
||||||
<li><a href="#abandoned">Abandoned</a></li>
|
|
||||||
<li><a href="#active">Active</a></li>
|
|
||||||
<li><a href="#controlling">Controlling</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#claimtrie-transitions">Claimtrie Transitions</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#determining-active-claims">Determining Active Claims</a></li>
|
|
||||||
<li><a href="#claim-transition-example">Claim Transition Example</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#normalization">Normalization</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#urls">URLs</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#components">Components</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#stream-claim-name">Stream Claim Name</a></li>
|
|
||||||
<li><a href="#channel-claim-name">Channel Claim Name</a></li>
|
|
||||||
<li><a href="#channel-claim-name-and-stream-claim-name">Channel Claim Name and Stream Claim Name</a></li>
|
|
||||||
<li><a href="#claim-id">Claim ID</a></li>
|
|
||||||
<li><a href="#claim-sequence">Claim Sequence</a></li>
|
|
||||||
<li><a href="#bid-position">Bid Position</a></li>
|
|
||||||
<li><a href="#query-params">Query Params</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#grammar">Grammar</a></li>
|
|
||||||
<li><a href="#resolution">Resolution</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#no-modifier">No Modifier</a></li>
|
|
||||||
<li><a href="#claim-id-1">Claim ID</a></li>
|
|
||||||
<li><a href="#claim-sequence-1">Claim Sequence</a></li>
|
|
||||||
<li><a href="#bid-position-1">Bid Position</a></li>
|
|
||||||
<li><a href="#channelname-and-claimname">ChannelName and ClaimName</a></li>
|
|
||||||
<li><a href="#examples">Examples</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#design-notes">Design Notes</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#transactions">Transactions</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#operations-and-opcodes">Operations and Opcodes</a></li>
|
|
||||||
<li><a href="#addresses">Addresses</a></li>
|
|
||||||
<li><a href="#proof-of-payment">Proof of Payment</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#consensus">Consensus</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#block-timing">Block Timing</a></li>
|
|
||||||
<li><a href="#difficulty-adjustment">Difficulty Adjustment</a></li>
|
|
||||||
<li><a href="#block-hash-algorithm">Block Hash Algorithm</a></li>
|
|
||||||
<li><a href="#block-rewards">Block Rewards</a></li>
|
|
||||||
</ul></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#metadata">Metadata</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#specification">Specification</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#example"><a name="user-content-metadata-example"></a>Example</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#key-fields">Key Fields</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#source-and-stream-hashes">Source and Stream Hashes</a></li>
|
|
||||||
<li><a href="#fees-and-fee-structure">Fees and Fee Structure</a></li>
|
|
||||||
<li><a href="#title">Title</a></li>
|
|
||||||
<li><a href="#thumbnail">Thumbnail</a></li>
|
|
||||||
<li><a href="#content-type">Content Type</a></li>
|
|
||||||
<li><a href="#certificate">Certificate</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#-channels-identities"><a name="user-content-#channels"></a> Channels (Identities)</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#example-channel-metadata">Example Channel Metadata</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#validation"><a name="user-content-metadata-validation"></a>Validation</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#data">Data</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#encoding">Encoding</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#blobs">Blobs</a></li>
|
|
||||||
<li><a href="#streams">Streams</a></li>
|
|
||||||
<li><a href="#manifest-contents">Manifest Contents</a></li>
|
|
||||||
<li><a href="#stream-encoding">Stream Encoding</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#setup">Setup</a></li>
|
|
||||||
<li><a href="#content-blobs">Content Blobs</a></li>
|
|
||||||
<li><a href="#manifest-blob">Manifest Blob</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#stream-decoding">Stream Decoding</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#announce">Announce</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#distributed-hash-table">Distributed Hash Table</a></li>
|
|
||||||
<li><a href="#announcing-to-the-dht">Announcing to the DHT</a></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#download">Download</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#querying-the-dht">Querying the DHT</a></li>
|
|
||||||
<li><a href="#blob-exchange-protocol">Blob Exchange Protocol</a>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="#pricecheck">PriceCheck</a></li>
|
|
||||||
<li><a href="#downloadcheck">DownloadCheck</a></li>
|
|
||||||
<li><a href="#download-1">Download</a></li>
|
|
||||||
<li><a href="#uploadcheck">UploadCheck</a></li>
|
|
||||||
<li><a href="#upload">Upload</a></li>
|
|
||||||
</ul></li>
|
|
||||||
</ul></li>
|
|
||||||
<li><a href="#reflectors-and-data-markets">Reflectors and Data Markets</a>
|
|
||||||
<!--te--></li>
|
|
||||||
</ul></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p></div></p>
|
|
||||||
|
|
||||||
<h2 id="overview">Overview</h2>
|
<h2 id="overview">Overview</h2>
|
||||||
|
|
||||||
<p>This document defines the LBRY protocol, its components, and how they fit together. At its core, LBRY consists of several discrete components that are used together in order to provide the end-to-end capabilities of the protocol. There are two distributed data stores (blockchain and DHT), a peer-to-peer protocol for exchanging data, and several specifications for data structure, transformation, and retrieval.</p>
|
<p>This document defines the LBRY protocol, its components, and how they fit together. At its core, LBRY consists of several discrete components that are used together in order to provide the end-to-end capabilities of the protocol. There are two distributed data stores (blockchain and DHT), a peer-to-peer protocol for exchanging data, and several specifications for data structure, transformation, and retrieval.</p>
|
||||||
|
@ -244,7 +121,7 @@
|
||||||
<dd>Creates a pseudonym that can be declared as the publisher of a set of stream claims.</dd>
|
<dd>Creates a pseudonym that can be declared as the publisher of a set of stream claims.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<h4 id="a-name-claim-properties-a-properties"><a name="claim-properties"></a>Properties</h4>
|
<h4 id="claim-properties">Properties</h4>
|
||||||
|
|
||||||
<p>Claims have four properties:</p>
|
<p>Claims have four properties:</p>
|
||||||
|
|
||||||
|
@ -260,7 +137,7 @@
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
<h4 id="a-name-example-claim-a-example-claim"><a name="example-claim"></a>Example Claim</h4>
|
<h4 id="example-claim">Example Claim</h4>
|
||||||
|
|
||||||
<!-- done -->
|
<!-- done -->
|
||||||
|
|
||||||
|
@ -288,7 +165,7 @@
|
||||||
}
|
}
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<h4 id="a-name-claim-operations-a-operations"><a name="claim-operations"></a>Operations</h4>
|
<h4 id="claim-operations">Operations</h4>
|
||||||
|
|
||||||
<!-- done -->
|
<!-- done -->
|
||||||
|
|
||||||
|
@ -325,7 +202,7 @@
|
||||||
|
|
||||||
<p>For more details on the specific claimtrie implementation, see <a href="https://github.com/lbryio/lbrycrd/blob/master/src/claimtrie.cpp">the source code</a>.</p>
|
<p>For more details on the specific claimtrie implementation, see <a href="https://github.com/lbryio/lbrycrd/blob/master/src/claimtrie.cpp">the source code</a>.</p>
|
||||||
|
|
||||||
<h4 id="a-name-claim-statuses-a-statuses"><a name="claim-statuses"></a>Statuses</h4>
|
<h4 id="claim-statuses">Statuses</h4>
|
||||||
|
|
||||||
<!-- fix me? is using claims to mean claims and supports okay? -->
|
<!-- fix me? is using claims to mean claims and supports okay? -->
|
||||||
|
|
||||||
|
@ -877,7 +754,7 @@ OP_SUPPORT_CLAIM <name> <claimId> OP_2DROP OP_DROP <pubKey>
|
||||||
|
|
||||||
<p>Instead, let’s look at an example and some key fields.</p>
|
<p>Instead, let’s look at an example and some key fields.</p>
|
||||||
|
|
||||||
<h4 id="a-name-metadata-example-a-example"><a name="metadata-example"></a>Example</h4>
|
<h4 id="metadata-example">Example</h4>
|
||||||
|
|
||||||
<p>Here’s some example metadata:</p>
|
<p>Here’s some example metadata:</p>
|
||||||
|
|
||||||
|
@ -931,7 +808,7 @@ OP_SUPPORT_CLAIM <name> <claimId> OP_2DROP OP_DROP <pubKey>
|
||||||
|
|
||||||
<p>Information related to signing the claim as belonging to a specific channel. Covered more in <a href="#channels">Channels</a>.</p>
|
<p>Information related to signing the claim as belonging to a specific channel. Covered more in <a href="#channels">Channels</a>.</p>
|
||||||
|
|
||||||
<h3 id="a-name-channels-a-channels-identities"><a name="#channels"></a> Channels (Identities)</h3>
|
<h3 id="channels">Channels (Identities)</h3>
|
||||||
|
|
||||||
<p>Channels are the unit of identity in the LBRY system. A channel is a claim that:</p>
|
<p>Channels are the unit of identity in the LBRY system. A channel is a claim that:</p>
|
||||||
|
|
||||||
|
@ -968,7 +845,7 @@ OP_SUPPORT_CLAIM <name> <claimId> OP_2DROP OP_DROP <pubKey>
|
||||||
}
|
}
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
<h3 id="a-name-metadata-validation-a-validation"><a name="metadata-validation"></a>Validation</h3>
|
<h3 id="metadata-validation">Validation</h3>
|
||||||
|
|
||||||
<p>No enforcement or validation on metadata happens at the blockchain level. Instead, metadata encoding, decoding, and validation is done by clients. This allows evolution of the metadata without changes to consensus rules.</p>
|
<p>No enforcement or validation on metadata happens at the blockchain level. Instead, metadata encoding, decoding, and validation is done by clients. This allows evolution of the metadata without changes to consensus rules.</p>
|
||||||
|
|
||||||
|
@ -1172,6 +1049,8 @@ specification fairly closely, with some modifications.</p>
|
||||||
|
|
||||||
<p><em>Edit this on Github: <a href="https://github.com/lbryio/spec">https://github.com/lbryio/spec</a></em></p>
|
<p><em>Edit this on Github: <a href="https://github.com/lbryio/spec">https://github.com/lbryio/spec</a></em></p>
|
||||||
|
|
||||||
|
<p></div> <!-- DONT DELETE THIS, its for the TOC --></p>
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
|
|
||||||
### Supports, Tips
|
### Supports, Tips
|
||||||
|
|
116
index.md
116
index.md
|
@ -17,7 +17,6 @@ fullname="Alex Grintsvayg"
|
||||||
%%%
|
%%%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# LBRY: A Decentralized Digital Content Marketplace
|
# LBRY: A Decentralized Digital Content Marketplace
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +24,8 @@ A> Please excuse the unfinished state of this paper. It is being actively worked
|
||||||
|
|
||||||
A> For more technical information about LBRY, visit [lbry.tech](https://lbry.tech).
|
A> For more technical information about LBRY, visit [lbry.tech](https://lbry.tech).
|
||||||
|
|
||||||
|
<nav id="toc"></nav>
|
||||||
|
<div id="content">
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
|
@ -37,98 +38,6 @@ TODO:
|
||||||
- why is it different/better than what existed before
|
- why is it different/better than what existed before
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
<div id="toc">
|
|
||||||
|
|
||||||
<!--ts-->
|
|
||||||
* [Overview](#overview)
|
|
||||||
* [Conventions and Terminology](#conventions-and-terminology)
|
|
||||||
* [Blockchain](#blockchain)
|
|
||||||
* [Claims](#claims)
|
|
||||||
* [<a name="user-content-claim-properties"></a>Properties](#properties)
|
|
||||||
* [<a name="user-content-example-claim"></a>Example Claim](#example-claim)
|
|
||||||
* [<a name="user-content-claim-operations"></a>Operations](#operations)
|
|
||||||
* [Supports](#supports)
|
|
||||||
* [Claimtrie](#claimtrie)
|
|
||||||
* [<a name="user-content-claim-statuses"></a>Statuses](#statuses)
|
|
||||||
* [Accepted](#accepted)
|
|
||||||
* [Abandoned](#abandoned)
|
|
||||||
* [Active](#active)
|
|
||||||
* [Controlling](#controlling)
|
|
||||||
* [Claimtrie Transitions](#claimtrie-transitions)
|
|
||||||
* [Determining Active Claims](#determining-active-claims)
|
|
||||||
* [Claim Transition Example](#claim-transition-example)
|
|
||||||
* [Normalization](#normalization)
|
|
||||||
* [URLs](#urls)
|
|
||||||
* [Components](#components)
|
|
||||||
* [Stream Claim Name](#stream-claim-name)
|
|
||||||
* [Channel Claim Name](#channel-claim-name)
|
|
||||||
* [Channel Claim Name and Stream Claim Name](#channel-claim-name-and-stream-claim-name)
|
|
||||||
* [Claim ID](#claim-id)
|
|
||||||
* [Claim Sequence](#claim-sequence)
|
|
||||||
* [Bid Position](#bid-position)
|
|
||||||
* [Query Params](#query-params)
|
|
||||||
* [Grammar](#grammar)
|
|
||||||
* [Resolution](#resolution)
|
|
||||||
* [No Modifier](#no-modifier)
|
|
||||||
* [Claim ID](#claim-id-1)
|
|
||||||
* [Claim Sequence](#claim-sequence-1)
|
|
||||||
* [Bid Position](#bid-position-1)
|
|
||||||
* [ChannelName and ClaimName](#channelname-and-claimname)
|
|
||||||
* [Examples](#examples)
|
|
||||||
* [Design Notes](#design-notes)
|
|
||||||
* [Transactions](#transactions)
|
|
||||||
* [Operations and Opcodes](#operations-and-opcodes)
|
|
||||||
* [Addresses](#addresses)
|
|
||||||
* [Proof of Payment](#proof-of-payment)
|
|
||||||
* [Consensus](#consensus)
|
|
||||||
* [Block Timing](#block-timing)
|
|
||||||
* [Difficulty Adjustment](#difficulty-adjustment)
|
|
||||||
* [Block Hash Algorithm](#block-hash-algorithm)
|
|
||||||
* [Block Rewards](#block-rewards)
|
|
||||||
* [Metadata](#metadata)
|
|
||||||
* [Specification](#specification)
|
|
||||||
* [<a name="user-content-metadata-example"></a>Example](#example)
|
|
||||||
* [Key Fields](#key-fields)
|
|
||||||
* [Source and Stream Hashes](#source-and-stream-hashes)
|
|
||||||
* [Fees and Fee Structure](#fees-and-fee-structure)
|
|
||||||
* [Title](#title)
|
|
||||||
* [Thumbnail](#thumbnail)
|
|
||||||
* [Content Type](#content-type)
|
|
||||||
* [Certificate](#certificate)
|
|
||||||
* [<a name="user-content-#channels"></a> Channels (Identities)](#-channels-identities)
|
|
||||||
* [Example Channel Metadata](#example-channel-metadata)
|
|
||||||
* [<a name="user-content-metadata-validation"></a>Validation](#validation)
|
|
||||||
* [Data](#data)
|
|
||||||
* [Encoding](#encoding)
|
|
||||||
* [Blobs](#blobs)
|
|
||||||
* [Streams](#streams)
|
|
||||||
* [Manifest Contents](#manifest-contents)
|
|
||||||
* [Stream Encoding](#stream-encoding)
|
|
||||||
* [Setup](#setup)
|
|
||||||
* [Content Blobs](#content-blobs)
|
|
||||||
* [Manifest Blob](#manifest-blob)
|
|
||||||
* [Stream Decoding](#stream-decoding)
|
|
||||||
* [Announce](#announce)
|
|
||||||
* [Distributed Hash Table](#distributed-hash-table)
|
|
||||||
* [Announcing to the DHT](#announcing-to-the-dht)
|
|
||||||
* [Download](#download)
|
|
||||||
* [Querying the DHT](#querying-the-dht)
|
|
||||||
* [Blob Exchange Protocol](#blob-exchange-protocol)
|
|
||||||
* [PriceCheck](#pricecheck)
|
|
||||||
* [DownloadCheck](#downloadcheck)
|
|
||||||
* [Download](#download-1)
|
|
||||||
* [UploadCheck](#uploadcheck)
|
|
||||||
* [Upload](#upload)
|
|
||||||
* [Reflectors and Data Markets](#reflectors-and-data-markets)
|
|
||||||
<!--te-->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This document defines the LBRY protocol, its components, and how they fit together. At its core, LBRY consists of several discrete components that are used together in order to provide the end-to-end capabilities of the protocol. There are two distributed data stores (blockchain and DHT), a peer-to-peer protocol for exchanging data, and several specifications for data structure, transformation, and retrieval.
|
This document defines the LBRY protocol, its components, and how they fit together. At its core, LBRY consists of several discrete components that are used together in order to provide the end-to-end capabilities of the protocol. There are two distributed data stores (blockchain and DHT), a peer-to-peer protocol for exchanging data, and several specifications for data structure, transformation, and retrieval.
|
||||||
|
@ -196,7 +105,7 @@ A _claim_ is a single entry in the blockchain that stores metadata. There are tw
|
||||||
<dd>Creates a pseudonym that can be declared as the publisher of a set of stream claims.</dd>
|
<dd>Creates a pseudonym that can be declared as the publisher of a set of stream claims.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
#### <a name="claim-properties"></a>Properties
|
#### Properties {#claim-properties}
|
||||||
|
|
||||||
Claims have four properties:
|
Claims have four properties:
|
||||||
|
|
||||||
|
@ -211,7 +120,7 @@ Claims have four properties:
|
||||||
<dd>Metadata about a stream or a channel. See [Metadata](#metadata).</dd>
|
<dd>Metadata about a stream or a channel. See [Metadata](#metadata).</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
#### <a name="example-claim"></a>Example Claim
|
#### Example Claim
|
||||||
|
|
||||||
<!-- done -->
|
<!-- done -->
|
||||||
|
|
||||||
|
@ -240,7 +149,7 @@ Here is an example stream claim:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### <a name="claim-operations"></a>Operations
|
#### Operations {#claim-operations}
|
||||||
|
|
||||||
<!-- done -->
|
<!-- done -->
|
||||||
|
|
||||||
|
@ -277,7 +186,7 @@ Multiple claims can exist for the same name. They are all stored in the leaf nod
|
||||||
|
|
||||||
For more details on the specific claimtrie implementation, see [the source code](https://github.com/lbryio/lbrycrd/blob/master/src/claimtrie.cpp).
|
For more details on the specific claimtrie implementation, see [the source code](https://github.com/lbryio/lbrycrd/blob/master/src/claimtrie.cpp).
|
||||||
|
|
||||||
#### <a name="claim-statuses"></a>Statuses
|
#### Statuses {#claim-statuses}
|
||||||
|
|
||||||
<!-- fix me? is using claims to mean claims and supports okay? -->
|
<!-- fix me? is using claims to mean claims and supports okay? -->
|
||||||
|
|
||||||
|
@ -699,7 +608,7 @@ As the metadata specification is designed to grow and change frequently, the ful
|
||||||
|
|
||||||
Instead, let's look at an example and some key fields.
|
Instead, let's look at an example and some key fields.
|
||||||
|
|
||||||
#### <a name="metadata-example"></a>Example
|
#### Example {#metadata-example}
|
||||||
|
|
||||||
Here’s some example metadata:
|
Here’s some example metadata:
|
||||||
|
|
||||||
|
@ -752,7 +661,7 @@ The media type of the item as [defined](https://www.iana.org/assignments/media-t
|
||||||
Information related to signing the claim as belonging to a specific channel. Covered more in [Channels](#channels).
|
Information related to signing the claim as belonging to a specific channel. Covered more in [Channels](#channels).
|
||||||
|
|
||||||
|
|
||||||
### <a name="#channels"></a> Channels (Identities)
|
### Channels (Identities) {#channels}
|
||||||
|
|
||||||
Channels are the unit of identity in the LBRY system. A channel is a claim that:
|
Channels are the unit of identity in the LBRY system. A channel is a claim that:
|
||||||
|
|
||||||
|
@ -789,7 +698,7 @@ When a claim published into a channel, the claim data is signed and the followin
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### <a name="metadata-validation"></a>Validation
|
### Validation {#metadata-validation}
|
||||||
|
|
||||||
No enforcement or validation on metadata happens at the blockchain level. Instead, metadata encoding, decoding, and validation is done by clients. This allows evolution of the metadata without changes to consensus rules.
|
No enforcement or validation on metadata happens at the blockchain level. Instead, metadata encoding, decoding, and validation is done by clients. This allows evolution of the metadata without changes to consensus rules.
|
||||||
|
|
||||||
|
@ -1001,6 +910,13 @@ The current version of the protocol does not support sophisticated price negotia
|
||||||
|
|
||||||
_Edit this on Github: https://github.com/lbryio/spec_
|
_Edit this on Github: https://github.com/lbryio/spec_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> <!-- DONT DELETE THIS, its for the TOC -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!---
|
<!---
|
||||||
|
|
||||||
### Supports, Tips
|
### Supports, Tips
|
||||||
|
|
44
style.css
44
style.css
|
@ -3,8 +3,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 40px auto;
|
margin: 40px auto 80vh;
|
||||||
max-width: 800px;
|
max-width: 1000px;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
@ -13,13 +13,45 @@ body {
|
||||||
/* font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; */
|
/* font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
margin-right: 300px;
|
||||||
|
}
|
||||||
|
#toc {
|
||||||
|
height: 100%;
|
||||||
|
width: 300px;
|
||||||
|
right: calc((100% - 1000px) / 2);
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-top: 20px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.is-position-fixed {
|
||||||
|
position: fixed !important;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
#toc a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
#toc ol {
|
||||||
|
list-style-type: decimal;
|
||||||
|
}
|
||||||
|
#toc li {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
#toc .is-active-link::before {
|
||||||
|
background-color: #0074D9;
|
||||||
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
margin-bottom: 1.4rem;
|
margin-bottom: 1.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5 {
|
h1, h2, h3, h4, h5, h6 {
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
|
h1:focus, h2:focus, h3:focus, h4:focus, h5:focus, h6:focus {
|
||||||
|
/* fix weird outline when clicking a TOC link */
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
@ -45,6 +77,12 @@ h5 {
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
font-variant: small-caps;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
small {
|
small {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue