All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Support for the Multi-Purpose Tokens (MPT) amendment (XLS-33)
- Add
include_deleted
to ledger_entry request
- Remove Python 3.7 support to fix dependency installation and use 3.8 as new default.
- Grab the FeeSettings values from the latest validated ledger. Remove hard-coded reference to 10 drops as the reference transaction cost.
- Use rippled API v2 as default in requests
- Support for the DeliverMax field in Payment transactions
- Support for the
feature
RPC
- Allow empty strings for the purpose of removing fields in DIDSet transaction
- Remove deprecated
full
,accounts
, andtype
parameters from ledger request model
- Support for the Price Oracles amendment (XLS-47).
- Add
nfts_by_issuer
clio-only API definition - Included
ctid
field in thetx
request. from_xrpl
method accepts input dictionary keys exclusively in the proper XRPL format.
- Added support for
XChainModifyBridge
flag maps (fixing an issue withNFTokenCreateOffer
flag names) - Fixed
XChainModifyBridge
validation to allow just clearing ofMinAccountCreateAmount
- Added support for IDE auto-completion of model constructors
- Currency codes with special characters not being allowed by IssuedCurrency objects.
- Construction of Wallet throws an "Invalid Seed" error, if the secret is not decode-able.
- Rectify the incorrect usage of a transaction flag name: Update
TF_NO_DIRECT_RIPPLE
toTF_NO_RIPPLE_DIRECT
- Add the missing
AMMDeposit
FlagTF_TWO_ASSET_IF_EMPTY
- Remove Hooks faucet since it's now on the Xahau testnet.
- Support for the DID amendment (XLS-40).
- Support for
server_definitions
RPC
- Exported
get_nftoken_id
andparse_nftoken_id
at thexrpl.utils
level - Fixed issue in
get_nftoken_id
where error is opaque when there are noNFTokenPage
s
- Removed sidechain-net1 Devnet faucet support as it has been decommissioned. Users should instead use the bridge between Devnet and sidechain-net2 for testing.
- Removed amm-devnet faucet support as is will soon be decommissioned
- Added new syntax for
SetFee
pseudo transaction sent after the XRPFees amendment. (Backwards compatible) - Support for XLS-38d (XChainBridge)
- Update request models related to AMM
- Better error handling for when a
Wallet
is passed into an account or destination field - Fixed AMMBid fields (BidMin, BidMax) with correct type IssuedCurrencyAmount
- Add AMM support XLS-30
- Added new
Clawback
transaction as per XLS-39
- Replaced alias for
classic_address
with separate property to work around this mypy issue: python/mypy#6700
- The default signing algorithm in the
Wallet
was changed from secp256k1 to ed25519
- Wallet support for regular key compatibility
- Added new ways of wallet generation:
from_seed
,from_secret
,from_entropy
,from_secret_numbers
- Added
address
alias toWallet.classic_address
- Replaced
Wallet.classic_address
withWallet.address
to avoid confusion. (classic_address
is the same as your XRPL accountaddress
, and is only called classic since it's an older standard thanx-address
)
- Replaced
- Added
network_id
to clients in order to use theClient
with networks beyond mainnet
- Updated params for
Wallet
class constructor Wallet.address
is now readonly- Removed
sequence
fromWallet
class - Core keypairs generate seed must take in hexstring instead of bytestring
- Core keypairs formatting for
ED25519
is now padded with zeros if length of keystring is less than 64 - Removed deprecated request wrappers (the preferred method is to directly do client.request instead)
AccountSetFlagInterface
now operates on transactiontf
flags (as opposed toasf
flags)sign
is now synchronous instead of async (done by removing the optionalcheck_fee
param & moving checks up to other functions)- In order to be internally consistent, all signing/submitting functions will follow the parameter order of
transaction
,client
,wallet
, and then other parameters. (This is becausewallet
is optional forsubmit_and_wait
and so must come afterclient
) XRP.to_amount
now converts from XRP to drops, instead of expecting a drops amount
- Added a sort of the account IDs in
multisign
, so that themultisign
always works. - Add
ledger_hash
andledger_index
toaccount_nfts
,nft_buy_offers
, andnft_sell_offers
requests. - Add
nft_page
toledger_entry
request.
send_reliable_submission
has been replaced bysubmit_and_wait
- Longer aliases for signing/submitting functions have been removed. Specifically
submit_transaction
is nowsubmit
safe_sign_transaction
is nowsign
safe_sign_and_submit_transaction
is nowsign_and_submit
- The param order for
sign_and_submit
moveswallet
afterclient
to be consistent withsubmit_and_wait
- The param order for
safe_sign_and_autofill_transaction
is nowautofill_and_sign
- The param order for
autofill_and_sign
moveswallet
afterclient
to be consistent withsubmit_and_wait
- The param order for
- Removed deprecated request functions which were just wrappers around
Client.request()
. Specifically this includes:get_account_info
get_account_transactions
get_account_payment_transactions
get_transaction_from_hash
- Added
submit_and_wait
to sign (if needed), autofill, submit a transaction and wait for its final outcome submit
andsend_reliable_submission
now accept an optional boolean paramfail_hard
(ifTrue
halt the submission if it's not immediately validated)- Added sidechain devnet support to faucet generation
- Added
user_agent
andusage_context
togenerate_faucet_wallet
- Allowed keypairs.sign to take a hex string in addition to bytes
- Refactored
does_account_exist
andget_balance
to avoid deprecated methods and useledger_index
parameter - Fixed crashes in the
SignerListSet
validation - Improved error messages in
send_reliable_submission
- Better error handling in reliable submission
- RPCs and utils related to the old sidechain design
- Created function alias to
safe_sign_transaction
calledsign
- safe originally used to indicate local offline signing (keys aren't exposed) - Created function alias to
safe_sign_and_autofill_transaction
calledautofill_and_sign
to reflect order of operations - Created function alias to
submit_transaction
calledsubmit
- Created function alias to
safe_sign_and_submit_transaction
calledsign_and_submit
- AccountSetFlags for disallowing incoming objects (e.g.
asf_disallow_incoming_trustline
) - Added
getNFTokenID
to get the NFTokenID after minting a token. - Added
LedgerEntryType
enum and addedtype
field toLedger
andLedgerData
requests - Added the algorithm used to encode a wallet's seed to the wallet.
check_fee
now has a higher limit that is less likely to be hit- When connected hooks v2 testnet generate_faucet_wallet now defaults to using the faucet instead of requiring specification
- Deprecated
get_account_info
,get_transaction_from_hash
,get_account_payment_transactions
for direct requests - Private function
request_impl
has been renamed to_request_impl
. Users should always userequest
overrequest_impl
. - Removed nft-devnet faucet support as it has been decommissioned (Blog Post)
- Properly type the instance functions of NestedModel
- Add additional check to
txnNotFound
error fromreliable_submission
due to race condition - Add
nft_offer
type inAccountObjects
- Handle errors better in
send_reliable_submission
- Made
send_reliable_submission
wait the full duration untilLastLedgerSequence
passes by
- Support for ExpandedSignerList amendment that expands the maximum signer list to 32 entries
- Function to parse the final account balances from a transaction's metadata
- Function to parse order book changes from a transaction's metadata
- Support for Ed25519 seeds that don't use the
sEd
prefix - Support for Automated Market Maker (AMM) transactions and requests as defined in XLS-30.
- Add docs to
get_account_transactions
explaining how to allow pagination through all transaction history [#462] - Common field
ticket_sequence
to Transaction class
- Typing for factory classmethods on models
- Use properly encoded transactions in
Sign
,SignFor
, andSignAndSubmit
- Fix Sphinx build errors due to incompatible version bumps
- Support for dynamic fee calculation
- Function to parse account balances from a transaction's metadata
- Better error handling for invalid client URL
- Exported SubscribeBook
- Resolve
txnNotFound
error withsend_reliable_submission
when waiting for a submitted malformed transaction - Small typing mistake in GenericRequest
- Fix bug in GenericRequest.to_dict()
- Support setting flags with booleans. For each transaction type supporting flags there is a
FlagInterface
to set the flags with booleans. federator_info
RPC support- Helper method for creating a cross-chain payment to/from a sidechain
- Helper method for parsing an NFTokenID
- Updated NFT names to match new 1.9.0 rippled names
xrpl.asyncio.clients
exports (now includesrequest_to_websocket
,websocket_to_response
)- Adds optional
owner
field to NFTokenBurn - Allows lower-case currency codes
- Sync and async
generate_faucet_wallet
functions now support a custom faucet host
- Support for the XLS-20 NFT proposal
xrpl.models.amounts.get_amount_value
helper functionxrpl.utils.str_to_hex
andxrpl.utils.hex_to_str
helpersledger_index
optional param for all the main account methodsTicketCreate
transaction modelGenericRequest
model for unsupported request types- Methods to convert between
IssuedCurrency
andIssuedCurrencyAmount
- Support for ints and floats in the
IssuedCurrency
andIssuedCurrencyAmount
models (and ints forXRP
) max_fee
andfee_type
optional params forget_fee
autofill
, a new public method that populates thefee
,sequence
, andlast_ledger_sequence
fields of a transaction, based on the current state retrieved from the server the Client is connected to. It also converts all X-Addresses to classic addresses.- Exports
Transaction
,Response
, pseudo-transactions at thexrpl.models
level
- Improves typing of
Response.result
- Makes the default ledger version for
get_next_valid_seq_number
current
instead ofvalidated
- Stops erroring on non-
tesSUCCESS
responses in reliable transaction submission - Removes runtime asserts in websocket clients that were used for type checks only
- Adds missing top-level
py.typed
file for exceptions and constants - Fix issue where unsupported currency codes weren't being correctly processed in the binary codec
- Fixes issue with UNLModify encoding (due to a bug in rippled)
- Makes the account delete fee dynamic, based on the ledger's reserve, instead of hard-coded
- Fee scaling based on load on the ledger
- Fixes potential issue with conflicting Decimal contexts
- Fixes bug where autofilling using an
xAddress
withNone
in the Destination Tag threw a KeyError
- Support for Python 3.10
- Improves documentation on using websocket clients.
- Fixes an issue sending NoRippleCheck requests
- Allows projects that use xrpl-py as a dependency to use typing
- Fixes an issue encoding some non-standard currency values
- Corrects installation instructions in documentation
- Option for
Transaction.flags
to be aList
ofint
s instead of just anint
- Instance method in
Transaction
objects to calculate their hashes locally - Additional reliability to
send_reliable_submission
by getting the hash before submitting - Pseudo-transaction models
- Optional parameters for
get_transaction_from_hash
:binary
,min_ledger
andmax_ledger
- Enum for
PaymentChannelClaim
flags - Optional parameter to check if the
Transaction
fee is not too high before signing it - Additional X-Address support in the binary codec and account sugar
- Method to the
Wallet
class that generates the X-Address for the wallet's account - Async versions of all high-level functionality within the
xrpl.asyncio
package - Web socket client under
xrpl.clients.WebsocketClient
- Async web socket client under
xrpl.asyncio.clients.AsyncWebsocketClient
- A general
from_dict
method forRequest
models, analogous toTransaction.from_dict
- Typos in docs/tests
- Improved readability of the README/documentation
- Expose
xrpl.utils
at the top level - Expose
xrpl.accounts.get_account_root
- Issue with calculating IOU precision
- Invalid X-Addresses in the XRPL Binary Codec now error with
XRPLBinaryCodecException
instead ofValueError
- Issues with converting certain dictionaries to/from a model using
BaseModel.from_dict
- Better error message reporting
- Initial release! Please open up an issue in our repo if you have any feedback or issues to report.