I am investigating why it can take many minutes to synchronize a few thousand (a few MB of) transactions.
The Satoshi client transaction forwarder employs some techniques to obfuscate the source of transactions. In particular, if a node requests transactions (a INV message), it randomly defers announcing knowledge of 3/4ths of the transactions to subsequent requests, recursively. And it slows down the speed of subsequent requests. The idea is that doing so may give a transaction time to propagate to you via other nodes.
While this feature may be valuable for people who are using the wallet functionality (to obfuscate their locally created txns), I wonder if it is valuable for nodes that are being deployed mainly to help route bitcoin traffic and distribute it to SPV clients.
In particular, I am contemplating adding an option that reduces or eliminates the transaction delays.
The use cases for the Satoshi client are fracturing into personal, mining, merchant/exchange, and super-node specializations... and ultimately I could see an option that lets the user choose one of these "personalities" (presuming that different clients don't grow to fulfil separate roles) which then changes all of the specific options to fit that personality.
What do you think?
The Satoshi client transaction forwarder employs some techniques to obfuscate the source of transactions. In particular, if a node requests transactions (a INV message), it randomly defers announcing knowledge of 3/4ths of the transactions to subsequent requests, recursively. And it slows down the speed of subsequent requests. The idea is that doing so may give a transaction time to propagate to you via other nodes.
While this feature may be valuable for people who are using the wallet functionality (to obfuscate their locally created txns), I wonder if it is valuable for nodes that are being deployed mainly to help route bitcoin traffic and distribute it to SPV clients.
In particular, I am contemplating adding an option that reduces or eliminates the transaction delays.
The use cases for the Satoshi client are fracturing into personal, mining, merchant/exchange, and super-node specializations... and ultimately I could see an option that lets the user choose one of these "personalities" (presuming that different clients don't grow to fulfil separate roles) which then changes all of the specific options to fit that personality.
What do you think?