Skip to content

Releases: lightsail-network/java-stellar-sdk

1.0.0

24 Nov 03:14
f80b424
Compare
Choose a tag to compare

We are excited to announce the release of version 1.0.0 of the Java Stellar SDK!

This marks a significant milestone in the project's development, representing the culmination of extensive work and valuable community feedback since the alpha and beta releases.

This version is identical in functionality to 1.0.0-rc0. If you are upgrading from an older version, please make sure to review the change logs of all previous versions in our CHANGELOG.md, as there have been significant changes throughout the 1.0.0 development cycle. We would like to express our sincere gratitude to everyone who provided feedback, reported issues, and contributed to making this release possible. Your involvement has been instrumental in shaping and improving the SDK.

This release marks our official adoption of semantic versioning, providing more predictability for future updates. Breaking changes will now only be introduced in major version updates.

There are two PRs here that demonstrate how to upgrade to the latest version; you can check them out if needed:

Please continue to share your experiences and report any issues you encounter. Your feedback remains vital for the continued improvement of the SDK.

1.0.0-rc0

14 Nov 11:35
b8ec0e2
Compare
Choose a tag to compare
1.0.0-rc0 Pre-release
Pre-release

The following are the changes since version 1.0.0-beta1. If you are upgrading from an older version,
please also refer to the change logs of previous versions, especially 1.0.0-alpha0.

In addition, there are two PRs here that demonstrate how to upgrade to the latest version; you can check them out if needed:

