Defer owned object double spending transactions - #26886
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
akichidis
temporarily deployed
to
sui-typescript-aws-kms-test-env
June 4, 2026 14:18 — with
GitHub Actions
Inactive
mystenmark
reviewed
Jun 4, 2026
akichidis
temporarily deployed
to
sui-typescript-aws-kms-test-env
June 5, 2026 09:58 — with
GitHub Actions
Inactive
akichidis
temporarily deployed
to
sui-typescript-aws-kms-test-env
June 5, 2026 10:58 — with
GitHub Actions
Inactive
akichidis
force-pushed
the
akichidis/defer-double-spend
branch
from
June 5, 2026 11:07
46a69b9 to
73b4bd6
Compare
akichidis
temporarily deployed
to
sui-typescript-aws-kms-test-env
June 5, 2026 11:07 — with
GitHub Actions
Inactive
akichidis
temporarily deployed
to
sui-typescript-aws-kms-test-env
June 5, 2026 13:14 — with
GitHub Actions
Inactive
akichidis
marked this pull request as ready for review
June 5, 2026 13:25
akichidis
temporarily deployed
to
sui-typescript-aws-kms-test-env
June 5, 2026 13:25 — with
GitHub Actions
Inactive
mystenmark
reviewed
Jun 5, 2026
| // defer it as a penalty. | ||
| if let Some(conflict_info) = state | ||
| .contested_transaction_digests | ||
| .get(transaction.tx().digest()) |
Contributor
There was a problem hiding this comment.
every call to tx().digest() is a fresh blake2b hash, lets pull the digest out into a local variable once at the top of this function
akichidis
force-pushed
the
akichidis/defer-double-spend
branch
from
June 15, 2026 21:37
e7bca8e to
115a994
Compare
akichidis
force-pushed
the
akichidis/defer-double-spend
branch
from
July 2, 2026 17:59
3552d95 to
b8848ae
Compare
8 tasks
mwtian
force-pushed
the
akichidis/defer-double-spend
branch
from
July 20, 2026 20:39
b8848ae to
c22bcb0
Compare
mwtian
temporarily deployed
to
sui-typescript-aws-kms-test-env
July 20, 2026 20:39 — with
GitHub Actions
Inactive
mystenmark
approved these changes
Jul 21, 2026
Detect transactions that contend for the same owned-object lock within a consensus commit and defer the winning transaction by one consensus round, subject to the existing congestion-control deferral limit. Attribute contention to sequencing authorities, expose winner and conflict metrics, preserve the first recorded winner author, and cover duplicate winners and multi-author conflicts with regression tests. Gate the behavior behind defer_owned_object_double_spend at protocol version 132 and update the affected snapshots.
mwtian
force-pushed
the
akichidis/defer-double-spend
branch
from
July 21, 2026 18:38
c22bcb0 to
67a2406
Compare
mwtian
temporarily deployed
to
sui-typescript-aws-kms-test-env
July 21, 2026 18:38 — with
GitHub Actions
Inactive
mwtian
enabled auto-merge (squash)
July 21, 2026 18:39
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.
Description
Today conflicting transactions on owned object locks result to the drop of transactions from the commit output - when processing on consensus handler - and only the transaction that managed to acquire the locks eventually execute.
This PR will detect, in the same commit, the presence of conflicting transactions and will enforce on execution deferral , by 1 round, the transaction that acquire successfully the locks.
Release plan
Test plan
CI/PT/Antithesis