This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
Implement NO_DUPLICATE_DEFERRED_ID protocol feature #7072
Merged
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.
Change Description
Resolves #6115.
This PR adds support for the
NO_DUPLICATE_DEFERRED_ID
protocol feature which makes changes to ensure that it is virtually impossible for deferred transactions to end up with a transaction ID that collides with the ID of any other transaction that is scheduled/retired in the blockchain, and also makes it possible for a contract to know the transaction ID of the scheduled deferred transaction prior to sending it.This PR also makes changes to better handle the error case of a transaction containing disallowed extensions.
This PR introduces a new unit test protocol_feature_tests/no_duplicate_deferred_id_test to test the behavior of this new protocol feature. The deferred_test test contract was augmented to meet the needs of the new unit test.
Consensus Changes
Makes the
NO_DUPLICATE_DEFERRED_ID
protocol feature available. See above description and #6115 for details.The
NO_DUPLICATE_DEFERRED_ID
protocol feature depends on theREPLACE_DEFERRED
protocol feature (#6997). See this comment for details about what that means.API Changes
Documentation Additions