Echo broadcast transactions to subscribed Electrum clients. - #928
Open
eynhaender wants to merge 1 commit into
Open
eynhaender wants to merge 1 commit into
eynhaender wants to merge 1 commit into
Conversation
There is no tx pool, so a client's own broadcast tx (or another client's) was never chased until archived, leaving scripthash subscribers with no signal beyond a one-shot poll they had to know to make. Subscribe each Electrum channel to the transaction broadcast, mirroring the tx/block protocols, and on receipt check it against that channel's active scripthash subscriptions. On a match, recompute status - folding in a channel-strand snapshot of not-yet-archived retained transactions, since retained() is channel-strand protected and this runs on the notification strand - and push the same blockchain.scripthash.subscribe notification real confirmations already use. Tradeoff: the retained() snapshot (bounded to 16 entries) is copied on every relayed broadcast a channel has active subscriptions for, before it is known whether that specific transaction is relevant, because touches() can only be checked against address_subscriptions_ on the notification strand. Cheap given the bound, but a real cost on every broadcast, not just matching ones.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There is no tx pool, so a client's own broadcast tx (or another client's) was never chased until archived, leaving scripthash subscribers with no signal beyond a one-shot poll they had to know to make.
Subscribe each Electrum channel to the transaction broadcast, mirroring the tx/block protocols, and on receipt check it against that channel's active scripthash subscriptions. On a match, recompute status - folding in a channel-strand snapshot of not-yet-archived retained transactions, since retained() is channel-strand protected and this runs on the notification strand - and push the same blockchain.scripthash.subscribe notification real confirmations already use.
Tradeoff: the retained() snapshot (bounded to 16 entries) is copied on every relayed broadcast a channel has active subscriptions for, before it is known whether that specific transaction is relevant, because touches() can only be checked against address_subscriptions_ on the notification strand. Cheap given the bound, but a real cost on every broadcast, not just matching ones.