mirror of
https://github.com/LBRYFoundation/lbry.com.git
synced 2025-08-23 17:47:26 +00:00
blog footer, refactor to view partials, remove old content
This commit is contained in:
parent
d17e067702
commit
d4095ca5aa
36 changed files with 178 additions and 546 deletions
|
@ -7,6 +7,11 @@
|
|||
*/
|
||||
class Actions
|
||||
{
|
||||
public static function param($key, $default = null)
|
||||
{
|
||||
return isset($_POST[$key]) ? $_POST[$key] : (isset($_GET[$key]) ? $_GET[$key] : $default);
|
||||
}
|
||||
|
||||
//this is dumb
|
||||
protected static function returnError($error)
|
||||
{
|
||||
|
|
|
@ -75,7 +75,10 @@ class Controller
|
|||
case '/dl/lbry_setup.sh':
|
||||
return static::redirect('/get', 301);
|
||||
case '/art':
|
||||
return static::redirect('/what');
|
||||
return static::redirect('/what', 301);
|
||||
case '/why':
|
||||
case '/feedback':
|
||||
return static::redirect('/learn', 301);
|
||||
}
|
||||
|
||||
$newsPattern = '#^' . ContentActions::URL_NEWS . '(/|$)#';
|
||||
|
|
|
@ -66,8 +66,8 @@ class DownloadActions extends Actions
|
|||
|
||||
public static function executeSignup()
|
||||
{
|
||||
$email = isset($_GET['email']) ? $_GET['email'] : (isset($_POST['email']) ? $_POST['email'] : null);
|
||||
$code = isset($_GET['code']) ? $_GET['code'] : (isset($_POST['code']) ? $_POST['code'] : null);
|
||||
$email = static::param('email');
|
||||
$code = static::param('code');
|
||||
|
||||
if (!$email || !filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||
{
|
||||
|
@ -123,6 +123,14 @@ class DownloadActions extends Actions
|
|||
];
|
||||
}
|
||||
|
||||
public static function prepareSignupPartial(array $vars)
|
||||
{
|
||||
return $vars + [
|
||||
'allowInviteCode' => true,
|
||||
'referralCode' => static::param('r', '')
|
||||
];
|
||||
}
|
||||
|
||||
public static function subscribeToPrefinery($email, $inviteCode = null, $referrerId = null)
|
||||
{
|
||||
$apiKey = Config::get('prefinery_key');
|
||||
|
|
|
@ -59,7 +59,7 @@ class MailActions extends Actions
|
|||
return true;
|
||||
}
|
||||
|
||||
public static function prepareJoinList(array $vars)
|
||||
public static function prepareJoinListPartial(array $vars)
|
||||
{
|
||||
$vars['listSig'] = md5(serialize($vars));
|
||||
$vars += ['btnClass' => 'btn-primary', 'returnUrl' => $_SERVER['REQUEST_URI']];
|
||||
|
|
|
@ -19,9 +19,16 @@ class NavActions extends Actions
|
|||
return static::$navUri ?: $_SERVER['REQUEST_URI'];
|
||||
}
|
||||
|
||||
public static function prepareGlobalItems(array $vars)
|
||||
public static function prepareGlobalItemsPartial(array $vars)
|
||||
{
|
||||
$vars += ['selectedItem' => static::getNavUri()];
|
||||
return $vars;
|
||||
}
|
||||
|
||||
public static function prepareLearnFooterPartial(array $vars)
|
||||
{
|
||||
return $vars + [
|
||||
'isDark' => true
|
||||
];
|
||||
}
|
||||
}
|
|
@ -4,11 +4,11 @@ title: 'History Is Made - First Public Film Screenings via Blockchain at PorcFes
|
|||
date: '2016-06-30 00:09:00'
|
||||
---
|
||||
|
||||
Yes, the rumors are true. Last week, a major independent Hollywood film was publicly screened via blockchain – for the first time in history!
|
||||
Yes, the rumors are true. Last week, a major independent Hollywood film was publicly screened via blockchain – for the first time in history!
|
||||
|
||||
LBRY took its blockchain out for a test run at [PorcFest XIII](http://porcfest.com/), and we’re delighted to announce it was a resounding success. Even more so because the screening also marked the private reveal of our new and very exciting media partner, the most well-regarded independent film company out there.
|
||||
LBRY took its blockchain out for a test run at [PorcFest XIII](http://porcfest.com/), and we’re delighted to announce it was a resounding success. Even more so because the screening also marked the private reveal of our new and very exciting media partner, the most well-regarded independent film company out there.
|
||||
|
||||
The majority of the [LBRY team](https://lbry.io/team) attended PorcFest, which was the perfect event to spread the word of our platform.
|
||||
The majority of the [LBRY team](https://lbry.io/team) attended PorcFest, which was the perfect event to spread the word of our platform.
|
||||
|
||||

|
||||
|
||||
|
@ -22,26 +22,11 @@ In addition to the screening, Jeremy delivered a well-attended talk entitled,
|
|||
|
||||
Want to know more about the excellent films having their blockchain premiere on LBRY? Well, join our mailing list with the form below and keep an eye on your inbox this holiday weekend for a BIG announcement. Got your fireworks ready?
|
||||
|
||||
If the suspense is killing you, then go ahead and start mining LBRY credits (LBC) today! Our blockchain is live and LBC can be mined right now via CPU. [Learn more here](https://lbry.io/news/lbry-blockchain-live-mine-lbc-now).
|
||||
If the suspense is killing you, then go ahead and start mining LBRY credits (LBC) today! Our blockchain is live and LBC can be mined right now via CPU. [Learn more here](https://lbry.io/news/lbry-blockchain-live-mine-lbc-now).
|
||||
|
||||
**PorcFest Media Mentions:**
|
||||
|
||||
Look at that! We received our first international coverage thanks to our appearance at PorcFest.
|
||||
|
||||
* [Au festival des libertariens: revolvers, bitcoins et blockchain](http://rue89.nouvelobs.com/2016/06/27/festival-libertariens-revolvers-bitcoins-blockchains-264478), *L'Obs*, June 27th
|
||||
* [Technology and Choice #08, Porcfest Potpourri](https://letstalkbitcoin.com/blog/post/technology-and-choice-08-porcfest-potpourri), *Let's Talk Bitcoin*, June 29th
|
||||
|
||||
**Join LBRY's Mailing List:**
|
||||
|
||||
<form action="/list-subscribe" method="post" novalidate>
|
||||
<div class="mail-submit">
|
||||
<input type="hidden" name="returnUrl" value="/"/>
|
||||
<input type="hidden" name="listId" value="7b74c90030"/>
|
||||
<input type="hidden" name="listSig" value="690df09388021bf1698897f4adbdf3c2"/>
|
||||
<input type="email" value="" name="email" class="required email standard" placeholder="someone@somewhere.com">
|
||||
<input type="submit" value="Go" name="subscribe" id="mc-embedded-subscribe" class="btn-alt">
|
||||
<input type="hidden" name="mergeFields" value="a:1:{s:3:"CLI";s:2:"No";}" />
|
||||
<div class="meta">
|
||||
You will receive 1-2 messages a month, only from LBRY, Inc. and only about LBRY. You can easily unsubscribe at any time. </div>
|
||||
</div>
|
||||
</form>
|
||||
* [Technology and Choice #08, Porcfest Potpourri](https://letstalkbitcoin.com/blog/post/technology-and-choice-08-porcfest-potpourri), *Let's Talk Bitcoin*, June 29th
|
|
@ -12,7 +12,7 @@ date: '2016-07-04 00:00:01'
|
|||
|
||||
**LBRY is proud to continue this tradition by announcing the beta release of our LBRY app and live blockchain this July 4th.** This time, the old order is Big Media – the major record labels, book publishers, and movie studios that have managed to cling to their fiefdoms despite the potential of the internet to connect independent artists directly to their fans.
|
||||
|
||||
It’s expensive to store and serve a bunch of content, so the market is dominated by the likes of Google’s Youtube, Apple’s iTunes, and Amazon’s Kindle Store. By combining several new open-source technologies and key innovations, LBRY is able to cut out the middlemen. The result is a platform that no one controls but everyone can access – just like the internet itself.
|
||||
It’s expensive to store and serve a bunch of content, so the market is dominated by the likes of Google’s Youtube, Apple’s iTunes, and Amazon’s Kindle Store. By combining several new open-source technologies and key innovations, LBRY is able to cut out the middlemen. The result is a platform that no one controls but everyone can access – just like the internet itself.
|
||||
|
||||
With LBRY, content creators – be they filmmakers, musicians, writers, or software developers – are empowered to set their own price and release their works to the world with a few clicks of the mouse. There are no ads, no corporate censors, and LBRY takes no portion of your income. For consumers, it means there is finally an alternative to the big media stores and the murky world of BitTorrent – which doesn’t have a payment system and therefore is run on goodwill.
|
||||
|
||||
|
@ -20,14 +20,14 @@ The LBRY app we're releasing today is the first of its kind – a media marketpl
|
|||
|
||||
Indie production houses have seen the potential in LBRY. **[Oscilloscope Laboratories](http://www.oscilloscope.net/) and [Emergent Order](http://emergentorder.com/) signed on as featured content partners for today’s launch.** So right from the start, beta users will be treated to the following premium films:
|
||||
|
||||
**<p style="text-align: center;">It’s A Disaster</p>**
|
||||
**<p style="text-align: center;">It’s A Disaster</p>**
|
||||
*<p style="text-align: center;">lbry://itsadisaster</p>*
|
||||
|
||||

|
||||
|
||||
*The sleeper hit dark comedy, starring David Cross and Julia Stiles, about four couples gathering for a regular brunch when they receive news of a disaster just outside the door. The film is considered a model of indie success.*
|
||||
|
||||
**<p style="text-align: center;">Fight of the Century: Keynes vs. Hayek Rap Battle</p>**
|
||||
**<p style="text-align: center;">Fight of the Century: Keynes vs. Hayek Rap Battle</p>**
|
||||
*<p style="text-align: center;">lbry://keynesvhayek</p>*
|
||||
|
||||

|
||||
|
@ -44,29 +44,6 @@ In addition to watching these films and other pieces already uploaded to LBRY, t
|
|||
|
||||
LBRY is a key component of Web 3.0, a new internet infrastructure that is secure, open-source, and natively decentralized. The company is self-financed and has assembled a [stellar team](https://lbry.io/team) of creatives and technologists.
|
||||
|
||||
**Stay Up-to-Date on LBRY Developments**
|
||||
|
||||
* [Like us on Facebook](https://www.facebook.com/lbryio)
|
||||
* [Follow us on Twitter](https://twitter.com/lbryio)
|
||||
* [Join us on Reddit](https://www.reddit.com/r/lbry)
|
||||
* [Collaborate on Slack](http://slack.lbry.io/)
|
||||
|
||||
**Join LBRY's Mailing List:**
|
||||
|
||||
<form action="/list-subscribe" method="post" novalidate>
|
||||
<div class="mail-submit">
|
||||
<input type="hidden" name="returnUrl" value="/"/>
|
||||
<input type="hidden" name="listId" value="7b74c90030"/>
|
||||
<input type="hidden" name="listSig" value="690df09388021bf1698897f4adbdf3c2"/>
|
||||
<input type="email" value="" name="email" class="required email standard" placeholder="someone@somewhere.com">
|
||||
<input type="submit" value="Go" name="subscribe" id="mc-embedded-subscribe" class="btn-alt">
|
||||
<input type="hidden" name="mergeFields" value="a:1:{s:3:"CLI";s:2:"No";}" />
|
||||
<div class="meta">
|
||||
You will receive 1-2 messages a month, only from LBRY, Inc. and only about LBRY. You can easily unsubscribe at any time. </div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?php Response::setMetaDescription('Frequently asked questions about LBRY.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<section class="content content-readable spacer2">
|
||||
<h1>Frequently Asked Questions</h1>
|
||||
|
@ -13,4 +13,4 @@
|
|||
<?php endforeach ?>
|
||||
</section>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?php Response::setMetaDescription('Access information and content in ways you never dreamed possible. Earn credits for your unused bandwidth and diskspace.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="hero hero-quote hero-img spacer2" style="background-image: url(/img/cover-team.jpg)">
|
||||
<div class="hero-content-wrapper">
|
||||
|
@ -21,4 +21,4 @@
|
|||
<?php endforeach ?>
|
||||
</section>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php Response::setMetaDescription($post->getTitle()) ?>
|
||||
<?php Response::addMetaImages($post->getImageUrls()) ?>
|
||||
<?php NavActions::setNavUri('/news') ?>
|
||||
<?php echo View::render('nav/header') ?>
|
||||
<?php echo View::render('nav/_header') ?>
|
||||
<main>
|
||||
<header class="post-header <?php echo $post->getCover() ? 'with-cover' : ('no-cover'.$post->getCoverBackgroundStyle(4)) ?>"
|
||||
<?php echo $post->getCover() ? 'style="background-image: url(\'/img/blog-covers/' . $post->getCover() . '\')"' : ''?>
|
||||
|
@ -18,18 +18,45 @@
|
|||
</div>
|
||||
</header>
|
||||
|
||||
<div class="post-content">
|
||||
<section class="content spacer2">
|
||||
<section class="post-content">
|
||||
<div class="content">
|
||||
<?php echo $post->getContentHtml() ?>
|
||||
</section>
|
||||
<?php if($post->hasPrevNext()): ?>
|
||||
<?php echo View::render('content/_postNav', ['post' => $post]) ?>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php echo View::render('nav/_learnFooter', ['isDark' => false]) ?>
|
||||
|
||||
<?php if ($post->hasAuthor()): ?>
|
||||
<?php echo View::render('content/_postAuthor', ['post' => $post]) ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?php /*
|
||||
<nav class="content prev-next row-fluid">
|
||||
<div class="prev span6">
|
||||
<?php if ($prevPost = $post->getPrevPost()): ?>
|
||||
<div class="prev-next-label">
|
||||
<a href="/<?php echo $prevPost->getRelativeUrl() ?>" class="link-primary">‹ Previous</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<a href="/<?php echo $prevPost->getRelativeUrl() ?>">
|
||||
<?php echo htmlentities($prevPost->getTitle()) ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<div class="next span6">
|
||||
<?php if ($nextPost = $post->getNextPost()): ?>
|
||||
<div class="prev-next-label">
|
||||
<a href="/<?php echo $nextPost->getRelativeUrl() ?>" class="link-primary">Next ›</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<a class="prev-next-title" href="/<?php echo $nextPost->getRelativeUrl() ?>">
|
||||
<?php echo htmlentities($nextPost->getTitle()) ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</nav> */ ?>
|
||||
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
63
view/template/download/_signup.php
Normal file
63
view/template/download/_signup.php
Normal file
|
@ -0,0 +1,63 @@
|
|||
<form method="POST" action="/signup" id="signup-form" class="hide">
|
||||
<div class="hide">
|
||||
<input type="hidden" name="referrer_id" value="<?php echo $referralCode ?>" />
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="email">
|
||||
<?php echo __('Email') ?>
|
||||
</label>
|
||||
<div class="form-input">
|
||||
<input type="text" value="" name="email" class="required standard" placeholder="someone@somewhere.com">
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($allowInviteCode): ?>
|
||||
<div class="form-row">
|
||||
<label for="code_select">
|
||||
<?php echo __('Invite Code') ?>
|
||||
</label>
|
||||
<div class="form-input">
|
||||
<label class="label-radio">
|
||||
<input name="code_select" type="radio" value="" />
|
||||
None, but I want in as soon as possible!
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-input">
|
||||
<label class="label-radio">
|
||||
<input name="code_select" type="radio" value="yes" />
|
||||
Yes
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-input has-code">
|
||||
<input type="text" value="" name="code" class="required standard" placeholder="abc123">
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="hide"><input name="code_select" type="radio" checked="checked" /></div>
|
||||
<?php endif ?>
|
||||
<div class="invite-submit has-code">
|
||||
<input type="submit" value="Access LBRY" name="subscribe" class="btn-alt">
|
||||
</div>
|
||||
<div class="invite-submit no-code">
|
||||
<input type="submit" value="Join List" name="subscribe" class="btn-alt">
|
||||
</div>
|
||||
</form>
|
||||
<?php js_start() ?>
|
||||
(function(){
|
||||
var form = $('#signup-form'),
|
||||
codeRadioInputs = form.find('input[name="code_select"]');
|
||||
codeRadioInputs.change(function() {
|
||||
var selectedInput = codeRadioInputs.filter(':checked'),
|
||||
hasChoice = selectedInput.length,
|
||||
hasCode = selectedInput.val() == 'yes';
|
||||
|
||||
form.find('.has-code')[hasChoice && hasCode ? 'show' : 'hide']();
|
||||
form.find('.no-code')[hasChoice && !hasCode ? 'show' : 'hide']();
|
||||
if (!hasCode)
|
||||
{
|
||||
form.find('input[name="code"]').val('');
|
||||
}
|
||||
}).change();
|
||||
|
||||
form.show();
|
||||
})();
|
||||
<?php js_end() ?>
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaDescription('Download or install the latest version of LBRY.') ?>
|
||||
<?php Response::setMetaTitle(__('Get LBRY')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main class="column-fluid">
|
||||
<div class="span6">
|
||||
<?php echo View::render('download/_list', [
|
||||
|
@ -13,4 +13,4 @@
|
|||
]) ?>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaDescription(__('Download/install the latest version of LBRY.')) ?>
|
||||
<?php NavActions::setNavUri('/get') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
|
||||
<main class="column-fluid">
|
||||
<div class="span7">
|
||||
|
@ -19,66 +19,7 @@
|
|||
<?php endif ?>
|
||||
|
||||
<p>LBRY is currently in invite only mode. Enter your email to join the waitlist, or your email and invite code for access.</p>
|
||||
<form method="POST" action="/signup" id="signup-form" class="hide">
|
||||
<div class="hide">
|
||||
<input type="hidden" name="referrer_id" value="<?php echo $_GET['r'] ?: $_POST['r'] ?>" />
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="email">
|
||||
<?php echo __('Email') ?>
|
||||
</label>
|
||||
<div class="form-input">
|
||||
<input type="text" value="" name="email" class="required standard" placeholder="someone@somewhere.com">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="code_select">
|
||||
<?php echo __('Invite Code') ?>
|
||||
</label>
|
||||
<div class="form-input">
|
||||
<label class="label-radio">
|
||||
<input name="code_select" type="radio" value="" />
|
||||
None, but I want in as soon as possible!
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-input">
|
||||
<label class="label-radio">
|
||||
<input name="code_select" type="radio" value="yes" />
|
||||
Yes
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-input has-code">
|
||||
<input type="text" value="" name="code" class="required standard" placeholder="abc123">
|
||||
</div>
|
||||
</div>
|
||||
<div class="invite-submit has-code">
|
||||
<input type="submit" value="Access LBRY" name="subscribe" class="btn-alt">
|
||||
</div>
|
||||
<div class="invite-submit no-code">
|
||||
<input type="submit" value="Join List" name="subscribe" class="btn-alt">
|
||||
</div>
|
||||
</form>
|
||||
<?php js_start() ?>
|
||||
(function(){
|
||||
var form = $('#signup-form'),
|
||||
codeRadioInputs = form.find('input[name="code_select"]');
|
||||
codeRadioInputs.change(function() {
|
||||
var selectedInput = codeRadioInputs.filter(':checked'),
|
||||
choice = selectedInput.val(),
|
||||
hasChoice = selectedInput.length,
|
||||
hasCode = choice == 'yes';
|
||||
|
||||
form.find('.has-code')[hasChoice && hasCode ? 'show' : 'hide']();
|
||||
form.find('.no-code')[hasChoice && !hasCode ? 'show' : 'hide']();
|
||||
if (!hasCode)
|
||||
{
|
||||
form.find('input[name="code"]').val('');
|
||||
}
|
||||
}).change();
|
||||
|
||||
form.show();
|
||||
})();
|
||||
<?php js_end() ?>
|
||||
<?php echo View::render('download/_signup') ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span5">
|
||||
|
@ -86,4 +27,4 @@
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaDescription(__('Download/install the latest version of LBRY for %os%.', ['%os%' => $osTitle])) ?>
|
||||
<?php NavActions::setNavUri('/get') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
|
||||
<main class="column-fluid">
|
||||
<div class="span7">
|
||||
|
@ -30,4 +30,4 @@
|
|||
</div>
|
||||
</main>
|
||||
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaTitle(__('Fund LBRY')) ?>
|
||||
<?php Response::setMetaDescription('Contribute to the future of LBRY and buy credits for the LBRY network at pre-release prices.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="cover cover-dark cover-dark-grad">
|
||||
<div class="row-fluid">
|
||||
|
@ -190,4 +190,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<div class="control-item">
|
||||
<a href="/"><?php echo __('Home') ?></a>
|
||||
</div>
|
||||
<?php echo View::render('nav/globalItems') ?>
|
||||
<?php echo View::render('nav/_globalItems') ?>
|
||||
<div class="control-item">
|
||||
<a href="//en.wikipedia.org/wiki/AACS_encryption_key_controversy" class="footer-img-link">
|
||||
<img src="/img/Free-speech-flag.svg" alt="Free Speech Flag" height="30"/>
|
|
@ -21,7 +21,7 @@
|
|||
</div>
|
||||
<div class="fullscreen header-navigation-fullscreen">
|
||||
<nav class="control-group">
|
||||
<?php echo View::render('nav/globalItems') ?>
|
||||
<?php echo View::render('nav/_globalItems') ?>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
|
@ -1,21 +1,12 @@
|
|||
<div class="cover cover-dark cover-dark-grad ">
|
||||
<div class="content content-dark">
|
||||
<div class="cover <?php echo $isDark ? 'cover-dark cover-dark-grad' : 'cover-light-alt cover-light-alt-grad' ?> ">
|
||||
<div class="content <?php echo $isDark ? 'content-dark' : 'content-light' ?>">
|
||||
<div class="row-fluid">
|
||||
<div class="span6">
|
||||
<h3><?php echo __('Sounds Great. What\'s Next?') ?></h3>
|
||||
<h3><?php echo __('What\'s Next?') ?></h3>
|
||||
<table class="table-layout">
|
||||
<?php /*
|
||||
<tr>
|
||||
<td>
|
||||
<a href="/fund" class="btn-alt btn-full-width"><?php echo __('Buy') ?></a>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo __('Pre-buy credits and support LBRY.') ?>
|
||||
</td>
|
||||
</tr>*/ ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="/get" class="btn-alt btn-full-width"><?php echo __('Try LBRY') ?></a>
|
||||
<a href="/get" class="<?php echo $isDark ? 'btn-alt' : 'btn-primary' ?> btn-full-width"><?php echo __('Get LBRY') ?></a>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo __('Experience digital abundance.') ?>
|
||||
|
@ -30,7 +21,7 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="span6">
|
||||
<h3><?php echo __('I Want To Know More') ?></h3>
|
||||
<h3><?php echo __('Keep Learning') ?></h3>
|
||||
<ul>
|
||||
<?php if ($_SERVER['REQUEST_URI'] != '/what'): ?>
|
||||
<li>Read "<a href="/what" class="link-primary">Art in the Internet Age</a>", an introductory essay.</li>
|
||||
|
@ -38,7 +29,7 @@
|
|||
<?php if ($_SERVER['REQUEST_URI'] != '/team'): ?>
|
||||
<li>Find out about <a href="/team" class="link-primary">the team behind LBRY</a>.</li>
|
||||
<?php endif ?>
|
||||
<?php if ($_SERVER['REQUEST_URI'] != '/news'): ?>
|
||||
<?php if (strpos($_SERVER['REQUEST_URI'], '/news') === false): ?>
|
||||
<li>Check out the latest <a href="/news" class="link-primary">news</a>.</li>
|
||||
<?php endif ?>
|
||||
</ul>
|
|
@ -1,4 +1,4 @@
|
|||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="content">
|
||||
<h1>Page Not Found</h1>
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
<?php Response::setMetaDescription('Documentation on LBRY, a decentralized content distribution network.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="content">
|
||||
<h1>Docs</h1>
|
||||
<h3>Layer 1: Protocol</h3>
|
||||
<p>While the protocol is one comprehensive set of rules, it is easier to understand as two parts.</p>
|
||||
<h4>Part A: The LBRY Blockchain</h4>
|
||||
<p>A <em>blockchain</em>, or <em>distributed ledger</em> is the key innovation behind the Bitcoin network. Blockchains solved the very complicated technological problem of having a bunch of distributed, disparate entities all agree on a rivalrous state of affairs (like how much money they owe each other).</p>
|
||||
|
||||
<p>Like Bitcoin, the LBRY blockchain maintain balances -- in this case, balances of <em>LBC</em>, LBRY’s unit of credit. More importantly, the LBRY blockchain also provides a decentralized lookup and metadata storage system. The LBRY blockchain supports a specific set of commands that allows anyone to bid (in LBC) to control a LBRY <em>name</em>, which is a lot like a domain name. Whoever controls a name gets to describe what it contains, what it costs to access, who to pay, and where to find it. These names are sold in a continuous running auction. We will talk more about this system a little later on.</p>
|
||||
|
||||
<p>If you’re a programmer, you might recognize the LBRY blockchain as a <em>key-value store</em>. Each key, or name, corresponds to a value, or a metadata entry. Whichever party or parties bid the most LBC gets to control the metadata returned by a key lookup.</p>
|
||||
|
||||
<p>Here is a sample key-value entry in the LBRY blockchain. Here, wonderfullife is the key, and the rest of the description is the value.</p>
|
||||
<div class="code-bash">
|
||||
<code><pre style="white-space: pre-wrap;">
|
||||
<span class="code-bash-kw1">wonderfullife</span> : {
|
||||
<span class="code-bash-kw2">title</span>: "It’s a Wonderful Life",
|
||||
<span class="code-bash-kw2">description</span>: "An angel helps a compassionate but despairingly frustrated businessman by showing what life would have been like if he never existed.",
|
||||
<span class="code-bash-kw2">thumbnail</span>: "http://i.imgur.com/MW45x88.jpg",
|
||||
<span class="code-bash-kw2">license</span>: "public domain",
|
||||
<span class="code-bash-kw2">price</span>: 0, <span class="code-bash-comment">//free!</span>
|
||||
<span class="code-bash-kw2">publisher</span>: "A Fan Of George Bailey", <span class="code-bash-comment">//simplification</span>
|
||||
<span class="code-bash-kw2">sources</span>: { <span class="code-bash-comment">//extensible, variable list</span>
|
||||
<span class="code-bash-kw2">lbry_hash</span> : <unique id>,
|
||||
<span class="code-bash-kw2">url</span> : <url>
|
||||
}
|
||||
}</pre></code>
|
||||
</div>
|
||||
<div class="meta text-center content-inset"><p>A slightly simplified sample entry of metadata in the LBRY blockchain. Whichever party or parties bid the most in an ongoing auction control what a name returns.</p></div>
|
||||
|
||||
<p>Other than the usage of the LBRY blockchain to store names and metadata, there are only minor differences between the blockchains of LBRY and Bitcoin, and the changes are generally consensus improvements. We’ve buffed the hashing algorithm, smoothed the block reward function, increased the block size, increased the total number of credits, and prepared for offchain settlement.</p>
|
||||
|
||||
<p>The LBRY blockchain simply maintains LBC balances and a content namespace/catalogue. The next part, LBRYnet, specifies what to do with this data. To compare to the existing web, the blockchain is like the domain system (it maintains a listing of what is available), while the next piece makes it possible to actually fetch and pay for content.</p>
|
||||
<footer> If you’re a Bitcoiner wondering why we don’t use the Bitcoin blockchain, you can read a detailed answer to that question <a href="https://blog.lbry.io/why-doesnt-lbry-just-use-bitcoin/">here</a>.</footer>
|
||||
|
||||
<h4>Part B: The Data Network (LBRYNet)</h4>
|
||||
<p>LBRYNet is the layer that makes the LBRY blockchain useful beyond a simple payment system. It says what to do with the information available in the LBRY blockchain, how to issue payments, how to look up a content identifier, and so on. </p>
|
||||
|
||||
<p>To use the LBRY network, a user’s computer needs the capacity to speak LBRY. That layer is LBRYNet. Just as your computer has a library that enables it to understand HTTP, DNS, and other languages and protocols, LBRYNet is the piece of software that allows your computer to understand how to interact with the LBRY network.</p>
|
||||
|
||||
<p>To understand what role LBRYNet plays, let’s drill a little more into a sample user interaction. Once a user has affirmed access and purchase, such as in step 5 of our Sample Use above, the following happens:</p>
|
||||
|
||||
<ol>
|
||||
<li>LBRYNet issues a lookup for the name associated with the content. If the client does not have a local copy of the blockchain, this lookup is broadcast to miners or to a service provider. This lookup acquires the metadata associated with the name.</li>
|
||||
<li>LBRYNet issues any required payments, as instructed by metadata entries.
|
||||
<ol>
|
||||
<li>If the content is set to free, nothing happens here.</li>
|
||||
<li>If the content is set to have a price in LBC, the client must issue a payment in LBC to the specified address. If the content is published encrypted, LBRYNet will not allow access until this payment has been issued.</li>
|
||||
<li>If the content is set to have another payment method, the seller must run or use a service that provides a private server enforcing payment and provisioning accessing keys.</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>Simultaneous to #2, LBRYNet uses the metadata to download the content itself.
|
||||
<ol>
|
||||
<li>The metadata allows chunks to be discovered and assembled in a BitTorrent-like fashion. However, unlike BitTorrent, chunks do not individually identify themselves as part of a greater whole. Chunks are just arbitrary pieces of data.</li>
|
||||
<li>If LBRYNet cannot find nodes offering chunks for free, it will offer payments for chunks to other hosts with those chunks.</li>
|
||||
<li>This payment is not done via proof-of-bandwidth, or third-party escrow. Instead, LBRYNet uses reputation, trust, and small initial payments to ensure reliable hosts. </li>
|
||||
<li>If content is not published directly to LBRY, the metadata can instruct other access methods, such as a Netflix URL. This allows us to catalogue content not yet available on LBRY as well as offer legacy and extensibility purposes.</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
|
@ -1,36 +0,0 @@
|
|||
<?php Response::setMetaDescription('Provide feedback on your experience using LBRY.') ?>
|
||||
<?php Response::setMetaTitle(__('Feedback')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<main class="cover-stretch-wrap" >
|
||||
<div class="cover cover-dark cover-dark-grad">
|
||||
<div class="content-dark content" style="min-height: 100%">
|
||||
<div class="row-fluid" style="height: 100%">
|
||||
<div class="span9">
|
||||
<h1><?php echo __('Feedback') ?></h1>
|
||||
<?php echo View::render('download/_feedbackPrompt') ?>
|
||||
<iframe id="feedback-form-iframe" src="https://docs.google.com/forms/d/1zqa5jBYQMmrZO1utoF2Ok9ka-gXzXLDZKXNNoprufC8/viewform?embedded=true"
|
||||
width="760" height="1720" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
|
||||
</div>
|
||||
<div class="span3">
|
||||
<h3><?php echo __('Also On') ?></h3>
|
||||
<?php echo View::render('social/_list') ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php js_start() ?>
|
||||
$(function() {
|
||||
var count = 0;
|
||||
$('#feedback-form-iframe').load(function(){
|
||||
++count;
|
||||
if (count == 2) //2nd load = a submit
|
||||
{
|
||||
ga('send', 'event', 'Sign Up', 'Alpha Test');
|
||||
twttr.conversion.trackPid('nu2ye');
|
||||
fbq('track', 'CompleteRegistration');
|
||||
}
|
||||
});
|
||||
});
|
||||
<?php js_end() ?>
|
|
@ -18,4 +18,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaTitle(__('LBRY Fund Goals')) ?>
|
||||
<?php Response::setMetaDescription('Download or install the latest version of LBRY.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="cover cover-dark cover-dark-grad">
|
||||
<div class="content content-dark">
|
||||
|
@ -39,4 +39,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="bg-image-full" style="background-image: url(/img/cover-home2.jpg)"></div>
|
||||
<?php Response::setMetaTitle(__('LBRY - Watch, Share, Earn')) ?>
|
||||
<?php Response::setMetaDescription(__('Meet LBRY, a content sharing and publishing platform that is decentralized and owned by it\'s users.')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => true]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => true]) ?>
|
||||
<main class="column-fluid">
|
||||
<div class="span12">
|
||||
<div class="cover cover-dark">
|
||||
|
@ -50,7 +50,7 @@
|
|||
<div class="row-fluid">
|
||||
<div class="span4">
|
||||
<h3><?php echo __('Get Updates') ?></h3>
|
||||
<?php echo View::render('mail/joinList', [
|
||||
<?php echo View::render('mail/_joinList', [
|
||||
'submitLabel' => 'Go',
|
||||
'listId' => Mailchimp::LIST_GENERAL_ID,
|
||||
'mergeFields' => ['CLI' => 'No'],
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaTitle(__('Join LBRY Email List')) ?>
|
||||
<?php Response::setMetaDescription(__('Follow along and receive updates about LBRY via email.')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false ]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false ]) ?>
|
||||
<main>
|
||||
<div class="content">
|
||||
<div class="row-fluid">
|
||||
|
@ -9,7 +9,7 @@
|
|||
<p>
|
||||
<?php echo __('Join our email list and receive updates about LBRY via email.') ?>
|
||||
</p>
|
||||
<?php echo View::render('mail/joinList', [
|
||||
<?php echo View::render('mail/_joinList', [
|
||||
'submitLabel' => 'Subscribe',
|
||||
'returnUrl' => '/join-list',
|
||||
'meta' => true,
|
||||
|
@ -23,4 +23,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
|
@ -1,70 +0,0 @@
|
|||
<?php Response::setMetaDescription('Download or install the latest version of LBRY.') ?>
|
||||
<?php Response::setMetaTitle(__('Learn About LBRY')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<main class="column-fluid">
|
||||
<div class="span4">
|
||||
<div class="cover cover-column cover-light-alt cover-light-alt-grad">
|
||||
<div class="content content-light">
|
||||
<h1><?php echo __('What?') ?></h1>
|
||||
<div class="spacer1">
|
||||
<div class="spacer1">
|
||||
<a href="/img/lbry-ui.png">
|
||||
<img src="/img/lbry-ui.png" alt="Screenshot of a LBRY browser"/>
|
||||
</a>
|
||||
</div>
|
||||
<p><em>Puts on jargon hat.</em></p>
|
||||
<p>
|
||||
LBRY is a decentralized, censorship-resistant, open-source, peer-to-peer information marketplace and discovery protocol.
|
||||
</p>
|
||||
<p><em>Removes jargon hat.</em></p>
|
||||
<p>
|
||||
LBRY is a new way for people to publish and share content with each other.
|
||||
</p>
|
||||
<p>
|
||||
Our goal is to provide a single box that allows anyone anywhere to find and purchase digital content from anyone else.
|
||||
</p>
|
||||
</div>
|
||||
<a href="/what" class="btn-primary"><?php echo __('More About LBRY') ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<div class="cover cover-column cover-dark cover-dark-grad ">
|
||||
<div class="content content-dark">
|
||||
<h1><?php echo __('Why?') ?></h1>
|
||||
<div class="spacer1">
|
||||
<p><?php echo __('Current systems benefit huge corporations that add little but extract a lot.') ?></p>
|
||||
<p>
|
||||
<?php echo __('We don\'t like it when middlemen, greedy rent-seekers, and kleptocrats win.') ?></p>
|
||||
</p>
|
||||
<p><?php echo __('We think a better world is one in which artists and consumers are directly connected.') ?></p>
|
||||
</div>
|
||||
<div class="spacer1">
|
||||
<a href="/why" class="btn-alt"><?php echo __('Why Make LBRY') ?></a>
|
||||
</div>
|
||||
<div>
|
||||
<img src="/img/smbc-comic.png" />
|
||||
</div>
|
||||
<div class="meta text-center">
|
||||
Credit <a href="//www.smbc-comics.com/" class="link-primary">SMBC</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<div class="cover cover-column cover-light">
|
||||
<div class="content">
|
||||
<h1><?php echo __('Who?') ?></h1>
|
||||
<div class="spacer1">
|
||||
<p><?php echo __('LBRY promises an awful lot.') ?> <?php echo __('Can you trust us to deliver?') ?></p>
|
||||
<p><?php echo __('Learn more about the relentless rebels changing the internet.') ?></p>
|
||||
</div>
|
||||
<div class="spacer1">
|
||||
<a href="/team" class="btn-alt"><?php echo __('About The Team') ?></a>
|
||||
</div>
|
||||
<img src="/img/cover-team.jpg" alt="<?php echo __('LBRY Founders') ?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaDescription(__('Learn more about LBRY, the technology that puts you back in control of the internet.')) ?>
|
||||
<?php Response::setMetaTitle(__('Learn About LBRY')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
|
||||
<main class="column-fluid ">
|
||||
<div class="span6">
|
||||
|
@ -121,4 +121,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</main> */ ?>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
|
@ -1,7 +1,7 @@
|
|||
<?php if (!isset($showHeader) || $showHeader): ?>
|
||||
<?php Response::setMetaDescription('LBRY Press Kit. Information and media for those who want to report on LBRY.') ?>
|
||||
<?php NavActions::setNavUri('/learn') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<?php endif ?>
|
||||
<main>
|
||||
<div class="content content-light markdown">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php Response::setMetaDescription('Publish your content on the world\'s first platform that leaves creators in control.') ?>
|
||||
<?php Response::setMetaTitle(__('Publish')) ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main >
|
||||
<div class="content">
|
||||
<h1><?php echo __('Publish') ?></h1>
|
||||
|
@ -44,4 +44,4 @@
|
|||
width="760" height="1200" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
|
||||
</div>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php NavActions::setNavUri('/learn') ?>
|
||||
<?php Response::addMetaImage('https://lbry.io/img/cover-team.jpg') ?>
|
||||
<?php Response::setMetaDescription('LBRY is founded by a team passionate about connecting producers and consumers and breaking down broken models. Learn more about them.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="content photo-grid spacer2">
|
||||
<h1>The Team</h1>
|
||||
|
@ -52,6 +52,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo View::render('nav/learnFooter') ?>
|
||||
<?php echo View::render('nav/_learnFooter') ?>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
|
|
|
@ -1,99 +0,0 @@
|
|||
<?php Response::setMetaDescription('Access information and content in ways you never dreamed possible. Earn credits for your unused bandwidth and diskspace.') ?>
|
||||
<?php NavActions::setNavUri('/learn') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="hero hero-pattern spacer2">
|
||||
<div class="hero-content text-center">
|
||||
<h2 class="hero-title">A revolution in accessing and publishing information.</h2>
|
||||
<div class="row-fluid hero-tile-row">
|
||||
<div class="span4 hero-tile">
|
||||
<div class="spacer1">
|
||||
<span class="icon-money icon-mega"></span>
|
||||
</div>
|
||||
<h4>
|
||||
<strong>Hosts</strong> earn credits for providing bandwidth and disk space.
|
||||
</h4>
|
||||
</div>
|
||||
<div class="span4 hero-tile">
|
||||
<div class="spacer1">
|
||||
<span class="icon-mega icon-gears"></span>
|
||||
</div>
|
||||
<h4>
|
||||
<strong>Miners</strong> earn credits for securing balances and metadata.
|
||||
</h4>
|
||||
</div>
|
||||
<div class="span4 hero-tile">
|
||||
<div class="spacer1">
|
||||
<span class="icon-chain-broken icon-mega"></span>
|
||||
</div>
|
||||
<h4>
|
||||
<strong>Patrons</strong> spend credits to access content without gatekeepers.
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h1>What is LBRY?</h1>
|
||||
<div class="spacer2">
|
||||
<p>LBRY allows anyone to publish content to a location like this:</p>
|
||||
<p class="text-center"><code>lbry://wonderfullife</code></p>
|
||||
<p>Others can access this resource, either for free or for credits. Let's look at an example:</p>
|
||||
<ol>
|
||||
<li>Ernest wants to release his comedy-horror film, "Ernie Goes To Guantanamo Bay".</li>
|
||||
<li>The content is encrypted and sliced into many pieces. These pieces are stored by <strong>hosts</strong>.</li>
|
||||
<li>Ernest reserves <code>lbry://erniebythebay</code>, a shortname pointing to his content.</li>
|
||||
<li>When Ernest reserves the location, he also submits metadata, such as a description and thumbnail. This information is stored by <strong>miners</strong> in the LBRY blockchain.</li>
|
||||
<li>Hilary, a <strong>patron</strong>, browses the LBRY network and wants to watch the movie.
|
||||
Her LBRY client collects the pieces from the <strong>hosts</strong> and reassembles them.</li>
|
||||
<li>Hilary pays Ernest for the decryption key, allowing her to watch the film.</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero hero-pattern">
|
||||
<div class="hero-content">
|
||||
<h2 class="text-center hero-title">If BitTorrent + BitCoin Had a Baby</h2>
|
||||
<div class="row-fluid hero-tile-row">
|
||||
<div class="span4 hero-tile">
|
||||
<span class="icon-mega icon-cloud"></span>
|
||||
<h3>Decentralized Metadata</h3>
|
||||
<p>Information about content is embedded in a blockchain, eliminating centralized failure points. Metadata and data are completely decoupled so that <strong>hosts</strong> never see metadata and <strong>miners</strong> never see data.</p>
|
||||
</div>
|
||||
<div class="span4 hero-tile">
|
||||
<span class="icon-mega icon-shopping-cart"></span>
|
||||
<h3>Marketized Data-Transfer</h3>
|
||||
<p><strong>Patrons</strong> request content for free or offer credits for faster speeds or access. <strong>Hosts</strong> share or sell surplus bandwidth and disk space.</p>
|
||||
</div>
|
||||
<div class="span4 hero-tile">
|
||||
<span class="icon-mega icon-link"></span>
|
||||
<h3>Memorable URIs</h3>
|
||||
<p>
|
||||
<strong>Publishers</strong> can choose friendly resource indicators like <code>lbry://wonderfullife</code> instead of ugly BitTorrent magnet URIs.
|
||||
URIs are <em>reserved</em> rather than owned, creating strong incentive for rights holders to use LBRY.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-fluid hero-tile-row">
|
||||
<div class="span4 hero-tile">
|
||||
<span class="icon-mega icon-usd" style="font-size: 180px"></span>
|
||||
<h3>Payments to Publishers</h3>
|
||||
<p><strong>Publishers</strong> may embed an address to receive payment for data. Publishers can also create assurance contracts<sup><a href="//en.wikipedia.org/wiki/Assurance_contract">?</a></sup> for new content.</p>
|
||||
</div>
|
||||
<div class="span4 hero-tile">
|
||||
<span class="icon-mega icon-lock"></span>
|
||||
<h3>Improved Privacy</h3>
|
||||
<p>LBRY uses novel techniques to protect publishers, providers, and consumers.
|
||||
<strong>Hosts</strong> only have small portions of an encrypted file with no information of the contents.
|
||||
</p>
|
||||
</div>
|
||||
<div class="span4 hero-tile">
|
||||
<span class="icon-mega icon-code"></span>
|
||||
<h3>Designed for Developers</h3>
|
||||
<p>LBRY is designed to allow others to create applications powered by it’s distributed, robust data store.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo View::render('nav/learnFooter') ?>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
|
@ -1,6 +1,7 @@
|
|||
<?php Response::setMetaDescription('Access information and content in ways you never dreamed possible. Earn credits for your unused bandwidth and diskspace.') ?>
|
||||
<?php Response::setMetaTitle(__('Art in the Internet Age: An Introduction to LBRY')) ?>
|
||||
<?php NavActions::setNavUri('/learn') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => true, 'isAbsolute' => true]) ?>
|
||||
<?php echo View::render('nav/_header', ['isDark' => true, 'isAbsolute' => true]) ?>
|
||||
<main>
|
||||
<div class="cover cover-dark cover-center cover-full" style="background-image:url(/img/altamira-bison.jpg)">
|
||||
<h1 class="cover-title" id="art">Art in the Internet Age</h1>
|
||||
|
@ -239,9 +240,9 @@
|
|||
<p>Build our dream with us. Download LBRY at <a class="link-primary" href="https://lbry.io/get">lbry.io/get</a>.</p>
|
||||
</section>
|
||||
</div>
|
||||
<?php echo View::render('nav/learnFooter') ?>
|
||||
<?php echo View::render('nav/_learnFooter') ?>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php echo View::render('nav/_footer') ?>
|
||||
<?php /*
|
||||
|
||||
<h3>Layer 1: Protocol</h3>
|
||||
|
|
|
@ -1,107 +0,0 @@
|
|||
<?php NavActions::setNavUri('/learn') ?>
|
||||
<?php Response::addMetaImage('https://lbry.io/img/xkcd-comic.png') ?>
|
||||
<?php Response::setMetaDescription('Learn about the inspiration behind LBRY\'s revolutionary content distribution system.') ?>
|
||||
<?php echo View::render('nav/header', ['isDark' => false]) ?>
|
||||
<main>
|
||||
<div class="hero hero-quote hero-img spacer2" style="background-image: url(/img/cover-jcole.jpg)">
|
||||
<div class="hero-content-wrapper">
|
||||
<div class="hero-content">
|
||||
<blockquote>
|
||||
<p>If you made the music, and you made the art, and you put it into the world, I should be able to use it. I'ma pay you, I'ma give you a percentage, but... you was inspired by the world; allow the world to be inspired by your [work] and to use your [work].</p>
|
||||
</blockquote>
|
||||
<cite>J. Cole, <em><a href="https://www.youtube.com/watch?v=UMCGOAGb4Y0&t=470s">Note to Self</a></em></cite>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content"><h1>Why?</h1></div>
|
||||
<div class="content spacer2">
|
||||
<h3>The World We Live In</h3>
|
||||
<p>Annual internet video traffic is approximately 500 exabytes (500,000,000,000 GB)<sup><a href="http://www.cisco.com/c/en/us/solutions/collateral/service-provider/ip-ngn-ip-next-generation-network/white_paper_c11-481360.html">1</a></sup>.
|
||||
Every second, over 10,000 hours of video are streamed.
|
||||
The technical term for the quantity of videos people watch every year is a million jillion. You know this.</p>
|
||||
|
||||
<p>What you may not know: <em>video distribution is fundamentally flawed</em>.</p>
|
||||
<p>
|
||||
The fatal flaw of existing systems is their centralized, top-down design. The consequences:
|
||||
</p>
|
||||
<ol>
|
||||
<li><p><strong>Increased costs to consumers.</strong> Providers bear significant infrastructure costs, regulatory and compliance costs,
|
||||
and must create complex systems to govern a simple process (copying a number).</p></li>
|
||||
<li><p><strong>Terrible consumer experience.</strong>
|
||||
Centralization leads to fragmentation, as providers compete to lock numbers in digit dungeons.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Poor producer experience.</strong>
|
||||
The primary want of a producer is to be paid for making things. Instead, producers frequently lose control of their content and
|
||||
lose profits to the inefficiency of current systems.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<p>Similar issues of economics and experience exist for consumers and producers of information of all kinds (e.g. news, facts), not just videos.</p>
|
||||
|
||||
<p>LBRY solves these problems and throws in some other sweet innovations just for funsies.</p>
|
||||
</div>
|
||||
<div class="hero hero-quote hero-img spacer2" style="background-image: url(/img/cover-swartz.jpg)">
|
||||
<div class="hero-content-wrapper">
|
||||
<div class="hero-content">
|
||||
<blockquote>
|
||||
<p>Information is power.</p>
|
||||
<p>But like all power, there are those who want to keep it for themselves.
|
||||
</blockquote>
|
||||
<cite>Aaron Swartz</cite>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content spacer2">
|
||||
<h3>An Alternative</h3>
|
||||
<p>LBRY avoids the mistakes of centralization and middlemen. It says:</p>
|
||||
<ol>
|
||||
<li>
|
||||
<p>
|
||||
<strong>Information isn't a thing</strong>
|
||||
Things are physical and exist in the world. When I have a thing, you can't. Economists call this <em>rivalry</em><sup><a href="//en.wikipedia.org/wiki/Rivalry_%28economics%29">?</a></sup>.
|
||||
</p>
|
||||
<p>
|
||||
Information is non-rival. Information is just a number. There is nothing easier to replicate than information.
|
||||
LBRY embraces (and adores) this reality.
|
||||
</p>
|
||||
<p>
|
||||
LBRY breaks information into thousands of identifiable tiny pieces and spreads them throughout the internet, reducing costs
|
||||
for both providers and consumers.
|
||||
</p>
|
||||
<div class="spacer2">
|
||||
<img src="/img/xkcd-comic.png" alt="XKCD #1228 Prometheus"/>
|
||||
<div class="meta text-center"><a href="https://xkcd.com/1228/">XKCD #1228</a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<strong>Connecting creators and consumers directly is best.</strong>
|
||||
Do we need middlemen spending billions to extract their rent and police others?
|
||||
A better system allows consumers to easily and directly pay content creators.
|
||||
We want to eliminate extortionists charging tolls.
|
||||
</p>
|
||||
<p>
|
||||
On LBRY, publishers sell directly to patrons. Publishers can charge a set fee per decryption key for content or create an assurance contract for unpublished content.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>It's Up to Us.</strong> A smart guy once said that power corrupts and absolute power corrupts absolutely.</p>
|
||||
<p>
|
||||
LBRY leaves no one in charge (including us). It puts power in the hands of individuals and users rather than corporations and executives.
|
||||
</p>
|
||||
<p>We think that world will be more creative, more charitable, and more fair. We hope you'll join us in creating it.</p>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<h3>What LBRY Isn't</h3>
|
||||
<p>LBRY's fully decentralized nature makes restricting content impossible. Since LBRY also aims to unseat gigantic, established media players,
|
||||
we fear it may attract undeserved legal attention. So we'd like to be clear from day one:</p>
|
||||
<p>
|
||||
<strong>LBRY is not about facilitating piracy.</strong>
|
||||
LBRY is about creating a network where creators and patrons can directly interact without relying on anyone in the middle. We've made choices
|
||||
about publisher identities and how addresses are reserved that are specifically designed to combat undue profiteering.</p>
|
||||
</div>
|
||||
<?php echo View::render('nav/learnFooter') ?>
|
||||
</main>
|
||||
<?php echo View::render('nav/footer') ?>
|
||||
<?php /* It is inspired by Bitcoin, BitTorrent, and a comment by Julian Assange<sup><a class="link-primary" href="https://wikileaks.org/Transcript-Meeting-Assange-Schmidt.html#731">1</a></sup>.</p> */ ?>
|
|
@ -96,6 +96,7 @@
|
|||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: $max-post-content-width;
|
||||
margin-bottom: $spacing-vertical * 2;
|
||||
a[href]
|
||||
{
|
||||
@include anchor($color-primary);
|
||||
|
|
Loading…
Add table
Reference in a new issue