Merge pull request #219 from lbryio/overview_refactor

overview refactor
This commit is contained in:
Jeremy Kauffman 2019-01-25 11:18:12 -05:00 committed by GitHub
commit 91c71ef67f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 100 additions and 192 deletions

View file

@ -88,18 +88,6 @@ function openSubmodule(ecosystemComponentClassName) {
case (ecosystemComponentClassName === "chainquery"):
setSubmoduleConnectionTitle(ecosystemComponentClassName);
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("green")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of LBRY.
`;
}
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("red")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of the LBRY blockchain.
`;
}
document.getElementsByClassName("ecosystem")[0].className += " expand-left";
document.getElementsByClassName(ecosystemComponentClassName)[0].className += " active";
@ -111,18 +99,6 @@ function openSubmodule(ecosystemComponentClassName) {
case (ecosystemComponentClassName === "wallet"):
setSubmoduleConnectionTitle(ecosystemComponentClassName);
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("blue")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of the LBRY data network.
`;
}
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("red")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of the LBRY blockchain.
`;
}
document.getElementsByClassName("ecosystem")[0].className += " expand-left";
document.getElementsByClassName(ecosystemComponentClassName)[0].className += " active";
@ -134,18 +110,6 @@ function openSubmodule(ecosystemComponentClassName) {
case (ecosystemComponentClassName === "lighthouse"):
setSubmoduleConnectionTitle(ecosystemComponentClassName);
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("green")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of LBRY.
`;
}
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("red")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of the LBRY blockchain.
`;
}
document.getElementsByClassName("ecosystem")[0].className += " expand-right";
document.getElementsByClassName(ecosystemComponentClassName)[0].className += " active";
@ -157,12 +121,6 @@ function openSubmodule(ecosystemComponentClassName) {
case (ecosystemComponentClassName === "reflector"):
setSubmoduleConnectionTitle(ecosystemComponentClassName);
if (document.getElementsByClassName(ecosystemComponentClassName)[0].classList.contains("blue")) {
document.querySelector(`.${ecosystemComponentClassName} .__connection-details`).innerHTML = `
<strong>${ecosystemComponentClassName}</strong> is an application built on top of the LBRY data network.
`;
}
document.getElementsByClassName("ecosystem")[0].className += " expand-right";
document.getElementsByClassName(ecosystemComponentClassName)[0].className += " active";
@ -213,17 +171,14 @@ for (const subModule of subModules) {
function setSubmoduleConnectionTitle(submoduleClass) {
if (document.getElementsByClassName(submoduleClass)[0].classList.contains("blue")) {
document.querySelector(`.${submoduleClass} .__connection`).innerHTML = "Connection to Data Network";
document.querySelector(`.${submoduleClass} .__parent.blue`).className += " active";
}
if (document.getElementsByClassName(submoduleClass)[0].classList.contains("green")) {
document.querySelector(`.${submoduleClass} .__connection`).innerHTML = "Connection to Applications";
document.querySelector(`.${submoduleClass} .__parent.green`).className += " active";
}
if (document.getElementsByClassName(submoduleClass)[0].classList.contains("red")) {
document.querySelector(`.${submoduleClass} .__connection`).innerHTML = "Connection to Blockchain";
document.querySelector(`.${submoduleClass} .__parent.red`).className += " active";
}
}

View file

@ -1,8 +1,6 @@
"use strict";
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__module applications">
@ -11,7 +9,7 @@ export default () => `
<h2 class="__title">
<span data-action="open" data-target="applications">
Applications
<em>Browsers, spee.ch, and </em>
<em>Desktop clients, mobile apps, websites and more</em>
</span>
<div>
@ -22,23 +20,7 @@ export default () => `
</h2>
<div class="ecosystem__module__details">
<p>Applications are the final level of the LBRY stack, and they represent how most people will actually use LBRY.</p>
<p>LBRY Inc. currently releases and maintains three applications:</p>
<ul>
<li><a href="https://github.com/lbryio/lbry-desktop" title="">lbry-desktop</a>, a desktop browser for the LBRY network based in React and Electron.</li>
<li><a href="https://github.com/lbryio/lbry-android" title="">lbry-android</a>, an Android browser for the LBRY network in React Native.</li>
<li><a href="https://github.com/lbryio/spee.ch" title="">spee.ch</a>, a web-based viewer and link dump for free LBRY content.</li>
</ul>
<p>However, the very idea of LBRY is that there's <em>not</em> just one way to interact with the network. Anyone can build on top of LBRY in a permissionless manner. These applications exist to show what's possible and to give new users a user-friendly way to use LBRY.</p>
<h3>Additional Resources</h3>
<ul>
<li>See <a href="/contribute" title="">Contribute</a> for learning how to contribute to existing LBRY apps.</li>
<li>See [[Something]] for how to set up your own custom instance of spee.ch.</li>
<li>See <a href="/build" title="">Build</a> for learning how to build your own app!</li>
</ul>
${markdown("./documents/partials/overview/applications.md")}
</div>
</div>
`;

View file

@ -1,8 +1,6 @@
"use strict";
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__module lbry">
@ -11,35 +9,17 @@ export default () => `
<h2 class="__title">
<span data-action="open" data-target="lbry">
Data Network
<em>The "nuts and bolts" (fix this) of the LBRY protocol</em>
<em>What makes the LBRY blockchain useful.</em>
</span>
<div>
<span><a href="https://github.com/lbryio/lbry" title="lbry repo">lbry</a></span>
<span><a href="https://github.com/lbryio/lbryschema" title="lbryschema repo">lbryschema</a></span>
<span><a href="https://github.com/lbryio/torba" title="torba repo">torba</a></span>
<span><a href="https://github.com/lbryio/lbry">lbrysdk</a></span>
<span><a href="https://github.com/lbryio/types">lbryschema</a></span>
</div>
</h2>
<div class="ecosystem__module__details">
<p>While blockchain is the innovation that makes LBRY possible, the Data Network is the layer that actually makes the blockchain <em>useful</em>.</p>
<p>The primary component for this level is <a href="https://github.com/lbryio/lbry">lbry</a>, a daemon that:</p>
<ul>
<li>Interprets and validates metadata in the LBRY blockchain via [lbryschema].</li>
<li>Accesses and distributes the data referenced by metadata in the LBRY blockchain via a peer-to-peer network.</li>
<li>Provides wallet functionality via an [[SPV]] wallet ([torba]).</li>
<li>Facilitates building applications by being easily bundable and providing a simple, clean <a href="https://lbry.io/api">API</a> for the LBRY protocol.</li>
</ul>
<p>Unless choosing to re-implement aspects of the LBRY protocol by hand, most applications that interact with the LBRY network will bundle lbry.</p>
<h3>Additional Resources</h3>
<ul>
<li>See the <a href="/whitepaper" title="">Whitepaper</a> for a more comprehensive introduction to the LBRY data network.</li>
<li>See <a href="/resources" title="">Resources</a> for documentation of the LBRY APIs.</li>
<li>See [[Whatever]] for learning more about LBRY distributes data.</li>
<li>See <a href="/build" title="">Build</a> for learning how to use the daemon to solve your own problem or build your own app!</li>
</ul>
${markdown("./documents/partials/overview/lbrysdk.md")}
</div>
</div>
`;

View file

@ -1,18 +1,6 @@
"use strict";
// P A C K A G E
import { require as local } from "app-root-path";
// U T I L
const markdown = local("/app/components/markdown").default;
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__module lbrycrd">
@ -21,16 +9,18 @@ export default () => `
<h2 class="__title">
<span data-action="open" data-target="lbrycrd">
Blockchain
<em>The foundation of the LBRY protocol</em>
<em>The foundation of the LBRY protocol.</em>
</span>
<div>
<span><a href="https://github.com/lbryio/lbrycrd" title="lbrycrd repo">lbrycrd</a></span>
<span><a href="https://github.com/lbryio/lbrycrd">lbrycrd</a></span>
<span><a href="https://github.com/lbryio/torba">torba</a></span>
<span><a href="https://github.com/lbryio/lbryumx">lbryumx</a></span>
</div>
</h2>
<div class="ecosystem__module__details">
${markdown("./documents/partials/lbrycrd.md")}
${markdown("./documents/partials/overview/lbrycrd.md")}
</div>
</div>
`;

View file

@ -1,8 +1,6 @@
"use strict";
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__submodule chainquery">
@ -10,17 +8,9 @@ export default () => `
<div class="ecosystem__submodule__description">
<div class="ecosystem__submodule__markdown">
<h4 class="ecosystem__submodule__description__title">Overview</h4>
<p>The model of Chainquery at its foundation consists of the fundamental data types found in the blockchain. This information is then expounded on with additional columns and tables that make querying the data much easier.</p>
<h4 class="ecosystem__submodule__description__title __connection">Connection to...</h4>
<p class="__connection-details"></p>
<h4 class="ecosystem__submodule__description__title">Source</h4>
<ul>
<li><a href="https://github.com/lbryio/chainquery" title="chainquery source code">https://github.com/lbryio/chainquery</a></li>
</ul>
${markdown("./documents/partials/overview/chainquery.md")}
</div>
<ul class="__parents">
<li class="__parent green" data-action="open" data-target="applications">Applications</li>
<li class="__parent red" data-action="open" data-target="lbrycrd">Blockchain</li>

View file

@ -1,8 +1,6 @@
"use strict";
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__submodule lighthouse">
@ -10,16 +8,7 @@ export default () => `
<div class="ecosystem__submodule__description">
<div class="ecosystem__submodule__markdown">
<h4 class="ecosystem__submodule__description__title">Overview</h4>
<p>Lighthouse is a lightning-fast advanced search engine API for publications on the lbrycrd with autocomplete capabilities.</p>
<h4 class="ecosystem__submodule__description__title __connection">Connection to...</h4>
<p class="__connection-details"></p>
<h4 class="ecosystem__submodule__description__title">Source</h4>
<ul>
<li><a href="https://github.com/lbryio/lighthouse" title="lighthouse source code">https://github.com/lbryio/lighthouse</a></li>
</ul>
${markdown("./documents/partials/overview/lighthouse.md")}a
</div>
<ul class="__parents">

View file

@ -1,8 +1,6 @@
"use strict";
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__submodule reflector">
@ -10,16 +8,7 @@ export default () => `
<div class="ecosystem__submodule__description">
<div class="ecosystem__submodule__markdown">
<h4 class="ecosystem__submodule__description__title">Overview</h4>
<p>A reflector cluster to accept LBRY content for hosting en masse, rehost the content, and make money on data fees (TODO). This code includes Go implementations of the LBRY peer protocol, reflector protocol, and DHT.</p>
<h4 class="ecosystem__submodule__description__title __connection">Connection to...</h4>
<p class="__connection-details"></p>
<h4 class="ecosystem__submodule__description__title">Source</h4>
<ul>
<li><a href="https://github.com/lbryio/reflector.go" title="reflector source code">https://github.com/lbryio/reflector.go</a></li>
</ul>
${markdown("./documents/partials/overview/reflector.md")}
</div>
<ul class="__parents">

View file

@ -1,8 +1,6 @@
"use strict";
// E X P O R T
import markdown from "../markdown";
export default () => `
<div class="ecosystem__submodule wallet">
@ -10,16 +8,7 @@ export default () => `
<div class="ecosystem__submodule__description">
<div class="ecosystem__submodule__markdown">
<h4 class="ecosystem__submodule__description__title">Overview</h4>
<p> Provides a secured payment gateway and address subscription service between the <a href="https://github.com/lbryio/lbry" title="">lbry-sdk</a> and the <a href="https://github.com/lbryio/lbrycrd" title=""> blockchain protocol</a>.</p>
<h4 class="ecosystem__submodule__description__title __connection">Connection to...</h4>
<p class="__connection-details"></p>
<h4 class="ecosystem__submodule__description__title">Source</h4>
<ul>
<li><a href="https://github.com/lbryio/lbry/tree/master/lbrynet/extras/wallet/server" title="spv wallet server source code">https://github.com/lbryio/lbry/tree/master/lbrynet/extras/wallet/server</a></li>
</ul>
${markdown("./documents/partials/overview/wallet-server.md")}
</div>
<ul class="__parents">

View file

@ -42,9 +42,6 @@
}
.page__content {
background-image: url("/assets/media/images/grid.png");
background-repeat: repeat;
background-size: 32px;
flex: 1;
padding-top: 2rem;
padding-right: env(safe-area-inset-right);

View file

@ -77,7 +77,7 @@
width: 100%;
top: 0.9rem; right: 3rem;
content: "explore";
content: "key repositories";
font-size: 80%;
font-style: italic;
opacity: 0.3;
@ -186,6 +186,7 @@
margin-bottom: 1rem;
}
&.lbrycrd,
&.lbry,
&.applications {
&:not(.active) {
@ -206,8 +207,14 @@
}
&.lbrycrd {
&:not(.active)::before {
background-color: $lbry-red-3;
&:not(.active) {
&::before {
background-color: $lbry-red-3;
}
h2::after {
content: "◼︎";
}
}
&.active::before {
@ -238,7 +245,7 @@
}
h2::after {
content: "◼︎◼︎◼︎◼︎◼";
content: "◼︎◼︎◼︎";
}
}
@ -352,12 +359,6 @@
}
}
.ecosystem__submodule__description__title {
color: $lbry-gray-4;
letter-spacing: 0.1rem;
text-transform: uppercase;
}
.__parents {
top: 2rem; right: 4rem;

View file

@ -10,9 +10,9 @@ This is a guide for contributing to the code bases maintained by the LBRY organi
Contributors that provide accepted pull requests, well-specified issues, or assist in testing and quality assurance typically receive LBC tokens as [appreciation](#appreciation).
## Ecosystem Overview
## Repository Overview
Typical usage of LBRY does not involve a single piece of software, but several interacting components.
Typical usage of LBRY does not involve a single piece of software, but several interacting components. If you're new to LBRY, our [Ecosystem Overview](/overview#ecosystem-overview) will teach you how various components interact.
If you want to contribute to LBRY, there's definitely something for you! The first step is to figure out what project to work on.

View file

@ -38,6 +38,10 @@ Chainquery provides a SQLized view of the LBRY blockchain. The model of Chainque
Informal name for a portion of a *transaction output* that is returned to a sender as a "change" after spending that output. Since *transaction outputs* cannot be partially spent, one can spend 1 BTC out of 3 BTC output only be creating two new outputs: a "payment" output with 1 BTC sent to a payee address, and a "change" output with remaining 2 BTC (minus *transaction fees*) sent to the payer's addresses.
### Channel
A channel is a cryptographically signed pseudoymn used to provide identity on the LBRY network. For specific details, see the [Channels section](/whitepaper#channels) of the specification.
### Channel Claim Signature
Creating a channel claim certificate allows you to group and identify claims based on an identity. A certificate is used to sign the claims and ensure uniqueness along with the claim ID. See [channel signing](https://lbry.tech/resources/signing-claim) for more information.
@ -130,6 +134,10 @@ LBRY POW calculation uses three cryptographic hash functions: SHA-512, SHA-256 a
A measure of mining hardware performance expressed in hashes per second (GH/s). Click [here](https://www.tokens24.com/cryptopedia/basics/bitcoin-hash-rate) for more details.
### Identity
A synonym for [[channel]] and used interchangeably.
### Key
Could mean an ECDSA public or private key, or an AES symmetric encryption key. AES is not used in the protocol itself (it only encrypts the ECDSA keys and other sensitive data), so usually the word *key* means an ECDSA key. When talking about *keys*, people usually mean private keys as public keys can always be derived from a private one. See also *Private Key* and *Public Key*.

View file

@ -6,32 +6,31 @@ title: Overview
What if anyone in the world could publish digital content, anyone else in the world could access it (for free or for payment), and that entire system worked without any centralized authority or point of control?
That's the mission of LBRY.
<MissionStatement/>
That's a fancy sentence, so here's a plainer one: we just thought it'd be really damn cool if there was a system that made it easy to discover and distribute as much of the world's information as possible but was owned and controlled by no one.
That's a fancy sentence, so here's a plain one: we thought it'd be damn cool if there was a system that made it easy to discover and distribute as much of the world's information as possible but was owned and controlled by no one.
^1(#footnote-1)^ In the information theoretic sense, LBRY facilitates distribution of all data, whether it be a video or a spreadsheet.
<sub>^1(#footnote-1)^ In the information theoretic sense, LBRY facilitates distribution of all data, whether it be a video or a spreadsheet.</sub>
^2(#footnote-2)^ Accessible anywhere in the world on any internet-connected device.
<sub>^2(#footnote-2)^ Accessible anywhere in the world on any internet-connected device.</sub>
^3(#footnote-3)^ Not controlled by any one person, party or authority.
<sub>^3(#footnote-3)^ Not controlled by any one person, party or authority.</sub>
^4(#footnote-4)^ Resistant to censorship or attempts to control; impervious to attacks or disruptions.
<sub>^4(#footnote-4)^ Resistant to censorship or attempts to control; impervious to attacks or disruptions.</sub>
^5(#footnote-5)^ In the Pareto sense, with regards to the production and distribution of information (i.e. digital information is both created and distributed in a way that could not be any more efficient from the perspectives of information producers and consumers).
<sub>^5(#footnote-5)^ In the Pareto sense, with regards to the production and distribution of information (i.e. digital information is both created and distributed in a way that could not be any more efficient from the perspectives of information producers and consumers).</sub>
^6(#footnote-6)^ The most complete collection of worlds books, films, art, games, etc. should be available via LBRY.
<sub>^6(#footnote-6)^ The most complete collection of worlds books, films, art, games, etc. should be available via LBRY.</sub>
## Ecosystem Overview
Learn more about how LBRY works from this ecosystem overview.
Learn more about the specific components that make LBRY possible.
<Overview/>
## Keep Diving
- Explore live metadata and add your own blockchain entry on [the Playground](/playground).
- Read the whitepaper, API specification and other documentation in [Resources](/resources).
- Explore live metadata and add your own blockchain entry in the [Playground](/playground).
- Read the [whitepaper](/whitepaper) to know more about LBRY than the person who made this website.
- Find API specifications and other learning materials in [Resources](/resources).
- Learn how to [contribute to LBRY](/contribute) or [build your own application](/build).

View file

@ -0,0 +1,17 @@
Applications are the final level of the LBRY stack. They represent how most people will actually use LBRY.
Applications typically use the [[lbry-sdk]], which provides convenient API methods for building applications.
LBRY Inc. currently releases and maintains three applications:
- [LBRY Desktop](https://github.com/lbryio/lbry-desktop), a desktop browser for the LBRY network based in React and Electron available on Windows, macOS, and Linux.
- [LBRY Android](https://github.com/lbryio/lbry-android), an Android browser for the LBRY network in React Native and available in the playstore.
- [spee.ch](https://github.com/lbryio/spee.ch), a web-based sharing and organizational app designed for self-hosting.
A central idea of LBRY is that there's _not_ a singular way to interact with the network. Anyone can build on top of LBRY in a permissionless manner. LBRY Inc. maintains open-source applications to show what's possible and to give new users a user-friendly to use the network.
### Additional Resources
- [Build](/build) teaches you how to create your own app.
- [Contribute](/contribute) guides you on how to improve LBRY Inc. applications.
- [spee.ch README](https://github.com/lbryio/spee.ch) explains how to host your own instance.

View file

@ -0,0 +1,3 @@
Chainquery is a tool to facilitate simple and efficient access to the data contained within the LBRY blockchain.
Chainquery is a special type of full blockchain node that monitors and parses transactions into an SQL database. It also adds convenience columns and tables designed for common use cases.

View file

@ -1,4 +1,4 @@
_This section assumes "blockchain" already means something to you. If you're totally new, the key problem solved by blockhain is the ability for distributed, disparate entities to all agree on a rivalrous state of affairs. For a more comprehensive introduction to blockchain, try starting [here](https://lopp.net/bitcoin.html)_
_This section assumes "blockchain" already means something to you. If you're new, the central problem solved by blockchain is the ability for distributed, disparate entities to all agree on a rivalrous state of affairs. For a thorough introduction to blockchain, start [here](https://lopp.net/bitcoin.html)_
LBRY uses a public, proof-of-work blockchain that is very similar to Bitcoin. The blockchain is the foundation of the protocol stack.
@ -10,7 +10,5 @@ The metadata contains information about the content, such as the title, creator,
### Additional Resources
* See the [Whitepaper](/whitepaper "Whitepaper") for a more comprehensive introduction to the LBRY blockchain.
* See the [Resources](/resources) for documentation about the LBRY blockchain, including its API.
* See [[Naming]] for learning more about LBRY URLs and how they work.
* See [[Identities]] for learning how the LBRY blockchain handles publisher identities.
- The [Whitepaper](/whitepaper "Whitepaper") contains a comprehensive documentation of the LBRY blockchain.
- [Resources](/resources) has documentation about using the LBRY blockchain, including its APIs.

View file

@ -0,0 +1,16 @@
While the blockchain is the innovation that makes LBRY _possible_, the Data Network is the layer that actually makes the blockchain _useful_.
At this level:
- Metadata stored in the blockchain is interpreted and validated.
- Data referenced by metadata is accessed and distributed via a peer-to-peer network.
- [[Identities]] are created, signed, and validated.
Data network operations are provided by the [lbrysdk](https://github.com/lbryio/lbry). This SDK also provides local wallet functionality and a set of APIs to facilitate building applications.
### Additional Resources
- The [Whitepaper](/whitepaper "Whitepaper") contains a comprehensive specification of data network operations.
- [Resources](/resources) has further documentation on the LBRY SDK, including its APIs.
- [Build](/build) teaches you how to create your own app.
- [Contribute](/contribute) guides you on how to improve the protocol itself.

View file

@ -0,0 +1 @@
Lighthouse is a fast, advanced search engine for searching metadata stored in the LBRY blockchain.

View file

@ -0,0 +1 @@
Reflectors are a special class of hosting servers that facilitate end-user publishing. A reflector server (or server cluster) can accept LBRY content for hosting en masse as well as earn blockchain tokens for data fees.

View file

@ -0,0 +1,3 @@
A wallet server facilitates blockchain interactions for an [[SPV]] wallet client, which is what most applications use.
Without wallet servers, clients would have to download the full blockchain.