As this project is pre 1.0, breaking changes may happen for minor version bumps. A breaking change will get clearly notified in this log.
- Fix #476: Reinstate cursor for horizon queries
- Updated
AssetResponse
to include more detailed information about balances for the specified asset. - Added the ability to list operations associated with a claimable balance.
- Added the ability to list transactions associated with a claimable balance.
- Many instances of
PublicKey
fields on response classes have been upgraded toAccountId
s to reflect Horizon's improved support for multiplexed addresses. Changes are present in Operation, Transaction and Effect classes.
- Updated for core protocol v17/CAP35:
- Added EffectTrustLineFlagsUpdated
- Added EffectClaimableBalanceClawedBack
- Added ClawBackOperation
- Added ClawBackClaimableBalanceOperation
- Added SetTrustLineFlagsOperation
- Auth challenge transactions can now specify separate web auth & home domains. The home domain is the FQDN that hosts
the relevant
stellar.toml
file for the authenticating service. The web auth domain is the FQDN of the authenticating service itself. Implements SEP-0010 v3.1.
- Adds support for missing snapshot events, capturing those that are unrecognised into a catch all type so that streams can continue.
Match on
UnrecognisedEffect
in order to extract unknown values.
- #389 Adds support for Signer Sponsorship state snapshot events.
- A wide-ranging review of the SDK resulted in realignments to SDK/Network interactions and some data types. This has
resulted in minor breaking changes. These are:
- Many types that previously has
Seq[Byte]
,LazyList[Byte]
orArray[Byte]
as parameters now takeokio.ByteString
. This is an efficient byte array wrapper that supports natural equality checking, fast encoding and smart toString values. Migrate your code by constructing a ByteString from the existing array. - #388 Fixes failure to deserialise ledger entries
- Domain model
decode
andencode
has been replaced bydecodeXdr
andxdr
methods, which take and return XDR values. XDR values support anencode()
method that returns a ByteString. For example, you might have previously writtentransaction.encode // LazyList[Byte]
. Migrate this withtransaction.xdr.encode() // ByteString
. TransactionLedgerEntries
, which is part of a transaction response's metadata, has had its interface simplified.
- Many types that previously has
- #219 Implement Offers endpoint
- CAP-33 Sponsored Reserves Provides the ability for an account to sponsor the reserves of another account, and for the sponsored account to revoke the sponsorship.
- SEP-29 Account Memo Requirement When a payment does not contain a memo, a pre-check is made to ensure the recpient accounts do not require a memo to be set. This behaviour can be overrideen.
- Fixes parsing errors for esoteric memo_text encodings.
- CAP-23 Two-Part Payments Introduces two new operations that separate sending a payment from receiving that payment.
- Adds Sponsor details in the account response, account response balances & signers and in the offer response.
- Provides 4 new methods to obtain claimable balances by id, account, asset or sponsor.
- Fixes failure to parse transaction history with unusually encoded memo text (example).
- SEP-10 Transaction-based Authentication: Create and verify authentication challenges encoded into transactions. This feature allows two parties to perform account-based authentication via existing transaction schemes & standard SDK functionality.
- SEP-7 web+stellar:tx Transaction Signging Requests can be generated, parsed, signed and validated.
- SEP-7 web+stellar:pay Payment Signging Requests can be generated, parsed, signed and validated.
- Support for multiplexed accounts is reinstated.
- All generated transaction are v1 in support of protocol 13.
- Fee bump transactions are supported via
SignedTransaction.bumpFee(amount, signer)
As requested by SDF, support for multiplexed account addressing has been removed. This feature has not yet passed community approval.
- Fixes an error with parsing of Horizon transaction history responses.
- Adds support for Mnemonic phrases in Chinese Simplified, Chinese Traditional, Czech, Italian & Korean
- Adds support for Stellar Core Protocol #13
- Introduces
FeeBump
as an optional field on transactions. AFeeBump
allows account owners to resubmit existing transactions with an increased fee. AllowTrustOperation
now has two difference kinds of authorization in support of CAP-0018. SeeTrustLineFlag
.AccountId
signer key now has an optional sub account id in support of CAP-0027
- Introduces
AllowTrustOperation
fields have changed.authorize: Boolean
has been replaced withtrustLineFlags: Set[TrustLineFlag]
. Whilstauthorize
has been added as a deprecated property for backwards compatibility, this will still break if you rely on pattern matching or construct new instances.AccountId
now contains an optional fieldsubAccountId
. If present, this denotes the unique customer identifier on multiplexed accounts. (i.e. the field that exchanges routinely ask you to provide in the memo field when depositing).
- Horizon cursors are not working as documented, so this release disables support for cursors on queries. The SDK API has not changed, but any provided cursors will be ignored until a future release.
- Supports Horizon v1.0.0-beta
- Adds support for Mnemonic phrases in English, French, Japanese and Spanish
- Can derive hierarchical deterministic addresses
- Shortcuts for deriving addresses in the Stellar tree-space (as KeyPairs)
- Migrated the underlying HTTP mechanism from AkkaHttp to OkHttp to simplify operations & dependencies.
- This release is targeting Scala 2.13 only. If you require backwards compatibility support for Scala 2.12 please vote on this issue
- This release provides support for Horizon v1.0.0 beta:
FeeStatsResponse
fields ending in_accepted_fee
have been deprecated and will be removed.fee_charged
andmax_fee
fields have been added in their place.TransactionLedgerEntries
constructor has been modified to provide strong type support for additional fields added in v2 of this datatype. Access to the fields is simplified by new public values,txnLevelChangesBefore
andtxnLevelChangesAfter
.
- As the Akka dependency has been removed, the Horizon
Source
endpoints are no longer available. The intention is to publish an Akka specific module and re-introduce these endpoints. If you are currently building to the Source endpoints, please vote on this issue in order to expedite the migration.
- #156 Adds support for Core v12 and Horizon v0.22.1
-
The project is no longer published to bintray and maven central. JitPack resolver needs to be added. See README for a sample
build.sbt
config. -
In line with the changes to the core protocol:
PathPaymentOperation
has been renamed toPathPaymentStrictReceiveOperation
PathPaymentStrictSendOperation
has been added.
These operations are differentiated by which party (sender or receiver) will have their funds explicitly stated. The other party will obtain the best rate available via the path supplied.
- #121 Transaction fees are no longer implicit. The initiator of a transaction needs to explicitly specify the maximum fee that they are prepared to pay.
- #129 Timebounds are no longer implicit either. The initiator
of a transaction needs to explicitly specify the timebounds of the transaction. The constant
TimeBounds.Unbounded
is introduced to provide a short-cut for unbounded behaviour.
- #96 Full support for
well-known.toml
fields in theDomainInfo
class. Previously onlyFEDERATION_SERVER
was supported. Now all fields are available. TimeBounds
can be defined in terms of a timeout from 'now', withTimeBounds.timeout(Duration)
.- #66 Transactions can be signed with any arbitrary byte array. This provides the ability to match a hash signer with shared data. (See Hash(x) signing for more details).
AccountResponse
now models account data values asArray[Byte]
, notString
(See below).- Due to this bug in Horizon, the
validBefore
andvalidAfter
fields ofTransactionHistory
may appear asNone
when they were in fact present. This document will note when these fields become reliable again.
- #33 Support for pathfinding endpoint
/paths
. - #35 Support for trade aggregations endpoint
/trade_aggregations
. - #53 On-the-fly decoding of transaction meta-info about the entries affecting the ledger.
- #120 On-the-fly decoding of transaction fee meta-info.
- #92 Horizon Release v0.18.0 compatibility. Added fields
maxFee
andfeeCharged
to transaction responses. The fieldfeePaid
is now deprecated and will be removed in a future release. - #51 Data associated with an account is modelled as a byte array and parsed from Horizon responses as Base64-encoded Strings.
- #74 Failed network calls to Horizon will now automatically retry several times.
- #86 Horizon response of
TooManyRequests
will result in aHorizonRateLimitExceeded
response. That exception type includes the duration until the next rate limit window opens. - #70 Account responses now include account data.
- #76 MemoIds are parsed as Longs and accept zero as a value.
- Renamed types
{Create|Delete|Update}OfferOperation
to{Create|Delete|Update}SellOfferOperation
. - Renamed type
CreatePassiveOfferOperation
toCreatePassiveSellOfferOperation
.
- #77 Supports protocol v11.
- Renames
{Create|Delete|Update}OfferOperation
to{Create|Delete|Update}SellOfferOperation
. - Renames
CreatePassiveOfferOperation
toCreatePassiveSellOfferOperation
. - Introduces
{Create|Delete|Update}BuyOfferOperation
.
- Renames
- #78 Parse
manage_sell_offer
JSON responses to provide compatibility with Horizon v0.18.0.
- Avoid rounding errors in
EffectTrustLine{Created|Updated}
. Separatelimit
andasset
fields where merged into a singleIssuedAmount
.
- #68 Added
base_offer_id
andcounter_offer_id
fields to theTrade
object. These fields were introduced with Horizon v0.15.0 - #69 Added support for optional
valid_before
andvalid_after
fields onTransactionHistory
.
- #72 Avoid rounding errors in Ledger responses.
- #65 Restructure
Signer
andStrKey
and objects to accommodate correct serialisation & deserialisation.
- #64 Unsealed ADT traits are now sealed.
- #65 Failure to parse Set Options Operation JSON responses when the operation set a signer other than an account. This is a partial fix to avoid parse failures. More work is required to properly discriminate signer types. This is blocked by required changes to Horizon.
-
Federation Server integration. #5 #6
- Resolve federated addresses with
KeyPair.fromAddress(address: String): Future[PublicKey]
. - Look up the account details by federated name with
FederationServer.byName
. - Perform a reverse lookup, where it is supported by the server, with
FederationServer.byAccount
.
- Resolve federated addresses with
-
Added
Network.feeStats()
method to return the fee statistics from the most recent ledger, as per thefee_stats
endpoint. #58 -
Added
Network.info()
method to return the values in the Horizon root document including Horizon & Core versions, network passphrase, protocol supported, etc. #56 -
Included client request headers
X-Client-Name
andX-Client-Version
so that Horizon instances & Federation Servers can tell when a request comes from the Scala SDK. #59
- Change to
LedgerResponse
fields to match updates in Horizon v0.17.0. The fieldssuccessTransactionCount
andfailureTransactionCount
were added. The fieldtransactionCount
remains as a method defined in terms of the new fields. #57
AccountResponse
parsing. The JSON fieldpublic_key
was replaced withkey
. #57
-
Introduction of new value on
TransactionResponses
-def sequenceUpdated: Boolean
. This indicates whether the client should consider the sequence number to have incremented as a result of the transaction posting. It's always true when the transaction was successful. But it's only sometimes true if the transaction failed as it depends upon whether the transaction passed pre-consensus validation. -
Attempts to construct a KeyPair with a bad account id will now throw
InvalidAccountId
. -
Attempts to construct a KeyPair with a bad secret seed will now throw
InvalidSecretSeed
.
-
Restructuring of transaction submission response types.
TransactionPostResponse
(abstract)TransactionApproved
TransactionRejected
-
Complete removal of generated XDR classes in favour of domain objects handling their own XDR encoding. This means operations such as
TransactionResult.decodeXDR
will now return instances of domain objects newly created in this release which can be used in pattern matches. These classes incorporate all of the XDR encoded information in a user-friendly form and have the following hierarchy:TransactionResult
(trait)TransactionSuccess
TransactionNotSuccessful
(trait)TransactionFailure
TransactionNotAttempted
-
Most classes have changed packages to better expose the common user-facing classes.
stellar.sdk
contains commonly used classesKeyPair
,Network
and the concrete Network instancesPublicNetwork
andTestNetwork
.stellar.sdk.model
- classes used to model the request and response domain objects.stellar.sdk.model.op
- domain objects specific to operations.stellar.sdk.model.response
- objects representing Horizon responses.stellar.sdk.model.result
- domain objects specific to transaction submission results.stellar.sdk.model.xdr
- helper classes used by domain objects for XDR serialisation.