From 09a4d6a5a2a1ad3a3a76ad8d29614701350df530 Mon Sep 17 00:00:00 2001 From: tamirms Date: Fri, 7 Jan 2022 14:42:48 +0300 Subject: [PATCH 1/2] Support muxed accounts by default. Previously, in https://github.com/stellar/java-stellar-sdk/pull/348 we added opt in support for muxed. But, by default, we rendered muxed accounts in their non muxed encoding. We are now changing the default behavior so that muxed accounts are rendered using ther 'M' address encoding. --- .../org/stellar/sdk/AbstractTransaction.java | 4 +-- .../org/stellar/sdk/FeeBumpTransaction.java | 4 +-- src/main/java/org/stellar/sdk/Operation.java | 6 ++-- .../java/org/stellar/sdk/Sep10Challenge.java | 4 +-- .../java/org/stellar/sdk/Transaction.java | 8 ++--- .../java/org/stellar/sdk/OperationTest.java | 34 +++++++++---------- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/main/java/org/stellar/sdk/AbstractTransaction.java b/src/main/java/org/stellar/sdk/AbstractTransaction.java index a7dd125f9..99de3c7cb 100644 --- a/src/main/java/org/stellar/sdk/AbstractTransaction.java +++ b/src/main/java/org/stellar/sdk/AbstractTransaction.java @@ -126,7 +126,7 @@ public static AbstractTransaction fromEnvelopeXdr(AccountConverter accountConver * @return */ public static AbstractTransaction fromEnvelopeXdr(TransactionEnvelope envelope, Network network) { - return fromEnvelopeXdr(AccountConverter.disableMuxed(), envelope, network); + return fromEnvelopeXdr(AccountConverter.enableMuxed(), envelope, network); } /** @@ -150,7 +150,7 @@ public static AbstractTransaction fromEnvelopeXdr(AccountConverter accountConver * @throws IOException */ public static AbstractTransaction fromEnvelopeXdr(String envelope, Network network) throws IOException { - return fromEnvelopeXdr(AccountConverter.disableMuxed(), envelope, network); + return fromEnvelopeXdr(AccountConverter.enableMuxed(), envelope, network); } public static byte[] getTransactionSignatureBase(TransactionSignaturePayload.TransactionSignaturePayloadTaggedTransaction taggedTransaction, diff --git a/src/main/java/org/stellar/sdk/FeeBumpTransaction.java b/src/main/java/org/stellar/sdk/FeeBumpTransaction.java index 90ee68ad7..afc048c02 100644 --- a/src/main/java/org/stellar/sdk/FeeBumpTransaction.java +++ b/src/main/java/org/stellar/sdk/FeeBumpTransaction.java @@ -49,7 +49,7 @@ public static FeeBumpTransaction fromFeeBumpTransactionEnvelope(AccountConverter } public static FeeBumpTransaction fromFeeBumpTransactionEnvelope(FeeBumpTransactionEnvelope envelope, Network network) { - return fromFeeBumpTransactionEnvelope(AccountConverter.disableMuxed(), envelope, network); + return fromFeeBumpTransactionEnvelope(AccountConverter.enableMuxed(), envelope, network); } private org.stellar.sdk.xdr.FeeBumpTransaction toXdr() { @@ -140,7 +140,7 @@ public Builder(AccountConverter accountConverter, Transaction inner) { * @param inner The inner transaction which will be fee bumped. */ public Builder(Transaction inner) { - this(AccountConverter.disableMuxed(), inner); + this(AccountConverter.enableMuxed(), inner); } public FeeBumpTransaction.Builder setBaseFee(long baseFee) { diff --git a/src/main/java/org/stellar/sdk/Operation.java b/src/main/java/org/stellar/sdk/Operation.java index dcf1e1e0c..4b917115f 100644 --- a/src/main/java/org/stellar/sdk/Operation.java +++ b/src/main/java/org/stellar/sdk/Operation.java @@ -47,7 +47,7 @@ public org.stellar.sdk.xdr.Operation toXdr(AccountConverter accountConverter) { * Generates Operation XDR object. */ public org.stellar.sdk.xdr.Operation toXdr() { - return toXdr(AccountConverter.disableMuxed()); + return toXdr(AccountConverter.enableMuxed()); } /** @@ -70,7 +70,7 @@ public String toXdrBase64(AccountConverter accountConverter) { * Returns base64-encoded Operation XDR object. */ public String toXdrBase64() { - return toXdrBase64(AccountConverter.disableMuxed()); + return toXdrBase64(AccountConverter.enableMuxed()); } @@ -199,7 +199,7 @@ public static Operation fromXdr(AccountConverter accountConverter, org.stellar.s * @param xdr XDR object */ public static Operation fromXdr(org.stellar.sdk.xdr.Operation xdr) { - return fromXdr(AccountConverter.disableMuxed(), xdr); + return fromXdr(AccountConverter.enableMuxed(), xdr); } /** diff --git a/src/main/java/org/stellar/sdk/Sep10Challenge.java b/src/main/java/org/stellar/sdk/Sep10Challenge.java index 57c961ae6..50f97e2f3 100644 --- a/src/main/java/org/stellar/sdk/Sep10Challenge.java +++ b/src/main/java/org/stellar/sdk/Sep10Challenge.java @@ -88,7 +88,7 @@ public static Transaction newChallenge( .setSourceAccount(sourceAccount.getAccountId()) .build(); - Transaction.Builder builder = new Transaction.Builder(AccountConverter.disableMuxed(), sourceAccount, network) + Transaction.Builder builder = new Transaction.Builder(AccountConverter.enableMuxed(), sourceAccount, network) .addTimeBounds(timebounds) .setBaseFee(100) .addOperation(domainNameOperation) @@ -137,7 +137,7 @@ public static ChallengeTransaction readChallengeTransaction(String challengeXdr, } // decode the received input as a base64-urlencoded XDR representation of Stellar transaction envelope - AbstractTransaction parsed = Transaction.fromEnvelopeXdr(AccountConverter.disableMuxed(), challengeXdr, network); + AbstractTransaction parsed = Transaction.fromEnvelopeXdr(AccountConverter.enableMuxed(), challengeXdr, network); if (!(parsed instanceof Transaction)) { throw new InvalidSep10ChallengeException("Transaction cannot be a fee bump transaction"); } diff --git a/src/main/java/org/stellar/sdk/Transaction.java b/src/main/java/org/stellar/sdk/Transaction.java index 8b6a1e433..fc90f502f 100644 --- a/src/main/java/org/stellar/sdk/Transaction.java +++ b/src/main/java/org/stellar/sdk/Transaction.java @@ -145,7 +145,7 @@ private TransactionV0 toXdr() { // operations org.stellar.sdk.xdr.Operation[] operations = new org.stellar.sdk.xdr.Operation[mOperations.length]; for (int i = 0; i < mOperations.length; i++) { - operations[i] = mOperations[i].toXdr(AccountConverter.disableMuxed()); + operations[i] = mOperations[i].toXdr(AccountConverter.enableMuxed()); } // ext TransactionV0.TransactionV0Ext ext = new TransactionV0.TransactionV0Ext(); @@ -223,7 +223,7 @@ public static Transaction fromV0EnvelopeXdr(AccountConverter accountConverter, T } public static Transaction fromV0EnvelopeXdr(TransactionV0Envelope envelope, Network network) { - return fromV0EnvelopeXdr(AccountConverter.disableMuxed(), envelope, network); + return fromV0EnvelopeXdr(AccountConverter.enableMuxed(), envelope, network); } public static Transaction fromV1EnvelopeXdr(AccountConverter accountConverter, TransactionV1Envelope envelope, Network network) { @@ -254,7 +254,7 @@ public static Transaction fromV1EnvelopeXdr(AccountConverter accountConverter, T } public static Transaction fromV1EnvelopeXdr(TransactionV1Envelope envelope, Network network) { - return fromV1EnvelopeXdr(AccountConverter.disableMuxed(), envelope, network); + return fromV1EnvelopeXdr(AccountConverter.enableMuxed(), envelope, network); } /** @@ -320,7 +320,7 @@ public Builder(AccountConverter accountConverter, TransactionBuilderAccount sour * will be incremented. */ public Builder(TransactionBuilderAccount sourceAccount, Network network) { - this(AccountConverter.disableMuxed(), sourceAccount, network); + this(AccountConverter.enableMuxed(), sourceAccount, network); } public int getOperationsCount() { diff --git a/src/test/java/org/stellar/sdk/OperationTest.java b/src/test/java/org/stellar/sdk/OperationTest.java index 619f7f325..4d8531355 100644 --- a/src/test/java/org/stellar/sdk/OperationTest.java +++ b/src/test/java/org/stellar/sdk/OperationTest.java @@ -90,9 +90,9 @@ public void testMuxedPaymentOperation() throws FormatException, IOException, Ass assertEquals(destination, parsedOperation.getDestination()); assertEquals(source, parsedOperation.getSourceAccount()); - parsedOperation = (PaymentOperation) Operation.fromXdr(AccountConverter.disableMuxed(), xdr); - assertEquals("GDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKTL3", parsedOperation.getDestination()); - assertEquals("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ", parsedOperation.getSourceAccount()); + parsedOperation = (PaymentOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); + assertEquals("MDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKAAAAAAMV7V2XYGQO", parsedOperation.getDestination()); + assertEquals("MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK", parsedOperation.getSourceAccount()); } @Test @@ -200,9 +200,9 @@ public void testMuxedPathPaymentStrictReceiveOperation() throws FormatException, assertEquals(destination, parsedOperation.getDestination()); assertEquals(source, parsedOperation.getSourceAccount()); - parsedOperation = (PathPaymentStrictReceiveOperation) Operation.fromXdr(AccountConverter.disableMuxed(), xdr); - assertEquals("GDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKTL3", parsedOperation.getDestination()); - assertEquals("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ", parsedOperation.getSourceAccount()); + parsedOperation = (PathPaymentStrictReceiveOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); + assertEquals("MDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKAAAAAAMV7V2XYGQO", parsedOperation.getDestination()); + assertEquals("MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK", parsedOperation.getSourceAccount()); } @Test @@ -316,9 +316,9 @@ public void testMuxedPathPaymentStrictSendOperation() throws FormatException, IO assertEquals(destination, parsedOperation.getDestination()); assertEquals(source, parsedOperation.getSourceAccount()); - parsedOperation = (PathPaymentStrictSendOperation) Operation.fromXdr(AccountConverter.disableMuxed(), xdr); - assertEquals("GDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKTL3", parsedOperation.getDestination()); - assertEquals("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ", parsedOperation.getSourceAccount()); + parsedOperation = (PathPaymentStrictSendOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); + assertEquals("MDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKAAAAAAMV7V2XYGQO", parsedOperation.getDestination()); + assertEquals("MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK", parsedOperation.getSourceAccount()); } @Test @@ -729,9 +729,9 @@ public void testMuxedAccountMergeOperation() throws IOException, FormatException assertEquals(destination, parsedOperation.getDestination()); assertEquals(source, parsedOperation.getSourceAccount()); - parsedOperation = (AccountMergeOperation) Operation.fromXdr(AccountConverter.disableMuxed(), xdr); - assertEquals("GDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKTL3", parsedOperation.getDestination()); - assertEquals("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ", parsedOperation.getSourceAccount()); + parsedOperation = (AccountMergeOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); + assertEquals("MDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKAAAAAAMV7V2XYGQO", parsedOperation.getDestination()); + assertEquals("MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK", parsedOperation.getSourceAccount()); } @Test @@ -1044,9 +1044,9 @@ public void testMuxedClawbackOperation() throws IOException, FormatException { assertEquals(from, parsedOperation.getFrom()); assertEquals(source, parsedOperation.getSourceAccount()); - parsedOperation = (ClawbackOperation) Operation.fromXdr(AccountConverter.disableMuxed(), xdr); - assertEquals("GDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKTL3", parsedOperation.getFrom()); - assertEquals("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ", parsedOperation.getSourceAccount()); + parsedOperation = (ClawbackOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); + assertEquals("MDQNY3PBOJOKYZSRMK2S7LHHGWZIUISD4QORETLMXEWXBI7KFZZMKAAAAAAMV7V2XYGQO", parsedOperation.getFrom()); + assertEquals("MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK", parsedOperation.getSourceAccount()); } @Test @@ -1064,9 +1064,9 @@ public void testMixedMuxedClawbackOperation() throws IOException, FormatExceptio assertEquals(from, parsedOperation.getFrom()); assertEquals(source, parsedOperation.getSourceAccount()); - parsedOperation = (ClawbackOperation) Operation.fromXdr(AccountConverter.disableMuxed(), xdr); + parsedOperation = (ClawbackOperation) Operation.fromXdr(AccountConverter.enableMuxed(), xdr); assertEquals(from, parsedOperation.getFrom()); - assertEquals("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ", parsedOperation.getSourceAccount()); + assertEquals("MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK", parsedOperation.getSourceAccount()); } @Test From c5256be32a8df136da99eb1b6c173599a0f1c5ad Mon Sep 17 00:00:00 2001 From: tamirms Date: Mon, 10 Jan 2022 12:23:10 -0500 Subject: [PATCH 2/2] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4951fb852..2f5458caa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ As this project is pre 1.0, breaking changes may happen for minor version bumps. ### Breaking changes * org.stellar.sdk.Asset.createNonNativeAsset() is now private. ([#398](https://github.com/stellar/java-stellar-sdk/pull/398)). * org.stellar.sdk.responses.effects.TrustlineCUDResponse, removed non-default public constructor, it wasn't needed. ([#398](https://github.com/stellar/java-stellar-sdk/pull/398)). +* Muxed accounts are now supported by default. Previously we added opt in support for muxed accounts. But now we are changing the default behavior so that muxed accounts are rendered using their 'M' address encoding ([#399](https://github.com/stellar/java-stellar-sdk/pull/399)). ## 0.30.0