Skip to content

Latest commit

 

History

History
1462 lines (998 loc) · 75.1 KB

CHANGELOG.md

File metadata and controls

1462 lines (998 loc) · 75.1 KB

Changelog

A breaking change will get clearly marked in this log.

Unreleased

Added

  • contract now exports the DEFAULT_TIMEOUT (#984).
  • contract.AssembledTransaction now has:
    • toXDR and fromXDR methods for serializing the transaction to and from XDR. These methods should be used in place of AssembledTransaction.toJSON and AssembledTransaction.fromJSONfor multi-auth signing. The JSON methods are now deprecated. Note: you must now call simulate on the transaction before the final signAndSend call after all required signatures are gathered when using the XDR methods (#977).
    • a restoreFootprint method which accepts the restorePreamble returned when a simulation call fails due to some contract state that has expired. When invoking a contract function, one can now set restore to true in the MethodOptions. When enabled, a restoreFootprint transaction will be created and await signing when required (#991).
    • separate sign and send methods so that you can sign a transaction without sending it (signAndSend still works as before; #922).
  • contract.Client now has a txFromXDR method which should be used in place of txFromJSON for multi-auth signing (#977).

Deprecated

  • In contract.AssembledTransaction, toJSON and fromJSON should be replaced with toXDR and fromXDR.
  • In contract.Client, txFromJSON should be replaced with txFromXDR.

Fixed

  • If you edit an AssembledTransaction with tx.raw = cloneFrom(tx.build), the tx.simulationData will now be updated correctly (#985).
  • This is a re-tag of v12.0.0-rc.3 with dependency updates and a single new feature.

Added

  • rpc.server.simulateTransaction now supports an optional stateChanges?: LedgerEntryChange[] field (#963):
    • If Before is omitted, it constitutes a creation, if After is omitted, it constitutes a deletions, note that Before and After cannot be be omitted at the same time. Each item follows this schema:
interface LedgerEntryChange {
  type: number;
  key: xdr.LedgerKey;
  before: xdr.LedgerEntry | null;
  after: xdr.LedgerEntry | null;
}

Breaking Changes

  • ContractClient functionality previously added in v11.3.0 was exported in a non-standard way. You can now import it as any other stellar-sdk module (#962):
-import { ContractClient } from '@stellar/stellar-sdk/lib/contract_client'
+import { contract } from '@stellar/stellar-sdk'
+const { Client } = contract

Note that this top-level contract export is a container for ContractClient and related functionality. The ContractClient class is now available at contract.Client, as shown. Further note that there is a capitalized Contract export as well, which comes from stellar-base. You can remember which is which because capital-C Contract is a class, whereas lowercase-c contract is a container/module with a bunch of classes, functions, and types.

Additionally, this is available from the /contract entrypoint, if your version of Node and TypeScript support the exports declaration. Finally, some of its exports have been renamed:

import {
-  ContractClient,
+  Client,
   AssembledTransaction,
-  ContractClientOptions,
+  ClientOptions,
   SentTransaction,
-} from '@stellar/stellar-sdk/lib/contract_client'
+} from '@stellar/stellar-sdk/contract'
  • The ContractSpec class is now nested under the contract module, and has been renamed to Spec (#962). Alternatively, you can import this from the contract entrypoint, if your version of Node and TypeScript support the exports declaration:
-import { ContractSpec } from '@stellar/stellar-sdk'
+import { contract } from '@stellar/stellar-sdk'
+const { Spec } = contract
// OR
+import { Spec } from '@stellar/stellar-sdk/contract'
  • Previously, AssembledTransaction.signAndSend() would return a SentTransaction even if the transaction never finalized. That is, if it successfully sent the transaction to the network, but the transaction was still status: 'PENDING', then it would console.error an error message, but return the indeterminate transaction anyhow. It now throws a SentTransaction.Errors.TransactionStillPending error with that error message instead (#962).

Deprecated

  • SorobanRpc module is now also exported as rpc (#962). You can import it with either name for now, but SorobanRpc will be removed in a future release:
-import { SorobanRpc } from '@stellar/stellar-sdk'
+import { rpc } from '@stellar/stellar-sdk'

You can also now import it at the /rpc entrypoint, if your version of Node and TypeScript support the exports declaration.

-import { SorobanRpc } from '@stellar/stellar-sdk'
-const { Api } = SorobanRpc
+import { Api } from '@stellar/stellar-sdk/rpc'

Added

  • New methods on contract.Client (#960):
    • from(opts: ContractClientOptions) instantiates contract.Client by fetching the contractId's WASM from the network to fill out the client's ContractSpec.
    • fromWasm and fromWasmHash methods to instantiate a contract.Client when you already have the WASM bytes or hash alongside the contract.ClientOptions.
  • New methods on rpc.Server (#960):
    • getContractWasmByContractId and getContractWasmByHash to retrieve a contract's WASM bytecode via its contractId or wasmHash, respectively.

Fixed

  • The breaking changes above (strictly speaking, they are not breaking changes because importing from the inner guts of the SDK is not supported) enable the contract module to be used in non-Node environments.

This update supports Protocol 21. It is an additive change to the protocol so there are no true backwards incompatibilities, but your software may break if you encounter new unexpected fields from this Protocol (#949).

Breaking Changes

  • The default timeout for transaction calls is now set to 300 seconds (5 minutes) from the previous default of 10 seconds. 10 seconds is often not enough time to review transactions before signing, especially in Freighter or using a hardware wallet like a Ledger, which would cause a txTooLate error response from the server. Five minutes is also the value used by the CLI, so this brings the two into alignment (#956).

Fixed

  • Dependencies have been properly updated to pull in Protocol 21 XDR (#959).

Breaking Changes

  • This update supports Protocol 21. It is an additive change to the protocol so there are no true backwards incompatibilities, but your software may break if you encounter new unexpected fields from this Protocol (#949).

Fixed

  • Each item in the GetEventsResponse.events list will now have a txHash item corresponding to the transaction hash that triggered a particular event (#939).
  • ContractClient now properly handles methods that take no arguments by making MethodOptions the only parameter, bringing it inline with the types generated by Soroban CLI's soroban contract bindings typescript (#940).
  • ContractClient now allows publicKey to be undefined (#941).
  • SentTransaction will only pass allowHttp if (and only if) its corresponding AssembledTransaction#options config allowed it (#952).
  • SentTransaction will now modify the time bounds of the transaction to be timeoutInSeconds seconds after the transaction has been simulated. Previously this was set when the transaction is built, before the simulation. This makes the time bounds line up with the timeout retry logic in SentTransaction.

Added

  • Introduces an entire suite of helpers to assist with interacting with smart contracts (#929):
    • ContractClient: generate a class from the contract specification where each Rust contract method gets a matching method in this class. Each method returns an AssembledTransaction that can be used to modify, simulate, decode results, and possibly sign, & submit the transaction.
    • AssembledTransaction: used to wrap a transaction-under-construction and provide high-level interfaces to the most common workflows, while still providing access to low-level transaction manipulation.
    • SentTransaction: transaction sent to the Soroban network, in two steps - initial submission and waiting for it to finalize to get the result (retried with exponential backoff)

Fixed

  • Upgrade underlying dependencies, including @stellar/js-xdr which should broaden compatibility to pre-ES2016 environments (#932, #930).

Fixed

  • SorobanRpc: remove all instances of array-based parsing to conform to future breaking changes in Soroban RPC (#924).

Fixed

  • Event streaming tests now pass on Node 20, which seems to have tighter conformance to the spec (#917).
  • @stellar/stellar-base has been upgraded to its latest major version (#918, see v11.0.0 for release notes).

Fixed

  • An unnecessary dependency has been removed which was causing a TypeScript error in certain environments (#912).
  • Dependencies have been upgraded (see [email protected] for release notes, #913).

Added

  • Support for the new, optional diagnosticEventsXdr field on the SorobanRpc.Server.sendTransaction method. The raw field will be present when using the _sendTransaction method, while the normal method will have an already-parsed diagnosticEvents: xdr.DiagnosticEvent[] field, instead (#905).
  • A new exported interface SorobanRpc.Api.EventResponse so that developers can type-check individual events (#904).

Updated

  • Dependencies have been updated to their latest versions (#906, #908).

Added

  • SorobanRpc.Server.simulateTransaction now supports an optional addlResources parameter to allow users to specify additional resources that they want to include in a simulation (#896).
  • ContractSpec now has a jsonSchema() method to generate a JSON Schema for a particular contract specification (#889).

Fixed

  • All dependencies have been updated to their latest versions, including stellar-base to v10.0.1 which included a small patch (#897).

Fixed

  • SorobanRpc.Server.getEvents uses the correct type for the start ledger.

Breaking Changes

  • The package has been renamed to @stellar/stellar-sdk.
  • The new minimum supported version is Node 18.
  • The PaymentCallBuilder was incorrectly indicating that it would return a collection of Payment records, while in reality it can return a handful of "payment-like" records (#885).

Fixed

  • The SorobanRpc.Server.getEvents method now correctly parses responses without a contractId field set. The events[i].contractId field on an event is now optional, omitted if there was no ID for the event (e.g. system events; (#883)).

Fixed

  • The stellar-base library has been upgraded to beta.4 which contains a bugfix for large sequence numbers (#877).
  • The SorobanRpc.Server.getTransaction() method will now return the full response when encountering a FAILED transaction result (#872).
  • The SorobanRpc.Server.getEvents() method will correctly parse the event value (which is an xdr.ScVal rather than an xdr.DiagnosticEvent, see the modified SorobanRpc.Api.EventResponse.value; #876).

Breaking Changes

  • The soroban-client library (stellar/js-soroban-client) has been merged into this package, causing significant breaking changes in the module structure (#860):
    • The namespaces have changed to move each server-dependent component into its own module. Shared components (e.g. TransactionBuilder) are still in the top level, Horizon-specific interactions are in the Horizon namespace (i.e. Server is now Horizon.Server), and new Soroban RPC interactions are in the SorobanRpc namespace.
    • There is a detailed migration guide available to outline both the literal (i.e. necessary code changes) and philosophical (i.e. how to find certain functionality) changes needed to adapt to this merge.
  • The SorobanRpc.Server.prepareTransaction and SorobanRpc.assembleTransaction methods no longer need an optional networkPassphrase parameter, because it is implicitly part of the transaction already (#870).

Fixed

  • The stellar-base dependency has been pinned to a specific version to avoid incorrect semver resolution (#867).

Fixed

  • Fix a webpack error preventing correct exports of the SDK for browsers (#862).

Breaking Changes

  • Certain effects have been renamed to align better with the "tense" that other structures have (#844):
    • DepositLiquidityEffect -> LiquidityPoolDeposited
    • WithdrawLiquidityEffect -> LiquidityPoolWithdrew
    • LiquidityPoolTradeEffect -> LiquidityPoolTrade
    • LiquidityPoolCreatedEffect -> LiquidityPoolCreated
    • LiquidityPoolRevokedEffect -> LiquidityPoolRevoked
    • LiquidityPoolRemovedEffect -> LiquidityPoolRemoved

Add

  • New effects have been added to support Protocol 20 (Soroban) (#842):
    • ContractCredited occurs when a Stellar asset moves into its corresponding Stellar Asset Contract instance
    • ContractDebited occurs when a Stellar asset moves out of its corresponding Stellar Asset Contract instance
  • Asset stat records (ServerApi.AssetRecord) contain two new fields to support the Protocol 20 (Soroban) release (#841):
    • num_contracts - the integer quantity of contracts that hold this asset
    • contracts_amount - the total units of that asset held by contracts
  • New operation responses (#845):
    • invokeHostFunction: see Horizon.InvokeHostFunctionOperationResponse
    • bumpFootprintExpiration: see Horizon.BumpFootprintExpirationOperationResponse
    • restoreFootprint: see Horizon.RestoreFootprintOperationResponse
    • You can refer to the actual definitions for details, but the gist of the schemas is below:
interface InvokeHostFunctionOperationResponse {
  function: string;
  parameters: {
    value: string;
    type: string;
  }[];
  address: string;
  salt: string;
  asset_balance_changes: {
    type: string;
    from: string;
    to: string;
    amount: string;
  }[];
}
interface BumpFootprintExpirationOperationResponse {
  ledgersToExpire: string;
}
interface RestoreFootprintOperationResponse {};

Fixed

  • Some effect definitions that were missing have been added (#842):
    • ClaimableBalanceClawedBack is now defined
    • type EffectRecord now has all of the effect types
  • The stellar-base library has been upgraded to support the latest Protocol 20 XDR schema and all Soroban functionality ().

Update

  • Bundle size has decreased by dropping unnecessary dependencies (lodash: #822, es6-promise: #823, polyfills: #825, detect-node: #831).
  • Dependencies (including stellar-base) have been updated to their latest versions (#825, #827).

This version is marked by a major version bump because of the significant upgrades to underlying dependencies. While there should be no noticeable API changes from a downstream perspective, there may be breaking changes in the way that this library is bundled.

Update

  • Build system has been overhauled to support Webpack 5 (#814).
  • stellar-base has been updated to its corresponding overhaul (#818).

Fix

  • Missing fields have been added to certain API responses (#801 and #797).

Update

  • Bumps stellar-base version to v8.2.2 to include latest fix: enabling fast signing in service workers (#806).

Add

  • Add SEP-1 fields to StellarTomlResolver for type checks (#794).
  • Add support for passing X-Auth-Token as a custom header (#795).

Update

  • Bumps stellar-base version to v8.2.1 to include latest fixes.

Fix

  • Adds successful field to transaction submission response (#790).

Update

  • Bumps stellar-base version to v8.2.0 to include CAP-40 support in Operation.setOptions.

Fix

  • Adds the missing successful field to transaction responses (#790).

Update

  • Bumps stellar-base version to v8.1.0 to include bug fixes and latest XDR changes.

Fix

  • Upgrades the eventsource dependency to fix a critical security vulnerability (#783).

Fix

  • Reverts a change from v10.1.0 which caused streams to die prematurely (#780).
  • Bumps stellar-base version to v8.0.1 to include latest bugfixes.

This is a promotion from the beta version without changes, besides upgrading the underlying [email protected] to its stable release.

Add

  • Add a way to filter offers by seller: OfferCallBuilder.seller(string), corresponding to GET /offers?seller=<string> (#773).

Add

  • Support for Protocol 19 (#775):
    • new precondition fields on a TransactionResponse
    • new account fields on AccountResponse and AccountRecord
    • bumping stellar-base to the latest beta version

Fix

  • Add missing field to account responses: last_modified_time which is the time equivalent of the existing last_modified_ledger (#770).
  • Stop opening extra connections when SSE streams receive event: close events (#772).
  • Fix SSE streams not loading under React Native (thank you, @hunterpetersen!) (#761).

Fix

  • Add missing fields to the LedgerRecord: successful_transaction_count and failed_transaction_count (#740). Note that this also marks several fields as deprecated because they don't actually exist in the Horizon API response:
    • transaction_count: superceded by the sum of the aforementioned fields
    • base_fee: superceded by the base_fee_in_stroops field
    • base_reserve: superceded by the base_reserve_in_stroops field

These deprecated fields will be removed in the next major version. It's unlikely that this breaking change should affect anyone, as these fields have likely been missing/invalid for some time.

Update

  • Update a number of dependencies that needed various security updates:
    • several dependencies bumped their patch version (#736, #684, #672, #666, #644, #622)
    • axios has been bumped to 0.25.0 without causing breaking changes (#742)
    • the karma suite of packages has been updated to the latest major version (#743)

All of the dependencies in question besides axios were developer dependencies, so there never was downstream security impact nor will there be downstream upgrade impact.

This release introduces breaking changes from stellar-base. It adds unconditional support for muxed accounts. Please refer to the corresponding release notes for details on the breaking changes there.

Breaking Updates

  • Upgrades the stellar-base library to v7.0.0 (#735).

  • Removes the AccountResponse.createSubaccount method since this is also gone from the underlying Account interface. The stellar-base release notes describe alternative construction methods (#735).

Fix

  • Use the right string for liquidity pool trades (#734).

Add

  • Adds a way to filter liquidity pools by participating account: server.liquidityPools.forAccount(id) (#727).

Updates

  • Updates the following SEP-10 utility functions to include client domain verification functionality (#720):

    • Utils.buildChallengeTx() accepts the clientDomain and clientSigningKey optional parameters
    • Utils.readChallengeTx() parses challenge transactions containing a client_domain ManageData operation
    • Utils.verifyChallengeTxSigners() verifies an additional signature from the clientSigningKey keypair if a client_domain Manage Data operation is included in the challenge
  • Bumps stellar-base version to v6.0.6.

Fix

This stable release adds support for Protocol 18. For details, you can refer to CAP-38 for XDR changes and this document for changes to the Horizon API.

Refer to the release notes for the betas (e.g. v9.0.0-beta.0) for a comprehensive list of changes to this library.

Fix

  • Corrects the reserves field on LiquidityPoolRecords to be an array (#715).
  • Bumps the stellar-base dependency to v6.0.4 (#715).

Add

  • Add /liquidity_pools/:id/trades endpoint (#710)

Updates

  • Updates the following SEP-10 utility functions to be compilant with the protocols (#709, stellar-protocol/#1036)
    • Updated utils.buildChallengeTx() to accept muxed accounts (M...) for client account IDs
    • Updated utils.buildChallengeTx() to accept a memo parameter to attach to the challenge transaction
    • Updated utils.readChallengeTx() to provide a memo property in the returned object
    • Updated utils.readChallengeTx() to validate challenge transactions with muxed accounts (M...) as the client account ID

Fix

  • Drops the chai-http dependency to be only for developers (#707).

This beta release adds support for Automated Market Makers. For details, you can refer to CAP-38 for XDR changes and this document for detailed changes to the Horizon API.

Add

  • Introduced a LiquidityPoolCallBuilder to make calls to a new endpoint:

    • /liquidity_pools[?reserves=...] - a collection of liquidity pools, optionally filtered by one or more assets (#682)
    • /liquidity_pools/:id - a specific liquidity pool (#687)
  • Expanded the TransactionCallBuilder, OperationCallBuilder, and EffectsCallBuilders to apply to specific liquidity pools (#689). This corresponds to the following new endpoints:

    • /liquidity_pools/:id/transactions
    • /liquidity_pools/:id/operations
    • /liquidity_pools/:id/effects
  • Expanded the TradesCallBuilder to support fetching liquidity pool trades and accepts a new trade_type filter (#685):

    • /trades?trade_type={orderbook,liquidity_pools,all}. By default, the filter is all, including both liquidity pool and orderbook records.
    • A liquidity pool trade contains the following fields:
      • liquidity_pool_fee_bp: LP fee expressed in basis points, and either
      • base_liquidity_pool_id or counter_liquidity_pool_id
  • Added new effects related to liquidity pools (#690):

    • DepositLiquidityEffect
    • WithdrawLiquidityEffect
    • LiquidityPoolTradeEffect
    • LiquidityPoolCreatedEffect
    • LiquidityPoolRemovedEffect
    • LiquidityPoolRevokedEffect
  • Added new responses related to liquidity pool operations (#692):

    • DepositLiquidityOperationResponse
    • WithdrawLiquidityOperationResponse

Updates

  • Updated the underlying stellar-base library to v6.0.1 to include CAP-38 changes (#681).

  • Updated various developer dependencies to secure versions (#671).

  • Updated AccountResponse to include liquidity pool shares in its balances field (#688).

  • Updated AccountCallBuilder to allow filtering based on participation in a certain liquidity pool (#688), corresponding to the following new filter:

    • /accounts?reserves=[...list of assets...]
  • Updated RevokeSponsorshipOperationResponse to contain an optional attribute trustline_liquidity_pool_id, for when a liquidity pool trustline is revoked (#690).

Breaking changes

  • A TradeRecord can now correspond to two different types of trades and has changed (#685):

    • Orderbook (the existing structure)
      • counter_offer_id and base_offer_id only show up in these records
      • the redundant offer_id field was removed; it matches base_offer_id
    • LiquidityPool (new)
      • base_account xor counter_account will appear in these records
    • price fields changed from numbers to strings
    • The links to base and counter can now point to either an account or a liquidity pool
  • An account's balances array can now include a new type (#688):

    • asset_type can now be liquidity_pool_shares
    • The following fields are not included in pool share balances:
      • buying_liabilities
      • selling_liabilities
      • asset_code
      • asset_issue
  • The ChangeTrustOperationResponse has changed (#688, #692):

    • asset_type can now be liquidity_pool_shares
    • asset_code, asset_issuer, and trustee are now optional
    • liquidity_pool_id is a new optional field
  • The trustline effects (TrustlineCreated, TrustlineUpdated, TrustlineRevoked) have changed (#690):

    • the asset type can now be liquidity_pool_shares
    • they can optionally include a liquidity_pool_id
  • Trustline sponsorship effects (TrustlineSponsorshipCreated, TrustlineSponsorshipUpdated, TrustlineSponsorshipRemoved) have been updated (#690):

    • the asset field is now optional, and is replaced by
    • the liquidity_pool_id field for liquidity pools

Update

  • The js-stellar-base library has been updated to v5.3.2, which fixes a muxed account bug and updates vulnerable dependencies (#670).

Fix

  • Utils.readTransactionTx now checks timebounds with a 5-minute grace period to account for clock drift.

Fix

  • Fix server signature verification in Utils.readChallengeTx. The function was not verifying the server account had signed the challenge transaction.

Fix

  • Fixes a breaking bug introduced in v8.2.0 in which AccountResponse no longer conformed to the StellarBase.Account interface, which was updated in [email protected] (#655).

Fix

  • A defunct query paramater (?c=[...]) has been removed now that Horizon properly sends Cache-Control headers (#652).

Add

  • Added support for querying the relevant transactions and operations for a claimable balance (#628):

    • TransactionCallBuilder.forClaimableBalance(): builds a query to /claimable_balances/:id/transactions/
    • OperationCallBuilder.forClaimableBalance(): builds a query to /claimable_balances/:id/operations/
  • Added support for new stat fields on the /assets endpoint (#628):

    • accounts - a breakdown of accounts using this asset by authorization type
    • balances - a breakdown of balances by account authorization type
    • num_claimable_balances - the number of pending claimable balances
    • claimable_balances_amount - the total balance of pending claimable balances
  • Added types for all Effects supported as an enum, and moved Trade, Asset, Offer, and Account types to separate files (#635).

Update

  • Upgraded js-stellar-base package to version ^5.2.1 from ^5.1.0, refer to its release notes for more (#639):

    • opt-in support for muxed accounts (SEP-23)
    • exposing the AuthClawbackEnabled flag to Typescript to complete Protocol 17 support
    • fixing a public key parsing regression
  • Exposed more Protocol 17 (CAP-35) operations (#633):

    • The /accounts endpoint now resolves the flags.auth_clawback_enabled field.
    • The operation responses for clawback, clawbackClaimableBalance, and setTrustLineFlags are now defined.
    • The operation response for setOptions has been updated to show auth_clawback_enabled.

Fix

  • Upgraded js-stellar-base package to version ^5.1.0 from ^5.0.0 to expose the Typescript hints for CAP-35 operations (#629).

Update

  • Upgraded js-stellar-base package to version ^5.0.0 from ^4.0.3 to support new CAP-35 operations (#624)

Breaking

  • Updates the SEP-10 utility function parameters to support SEP-10 v3.1 (#607)
    • A new required webAuthDomain parameter was added to the following functions
      • utils.buildChallengeTx()
      • utils.readChallengeTx()
      • utils.verifyChallengeTxThreshold()
      • utils.verifyChallengeTxSigners()
    • The webAuthDomain parameter is expected to match the value of the Manage Data operation with the 'web_auth_domain' key, if present

Fix

  • Fixes bug where the first Manage Data operation in a challenge transaction could have a null value (#591)

Update

  • Upgraded axios package to version ^0.21.1 from ^0.19.0 to fix security vulnerabilities (#608)

  • Upgraded js-stellar-base package to version ^4.0.3 from ^4.0.0 to allow accounts with a balance of zero (#616)

This release includes a major-version increase due to breaking changes included.

Breaking

  • Updates the SEP-10 utility function parameters and return values to support SEP-10 v3.0
    • The following functions replaced the homeDomain parameter with homeDomains (note: plural):
      • utils.readChallengeTx()
      • utils.verifyChallengeTxThreshold()
      • utils.verifyChallengeTxSigners()
    • utils.readChallengeTx() now returns an additional object attribute, matchedHomeDomain

Update

  • Update challenge transaction helpers for SEP0010 v3.0.0. (#596)
    • Restore homeDomain validation in readChallengeTx().

Update

  • Update challenge transaction helpers for SEP0010 v2.1.0. (#581)
    • Remove verification of home domain.
    • Allow additional manage data operations that have the source account set as the server key.

Update

  • Update claim predicate fields to match Horizon 1.9.1 (#575).

Add

  • Add support for claimable balances (#572). Extend server class to allow loading claimable balances from Horizon. The following functions are available:
server.claimableBalances();
server.claimableBalances().claimant(claimant);
server.claimableBalances().sponsor(sponsorID);
server.claimableBalances().asset(asset);
server.claimableBalances().claimableBalance(balanceID);
  • Add the following attributes to AccountResponse (#572):

    • sponsor?: string
    • num_sponsoring: number
    • num_sponsored: number
  • Add the optional attribute sponsor to AccountSigner, BalanceLineAsset, ClaimableBalanceRecord, and OfferRecord (#572).

  • Add sponsor filtering support for offers and accounts (#572).

    • server.offers().sponsor(accountID)
    • server.accounts().sponsor(accountID)
  • Extend operation responses to support new operations (#572).

    • create_claimable_balance with the following fields:
      • asset - asset available to be claimed (in canonical form),
      • amount - amount available to be claimed,
      • claimants - list of claimants with predicates (see below):
        • destination - destination account ID,
        • predicate - predicate required to claim a balance (see below).
    • claim_claimable_balance with the following fields:
      • balance_id - unique ID of balance to be claimed,
      • claimant - account ID of a claimant.
    • begin_sponsoring_future_reserves with the following fields:
      • sponsored_id - account ID for which future reserves will be sponsored.
    • end_sponsoring_future_reserves with the following fields:
      • begin_sponsor - account sponsoring reserves.
    • revoke_sponsorship with the following fields:
      • account_id - if account sponsorship was revoked,
      • claimable_balance_id - if claimable balance sponsorship was revoked,
      • data_account_id - if account data sponsorship was revoked,
      • data_name - if account data sponsorship was revoked,
      • offer_id - if offer sponsorship was revoked,
      • trustline_account_id - if trustline sponsorship was revoked,
      • trustline_asset - if trustline sponsorship was revoked,
      • signer_account_id - if signer sponsorship was revoked,
      • signer_key - if signer sponsorship was revoked.
  • Extend effect responses to support new effects (#572).

    • claimable_balance_created with the following fields:
      • balance_id - unique ID of claimable balance,
      • asset - asset available to be claimed (in canonical form),
      • amount - amount available to be claimed.
    • claimable_balance_claimant_created with the following fields:
      • balance_id - unique ID of a claimable balance,
      • asset - asset available to be claimed (in canonical form),
      • amount - amount available to be claimed,
      • predicate - predicate required to claim a balance (see below).
    • claimable_balance_claimed with the following fields:
      • balance_id - unique ID of a claimable balance,
      • asset - asset available to be claimed (in canonical form),
      • amount - amount available to be claimed,
    • account_sponsorship_created with the following fields:
      • sponsor - sponsor of an account.
    • account_sponsorship_updated with the following fields:
      • new_sponsor - new sponsor of an account,
      • former_sponsor - former sponsor of an account.
    • account_sponsorship_removed with the following fields:
      • former_sponsor - former sponsor of an account.
    • trustline_sponsorship_created with the following fields:
      • sponsor - sponsor of a trustline.
    • trustline_sponsorship_updated with the following fields:
      • new_sponsor - new sponsor of a trustline,
      • former_sponsor - former sponsor of a trustline.
    • trustline_sponsorship_removed with the following fields:
      • former_sponsor - former sponsor of a trustline.
    • claimable_balance_sponsorship_created with the following fields:
      • sponsor - sponsor of a claimable balance.
    • claimable_balance_sponsorship_updated with the following fields:
      • new_sponsor - new sponsor of a claimable balance,
      • former_sponsor - former sponsor of a claimable balance.
    • claimable_balance_sponsorship_removed with the following fields:
      • former_sponsor - former sponsor of a claimable balance.
    • signer_sponsorship_created with the following fields:
      • signer - signer being sponsored.
      • sponsor - signer sponsor.
    • signer_sponsorship_updated with the following fields:
      • signer - signer being sponsored.
      • former_sponsor - the former sponsor of the signer.
      • new_sponsor - the new sponsor of the signer.
    • signer_sponsorship_removed with the following fields:
      • former_sponsor - former sponsor of a signer.

Breaking

  • Update stellar-base to v4.0.0 which introduces a breaking change in the internal XDR library.

The following functions were renamed:

  • xdr.OperationBody.setOption() -> xdr.OperationBody.setOptions()
  • xdr.OperationBody.manageDatum() -> xdr.OperationBody.manageData()
  • xdr.OperationType.setOption() -> xdr.OperationType.setOptions()
  • xdr.OperationType.manageDatum() -> xdr.OperationType.manageData()

The following enum values were rename in OperationType:

  • setOption -> setOptions
  • manageDatum -> manageData

Update

  • Add tx_set_operation_count to ledger resource (#559).

Fix

  • Fix regression on server.offer().forAccount() which wasn't allowing streaming (#533).

Update

  • Allow submitTransaction to receive a FeeBumpTransaction (#548).

Update

  • Skip SEP0029 (memo required check) for multiplexed accounts (#538).

Fix

  • Fix missing documentation for stellar-base (#544).
  • Move dom-monkeypatch to root types and publish to npm (#543).

Add

  • Add fee bump related attributes to TransactionResponse (#532):
    • fee_account: string.
    • fee_bump_transaction: FeeBumpTransactionResponse:
      interface FeeBumpTransactionResponse {
        hash: string;
        signatures: string[];
      }
    • inner_transaction: InnerTransactionResponse:
      interface InnerTransactionResponse {
        hash: string;
        signatures: string[];
        max_fee: string;
      }
  • Add memo_bytes: string to TransactionResponse (#532).
  • Add authorize_to_maintain_liabilities: boolean to AllowTrustOperation (#532).
  • Add is_authorized_to_maintain_liabilities: boolean to BalanceLineNative (#532).
  • Add new result codes to TransactionFailedResultCodes (#531).
    TX_FEE_BUMP_INNER_SUCCESS = "tx_fee_bump_inner_success",
    TX_FEE_BUMP_INNER_FAILED = "tx_fee_bump_inner_failed",
    TX_NOT_SUPPORTED = "tx_not_supported",
    TX_SUCCESS = "tx_success",
    TX_TOO_EARLY = "tx_too_early",
    TX_TOO_LATE = "tx_too_late",
    TX_MISSING_OPERATION = "tx_missing_operation",
    TX_INSUFFICIENT_BALANCE = "tx_insufficient_balance",
    TX_NO_SOURCE_ACCOUNT = "tx_no_source_account",
    TX_INSUFFICIENT_FEE = "tx_insufficient_fee",
    TX_INTERNAL_ERROR = "tx_internal_error",

Breaking changes

  • The attributes max_fee and fee_charged in TransactionResponse can be now a number or a string. Update your code to handle both types since Horizon will start sending string in version 1.3.0 (#528).
  • Bump stellar-base to v3.0.0: This new version of stellar-base brings support for protocol 13, including multiple breaking changes which might affect your code, please review the list of breaking changes in [email protected] release (#524).
  • Make networkPassphrase a required argument in Utils.buildChallengeTx and Utils.readChallengeTx (#524).
  • Remove Server.paths (#525).

Update

  • Update stellar-base to v3.0.0-alpha-1.

Breaking changes

  • Bump stellar-base to v3.0.0-alpha-0: This new version of stellar-base brings support for protocol 13, including multiple breaking changes which might affect your code, please review the list of breaking changes in [email protected] release (#524).
  • Make networkPassphrase a required argument in Utils.buildChallengeTx and Utils.readChallengeTx (#524).
  • Remove Server.paths (#525).

Add

  • Add SEP0029 (memo required) support. (#516)

    Extends server.submitTransaction to always run a memo required check before sending the transaction. If any of the destinations require a memo and the transaction doesn't include one, then an AccountRequiresMemoError will be thrown.

    You can skip this check by passing {skipMemoRequiredCheck: true} to server.submitTransaction:

    server.submitTransaction(tx, {skipMemoRequiredCheck: true})
    

    The check runs for each operation of type:

    • payment
    • pathPaymentStrictReceive
    • pathPaymentStrictSend
    • mergeAccount

    If the transaction includes a memo, then memo required checking is skipped.

    See SEP0029 for more information about memo required check.

Fix

  • Fix URI TypeScript reference. (#509)
  • Fix docs build. (#503)
  • Fix documentation for method to filter offers by account. (#507)
  • Fix types and add missing attribute to account_response. (#504)

Add

  • Add .offer method to OfferCallBuilder which allows fetching a single offer by ID. (#499)

Fix

  • Fix broken link to Stellar logo+wordmark. (#496)
  • Fix _link omition for AccountResponse class. (#495)

Update

  • Update challenge transaction helpers for SEP0010. (#497)

Added

  • Add support for top-level offers endpoint with seller, selling, and buying filter. (#485) Horizon 1.0 includes a new /offers end-point, which allows you to list all offers, supporting filtering by seller, selling, or buying asset.

    You can fetch data from this endpoint by doing server.offers() and use any of the following filters:

    • seller: server.offers().forAccount(accountId)
    • buying: server.offers().buying(asset)
    • selling: server.offers().selling(asset)

    This introduced a breaking change since it modified the signature for the function server.offers().

    Before, if you wanted to list all the offers for a given account, you'd do:

    server.offers('accounts', accountID)
    

    Starting on this version you'll need to do:

    server.offers().forAccount(accountId)
    

    You can do now things that were not possible before, like finding all offers for an account filtering by the selling or buying asset

    server.offers().forAccount(accountId).selling(assetA).buying(assetB)
    
  • Add support for filtering accounts by signer or asset (#474) Horizon 1.0 includes a new /accounts end-point, which allows you to list all accounts who have another account as a signer or hold a given asset.

    You can fetch data from this endpoint by doing server.accounts() and use any of the following filters:

    • accountID: server.accounts().accountId(accountId), returns a single account.
    • forSigner: server.accounts().forSigner(accountId), returns accounts where accountId is a signer.
    • forAsset: server.accounts().forAsset(asset), returns accounts which hold the asset.
  • Add TypeScript typings for new fields in fee_stats. (#462)

Changed

  • Changed TypeScript typing for multiple operations "type", it will match the new value on Horizon. (#477)

Fixed

  • Fix fetchTimebounds() (#487)
  • Clone the passed URI in CallBuilder constructor, to not mutate the outside ref (#473)
  • Use axios CancelToken to ensure timeout (#482)

Breaking

  • Remove fee_paid field from transaction response. (#476)

  • Remove all *_accepted_fee from FeeStatsResponse. (#463)

  • Change function signature for server.offers. (#485) The signature for the function server.offers() was changed to bring suppport for other filters.

    Before, if you wanted to list all the offers for a given account, you'd do:

    server.offers('accounts', accountID)
    

    Starting on this version you'll need to do:

    server.offers().accountId(accountId)
    

Deprecated ⚠️

  • Horizon 0.25.0 will change the data type for multiple attributes from Int64 to string. When the JSON payload includes an Int64, there are scenarios where large number data can be incorrectly parsed, since JavaScript doesn't support Int64 values. You can read more about it in #1363.

    This release extends the data types for the following attributes to be of type string or number:

    • EffectRecord#offer_id
    • EffectRecord#new_seq
    • OfferRecord#id
    • TradeAggregationRecord#timestamp
    • TradeAggregationRecord#trade_count
    • ManageOfferOperationResponse#offer_id
    • PassiveOfferOperationResponse#offer_id

    We recommend you update your code to handle both string or number in the fields listed above, so that once Horizon 0.25.0 is released, your application will be able to handle the new type without breaking.

Add ➕

  • Add fee_charged an max_fee to TransactionResponse interface. (455)

Deprecated ⚠️

  • Horizon 0.25 will stop sending the property fee_paid in the transaction response. Use fee_charged and max_fee, read more about it in 450.

Change

  • Upgrade stellar-base to v2.1.2. (452)

Change ⚠️

  • Change arguments on server.strictReceivePaths since we included destinationAccount as an argument, but it is not longer required by Horizon. (477)

Add ➕

  • Add server.strictReceivePaths which adds support for /paths/strict-receive. (444) This function takes a list of source assets or a source address, a destination address, a destination asset and a destination amount.

    You can call it passing a list of source assets:

    server.strictReceivePaths(sourceAssets,destinationAsset, destinationAmount)
    

    Or a by passing a Stellar source account address:

    server.strictReceivePaths(sourceAccount,destinationAsset, destinationAmount)
    

    When you call this function with a Stellar account address, it will look at the account’s trustlines and use them to determine all payment paths that can satisfy the desired amount.

  • Add server.strictSendPaths which adds support for /paths/strict-send. (444) This function takes the asset you want to send, and the amount of that asset, along with either a list of destination assets or a destination address.

    You can call it passing a list of destination assets:

    server.strictSendPaths(sourceAsset, sourceAmount, [destinationAsset]).call()
    

    Or a by passing a Stellar account address:

    server.strictSendPaths(sourceAsset, sourceAmount, "GDRREYWHQWJDICNH4SAH4TT2JRBYRPTDYIMLK4UWBDT3X3ZVVYT6I4UQ").call()
    

    When you call this function with a Stellar account address, it will look at the account’s trustlines and use them to determine all payment paths that can satisfy the desired amount.

Deprecated ⚠️

Add

  • Add join method to call builder. (#436)

BREAKING CHANGES ⚠

  • Drop Support for Node 6 since it has been end-of-lifed and no longer in LTS. We now require Node 10 which is the current LTS until April 1st, 2021. (#424

Add

  • Add feeStats support. (#409)

Fix

  • Fix Util.verifyChallengeTx documentation (#405)
  • Fix: listen to stream events with addEventListener (#408)

Fix

  • Fix ServerApi's OrderbookRecord type (#401)

Set

  • Set name in custom errors (#403)

Fix

  • Fix manage data value in SEP0010 challenge builder. (#396)

Add

  • Add support for networkPassphrase in SEP0010 challenge builder. (#397)

Fix

  • Fix #391: Remove instance check for MessageEvent on stream error. (#392)

Add

  • Add helper Utils.verifyChallengeTx to verify SEP0010 "Challenge" Transaction. (#388)
  • Add helper Utils.verifyTxSignedBy to verify that a transaction has been signed by a given account. (#388)

Fix

  • Check for a global EventSource before deciding what to use. This allows you to inject polyfills in other environments like react-native. (#389)

Fix

  • Fix CallBuilder onmessage type (#385)

Add

  • Add single script to build docs and call it when combined with jsdoc. (#380)
  • Add SEP0010 transaction challenge builder. (#375)
  • Add home_domain to ServerApi.AccountRecord (#376)

Bump

  • Bump stellar-base to 1.0.3. (#378)
  • Bump @stellar/tslint-config (#377)

Fix

  • Fix jsdoc's build in after_deploy (#373)
  • Create new URI instead of passing serverUrl (Fix #379). (#382)
  • Breaking change Port stellar-sdk to Typescript. Because we use a slightly different build process, there could be some unanticipated bugs. Additionally, some type definitions have changed:
    • Types that were once in the Server namespace but didn't actually deal with the Server class have been broken out into a new namespace, ServerApi. So, for example, Server.AccountRecord -> ServerApi.AccountRecord.
    • Server.AccountResponse is out of the Server namespace -> AccountResponse
    • Server.*CallBuilder is out of the Server namespace -> *CallBuilder
    • HorizonResponseAccount is now Horizon.AccountResponse
  • Upgrade Webpack to v4.
  • Add support for providing app name and version to request headers.
  • (NPM wouldn't accept the 2.0.0 version, so we're publishing to 2.0.1.)

Many thanks to @Ffloriel and @Akuukis for their help with this release!

  • Make CallCollectionFunction return a CollectionPage.
  • Update Horizon.AccountSigner[] types.
  • Automatically tag alpha / beta releases as "next" in NPM.
  • Upgrade axios to 0.19.0 to close a security vulnerability.
  • Some type fixes.
  • Upgrade stellar-base to v1.0.2 to fix a bug with the browser bundle.
  • Upgrade stellar-base to v1.0.1, which makes available again the deprecated operation functions Operation.manageOffer and Operation.createPassiveOffer (with a warning).
  • Fix the documentation around timebounds.
  • Upgrade stellar-base to v1.0.0, which introduces two breaking changes.
  • Switch stellar-sdk's versioning to true semver! 🎉
  • Add types for LedgerCallBuilder.ledger.
  • Add types for Server.operationFeeStats.
  • Add types for the HorizonAxiosClient export.
  • Move @types/* from devDependencies to dependencies.
  • Pass and use a stream response type to CallBuilders if it's different from the normal call response.
  • Upgrade stellar-base to a version that includes types, and remove @types/stellar-base as a result.
  • In .travis.yml, try to switch from the encrypted API key to an environment var.
  • Fix Server.transactions and Server.payments definitions to properly return collections
  • Renew the npm publish key
  • Add Typescript type definitions (imported from DefinitelyTyped).
  • Make these changes to those definitions:
    • Add definitions for Server.fetchBaseFee and Server.fetchTimebounds
    • CallBuilder: No long always returns CollectionPaged results. Interfaces that extend CallBuilder should specify whether their response is a collection or not
    • CallBuilder: Add inflation_destination and last_modified_ledger property
    • OfferRecord: Fix the returned properties
    • TradeRecord: Fix the returned properties
    • TradesCallBuilder: Add forAccount method
    • TransactionCallBuilder: Add includeFailed method
    • Horizon.BalanceLineNative/Asset: Add buying_liabilities / selling_liabilities properties
  • Fix documentation links.
  • Breaking change: stellar-sdk no longer ships with an EventSource polyfill. If you plan to support IE11 / Edge, please use event-source-polyfill to set window.EventSource.
  • Upgrade stellar-base to a version that doesn't use the crypto library, fixing a bug with Angular 6
  • Add Server.prototype.fetchTimebounds, a helper function that helps you set the timebounds property when initting TransactionBuilder. It bases the timebounds on server time rather than local time.
  • Updated some out-of-date dependencies
  • Update documentation to explicitly set fees
  • Add Server.prototype.fetchBaseFee, which devs can use to fetch the current base fee; we plan to add more functions to help suggest fees in future releases
  • Add includeFailed to OperationCallBuilder for including failed transactions in calls
  • Add operationFeeStats to Server for the new fee stats endpoint
  • After submitting a transaction with a manageOffer operation, return a new property offerResults, which explains what happened to the offer. See Server.prototype.submitTransaction for documentation.

0.13.0

  • Update stellar-base to 0.11.0
  • Added ESLint and Prettier to enforce code style
  • Upgraded dependencies, including Babel to 6
  • Bump local node version to 6.14.0

0.12.0

  • Update stellar-base to 0.10.0:
    • Breaking change Added TransactionBuilder.setTimeout method that sets timebounds.max_time on a transaction. Because of the distributed nature of the Stellar network it is possible that the status of your transaction will be determined after a long time if the network is highly congested. If you want to be sure to receive the status of the transaction within a given period you should set the TimeBounds with maxTime on the transaction (this is what setTimeout does internally; if there's minTime set but no maxTime it will be added). Call to TransactionBuilder.setTimeout is required if Transaction does not have max_time set. If you don't want to set timeout, use TimeoutInfinite. In general you should set TimeoutInfinite only in smart contracts. Please check TransactionBuilder.setTimeout docs for more information.
    • Fixed decoding empty homeDomain.
  • Add offset parameter to TradeAggregationCallBuilder to reflect new changes to the endpoint in horizon-0.15.0

0.11.0

  • Update js-xdr (by updating stellar-base) to support unmarshaling non-utf8 strings.
  • String fields returned by Operation.fromXDRObject() are of type Buffer now (except SetOptions.home_domain and ManageData.name - both required to be ASCII by stellar-core).

0.10.3

  • Update stellar-base and xdr files.

0.10.2

  • Update stellar-base (and js-xdr).

0.10.1

  • Update stellar-base to 0.8.1.

0.10.0

  • Update stellar-base to 0.8.0 with bump_sequence support.

0.9.2

  • Removed .babelrc file from the NPM package.

0.9.1

Breaking changes

  • stellar-sdk is now using native Promise instead of bluebird. The catch function is different. Instead of:

    .catch(StellarSdk.NotFoundError, function (err) { /* ... */ })

    please use the following snippet:

    .catch(function (err) {
      if (err instanceof StellarSdk.NotFoundError) { /* ... */ }
    })
  • We no longer support IE 11, Firefox < 42, Chrome < 49.

Changes

  • Fixed _ is undefined bug.
  • Browser build is around 130 KB smaller!

0.8.2

  • Added timeout option to StellarTomlResolver and FederationServer calls (stellar#158).
  • Fixed adding random value to URLs multiple times (stellar#169).
  • Fixed jsdoc for classes that extend CallBuilder.
  • Updated dependencies.
  • Added yarn.lock file to repository.

0.8.1

  • Add an allowed trade aggregation resolution of one minute
  • Various bug fixes
  • Improved documentation

0.8.0

  • Modify /trades endpoint to reflect changes in horizon.
  • Add /trade_aggregations support.
  • Add /assets support.

0.7.3

  • Upgrade stellar-base.

0.7.2

  • Allow hex string in setOptions signers.

0.7.1

  • Upgrade stellar-base.

0.7.0

  • Support for new signer types: sha256Hash, preAuthTx.
  • StrKey helper class with strkey encoding related methods.
  • Removed deprecated methods: Keypair.isValidPublicKey (use StrKey), Keypair.isValidSecretKey (use StrKey), Keypair.fromSeed, Keypair.seed, Keypair.rawSeed.
  • Breaking changes:
    • Network must be explicitly selected. Previously testnet was a default network.
    • Operation.setOptions() method signer param changed.
    • Keypair.fromAccountId() renamed to Keypair.fromPublicKey().
    • Keypair.accountId() renamed to Keypair.publicKey().
    • Dropping support for End-of-Life node versions.

0.6.2

  • Updated stellar.toml location

0.6.1

  • forUpdate methods of call builders now accept strings and numbers.
  • Create a copy of attribute in a response if there is a link with the same name (ex. transaction.ledger, transaction._links.ledger).

0.6.0

  • Breaking change CallBuilder.stream now reconnects when no data was received for a long time. This is to prevent permanent disconnects (more in: #76). Also, this method now returns close callback instead of EventSource object.
  • Breaking change Server.loadAccount now returns the AccountResponse object.
  • Breaking change Upgraded stellar-base to 0.6.0. ed25519 package is now an optional dependency. Check StellarSdk.FastSigning variable to check if ed25519 package is available. More in README file.
  • New StellarTomlResolver class that allows getting stellar.toml file for a domain.
  • New Config class to set global config values.

0.5.1

  • Fixed XDR decoding issue when using firefox

0.5.0

  • Breaking change Server and FederationServer constructors no longer accept object in serverUrl parameter.
  • Breaking change Removed AccountCallBuilder.address method. Use AccountCallBuilder.accountId instead.
  • Breaking change It's no longer possible to connect to insecure server in Server or FederationServer unless allowHttp flag in opts is set.
  • Updated dependencies.

0.4.3

  • Updated dependency (stellar-base).

0.4.2

  • Updated dependencies.
  • Added tests.
  • Added CHANGELOG.md file.

0.4.1

  • stellar-base bump. (c90c68f)

0.4.0

  • Breaking change Bumped stellar-base to 0.5.0. (b810aef)