LBRY CREDITS (LBC) PRE RELEASE WALLET v0.20.0rc14

[0.20.0rc14] - 2018-06-09

Fixed

blobs not being re-announced if no peers successfully stored, now failed announcements are re-queued

issue where an AuthAPIClient (used by lbrynet-cli) would fail to update its session secret and keep making new auth sessions, with every other request failing

use_auth_http in a config file being overridden by the default command line argument to lbrynet-daemon, now the command line value will only override the config file value if it is provided

lbrynet-cli not automatically switching to the authenticated client if the server is detected to be using authentication. This resulted in lbrynet-cli failing to run when lbrynet-daemon was run with the --http-auth flag

fixed error when using claim_show with txid and nout arguments

Changed

updated default lbryum servers to use lbryumx

refactor add_completed_blobs on storage.py, simplifying into less queries

calls to get the current time to use reactor.seconds (to control callLater and LoopingCall timing in tests)

blob_announce to queue the blob announcement but not block on it

blob completion to not callLater an immediate announce, let SQLiteStorage and the DHTHashAnnouncer handle it

raise the default number of concurrent blob announcers to 100

dht logging to be more verbose with errors and warnings

added single_announce and last_announced_time columns to the blob table in sqlite

pass the sd hash to reflector ClientFactory instead of looking it up

if the use_authentication setting is configured, use authentication for all api methods instead of only those with the auth_required decorator

regenerate api keys on startup if the using authentication

support both positional and keyword args for api calls

peer_list to return a list of dictionaries instead of a list of lists, added peer node ids to the results

download blockchain headers from s3 before starting the wallet when the local height is more than s3_headers_depth (a config setting) blocks behind

track successful reflector uploads in sqlite to minimize how many streams are attempted by auto re-reflect

increase the default auto_re_reflect_interval to a day

predictable result sorting for claim_list and claim_list_mine

changed the bucket splitting condition in the dht routing table to be more aggressive

ping dht nodes who have stored to us periodically to determine
whether we should include them as an active peer for the hash when we
are queried. Nodes that are known to be not reachable by the node
storing the record are no longer returned as peers by the storing node.

Fixed

Changed

if the use_authentication setting is configured, use authentication for all api methods instead of only those with the auth_required decorator

regenerate api keys on startup if the using authentication

support both positional and keyword args for api calls

blob_announce to queue the blob announcement but not block on it

peer_list to return a list of dictionaries instead of a list of lists, added peer node ids to the results

predictable result sorting for claim_list and claim_list_mine (12161208)

increase the default auto_re_reflect_interval setting to a day and the default concurrent_announcers setting to 10

download blockchain headers from s3 before starting the wallet when the local height is more than s3_headers_depth (a config setting) blocks behind (11771189)

refactor add_completed_blobs on storage.py, simplifying into less queries (12261195)

database batching functions for starting up the file manager

added single_announce and last_announced_time columns to the blob table in sqlite

track successful reflector uploads in sqlite to minimize how many streams are attempted by auto re-reflect (1194)

pass the sd hash to reflector ClientFactory instead of looking it up from the database

dht logging to be more verbose with errors and warnings

store kademlia rpc method to block on the call finishing and to return storing peer information

kademlia protocol to minimally delay writes to the UDP socket

several internal dht functions to use inlineCallbacks

DHTHashAnnouncer and Node manage functions to use LoopingCalls instead of scheduling with callLater.

refactored DHTHashAnnouncer to no longer use locks, use a DeferredSemaphore to limit concurrent announcers

decoupled DiskBlobManager from DHTHashAnnouncer, get blob hashes to announce from SQLiteStorage. The blob manager no longer announces blobs after they are completed, the hash announcer takes care of this now.

changed the bucket splitting condition in the dht routing table to be more aggressive

ping dht nodes who have stored to us periodically to determine
whether we should include them as an active peer for the hash when we
are queried. Nodes that are known to be not reachable by the node
storing the record are no longer returned as peers by the storing node.

