Skip to content

feat(platform)!: add the IdentityKeyLimitsUpdate state transition - #4807

Open
QuantumExplorer wants to merge 3 commits into
v4.2-devfrom
feat/identity-key-limits-update
Open

QuantumExplorer wants to merge 3 commits into
v4.2-devfrom
feat/identity-key-limits-update

Conversation

@QuantumExplorer

@QuantumExplorer QuantumExplorer commented Sep 17, 2026

Copy link
Copy Markdown
Member

Issue being fixed or feature implemented

#4798 gave AUTHENTICATION keys a total_budget and an expires_at, and #4802 the query for what is left. A spent or expiring key still had to be replaced: "Changing limits. There is no top-up and no extension. Register a new key."

This adds IdentityKeyLimitsUpdate, a state transition that raises the budget of one of the identity's keys or moves its expiry later.

What was done?

Wire format (rs-dpp)

  • StateTransition::IdentityKeyLimitsUpdate (type 23, appended last), IdentityKeyLimitsUpdateTransitionV0 { identity_id, revision, nonce, key_id, total_budget: Option<Credits>, expires_at: Option<TimestampMillis>, user_fee_increase, signature_public_key_id, signature }. Both limits carry the new absolute value: the client already holds a fresh identity because the transition claims its next revision (as IdentityUpdate does), and what the wire carries is exactly what the execution proof shows. "Top up by X" is SDK sugar.
  • security_level_requirement is [MASTER, CRITICAL]; a CRITICAL signer must carry no limits itself (checked against state, see below). Active from protocol version 14 (active_version_range, IDENTITY_KEY_LIMITS_UPDATE_INITIAL_PROTOCOL_VERSION).
  • IdentityPublicKeySettersV1 (set_total_budget, set_expires_at).

Rules. An update only ever loosens: a budget can grow, an expiry can move later, a limit the key does not have cannot be added; tightening is what disabling is for. This keeps the arithmetic safe (remaining <= total_budget always holds, both grow by the same amount, so no overflow is possible).

Stage Rule Error
basic structure at least one field set; a set budget is not zero new 10539 IdentityKeyLimitsUpdateEmptyError; 10537
identity signature v1 (PV14, in place) signer has no limits, so a key can never top itself up; refused before the remaining budget is read new 20017 PublicKeyWithLimitsCannotUpdateKeyLimitsError
advanced structure revision == current + 1 40203, paid
state key exists and is enabled; has each limit being raised; each new value is greater; the key is not expired afterwards (an expired key may be revived by an extension, not topped up while it stays expired) 40209 / 40208; new 40220 IdentityPublicKeyLimitNotSetError; new 40221 IdentityPublicKeyLimitNotRaisedError; 40219; all paid

The minimum fee reuses state_transition_min_fees.identity_update (same shape of work), so the shipped fee tables are untouched.

