- The Typescript definitions have been updated to support CAP-35 (#407).
- Introduced new CAP-35 operations,
ClawbackOp
,ClawbackClaimableBalanceOp
, andSetTrustLineFlagsOp
(#397).
-
Add an additional parameter check to
claimClaimableBalance
to fail faster (#390). -
The XDR definitions have been updated to support CAP-35 (#394).
AllowTrustOpAsset
has been renamed toAssetCode
(#394)
AllowTrustOp
is now a deprecated operation.
- Fix deployment script.
- Update
createAccount
operation to accept0
as the starting balance (#375).
- Add the
Claimant
class which helps the creation of claimable balances. (#367). The default behavior of this class it to create claimants with an unconditional predicate if none is passed:
const claimant = new StellarBase.Claimant(
'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ'
);
However, you can use any of the following helpers to create a predicate:
StellarBase.Claimant.predicateUnconditional();
StellarBase.Claimant.predicateAnd(left, right);
StellarBase.Claimant.predicateOr(left, right);
StellarBase.Claimant.predicateNot(predicate);
StellarBase.Claimant.predicateBeforeAbsoluteTime(unixEpoch);
StellarBase.Claimant.predicateBeforeRelativeTime(seconds);
And then pass the predicate in the constructor:
const left = StellarBase.Claimant.predicateBeforeRelativeTime('800');
const right = StellarBase.Claimant.predicateBeforeRelativeTime(
'1200'
);
const predicate = StellarBase.Claimant.predicateOr(left, right);
const claimant = new StellarBase.Claimant(
'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ',
predicate
);
- Add
Operation.createClaimableBalance
(#368) Extend the operation class with a new helper to create claimable balance operations.
const asset = new Asset(
'USD',
'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7'
);
const amount = '100.0000000';
const claimants = [
new Claimant(
'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ',
Claimant.predicateBeforeAbsoluteTime("4102444800000")
)
];
const op = Operation.createClaimableBalance({
asset,
amount,
claimants
});
- Add
Operation.claimClaimableBalance
(#368) Extend the operation class with a new helper to create claim claimable balance operations. It receives thebalanceId
as exposed by Horizon in the/claimable_balances
end-point.
const op = Operation.createClaimableBalance({
balanceId: '00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be',
});
- Add support for Sponsored Reserves (CAP33)(#369)
Extend the operation class with helpers that allow sponsoring reserves and also revoke sponsorships.
To start sponsoring reserves for an account use:
Operation.beginSponsoringFutureReserves
Operation.endSponsoringFutureReserves
To revoke a sponsorship after it has been created use any of the following helpers:
Operation.revokeAccountSponsorship
Operation.revokeTrustlineSponsorship
Operation.revokeOfferSponsorship
Operation.revokeDataSponsorship
Operation.revokeClaimableBalanceSponsorship
Operation.revokeSignerSponsorship
The following example contains a transaction which sponsors operations for an account and then revoke some sponsorships.
const transaction = new StellarSdk.TransactionBuilder(account, {
fee: "100",
networkPassphrase: StellarSdk.Networks.TESTNET
})
.addOperation(
StellarSdk.Operation.beginSponsoringFutureReserves({
sponsoredId: account.accountId(),
source: masterKey.publicKey()
})
)
.addOperation(
StellarSdk.Operation.accountMerge({ destination: destKey.publicKey() }),
).addOperation(
StellarSdk.Operation.createClaimableBalance({
amount: "10",
asset: StellarSdk.Asset.native(),
claimants: [
new StellarSdk.Claimant(account.accountId())
]
}),
).addOperation(
StellarSdk.Operation.claimClaimableBalance({
balanceId: "00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be",
}),
).addOperation(
StellarSdk.Operation.endSponsoringFutureReserves({
})
).addOperation(
StellarSdk.Operation.revokeAccountSponsorship({
account: account.accountId(),
})
).addOperation(
StellarSdk.Operation.revokeTrustlineSponsorship({
account: account.accountId(),
asset: usd,
})
).addOperation(
StellarSdk.Operation.revokeOfferSponsorship({
seller: account.accountId(),
offerId: '12345'
})
).addOperation(
StellarSdk.Operation.revokeDataSponsorship({
account: account.accountId(),
name: 'foo'
})
).addOperation(
StellarSdk.Operation.revokeClaimableBalanceSponsorship({
balanceId: "00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be",
})
).addOperation(
StellarSdk.Operation.revokeSignerSponsorship({
account: account.accountId(),
signer: {
ed25519PublicKey: sourceKey.publicKey()
}
})
).addOperation(
StellarSdk.Operation.revokeSignerSponsorship({
account: account.accountId(),
signer: {
sha256Hash: "da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be"
}
})
).addOperation(
StellarSdk.Operation.revokeSignerSponsorship({
account: account.accountId(),
signer: {
preAuthTx: "da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be"
}
})
).build();
- The XDR generated in this code includes breaking changes on the internal XDR library since a bug was fixed which was causing incorrect code to be generated (see stellar/xdrgen#52).
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
- Generate V1 transactions by default and allow V0 transactions to be fee bumped (#355).
- Rollback support for SEP23 (Muxed Account StrKey) (#349).
- Extend
files
in npm package to include XDR type definitions (#345).
- Add TypeScript definitions for auto-generated XDR code (#342).
This version brings protocol 13 support with backwards compatibility support for protocol 12.
- Add
TransactionBuilder.buildFeeBumpTransaction
which makes it easy to createFeeBumpTransaction
(#321). - Adds a feature flag which allow consumers of this library to create V1 (protocol 13) transactions using the
TransactionBuilder
(#321). - Add support for CAP0027: First-class multiplexed accounts (#325).
AddKeypair.xdrMuxedAccount
which creates a newxdr.MuxedAccount
(#325).- Add
FeeBumpTransaction
which makes it easy to work with fee bump transactions (#328). - Add
TransactionBuilder.fromXDR
which receives an xdr envelope and return aTransaction
orFeeBumpTransaction
(#328).
-
Update XDR definitions with protocol 13 (#317).
-
Extend
Transaction
to work withTransactionV1Envelope
andTransactionV0Envelope
(#317). -
Add backward compatibility support for CAP0018 (#317). CAP0018 provides issuers with a new level of authorization between unauthorized and fully authorized, called "authorized to maintain liabilities". The changes in this release allow you to use the new authorization level and provides backward compatible support for Protocol 12.
Before Protocol 13, the argument
authorize
in theAllowTrust
operation was of typeboolean
wheretrue
was authorize andfalse
deauthorize. Starting in Protocol 13, this value is now anumber
where0
is deauthorize,1
is authorize, and2
is authorize to maintain liabilities.The syntax for authorizing a trustline is still the same, but the authorize parameter is now a
number
.Operation.allowTrust({ trustor: trustor.publicKey(), assetCode: "COP", authorize: 1 });
You can use still use a
boolean
; however, we recommend you update your code to pass anumber
instead. Finally, using the value2
for authorize to maintain liabilities will only be valid if Stellar Core is running on Protocol 13; otherwise, you'll get an error. -
Update operations builder to support multiplexed accounts (#337).
-
Transaction.toEnvelope()
returns a protocol 13xdr.TransactionEnvelope
which is anxdr.Union
(#317). If you have code that looks like this -transaction.toEnvelope().tx
- you have two options:- You can grab the value wrapped by the union, calling
value()
liketransaction.toEnvelope().value().tx
. - You can check which is the discriminant by using
switch()
and then callv0()
,v1()
, orfeeBump()
.
- You can grab the value wrapped by the union, calling
-
The return value from
Transaction.fee
changed fromnumber
tostring
. This brings support forInt64
values (#321). -
The const
BASE_FEE
changed fromnumber
tostring
(#321). -
The option
fee
passed tonew TransactionBuilder({fee: ..})
changed fromnumber
tostring
(#321). -
The following fields, which were previously an
xdr.AccountID
are now axdr.MuxedAccount
(#325):PaymentOp.destination
PathPaymentStrictReceiveOp.destination
PathPaymentStrictSendOp.destination
Operation.sourceAccount
Operation.destination
(forACCOUNT_MERGE
)Transaction.sourceAccount
FeeBumpTransaction.feeSource
You can get the string representation by calling
StrKey.encodeMuxedAccount
which will return aG..
orM..
account. -
Remove the following deprecated functions (#331):
Operation.manageOffer
Operation.createPassiveOffer
Operation.pathPayment
Keypair.fromBase58Seed
-
Remove the
Network
class (#331). -
Remove
vendor/base58.js
(#331).
-
Update operations builder to support multiplexed accounts (#337).
This allows you to specify an
M
account as the destination or source:var destination = 'MAAAAAAAAAAAAAB7BQ2L7E5NBWMXDUCMZSIPOBKRDSBYVLMXGSSKF6YNPIB7Y77ITLVL6'; var amount = '1000.0000000'; var asset = new StellarBase.Asset( 'USDUSD', 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7' ); var source = 'MAAAAAAAAAAAAAB7BQ2L7E5NBWMXDUCMZSIPOBKRDSBYVLMXGSSKF6YNPIB7Y77ITLVL6'; StellarBase.Operation.payment({ destination, asset, amount, source });
To use multiplexed accounts you need an instance of Stellar running on Protocol 13 or higher
This version brings protocol 13 support with backwards compatibility support for protocol 12.
- Add
TransactionBuilder.buildFeeBumpTransaction
which makes it easy to createFeeBumpTransaction
(#321). - Adds a feature flag which allow consumers of this library to create V1 (protocol 13) transactions using the
TransactionBuilder
(#321). - Add support for CAP0027: First-class multiplexed accounts (#325).
- Add
Keypair.xdrMuxedAccount
which creates a newxdr.MuxedAccount
(#325). - Add
FeeBumpTransaction
which makes it easy to work with fee bump transactions (#328). - Add
TransactionBuilder.fromXDR
which receives an xdr envelope and return aTransaction
orFeeBumpTransaction
(#328).
- Update XDR definitions with protocol 13 (#317).
- Extend
Transaction
to work withTransactionV1Envelope
andTransactionV0Envelope
(#317). - Add backward compatibility support for CAP0018 (#317).
-
Transaction.toEnvelope()
returns a protocol 13xdr.TransactionEnvelope
which is anxdr.Union
(#317). If you have code that looks like thistransaction.toEnvelope().tx
you have two options:- You can grab the value wrapped by the union, calling
value()
liketransaction.toEnvelope().value().tx
. - You can check which is the discriminant by using
switch()
and then callv0()
,v1()
, orfeeBump()
.
- You can grab the value wrapped by the union, calling
-
The return value from
Transaction.fee
changed fromnumber
tostring
. This brings support forInt64
values (#321). -
The const
BASE_FEE
changed fromnumber
tostring
(#321). -
The option
fee
passed tonew TransactionBuilder({fee: ..})
changed fromnumber
tostring
(#321). -
The following fields, which were previously an
xdr.AccountID
are now axdr.MuxedAccount
(#325):PaymentOp.destination
PathPaymentStrictReceiveOp.destination
PathPaymentStrictSendOp.destination
Operation.sourceAccount
Operation.destination
(forACCOUNT_MERGE
)Transaction.sourceAccount
FeeBumpTransaction.feeSource
You can get the string representation by calling
StrKey.encodeMuxedAccount
which will return aG..
orM..
account. -
Remove the following deprecated functions (#331):
Operation.manageOffer
Operation.createPassiveOffer
Operation.pathPayment
Keypair.fromBase58Seed
-
Remove the
Network
class (#331). -
Remove
vendor/base58.js
(#331).
- Update dependencies which depend on minimist. (#332)
- Fix
setTimeout(0)
and partially defined timebounds (#315).
- Fix TypeScript options for
ManageData
operation to allow setting value tonull
(#310) - Fix crash on partially defined time bounds (#303)
- Fix npm deployment.
- Add
toXDR
type to Transaction class (#296)
- Fix doc link (#298)
- Remove node engine restriction (#294)
- Regenerate the XDR definitions to include MetaV2 (#288)
- Throw errors when obviously invalid network passphrases are used in
new Transaction()
. (284)
- Update documentation for
Operation
to showpathPaymentStrictSend
andpathPaymentStrictReceive
. (279)
-
Update
asset.toString()
to return canonical representation for asset. (277).Calling
asset.toString()
will returnnative
forXLM
orAssetCode:AssetIssuer
for issued assets. See this PR for more information.
This release adds support for stellar-core protocol 12 release and CAP 24 ("Make PathPayment Symmetrical").
-
Operation.pathPaymentStrictSend
: Sends a path payments, debiting from the source account exactly a specified amount of one asset, crediting at least a given amount of another asset. (#274).The following operation will debit exactly 10 USD from the source account, crediting at least 9.2 EUR in the destination account 💸:
var sendAsset = new StellarBase.Asset( 'USD', 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7' ); var sendAmount = '10'; var destination = 'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ'; var destAsset = new StellarBase.Asset( 'USD', 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7' ); var destMin = '9.2'; var path = [ new StellarBase.Asset( 'USD', 'GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB' ), new StellarBase.Asset( 'EUR', 'GDTNXRLOJD2YEBPKK7KCMR7J33AAG5VZXHAJTHIG736D6LVEFLLLKPDL' ) ]; let op = StellarBase.Operation.pathPaymentStrictSend({ sendAsset, sendAmount, destination, destAsset, destMin, path });
-
Operation.pathPaymentStrictReceive
: This behaves the same as the formerpathPayments
operation. (#274).The following operation will debit maximum 10 USD from the source account, crediting exactly 9.2 EUR in the destination account 💸:
var sendAsset = new StellarBase.Asset( 'USD', 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7' ); var sendMax = '10'; var destination = 'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ'; var destAsset = new StellarBase.Asset( 'USD', 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7' ); var destAmount = '9.2'; var path = [ new StellarBase.Asset( 'USD', 'GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB' ), new StellarBase.Asset( 'EUR', 'GDTNXRLOJD2YEBPKK7KCMR7J33AAG5VZXHAJTHIG736D6LVEFLLLKPDL' ) ]; let op = StellarBase.Operation.pathPaymentStrictReceive({ sendAsset, sendMax, destination, destAsset, destAmount, path });
Operation.pathPayment
is being deprecated in favor ofOperation.pathPaymentStrictReceive
. Both functions take the same arguments and behave the same. (#274).
No changes. Fixes deploy script and includes changes from v2.0.0.
- 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. (#255)
- Fix no-network warnings (#248)
Deprecate global singleton for Network
. The following classes and
methods take an optional network passphrase, and issue a warning if it
is not passed:
Keypair.master(Networks.TESTNET)
const xenv = new xdr.TransactionEnvelope({ tx: xtx });
new Transaction(xenv, Networks.TESTNET);
const transaction = new StellarSdk.TransactionBuilder(account, {
fee: StellarSdk.BASE_FEE,
networkPassphrase: Networks.TESTNET
})
See #207 and #112 for more information.
The Network
class will be removed on the 2.0
release.
- Add docs for BASE_FEE const. (#211)
- Fix typo. (#213)
- Add
toString()
to Asset (#172) - Add types for missing Network functions (#208)
- Add BASE_FEE to TS types (#209)
- Fix typo in types (#194)
- Fix types: Fee is no longer optional (#195)
- Fix typings for Account Sequence Number (#203)
- Fix typings for Transaction Sequence Number (#205)
- Fix a bug where
sodium-native
was making it into the browser bundle, which is supposed to usetweetnacl
.
- Restore
Operation.manageOffer
andOperation.createPassiveOffer
, and issue a warning if they're called. - Add type definitions for the timeBounds property of transactions.
- Breaking change Stellar Protocol 11 compatibility
- Rename
Operation.manageOffer
toOperation.manageSellOffer
. - Rename
Operation.createPassiveOffer
toOperation.createPassiveSellOffer
. - Add
Operation.manageBuyOffer
.
- Rename
- Breaking change The
fee
parameter toTransactionBuilder
is now required. Failing to provide a fee will throw an error.
- Bring DefinitelyTyped definitions into the repo for faster updating.
- Add missing Typescript type definitions.
- Add code to verify signatures when added to transactions.
- Replace ed25519 with sodium-native.
- Fix the xdr for SCP_MESSAGE.
- Update the README for the latest info.
- Travis: Deploy NPM with an environment variable instead of an encrypted API key.
- Instruct Travis to cache node_modules
- Remove the
crypto
library. This reduces the number of Node built-ins we have to shim into the production bundle, and incidentally fixes a bug with Angular 6.
- Warning Calling TransactionBuilder without a
fee
param is now deprecated and will issue a warning. In a later release, it will throw an error. Please update your transaction builders as soon as you can! - Add a
toXDR
function for transactions that lets you get the transaction as a base64-encoded string (so you may enter it into the Stellar Laboratory XDR viewer, for one) - Fix TransactionBuilder example syntax errors
- Use more thorough "create account" documentation
- Add
Date
support forTransactionBuilder
timebounds
- Add two functions to
Transaction
that support pre-generated transactions:getKeypairSignature
helps users sign pre-generated transaction XDRsaddSignature
lets you add pre-generated signatures to a built transaction
- Added ESLint and Prettier to enforce code style
- Upgraded dependencies, including Babel to 6
- Bump local node version to 6.14.0
- Change Operations._fromXDRAmount to not use scientific notation (1e-7) for small amounts like 0.0000001.
- 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
.
- Update
js-xdr
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
xdr
files to V10.
- Upgrade
js-xdr
.
- Removed
src
from.npmignore
.
- Added support for
bump_sequence
operation. - Fixed many code style issues.
- Updated docs.
- Updated dependencies.
- Updated docs.
- Updated docs.
Keypair.constructor
now requirestype
field to define public-key signature system used in this instance (soKeypair
can support other systems in a future). It also checks if public key and secret key match if both are passed (to prevent nasty bugs).Keypair.fromRawSeed
has been renamed toKeypair.fromRawEd25519Seed
to make it clear that the seed must be Ed25519 seed.- It's now possible to instantiate
Memo
class so it's easier to check it's type and value (without dealing with low levelxdr.Memo
objects). - Changed
Asset.toXdrObject
toAsset.toXDRObject
andOperation.operationToObject
toOperation.toXDRObject
for consistency. - Time bounds support for numeric input values.
- Added
browser
prop to package.json.
- Update dependencies.
- Remove unused methods.
- Allow hex string in setOptions signers
- Updated XDR files
- Checking hash preimage length
- 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.
- Breaking change
ed25519
package is now optional dependency. - Export account flags constants.
- Fixes XDR decoding issue when using firefox
- UTF-8 support in
Memo.text()
.
- Make 0 a valid number for transaction fee,
- Fix signer in Operation.operationToObject() - close #82
- Fixed Lodash registering itself to global scope.
- Add support for ManageData operation.
- Moved
Account.isValidAccountId
toKeypair.isValidPublicKey
. It's still possible to useAccount.isValidAccountId
but it will be removed in the next minor release (breaking change). (af10f2a) signer.address
option inOperation.setOptions
was changed tosigner.pubKey
. It's still possible to usesigner.address
but it will be removed in the next minor release (breaking change). (07f43fb)Operation.setOptions
now accepts strings forclearFlags
,setFlags
,masterWeight
,lowThreshold
,medThreshold
,highThreshold
,signer.weight
options. (665e018)- Fixed TransactionBuilder timebounds option. (854f275)
- Added
CHANGELOG.md
file.
- Now it's possible to pass
price
params as{n: numerator, d: denominator}
object. Thanks @FredericHeem. (#73)
- Breaking change
sequence
inAccount
constructor must be a string. (4da5dfc) - Breaking change Removed deprecated methods (180a5b8):
Account.isValidAddress
(replaced byAccount.isValidAccountId
)Account.getSequenceNumber
(replaced byAccount.sequenceNumber
)Keypair.address
(replaced byKeypair.accountId
)Network.usePublicNet
(replaced byNetwork.usePublicNetwork
)Network.useTestNet
(replaced byNetwork.useTestNetwork
)TransactionBuilder.addSigner
(callTransaction.sign
on buildTransaction
object)