The LBRY Economy

The Evolution of Content

For most of history all artistic content was tangible. Your eyes had
to stare at the original canvas for you to enjoy the beauty of a
painting. Your ears had to absorb the sound waves generated by locally
played instruments in order to take pleasure in the beauty of a song's
melody. To see a story played out, you had to be in the presence of
actors on a stage. Enjoying a novel meant you had a physical copy of a
book, which were sparse until the invention of the printing press by
Johannes Gutenberg in 1440.

Over time, each medium of entertainment became more accessible due to technological evolution.

Paintings found their way onto prints, music found its way onto
records, plays made their way onto film reels, and books became mass
produced commodities.

This was the first wave of evolution, but then came another wave: the digital revolution.

Even physical objects that used to require complex manufacturing
processes made their way into 3D printable file formats like .STL and
.OBJ, enabling one-click manufacturing for many objects.

Once media is formed into bytes (1s and 0s) it lives in a state of
what's known as post-scarcity: the cost to recreate the work done to
create the original file is near zero.

Each piece of content can now be played on the same piece of
hardware: the computer. We take for granted that we walk around with
paintings, recording studios, Hollywood sets, and printing presses in
our pockets.

The major tech companies like Apple, Amazon, and Google now own three
of the major media distribution platforms: iTunes, Kindle, and YouTube,
respectively.

Amazon takes 30% for each eBook sold via Kindle, Apple takes 30% for
each song sold via iTunes, and Google takes a whopping 45% of a
YouTuber's ad revenue.

It's easy to point fingers at these corporations and say "Those
greedy fat cats don't need such a big cut, after all, they're not even
the ones creating the content!", but the fact is that the fat cats
enabled the skinny cats (independent content creators) to get fatter.

Without YouTube, most YouTubers probably wouldn't be known. iTunes
has allowed artists to monetize single songs, and Amazon enables eBooks
to be sold to audiences who might not be interested in buying a physical
copy of an author's book but are willing to pickup a discounted digital
copy to store on their electronic device.

LBRY: Middleman-less Publishing

These corporations have largely bettered the playing field for content creators, but what they haven't done is created the ideal
platform to share music on: one in which creators are supported
directly by their fans without a corporation or third party in the way
to censor their content or take a cut of their profit. This is exactly
the value that LBRY provides as a decentralized content sharing
protocol.

LBRY lets fans fund their favorite creators rather than advertisers
(who couldn’t care less about the content). It does so in two ways:
bidding for channels/URLs, and enabling micropayments.

Currently if you want to own a URL like internet.com you’d have to
buy it for a high price considering somebody already owns it, and the
owner of the domain could decide not to sell it. On LBRY, you can
actually outbid ‘lbry://internet’ by staking more credits than the
person claiming that URL.

Although it’s true that a bad actor could post unrelated content by
scooping popular claims, they are limited by the amount of resources
they can stake and have to wait a certain period of time before they're
able to take over an already existing claim with a higher bid. Since
they won’t be creating any value, it’s unlikely to sustain in the long
run.

Let’s say you want to post content at lbry://nerd (since it’s safe to
say that you are one if you’re reading this). In order to claim this
URL you have to stake some amount of LBC (it can be any amount assuming
the URL is untaken).

You want to sell a video of you walking around dressed up as Steve
Urkel from Family Matters asking people what their favorite invention is
(I would buy it).

You decide to stake 50 in LBC and set a price for your video of $.005 (the half penny is back!).

Sure, this content technically isn't free, (though most content on
LBRY is free with a tipping option) but you would have to watch 200
videos at this rate just to spend a single dollar. The crazy thing? Most
creators would actually make more money this way.

Now whenever people search "nerd" you'll be the first result to show
up, and you'll automatically make half a penny in LBC anytime someone
new wants to view the content.

Oh, and that half a penny goes towards the staking of lbry://nerd to
help you keep your epic Steve Urkel video in its place on the
decentralized network.

