LBRY CREDITS - Unmoderated Thread - LBRY.IO
-
LBRY CREDITS (LBC) PRE RELEASE WALLET v0.20.0rc14
[0.20.0rc14] - 2018-06-09
Fixed
- fix prm/brm typo
- handling error from dht clients with old
ping
method - blobs not being re-announced if no peers successfully stored, now failed announcements are re-queued
- issue where an
AuthAPIClient
(used bylbrynet-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 tolbrynet-daemon
, now the command line value will only override the config file value if it is providedlbrynet-cli
not automatically switching to the authenticated client if the server is detected to be using authentication. This resulted inlbrynet-cli
failing to run whenlbrynet-daemon
was run with the--http-auth
flag- fixed error when using
claim_show
withtxid
andnout
arguments
Changed
- updated default lbryum servers to use lbryumx
- refactor
add_completed_blobs
on storage.py, simplifying into less queries - check headers file integrity on startup, removing/truncating the file to force re-download when necessary
- support partial headers file download from S3
- changed txrequests for treq
- changed cryptography version to 2.2.2
- removed pycrypto dependency, replacing all calls to cryptography
- full verification of streams only during migration instead of every startup
- database batching functions for starting up the file manager
- several internal dht functions to use inlineCallbacks
DHTHashAnnouncer
andNode
manage functions to useLoopingCall
s instead of scheduling withcallLater
.store
kademlia rpc method to block on the call finishing and to return storing peer information- refactored
DHTHashAnnouncer
to no longer use locks, use aDeferredSemaphore
to limit concurrent announcers - decoupled
DiskBlobManager
fromDHTHashAnnouncer
- blob hashes to announce to be controlled by
SQLiteStorage
- kademlia protocol to minimally delay writes to the UDP socket
reactor
andcallLater
,listenUDP
, andresolve
functions to be configurable (to allow easier testing)- 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, letSQLiteStorage
and theDHTHashAnnouncer
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
andlast_announced_time
columns to theblob
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 theauth_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
andclaim_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.
- temporarily disabled data price negotiation, treat all data as free
- changed dht bootstrap join process to better populate the routing table initially
- cache dht node tokens used during announcement to minimize the number of requests that are needed
- implement BEP0005 dht rules to classify nodes as good, bad, or unknown and for when to add them to the routing table (http://www.bittorrent.org/beps/bep_0005.html)
- refactored internal dht contact class to track failure counts/times, the time the contact last replied to us, and the time the node last requested something fom us
- refactored dht iterativeFind
- sort dht contacts returned by
findCloseNodes
in the routing table - disabled Cryptonator price feed
Added
- virtual kademlia network and mock udp transport for dht integration tests
- functional tests for bootstrapping the dht, announcing and expiring hashes, finding and pinging nodes, protocol version 0/1 backwards/forwards compatibility, and rejoining the network
- configurable
concurrent_announcers
ands3_headers_depth
settings peer_ping
command--sort
option infile_list
- linux distro and desktop name added to analytics
- certifi module for Twisted SSL verification on Windows
- protocol version to dht requests and to the response from
findValue
- added
port
field to contacts returned byrouting_table_get
Removed
announce_all
argument fromblob_announce
- old
blob_announce_all
command AuthJSONRPCServer.auth_required
decorator- unused
--wallet
argument tolbrynet-daemon
, which used to be to supportPTCWallet
.
OptimizedTreeRoutingTable
class used by the dht node for the time being
Download:
-
LBRY CREDITS (LBC) Final Release Wallet v 0.20.0
TL;DR
This milestone release includes a large number of bug fixes, changes and additions covering all aspects of the daemon. Notable improvements include:
- Faster and more reliable downloading and uploading of content resulting from substantial work done on the Distributed Hash Table algorithms and protocol.
- Faster blockchain synchronization (headers) by downloading them from Amazon S3 under certain conditions.
- Faster overall app startup due to better optimized SQL queries.
- Power users of the
lbrynet-cli
will benefit from many bug fixes to commonly used commands and improvements in sorting of output. - Please review the full change log for more details on specific fixes, changes and additions.
Fixed
- fix payment rate manager typo (12361209)
Changed
- if the
use_authentication
setting is configured, use authentication for all api methods instead of only those with theauth_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 itpeer_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
andclaim_list_mine
(12161208) - increase the default
auto_re_reflect_interval
setting to a day and the defaultconcurrent_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
andlast_announced_time
columns to theblob
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
andNode
manage functions to useLoopingCall
s instead of scheduling withcallLater
.- refactored
DHTHashAnnouncer
to no longer use locks, use aDeferredSemaphore
to limit concurrent announcers - decoupled
DiskBlobManager
fromDHTHashAnnouncer
, get blob hashes to announce fromSQLiteStorage
. 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.
- changed dht bootstrap join process to better populate the routing table initially
- cache dht node tokens used during announcement to minimize the number of requests that are needed
- implement BEP0005 dht rules to classify nodes as good, bad, or unknown and for when to add them to the routing table (http://www.bittorrent.org/beps/bep_0005.html)
- refactored internal dht contact class to track failure counts/times, the time the contact last replied to us, and the time the node last requested something fom us (12111191)
- updated
cryptography
version to 2.2.2 - removed
pycrypto
dependency, replacing all calls tocryptography
Added
peer_ping
command--sort
option infile_list
(1174)port
field to contacts returned byrouting_table_get
- configurable
concurrent_announcers
ands3_headers_depth
settings - virtual kademlia network and mock udp transport for dht integration tests
- functional tests for bootstrapping the dht, announcing and expiring hashes, finding and pinging nodes, protocol version 0/1 backwards/forwards compatibility, and rejoining the network
- linux distro and desktop name added to analytics (12181213)
- protocol version to dht requests and to the response from
findValue
Removed
announce_all
argument fromblob_announce
- old
blob_announce_all
command - unused
--wallet
argument tolbrynet-daemon
, which used to be to supportPTCWallet
. AuthJSONRPCServer.auth_required
decorator (1161)OptimizedTreeRoutingTable
class used by the dht node for the time being
Download:
-
LBRY CREDITS (LBC) Final Release Wallet v0.20.2
Changed
- Bumped
lbryschema
requirement to 0.0.16 see changelogsee changelog - save claims to sqlite in batches to speed up
resolve
queries for many uris
Download:
https://github.com/lbryio/lbry...
- Bumped
-
LBRY CREDITS (LBC) Final Release Wallet v0.20.3
Fixed
blob_list raising an error when blobs in a stream haven't yet been created (8a0d0b4)
stopping a download potentially raising an attribute error (#1269)
file manager startup locking up when there are many files for some channels (#1281)
improper sorting when getting the closest peers to a hash (#1282)
Changed
raised the default peer_search_timeout setting from 3 to 30 and added logging for when it happens (#1283)
change iterative find stop condition on find value to allow it to continue until a value is found or it times out (#1283)
include all of our own blobs in the local dht datastore (as if we had announced them to ourselves) (#1280)
ignore dht store token validation errors for the first expiration-time after startup (fixes failed store requests after a restart) (#1280)
Removed
jsonrpclib as a requirement for the project (#1274)
Download
-
LBRY CREDITS Final (LBC) Release WALLET V0.21.2
Fixed
- issue in dht ping queue where enqueued pings that aren't yet due wouldn't be rescheduled
- blob mirror downloader not finishing streams that were partially uploaded at the time of the download attempt (#1376)
SOURCE CODE
-
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.
Prints turned into .PNG files, music turned into .MP3 files, movies turned into .MP4 files, and books turned into .PDF files.
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 ofhttps://localhost:5279/lbryapi
) - deprecated
daemon_stop
command, usestop
instead. - deprecated
wallet_balance
command, useaccount_balance
instead. - deprecated
wallet_unlock
command, useaccount_unlock
instead. - deprecated
wallet_decrypt
command, useaccount_decrypt
instead. - deprecated
wallet_encrypt
command, useaccount_encrypt
instead. - deprecated
wallet_prefill_addresses
command, useaccount_fund
instead. - deprecated
wallet_list
command, useaddress_list
instead. - deprecated
wallet_is_address_mine
command, useaddress_is_mine
instead. - deprecated
wallet_public_key
command. - deprecated
wallet_new_address
command, useaddress_generate
instead. - deprecated
wallet_unused_address
command, useaddress_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_gap
command 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_address
command 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.
File Manager
- Extensive internal changes as a result of porting to Python 3.
DHT
- Extensive internal changes as a result of porting to Python 3.
P2P
- Extensive internal changes as a result of porting to Python 3.
Source Code
- upgraded
-
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 ofhttps://localhost:5279/lbryapi
) - deprecated
daemon_stop
command, usestop
instead. - deprecated
wallet_balance
command, useaccount_balance
instead. - deprecated
wallet_unlock
command, useaccount_unlock
instead. - deprecated
wallet_decrypt
command, useaccount_decrypt
instead. - deprecated
wallet_encrypt
command, useaccount_encrypt
instead. - deprecated
wallet_prefill_addresses
command, useaccount_fund
instead. - deprecated
wallet_list
command, useaddress_list
instead. - deprecated
wallet_is_address_mine
command, useaddress_is_mine
instead. - deprecated
wallet_public_key
command. - deprecated
wallet_new_address
command. - deprecated
wallet_unused_address
command, useaddress_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_gap
command 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_unused
command to get existing or generate a new unused address. - added pagination support for
address_list
,channel_list
,claim_list_mine
,transaction_list
andutxo_list
. - removed
send_amount_to_address
command 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.
File Manager
- Extensive internal changes as a result of porting to Python 3.
DHT
- Extensive internal changes as a result of porting to Python 3.
P2P
- Extensive internal changes as a result of porting to Python 3.
Reflector
- No major changes to reflector.
Database
- No changes to existing storage module.
Known Issues
- Channel certificate import/export is currently not working.
Source Code:
https://github.com/lbryio/lbry...
- upgraded
-
LBRY CREDITS (LBC) Release Wallet v0.30.1rc103
[v0.30.1rc9] - 2018-12-06
API
- add
aioupnp_version
toupnp
field in the response tostatus
- fixed uncaught claim signature errors
Schema
- updated
protobuf
to3.2.0
(#1602)
Wallet
- fixed resolving names with invalid channel signatures
- fixed wallet sync issues
- fixed wallet locking/encryption issues
DHT
- fixed retrying kademlia rpc calls (#1495)
- fixed
KeyError
initerativeFindValue
, this is used bypeer_list
and when finding peers to download blobs from (#1638)
Misc
- brought back icon for windows binary
- using custom list of mime types with more types
Source Code:
https://github.com/lbryio/lbry...
- add
-
LBRY (LBC) Final Release Wallet v0.30.1
API
- add
aioupnp_version
toupnp
field in the response tostatus
- fixed uncaught claim signature errors
--blocking
support forabandon
command (#1618)- don't create SSL keys if SSL is disabled (#1644)
- added
account_send
command (#1654) - fixes for claim send to address (#1651)
- better handle errors on resolve (#1662)
- fix
transaction_show
(#1689)
Schema
- merged
lbryschema
repository intolbrynet
(#1444) - updated
protobuf
to3.2.0
(#1602) - use
types
repo for generating python protobufs (#1605)
Wallet
- fixed resolving names with invalid channel signatures
- fixed wallet sync issues
- fixed wallet locking/encryption issues
DHT
- fixed retrying kademlia rpc calls (#1495)
- fixed
KeyError
initerativeFindValue
, this is used bypeer_list
and when finding peers to download blobs from (#1638) - settings external ip address and ability to disable more DHT components (#1604)
- improved routing table bucket initialization (#1633)
Database
- resolved too many variables in sqlite issue (#1612)
Misc
- switch to Python 3.7
- brought back icon for windows binary
- using custom list of mime types with more types (#1700)
- add balance to startup report (#1613)
- drop
six
dependency (#1660) - drop
mock
dependency (#1661)
Source Code:
https://github.com/lbryio/lbry...
- add