Drive

  • update_identity_key_limits (identity update methods v2, None before 14): reads the key, sets the limits, rewrites it with replace_key_in_storage_operations priced by the byte delta (a bigger varint, or an expiry that was absent), refreshes the key references (they carry the key's value hash, as the disable path does), and add_to_identity_key_budget (new budget slot) raises the remaining budget by the difference. The action emits UpdateIdentityRevision, UpdateIdentityNonce, UpdateIdentityKeyLimits.
  • Proof: the identity's keys with revision, as for IdentityUpdate. The verifier requires the claimed revision and the key holding exactly the requested values. That authenticates the resulting state, not this exact transition (the nonce and fee increase are not stored), so the outcome is classified as affected state and the SDKs use the affected-state wait.

Clients

  • rs-sdk: UpdateIdentityKeyLimits on Identity (update_key_limits, top_up_key_budget, extend_key_expiry); the signing key defaults to the first MASTER, else the first CRITICAL key without limits and without contract bounds, that the signer holds. Resolves to the key as stored after the update.
  • wasm-dpp2: IdentityKeyLimitsUpdate wrapper and the dispatch arms (type number 23, nonce, owner id, verifyPublicKey).
  • wasm-sdk: identityUpdateKeyLimits({ identity, keyId, addBudget?, expiresAt?, signer, settings? }); JS speaks "add", the wasm layer computes the total from the identity's key. js-evo-sdk: identities.updateKeyLimits.
  • wasm-dpp (legacy): the factory refuses the type with a message; the three new errors are mapped.

Docs: a "Raising Limits" section (rules, decision diagram, Drive, proof) in book/src/data-model/key-limits.md, the protocol reference, the enum listings in book/src/state-transitions/lifecycle.md (which also stopped at type 14), the evo-sdk guide, v14.rs.

Not included: Swift, Kotlin and FFI bindings; strategy-tests generation; lowering or removing limits (disable the key instead).

Note: #4760 on v4.3-dev also claims type 23; whichever lands second renumbers.

How Has This Been Tested?

  • rs-dpp: round trip, every limit field covered by the sig hash and the signature excluded, JSON and value wire shapes, the type tables, frozen error discriminants (17, 107, 108). cargo test -p dpp --all-features --lib -- identity_key_limits_update state_transition_types state_error signature_error umbrella (68 pass).
  • rs-drive (update_identity_key_limits): total and remaining growing by the same amount (with prior spending), expiry alone, estimate at least the actual rewrite, the whole database hash-consistent after the reference refresh (visualize_verify_grovedb), add_to_identity_key_budget on a budgeted key only, protocol version 13 inactive. cargo test -p drive --lib -- update_identity_key_limits (6 pass).
  • rs-drive-abci (identity_key_limits_update/tests.rs, through process_raw_state_transitions, check_tx and the proof): a spent key topped up and admitted again; an expired key revived by an extension and refused while it stays expired; each refusal pinned to its code (paid ones bump the nonce); MASTER and unlimited CRITICAL accepted, limited (20017) and HIGH refused, the builder refusing HIGH up front; mempool admission; proof round trip (affected state) with a wrong total not verifying; protocol version 13 refused at decode. cargo test -p drive-abci --lib -- identity_key_limits_update (13 pass).
  • dash-sdk offline suite plus the signing-key selection unit tests (a contract-bound CRITICAL key is skipped), wasm-dpp2 unit tests; new wasm-dpp2 and js-evo-sdk specs added but not run locally (no node_modules in this checkout), nor the wasm-sdk functional tests.
  • cargo fmt --all -- --check; cargo clippy ... --all-targets -- -D warnings over dpp, drive, drive-abci, platform-version, dash-sdk, wasm-dpp2, wasm-dpp; cargo clippy -p wasm-sdk --target wasm32-unknown-unknown (only the pre-existing DocumentPropertyType warning of v4.2-dev); cargo check --workspace --all-targets; cargo check -p drive --no-default-features --features verify.

Breaking Changes

Consensus-breaking, gated to protocol version 14: a new state transition type, new consensus errors, a rewrite of a stored key. Nothing changes for protocol versions up to 13.

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

🤖 Generated with Claude Code

QuantumExplorer and others added 2 commits September 18, 2026 00:46
A MASTER key, or a CRITICAL authentication key without limits, can raise the
total budget of one of the identity's keys (the remaining budget grows by the
same amount) or move its expiry later. An update only ever loosens limits.
State transition type 23, gated to protocol version 14; the identity revision
is bumped and the proof of execution binds the rewritten key.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Adds Identity::update_key_limits, top_up_key_budget and extend_key_expiry to
the Rust SDK, the IdentityKeyLimitsUpdate wrapper to wasm-dpp2,
identityUpdateKeyLimits to wasm-sdk and identities.updateKeyLimits to
js-evo-sdk, and documents the transition in the book and the protocol
reference.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 120 files, which is 20 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 27267453-1e37-4f03-8fd4-69df1d2f8293

📥 Commits

Reviewing files that changed from the base of the PR and between a14ace2 and 41e733e.

