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 Lending Protocol (XLS-66d)
- Add
encode_mptoken_metadataanddecode_mptoken_metadatahelper functions to encode and decode MPTokenMetadata as per XLS-89 standard.
- Removed snippets files from the xrpl-py code repository. Updated the README file to point to the correct location on XRPL.org.
- [Breaking change] Fix
MPTokenMetadatatype to adhere to the XLS-89 standard. Since XLS-89 is still in a forming state and undergoing changes, this breaking change is being released as a bug fix via patch version bump. If you are usingMPTokenMetadatain your code, please verify that it adheres to the updated type definition. - [Breaking change] Fix
validate_mptoken_metadatato correctly validate MPTokenMetadata as per XLS-89 standard. Since XLS-89 is still in a forming state and undergoing changes, this breaking change is being released as a bug fix via patch version bump. If you are usingvalidateMPTokenMetadatain your code, expect it to change as per the XLS-89 standard. - Fixed the binary-codec issues pertaining to the serialization of the
MPTCurrencyrippled type. (Reference PR: XRPLF#870)
- Support for
Token Escrow(XLS-85d) - Support for
NFTokenMintOffer(XLS-52) - Support for
Permissioned DEX(XLS-81) - Add warning messages to
MPTokenIssuanceCreateandVaultCreatetransaction as per XLS-89d.
- Improved validation for models to also check param types
- Support for
Single Asset Vault(XLS-65d) - Support for
Account PermissionandAccount Permission Delegation(XLS-74d, XLS-75d) - Support for the
Batchamendment (XLS-56d)
- Add
MPTCurrencysupport inIssue(rippled internal type) - Fix the implementation error in get_latest_open_ledger_sequence method. The change uses the "current" ledger for extracting sequence number
- Increase default maximum payload size for websocket client
- Fix the default behavior of flags field when preparing transactions. By default, flags are not part of the transaction if not explicitly provided
- Add support for
amm_infotoRequest.from_dict - Improve error handling for
amm_info - Handle autofilling better when multisigning transactions
- Improve typing for transaction-related helper functions
- Improve handling of
TicketSequence - Fix issue with failing on a higher than expected fee
- Improve multi-sign fee calculations
- Support for
Deep Freeze(XLS-77d) - Support for
PermissionedDomains(XLS-80) - Support
AMMClawbackamendment (XLS-73d) - Support for the
simulateRPC (XLS-69)
Sign,SignFor, andSignAndSubmitmethods now properly handle WebSocket clients
- Support for the Multi-Purpose Tokens (MPT) amendment (XLS-33)
- Add
include_deletedto ledger_entry request - Add support for XLS-70d (Credentials)
- 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
featureRPC
- Allow empty strings for the purpose of removing fields in DIDSet transaction
- Use
NetworkIDin faucet processing to produce a non-ambiguous URL for faucet hosts.
- Remove deprecated
full,accounts, andtypeparameters from ledger request model
- Support for the Price Oracles amendment (XLS-47).
- Add
nfts_by_issuerclio-only API definition - Included
ctidfield in thetxrequest. from_xrplmethod accepts input dictionary keys exclusively in the proper XRPL format.- Support for DynamicNFT amendment (XLS-46)
- Added support for
XChainModifyBridgeflag maps (fixing an issue withNFTokenCreateOfferflag names) - Fixed
XChainModifyBridgevalidation 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_RIPPLEtoTF_NO_RIPPLE_DIRECT - Add the missing
AMMDepositFlagTF_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_definitionsRPC
- Exported
get_nftoken_idandparse_nftoken_idat thexrpl.utilslevel - Fixed issue in
get_nftoken_idwhere error is opaque when there are noNFTokenPages
- 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
SetFeepseudo 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
Walletis passed into an account or destination field - Fixed AMMBid fields (BidMin, BidMax) with correct type IssuedCurrencyAmount
- Add AMM support XLS-30
- Added new
Clawbacktransaction as per XLS-39
- Replaced alias for
classic_addresswith separate property to work around this mypy issue: python/mypy#6700
- The default signing algorithm in the
Walletwas 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
addressalias toWallet.classic_address- Replaced
Wallet.classic_addresswithWallet.addressto avoid confusion. (classic_addressis the same as your XRPL accountaddress, and is only called classic since it's an older standard thanx-address)
- Replaced
- Added
network_idto clients in order to use theClientwith networks beyond mainnet
- Updated params for
Walletclass constructor Wallet.addressis now readonly- Removed
sequencefromWalletclass - Core keypairs generate seed must take in hexstring instead of bytestring
- Core keypairs formatting for
ED25519is 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)
AccountSetFlagInterfacenow operates on transactiontfflags (as opposed toasfflags)signis now synchronous instead of async (done by removing the optionalcheck_feeparam & 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 becausewalletis optional forsubmit_and_waitand so must come afterclient) XRP.to_amountnow converts from XRP to drops, instead of expecting a drops amount
- Added a sort of the account IDs in
multisign, so that themultisignalways works. - Add
ledger_hashandledger_indextoaccount_nfts,nft_buy_offers, andnft_sell_offersrequests. - Add
nft_pagetoledger_entryrequest.
send_reliable_submissionhas been replaced bysubmit_and_wait- Longer aliases for signing/submitting functions have been removed. Specifically
submit_transactionis nowsubmitsafe_sign_transactionis nowsignsafe_sign_and_submit_transactionis nowsign_and_submit- The param order for
sign_and_submitmoveswalletafterclientto be consistent withsubmit_and_wait
- The param order for
safe_sign_and_autofill_transactionis nowautofill_and_sign- The param order for
autofill_and_signmoveswalletafterclientto 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_infoget_account_transactionsget_account_payment_transactionsget_transaction_from_hash
- Added
submit_and_waitto sign (if needed), autofill, submit a transaction and wait for its final outcome submitandsend_reliable_submissionnow accept an optional boolean paramfail_hard(ifTruehalt the submission if it's not immediately validated)- Added sidechain devnet support to faucet generation
- Added
user_agentandusage_contexttogenerate_faucet_wallet
- Allowed keypairs.sign to take a hex string in addition to bytes
- Refactored
does_account_existandget_balanceto avoid deprecated methods and useledger_indexparameter - Fixed crashes in the
SignerListSetvalidation - 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_transactioncalledsign- safe originally used to indicate local offline signing (keys aren't exposed) - Created function alias to
safe_sign_and_autofill_transactioncalledautofill_and_signto reflect order of operations - Created function alias to
submit_transactioncalledsubmit - Created function alias to
safe_sign_and_submit_transactioncalledsign_and_submit - AccountSetFlags for disallowing incoming objects (e.g.
asf_disallow_incoming_trustline) - Added
getNFTokenIDto get the NFTokenID after minting a token. - Added
LedgerEntryTypeenum and addedtypefield toLedgerandLedgerDatarequests - Added the algorithm used to encode a wallet's seed to the wallet.
check_feenow 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_transactionsfor direct requests - Private function
request_implhas been renamed to_request_impl. Users should always userequestoverrequest_impl. - Removed nft-devnet faucet support as it has been decommissioned (Blog Post)
- Properly type the instance functions of NestedModel
- Add additional check to
txnNotFounderror fromreliable_submissiondue to race condition - Add
nft_offertype inAccountObjects - Handle errors better in
send_reliable_submission - Made
send_reliable_submissionwait the full duration untilLastLedgerSequencepasses 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
sEdprefix - Support for Automated Market Maker (AMM) transactions and requests as defined in XLS-30.
- Add docs to
get_account_transactionsexplaining how to allow pagination through all transaction history [#462] - Common field
ticket_sequenceto 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
txnNotFounderror withsend_reliable_submissionwhen 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
FlagInterfaceto set the flags with booleans. federator_infoRPC 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.clientsexports (now includesrequest_to_websocket,websocket_to_response)- Adds optional
ownerfield to NFTokenBurn - Allows lower-case currency codes
- Sync and async
generate_faucet_walletfunctions now support a custom faucet host
- Support for the XLS-20 NFT proposal
xrpl.models.amounts.get_amount_valuehelper functionxrpl.utils.str_to_hexandxrpl.utils.hex_to_strhelpersledger_indexoptional param for all the main account methodsTicketCreatetransaction modelGenericRequestmodel for unsupported request types- Methods to convert between
IssuedCurrencyandIssuedCurrencyAmount - Support for ints and floats in the
IssuedCurrencyandIssuedCurrencyAmountmodels (and ints forXRP) max_feeandfee_typeoptional params forget_feeautofill, a new public method that populates thefee,sequence, andlast_ledger_sequencefields 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.modelslevel
- Improves typing of
Response.result - Makes the default ledger version for
get_next_valid_seq_numbercurrentinstead ofvalidated - Stops erroring on non-
tesSUCCESSresponses in reliable transaction submission - Removes runtime asserts in websocket clients that were used for type checks only
- Adds missing top-level
py.typedfile 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
xAddresswithNonein 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.flagsto be aListofints instead of just anint - Instance method in
Transactionobjects to calculate their hashes locally - Additional reliability to
send_reliable_submissionby getting the hash before submitting - Pseudo-transaction models
- Optional parameters for
get_transaction_from_hash:binary,min_ledgerandmax_ledger - Enum for
PaymentChannelClaimflags - Optional parameter to check if the
Transactionfee is not too high before signing it - Additional X-Address support in the binary codec and account sugar
- Method to the
Walletclass that generates the X-Address for the wallet's account - Async versions of all high-level functionality within the
xrpl.asynciopackage - Web socket client under
xrpl.clients.WebsocketClient - Async web socket client under
xrpl.asyncio.clients.AsyncWebsocketClient - A general
from_dictmethod forRequestmodels, analogous toTransaction.from_dict
- Typos in docs/tests
- Improved readability of the README/documentation
- Expose
xrpl.utilsat 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
XRPLBinaryCodecExceptioninstead 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.