A breaking change will get clearly marked in this log.
contract
now exports theDEFAULT_TIMEOUT
(#984).contract.AssembledTransaction
now has:toXDR
andfromXDR
methods for serializing the transaction to and from XDR. These methods should be used in place ofAssembledTransaction.toJSON
andAssembledTransaction.fromJSON
for multi-auth signing. The JSON methods are now deprecated. Note: you must now callsimulate
on the transaction before the finalsignAndSend
call after all required signatures are gathered when using the XDR methods (#977).- a
restoreFootprint
method which accepts therestorePreamble
returned when a simulation call fails due to some contract state that has expired. When invoking a contract function, one can now setrestore
totrue
in theMethodOptions
. When enabled, arestoreFootprint
transaction will be created and await signing when required (#991). - separate
sign
andsend
methods so that you can sign a transaction without sending it (signAndSend
still works as before; #922).
contract.Client
now has atxFromXDR
method which should be used in place oftxFromJSON
for multi-auth signing (#977).
- In
contract.AssembledTransaction
,toJSON
andfromJSON
should be replaced withtoXDR
andfromXDR
. - In
contract.Client
,txFromJSON
should be replaced withtxFromXDR
.
- If you edit an
AssembledTransaction
withtx.raw = cloneFrom(tx.build)
, thetx.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.
rpc.server.simulateTransaction
now supports an optionalstateChanges?: LedgerEntryChange[]
field (#963):- If
Before
is omitted, it constitutes a creation, ifAfter
is omitted, it constitutes a deletions, note thatBefore
andAfter
cannot be be omitted at the same time. Each item follows this schema:
- If
interface LedgerEntryChange {
type: number;
key: xdr.LedgerKey;
before: xdr.LedgerEntry | null;
after: xdr.LedgerEntry | null;
}
ContractClient
functionality previously added in v11.3.0 was exported in a non-standard way. You can now import it as any otherstellar-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 thecontract
module, and has been renamed toSpec
(#962). Alternatively, you can import this from thecontract
entrypoint, if your version of Node and TypeScript support theexports
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 aSentTransaction
even if the transaction never finalized. That is, if it successfully sent the transaction to the network, but the transaction was stillstatus: 'PENDING'
, then it wouldconsole.error
an error message, but return the indeterminate transaction anyhow. It now throws aSentTransaction.Errors.TransactionStillPending
error with that error message instead (#962).
SorobanRpc
module is now also exported asrpc
(#962). You can import it with either name for now, butSorobanRpc
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'
- New methods on
contract.Client
(#960):from(opts: ContractClientOptions)
instantiatescontract.Client
by fetching thecontractId
's WASM from the network to fill out the client'sContractSpec
.fromWasm
andfromWasmHash
methods to instantiate acontract.Client
when you already have the WASM bytes or hash alongside thecontract.ClientOptions
.
- New methods on
rpc.Server
(#960):getContractWasmByContractId
andgetContractWasmByHash
to retrieve a contract's WASM bytecode via itscontractId
orwasmHash
, respectively.
- 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).
- 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).
- Dependencies have been properly updated to pull in Protocol 21 XDR (#959).
- 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).
- Each item in the
GetEventsResponse.events
list will now have atxHash
item corresponding to the transaction hash that triggered a particular event (#939). ContractClient
now properly handles methods that take no arguments by makingMethodOptions
the only parameter, bringing it inline with the types generated by Soroban CLI'ssoroban contract bindings typescript
(#940).ContractClient
now allowspublicKey
to be undefined (#941).SentTransaction
will only passallowHttp
if (and only if) its correspondingAssembledTransaction#options
config allowed it (#952).SentTransaction
will now modify the time bounds of the transaction to betimeoutInSeconds
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 inSentTransaction
.
- 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 anAssembledTransaction
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)
- Upgrade underlying dependencies, including
@stellar/js-xdr
which should broaden compatibility to pre-ES2016 environments (#932, #930).
SorobanRpc
: remove all instances of array-based parsing to conform to future breaking changes in Soroban RPC (#924).
- 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).
- 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).
- Support for the new, optional
diagnosticEventsXdr
field on theSorobanRpc.Server.sendTransaction
method. The raw field will be present when using the_sendTransaction
method, while the normal method will have an already-parseddiagnosticEvents: xdr.DiagnosticEvent[]
field, instead (#905). - A new exported interface
SorobanRpc.Api.EventResponse
so that developers can type-check individual events (#904).
SorobanRpc.Server.simulateTransaction
now supports an optionaladdlResources
parameter to allow users to specify additional resources that they want to include in a simulation (#896).ContractSpec
now has ajsonSchema()
method to generate a JSON Schema for a particular contract specification (#889).
- All dependencies have been updated to their latest versions, including
stellar-base
to v10.0.1 which included a small patch (#897).
SorobanRpc.Server.getEvents
uses the correct type for the start ledger.
- 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 ofPayment
records, while in reality it can return a handful of "payment-like" records (#885).
- The
SorobanRpc.Server.getEvents
method now correctly parses responses without acontractId
field set. Theevents[i].contractId
field on an event is now optional, omitted if there was no ID for the event (e.g. system events; (#883)).
- The
stellar-base
library has been upgraded tobeta.4
which contains a bugfix for large sequence numbers (#877). - The
SorobanRpc.Server.getTransaction()
method will now return the full response when encountering aFAILED
transaction result (#872). - The
SorobanRpc.Server.getEvents()
method will correctly parse the event value (which is anxdr.ScVal
rather than anxdr.DiagnosticEvent
, see the modifiedSorobanRpc.Api.EventResponse.value
; #876).
- 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 theHorizon
namespace (i.e.Server
is nowHorizon.Server
), and new Soroban RPC interactions are in theSorobanRpc
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 namespaces have changed to move each server-dependent component into its own module. Shared components (e.g.
- The
SorobanRpc.Server.prepareTransaction
andSorobanRpc.assembleTransaction
methods no longer need an optionalnetworkPassphrase
parameter, because it is implicitly part of the transaction already (#870).
- The
stellar-base
dependency has been pinned to a specific version to avoid incorrect semver resolution (#867).
- Fix a webpack error preventing correct exports of the SDK for browsers (#862).
- 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
- New effects have been added to support Protocol 20 (Soroban) (#842):
ContractCredited
occurs when a Stellar asset moves into its corresponding Stellar Asset Contract instanceContractDebited
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 assetcontracts_amount
- the total units of that asset held by contracts
- New operation responses (#845):
invokeHostFunction
: seeHorizon.InvokeHostFunctionOperationResponse
bumpFootprintExpiration
: seeHorizon.BumpFootprintExpirationOperationResponse
restoreFootprint
: seeHorizon.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 {};
- Some effect definitions that were missing have been added (#842):
ClaimableBalanceClawedBack
is now definedtype 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 ().
- 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.
- Build system has been overhauled to support Webpack 5 (#814).
stellar-base
has been updated to its corresponding overhaul (#818).
- Bumps
stellar-base
version to v8.2.2 to include latest fix: enabling fast signing in service workers (#806).
- Add SEP-1 fields to
StellarTomlResolver
for type checks (#794). - Add support for passing
X-Auth-Token
as a custom header (#795).
- Bumps
stellar-base
version to v8.2.1 to include latest fixes.
- Adds
successful
field to transaction submission response (#790).
- Bumps
stellar-base
version to v8.2.0 to include CAP-40 support inOperation.setOptions
.
- Adds the missing
successful
field to transaction responses (#790).
- Bumps
stellar-base
version to v8.1.0 to include bug fixes and latest XDR changes.
- Upgrades the
eventsource
dependency to fix a critical security vulnerability (#783).
- 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 a way to filter offers by seller:
OfferCallBuilder.seller(string)
, corresponding toGET /offers?seller=<string>
(#773).
- Support for Protocol 19 (#775):
- new precondition fields on a
TransactionResponse
- new account fields on
AccountResponse
andAccountRecord
- bumping
stellar-base
to the latest beta version
- new precondition fields on a
- Add missing field to account responses:
last_modified_time
which is the time equivalent of the existinglast_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).
- Add missing fields to the
LedgerRecord
:successful_transaction_count
andfailed_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 fieldsbase_fee
: superceded by thebase_fee_in_stroops
fieldbase_reserve
: superceded by thebase_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 a number of dependencies that needed various security updates:
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.
-
Upgrades the stellar-base library to v7.0.0 (#735).
-
Removes the
AccountResponse.createSubaccount
method since this is also gone from the underlyingAccount
interface. Thestellar-base
release notes describe alternative construction methods (#735).
- Use the right string for liquidity pool trades (#734).
- Adds a way to filter liquidity pools by participating account:
server.liquidityPools.forAccount(id)
(#727).
-
Updates the following SEP-10 utility functions to include client domain verification functionality (#720):
Utils.buildChallengeTx()
accepts theclientDomain
andclientSigningKey
optional parametersUtils.readChallengeTx()
parses challenge transactions containing aclient_domain
ManageData operationUtils.verifyChallengeTxSigners()
verifies an additional signature from theclientSigningKey
keypair if aclient_domain
Manage Data operation is included in the challenge
-
Bumps
stellar-base
version to v6.0.6.
-
Fixes the
type_i
enumeration field to accurately reflect liquidity pool effects (#723). -
Upgrades axios dependency to v0.21.4 to alleviate security concern (GHSA-cph5-m8f7-6c5x, #724).
-
Publish Bower package to stellar/bower-js-stellar-sdk (#725).
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.
- Corrects the
reserves
field onLiquidityPoolRecord
s to be an array (#715). - Bumps the
stellar-base
dependency to v6.0.4 (#715).
- Add
/liquidity_pools/:id/trades
endpoint (#710)
- 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 amemo
parameter to attach to the challenge transaction - Updated
utils.readChallengeTx()
to provide amemo
property in the returned object - Updated
utils.readChallengeTx()
to validate challenge transactions with muxed accounts (M...
) as the client account ID
- Updated
- 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.
-
Introduced a
LiquidityPoolCallBuilder
to make calls to a new endpoint: -
Expanded the
TransactionCallBuilder
,OperationCallBuilder
, andEffectsCallBuilder
s 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 newtrade_type
filter (#685):/trades?trade_type={orderbook,liquidity_pools,all}
. By default, the filter isall
, 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 eitherbase_liquidity_pool_id
orcounter_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
-
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 itsbalances
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 attributetrustline_liquidity_pool_id
, for when a liquidity pool trustline is revoked (#690).
-
A
TradeRecord
can now correspond to two different types of trades and has changed (#685):Orderbook
(the existing structure)counter_offer_id
andbase_offer_id
only show up in these records- the redundant
offer_id
field was removed; it matchesbase_offer_id
LiquidityPool
(new)base_account
xorcounter_account
will appear in these records
price
fields changed fromnumber
s tostring
s- The links to
base
andcounter
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 beliquidity_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 beliquidity_pool_shares
asset_code
,asset_issuer
, andtrustee
are now optionalliquidity_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
- the asset type can now be
-
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
- the
- The
js-stellar-base
library has been updated to v5.3.2, which fixes a muxed account bug and updates vulnerable dependencies (#670).
- Utils.readTransactionTx now checks timebounds with a 5-minute grace period to account for clock drift.
- Fix server signature verification in
Utils.readChallengeTx
. The function was not verifying the server account had signed the challenge transaction.
- Fixes a breaking bug introduced in v8.2.0 in which
AccountResponse
no longer conformed to theStellarBase.Account
interface, which was updated in [email protected] (#655).
- A defunct query paramater (
?c=[...]
) has been removed now that Horizon properly sends Cache-Control headers (#652).
-
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 typebalances
- a breakdown of balances by account authorization typenum_claimable_balances
- the number of pending claimable balancesclaimable_balances_amount
- the total balance of pending claimable balances
-
Added types for all Effects supported as an enum, and moved
Trade
,Asset
,Offer
, andAccount
types to separate files (#635).
-
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 theflags.auth_clawback_enabled
field. - The operation responses for
clawback
,clawbackClaimableBalance
, andsetTrustLineFlags
are now defined. - The operation response for
setOptions
has been updated to showauth_clawback_enabled
.
- The
- Upgraded
js-stellar-base
package to version^5.1.0
from^5.0.0
to expose the Typescript hints for CAP-35 operations (#629).
- Upgraded
js-stellar-base
package to version^5.0.0
from^4.0.3
to support new CAP-35 operations (#624)
- Updates the SEP-10 utility function parameters to support SEP-10 v3.1 (#607)
- A new required
webAuthDomain
parameter was added to the following functionsutils.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
- A new required
- Fixes bug where the first Manage Data operation in a challenge transaction could have a null value (#591)
-
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.
- Updates the SEP-10 utility function parameters and return values to support SEP-10 v3.0
- The following functions replaced the
homeDomain
parameter withhomeDomains
(note: plural):utils.readChallengeTx()
utils.verifyChallengeTxThreshold()
utils.verifyChallengeTxSigners()
utils.readChallengeTx()
now returns an additional object attribute,matchedHomeDomain
- The following functions replaced the
- Update challenge transaction helpers for SEP0010 v3.0.0. (#596)
- Restore
homeDomain
validation inreadChallengeTx()
.
- Restore
- 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 claim predicate fields to match Horizon 1.9.1 (#575).
- 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
toAccountSigner
,BalanceLineAsset
,ClaimableBalanceRecord
, andOfferRecord
(#572). -
Add
sponsor
filtering support foroffers
andaccounts
(#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.
- Update
stellar-base
tov4.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
- Add
tx_set_operation_count
toledger
resource (#559).
- Fix regression on
server.offer().forAccount()
which wasn't allowing streaming (#533).
- Allow submitTransaction to receive a FeeBumpTransaction (#548).
- Skip SEP0029 (memo required check) for multiplexed accounts (#538).
- Fix missing documentation for
stellar-base
(#544). - Move dom-monkeypatch to root types and publish to npm (#543).
- 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
toTransactionResponse
(#532). - Add
authorize_to_maintain_liabilities: boolean
toAllowTrustOperation
(#532). - Add
is_authorized_to_maintain_liabilities: boolean
toBalanceLineNative
(#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",
- The attributes
max_fee
andfee_charged
inTransactionResponse
can be now anumber
or astring
. Update your code to handle both types since Horizon will start sendingstring
in version1.3.0
(#528). - Bump
stellar-base
tov3.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 inUtils.buildChallengeTx
andUtils.readChallengeTx
(#524). - Remove
Server.paths
(#525).
- Update
stellar-base
tov3.0.0-alpha-1
.
- Bump
stellar-base
tov3.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 inUtils.buildChallengeTx
andUtils.readChallengeTx
(#524). - Remove
Server.paths
(#525).
-
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 anAccountRequiresMemoError
will be thrown.You can skip this check by passing
{skipMemoRequiredCheck: true}
toserver.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 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
.offer
method toOfferCallBuilder
which allows fetching a single offer by ID. (#499)
- Fix broken link to Stellar logo+wordmark. (#496)
- Fix
_link
omition for AccountResponse class. (#495)
- Update challenge transaction helpers for SEP0010. (#497)
-
Add support for top-level offers endpoint with
seller
,selling
, andbuying
filter. (#485) Horizon 1.0 includes a new/offers
end-point, which allows you to list all offers, supporting filtering byseller
,selling
, orbuying
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
orasset
(#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 whereaccountId
is a signer.forAsset
:server.accounts().forAsset(asset)
, returns accounts which hold theasset
.
-
Add TypeScript typings for new fields in
fee_stats
. (#462)
- Changed TypeScript typing for multiple operations "type", it will match the new value on Horizon. (#477)
- Fix fetchTimebounds() (#487)
- Clone the passed URI in CallBuilder constructor, to not mutate the outside ref (#473)
- Use axios CancelToken to ensure timeout (#482)
-
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 functionserver.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)
-
Horizon 0.25.0 will change the data type for multiple attributes from
Int64
tostring
. When the JSON payload includes anInt64
, there are scenarios where large number data can be incorrectly parsed, since JavaScript doesn't supportInt64
values. You can read more about it in #1363.This release extends the data types for the following attributes to be of type
string
ornumber
: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
ornumber
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
fee_charged
anmax_fee
toTransactionResponse
interface. (455)
- Horizon 0.25 will stop sending the property
fee_paid
in the transaction response. Usefee_charged
andmax_fee
, read more about it in 450.
- Upgrade
stellar-base
tov2.1.2
. (452)
- Change arguments on server.strictReceivePaths since we included
destinationAccount
as an argument, but it is not longer required by Horizon. (477)
-
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.
- Server#paths is deprecated in favor of Server#strictReceivePaths. (444)
- Add join method to call builder. (#436)
- 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 feeStats support. (#409)
- Fix Util.verifyChallengeTx documentation (#405)
- Fix: listen to stream events with addEventListener (#408)
- Fix ServerApi's OrderbookRecord type (#401)
- Set
name
in custom errors (#403)
- Fix manage data value in SEP0010 challenge builder. (#396)
- Add support for networkPassphrase in SEP0010 challenge builder. (#397)
- 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)
- Check for a global EventSource before deciding what to use. This allows you to inject polyfills in other environments like react-native. (#389)
- Fix CallBuilder onmessage type (#385)
- 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)
- 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 theServer
class have been broken out into a new namespace,ServerApi
. So, for example,Server.AccountRecord
->ServerApi.AccountRecord
. Server.AccountResponse
is out of theServer
namespace ->AccountResponse
Server.*CallBuilder
is out of theServer
namespace ->*CallBuilder
HorizonResponseAccount
is nowHorizon.AccountResponse
- Types that were once in the
- 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
andOperation.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 anEventSource
polyfill. If you plan to support IE11 / Edge, please useevent-source-polyfill
to setwindow.EventSource
. - Upgrade
stellar-base
to a version that doesn't use thecrypto
library, fixing a bug with Angular 6 - Add
Server.prototype.fetchTimebounds
, a helper function that helps you set thetimebounds
property when inittingTransactionBuilder
. 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
toOperationCallBuilder
for including failed transactions in calls - Add
operationFeeStats
toServer
for the new fee stats endpoint - After submitting a transaction with a
manageOffer
operation, return a new propertyofferResults
, which explains what happened to the offer. SeeServer.prototype.submitTransaction
for documentation.
- Update
stellar-base
to0.11.0
- Added ESLint and Prettier to enforce code style
- Upgraded dependencies, including Babel to 6
- Bump local node version to 6.14.0
- Update
stellar-base
to0.10.0
:- Breaking change Added
TransactionBuilder.setTimeout
method that setstimebounds.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 withmaxTime
on the transaction (this is whatsetTimeout
does internally; if there'sminTime
set but nomaxTime
it will be added). Call toTransactionBuilder.setTimeout
is required if Transaction does not havemax_time
set. If you don't want to set timeout, useTimeoutInfinite
. In general you should setTimeoutInfinite
only in smart contracts. Please checkTransactionBuilder.setTimeout
docs for more information. - Fixed decoding empty
homeDomain
.
- Breaking change Added
- Add
offset
parameter to TradeAggregationCallBuilder to reflect new changes to the endpoint in horizon-0.15.0
- Update
js-xdr
(by updatingstellar-base
) to support unmarshaling non-utf8 strings. - String fields returned by
Operation.fromXDRObject()
are of typeBuffer
now (exceptSetOptions.home_domain
andManageData.name
- both required to be ASCII by stellar-core).
- Update
stellar-base
and xdr files.
- Update
stellar-base
(andjs-xdr
).
- Update
stellar-base
to0.8.1
.
- Update
stellar-base
to0.8.0
withbump_sequence
support.
- Removed
.babelrc
file from the NPM package.
-
stellar-sdk
is now using nativePromise
instead ofbluebird
. Thecatch
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.
- Fixed
_ is undefined
bug. - Browser build is around 130 KB smaller!
- Added
timeout
option toStellarTomlResolver
andFederationServer
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.
- Add an allowed trade aggregation resolution of one minute
- Various bug fixes
- Improved documentation
- Modify
/trades
endpoint to reflect changes in horizon. - Add
/trade_aggregations
support. - Add
/assets
support.
- Upgrade
stellar-base
.
- Allow hex string in setOptions signers.
- Upgrade
stellar-base
.
- Support for new signer types:
sha256Hash
,preAuthTx
. StrKey
helper class withstrkey
encoding related methods.- Removed deprecated methods:
Keypair.isValidPublicKey
(useStrKey
),Keypair.isValidSecretKey
(useStrKey
),Keypair.fromSeed
,Keypair.seed
,Keypair.rawSeed
. - Breaking changes:
Network
must be explicitly selected. Previously testnet was a default network.Operation.setOptions()
methodsigner
param changed.Keypair.fromAccountId()
renamed toKeypair.fromPublicKey()
.Keypair.accountId()
renamed toKeypair.publicKey()
.- Dropping support for
End-of-Life
node versions.
- Updated
stellar.toml
location
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
).
- 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 returnsclose
callback instead ofEventSource
object. - Breaking change
Server.loadAccount
now returns theAccountResponse
object. - Breaking change Upgraded
stellar-base
to0.6.0
.ed25519
package is now an optional dependency. CheckStellarSdk.FastSigning
variable to check ifed25519
package is available. More in README file. - New
StellarTomlResolver
class that allows gettingstellar.toml
file for a domain. - New
Config
class to set global config values.
- Fixed XDR decoding issue when using firefox
- Breaking change
Server
andFederationServer
constructors no longer accept object inserverUrl
parameter. - Breaking change Removed
AccountCallBuilder.address
method. UseAccountCallBuilder.accountId
instead. - Breaking change It's no longer possible to connect to insecure server in
Server
orFederationServer
unlessallowHttp
flag inopts
is set. - Updated dependencies.
- Updated dependency (
stellar-base
).
- Updated dependencies.
- Added tests.
- Added
CHANGELOG.md
file.
stellar-base
bump. (c90c68f)
- Breaking change Bumped
stellar-base
to 0.5.0. (b810aef)