2018-07-12 17:21:42 +02:00
"use strict" ;
// P A C K A G E S
const Component = require ( "choo/component" ) ;
const dedent = require ( "dedent" ) ;
const html = require ( "choo-async/html" ) ;
2018-07-13 23:58:24 +02:00
// E X P O R T
2018-07-12 17:21:42 +02:00
module . exports = exports = class Ecosystem extends Component {
constructor ( ) {
super ( ) ;
this . subModuleChainquery = html `
< div class = "ecosystem__submodule chainquery" >
< h3 class = "ecosystem__submodule__title" data - action = "openSubmodule" data - target = "chainquery" > chainquery < / h 3 >
< div class = "ecosystem__submodule__description" >
< h4 class = "ecosystem__submodule__description__title" > Overview < / h 4 >
< 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 ... < / h 4 >
< p class = "__connection-details" > < / p >
< h4 class = "ecosystem__submodule__description__title" > Source < / h 4 >
< ul >
< li > < a href = "https://github.com/lbryio/chainquery" title = "chainquery source code" > https : //github.com/lbryio/chainquery</a></li>
< / u l >
< ul class = "__parents" >
< li class = "__parent green" data - action = "open" data - target = "applications" > Applications < / l i >
< li class = "__parent red" data - action = "open" data - target = "lbrycrd" > Blockchain < / l i >
< li class = "__parent blue" data - action = "open" data - target = "lbry" > Data Network < / l i >
< li class = "__close" data - action = "close" > & times ; < / l i >
< / u l >
< / d i v >
< / d i v >
` ;
this . subModuleWallet = html `
< div class = "ecosystem__submodule wallet" >
< h3 class = "ecosystem__submodule__title" data - action = "openSubmodule" data - target = "wallet" > wallet server < / h 3 >
< div class = "ecosystem__submodule__description" >
< h4 class = "ecosystem__submodule__description__title" > Overview < / h 4 >
< p > The LBRY app is a graphical browser for the decentralized content marketplace provided by the < a href = "https://lbry.io" title = "" > LBRY < /a> protocol. It is essentially the <a href="https:/ / github . com / lbryio / lbry " title=" ">lbry daemon</a> bundled with an UI using <a href=" http : //electron.atom.io" title="">Electron</a>.</p>
< h4 class = "ecosystem__submodule__description__title __connection" > Connection to ... < / h 4 >
< p class = "__connection-details" > < / p >
< h4 class = "ecosystem__submodule__description__title" > Source < / h 4 >
< ul >
2018-07-12 23:30:26 +02:00
< li > < a href = "https://github.com/lbryio/lbry-desktop" title = "lbry-desktop source code" > https : //github.com/lbryio/lbry-desktop</a></li>
2018-07-12 17:21:42 +02:00
< / u l >
< ul class = "__parents" >
< li class = "__parent green" data - action = "open" data - target = "applications" > Applications < / l i >
< li class = "__parent red" data - action = "open" data - target = "lbrycrd" > Blockchain < / l i >
< li class = "__parent blue" data - action = "open" data - target = "lbry" > Data Network < / l i >
< li class = "__close" data - action = "close" > & times ; < / l i >
< / u l >
< / d i v >
< / d i v >
` ;
this . subModuleLighthouse = html `
< div class = "ecosystem__submodule lighthouse" >
< h3 class = "ecosystem__submodule__title" data - action = "openSubmodule" data - target = "lighthouse" > lighthouse < / h 3 >
< div class = "ecosystem__submodule__description" >
< h4 class = "ecosystem__submodule__description__title" > Overview < / h 4 >
< 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 ... < / h 4 >
< p class = "__connection-details" > < / p >
< h4 class = "ecosystem__submodule__description__title" > Source < / h 4 >
< ul >
< li > < a href = "https://github.com/lbryio/lighthouse" title = "lighthouse source code" > https : //github.com/lbryio/lighthouse</a></li>
< / u l >
< ul class = "__parents" >
< li class = "__parent green" data - action = "open" data - target = "applications" > Applications < / l i >
< li class = "__parent red" data - action = "open" data - target = "lbrycrd" > Blockchain < / l i >
< li class = "__parent blue" data - action = "open" data - target = "lbry" > Data Network < / l i >
< li class = "__close" data - action = "close" > & times ; < / l i >
< / u l >
< / d i v >
< / d i v >
` ;
this . subModuleReflector = html `
< div class = "ecosystem__submodule reflector" >
< h3 class = "ecosystem__submodule__title" data - action = "openSubmodule" data - target = "reflector" > reflector < / h 3 >
< div class = "ecosystem__submodule__description" >
< h4 class = "ecosystem__submodule__description__title" > Overview < / h 4 >
< 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 ... < / h 4 >
< p class = "__connection-details" > < / p >
< h4 class = "ecosystem__submodule__description__title" > Source < / h 4 >
< ul >
< li > < a href = "https://github.com/lbryio/reflector.go" title = "reflector source code" > https : //github.com/lbryio/reflector.go</a></li>
< / u l >
< ul class = "__parents" >
< li class = "__parent green" data - action = "open" data - target = "applications" > Applications < / l i >
< li class = "__parent red" data - action = "open" data - target = "lbrycrd" > Blockchain < / l i >
< li class = "__parent blue" data - action = "open" data - target = "lbry" > Data Network < / l i >
< li class = "__close" data - action = "close" > & times ; < / l i >
< / u l >
< / d i v >
< / d i v >
` ;
this . moduleLbrycrd = html `
< div class = "ecosystem__module lbrycrd" >
< span class = "__close" data - action = "close" > & times ; < / s p a n >
< h2 class = "__title" >
< span data - action = "open" data - target = "lbrycrd" >
Blockchain
2018-07-26 00:04:21 +02:00
< em > The foundation of the LBRY protocol < / e m >
2018-07-12 17:21:42 +02:00
< / s p a n >
< div >
2018-07-26 00:04:21 +02:00
< span > < a href = "https://github.com/lbryio/lbrycrd" title = "lbrycrd repo" > lbrycrd < / a > < / s p a n >
2018-07-12 17:21:42 +02:00
< / d i v >
< / h 2 >
< div class = "ecosystem__module__details" >
2018-07-26 00:04:21 +02:00
< p > < em > 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 ] < / e m > < / p >
2018-07-12 17:21:42 +02:00
2018-07-26 00:04:21 +02:00
< p > The LBRY blockchain is a public , proof - of - work of work blockchain consensus . It is the foundation of the protocol stack . < / p >
2018-07-12 17:21:42 +02:00
2018-07-27 00:18:26 +02:00
< p > The most salient feature of the LBRY blockchain is the association of a normalized character string with up to 8 KB of metadata . This string of characters forms a LBRY URL , e . g . < a class = "__plain" href = "/tour?url=hellolbry" > < code > lbry : //hellolbry</code></a></p>
2018-07-12 17:21:42 +02:00
2018-07-26 00:04:21 +02:00
< p > The LBRY blockchain contains two parallel [ [ Merkle Tree ] ] s , one for transactions ( ala Bitcoin ) and one for storing LBRY URLs and metadata . This allows LBRY URLs to be trustfully resolved even without a full copy of the blockchain . < / p >
2018-07-12 17:21:42 +02:00
< p > Conventionally , this metadata contains information about the content , such as the title and creator , the price ( if any ) , and a unique signature allowing the actual content to be fetched from the data network , the next level in the LBRY stack . < / p >
< h3 > Additional Resources < / h 3 >
< ul >
2018-07-26 00:04:21 +02:00
< li > See the [ [ Whitepaper ] ] for a more comprehensive introduction to the LBRY blockchain . < / l i >
< li > See the [ [ Resources ] ] for documentation about the LBRY blockchain , including its API . < / l i >
2018-07-12 17:21:42 +02:00
< li > See [ [ Naming ] ] for learning more about LBRY URLs and how they work . < / l i >
< li > See [ [ Identities ] ] for learning how the LBRY blockchain handles publisher identities . < / l i >
< / u l >
< / d i v >
< / d i v >
` ;
this . moduleLbry = html `
< div class = "ecosystem__module lbry" >
< span class = "__close" data - action = "close" > & times ; < / s p a n >
< h2 class = "__title" >
< span data - action = "open" data - target = "lbry" >
Data Network
2018-07-26 00:04:21 +02:00
< em > The "nuts and bolts" ( fix this ) of the LBRY protocol < / e m >
2018-07-12 17:21:42 +02:00
< / s p a n >
< div >
2018-07-26 00:04:21 +02:00
< span > < a href = "https://github.com/lbryio/lbry" title = "lbry repo" > lbry < / a > < / s p a n >
< span > < a href = "https://github.com/lbryio/lbryschema" title = "lbryschema repo" > lbryschema < / a > < / s p a n >
< span > < a href = "https://github.com/lbryio/torba" title = "torba repo" > torba < / a > < / s p a n >
2018-07-12 17:21:42 +02:00
< / d i v >
< / h 2 >
< div class = "ecosystem__module__details" >
2018-07-26 00:04:21 +02:00
< p > While blockchain is the innovation that makes LBRY possible , the Data Network is the layer that actually makes the blockchain < em > useful < / e m > . < / p >
< p > The primary component for this level is < a href = "https://github.com/lbryio/lbry" > lbry < / a > , a d a e m o n t h a t : < / p >
2018-07-12 17:21:42 +02:00
< ul >
2018-07-26 00:04:21 +02:00
< li > Interprets and validates metadata in the LBRY blockchain via [ lbryschema ] . < / l i >
< li > Accesses and distributes the data referenced by metadata in the LBRY blockchain via a peer - to - peer network . < / l i >
< li > Provides wallet functionality via an [ [ SPV ] ] wallet ( [ torba ] ) . < / l i >
< li > Facilitates building applications by being easily bundable and providing a simple , clean < a href = "https://lbry.io/api" > API < / a > f o r t h e L B R Y p r o t o c o l . < / l i >
2018-07-12 17:21:42 +02:00
< / u l >
2018-07-26 00:04:21 +02:00
< 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 >
2018-07-12 17:21:42 +02:00
< h3 > Additional Resources < / h 3 >
< ul >
2018-07-26 00:04:21 +02:00
< li > See the [ [ Whitepaper ] ] for a more comprehensive introduction to the LBRY data network . < / l i >
< li > See [ [ Resources ] ] for documentation of the LBRY APIs . < / l i >
< li > See [ [ Whatever ] ] for learning more about LBRY distributes data . < / l i >
< li > See [ [ Build ] ] for learning how to use the daemon to solve your own problem or build your own app ! < / l i >
2018-07-12 17:21:42 +02:00
< / u l >
< / d i v >
< / d i v >
` ;
this . moduleApplications = html `
< div class = "ecosystem__module applications" >
< span class = "__close" data - action = "close" > & times ; < / s p a n >
< h2 class = "__title" >
< span data - action = "open" data - target = "applications" >
Applications
2018-07-26 00:04:21 +02:00
< em > Browsers , spee . ch , and ∞ < / e m >
2018-07-12 17:21:42 +02:00
< / s p a n >
< div >
2018-07-26 00:04:21 +02:00
< span > < a href = "https://github.com/lbryio/lbry-android" title = "Android app repo" > android < / a > < / s p a n >
< span > < a href = "https://github.com/lbryio/lbry-desktop" title = "Desktop app repo" > desktop < / a > < / s p a n >
< span > < a href = "https://github.com/lbryio/spee.ch" title = "spee.ch repo" > spee . ch < / a > < / s p a n >
2018-07-12 17:21:42 +02:00
< / d i v >
< / h 2 >
< div class = "ecosystem__module__details" >
2018-07-26 00:04:21 +02:00
< 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 >
2018-07-12 17:21:42 +02:00
< ul >
2018-07-26 00:04:21 +02:00
< li > < a href = "https://github.com/lbryio/lbry-desktop" > lbry - desktop < / a > , a d e s k t o p b r o w s e r f o r t h e L B R Y n e t w o r k b a s e d i n R e a c t a n d E l e c t r o n . < / l i >
< li > < a href = "https://github.com/lbryio/lbry-android" > lbry - android < / a > , a n A n d r o i d b r o w s e r f o r t h e L B R Y n e t w o r k i n R e a c t N a t i v e . < / l i >
< li > < a href = "https://github.com/lbryio/spee.ch" > spee . ch < / a > , a w e b - b a s e d v i e w e r a n d l i n k d u m p f o r f r e e L B R Y c o n t e n t . < / l i >
2018-07-12 17:21:42 +02:00
< / u l >
2018-07-26 00:04:21 +02:00
< 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 >
2018-07-12 17:21:42 +02:00
< h3 > Additional Resources < / h 3 >
< ul >
2018-07-26 00:04:21 +02:00
< li > See [ [ Contribute ] ] for learning how to contribute to existing LBRY apps . < / l i >
< li > See [ [ Something ] ] for how to set up your own custom instance of spee . ch . < / l i >
< li > See [ [ Build ] ] for learning how to build your own app ! < / l i >
2018-07-12 17:21:42 +02:00
< / u l >
< / d i v >
< / d i v >
` ;
}
createElement ( ) {
return dedent `
< section class = "ecosystem" >
< aside class = "ecosystem__submodules" >
$ { this . subModuleChainquery }
$ { this . subModuleWallet }
< / a s i d e >
< section class = "ecosystem__modules" >
$ { this . moduleLbrycrd }
$ { this . moduleLbry }
$ { this . moduleApplications }
< / s e c t i o n >
< aside class = "ecosystem__submodules" >
$ { this . subModuleLighthouse }
$ { this . subModuleReflector }
< / a s i d e >
< / s e c t i o n >
` ;
}
load ( ) {
}
unload ( ) {
}
update ( ) {
return false ;
}
} ;