<oembed><type>rich</type><version>1.0</version><author_name>Braydon Fuller [ARCHIVE] (npub1fx…xxtaa)</author_name><author_url>https://nostr.ae/npub1fx2eyw7avet7dut0slazcehwvrrlhjp2u9jc9zd92l7nexpxeahs4xxtaa</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2020-05-08&#xA;📝 Original message:On 5/6/20 9:07 PM, Keagan McClelland wrote:&#xA;&#xA;&gt; I think that one of the solutions here is to have light clients choose&#xA;&gt; their full node tethers explicitly. Even if you think it is unrealistic to&#xA;&gt; have everyone run their own node (fwiw, I don’t), there is still a trust&#xA;&gt; model where you can pick your trusted source.&#xA;&gt;&#xA;&gt; This way you could have many light clients working off of a family node,&#xA;&gt; and the peer services could be limited to some sort of “authenticated”&#xA;&gt; peers. Perhaps this is better accomplished over the RPC interface in Core,&#xA;&gt; but the idea is to have some sort of peer service model between “full&#xA;&gt; public” and “owner only”. This limits the amount of costs that can be&#xA;&gt; properly externalized, without exposing risk of consensus capture by&#xA;&gt; economically weighty institutions.&#xA;&#xA;The RPC interface in Bitcoin Core, and others, is not great for this&#xA;because it exposes a lot of functionality that isn&#39;t necessary and&#xA;introduces risks. For example the `gettxoutsetinfo` can start a very&#xA;intensive CPU and disk I/O task. There are several others, for example:&#xA;`stop`, `addnode`, `clearbanned`, `setban`, and etc. Furthermore reading&#xA;full raw blocks isn&#39;t very efficient with JSON. Electrum servers (e.g&#xA;electrs) for example read blocks from disk instead and use the RPC&#xA;interface to sync headers. Though, Electrum servers also have a risk of&#xA;DoS with addresses that have many transactions, see the `--txid-limit`&#xA;option [2].&#xA;&#xA;[1]:&#xA;https://github.com/bitcoin/bitcoin/blob/5b24f6084ede92d0f493ff416b4726245140b2c1/src/rpc/blockchain.cpp#L954-L956&#xA;[2]:&#xA;https://github.com/romanz/electrs/blob/f0a7a325af495ecbc152c0866550dc300011779b/src/query.rs#L284-L289</html></oembed>