Update

  • feat: add support for Soroban PRC's getLedgers API interface. (#660)
  • fix: fix the data validation of StrKey class. (#664)

Breaking changes

  • refactor!: change the type of AbstractTransaction.MIN_BASE_FEE from int to long. (#657)
  • refactor!: rename TransactionPreconditions.isValid to TransactionPreconditions.validate. (#666)
  • refactor!: if seed is not present, calling Keypair.sign throws IllegalStateException. (#662)
  • refactor!: StrKeyException has been removed, use IllegalArgumentException instead. When you call functions like Keypair.fromAccountId, this exception will also be thrown if invalid data is passed in. (#663)
  • refactor!: AssetCodeLengthInvalidException has been removed, use IllegalArgumentException instead. (#667)
  • refactor!: MalformedAddressException has been removed, use IllegalArgumentException instead. (#668)

1.0.0-beta1

31 Oct 04:07
b6bc729
Compare
Choose a tag to compare
1.0.0-beta1 Pre-release
Pre-release

The following are the changes since version 1.0.0-beta0. If you are upgrading from an older version,
please also refer to the change logs of previous versions, especially 1.0.0-alpha0.

Update

  • refactor: refactor SSEStream, make it more reliable. (#652)
  • refactor: add pagingToken back to GetEventsResponse.EventInfo. This is to ensure compatibility with older versions of Soroban-RPC. We still recommend using the GetEventsResponse.cursor field after upgrading Soroban-RPC. (#655)

0.44.1

30 Oct 00:59
d08fbfe
Compare
Choose a tag to compare

Update

  • fix: fix SSEStream unpredictably throws unwanted IOException("Canceled"). (#650)

1.0.0-beta0

14 Oct 07:04
23920b9
Compare
Choose a tag to compare
1.0.0-beta0 Pre-release
Pre-release

This is the first release that supports Protocol 22. While the network has not upgraded yet,
you can start integrating the new features into your codebase if you want a head start.

The following are the changes since version 1.0.0-alpha0. If you are upgrading from an older version,
please also refer to the change logs of previous versions, especially 1.0.0-alpha0.

Additionally, here is a PR that can serve as a reference for upgrading from older versions to 1.0.0-*, hoping it will be helpful.

Update

  • feat: support constructors in contract creation via InvokeHostFunctionOperation.createContractOperationBuilder.
  • feat: add support for Soroban PRC's getVersionInfo API.
  • feat: add txHash to GetTransactionResponse and GetTransactionsResponse.Transaction.

Breaking changes

  • refactor!: remove the constructor from KeyPair, use KeyPair.fromSecretSeed or KeyPair.fromAccountId instead.
  • fix!: fix bug with signing auth entries in multi-sig scenarios.
  • feat!: support constructors in contract creation via InvokeHostFunctionOperation.createContractOperationBuilder, the signature of the function has been changed.
  • refactor!: remove amount and numAccounts from AssetResponse.
  • refactor!: remove cost from SimulateTransactionResponse, the correct resource costs can now be retrieved from the transactionData.
  • refactor!: remove pagingToken from GetEventsResponse.EventInfo, use GetEventsResponse.cursor instead.
  • refactor!: The protocolVersion in the response is now represented as an Integer.

1.0.0-alpha0

09 Aug 12:38
c4d124b
Compare
Choose a tag to compare
1.0.0-alpha0 Pre-release
Pre-release

🎉 We are thrilled to announce the release of version 1.0.0-alpha0 for java-stellar-sdk, which has been in development for nearly a decade. This release marks a significant milestone in our journey, as we have made substantial changes and improvements to enhance the functionality and usability of our software.

Please be aware that this release introduces breaking changes. We understand that this may cause inconvenience, but we believe these changes are necessary to rectify past design decisions and lay a solid foundation for the project's future. We have been cautious about introducing breaking changes in previous releases, but we feel this is the right time to make these important adjustments.

If you encounter any issues or have questions regarding the changes, please don't hesitate to submit an issue on our GitHub repository. Alternatively, you can reach out to me directly on the Stellar Dev Discord server. We value your feedback and are committed to addressing any concerns you may have.

Moving forward, we will be adopting semantic versioning starting from the official release of this version. This means that breaking changes will only be introduced in major version updates, providing more stability and predictability for our users.

It's important to note that this is an alpha release and should not be used in production environments. The purpose of this release is to gather feedback, identify and address any remaining issues, and ensure the stability and reliability of the software before the official release.

We appreciate your understanding and support as we work towards delivering a more robust and efficient solution. Thank you for being a part of our community, and we look forward to your continued engagement as we shape the future of this project together.

Maven Central Repository URL: https://central.sonatype.com/artifact/network.lightsail/stellar-sdk/1.0.0-alpha0

Update

  • feat: add support for Soroban PRC's getTransactions and getFeeStats API.
  • feat: add support for Horizon's transaction_async API.
  • feat: optimize RequestTimeoutException, when a timeout occurs, if the server returns some information, you can read them.
  • feat: add Asset.createNonNativeAsset(String, String) and Asset.createNativeAsset().
  • feat: add MuxedAccount class to represent a multiplexed account on Stellar's network.
  • feat: Add Server.loadAccount to load the Account object used for building transactions, supporting MuxedAccount.
  • feat: Add support for MuxedAccount to SorobanServer.getAccount.
  • feat: FeeBumpTransaction supports transactions that include Soroban operations.
  • feat: added a series of functions to parse xdr in the response.
  • fix: When calling TransactionBuilder.build(), the Soroban resource fee will be included in the fee of the built transaction.
  • fix: fix the issue where invoking SorobanServer.prepareTransaction for transactions that have already set SorobanData could result in unexpected high fees.
  • chore: Display the original definition in the XDR class documentation.
  • chore: add some examples, you can find them in the examples directory.
  • chore: bump dependencies.

Breaking changes

  • refactor!: Refactored the handling of exceptions.
    • Moved the Exception classes to the org.stellar.sdk.exception and org.stellar.sdk.federation.exception packages.
    • Most of the exceptions inherit from SdkException, and SdkException inherits from RuntimeException. Please refer to the following link to understand why we use unchecked exceptions: Why unchecked exceptions?
    • Renamed SorobanRpcErrorResponse to SorobanRpcException.
    • FormatException has been renamed to StrKeyException. When encode or decode strkey fails, StrKeyFormatException will be thrown.
    • Detailed the possible exceptions that may be thrown in the documentation.
    • In the previous code, there were instances where RuntimeException was directly thrown. We have now replaced these with more appropriate exceptions such as IllegalArgumentException.
  • refactor!: removed the check for network passphrase in Server, which means we will no longer verify if the network passphrase of transactions matches that of the Server, NetworkMismatchException has been removed.
  • refactor!: moved the Operation classes to the org.stellar.sdk.operations package.
  • refactor!: KeyPair.getSecretSeed returns null if the keypair does not contain a secret key.
  • refactor!: due to the lack of maintenance for net.i2p.crypto:eddsa, we have migrated to org.bouncycastle:bcprov-jdk18on. The constructor of KeyPair has changed, but you generally won't be affected by this change.
  • refactor!: refactor asset classes. LiquidityPoolParameters, LiquidityPoolConstantProductParameters, AssetTypePoolShare, LiquidityPoolShareChangeTrustAsset and LiquidityPoolShareTrustLineAsset have been removed. Use ChangeTrustAsset and TrustLineAsset instead.
  • refactor!: Server.submitTransactionXdr and Server.submitTransaction now return TransactionResponse instead of SubmitTransactionResponse. An exception will be thrown when the transaction submission fails. Please refer to the documentation for more information.
  • refactor!: Server.root() now returns RootRequestBuilder.
  • refactor!: In AllowTrustOperation, authorizeToMaintainLiabilities has been removed and the type of authorize has been changed to TrustLineEntryFlag. Please refer to the documentation for details.
  • refactor!: Previously, operations could be constructed through many methods; now, we have standardized them. Here is an example, please refer to the documentation for more details:
    ClawbackClaimableBalanceOperation op = ClawbackClaimableBalanceOperation.builder()
      .balanceId(balanceId)
      .sourceAccount(source)
      .build();
  • refactor!: TransactionBuilder.IncrementedSequenceNumberFunc has been removed.
  • refactor!: Transaction.Builder has been removed, use TransactionBuilder instead.
  • refactor!: Asset.getType() returns org.stellar.sdk.xdr.AssetType instead of String.
  • refactor!: FeeBumpTransaction.Builder has been removed, use FeeBumpTransaction#createWithBaseFee(String, long, Transaction) or FeeBumpTransaction#createWithFee(String, long, Transaction) instead.
  • refactor!: FeeBumpTransaction.getFeeAccount has been removed, use FeeBumpTransaction.getFeeSource instead.
  • refactor!: remove AccountConverter, this means that we no longer support disabling support for MuxedAccount.
  • refactor!: refactor the way of constructing Predicate.Or and Predicate.And. The inner inside has been removed, and in its place are left and right, used to represent two predicates.
  • refactor!: Refactored response classes.
    • Utilized wrapper classes, such as replacing int with Integer, long with Long, boolean with Boolean, etc.
    • If a field is a list, we now use List instead of arrays.
    • The types of some fields have been modified.
    • Removed some methods.
    • Some field names have been changed to maintain consistency with the Horizon API.
    • Removed all functions that return Optional value.
  • refactor!: remove rateLimitLimit, rateLimitRemaining, and rateLimitReset from the Response. Horizon does not return these fields.
  • refactor!: TransactionBuilder#TransactionBuilder(Transaction) has been removed, because the TransactionBuilder constructed from the transaction may be inconsistent with what the user expects.
  • refactor!: remove LiquidityPoolID. Use String to represent the liquidity pool ID.
  • refactor!: LiquidityPoolWithdrawOperation#LiquidityPoolWithdrawOperation(AssetAmount, AssetAmount, String) has been removed. Use LiquidityPoolWithdrawOperation#LiquidityPoolWithdrawOperation(Asset, BigDecimal, Asset, BigDecimal, BigDecimal) instead.
  • refactor!: LiquidityPoolDepositOperation#LiquidityPoolDepositOperation(AssetAmount, AssetAmount, Price, Price) has been removed. Use LiquidityPoolDepositOperation#LiquidityPoolDepositOperation(Asset, BigDecimal, Asset, BigDecimal, Price, Price) instead.
  • refactor!: the type of the following field has been changed from String to BigDecimal.
    • ChangeTrustOperation.limit
    • ClawbackOperation.amount
    • CreateAccountOperation.startingBalance
    • CreateClaimableBalanceOperation.amount
    • CreatePassiveSellOfferOperation.amount
    • LiquidityPoolDepositOperation.maxAmountA and LiquidityPoolDepositOperation.maxAmountB
    • LiquidityPoolWithdrawOperation.amount, LiquidityPoolWithdrawOperation.minAmountA, and LiquidityPoolWithdrawOperation.minAmountB
    • ManageBuyOfferOperation.amount
    • ManageSellOfferOperation.amount
    • PathPaymentStrictReceiveOperation.sendMax and PathPaymentStrictReceiveOperation.destAmount
    • PathPaymentStrictSendOperation.sendAmount and PathPaymentStrictSendOperation.destMin
    • PaymentOperation.amount
  • refactor!: TransactionPreconditions#TransactionPreconditions(LedgerBounds, Long, BigInteger, long, List, TimeBounds) has been removed, use TransactionPreconditions#TransactionPreconditions(TimeBounds, LedgerBounds, Long, BigInteger, long, List) instead.
  • refactor!: The Federation has been refactored, please use Federation#resolveAddress(String) and Federation#resolveAccountId(String, String) now.
  • refactor!: Set the default value of TransactionPreconditions.extraSigners to new ArrayList<>(), it is not nullable.

0.44.0

14 May 23:23
bb11ceb
Compare
Choose a tag to compare

This release includes support for Stellar Protocol 21.

Update

  • feat: add support for Soroban-RPC v21. (#593)
  • chore: include org.stellar.sdk.xdr in docs. (#594)

0.43.2

01 May 04:59
8fa4304
Compare
Choose a tag to compare

Changes

0.43.1

31 Mar 08:59
d4c52e1
Compare
Choose a tag to compare

Hello everyone, I would like to remind you here that the Java Stellar SDK has been transferred from @stellar to @lightsail-network. I have maintained it for a while before the transfer, and I will continue to maintain it afterwards. If you have any questions or suggestions, please feel free to raise an issue here. I will reply as soon as possible. Thank you.

Update

  • Migrate the project from stellar/java-stellar-sdk to lightsail-network/stellar-stellar-sdk.
  • Update org.stellar.sdk.responses, add missing fields. (#570)
  • Add Asset.getContractId() for calculating the id of the asset contract. (#574)
  • Publish the publication to Maven Central. (#580)
  • Build the project with JDK 21. (#580)
  • Optimize the way of parsing memo in TransactionResponse. (#582)

0.43.0

23 Jan 01:07
76b7f8e
Compare
Choose a tag to compare

Changes

  • Support resource leeway parameter when simulating Soroban transactions. (#561)
  • Support for the new, optional diagnosticEventsXdr field on the SorobanServer.sendTransaction method. (#564)
  • Remove deprecated classes and methods. (#565)
  • Fix the hashCode and equals methods in Transaction and FeeBumpTransaction. (#566)
  • Add TransactionBuilder#TransactionBuilder(Transaction) constructor. (#567)
  • Add toString, hashCode, and equals methods to most classes. (#562)
  • Bump dependencies. (#569)

Breaking changes

  • Fix the hashCode and equals methods in Transaction and FeeBumpTransaction, now they will compare based on the signatureBase(). (#566)
  • The types of the following fields have changed. (#560)
    field before now
    GetEventsRequest.startLedger String Long
    GetEventsResponse.EventInfo.ledger Integer Long
    GetLatestLedgerResponse.protocolVersion Integer Long
  • The following classes and methods have been marked as deprecated in previous releases, and now they have been removed. (#565)
    • AccountResponse.Signer#getAccountId() has been removed, use AccountResponse.Signer#getKey() instead.
    • OffersRequestBuilder#forAccount(String) has been removed, use OffersRequestBuilder#forSeller(String) instead.
    • RootResponse#getProtocolVersion() has been removed, use RootResponse#getCurrentProtocolVersion() instead.
    • SetOptionsOperationResponse#getSigner() has been removed, use SetOptionsOperationResponse#getSignerKey() instead.
    • Transaction.Builder has been removed, use TransactionBuilder instead.
    • TransactionBuilder#buildTimeBounds(long, long) has been removed, use TimeBounds#TimeBounds(long, long) instead.
    • TransactionBuilder#addTimeBounds(TimeBounds) has been removed, use TransactionBuilder#addPreconditions(TransactionPreconditions) instead.