Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for XLS-38d #417

Merged
merged 137 commits into from
Sep 27, 2023
Merged
Show file tree
Hide file tree
Changes from 130 commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
7688fa0
update definitions.json
mvadari Jul 11, 2022
1e117cd
add XChainCreateBridge test
mvadari Jul 11, 2022
19589d1
get XChainCreateBridge test working
mvadari Jul 11, 2022
cac0d76
add XChainCreateClaimID tx
mvadari Jul 11, 2022
7a97417
get XChainCommit working
mvadari Jul 11, 2022
9a832d0
add XChainClaim tx
mvadari Jul 11, 2022
5abc9f8
add models
mvadari Jul 11, 2022
34bea91
comment out unwritten txs
mvadari Jul 11, 2022
00b2461
add test for xchain conversion, fix bugs
mvadari Jul 11, 2022
3203549
Update definitions.json
mvadari Jul 12, 2022
057e807
fix typo
mvadari Jul 18, 2022
6629b4b
update to handle XChainAddAttestation (and fix everything else)
mvadari Jul 18, 2022
58a0b02
fix bugs
mvadari Jul 18, 2022
3d34552
fix unused variable
mvadari Jul 18, 2022
1769b10
rename Bridge -> XChainBridge in models
mvadari Jul 18, 2022
cff03e1
add XChainAddAttestation model(s)
mvadari Jul 18, 2022
a7a45fc
fix import
mvadari Jul 18, 2022
4c5c9af
rename file
mvadari Jul 19, 2022
729b20a
fix existing tests w/updated rippled, add AccountCreate test
mvadari Jul 29, 2022
15e298a
add CreateAccount AddAttestation test
mvadari Jul 31, 2022
c35447b
add/update models
mvadari Jul 31, 2022
90dc8ed
export new tx
mvadari Jul 31, 2022
e21ed03
fix XChainCommit
mvadari Aug 2, 2022
bbb09c4
fix XChainAddAttestation
mvadari Aug 2, 2022
c34afed
add XChainModifyBridge tx model
mvadari Aug 2, 2022
1e36a2e
rename field
mvadari Aug 2, 2022
a5b26a4
actually export tx
mvadari Aug 2, 2022
8cfd601
Update definitions.json
mvadari Aug 3, 2022
4863320
add XChainModifyBridge binary codec test
mvadari Aug 3, 2022
573faea
edit changelog
mvadari Aug 3, 2022
98be541
update RPCs
mvadari Aug 15, 2022
ac805d1
make claim attestation destination optional
mvadari Aug 16, 2022
78a2ac3
make signature reward optional for modify bridge
mvadari Aug 18, 2022
c4e591e
update to new rippled changes
mvadari Aug 26, 2022
b31526d
one more fix
mvadari Aug 26, 2022
02d8fc3
Update definitions.json
mvadari Aug 29, 2022
dbd0781
fix spacing
mvadari Aug 29, 2022
eedc445
update definitions.json to avoid conflict with amm
mvadari Aug 30, 2022
d187b3b
Update definitions.json
mvadari Aug 31, 2022
5c0e9a4
more updates
mvadari Aug 31, 2022
7c333ff
fix fixtures
mvadari Aug 31, 2022
75a43ec
update rpcs
mvadari Sep 1, 2022
98b807d
use NestedModel
mvadari Sep 30, 2022
042fb26
make test easier to read
mvadari Sep 30, 2022
677876e
respond to comments
mvadari Sep 30, 2022
fdba19d
fix mypy
mvadari Sep 30, 2022
decdc59
add destination tag to XChainClaim
mvadari Oct 4, 2022
b20d0a7
fix import
mvadari Oct 26, 2022
c500d99
rename IssuedCurrency -> Issue to match rippled
mvadari Nov 8, 2022
debdd23
add xchain bridge to account objects
mvadari Nov 10, 2022
b65f755
fix account objects filters
mvadari Nov 10, 2022
fbdd483
update Issue form
mvadari Nov 16, 2022
1c96853
fix models
mvadari Nov 16, 2022
9eb38c1
fix test
mvadari Nov 16, 2022
6a3d089
add validations for XChainCreateBridge
mvadari Dec 12, 2022
aa1a09e
add validations for XChainModifyBridge
mvadari Dec 12, 2022
02404e9
validate XChainClaim
mvadari Dec 12, 2022
75dfc28
add validations for XChainCreateClaimID
mvadari Dec 12, 2022
a351c92
add validations for XChainAddAttestation
mvadari Dec 12, 2022
6373441
fix tests
mvadari Dec 12, 2022
783c2e2
add validations for XChainAccountCreateCommit
mvadari Dec 12, 2022
3f03f27
fix more Literal["XRP"] issues
mvadari Dec 13, 2022
c113cfb
simplify initializing attestation lists
mvadari Jan 5, 2023
6a0ab4a
fix attestation list creation
mvadari Jan 9, 2023
1694f81
Update definitions.json
mvadari Jan 30, 2023
32152d6
fix tests
mvadari Jan 30, 2023
1a6487b
rename XChainAddAttestation -> XChainAddAttestationBatch
mvadari Jan 30, 2023
cdd474b
add XChainAddClaimAttestation tx
mvadari Jan 30, 2023
ca369d2
add XChainAddAccountCreateAttestation tx
mvadari Jan 30, 2023
c6390ce
Merge branch 'master' into sidechain-2.5
mvadari Jan 30, 2023
d663b30
export new txs
mvadari Jan 30, 2023
b6f19bf
fix types in WasLockingChainSend
mvadari Feb 2, 2023
7ce5b87
Merge branch 'master' into sidechain-2.5
mvadari Feb 2, 2023
cfdf7db
fix typo
mvadari Feb 6, 2023
71d5d6c
remove XChainAddAttestationBatch
mvadari Feb 6, 2023
2377118
fix tests
mvadari Feb 6, 2023
acb5803
update definitions
mvadari Feb 7, 2023
abec1c3
update to latest version of rippled
mvadari Feb 14, 2023
9a49057
Merge branch 'master' into sidechain-2.5
mvadari Feb 14, 2023
167c921
add XChainModifyBridge flag
mvadari Feb 14, 2023
8864f3e
Update definitions.json
mvadari Feb 15, 2023
06500b9
add binary codec tests for new txs
mvadari Feb 15, 2023
a2e2e8d
fix validation for XChainCreateClaimID
mvadari Mar 23, 2023
a49de66
Merge branch 'master' into sidechain-2.5
mvadari Apr 5, 2023
c172803
Merge branch 'master' into sidechain-2.5
mvadari Apr 5, 2023
895058a
add docs
mvadari Apr 5, 2023
fe80522
add bridge to account_objects filters
mvadari Apr 7, 2023
e827e67
Merge branch 'master' into sidechain-2.5
mvadari Apr 11, 2023
9a252a2
Merge branch 'master' into sidechain-2.5
mvadari Apr 11, 2023
1c22a3b
update account_objects filters
mvadari Apr 28, 2023
57432d4
Merge branch 'master' into sidechain-2.5
mvadari May 1, 2023
433e994
fix linter issues
mvadari May 1, 2023
39fcebd
Merge branch 'master' into sidechain-2.5
mvadari May 2, 2023
9eb3441
fix model validation
mvadari May 3, 2023
3e51596
improve types
mvadari May 3, 2023
c61cb5c
Merge branch 'master' into sidechain-2.5
mvadari May 16, 2023
fd99b44
Merge branch 'master' into sidechain-2.5
mvadari May 31, 2023
21bea2a
chore(deps-dev): bump coverage from 7.2.5 to 7.2.7 (#587)
dependabot[bot] Jun 1, 2023
a6f0ae1
chore(deps): bump typing-extensions from 4.5.0 to 4.6.2 (#588)
dependabot[bot] Jun 1, 2023
3675658
chore(deps-dev): bump mypy from 1.2.0 to 1.3.0 (#586)
dependabot[bot] Jun 1, 2023
465015b
chore(deps): bump httpx from 0.24.0 to 0.24.1 (#584)
dependabot[bot] Jun 2, 2023
8ba5669
chore(deps): bump deprecated from 1.2.13 to 1.2.14 (#583)
dependabot[bot] Jun 2, 2023
65e1822
chore(deps-dev): bump sphinx-rtd-theme from 1.2.0 to 1.2.1 (#582)
dependabot[bot] Jun 5, 2023
82a8e5b
fix: improve error message for `tem` errors in relsub (#590)
mvadari Jun 5, 2023
697756b
(WIP) bridge transfer snippet
mvadari Jun 8, 2023
4746be2
fix snippet
mvadari Jun 9, 2023
29617ac
Update bridge_transfer.py
mvadari Jun 12, 2023
116593c
Merge branch 'master' into sidechain-2.5
mvadari Jun 12, 2023
3da897e
Merge branch 'master' into sidechain-2.5
mvadari Jun 20, 2023
a41a2bc
Merge branch 'master' into sidechain-2.5
mvadari Jun 23, 2023
cc4ebc2
Merge branch 'master' into sidechain-2.5
mvadari Jul 6, 2023
3478bbd
Merge branch 'master' into sidechain-2.5
mvadari Jul 6, 2023
ebfc107
fix settings.json
mvadari Jul 6, 2023
9bfda27
Merge branch 'master' into sidechain-2.5
mvadari Jul 10, 2023
7103fd9
Merge branch 'master' into sidechain-2.5
mvadari Jul 11, 2023
6e11a1a
Merge branch 'master' into sidechain-2.5
mvadari Jul 24, 2023
7fa9635
update ledger_entry
mvadari Aug 15, 2023
e1b3b32
add tests
mvadari Aug 15, 2023
386914c
Merge branch 'master' into sidechain-2.5
mvadari Aug 15, 2023
c98a82f
fix tests
mvadari Aug 15, 2023
72160ae
Merge branch 'master' into sidechain-2.5
mvadari Aug 26, 2023
73b79fd
Update definitions.json
mvadari Sep 12, 2023
740c233
Merge branch 'master' into sidechain-2.5
mvadari Sep 12, 2023
6979f67
Update definitions.json
mvadari Sep 14, 2023
b199c14
fix unit tests
mvadari Sep 14, 2023
0e3c81a
Merge branch 'master' into sidechain-2.5
mvadari Sep 14, 2023
45a9301
respond to comments
mvadari Sep 18, 2023
2cc6eeb
Merge branch 'master' into sidechain-2.5
mvadari Sep 18, 2023
3b5ccc9
add getXChainClaimID util
mvadari Sep 21, 2023
2317670
fix error
mvadari Sep 21, 2023
e718723
fix test name
mvadari Sep 25, 2023
7ea61b1
add more comments
mvadari Sep 25, 2023
2d8bfb5
Merge branch 'master' into sidechain-2.5
mvadari Sep 26, 2023
0454b4e
fix changelog
mvadari Sep 26, 2023
b8c287e
respond to comments
mvadari Sep 27, 2023
e80e10b
Merge branch 'master' into sidechain-2.5
mvadari Sep 27, 2023
1740de7
improve ledger entry objects
mvadari Sep 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,18 @@
"asyncio",
"autofills",
"binarycodec",
"Clawback",
"isnumeric",
"keypair",
"keypairs",
"multisign",
"nftoken",
"rippletest",
"ripplex",
"xaddress"
"xaddress",
"xchain"
],
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
}
}
50 changes: 48 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,42 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [[Unreleased]]

### Added
- Added new syntax for `SetFee` psuedo transaction sent after the [XRPFees](https://xrpl.org/known-amendments.html#xrpfees) amendment. (Backwards compatible)

- Added new syntax for `SetFee` pseudo transaction sent after the [XRPFees](https://xrpl.org/known-amendments.html#xrpfees) amendment. (Backwards compatible)
- Update request models related to AMM
- Support for [XLS-38d (XChainBridge)](https:/XRPLF/XRPL-Standards/tree/master/XLS-38d-XChainBridge)

## [2.3.0] - 2023-08-24

### Added

- Add AMM support [XLS-30](https:/XRPLF/XRPL-Standards/discussions/78)

## [2.2.0] - 2023-08-07

### Added

- Added new `Clawback` transaction as per [XLS-39](https:/XRPLF/XRPL-Standards/discussions/94)

## [2.1.0] - 2023-07-24

### Fixed
- Replaced alias for `classic_address` with separate property to work around this mypy issue:

- Replaced alias for `classic_address` with separate property to work around this mypy issue:
https:/python/mypy/issues/6700

## [2.0.0] - 2023-07-05

### Added:

- Wallet support for regular key compatibility
- Added new ways of wallet generation: `from_seed`, `from_secret`, `from_entropy`, `from_secret_numbers`
- Added `address` alias to `Wallet.classic_address`
- Replaced `Wallet.classic_address` with `Wallet.address` to avoid confusion. (`classic_address` is the same as your XRPL account `address`, and is only called classic since it's an older standard than `x-address`)
- Added `network_id` to clients in order to use the `Client` with networks beyond mainnet

### Changed:

- Updated params for `Wallet` class constructor
- `Wallet.address` is now readonly
- Removed `sequence` from `Wallet` class
Expand All @@ -45,11 +56,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `XRP.to_amount` now converts from XRP to drops, instead of expecting a drops amount

### Fixed:

- Added a sort of the account IDs in `multisign`, so that the `multisign` always works.
- Add `ledger_hash` and `ledger_index` to `account_nfts`, `nft_buy_offers`, and `nft_sell_offers` requests.
- Add `nft_page` to `ledger_entry` request.

### Removed:

- `send_reliable_submission` has been replaced by `submit_and_wait`
- Longer aliases for signing/submitting functions have been removed. Specifically
- `submit_transaction` is now `submit`
Expand All @@ -65,26 +78,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `get_transaction_from_hash`

## [1.9.0] - 2023-06-13

### Added:

- Added `submit_and_wait` to sign (if needed), autofill, submit a transaction and wait for its final outcome
- `submit` and `send_reliable_submission` now accept an optional boolean param `fail_hard` (if `True` halt the submission if it's not immediately validated)
- Added sidechain devnet support to faucet generation
- Added `user_agent` and `usage_context` to `generate_faucet_wallet`

### Changed:

- Allowed keypairs.sign to take a hex string in addition to bytes

### Fixed:

- Refactored `does_account_exist` and `get_balance` to avoid deprecated methods and use `ledger_index` parameter
- Fixed crashes in the `SignerListSet` validation
- Improved error messages in `send_reliable_submission`
- Better error handling in reliable submission

### Removed:

- RPCs and utils related to the old sidechain design

## [1.8.0] - 2023-04-10

### Added:

- Created function alias to `safe_sign_transaction` called `sign` - safe originally used to indicate local offline signing (keys aren't exposed)
- Created function alias to `safe_sign_and_autofill_transaction` called `autofill_and_sign` to reflect order of operations
- Created function alias to `submit_transaction` called `submit`
Expand All @@ -95,21 +115,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added the algorithm used to encode a wallet's seed to the wallet.

### Changed:

- `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 use `request` over `request_impl`.
- Removed nft-devnet faucet support as it has been decommissioned ([Blog Post](https://xrpl.org/blog/2023/nft-devnet-decommission.html))

### Fixed:

- Properly type the instance functions of NestedModel
- Add additional check to `txnNotFound` error from `reliable_submission` due to race condition
- Add `nft_offer` type in `AccountObjects`
- Handle errors better in `send_reliable_submission`
- Made `send_reliable_submission` wait the full duration until `LastLedgerSequence` passes by

## [1.7.0] - 2022-10-12

### Added:

- 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
Expand All @@ -119,42 +143,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Common field `ticket_sequence` to Transaction class

### Fixed:

- Typing for factory classmethods on models
- Use properly encoded transactions in `Sign`, `SignFor`, and `SignAndSubmit`
- Fix Sphinx build errors due to incompatible version bumps

## [1.6.0] - 2022-06-02

### Added:

- Support for dynamic fee calculation
- Function to parse account balances from a transaction's metadata
- Better error handling for invalid client URL
- Exported SubscribeBook

### Fixed

- Resolve `txnNotFound` error with `send_reliable_submission` when waiting for a submitted malformed transaction
- Small typing mistake in GenericRequest
- Fix bug in GenericRequest.to_dict()

## [1.5.0] - 2022-04-25

### Added

- 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

### Fixed

- Updated NFT names to match new 1.9.0 rippled names
- `xrpl.asyncio.clients` exports (now includes `request_to_websocket`, `websocket_to_response`)
- Adds optional `owner` field to NFTokenBurn
- Allows lower-case currency codes

## [1.4.0] - 2022-02-24

### Added

- Sync and async `generate_faucet_wallet` functions now support a custom
faucet host

## [1.3.0] - 2021-12-17

### Added

- Support for the [XLS-20 NFT proposal](https:/XRPLF/XRPL-Standards/discussions/46)
- `xrpl.models.amounts.get_amount_value` helper function
- `xrpl.utils.str_to_hex` and `xrpl.utils.hex_to_str` helpers
Expand All @@ -168,6 +203,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Exports `Transaction`, `Response`, pseudo-transactions at the `xrpl.models` level

### Fixed

- Improves typing of `Response.result`
- Makes the default ledger version for `get_next_valid_seq_number` `current` instead of `validated`
- Stops erroring on non-`tesSUCCESS` responses in reliable transaction submission
Expand All @@ -181,21 +217,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixes bug where autofilling using an `xAddress` with `None` in the Destination Tag threw a KeyError

## [1.2.0] - 2021-11-09

### Added

- Support for Python 3.10

### Fixed

- Improves documentation on using websocket clients.
- Fixes an issue sending NoRippleCheck requests
- Allows projects that use xrpl-py as a dependency to use typing

## [1.1.1] - 2021-07-02

### Fixed

- Fixes an issue encoding some non-standard currency values
- Corrects installation instructions in documentation

## [1.1.0] - 2021-06-16

### Added

- Option for `Transaction.flags` to be a `List` of `int`s instead of just an `int`
- Instance method in `Transaction` objects to calculate their hashes locally
- Additional reliability to `send_reliable_submission` by getting the hash before submitting
Expand All @@ -211,6 +254,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- A general `from_dict` method for `Request` models, analogous to `Transaction.from_dict`

### Fixed

- Typos in docs/tests
- Improved readability of the README/documentation
- Expose `xrpl.utils` at the top level
Expand All @@ -221,6 +265,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Better error message reporting

## [1.0.0] - 2021-03-31

### Added

- Initial release! Please open up an issue in our repo if you have any
feedback or issues to report.
105 changes: 105 additions & 0 deletions snippets/bridge_transfer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
"""CLI command for setting up a bridge."""

from pprint import pprint
from time import sleep

from xrpl.account import does_account_exist, get_balance
from xrpl.clients import JsonRpcClient
from xrpl.models import (
AccountObjects,
AccountObjectType,
XChainAccountCreateCommit,
XChainBridge,
XChainCommit,
XChainCreateClaimID,
)
from xrpl.transaction import submit_and_wait
from xrpl.utils import get_xchain_claim_id, xrp_to_drops
from xrpl.wallet import Wallet, generate_faucet_wallet

locking_client = JsonRpcClient("https://sidechain-net1.devnet.rippletest.net:51234")
issuing_client = JsonRpcClient("https://sidechain-net2.devnet.rippletest.net:51234")

locking_chain_door = "rMAXACCrp3Y8PpswXcg3bKggHX76V3F8M4"
bridge_data = locking_client.request(
AccountObjects(account=locking_chain_door, type=AccountObjectType.BRIDGE)
).result["account_objects"][0]
bridge = XChainBridge.from_xrpl(bridge_data["XChainBridge"])
print(bridge)

print("Funding a wallet via the faucet on the locking chain...")
wallet1 = generate_faucet_wallet(locking_client, debug=True)
print(wallet1)
wallet2 = Wallet.create()

print(f"Creating {wallet2.classic_address} on the issuing chain via the bridge...")
JST5000 marked this conversation as resolved.
Show resolved Hide resolved

fund_tx = XChainAccountCreateCommit(
account=wallet1.classic_address,
xchain_bridge=bridge,
signature_reward=bridge_data["SignatureReward"],
destination=wallet2.classic_address,
amount=str(int(bridge_data["MinAccountCreateAmount"]) * 2),
)
fund_response = submit_and_wait(fund_tx, locking_client, wallet1)
pprint(fund_response.result)


print("Waiting for the attestation to go through on the issuing chain...")
ledgers_waited = 0
MAX_LEDGERS_WAITED = 5
while ledgers_waited < MAX_LEDGERS_WAITED:
sleep(4)
if does_account_exist(wallet2.classic_address, issuing_client):
print(
f"Destination account {wallet2.classic_address} has been created via the "
"bridge"
)
initial_balance = get_balance(wallet2.classic_address, issuing_client)
break

ledgers_waited += 1
if ledgers_waited == MAX_LEDGERS_WAITED:
raise Exception("Destination account creation via the bridge failed.")

print(
"Submitting XChainCreateClaimID transaction on the issuing chain to get an "
"XChainOwnedClaimID for the transfer..."
)
create_claim_id_tx = XChainCreateClaimID(
account=wallet2.classic_address,
xchain_bridge=bridge,
signature_reward=bridge_data["SignatureReward"],
other_chain_source=wallet1.classic_address,
)
create_claim_id_result = submit_and_wait(create_claim_id_tx, issuing_client, wallet2)
pprint(create_claim_id_result.result)

# Extract new sequence number from metadata
xchain_claim_id = get_xchain_claim_id(create_claim_id_result.result["meta"])

# XChainCommit

print("Sending XChainCommit tx to lock the funds for transfer...")
commit_tx = XChainCommit(
account=wallet1.classic_address,
amount=xrp_to_drops(1),
xchain_bridge=bridge,
xchain_claim_id=xchain_claim_id,
other_chain_destination=wallet2.classic_address,
)
commit_result = submit_and_wait(commit_tx, locking_client, wallet1)
pprint(commit_result.result)

print("Waiting for the attestation to go through on the issuing chain...")
ledgers_waited = 0
while ledgers_waited < MAX_LEDGERS_WAITED:
sleep(4)
current_balance = get_balance(wallet2.classic_address, issuing_client)
if current_balance != initial_balance:
print("Transfer is complete!")
break

ledgers_waited += 1
if ledgers_waited == MAX_LEDGERS_WAITED:
raise Exception("Bridge transfer failed.")
2 changes: 1 addition & 1 deletion snippets/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
paths = path_response.result["alternatives"][0]["paths_computed"]
print(paths)

# # Create a Payment to send money from wallet to destination_account using path
# Create a Payment to send money from wallet to destination_account using path
payment_tx = Payment(
account=wallet.address,
amount=destination_amount,
Expand Down
Loading