Guarantee the order of transactions in the block endpoint #489
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.
Motivation
This commit guarantees the order of transactions in the block endpoint. This can benefit clients in a certain way. For example, some Rosetta client requires transaction kept in order so that they can identify the coinbase (lower-case c) transaction in one block.
Solution
It does so by creating a map of fetched transactions and using that map to return the transactions in the original order they had in the block.
FetchedTransaction
to represent fetched transactionsfetchChannelTransactions
to use the newFetchedTransaction
structUnsafeTransactions
to use the newFetchedTransaction
struct and create a map of fetched transactionsUnsafeTransactions
to use the fetched transactions from the mapThis PR also improves some security issues raised by salus check.
Open questions