From f801cf4c6fe8406b22c7cd1d4688aaee89bb4c12 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Thu, 2 Apr 2026 15:40:23 +0800 Subject: [PATCH] chore: bump [stellar-xdr](https://github.com/stellar/stellar-xdr) to v26.0. --- CHANGELOG.md | 1 + Makefile | 2 +- .../sdk/xdr/ClaimClaimableBalanceResult.java | 9 +- .../xdr/ClaimClaimableBalanceResultCode.java | 12 +- .../stellar/sdk/xdr/ConfigSettingEntry.java | 85 +++++++++++ .../org/stellar/sdk/xdr/ConfigSettingID.java | 36 ++++- .../org/stellar/sdk/xdr/ContractCostType.java | 13 +- .../org/stellar/sdk/xdr/EncodedLedgerKey.java | 91 +++++++++++ .../org/stellar/sdk/xdr/FreezeBypassTxs.java | 106 +++++++++++++ .../stellar/sdk/xdr/FreezeBypassTxsDelta.java | 136 +++++++++++++++++ .../org/stellar/sdk/xdr/FrozenLedgerKeys.java | 105 +++++++++++++ .../sdk/xdr/FrozenLedgerKeysDelta.java | 142 ++++++++++++++++++ .../sdk/xdr/InnerTransactionResult.java | 10 +- .../sdk/xdr/LiquidityPoolDepositResult.java | 9 +- .../xdr/LiquidityPoolDepositResultCode.java | 13 +- .../sdk/xdr/LiquidityPoolWithdrawResult.java | 9 +- .../xdr/LiquidityPoolWithdrawResultCode.java | 13 +- .../stellar/sdk/xdr/TransactionResult.java | 10 +- .../sdk/xdr/TransactionResultCode.java | 12 +- xdr/Stellar-contract-config-setting.x | 39 ++++- xdr/Stellar-transaction.x | 19 ++- 21 files changed, 848 insertions(+), 24 deletions(-) create mode 100644 src/main/java/org/stellar/sdk/xdr/EncodedLedgerKey.java create mode 100644 src/main/java/org/stellar/sdk/xdr/FreezeBypassTxs.java create mode 100644 src/main/java/org/stellar/sdk/xdr/FreezeBypassTxsDelta.java create mode 100644 src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeys.java create mode 100644 src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeysDelta.java diff --git a/CHANGELOG.md b/CHANGELOG.md index a3a3ad666..d9ab269a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - feat: add `closeTime`, `headerXdr`, and `metadataXdr` to `GetLatestLedgerResponse`. ([#768](https://github.com/lightsail-network/java-stellar-sdk/pull/768)) - chore: bump [stellar-xdr](https://github.com/stellar/stellar-xdr) to v25.0. ([#769](https://github.com/lightsail-network/java-stellar-sdk/pull/769)) - refactor!: remove deprecated `StrKey` helpers `encodeEd25519PublicKey(AccountID)`, `encodeMuxedAccount(MuxedAccount)`, `decodeMuxedAccount(String)`, `encodeToXDRAccountId(String)`, and `encodeToXDRMuxedAccount(String)`; use `StrKey.encodeEd25519PublicKey(byte[])`, `org.stellar.sdk.MuxedAccount`, and `KeyPair#getXdrAccountId()` instead. ([#779](https://github.com/lightsail-network/java-stellar-sdk/pull/779)) +- chore: bump [stellar-xdr](https://github.com/stellar/stellar-xdr) to v26.0. ## 2.2.3 diff --git a/Makefile b/Makefile index 02ad92ca2..43d8703e7 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ xdr/Stellar-transaction.x \ xdr/Stellar-types.x # stellar-xdr commit to use, see https://github.com/stellar/stellar-xdr -XDR_COMMIT=0a621ec7811db000a60efae5b35f78dee3aa2533 +XDR_COMMIT=cff714a5ebaaaf2dac343b3546c2df73f0b7a36e .PHONY: xdr xdr-clean xdr-update xdr-generator-test xdr-generator-update-snapshots diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java index dd01ed633..26edee5a8 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResult.java @@ -24,6 +24,7 @@ * case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: * case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: * case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: + * case CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN: * void; * }; * @@ -45,6 +46,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: + case CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN: break; } } @@ -68,6 +70,7 @@ public static ClaimClaimableBalanceResult decode(XdrDataInputStream stream, int case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: + case CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN: break; default: throw new IOException("Unknown discriminant value: " + discriminant); @@ -119,6 +122,9 @@ Object toJsonObject() { if (discriminant == ClaimClaimableBalanceResultCode.CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED) { return "not_authorized"; } + if (discriminant == ClaimClaimableBalanceResultCode.CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN) { + return "trustline_frozen"; + } throw new IllegalArgumentException("Unknown discriminant: " + discriminant); } @@ -131,7 +137,8 @@ static ClaimClaimableBalanceResult fromJsonObject(Object json) { || strVal.equals("cannot_claim") || strVal.equals("line_full") || strVal.equals("no_trust") - || strVal.equals("not_authorized"))) { + || strVal.equals("not_authorized") + || strVal.equals("trustline_frozen"))) { throw new IllegalArgumentException( "Unexpected string '" + strVal + "' for ClaimClaimableBalanceResult"); } diff --git a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java index 87dacb88c..2efbb2c59 100644 --- a/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/ClaimClaimableBalanceResultCode.java @@ -18,7 +18,8 @@ * CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM = -2, * CLAIM_CLAIMABLE_BALANCE_LINE_FULL = -3, * CLAIM_CLAIMABLE_BALANCE_NO_TRUST = -4, - * CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5 + * CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5, + * CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN = -6 * }; * */ @@ -28,7 +29,8 @@ public enum ClaimClaimableBalanceResultCode implements XdrElement { CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM(-2), CLAIM_CLAIMABLE_BALANCE_LINE_FULL(-3), CLAIM_CLAIMABLE_BALANCE_NO_TRUST(-4), - CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED(-5); + CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED(-5), + CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN(-6); private final int value; @@ -57,6 +59,8 @@ public static ClaimClaimableBalanceResultCode decode(XdrDataInputStream stream, return CLAIM_CLAIMABLE_BALANCE_NO_TRUST; case -5: return CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED; + case -6: + return CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN; default: throw new IllegalArgumentException("Unknown enum value: " + value); } @@ -106,6 +110,8 @@ Object toJsonObject() { return "no_trust"; case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: return "not_authorized"; + case CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN: + return "trustline_frozen"; default: throw new IllegalArgumentException("Unknown enum value: " + this.value); } @@ -126,6 +132,8 @@ static ClaimClaimableBalanceResultCode fromJsonObject(Object json) { return CLAIM_CLAIMABLE_BALANCE_NO_TRUST; case "not_authorized": return CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED; + case "trustline_frozen": + return CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN; default: throw new IllegalArgumentException("Unknown JSON value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java index 671ca6c53..766221090 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingEntry.java @@ -53,6 +53,14 @@ * ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; * case CONFIG_SETTING_SCP_TIMING: * ConfigSettingSCPTiming contractSCPTiming; + * case CONFIG_SETTING_FROZEN_LEDGER_KEYS: + * FrozenLedgerKeys frozenLedgerKeys; + * case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: + * FrozenLedgerKeysDelta frozenLedgerKeysDelta; + * case CONFIG_SETTING_FREEZE_BYPASS_TXS: + * FreezeBypassTxs freezeBypassTxs; + * case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: + * FreezeBypassTxsDelta freezeBypassTxsDelta; * }; * */ @@ -79,6 +87,10 @@ public class ConfigSettingEntry implements XdrElement { private ConfigSettingContractParallelComputeV0 contractParallelCompute; private ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; private ConfigSettingSCPTiming contractSCPTiming; + private FrozenLedgerKeys frozenLedgerKeys; + private FrozenLedgerKeysDelta frozenLedgerKeysDelta; + private FreezeBypassTxs freezeBypassTxs; + private FreezeBypassTxsDelta freezeBypassTxsDelta; public void encode(XdrDataOutputStream stream) throws IOException { stream.writeInt(discriminant.getValue()); @@ -138,6 +150,18 @@ public void encode(XdrDataOutputStream stream) throws IOException { case CONFIG_SETTING_SCP_TIMING: contractSCPTiming.encode(stream); break; + case CONFIG_SETTING_FROZEN_LEDGER_KEYS: + frozenLedgerKeys.encode(stream); + break; + case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: + frozenLedgerKeysDelta.encode(stream); + break; + case CONFIG_SETTING_FREEZE_BYPASS_TXS: + freezeBypassTxs.encode(stream); + break; + case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: + freezeBypassTxsDelta.encode(stream); + break; } } @@ -232,6 +256,20 @@ public static ConfigSettingEntry decode(XdrDataInputStream stream, int maxDepth) decodedConfigSettingEntry.contractSCPTiming = ConfigSettingSCPTiming.decode(stream, maxDepth); break; + case CONFIG_SETTING_FROZEN_LEDGER_KEYS: + decodedConfigSettingEntry.frozenLedgerKeys = FrozenLedgerKeys.decode(stream, maxDepth); + break; + case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: + decodedConfigSettingEntry.frozenLedgerKeysDelta = + FrozenLedgerKeysDelta.decode(stream, maxDepth); + break; + case CONFIG_SETTING_FREEZE_BYPASS_TXS: + decodedConfigSettingEntry.freezeBypassTxs = FreezeBypassTxs.decode(stream, maxDepth); + break; + case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: + decodedConfigSettingEntry.freezeBypassTxsDelta = + FreezeBypassTxsDelta.decode(stream, maxDepth); + break; default: throw new IOException("Unknown discriminant value: " + discriminant); } @@ -353,6 +391,26 @@ Object toJsonObject() { jsonMap.put("scp_timing", contractSCPTiming.toJsonObject()); return jsonMap; } + if (discriminant == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS) { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put("frozen_ledger_keys", frozenLedgerKeys.toJsonObject()); + return jsonMap; + } + if (discriminant == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA) { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put("frozen_ledger_keys_delta", frozenLedgerKeysDelta.toJsonObject()); + return jsonMap; + } + if (discriminant == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS) { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put("freeze_bypass_txs", freezeBypassTxs.toJsonObject()); + return jsonMap; + } + if (discriminant == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA) { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put("freeze_bypass_txs_delta", freezeBypassTxsDelta.toJsonObject()); + return jsonMap; + } throw new IllegalArgumentException("Unknown discriminant: " + discriminant); } @@ -492,6 +550,33 @@ static ConfigSettingEntry fromJsonObject(Object json) { instance.contractSCPTiming = ConfigSettingSCPTiming.fromJsonObject(jsonMap.get("scp_timing")); return instance; } + if (key.equals("frozen_ledger_keys")) { + ConfigSettingEntry instance = new ConfigSettingEntry(); + instance.discriminant = discriminant; + instance.frozenLedgerKeys = + FrozenLedgerKeys.fromJsonObject(jsonMap.get("frozen_ledger_keys")); + return instance; + } + if (key.equals("frozen_ledger_keys_delta")) { + ConfigSettingEntry instance = new ConfigSettingEntry(); + instance.discriminant = discriminant; + instance.frozenLedgerKeysDelta = + FrozenLedgerKeysDelta.fromJsonObject(jsonMap.get("frozen_ledger_keys_delta")); + return instance; + } + if (key.equals("freeze_bypass_txs")) { + ConfigSettingEntry instance = new ConfigSettingEntry(); + instance.discriminant = discriminant; + instance.freezeBypassTxs = FreezeBypassTxs.fromJsonObject(jsonMap.get("freeze_bypass_txs")); + return instance; + } + if (key.equals("freeze_bypass_txs_delta")) { + ConfigSettingEntry instance = new ConfigSettingEntry(); + instance.discriminant = discriminant; + instance.freezeBypassTxsDelta = + FreezeBypassTxsDelta.fromJsonObject(jsonMap.get("freeze_bypass_txs_delta")); + return instance; + } throw new IllegalArgumentException("Unknown key '" + key + "' for ConfigSettingEntry"); } } diff --git a/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java b/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java index f55c88b67..c3054dff7 100644 --- a/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java +++ b/src/main/java/org/stellar/sdk/xdr/ConfigSettingID.java @@ -29,7 +29,11 @@ * CONFIG_SETTING_EVICTION_ITERATOR = 13, * CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14, * CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15, - * CONFIG_SETTING_SCP_TIMING = 16 + * CONFIG_SETTING_SCP_TIMING = 16, + * CONFIG_SETTING_FROZEN_LEDGER_KEYS = 17, + * CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA = 18, + * CONFIG_SETTING_FREEZE_BYPASS_TXS = 19, + * CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA = 20 * }; * */ @@ -50,7 +54,11 @@ public enum ConfigSettingID implements XdrElement { CONFIG_SETTING_EVICTION_ITERATOR(13), CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0(14), CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0(15), - CONFIG_SETTING_SCP_TIMING(16); + CONFIG_SETTING_SCP_TIMING(16), + CONFIG_SETTING_FROZEN_LEDGER_KEYS(17), + CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA(18), + CONFIG_SETTING_FREEZE_BYPASS_TXS(19), + CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA(20); private final int value; @@ -100,6 +108,14 @@ public static ConfigSettingID decode(XdrDataInputStream stream, int maxDepth) th return CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0; case 16: return CONFIG_SETTING_SCP_TIMING; + case 17: + return CONFIG_SETTING_FROZEN_LEDGER_KEYS; + case 18: + return CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA; + case 19: + return CONFIG_SETTING_FREEZE_BYPASS_TXS; + case 20: + return CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA; default: throw new IllegalArgumentException("Unknown enum value: " + value); } @@ -170,6 +186,14 @@ Object toJsonObject() { return "contract_ledger_cost_ext_v0"; case CONFIG_SETTING_SCP_TIMING: return "scp_timing"; + case CONFIG_SETTING_FROZEN_LEDGER_KEYS: + return "frozen_ledger_keys"; + case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: + return "frozen_ledger_keys_delta"; + case CONFIG_SETTING_FREEZE_BYPASS_TXS: + return "freeze_bypass_txs"; + case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: + return "freeze_bypass_txs_delta"; default: throw new IllegalArgumentException("Unknown enum value: " + this.value); } @@ -212,6 +236,14 @@ static ConfigSettingID fromJsonObject(Object json) { return CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0; case "scp_timing": return CONFIG_SETTING_SCP_TIMING; + case "frozen_ledger_keys": + return CONFIG_SETTING_FROZEN_LEDGER_KEYS; + case "frozen_ledger_keys_delta": + return CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA; + case "freeze_bypass_txs": + return CONFIG_SETTING_FREEZE_BYPASS_TXS; + case "freeze_bypass_txs_delta": + return CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA; default: throw new IllegalArgumentException("Unknown JSON value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/ContractCostType.java b/src/main/java/org/stellar/sdk/xdr/ContractCostType.java index 9533443bb..0a6b8816a 100644 --- a/src/main/java/org/stellar/sdk/xdr/ContractCostType.java +++ b/src/main/java/org/stellar/sdk/xdr/ContractCostType.java @@ -192,7 +192,9 @@ * // Cost of performing BN254 scalar element exponentiation * Bn254FrPow = 83, * // Cost of performing BN254 scalar element inversion - * Bn254FrInv = 84 + * Bn254FrInv = 84, + * // Cost of performing BN254 G1 multi-scalar multiplication (MSM) + * Bn254G1Msm = 85 * }; * */ @@ -281,7 +283,8 @@ public enum ContractCostType implements XdrElement { Bn254FrAddSub(81), Bn254FrMul(82), Bn254FrPow(83), - Bn254FrInv(84); + Bn254FrInv(84), + Bn254G1Msm(85); private final int value; @@ -468,6 +471,8 @@ public static ContractCostType decode(XdrDataInputStream stream, int maxDepth) return Bn254FrPow; case 84: return Bn254FrInv; + case 85: + return Bn254G1Msm; default: throw new IllegalArgumentException("Unknown enum value: " + value); } @@ -674,6 +679,8 @@ Object toJsonObject() { return "bn254frpow"; case Bn254FrInv: return "bn254frinv"; + case Bn254G1Msm: + return "bn254g1msm"; default: throw new IllegalArgumentException("Unknown enum value: " + this.value); } @@ -852,6 +859,8 @@ static ContractCostType fromJsonObject(Object json) { return Bn254FrPow; case "bn254frinv": return Bn254FrInv; + case "bn254g1msm": + return Bn254G1Msm; default: throw new IllegalArgumentException("Unknown JSON value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/EncodedLedgerKey.java b/src/main/java/org/stellar/sdk/xdr/EncodedLedgerKey.java new file mode 100644 index 000000000..52ccceb37 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/EncodedLedgerKey.java @@ -0,0 +1,91 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.stellar.sdk.Base64Factory; + +/** + * EncodedLedgerKey's original definition in the XDR file is: + * + *
+ * typedef opaque EncodedLedgerKey<>;
+ * 
+ */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EncodedLedgerKey implements XdrElement { + private byte[] EncodedLedgerKey; + + public void encode(XdrDataOutputStream stream) throws IOException { + int EncodedLedgerKeySize = EncodedLedgerKey.length; + stream.writeInt(EncodedLedgerKeySize); + stream.write(getEncodedLedgerKey(), 0, EncodedLedgerKeySize); + } + + public static EncodedLedgerKey decode(XdrDataInputStream stream, int maxDepth) + throws IOException { + if (maxDepth <= 0) { + throw new IOException("Maximum decoding depth reached"); + } + maxDepth -= 1; + EncodedLedgerKey decodedEncodedLedgerKey = new EncodedLedgerKey(); + int EncodedLedgerKeySize = stream.readInt(); + if (EncodedLedgerKeySize < 0) { + throw new IOException("EncodedLedgerKey size " + EncodedLedgerKeySize + " is negative"); + } + int EncodedLedgerKeyRemainingInputLen = stream.getRemainingInputLen(); + if (EncodedLedgerKeyRemainingInputLen >= 0 + && EncodedLedgerKeyRemainingInputLen < EncodedLedgerKeySize) { + throw new IOException( + "EncodedLedgerKey size " + + EncodedLedgerKeySize + + " exceeds remaining input length " + + EncodedLedgerKeyRemainingInputLen); + } + decodedEncodedLedgerKey.EncodedLedgerKey = new byte[EncodedLedgerKeySize]; + stream.readPaddedData(decodedEncodedLedgerKey.EncodedLedgerKey, 0, EncodedLedgerKeySize); + return decodedEncodedLedgerKey; + } + + public static EncodedLedgerKey decode(XdrDataInputStream stream) throws IOException { + return decode(stream, XdrDataInputStream.DEFAULT_MAX_DEPTH); + } + + public static EncodedLedgerKey fromXdrBase64(String xdr) throws IOException { + byte[] bytes = Base64Factory.getInstance().decode(xdr); + return fromXdrByteArray(bytes); + } + + public static EncodedLedgerKey fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + xdrDataInputStream.setMaxInputLen(xdr.length); + return decode(xdrDataInputStream); + } + + @Override + public String toJson() { + return XdrElement.gson.toJson(toJsonObject()); + } + + public static EncodedLedgerKey fromJson(String json) { + return fromJsonObject(XdrElement.gson.fromJson(json, Object.class)); + } + + Object toJsonObject() { + return XdrElement.bytesToHex(EncodedLedgerKey); + } + + static EncodedLedgerKey fromJsonObject(Object json) { + EncodedLedgerKey instance = new EncodedLedgerKey(); + instance.EncodedLedgerKey = XdrElement.hexToBytes((String) json); + return instance; + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/FreezeBypassTxs.java b/src/main/java/org/stellar/sdk/xdr/FreezeBypassTxs.java new file mode 100644 index 000000000..fa879c7b0 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/FreezeBypassTxs.java @@ -0,0 +1,106 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.stellar.sdk.Base64Factory; + +/** + * FreezeBypassTxs's original definition in the XDR file is: + * + *
+ * struct FreezeBypassTxs {
+ *     Hash txHashes<>;
+ * };
+ * 
+ */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder(toBuilder = true) +public class FreezeBypassTxs implements XdrElement { + private Hash[] txHashes; + + public void encode(XdrDataOutputStream stream) throws IOException { + int txHashesSize = getTxHashes().length; + stream.writeInt(txHashesSize); + for (int i = 0; i < txHashesSize; i++) { + txHashes[i].encode(stream); + } + } + + public static FreezeBypassTxs decode(XdrDataInputStream stream, int maxDepth) throws IOException { + if (maxDepth <= 0) { + throw new IOException("Maximum decoding depth reached"); + } + maxDepth -= 1; + FreezeBypassTxs decodedFreezeBypassTxs = new FreezeBypassTxs(); + int txHashesSize = stream.readInt(); + if (txHashesSize < 0) { + throw new IOException("txHashes size " + txHashesSize + " is negative"); + } + int txHashesRemainingInputLen = stream.getRemainingInputLen(); + if (txHashesRemainingInputLen >= 0 && txHashesRemainingInputLen < txHashesSize) { + throw new IOException( + "txHashes size " + + txHashesSize + + " exceeds remaining input length " + + txHashesRemainingInputLen); + } + decodedFreezeBypassTxs.txHashes = new Hash[txHashesSize]; + for (int i = 0; i < txHashesSize; i++) { + decodedFreezeBypassTxs.txHashes[i] = Hash.decode(stream, maxDepth); + } + return decodedFreezeBypassTxs; + } + + public static FreezeBypassTxs decode(XdrDataInputStream stream) throws IOException { + return decode(stream, XdrDataInputStream.DEFAULT_MAX_DEPTH); + } + + public static FreezeBypassTxs fromXdrBase64(String xdr) throws IOException { + byte[] bytes = Base64Factory.getInstance().decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FreezeBypassTxs fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + xdrDataInputStream.setMaxInputLen(xdr.length); + return decode(xdrDataInputStream); + } + + @Override + public String toJson() { + return XdrElement.gson.toJson(toJsonObject()); + } + + public static FreezeBypassTxs fromJson(String json) { + return fromJsonObject(XdrElement.gson.fromJson(json, Object.class)); + } + + Object toJsonObject() { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put( + "tx_hashes", XdrElement.arrayToJsonArray(txHashes, i -> txHashes[i].toJsonObject())); + return jsonMap; + } + + @SuppressWarnings("unchecked") + static FreezeBypassTxs fromJsonObject(Object json) { + java.util.Map jsonMap = (java.util.Map) json; + FreezeBypassTxs instance = new FreezeBypassTxs(); + instance.txHashes = + XdrElement.jsonArrayToArray( + (List) jsonMap.get("tx_hashes"), Hash.class, item -> Hash.fromJsonObject(item)); + return instance; + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/FreezeBypassTxsDelta.java b/src/main/java/org/stellar/sdk/xdr/FreezeBypassTxsDelta.java new file mode 100644 index 000000000..4e9f50ad4 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/FreezeBypassTxsDelta.java @@ -0,0 +1,136 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.stellar.sdk.Base64Factory; + +/** + * FreezeBypassTxsDelta's original definition in the XDR file is: + * + *
+ * struct FreezeBypassTxsDelta {
+ *     Hash addTxs<>;
+ *     Hash removeTxs<>;
+ * };
+ * 
+ */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder(toBuilder = true) +public class FreezeBypassTxsDelta implements XdrElement { + private Hash[] addTxs; + private Hash[] removeTxs; + + public void encode(XdrDataOutputStream stream) throws IOException { + int addTxsSize = getAddTxs().length; + stream.writeInt(addTxsSize); + for (int i = 0; i < addTxsSize; i++) { + addTxs[i].encode(stream); + } + int removeTxsSize = getRemoveTxs().length; + stream.writeInt(removeTxsSize); + for (int i = 0; i < removeTxsSize; i++) { + removeTxs[i].encode(stream); + } + } + + public static FreezeBypassTxsDelta decode(XdrDataInputStream stream, int maxDepth) + throws IOException { + if (maxDepth <= 0) { + throw new IOException("Maximum decoding depth reached"); + } + maxDepth -= 1; + FreezeBypassTxsDelta decodedFreezeBypassTxsDelta = new FreezeBypassTxsDelta(); + int addTxsSize = stream.readInt(); + if (addTxsSize < 0) { + throw new IOException("addTxs size " + addTxsSize + " is negative"); + } + int addTxsRemainingInputLen = stream.getRemainingInputLen(); + if (addTxsRemainingInputLen >= 0 && addTxsRemainingInputLen < addTxsSize) { + throw new IOException( + "addTxs size " + + addTxsSize + + " exceeds remaining input length " + + addTxsRemainingInputLen); + } + decodedFreezeBypassTxsDelta.addTxs = new Hash[addTxsSize]; + for (int i = 0; i < addTxsSize; i++) { + decodedFreezeBypassTxsDelta.addTxs[i] = Hash.decode(stream, maxDepth); + } + int removeTxsSize = stream.readInt(); + if (removeTxsSize < 0) { + throw new IOException("removeTxs size " + removeTxsSize + " is negative"); + } + int removeTxsRemainingInputLen = stream.getRemainingInputLen(); + if (removeTxsRemainingInputLen >= 0 && removeTxsRemainingInputLen < removeTxsSize) { + throw new IOException( + "removeTxs size " + + removeTxsSize + + " exceeds remaining input length " + + removeTxsRemainingInputLen); + } + decodedFreezeBypassTxsDelta.removeTxs = new Hash[removeTxsSize]; + for (int i = 0; i < removeTxsSize; i++) { + decodedFreezeBypassTxsDelta.removeTxs[i] = Hash.decode(stream, maxDepth); + } + return decodedFreezeBypassTxsDelta; + } + + public static FreezeBypassTxsDelta decode(XdrDataInputStream stream) throws IOException { + return decode(stream, XdrDataInputStream.DEFAULT_MAX_DEPTH); + } + + public static FreezeBypassTxsDelta fromXdrBase64(String xdr) throws IOException { + byte[] bytes = Base64Factory.getInstance().decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FreezeBypassTxsDelta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + xdrDataInputStream.setMaxInputLen(xdr.length); + return decode(xdrDataInputStream); + } + + @Override + public String toJson() { + return XdrElement.gson.toJson(toJsonObject()); + } + + public static FreezeBypassTxsDelta fromJson(String json) { + return fromJsonObject(XdrElement.gson.fromJson(json, Object.class)); + } + + Object toJsonObject() { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put("add_txs", XdrElement.arrayToJsonArray(addTxs, i -> addTxs[i].toJsonObject())); + jsonMap.put( + "remove_txs", XdrElement.arrayToJsonArray(removeTxs, i -> removeTxs[i].toJsonObject())); + return jsonMap; + } + + @SuppressWarnings("unchecked") + static FreezeBypassTxsDelta fromJsonObject(Object json) { + java.util.Map jsonMap = (java.util.Map) json; + FreezeBypassTxsDelta instance = new FreezeBypassTxsDelta(); + instance.addTxs = + XdrElement.jsonArrayToArray( + (List) jsonMap.get("add_txs"), Hash.class, item -> Hash.fromJsonObject(item)); + instance.removeTxs = + XdrElement.jsonArrayToArray( + (List) jsonMap.get("remove_txs"), + Hash.class, + item -> Hash.fromJsonObject(item)); + return instance; + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeys.java b/src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeys.java new file mode 100644 index 000000000..50dd314f1 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeys.java @@ -0,0 +1,105 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.stellar.sdk.Base64Factory; + +/** + * FrozenLedgerKeys's original definition in the XDR file is: + * + *
+ * struct FrozenLedgerKeys {
+ *     EncodedLedgerKey keys<>;
+ * };
+ * 
+ */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder(toBuilder = true) +public class FrozenLedgerKeys implements XdrElement { + private EncodedLedgerKey[] keys; + + public void encode(XdrDataOutputStream stream) throws IOException { + int keysSize = getKeys().length; + stream.writeInt(keysSize); + for (int i = 0; i < keysSize; i++) { + keys[i].encode(stream); + } + } + + public static FrozenLedgerKeys decode(XdrDataInputStream stream, int maxDepth) + throws IOException { + if (maxDepth <= 0) { + throw new IOException("Maximum decoding depth reached"); + } + maxDepth -= 1; + FrozenLedgerKeys decodedFrozenLedgerKeys = new FrozenLedgerKeys(); + int keysSize = stream.readInt(); + if (keysSize < 0) { + throw new IOException("keys size " + keysSize + " is negative"); + } + int keysRemainingInputLen = stream.getRemainingInputLen(); + if (keysRemainingInputLen >= 0 && keysRemainingInputLen < keysSize) { + throw new IOException( + "keys size " + keysSize + " exceeds remaining input length " + keysRemainingInputLen); + } + decodedFrozenLedgerKeys.keys = new EncodedLedgerKey[keysSize]; + for (int i = 0; i < keysSize; i++) { + decodedFrozenLedgerKeys.keys[i] = EncodedLedgerKey.decode(stream, maxDepth); + } + return decodedFrozenLedgerKeys; + } + + public static FrozenLedgerKeys decode(XdrDataInputStream stream) throws IOException { + return decode(stream, XdrDataInputStream.DEFAULT_MAX_DEPTH); + } + + public static FrozenLedgerKeys fromXdrBase64(String xdr) throws IOException { + byte[] bytes = Base64Factory.getInstance().decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FrozenLedgerKeys fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + xdrDataInputStream.setMaxInputLen(xdr.length); + return decode(xdrDataInputStream); + } + + @Override + public String toJson() { + return XdrElement.gson.toJson(toJsonObject()); + } + + public static FrozenLedgerKeys fromJson(String json) { + return fromJsonObject(XdrElement.gson.fromJson(json, Object.class)); + } + + Object toJsonObject() { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put("keys", XdrElement.arrayToJsonArray(keys, i -> keys[i].toJsonObject())); + return jsonMap; + } + + @SuppressWarnings("unchecked") + static FrozenLedgerKeys fromJsonObject(Object json) { + java.util.Map jsonMap = (java.util.Map) json; + FrozenLedgerKeys instance = new FrozenLedgerKeys(); + instance.keys = + XdrElement.jsonArrayToArray( + (List) jsonMap.get("keys"), + EncodedLedgerKey.class, + item -> EncodedLedgerKey.fromJsonObject(item)); + return instance; + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeysDelta.java b/src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeysDelta.java new file mode 100644 index 000000000..bc3120841 --- /dev/null +++ b/src/main/java/org/stellar/sdk/xdr/FrozenLedgerKeysDelta.java @@ -0,0 +1,142 @@ +// Automatically generated by xdrgen +// DO NOT EDIT or your changes may be overwritten + +package org.stellar.sdk.xdr; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.stellar.sdk.Base64Factory; + +/** + * FrozenLedgerKeysDelta's original definition in the XDR file is: + * + *
+ * struct FrozenLedgerKeysDelta {
+ *     EncodedLedgerKey keysToFreeze<>;
+ *     EncodedLedgerKey keysToUnfreeze<>;
+ * };
+ * 
+ */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder(toBuilder = true) +public class FrozenLedgerKeysDelta implements XdrElement { + private EncodedLedgerKey[] keysToFreeze; + private EncodedLedgerKey[] keysToUnfreeze; + + public void encode(XdrDataOutputStream stream) throws IOException { + int keysToFreezeSize = getKeysToFreeze().length; + stream.writeInt(keysToFreezeSize); + for (int i = 0; i < keysToFreezeSize; i++) { + keysToFreeze[i].encode(stream); + } + int keysToUnfreezeSize = getKeysToUnfreeze().length; + stream.writeInt(keysToUnfreezeSize); + for (int i = 0; i < keysToUnfreezeSize; i++) { + keysToUnfreeze[i].encode(stream); + } + } + + public static FrozenLedgerKeysDelta decode(XdrDataInputStream stream, int maxDepth) + throws IOException { + if (maxDepth <= 0) { + throw new IOException("Maximum decoding depth reached"); + } + maxDepth -= 1; + FrozenLedgerKeysDelta decodedFrozenLedgerKeysDelta = new FrozenLedgerKeysDelta(); + int keysToFreezeSize = stream.readInt(); + if (keysToFreezeSize < 0) { + throw new IOException("keysToFreeze size " + keysToFreezeSize + " is negative"); + } + int keysToFreezeRemainingInputLen = stream.getRemainingInputLen(); + if (keysToFreezeRemainingInputLen >= 0 && keysToFreezeRemainingInputLen < keysToFreezeSize) { + throw new IOException( + "keysToFreeze size " + + keysToFreezeSize + + " exceeds remaining input length " + + keysToFreezeRemainingInputLen); + } + decodedFrozenLedgerKeysDelta.keysToFreeze = new EncodedLedgerKey[keysToFreezeSize]; + for (int i = 0; i < keysToFreezeSize; i++) { + decodedFrozenLedgerKeysDelta.keysToFreeze[i] = EncodedLedgerKey.decode(stream, maxDepth); + } + int keysToUnfreezeSize = stream.readInt(); + if (keysToUnfreezeSize < 0) { + throw new IOException("keysToUnfreeze size " + keysToUnfreezeSize + " is negative"); + } + int keysToUnfreezeRemainingInputLen = stream.getRemainingInputLen(); + if (keysToUnfreezeRemainingInputLen >= 0 + && keysToUnfreezeRemainingInputLen < keysToUnfreezeSize) { + throw new IOException( + "keysToUnfreeze size " + + keysToUnfreezeSize + + " exceeds remaining input length " + + keysToUnfreezeRemainingInputLen); + } + decodedFrozenLedgerKeysDelta.keysToUnfreeze = new EncodedLedgerKey[keysToUnfreezeSize]; + for (int i = 0; i < keysToUnfreezeSize; i++) { + decodedFrozenLedgerKeysDelta.keysToUnfreeze[i] = EncodedLedgerKey.decode(stream, maxDepth); + } + return decodedFrozenLedgerKeysDelta; + } + + public static FrozenLedgerKeysDelta decode(XdrDataInputStream stream) throws IOException { + return decode(stream, XdrDataInputStream.DEFAULT_MAX_DEPTH); + } + + public static FrozenLedgerKeysDelta fromXdrBase64(String xdr) throws IOException { + byte[] bytes = Base64Factory.getInstance().decode(xdr); + return fromXdrByteArray(bytes); + } + + public static FrozenLedgerKeysDelta fromXdrByteArray(byte[] xdr) throws IOException { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xdr); + XdrDataInputStream xdrDataInputStream = new XdrDataInputStream(byteArrayInputStream); + xdrDataInputStream.setMaxInputLen(xdr.length); + return decode(xdrDataInputStream); + } + + @Override + public String toJson() { + return XdrElement.gson.toJson(toJsonObject()); + } + + public static FrozenLedgerKeysDelta fromJson(String json) { + return fromJsonObject(XdrElement.gson.fromJson(json, Object.class)); + } + + Object toJsonObject() { + LinkedHashMap jsonMap = new LinkedHashMap<>(); + jsonMap.put( + "keys_to_freeze", + XdrElement.arrayToJsonArray(keysToFreeze, i -> keysToFreeze[i].toJsonObject())); + jsonMap.put( + "keys_to_unfreeze", + XdrElement.arrayToJsonArray(keysToUnfreeze, i -> keysToUnfreeze[i].toJsonObject())); + return jsonMap; + } + + @SuppressWarnings("unchecked") + static FrozenLedgerKeysDelta fromJsonObject(Object json) { + java.util.Map jsonMap = (java.util.Map) json; + FrozenLedgerKeysDelta instance = new FrozenLedgerKeysDelta(); + instance.keysToFreeze = + XdrElement.jsonArrayToArray( + (List) jsonMap.get("keys_to_freeze"), + EncodedLedgerKey.class, + item -> EncodedLedgerKey.fromJsonObject(item)); + instance.keysToUnfreeze = + XdrElement.jsonArrayToArray( + (List) jsonMap.get("keys_to_unfreeze"), + EncodedLedgerKey.class, + item -> EncodedLedgerKey.fromJsonObject(item)); + return instance; + } +} diff --git a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java index ef9ac6daa..015ce549b 100644 --- a/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/InnerTransactionResult.java @@ -44,6 +44,7 @@ * case txBAD_MIN_SEQ_AGE_OR_GAP: * case txMALFORMED: * case txSOROBAN_INVALID: + * case txFROZEN_KEY_ACCESSED: * void; * } * result; @@ -155,6 +156,7 @@ static InnerTransactionResult fromJsonObject(Object json) { * case txBAD_MIN_SEQ_AGE_OR_GAP: * case txMALFORMED: * case txSOROBAN_INVALID: + * case txFROZEN_KEY_ACCESSED: * void; * } * @@ -193,6 +195,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: case txSOROBAN_INVALID: + case txFROZEN_KEY_ACCESSED: break; } } @@ -243,6 +246,7 @@ public static InnerTransactionResultResult decode(XdrDataInputStream stream, int case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: case txSOROBAN_INVALID: + case txFROZEN_KEY_ACCESSED: break; default: throw new IOException("Unknown discriminant value: " + discriminant); @@ -334,6 +338,9 @@ Object toJsonObject() { if (discriminant == TransactionResultCode.txSOROBAN_INVALID) { return "txsoroban_invalid"; } + if (discriminant == TransactionResultCode.txFROZEN_KEY_ACCESSED) { + return "txfrozen_key_accessed"; + } throw new IllegalArgumentException("Unknown discriminant: " + discriminant); } @@ -355,7 +362,8 @@ static InnerTransactionResultResult fromJsonObject(Object json) { || strVal.equals("txbad_sponsorship") || strVal.equals("txbad_min_seq_age_or_gap") || strVal.equals("txmalformed") - || strVal.equals("txsoroban_invalid"))) { + || strVal.equals("txsoroban_invalid") + || strVal.equals("txfrozen_key_accessed"))) { throw new IllegalArgumentException( "Unexpected string '" + strVal + "' for InnerTransactionResultResult"); } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java index d66320c2e..12ffcf7b3 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResult.java @@ -26,6 +26,7 @@ * case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: * case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: * case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: + * case LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN: * void; * }; * @@ -49,6 +50,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: + case LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN: break; } } @@ -73,6 +75,7 @@ public static LiquidityPoolDepositResult decode(XdrDataInputStream stream, int m case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: + case LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN: break; default: throw new IOException("Unknown discriminant value: " + discriminant); @@ -130,6 +133,9 @@ Object toJsonObject() { if (discriminant == LiquidityPoolDepositResultCode.LIQUIDITY_POOL_DEPOSIT_POOL_FULL) { return "pool_full"; } + if (discriminant == LiquidityPoolDepositResultCode.LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN) { + return "trustline_frozen"; + } throw new IllegalArgumentException("Unknown discriminant: " + discriminant); } @@ -144,7 +150,8 @@ static LiquidityPoolDepositResult fromJsonObject(Object json) { || strVal.equals("underfunded") || strVal.equals("line_full") || strVal.equals("bad_price") - || strVal.equals("pool_full"))) { + || strVal.equals("pool_full") + || strVal.equals("trustline_frozen"))) { throw new IllegalArgumentException( "Unexpected string '" + strVal + "' for LiquidityPoolDepositResult"); } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java index d0857be88..4cdbdf566 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolDepositResultCode.java @@ -27,7 +27,9 @@ * LIQUIDITY_POOL_DEPOSIT_LINE_FULL = -5, // pool share trust line doesn't * // have sufficient limit * LIQUIDITY_POOL_DEPOSIT_BAD_PRICE = -6, // deposit price outside bounds - * LIQUIDITY_POOL_DEPOSIT_POOL_FULL = -7 // pool reserves are full + * LIQUIDITY_POOL_DEPOSIT_POOL_FULL = -7, // pool reserves are full + * LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN = -8 // trustline for one of the + * // assets is frozen * }; * */ @@ -39,7 +41,8 @@ public enum LiquidityPoolDepositResultCode implements XdrElement { LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED(-4), LIQUIDITY_POOL_DEPOSIT_LINE_FULL(-5), LIQUIDITY_POOL_DEPOSIT_BAD_PRICE(-6), - LIQUIDITY_POOL_DEPOSIT_POOL_FULL(-7); + LIQUIDITY_POOL_DEPOSIT_POOL_FULL(-7), + LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN(-8); private final int value; @@ -72,6 +75,8 @@ public static LiquidityPoolDepositResultCode decode(XdrDataInputStream stream, i return LIQUIDITY_POOL_DEPOSIT_BAD_PRICE; case -7: return LIQUIDITY_POOL_DEPOSIT_POOL_FULL; + case -8: + return LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN; default: throw new IllegalArgumentException("Unknown enum value: " + value); } @@ -125,6 +130,8 @@ Object toJsonObject() { return "bad_price"; case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: return "pool_full"; + case LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN: + return "trustline_frozen"; default: throw new IllegalArgumentException("Unknown enum value: " + this.value); } @@ -149,6 +156,8 @@ static LiquidityPoolDepositResultCode fromJsonObject(Object json) { return LIQUIDITY_POOL_DEPOSIT_BAD_PRICE; case "pool_full": return LIQUIDITY_POOL_DEPOSIT_POOL_FULL; + case "trustline_frozen": + return LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN; default: throw new IllegalArgumentException("Unknown JSON value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java index c3309ddec..a6711d02c 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResult.java @@ -24,6 +24,7 @@ * case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: * case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: * case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: + * case LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN: * void; * }; * @@ -45,6 +46,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: + case LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN: break; } } @@ -68,6 +70,7 @@ public static LiquidityPoolWithdrawResult decode(XdrDataInputStream stream, int case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: + case LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN: break; default: throw new IOException("Unknown discriminant value: " + discriminant); @@ -119,6 +122,9 @@ Object toJsonObject() { if (discriminant == LiquidityPoolWithdrawResultCode.LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM) { return "under_minimum"; } + if (discriminant == LiquidityPoolWithdrawResultCode.LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN) { + return "trustline_frozen"; + } throw new IllegalArgumentException("Unknown discriminant: " + discriminant); } @@ -131,7 +137,8 @@ static LiquidityPoolWithdrawResult fromJsonObject(Object json) { || strVal.equals("no_trust") || strVal.equals("underfunded") || strVal.equals("line_full") - || strVal.equals("under_minimum"))) { + || strVal.equals("under_minimum") + || strVal.equals("trustline_frozen"))) { throw new IllegalArgumentException( "Unexpected string '" + strVal + "' for LiquidityPoolWithdrawResult"); } diff --git a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java index d9e317135..566897c1b 100644 --- a/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/LiquidityPoolWithdrawResultCode.java @@ -24,7 +24,9 @@ * // pool share * LIQUIDITY_POOL_WITHDRAW_LINE_FULL = -4, // would go above limit for one * // of the assets - * LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM = -5 // didn't withdraw enough + * LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM = -5, // didn't withdraw enough + * LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN = -6 // trustline for one of the + * // assets is frozen * }; * */ @@ -34,7 +36,8 @@ public enum LiquidityPoolWithdrawResultCode implements XdrElement { LIQUIDITY_POOL_WITHDRAW_NO_TRUST(-2), LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED(-3), LIQUIDITY_POOL_WITHDRAW_LINE_FULL(-4), - LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM(-5); + LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM(-5), + LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN(-6); private final int value; @@ -63,6 +66,8 @@ public static LiquidityPoolWithdrawResultCode decode(XdrDataInputStream stream, return LIQUIDITY_POOL_WITHDRAW_LINE_FULL; case -5: return LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM; + case -6: + return LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN; default: throw new IllegalArgumentException("Unknown enum value: " + value); } @@ -112,6 +117,8 @@ Object toJsonObject() { return "line_full"; case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: return "under_minimum"; + case LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN: + return "trustline_frozen"; default: throw new IllegalArgumentException("Unknown enum value: " + this.value); } @@ -132,6 +139,8 @@ static LiquidityPoolWithdrawResultCode fromJsonObject(Object json) { return LIQUIDITY_POOL_WITHDRAW_LINE_FULL; case "under_minimum": return LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM; + case "trustline_frozen": + return LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN; default: throw new IllegalArgumentException("Unknown JSON value: " + value); } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResult.java b/src/main/java/org/stellar/sdk/xdr/TransactionResult.java index 9551dbacd..c5534a779 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResult.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResult.java @@ -45,6 +45,7 @@ * case txBAD_MIN_SEQ_AGE_OR_GAP: * case txMALFORMED: * case txSOROBAN_INVALID: + * case txFROZEN_KEY_ACCESSED: * void; * } * result; @@ -158,6 +159,7 @@ static TransactionResult fromJsonObject(Object json) { * case txBAD_MIN_SEQ_AGE_OR_GAP: * case txMALFORMED: * case txSOROBAN_INVALID: + * case txFROZEN_KEY_ACCESSED: * void; * } * @@ -201,6 +203,7 @@ public void encode(XdrDataOutputStream stream) throws IOException { case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: case txSOROBAN_INVALID: + case txFROZEN_KEY_ACCESSED: break; } } @@ -254,6 +257,7 @@ public static TransactionResultResult decode(XdrDataInputStream stream, int maxD case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: case txSOROBAN_INVALID: + case txFROZEN_KEY_ACCESSED: break; default: throw new IOException("Unknown discriminant value: " + discriminant); @@ -354,6 +358,9 @@ Object toJsonObject() { if (discriminant == TransactionResultCode.txSOROBAN_INVALID) { return "txsoroban_invalid"; } + if (discriminant == TransactionResultCode.txFROZEN_KEY_ACCESSED) { + return "txfrozen_key_accessed"; + } throw new IllegalArgumentException("Unknown discriminant: " + discriminant); } @@ -375,7 +382,8 @@ static TransactionResultResult fromJsonObject(Object json) { || strVal.equals("txbad_sponsorship") || strVal.equals("txbad_min_seq_age_or_gap") || strVal.equals("txmalformed") - || strVal.equals("txsoroban_invalid"))) { + || strVal.equals("txsoroban_invalid") + || strVal.equals("txfrozen_key_accessed"))) { throw new IllegalArgumentException( "Unexpected string '" + strVal + "' for TransactionResultResult"); } diff --git a/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java b/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java index bbb08412b..012460c8f 100644 --- a/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java +++ b/src/main/java/org/stellar/sdk/xdr/TransactionResultCode.java @@ -35,7 +35,8 @@ * txBAD_SPONSORSHIP = -14, // sponsorship not confirmed * txBAD_MIN_SEQ_AGE_OR_GAP = -15, // minSeqAge or minSeqLedgerGap conditions not met * txMALFORMED = -16, // precondition is invalid - * txSOROBAN_INVALID = -17 // soroban-specific preconditions were not met + * txSOROBAN_INVALID = -17, // soroban-specific preconditions were not met + * txFROZEN_KEY_ACCESSED = -18 // a 'frozen' ledger key is accessed by any operation * }; * */ @@ -58,7 +59,8 @@ public enum TransactionResultCode implements XdrElement { txBAD_SPONSORSHIP(-14), txBAD_MIN_SEQ_AGE_OR_GAP(-15), txMALFORMED(-16), - txSOROBAN_INVALID(-17); + txSOROBAN_INVALID(-17), + txFROZEN_KEY_ACCESSED(-18); private final int value; @@ -113,6 +115,8 @@ public static TransactionResultCode decode(XdrDataInputStream stream, int maxDep return txMALFORMED; case -17: return txSOROBAN_INVALID; + case -18: + return txFROZEN_KEY_ACCESSED; default: throw new IllegalArgumentException("Unknown enum value: " + value); } @@ -187,6 +191,8 @@ Object toJsonObject() { return "txmalformed"; case txSOROBAN_INVALID: return "txsoroban_invalid"; + case txFROZEN_KEY_ACCESSED: + return "txfrozen_key_accessed"; default: throw new IllegalArgumentException("Unknown enum value: " + this.value); } @@ -233,6 +239,8 @@ static TransactionResultCode fromJsonObject(Object json) { return txMALFORMED; case "txsoroban_invalid": return txSOROBAN_INVALID; + case "txfrozen_key_accessed": + return txFROZEN_KEY_ACCESSED; default: throw new IllegalArgumentException("Unknown JSON value: " + value); } diff --git a/xdr/Stellar-contract-config-setting.x b/xdr/Stellar-contract-config-setting.x index 9a95937da..80c0d7fcf 100644 --- a/xdr/Stellar-contract-config-setting.x +++ b/xdr/Stellar-contract-config-setting.x @@ -1,6 +1,9 @@ %#include "xdr/Stellar-types.h" namespace stellar { + +typedef opaque EncodedLedgerKey<>; + // General “Soroban execution lane” settings struct ConfigSettingContractExecutionLanesV0 { @@ -291,7 +294,9 @@ enum ContractCostType { // Cost of performing BN254 scalar element exponentiation Bn254FrPow = 83, // Cost of performing BN254 scalar element inversion - Bn254FrInv = 84 + Bn254FrInv = 84, + // Cost of performing BN254 G1 multi-scalar multiplication (MSM) + Bn254G1Msm = 85 }; struct ContractCostParamEntry { @@ -341,6 +346,24 @@ struct ConfigSettingSCPTiming { uint32 ballotTimeoutIncrementMilliseconds; }; +struct FrozenLedgerKeys { + EncodedLedgerKey keys<>; +}; + +struct FrozenLedgerKeysDelta { + EncodedLedgerKey keysToFreeze<>; + EncodedLedgerKey keysToUnfreeze<>; +}; + +struct FreezeBypassTxs { + Hash txHashes<>; +}; + +struct FreezeBypassTxsDelta { + Hash addTxs<>; + Hash removeTxs<>; +}; + // limits the ContractCostParams size to 20kB const CONTRACT_COST_COUNT_LIMIT = 1024; @@ -365,7 +388,11 @@ enum ConfigSettingID CONFIG_SETTING_EVICTION_ITERATOR = 13, CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14, CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15, - CONFIG_SETTING_SCP_TIMING = 16 + CONFIG_SETTING_SCP_TIMING = 16, + CONFIG_SETTING_FROZEN_LEDGER_KEYS = 17, + CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA = 18, + CONFIG_SETTING_FREEZE_BYPASS_TXS = 19, + CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA = 20 }; union ConfigSettingEntry switch (ConfigSettingID configSettingID) @@ -404,5 +431,13 @@ case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0: ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; case CONFIG_SETTING_SCP_TIMING: ConfigSettingSCPTiming contractSCPTiming; +case CONFIG_SETTING_FROZEN_LEDGER_KEYS: + FrozenLedgerKeys frozenLedgerKeys; +case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: + FrozenLedgerKeysDelta frozenLedgerKeysDelta; +case CONFIG_SETTING_FREEZE_BYPASS_TXS: + FreezeBypassTxs freezeBypassTxs; +case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: + FreezeBypassTxsDelta freezeBypassTxsDelta; }; } diff --git a/xdr/Stellar-transaction.x b/xdr/Stellar-transaction.x index 9a14d6e4f..c22f5b4a5 100644 --- a/xdr/Stellar-transaction.x +++ b/xdr/Stellar-transaction.x @@ -1597,7 +1597,8 @@ enum ClaimClaimableBalanceResultCode CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM = -2, CLAIM_CLAIMABLE_BALANCE_LINE_FULL = -3, CLAIM_CLAIMABLE_BALANCE_NO_TRUST = -4, - CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5 + CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5, + CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN = -6 }; union ClaimClaimableBalanceResult switch (ClaimClaimableBalanceResultCode code) @@ -1609,6 +1610,7 @@ case CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM: case CLAIM_CLAIMABLE_BALANCE_LINE_FULL: case CLAIM_CLAIMABLE_BALANCE_NO_TRUST: case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED: +case CLAIM_CLAIMABLE_BALANCE_TRUSTLINE_FROZEN: void; }; @@ -1778,7 +1780,9 @@ enum LiquidityPoolDepositResultCode LIQUIDITY_POOL_DEPOSIT_LINE_FULL = -5, // pool share trust line doesn't // have sufficient limit LIQUIDITY_POOL_DEPOSIT_BAD_PRICE = -6, // deposit price outside bounds - LIQUIDITY_POOL_DEPOSIT_POOL_FULL = -7 // pool reserves are full + LIQUIDITY_POOL_DEPOSIT_POOL_FULL = -7, // pool reserves are full + LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN = -8 // trustline for one of the + // assets is frozen }; union LiquidityPoolDepositResult switch (LiquidityPoolDepositResultCode code) @@ -1792,6 +1796,7 @@ case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED: case LIQUIDITY_POOL_DEPOSIT_LINE_FULL: case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE: case LIQUIDITY_POOL_DEPOSIT_POOL_FULL: +case LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN: void; }; @@ -1810,7 +1815,9 @@ enum LiquidityPoolWithdrawResultCode // pool share LIQUIDITY_POOL_WITHDRAW_LINE_FULL = -4, // would go above limit for one // of the assets - LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM = -5 // didn't withdraw enough + LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM = -5, // didn't withdraw enough + LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN = -6 // trustline for one of the + // assets is frozen }; union LiquidityPoolWithdrawResult switch (LiquidityPoolWithdrawResultCode code) @@ -1822,6 +1829,7 @@ case LIQUIDITY_POOL_WITHDRAW_NO_TRUST: case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED: case LIQUIDITY_POOL_WITHDRAW_LINE_FULL: case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM: +case LIQUIDITY_POOL_WITHDRAW_TRUSTLINE_FROZEN: void; }; @@ -1999,7 +2007,8 @@ enum TransactionResultCode txBAD_SPONSORSHIP = -14, // sponsorship not confirmed txBAD_MIN_SEQ_AGE_OR_GAP = -15, // minSeqAge or minSeqLedgerGap conditions not met txMALFORMED = -16, // precondition is invalid - txSOROBAN_INVALID = -17 // soroban-specific preconditions were not met + txSOROBAN_INVALID = -17, // soroban-specific preconditions were not met + txFROZEN_KEY_ACCESSED = -18 // a 'frozen' ledger key is accessed by any operation }; // InnerTransactionResult must be binary compatible with TransactionResult @@ -2031,6 +2040,7 @@ struct InnerTransactionResult case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: case txSOROBAN_INVALID: + case txFROZEN_KEY_ACCESSED: void; } result; @@ -2078,6 +2088,7 @@ struct TransactionResult case txBAD_MIN_SEQ_AGE_OR_GAP: case txMALFORMED: case txSOROBAN_INVALID: + case txFROZEN_KEY_ACCESSED: void; } result;