Ungate CAP-0083 and CAP-0085 - #565
Merged
Merged
Conversation
Repins the xdr submodule to stellar-xdr main (stellar/stellar-xdr#311), which removes the CAP_0083 and CAP_0085_EXECUTABLE_REF ifdefs, and drops the matching cap_0083 / cap_0085_executable_ref crate features. Their types are now generated unconditionally. Also drops the two hand-written gates on those features: the VERSION.features list in lib.rs and the ScVal::ExecutableTag arm in scval_validations.rs, which would otherwise leave the match non-exhaustive. The repin also crosses stellar/stellar-xdr#307, so the .x now carries CAP_0084_MUXED_CONTRACT ifdefs. That forces a cap_0084_muxed_contract feature to be declared (generated code cfgs on it) plus a Display arm for ScAddress::MuxedContract; both are taken verbatim from the in-flight SPIKE stellar#552. The feature is off by default.
Contributor
There was a problem hiding this comment.
Pull request overview
Repins Stellar XDR to #311, ungates CAP-0083/CAP-0085 types, and introduces the gated CAP-0084 muxed-contract bindings.
Changes:
- Removes obsolete CAP-0083/CAP-0085 feature gates.
- Adds the optional
cap_0084_muxed_contractfeature and generated types. - Regenerates Rust bindings, XDR metadata, and JSON schemas.
Reviewed changes
Copilot reviewed 107 out of 120 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
Cargo.toml |
Updates XDR feature declarations. |
src/generated.rs |
Updates hashes and generated module exports. |
src/generated/contract_executable.rs |
Ungates external executable references. |
src/generated/contract_executable_external_ref.rs |
Ungates the external-reference structure. |
src/generated/contract_executable_type.rs |
Ungates the external-reference discriminant. |
src/generated/muxed_contract.rs |
Adds the gated muxed-contract type. |
src/generated/sc_address.rs |
Adds the gated muxed-contract address arm. |
src/generated/sc_address_type.rs |
Adds the gated address discriminant. |
src/generated/sc_val.rs |
Ungates executable-tag values. |
src/generated/sc_val_type.rs |
Ungates the executable-tag discriminant. |
src/generated/stellar_value.rs |
Updates CAP-0083 documentation. |
src/generated/stellar_value_ext.rs |
Ungates empty transaction-set values. |
src/generated/stellar_value_proposed_value.rs |
Ungates proposed ledger values. |
src/generated/stellar_value_type.rs |
Ungates the empty-set discriminant. |
src/generated/type_enum.rs |
Updates dynamic APIs for the changed types. |
src/lib.rs |
Updates reported XDR features. |
src/scval_validations.rs |
Ungates executable-tag validation. |
src/str.rs |
Adds muxed-contract display handling. |
xdr |
Repins the upstream XDR submodule. |
xdr-definitions-json/xdr.json |
Regenerates XDR definition metadata. |
xdr-json/AuthenticatedMessage.json |
Regenerates transitive schemas. |
xdr-json/AuthenticatedMessageV0.json |
Regenerates transitive schemas. |
xdr-json/BucketEntry.json |
Regenerates transitive schemas. |
xdr-json/ContractDataEntry.json |
Adds ungated Soroban definitions. |
xdr-json/ContractEvent.json |
Adds ungated Soroban definitions. |
xdr-json/ContractEventBody.json |
Adds ungated Soroban definitions. |
xdr-json/ContractEventV0.json |
Adds ungated Soroban definitions. |
xdr-json/ContractExecutable.json |
Adds the external-reference union arm. |
xdr-json/ContractExecutableExternalRef.json |
Adds the external-reference schema. |
xdr-json/ContractExecutableType.json |
Adds the external-reference enum value. |
xdr-json/CreateContractArgs.json |
Adds external-reference definitions. |
xdr-json/CreateContractArgsV2.json |
Adds ungated Soroban definitions. |
xdr-json/DependentTxCluster.json |
Regenerates transitive schemas. |
xdr-json/DiagnosticEvent.json |
Adds ungated Soroban definitions. |
xdr-json/FeeBumpTransaction.json |
Regenerates transitive schemas. |
xdr-json/FeeBumpTransactionEnvelope.json |
Regenerates transitive schemas. |
xdr-json/FeeBumpTransactionInnerTx.json |
Regenerates transitive schemas. |
xdr-json/GeneralizedTransactionSet.json |
Regenerates transitive schemas. |
xdr-json/HashIdPreimage.json |
Adds ungated Soroban definitions. |
xdr-json/HashIdPreimageSorobanAuthorization.json |
Adds ungated Soroban definitions. |
xdr-json/HashIdPreimageSorobanAuthorizationWithAddress.json |
Adds ungated Soroban definitions. |
xdr-json/HostFunction.json |
Adds ungated Soroban definitions. |
xdr-json/HotArchiveBucketEntry.json |
Regenerates transitive schemas. |
xdr-json/InvokeContractArgs.json |
Adds ungated Soroban definitions. |
xdr-json/InvokeHostFunctionOp.json |
Adds ungated Soroban definitions. |
xdr-json/InvokeHostFunctionSuccessPreImage.json |
Adds ungated Soroban definitions. |
xdr-json/LedgerCloseMeta.json |
Regenerates transitive schemas. |
xdr-json/LedgerCloseMetaBatch.json |
Regenerates transitive schemas. |
xdr-json/LedgerCloseMetaV0.json |
Regenerates transitive schemas. |
xdr-json/LedgerCloseMetaV1.json |
Regenerates transitive schemas. |
xdr-json/LedgerCloseMetaV2.json |
Regenerates transitive schemas. |
xdr-json/LedgerEntry.json |
Regenerates transitive schemas. |
xdr-json/LedgerEntryChange.json |
Regenerates transitive schemas. |
xdr-json/LedgerEntryChanges.json |
Regenerates transitive schemas. |
xdr-json/LedgerEntryData.json |
Regenerates transitive schemas. |
xdr-json/LedgerFootprint.json |
Adds ungated Soroban definitions. |
xdr-json/LedgerHeader.json |
Ungates empty transaction-set values. |
xdr-json/LedgerHeaderHistoryEntry.json |
Ungates empty transaction-set values. |
xdr-json/LedgerKey.json |
Adds ungated Soroban definitions. |
xdr-json/LedgerKeyContractData.json |
Adds ungated Soroban definitions. |
xdr-json/Operation.json |
Adds ungated Soroban definitions. |
xdr-json/OperationBody.json |
Regenerates transitive schemas. |
xdr-json/OperationMeta.json |
Regenerates transitive schemas. |
xdr-json/OperationMetaV2.json |
Adds ungated Soroban definitions. |
xdr-json/ParallelTxExecutionStage.json |
Regenerates transitive schemas. |
xdr-json/ParallelTxsComponent.json |
Regenerates transitive schemas. |
xdr-json/PersistedScpState.json |
Regenerates transitive schemas. |
xdr-json/PersistedScpStateV0.json |
Regenerates transitive schemas. |
xdr-json/RevokeSponsorshipOp.json |
Adds ungated Soroban definitions. |
xdr-json/ScAddressType.json |
Records the gated CAP-0084 discriminant. |
xdr-json/ScContractInstance.json |
Adds ungated Soroban definitions. |
xdr-json/ScMap.json |
Adds ungated Soroban definitions. |
xdr-json/ScMapEntry.json |
Adds ungated Soroban definitions. |
xdr-json/ScVal.json |
Adds the executable-tag union arm. |
xdr-json/ScValType.json |
Adds the executable-tag enum value. |
xdr-json/ScVec.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanAddressCredentials.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanAddressCredentialsWithDelegates.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanAuthorizationEntries.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanAuthorizationEntry.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanAuthorizedFunction.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanAuthorizedInvocation.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanCredentials.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanDelegateSignature.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanResources.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanTransactionData.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanTransactionMeta.json |
Adds ungated Soroban definitions. |
xdr-json/SorobanTransactionMetaV2.json |
Adds ungated Soroban definitions. |
xdr-json/StellarMessage.json |
Regenerates transitive schemas. |
xdr-json/StellarValue.json |
Ungates empty transaction-set values. |
xdr-json/StellarValueExt.json |
Adds the empty transaction-set union arm. |
xdr-json/StellarValueProposedValue.json |
Adds the proposed-value schema. |
xdr-json/StellarValueType.json |
Adds the empty-set enum value. |
xdr-json/StoredDebugTransactionSet.json |
Regenerates transitive schemas. |
xdr-json/StoredTransactionSet.json |
Regenerates transitive schemas. |
xdr-json/Transaction.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionEnvelope.json |
Regenerates transitive schemas. |
xdr-json/TransactionEvent.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionExt.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionHistoryEntry.json |
Regenerates transitive schemas. |
xdr-json/TransactionHistoryEntryExt.json |
Regenerates transitive schemas. |
xdr-json/TransactionMeta.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionMetaV1.json |
Regenerates transitive schemas. |
xdr-json/TransactionMetaV2.json |
Regenerates transitive schemas. |
xdr-json/TransactionMetaV3.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionMetaV4.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionPhase.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionResultMeta.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionResultMetaV1.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionSet.json |
Adds ungated Soroban definitions. |
xdr-json/TransactionSetV1.json |
Regenerates transitive schemas. |
xdr-json/TransactionSignaturePayload.json |
Regenerates transitive schemas. |
xdr-json/TransactionSignaturePayloadTaggedTransaction.json |
Regenerates transitive schemas. |
xdr-json/TransactionV0.json |
Regenerates transitive schemas. |
xdr-json/TransactionV0Envelope.json |
Regenerates transitive schemas. |
xdr-json/TransactionV1Envelope.json |
Regenerates transitive schemas. |
xdr-json/TxSetComponent.json |
Regenerates transitive schemas. |
xdr-json/TxSetComponentTxsMaybeDiscountedFee.json |
Regenerates transitive schemas. |
xdr-json/UpgradeEntryMeta.json |
Adds ungated Soroban definitions. |
xdr-version |
Records the new upstream XDR revision. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Now that the arm is unconditional it has a body identical to the preceding one, which clippy::pedantic rejects (match_same_arms).
dmkozh
approved these changes
Jul 29, 2026
This was referenced Jul 29, 2026
sisuresh
added a commit
to stellar/stellar-quorum-analyzer
that referenced
this pull request
Jul 29, 2026
stellar-core's checkXDRFileIdentity compares this crate's XDR_FILES_SHA256 against the current soroban host's. Core is bumping to protocol 28, whose host pins stellar-xdr by git rev, so the published 27.0.0 crate no longer matches: Stellar-contract.x hashes 5d8063e6 here versus b87e9474 there, and core aborts at startup. Pin the same git rev (stellar/rs-stellar-xdr#565, where CAP-0083 and CAP-0085 were ungated) so the hashes agree. This reverts to a plain version pin once rs-stellar-xdr publishes a release carrying those changes.
jayz22
pushed a commit
to jayz22/rs-soroban-env
that referenced
this pull request
Jul 30, 2026
…ar#1715) Repins `stellar-xdr` to stellar/rs-stellar-xdr#565, where CAP-0083 and CAP-0085 were ungated. That feature no longer exists there — the types are unconditional now — so the dep stops requesting it. No host code changes: CAP-0085 and CAP-0086 both landed ungated, so there were no cfgs to remove. Verified `--features testutils` (830 tests) and `--features testutils,next` (829), both green. Third of the P28 ungating stack; stellar-core follows.
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.
Repins the
xdrsubmodule to stellar/stellar-xdr#311 and drops the now-unneededcap_0083/cap_0085_executable_reffeatures — those types generate unconditionally now. Also removes the two hand-written gates on them (VERSION.features, and theScVal::ExecutableTagmatch arm).The repin also crosses #307, so the
.xnow hasCAP_0084_MUXED_CONTRACTifdefs. That forces declaring acap_0084_muxed_contractfeature plus aDisplayarm forScAddress::MuxedContract— both taken verbatim from #552. Off by default.Deferred: with that feature on,
MuxedContractaddresses can't serialize (ScAddressderivesSerializeDisplay). No strkey encoding exists yet — CAP-0084 defers it to SEP-23. Tracked on #552.Second of the P28 ungating stack.