📒 Files selected for processing (120)
  • book/src/data-model/key-limits.md
  • book/src/evo-sdk/state-transitions.md
  • book/src/state-transitions/lifecycle.md
  • docs/protocol/authentication-key-limits.md
  • packages/js-evo-sdk/src/identities/facade.ts
  • packages/js-evo-sdk/tests/unit/facades/identities.spec.ts
  • packages/rs-dpp/src/errors/consensus/basic/basic_error.rs
  • packages/rs-dpp/src/errors/consensus/basic/identity/identity_key_limits_update_empty_error.rs
  • packages/rs-dpp/src/errors/consensus/basic/identity/mod.rs
  • packages/rs-dpp/src/errors/consensus/codes.rs
  • packages/rs-dpp/src/errors/consensus/signature/mod.rs
  • packages/rs-dpp/src/errors/consensus/signature/public_key_with_limits_cannot_update_key_limits_error.rs
  • packages/rs-dpp/src/errors/consensus/signature/signature_error.rs
  • packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_limit_not_raised_error.rs
  • packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_limit_not_set_error.rs
  • packages/rs-dpp/src/errors/consensus/state/identity/mod.rs
  • packages/rs-dpp/src/errors/consensus/state/state_error.rs
  • packages/rs-dpp/src/identity/identity_public_key/accessors/mod.rs
  • packages/rs-dpp/src/identity/identity_public_key/accessors/v1/mod.rs
  • packages/rs-dpp/src/identity/identity_public_key/v1/accessors/mod.rs
  • packages/rs-dpp/src/state_transition/mod.rs
  • packages/rs-dpp/src/state_transition/state_transition_types.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/accessors/mod.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/accessors/v0/mod.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/fields.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/identity_signed.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/methods/mod.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/methods/v0/mod.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/mod.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/state_transition_estimated_fee_validation.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/state_transition_like.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/v0/identity_signed.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/v0/mod.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/v0/state_transition_like.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/v0/types.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/v0/v0_methods.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/v0/version.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/identity_key_limits_update_transition/version.rs
  • packages/rs-dpp/src/state_transition/state_transitions/identity/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/common/validate_state_transition_identity_signed/v1/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/address_balances_and_nonces.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/address_witnesses.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/addresses_minimum_balance.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/advanced_structure_without_state.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/basic_structure.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/identity_balance.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/identity_based_signature.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/identity_nonces.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/is_allowed.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/processor/traits/state.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/advanced_structure/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/advanced_structure/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/basic_structure/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/basic_structure/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/nonce/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/nonce/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/state/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/state/v0/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_key_limits_update/tests.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs
  • packages/rs-drive-abci/src/execution/validation/state_transition/transformer/mod.rs
  • packages/rs-drive-abci/tests/strategy_tests/verify_state_transitions.rs
  • packages/rs-drive/src/drive/identity/key/budget/add_to_identity_key_budget/mod.rs
  • packages/rs-drive/src/drive/identity/key/budget/add_to_identity_key_budget/v0/mod.rs
  • packages/rs-drive/src/drive/identity/key/budget/mod.rs
  • packages/rs-drive/src/drive/identity/update/methods/mod.rs
  • packages/rs-drive/src/drive/identity/update/methods/update_identity_key_limits/mod.rs
  • packages/rs-drive/src/drive/identity/update/methods/update_identity_key_limits/v0/mod.rs
  • packages/rs-drive/src/prove/prove_state_transition/v0/mod.rs
  • packages/rs-drive/src/state_transition_action/action_convert_to_operations/identity/identity_key_limits_update_transition.rs
  • packages/rs-drive/src/state_transition_action/action_convert_to_operations/identity/mod.rs
  • packages/rs-drive/src/state_transition_action/action_convert_to_operations/mod.rs
  • packages/rs-drive/src/state_transition_action/identity/identity_key_limits_update/mod.rs
  • packages/rs-drive/src/state_transition_action/identity/identity_key_limits_update/transformer.rs
  • packages/rs-drive/src/state_transition_action/identity/identity_key_limits_update/v0/mod.rs
  • packages/rs-drive/src/state_transition_action/identity/identity_key_limits_update/v0/transformer.rs
  • packages/rs-drive/src/state_transition_action/identity/mod.rs
  • packages/rs-drive/src/state_transition_action/mod.rs
  • packages/rs-drive/src/state_transition_action/system/bump_identity_nonce_action/transformer.rs
  • packages/rs-drive/src/state_transition_action/system/bump_identity_nonce_action/v0/transformer.rs
  • packages/rs-drive/src/util/batch/drive_op_batch/identity.rs
  • packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs
  • packages/rs-platform-version/src/version/dpp_versions/dpp_state_transition_serialization_versions/mod.rs
  • packages/rs-platform-version/src/version/dpp_versions/dpp_state_transition_serialization_versions/v1.rs
  • packages/rs-platform-version/src/version/dpp_versions/dpp_state_transition_serialization_versions/v2.rs
  • packages/rs-platform-version/src/version/dpp_versions/dpp_state_transition_serialization_versions/v3.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/mod.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v1.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v10.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v2.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v3.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v4.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v5.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v6.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v7.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v8.rs
  • packages/rs-platform-version/src/version/drive_abci_versions/drive_abci_validation_versions/v9.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_identity_method_versions/mod.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_identity_method_versions/v1.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_identity_method_versions/v2.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_state_transition_method_versions/mod.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_state_transition_method_versions/v1.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_state_transition_method_versions/v2.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_state_transition_method_versions/v3.rs
  • packages/rs-platform-version/src/version/drive_versions/drive_state_transition_method_versions/v4.rs
  • packages/rs-platform-version/src/version/feature_initial_protocol_versions.rs
  • packages/rs-platform-version/src/version/v14.rs
  • packages/rs-sdk/src/platform/transition.rs
  • packages/rs-sdk/src/platform/transition/update_identity_key_limits.rs
  • packages/wasm-dpp/src/errors/consensus/consensus_error.rs
  • packages/wasm-dpp/src/state_transition/state_transition_factory.rs
  • packages/wasm-dpp2/src/identity/mod.rs
  • packages/wasm-dpp2/src/identity/transitions/key_limits_update_transition.rs
  • packages/wasm-dpp2/src/identity/transitions/mod.rs
  • packages/wasm-dpp2/src/lib.rs
  • packages/wasm-dpp2/src/state_transitions/base/state_transition.rs
  • packages/wasm-dpp2/tests/unit/IdentityKeyLimitsUpdateTransition.spec.ts
  • packages/wasm-sdk/README.md
  • packages/wasm-sdk/src/state_transitions/identity.rs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added this to the v4.2.0 milestone Sep 17, 2026
