From 7b5618146590e15d2e250538dccbc7c89ac55c58 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Fri, 26 Jun 2026 14:54:09 -0700 Subject: [PATCH 1/3] Add CAP-0084 muxed contract address XDR Add SC_ADDRESS_TYPE_MUXED_CONTRACT arm and MuxedContract struct to SCAddress, gated behind #ifdef CAP_0084_MUXED_CONTRACT, mirroring the existing MuxedEd25519Account muxed-account pattern. Appears only in the `next` branch until core bumps the max supported protocol to 28. CAP-0084 (Muxed Contract Addresses): https://github.com/stellar/stellar-protocol/pull/1968 --- Stellar-contract.x | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Stellar-contract.x b/Stellar-contract.x index 0e67dc3..dbfd56c 100644 --- a/Stellar-contract.x +++ b/Stellar-contract.x @@ -183,6 +183,10 @@ enum SCAddressType SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 +#ifdef CAP_0084_MUXED_CONTRACT + , + SC_ADDRESS_TYPE_MUXED_CONTRACT = 5 +#endif }; struct MuxedEd25519Account @@ -191,6 +195,14 @@ struct MuxedEd25519Account uint256 ed25519; }; +#ifdef CAP_0084_MUXED_CONTRACT +struct MuxedContract +{ + uint64 id; + ContractID contractId; +}; +#endif + union SCAddress switch (SCAddressType type) { case SC_ADDRESS_TYPE_ACCOUNT: @@ -203,6 +215,10 @@ case SC_ADDRESS_TYPE_CLAIMABLE_BALANCE: ClaimableBalanceID claimableBalanceId; case SC_ADDRESS_TYPE_LIQUIDITY_POOL: PoolID liquidityPoolId; +#ifdef CAP_0084_MUXED_CONTRACT +case SC_ADDRESS_TYPE_MUXED_CONTRACT: + MuxedContract muxedContract; +#endif }; %struct SCVal; From 787382ef2099cca168ca1cb282730d6b7b9e2f16 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 1 Jul 2026 14:59:59 -0700 Subject: [PATCH 2/3] Keep p28 SPIKE XDR base identical to frozen p27 host (drop unrelated #304 comment) --- Stellar-ledger.x | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Stellar-ledger.x b/Stellar-ledger.x index 292a20b..14b0bdc 100644 --- a/Stellar-ledger.x +++ b/Stellar-ledger.x @@ -439,7 +439,7 @@ struct SorobanTransactionMetaExtV1 // transactions, this will be `0` for failed transactions. int64 totalRefundableResourceFeeCharged; // Amount (in stroops) that has been charged for rent. - // This is a part of `totalRefundableResourceFeeCharged`. + // This is a part of `totalNonRefundableResourceFeeCharged`. int64 rentFeeCharged; }; From a29d56a4d059027e41332e808707c012ca09d7cf Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Tue, 7 Jul 2026 15:23:03 -0700 Subject: [PATCH 3/3] Revert out-of-scope rentFeeCharged comment change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rentFeeCharged is part of totalRefundableResourceFeeCharged (as the totalRefundableResourceFeeCharged comment itself states: 'comprises the rent fee'). An automation drive-by had flipped it to NonRefundable — out of scope for CAP-0084 and factually wrong. Restores the original comment; #307 now touches only Stellar-contract.x (the CAP-0084 XDR). --- Stellar-ledger.x | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Stellar-ledger.x b/Stellar-ledger.x index 14b0bdc..292a20b 100644 --- a/Stellar-ledger.x +++ b/Stellar-ledger.x @@ -439,7 +439,7 @@ struct SorobanTransactionMetaExtV1 // transactions, this will be `0` for failed transactions. int64 totalRefundableResourceFeeCharged; // Amount (in stroops) that has been charged for rent. - // This is a part of `totalNonRefundableResourceFeeCharged`. + // This is a part of `totalRefundableResourceFeeCharged`. int64 rentFeeCharged; };