How does this differ from the traditional way of monetizing video content?

Well, if you want to use YouTube there is no bidding system for URLs.
You simply come up with a name for a video and add tags, and YouTube
reserves the right to make your content undiscoverable no matter how
entertaining it is.

Oh, you're just starting out and you want to make money? Sorry, you
have to have at least 1,000 subscribers before you can make any money,
that is, if YouTube decides to run ads on your content..

With LBRY, your content is censorship resistant, and you remain in control of how you monetize it.

In other words, where and how you do business is up to you, not YouTube and its big-money advertisers.

The LBRY Economy draws upon true demand for content, rather than
conflating the demands of advertisers with that of consumers. Direct
support of content creators from their fans is best for both creators
and their fans.

So, what are you waiting for? Download the LBRY App here today and take back control.

Know a YouTuber who's starting out or already has a large following? Let them know about our YouTube sync program where they can earn just for agreeing to make their channel available on LBRY.

LBRY CREDITS Release wallet v0.30.0rc2

[v0.30.0rc2] - 9-26-2018

Python 3 upgrade of the entire code base and switching to a brand new wallet
implementation are the major changes in this release.

Security

upgraded cryptography package.

API

unified all command line executables into a single lbrynet executable.

added use_https configuration setting (off by default), if true the api server will generate a self signed ssl certificate when started and only handle api requests on the https address (default of https://localhost:5279/lbryapi)

deprecated daemon_stop command, use stop instead.

deprecated wallet_balance command, use account_balance instead.

deprecated wallet_unlock command, use account_unlock instead.

deprecated wallet_decrypt command, use account_decrypt instead.

deprecated wallet_encrypt command, use account_encrypt instead.

deprecated wallet_prefill_addressescommand, use account_fund instead.

deprecated wallet_list command, use address_list instead.

deprecated wallet_is_address_minecommand, use address_is_mineinstead.

deprecated wallet_public_keycommand.

deprecated wallet_new_addresscommand, use address_generateinstead.

deprecated wallet_unused_addresscommand, use address_unused instead.

deprecated claim_renew command.

added account_list command to list accounts including their balance.

added account_add command to add a previously created account from seed or private key.

added account_create command to generate a new account.

added account_remove command to remove an account from wallet.

added account_set command to change a setting on an account.

added account_balance command to get just the account balance.

added account_unlock command to unlock an encrypted account.

added account_lock command to lock an encrypted account.

added account_encrypt command to encrypt an account.

added account_decrypt command to decrypt an account.

added account_fund command to move funds between or within an account in various ways.

added account_max_address_gapcommand to find large gaps of unused addresses.

added address_list command to list addresses.

added address_is_mine command to check if an address is one of your addresses.

added address_public_key command to get public key of an address.

added address_generate command to generate a new address.

added address_unused command to get existing or generate a new unused address.

removed send_amount_to_addresscommand previously marked as deprecated

removed channel_list_mine command previously marked as deprecated

removed get_availability command previously marked as deprecated

Wallet

changed to a new wallet implementation: torba.

changed wallet file format to support multiple accounts in one wallet.

moved transaction data from wallet file into an sqlite database.

changed channel certificates to be keyed by txid:nout instead of claim_id which
makes it possible to recover old certificates.

P2P

LBRY CREDITS (LBC) Pre Release Wallet v0.30.0rc7

[0.30.0] - 2018-10-17

This release is the most ambitious upgrade to lbrynet yet; including a brand
new wallet implementation, switch to Python 3 of the entire code base and
many changes to the API such as pagination and a more consistent output from
most commands.

Security

upgraded cryptography package.

switch to coincurve for private / public key generation (addresses)

support for connecting to daemon via SSL

improved workflow for encrypt/decrypt of wallet

API

unified all command line executables into a single lbrynet executable.

added use_https configuration setting (off by default), if true the api
server will generate a self signed ssl certificate when started and only
handle api requests on the https address (default of https://localhost:5279/lbryapi)