@github-actions

github-actions Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

📖 Book Preview built successfully.

Download the preview from the workflow artifacts.
To view locally: download the artifact, unzip, and open index.html.

Updated at 2026-09-17T19:29:48.872Z

@github-actions

github-actions Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

PR Hygiene

State: waiting-bots · commit 41e733e025526f496a4f92acfb62b23c139d1539

  • coderabbitai has not reported for the current head
  • thepastaclaw has not reported for the current head

Self-review is an author attestation that you have read the diff:
/self-reviewed — covers everything pushed so far; post it again after a new push.

This report does not bypass CI or repository protection rules.

@thepastaclaw

thepastaclaw commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

⚠️ DEGRADED — Priority review — 4th in line, starts as soon as a slot frees (commit 41e733e)
Estimated review time once started: ~50 min (two-phase automated review; median of recent runs).
The primary review models are currently out of quota; this review will run on stand-in models and be marked as degraded.

@codecov

codecov Bot commented Sep 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 87.32782% with 184 lines in your changes missing coverage. Please review.
✅ Project coverage is 79.64%. Comparing base (c96ff32) to head (41e733e).
⚠️ Report is 2 commits behind head on v4.2-dev.

Files with missing lines Patch % Lines
...tate_transitions/identity_key_limits_update/mod.rs 72.72% 21 Missing ⚠️
...pdate/methods/update_identity_key_limits/v0/mod.rs 86.42% 19 Missing ⚠️
...ntity/identity_key_limits_update/v0/transformer.rs 50.00% 19 Missing ⚠️
...state_transition_was_executed_with_proof/v0/mod.rs 61.36% 17 Missing ⚠️
...y/update/methods/update_identity_key_limits/mod.rs 93.60% 16 Missing ⚠️
...ocessor/traits/advanced_structure_without_state.rs 36.36% 14 Missing ⚠️
...ntity/identity_key_limits_update_transition/mod.rs 92.85% 12 Missing ⚠️
...ransitions/identity_key_limits_update/nonce/mod.rs 70.00% 9 Missing ⚠️
...ntity/key/budget/add_to_identity_key_budget/mod.rs 70.96% 9 Missing ⚠️
...on/state_transition/processor/traits/is_allowed.rs 33.33% 8 Missing ⚠️
... and 12 more
Additional details and impacted files
@@             Coverage Diff              @@
##           v4.2-dev    #4807      +/-   ##
============================================
+ Coverage     77.43%   79.64%   +2.21%     
============================================
  Files          2944     2963      +19     
  Lines        424764   424934     +170     
============================================
+ Hits         328916   338439    +9523     
+ Misses        95848    86495    -9353     
Components Coverage Δ
dpp 78.32% <93.99%> (+1.98%) ⬆️
drive 80.47% <86.44%> (+1.38%) ⬆️
drive-abci 80.88% <81.14%> (+3.91%) ⬆️
sdk ∅ <ø> (∅)
dapi-client ∅ <ø> (∅)
platform-version ∅ <ø> (∅)
platform-value 87.13% <ø> (+0.53%) ⬆️
platform-wallet ∅ <ø> (∅)
drive-proof-verifier 29.31% <ø> (+2.23%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@QuantumExplorer QuantumExplorer left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two remaining issues in the execution-proof and WASM API paths.

Comment thread packages/wasm-dpp2/src/identity/transitions/key_limits_update_transition.rs Outdated
The proof of a key limits update shows the resulting key and revision, not
the nonce, so it is classified as affected state and the SDKs wait for it as
such. The Rust SDK skips contract-bound CRITICAL keys when it picks a signer.
The wasm-dpp2 wrapper reads an undefined userFeeIncrease as the default.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai review

No review for 41e733e0 yet, so PR Hygiene is asking once. If nothing arrives, the requirement is dropped for this commit and the pull request is labelled bot-review-missed.

@github-actions

Copy link
Copy Markdown
Contributor

@thepastaclaw review

No review for 41e733e0 yet, so PR Hygiene is asking once. If nothing arrives, the requirement is dropped for this commit and the pull request is labelled bot-review-missed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants