LBRY CREDITS (LBC) Final Release Wallet v 0.20.0TL;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 the auth_required decoratorregenerate api keys on startup if the using authenticationsupport both positional and keyword args for api callsblob_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 resultspredictable 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 10download 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, simplifying into less queries (12261195)database batching functions for starting up the file manageradded single_announce and last_announced_time columns to the blob table in sqlitetrack 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 databasedht logging to be more verbose with errors and warningsstore kademlia rpc method to block on the call finishing and to return storing peer informationkademlia protocol to minimally delay writes to the UDP socketseveral internal dht functions to use inlineCallbacksDHTHashAnnouncer 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 announcersdecoupled 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 aggressiveping 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 initiallycache dht node tokens used during announcement to minimize the number of requests that are neededimplement BEP0005 dht rules to classify nodes as good, bad, or unknown and for when to add them to the routing table ( 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.2removed pycrypto dependency, replacing all calls to cryptography Added peer_ping command--sort option in file_list (1174)port field to contacts returned by routing_table_getconfigurable concurrent_announcers and s3_headers_depth settingsvirtual kademlia network and mock udp transport for dht integration testsfunctional tests for bootstrapping the dht, announcing and expiring hashes, finding and pinging nodes, protocol version 0/1 backwards/forwards compatibility, and rejoining the networklinux distro and desktop name added to analytics (12181213)protocol version to dht requests and to the response from findValue Removed announce_all argument from blob_announceold blob_announce_all commandunused --wallet argument to lbrynet-daemon, which used to be to support PTCWallet.AuthJSONRPCServer.auth_required decorator (1161)OptimizedTreeRoutingTable class used by the dht node for the time beingDownload: