Adam Back [ARCHIVE] on Nostr: 📅 Original date posted:2015-02-21 📝 Original message:If you want to be ...
📅 Original date posted:2015-02-21
📝 Original message:If you want to be constructive and index transactions that are not
p2sh but non-simple and contain checksig so the address is visible,
you could do that with a block bloom filter also.
I wasnt sure if the comments about the need to batch requests was
about downloading headers & filters, or about transactions, there is
no harm downloading headers & bloom filters without Tor - there is no
identity nor addresses revealed by doing so. So over Tor you would
just be fetching transactions that match the address.
For downloading transactions unless you frequently receive
transactions you wont be fetching every block. Or are you assuming
bloom filters dialled up to the point of huge false positives? You
said otherwise.
Mid-term I'd say you want some basic request tunneling as part of
bitcoin, that maybe isnt Tor, to avoid sharing their fate if Tor
controversies are a risk to Tor service. Some of the bitcoin-Tor
specific weak points could maybe then be addressed.
Relatedly I think bitcoin could do with a store-and-forward message
bus with privacy and strong reliability via redundancy (but less
redundancy maybe than consensus all-nodes must receiving and agree and
store forever). That provides an efficient store-and-forward SPV
receivable stealth-address solution that doesnt suck: send the
recipient their payment, if they like it they broadcast it themselves.
As a bonus store-and-forward message mixes are better able to provide
meaningful network privacy than interactive privacy networks. You
could spend over the same channel
You seem to be saying at one point that Tor is useless against
pervasive eavesdropper threat model (which I am not sure I agree with,
minimally it makes them work for the info and adds uncertainty; and
not been paying super close attention but I think some of the Snowden
releases suggest Tor is a net win) and secondly that other types of
attackers are disinterested (how do we know that?) or maybe that you
dont care about privacy vs them (maybe some users do!)
It would certainly be nice to get real privacy from a wider range of
attackers but nothing (current situation) is clearly worse; using
block bloom filters we'd make the pervasive case harder work, and the
nosy full node learn nothing.
Adam
On 21 February 2015 at 13:28, Mike Hearn <mike at plan99.net> wrote:
> Let's put the UTXO commitments/anti-fraud proofs to one side for a moment. I
> would like to see them happen one day, but they aren't critical to these
> protocols and are just proving to be a distraction.
>
>
>>
>> Then they make fresh random connections to different nodes and request
>> download of the respective individual transactions from the full node.
>
>
> ...
>
>> About privacy the node can make different random connections to
>> different nodes to fetch addresses ..... The full node cant
>> correlate the addresses as belonging to the same person by correlating
>> the download requests for them, because they are made via different
>> nodes.
>
>
> Apologies for the wall of text, but I don't think this will work nor solve
> any real problem. And I must justify such a strong statement clearly.
>
> First: technical issues
>
> When you download the per-block Bloom filter and test, what you get back is
> a set of script elements (addresses, keys, OP_RETURN tags etc). But then in
> the next step you are saying that you connect to random peers and request
> individual transactions. We don't know that at this point. All we know are a
> set of addresses that possibly matched. So I think what you mean is "wallets
> connect to random peers and request transactions in block N that match a
> given set of addresses".
>
> This is what Bloom filtering already does, of course. Doing the test against
> the per-block filter first doesn't seem to buy us much because with
> thousands of transactions per block, even a very tiny FP rate will still
> trigger a match on every single one.
>
> The second problem I see is that we can't do this in parallel because of the
> following edge case: wallet contains key K and someone sends it money using
> an OP_CHECKSIG output. The input which spends this output does not contain
> any predictable data, thus we do not know what to look for in the following
> blocks to detect a spend of it until we have seen the first transaction and
> know its hash.
>
> In practice this means we must either scan through the chain in sequence and
> update our matching criteria if we see such an output (this is what the
> Bloom filtering protocol already does server-side), or we must constrain the
> user such that output scripts always force repetition of predictable data -
> this is what mostly happens today due to pay-to-address outputs, but not
> always, and correctness is more important than completeness.
>
> If we can't do it in parallel then we must suffer a node round-trip for
> every single block we traverse, because we can't request long runs of blocks
> with a single command. That latency will kill performance dead. It's a non
> starter.
>
> But let's imagine we don't care about OP_CHECKSIG outputs and are willing to
> ignore them. There are cases where they are the best and most efficient
> technical solution, but let's put that to one side.
>
> The primary difference after making the above changes are that no one node
> gets a filter containing all our keys and addresses. I don't think a per
> block pre-test filter would gain us much efficiency so from a privacy
> perspective this is what it boils down to - sharding of the scan.
>
> But we can already do this with the current Bloom filtering protocol.
> BitcoinJ doesn't do so because having multiple parallel scans uses up
> network IOPs which are a resource of unknown quantity, and because stepping
> through the chain in parallel with multiple peers complicates the chain sync
> implementation quite a bit.
>
> Second: this doesn't solve any real problem
>
> Who cares about collecting Bloom filters off the wire?
>
> Commercial fraudsters? Doubtful. There are much easier ways to steal money.
>
> Spies? Yes! Without a doubt NSA/GCHQ are building or have built databases of
> IP addresses to Bitcoin addresses and are correlating it via XKEYSCORE with
> other identifiable information.
>
> However, just requesting data from different nodes doesn't help with that,
> because they are doing DPI and can still see all the connections, so can
> still combine all the filters or received transactions.
>
> Ah, you say, but we're requesting everything via Tor.
>
> Yes, about that. We've implemented that already. Some wallets even use it by
> default, like Alon & Chris' Bitcoin Authenticator wallet. It's just one line
> of code to activate.
>
> Unfortunately there are severe practical problems to using Tor:
>
> If you don't have a warm consensus then booting it up is very slow. We're
> already slower than our competitors like blockchain.info and
> VISA/MasterCard, we can't make this any worse.
>
> This one is possibly not that big a deal and can be solved with more
> technical tricks.
>
> Bitcoin Core's DoS strategy means anyone can block all of Tor quite
> trivially. So we'd need some complicated fallback mechanism to disable Tor
> remotely, in case someone did this.
>
> Bitcoin wire traffic isn't encrypted or authenticated so it makes it much
> easier for trolls to tamper with lots of wire traffic at once, whereas
> without Tor it's much harder.
>
> Let's ignore the fact that the Tor project insists on poking the law
> enforcement bear with rusty nails, and has been receiving tipoffs about
> plans to seize directory authorities. How much Bitcoin wallets should rely
> on Tor sticking around is a debate for some other time.
>
> There's a much simpler way to fix all of this - add opportunistic encryption
> to the wire protocol.
Published at
2023-06-07 15:30:46Event JSON
{
"id": "0658a2f0c9e59bf149107aec2b0b501877de724e854969fd0e9e59d1b12e5abb",
"pubkey": "ee0fa66772f633411e4432e251cfb15b1c0fe8cd8befd8b0d86eb302402a8b4a",
"created_at": 1686151846,
"kind": 1,
"tags": [
[
"e",
"d00e0f44d6037fd0ba68029864e2acf1e3fe5c4c51dbcdd7d112be31766cd3e9",
"",
"root"
],
[
"e",
"1024b474f4fbd9466c8f1ad32c1e7a66f6da8b1cdce618eb0d2f4c626dab1cdb",
"",
"reply"
],
[
"p",
"f2c95df3766562e3b96b79a0254881c59e8639f23987846961cf55412a77f6f2"
]
],
"content": "📅 Original date posted:2015-02-21\n📝 Original message:If you want to be constructive and index transactions that are not\np2sh but non-simple and contain checksig so the address is visible,\nyou could do that with a block bloom filter also.\n\nI wasnt sure if the comments about the need to batch requests was\nabout downloading headers \u0026 filters, or about transactions, there is\nno harm downloading headers \u0026 bloom filters without Tor - there is no\nidentity nor addresses revealed by doing so. So over Tor you would\njust be fetching transactions that match the address.\n\nFor downloading transactions unless you frequently receive\ntransactions you wont be fetching every block. Or are you assuming\nbloom filters dialled up to the point of huge false positives? You\nsaid otherwise.\n\nMid-term I'd say you want some basic request tunneling as part of\nbitcoin, that maybe isnt Tor, to avoid sharing their fate if Tor\ncontroversies are a risk to Tor service. Some of the bitcoin-Tor\nspecific weak points could maybe then be addressed.\n\nRelatedly I think bitcoin could do with a store-and-forward message\nbus with privacy and strong reliability via redundancy (but less\nredundancy maybe than consensus all-nodes must receiving and agree and\nstore forever). That provides an efficient store-and-forward SPV\nreceivable stealth-address solution that doesnt suck: send the\nrecipient their payment, if they like it they broadcast it themselves.\nAs a bonus store-and-forward message mixes are better able to provide\nmeaningful network privacy than interactive privacy networks. You\ncould spend over the same channel\n\nYou seem to be saying at one point that Tor is useless against\npervasive eavesdropper threat model (which I am not sure I agree with,\nminimally it makes them work for the info and adds uncertainty; and\nnot been paying super close attention but I think some of the Snowden\nreleases suggest Tor is a net win) and secondly that other types of\nattackers are disinterested (how do we know that?) or maybe that you\ndont care about privacy vs them (maybe some users do!)\n\nIt would certainly be nice to get real privacy from a wider range of\nattackers but nothing (current situation) is clearly worse; using\nblock bloom filters we'd make the pervasive case harder work, and the\nnosy full node learn nothing.\n\nAdam\n\nOn 21 February 2015 at 13:28, Mike Hearn \u003cmike at plan99.net\u003e wrote:\n\u003e Let's put the UTXO commitments/anti-fraud proofs to one side for a moment. I\n\u003e would like to see them happen one day, but they aren't critical to these\n\u003e protocols and are just proving to be a distraction.\n\u003e\n\u003e\n\u003e\u003e\n\u003e\u003e Then they make fresh random connections to different nodes and request\n\u003e\u003e download of the respective individual transactions from the full node.\n\u003e\n\u003e\n\u003e ...\n\u003e\n\u003e\u003e About privacy the node can make different random connections to\n\u003e\u003e different nodes to fetch addresses ..... The full node cant\n\u003e\u003e correlate the addresses as belonging to the same person by correlating\n\u003e\u003e the download requests for them, because they are made via different\n\u003e\u003e nodes.\n\u003e\n\u003e\n\u003e Apologies for the wall of text, but I don't think this will work nor solve\n\u003e any real problem. And I must justify such a strong statement clearly.\n\u003e\n\u003e First: technical issues\n\u003e\n\u003e When you download the per-block Bloom filter and test, what you get back is\n\u003e a set of script elements (addresses, keys, OP_RETURN tags etc). But then in\n\u003e the next step you are saying that you connect to random peers and request\n\u003e individual transactions. We don't know that at this point. All we know are a\n\u003e set of addresses that possibly matched. So I think what you mean is \"wallets\n\u003e connect to random peers and request transactions in block N that match a\n\u003e given set of addresses\".\n\u003e\n\u003e This is what Bloom filtering already does, of course. Doing the test against\n\u003e the per-block filter first doesn't seem to buy us much because with\n\u003e thousands of transactions per block, even a very tiny FP rate will still\n\u003e trigger a match on every single one.\n\u003e\n\u003e The second problem I see is that we can't do this in parallel because of the\n\u003e following edge case: wallet contains key K and someone sends it money using\n\u003e an OP_CHECKSIG output. The input which spends this output does not contain\n\u003e any predictable data, thus we do not know what to look for in the following\n\u003e blocks to detect a spend of it until we have seen the first transaction and\n\u003e know its hash.\n\u003e\n\u003e In practice this means we must either scan through the chain in sequence and\n\u003e update our matching criteria if we see such an output (this is what the\n\u003e Bloom filtering protocol already does server-side), or we must constrain the\n\u003e user such that output scripts always force repetition of predictable data -\n\u003e this is what mostly happens today due to pay-to-address outputs, but not\n\u003e always, and correctness is more important than completeness.\n\u003e\n\u003e If we can't do it in parallel then we must suffer a node round-trip for\n\u003e every single block we traverse, because we can't request long runs of blocks\n\u003e with a single command. That latency will kill performance dead. It's a non\n\u003e starter.\n\u003e\n\u003e But let's imagine we don't care about OP_CHECKSIG outputs and are willing to\n\u003e ignore them. There are cases where they are the best and most efficient\n\u003e technical solution, but let's put that to one side.\n\u003e\n\u003e The primary difference after making the above changes are that no one node\n\u003e gets a filter containing all our keys and addresses. I don't think a per\n\u003e block pre-test filter would gain us much efficiency so from a privacy\n\u003e perspective this is what it boils down to - sharding of the scan.\n\u003e\n\u003e But we can already do this with the current Bloom filtering protocol.\n\u003e BitcoinJ doesn't do so because having multiple parallel scans uses up\n\u003e network IOPs which are a resource of unknown quantity, and because stepping\n\u003e through the chain in parallel with multiple peers complicates the chain sync\n\u003e implementation quite a bit.\n\u003e\n\u003e Second: this doesn't solve any real problem\n\u003e\n\u003e Who cares about collecting Bloom filters off the wire?\n\u003e\n\u003e Commercial fraudsters? Doubtful. There are much easier ways to steal money.\n\u003e\n\u003e Spies? Yes! Without a doubt NSA/GCHQ are building or have built databases of\n\u003e IP addresses to Bitcoin addresses and are correlating it via XKEYSCORE with\n\u003e other identifiable information.\n\u003e\n\u003e However, just requesting data from different nodes doesn't help with that,\n\u003e because they are doing DPI and can still see all the connections, so can\n\u003e still combine all the filters or received transactions.\n\u003e\n\u003e Ah, you say, but we're requesting everything via Tor.\n\u003e\n\u003e Yes, about that. We've implemented that already. Some wallets even use it by\n\u003e default, like Alon \u0026 Chris' Bitcoin Authenticator wallet. It's just one line\n\u003e of code to activate.\n\u003e\n\u003e Unfortunately there are severe practical problems to using Tor:\n\u003e\n\u003e If you don't have a warm consensus then booting it up is very slow. We're\n\u003e already slower than our competitors like blockchain.info and\n\u003e VISA/MasterCard, we can't make this any worse.\n\u003e\n\u003e This one is possibly not that big a deal and can be solved with more\n\u003e technical tricks.\n\u003e\n\u003e Bitcoin Core's DoS strategy means anyone can block all of Tor quite\n\u003e trivially. So we'd need some complicated fallback mechanism to disable Tor\n\u003e remotely, in case someone did this.\n\u003e\n\u003e Bitcoin wire traffic isn't encrypted or authenticated so it makes it much\n\u003e easier for trolls to tamper with lots of wire traffic at once, whereas\n\u003e without Tor it's much harder.\n\u003e\n\u003e Let's ignore the fact that the Tor project insists on poking the law\n\u003e enforcement bear with rusty nails, and has been receiving tipoffs about\n\u003e plans to seize directory authorities. How much Bitcoin wallets should rely\n\u003e on Tor sticking around is a debate for some other time.\n\u003e\n\u003e There's a much simpler way to fix all of this - add opportunistic encryption\n\u003e to the wire protocol.",
"sig": "58c12a6cbe00bef165644d1392941b11b75e21888d215e14f00450fa538bfe13ae70acc701ce92c7466342314ffb66a90bdd66733420819601e6b10c9710c42b"
}