charli3_dendrite 1.6.0.dev1__tar.gz → 1.6.1.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/PKG-INFO +1 -1
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/pyproject.toml +2 -2
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/cardanoswaps.py +176 -41
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/LICENSE +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/README.md +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/dano.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/multi_asset.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4_deployments.json +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4_stableswap_math.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/base.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/constants.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/datums.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/loader.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/market.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/math.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator_datums.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/deployments.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/forward.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/leaves.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/locator.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/lp_pricing.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/recipes.json +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/redeemer.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/reproduce.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/oracles/structured_datums.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/state.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/_common.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/build.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/builder.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/context.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/create_loan.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/datum_synth.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/increase_loan.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/loan_ids.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/modify_collateral.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_redeemer.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_synth.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/repay.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/topup_withdraw.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/danogo/transactions/verify.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/constants.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/datums.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/loader.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/market.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/math.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/feeds.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/fluid_api.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/witness.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/state.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/_common.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow_terms.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/builder.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/change_collateral.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/context.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/datum_synth.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/lend.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/pool.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/recast.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/repay.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/request.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/resolve.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/utxos.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/constants.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/datums.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/indexing.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/loader.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/market.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/rates.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/state.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/borrow.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/builder.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/change_collateral.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/claim.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/common.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/lender_bond.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/loan_action.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/loan_terms.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/oracle.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_action.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_cancel.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_create.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_edit.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_terms.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/recast.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/redeemers.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/repay.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/resolve.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/markets.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/math.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/normalized.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/charli3.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/dex_pooled.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/fluid.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/models.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/orcfax.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/oracles/qtoken.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/plutus.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/rates.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/registry.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/transactions/__init__.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/transactions/base.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/transactions/infra.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/transactions/snapshot.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/units.py +0 -0
- {charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/utility.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "charli3_dendrite"
|
|
3
|
-
version = "1.6.
|
|
3
|
+
version = "1.6.1-dev0"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Elder Millenial <eldermillenial@protonmail.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -50,7 +50,7 @@ module = ["pycardano", "pycardano.*", "dotenv", "nox", "uplc", "uplc.*"]
|
|
|
50
50
|
ignore_missing_imports = true
|
|
51
51
|
|
|
52
52
|
[tool.bumpversion]
|
|
53
|
-
current_version = "1.6.
|
|
53
|
+
current_version = "1.6.1-dev0"
|
|
54
54
|
parse = """(?x)
|
|
55
55
|
(?P<major>\\d+)\\.
|
|
56
56
|
(?P<minor>\\d+)\\.
|
|
@@ -207,13 +207,96 @@ def ask_beacon_name(ask_id: bytes, ask_name: bytes) -> bytes:
|
|
|
207
207
|
return _sha256(_AskAsset(ask_id, ask_name).to_cbor())
|
|
208
208
|
|
|
209
209
|
|
|
210
|
+
@dataclass
|
|
211
|
+
class CardanoSwapsTxId(PlutusData):
|
|
212
|
+
"""A transaction id wrapper, as the pre-release build encodes it."""
|
|
213
|
+
|
|
214
|
+
CONSTR_ID = 0
|
|
215
|
+
tx_hash: bytes
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
@dataclass
|
|
219
|
+
class CardanoSwapsOutputReference(PlutusData):
|
|
220
|
+
"""An output reference in the pre-release build's shape.
|
|
221
|
+
|
|
222
|
+
``Constr 0 [Constr 0 [tx_hash], output_index]``: the transaction id is
|
|
223
|
+
wrapped in its own constructor.
|
|
224
|
+
"""
|
|
225
|
+
|
|
226
|
+
CONSTR_ID = 0
|
|
227
|
+
transaction_id: CardanoSwapsTxId
|
|
228
|
+
output_index: int
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
@dataclass
|
|
232
|
+
class CardanoSwapsSomeOutRef(PlutusData):
|
|
233
|
+
"""``Some`` output reference in the pre-release build's shape."""
|
|
234
|
+
|
|
235
|
+
CONSTR_ID = 0
|
|
236
|
+
value: CardanoSwapsOutputReference
|
|
237
|
+
|
|
238
|
+
@classmethod
|
|
239
|
+
def from_ref(cls, tx_hash: bytes, output_index: int) -> "CardanoSwapsSomeOutRef":
|
|
240
|
+
"""``Some`` reference to the output ``tx_hash#output_index``."""
|
|
241
|
+
return cls(
|
|
242
|
+
value=CardanoSwapsOutputReference(
|
|
243
|
+
transaction_id=CardanoSwapsTxId(tx_hash=tx_hash),
|
|
244
|
+
output_index=output_index,
|
|
245
|
+
),
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
def ref(self) -> tuple[bytes, int]:
|
|
249
|
+
"""The referenced output as ``(tx_hash, output_index)``."""
|
|
250
|
+
return self.value.transaction_id.tx_hash, self.value.output_index
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
@dataclass
|
|
254
|
+
class CardanoSwapsOutRefV3(PlutusData):
|
|
255
|
+
"""An output reference in the official (Plutus V3) contracts' shape.
|
|
256
|
+
|
|
257
|
+
``Constr 0 [transaction_id, output_index]``: the transaction id is a plain
|
|
258
|
+
bytestring.
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
CONSTR_ID = 0
|
|
262
|
+
transaction_id: bytes
|
|
263
|
+
output_index: int
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
@dataclass
|
|
267
|
+
class CardanoSwapsSomeOutRefV3(PlutusData):
|
|
268
|
+
"""``Some`` output reference in the official (Plutus V3) contracts' shape."""
|
|
269
|
+
|
|
270
|
+
CONSTR_ID = 0
|
|
271
|
+
value: CardanoSwapsOutRefV3
|
|
272
|
+
|
|
273
|
+
@classmethod
|
|
274
|
+
def from_ref(
|
|
275
|
+
cls,
|
|
276
|
+
tx_hash: bytes,
|
|
277
|
+
output_index: int,
|
|
278
|
+
) -> "CardanoSwapsSomeOutRefV3":
|
|
279
|
+
"""``Some`` reference to the output ``tx_hash#output_index``."""
|
|
280
|
+
return cls(
|
|
281
|
+
value=CardanoSwapsOutRefV3(
|
|
282
|
+
transaction_id=tx_hash,
|
|
283
|
+
output_index=output_index,
|
|
284
|
+
),
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
def ref(self) -> tuple[bytes, int]:
|
|
288
|
+
"""The referenced output as ``(tx_hash, output_index)``."""
|
|
289
|
+
return self.value.transaction_id, self.value.output_index
|
|
290
|
+
|
|
291
|
+
|
|
210
292
|
@dataclass(frozen=True)
|
|
211
293
|
class CardanoSwapsContract:
|
|
212
294
|
"""One deployment of the Cardano-Swaps one-way contracts.
|
|
213
295
|
|
|
214
296
|
Everything that differs between deployments: script hashes and bytes, the
|
|
215
|
-
Plutus version, the
|
|
216
|
-
|
|
297
|
+
Plutus version, the shape a continuation's ``prev_input`` is written in, the
|
|
298
|
+
beacon-name rule, whether a new swap's staking key must sign its creation,
|
|
299
|
+
and which builders are allowed.
|
|
217
300
|
"""
|
|
218
301
|
|
|
219
302
|
swap_validator_hash: str
|
|
@@ -221,6 +304,7 @@ class CardanoSwapsContract:
|
|
|
221
304
|
swap_script_hex: str
|
|
222
305
|
beacon_script_hex: str
|
|
223
306
|
script_class: type[PlutusV2Script] | type[PlutusV3Script]
|
|
307
|
+
prev_input_class: type[CardanoSwapsSomeOutRef] | type[CardanoSwapsSomeOutRefV3]
|
|
224
308
|
pair_beacon_name: Callable[[bytes, bytes, bytes, bytes], bytes]
|
|
225
309
|
offer_beacon_name: Callable[[bytes, bytes], bytes]
|
|
226
310
|
ask_beacon_name: Callable[[bytes, bytes], bytes]
|
|
@@ -243,6 +327,7 @@ OFFICIAL_CONTRACT = CardanoSwapsContract(
|
|
|
243
327
|
swap_script_hex=SWAP_VALIDATOR_SCRIPT_HEX,
|
|
244
328
|
beacon_script_hex=BEACON_POLICY_SCRIPT_HEX,
|
|
245
329
|
script_class=PlutusV3Script,
|
|
330
|
+
prev_input_class=CardanoSwapsSomeOutRefV3,
|
|
246
331
|
pair_beacon_name=pair_beacon_name,
|
|
247
332
|
offer_beacon_name=offer_beacon_name,
|
|
248
333
|
ask_beacon_name=ask_beacon_name,
|
|
@@ -257,6 +342,7 @@ LEGACY_CONTRACT = CardanoSwapsContract(
|
|
|
257
342
|
swap_script_hex=LEGACY_SWAP_VALIDATOR_SCRIPT_HEX,
|
|
258
343
|
beacon_script_hex=LEGACY_BEACON_POLICY_SCRIPT_HEX,
|
|
259
344
|
script_class=PlutusV2Script,
|
|
345
|
+
prev_input_class=CardanoSwapsSomeOutRef,
|
|
260
346
|
pair_beacon_name=legacy_pair_beacon_name,
|
|
261
347
|
offer_beacon_name=legacy_offer_beacon_name,
|
|
262
348
|
ask_beacon_name=legacy_ask_beacon_name,
|
|
@@ -266,6 +352,20 @@ LEGACY_CONTRACT = CardanoSwapsContract(
|
|
|
266
352
|
)
|
|
267
353
|
|
|
268
354
|
|
|
355
|
+
def contract_for_beacon(beacon_id: bytes) -> CardanoSwapsContract:
|
|
356
|
+
"""The contract whose beacon policy is ``beacon_id`` (a datum's ``beacon_id``).
|
|
357
|
+
|
|
358
|
+
Raises:
|
|
359
|
+
ValueError: ``beacon_id`` is neither contract's beacon policy.
|
|
360
|
+
"""
|
|
361
|
+
for contract in (OFFICIAL_CONTRACT, LEGACY_CONTRACT):
|
|
362
|
+
if beacon_id.hex() == contract.beacon_policy_id:
|
|
363
|
+
return contract
|
|
364
|
+
raise ValueError(
|
|
365
|
+
f"Unknown Cardano-Swaps beacon policy id {beacon_id.hex()}.",
|
|
366
|
+
)
|
|
367
|
+
|
|
368
|
+
|
|
269
369
|
def _unit(policy: bytes, name: bytes) -> str:
|
|
270
370
|
"""Build a dendrite asset unit from on-chain policy + name bytes.
|
|
271
371
|
|
|
@@ -291,6 +391,11 @@ _SIZING_ADDRESS = Address(
|
|
|
291
391
|
_SIZING_COIN = 1_000_000
|
|
292
392
|
_SIZING_COIN_WIDTH = range(2**16, 2**32)
|
|
293
393
|
|
|
394
|
+
# How far past the chain tip a fill's validity may end (one hour of slots). An
|
|
395
|
+
# expiring swap needs an upper bound at or before its expiration; bounding it
|
|
396
|
+
# from the tip as well keeps it inside the node's slot-to-time forecast horizon.
|
|
397
|
+
_FILL_VALIDITY_SLOTS = 3600
|
|
398
|
+
|
|
294
399
|
|
|
295
400
|
def _min_lovelace_at(output: TransactionOutput, coins_per_utxo_byte: int) -> int:
|
|
296
401
|
"""The ledger min-UTxO of ``output`` at ``coins_per_utxo_byte``.
|
|
@@ -330,31 +435,6 @@ class CardanoSwapsRational(PlutusData):
|
|
|
330
435
|
denominator: int
|
|
331
436
|
|
|
332
437
|
|
|
333
|
-
@dataclass
|
|
334
|
-
class CardanoSwapsTxId(PlutusData):
|
|
335
|
-
"""A transaction id wrapper."""
|
|
336
|
-
|
|
337
|
-
CONSTR_ID = 0
|
|
338
|
-
tx_hash: bytes
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
@dataclass
|
|
342
|
-
class CardanoSwapsOutputReference(PlutusData):
|
|
343
|
-
"""A reference to a transaction output (tx id + output index)."""
|
|
344
|
-
|
|
345
|
-
CONSTR_ID = 0
|
|
346
|
-
transaction_id: CardanoSwapsTxId
|
|
347
|
-
output_index: int
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
@dataclass
|
|
351
|
-
class CardanoSwapsSomeOutRef(PlutusData):
|
|
352
|
-
"""``Some`` wrapper for an optional output reference."""
|
|
353
|
-
|
|
354
|
-
CONSTR_ID = 0
|
|
355
|
-
value: CardanoSwapsOutputReference
|
|
356
|
-
|
|
357
|
-
|
|
358
438
|
@dataclass
|
|
359
439
|
class CardanoSwapsSomeInt(PlutusData):
|
|
360
440
|
"""``Some`` wrapper for an optional integer (POSIX millis expiration)."""
|
|
@@ -370,6 +450,10 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
370
450
|
Asset policy/name pairs are kept as separate flat bytestrings (not an
|
|
371
451
|
``AssetClass``) to match the on-chain 11-field wire format exactly. ADA is
|
|
372
452
|
the empty bytestring in the ``*_id`` / ``*_name`` fields.
|
|
453
|
+
|
|
454
|
+
``prev_input`` parses in either contract's output-reference shape; the two
|
|
455
|
+
differ in field 0 (a bytestring vs a wrapping constructor), so each datum
|
|
456
|
+
decodes to exactly one of them. :meth:`prev_input_ref` reads either.
|
|
373
457
|
"""
|
|
374
458
|
|
|
375
459
|
CONSTR_ID = 0
|
|
@@ -383,9 +467,20 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
383
467
|
ask_name: bytes
|
|
384
468
|
ask_beacon: bytes
|
|
385
469
|
swap_price: CardanoSwapsRational
|
|
386
|
-
prev_input: Union[CardanoSwapsSomeOutRef, PlutusNone]
|
|
470
|
+
prev_input: Union[CardanoSwapsSomeOutRefV3, CardanoSwapsSomeOutRef, PlutusNone]
|
|
387
471
|
expiration: Union[CardanoSwapsSomeInt, PlutusNone]
|
|
388
472
|
|
|
473
|
+
def prev_input_ref(self) -> tuple[bytes, int] | None:
|
|
474
|
+
"""The consumed output this datum's ``prev_input`` records.
|
|
475
|
+
|
|
476
|
+
Returns:
|
|
477
|
+
``(tx_hash, output_index)`` in either shape, or ``None`` when
|
|
478
|
+
``prev_input`` is ``None`` (a swap that has not been filled).
|
|
479
|
+
"""
|
|
480
|
+
if isinstance(self.prev_input, PlutusNone):
|
|
481
|
+
return None
|
|
482
|
+
return self.prev_input.ref()
|
|
483
|
+
|
|
389
484
|
def offer_unit(self) -> str:
|
|
390
485
|
"""The dendrite unit of the offered (output) asset."""
|
|
391
486
|
return _unit(self.offer_id, self.offer_name)
|
|
@@ -463,20 +558,25 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
463
558
|
self,
|
|
464
559
|
tx_hash: bytes,
|
|
465
560
|
output_index: int,
|
|
561
|
+
*,
|
|
562
|
+
contract: CardanoSwapsContract | None = None,
|
|
466
563
|
) -> "CardanoSwapsSwapDatum":
|
|
467
564
|
"""This datum with ``prev_input`` pointing at the consumed ``tx_hash#index``.
|
|
468
565
|
|
|
469
566
|
The validator requires a fill's continuing output to carry the spent datum
|
|
470
|
-
unchanged except for ``prev_input``, which must reference the spent UTxO
|
|
567
|
+
unchanged except for ``prev_input``, which must reference the spent UTxO
|
|
568
|
+
in the output-reference shape of ``contract``'s validator. ``contract``
|
|
569
|
+
defaults to the one this datum's ``beacon_id`` names.
|
|
570
|
+
|
|
571
|
+
Raises:
|
|
572
|
+
ValueError: ``contract`` is not given and ``beacon_id`` is neither
|
|
573
|
+
contract's beacon policy.
|
|
471
574
|
"""
|
|
575
|
+
if contract is None:
|
|
576
|
+
contract = contract_for_beacon(self.beacon_id)
|
|
472
577
|
return dataclasses.replace(
|
|
473
578
|
self,
|
|
474
|
-
prev_input=
|
|
475
|
-
value=CardanoSwapsOutputReference(
|
|
476
|
-
transaction_id=CardanoSwapsTxId(tx_hash=tx_hash),
|
|
477
|
-
output_index=output_index,
|
|
478
|
-
),
|
|
479
|
-
),
|
|
579
|
+
prev_input=contract.prev_input_class.from_ref(tx_hash, output_index),
|
|
480
580
|
)
|
|
481
581
|
|
|
482
582
|
def continuation_min_lovelace(
|
|
@@ -486,6 +586,7 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
486
586
|
*,
|
|
487
587
|
prev_output_index: int = 0,
|
|
488
588
|
address: Address | None = None,
|
|
589
|
+
contract: CardanoSwapsContract | None = None,
|
|
489
590
|
) -> int:
|
|
490
591
|
"""The min-UTxO of a continuing output of this swap that holds ``held``.
|
|
491
592
|
|
|
@@ -505,9 +606,15 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
505
606
|
continuation's ``prev_input`` records.
|
|
506
607
|
address: The swap address; defaults to a staked address of the same
|
|
507
608
|
size as every base address.
|
|
609
|
+
contract: The contract whose ``prev_input`` shape the continuation
|
|
610
|
+
is written in; by default the one ``beacon_id`` names.
|
|
508
611
|
|
|
509
612
|
Returns:
|
|
510
613
|
The lovelace the continuing output must hold.
|
|
614
|
+
|
|
615
|
+
Raises:
|
|
616
|
+
ValueError: ``contract`` is not given and ``beacon_id`` is neither
|
|
617
|
+
contract's beacon policy.
|
|
511
618
|
"""
|
|
512
619
|
tokens = Assets(
|
|
513
620
|
root={
|
|
@@ -519,7 +626,11 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
519
626
|
output = TransactionOutput(
|
|
520
627
|
address=address if address is not None else _SIZING_ADDRESS,
|
|
521
628
|
amount=asset_to_value(self.beacon_assets(1) + tokens),
|
|
522
|
-
datum=self.continuation_datum(
|
|
629
|
+
datum=self.continuation_datum(
|
|
630
|
+
bytes(32),
|
|
631
|
+
prev_output_index,
|
|
632
|
+
contract=contract,
|
|
633
|
+
),
|
|
523
634
|
)
|
|
524
635
|
return _self_funded_min_lovelace(output, coins_per_utxo_byte)
|
|
525
636
|
|
|
@@ -531,6 +642,7 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
531
642
|
held_ask: int = 0,
|
|
532
643
|
prev_output_index: int = 0,
|
|
533
644
|
address: Address | None = None,
|
|
645
|
+
contract: CardanoSwapsContract | None = None,
|
|
534
646
|
) -> int:
|
|
535
647
|
"""The offer a taker can draw from a swap UTxO holding ``gross`` of it.
|
|
536
648
|
|
|
@@ -549,14 +661,20 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
549
661
|
prev_output_index: The swap UTxO's own output index, which the
|
|
550
662
|
continuation's ``prev_input`` records.
|
|
551
663
|
address: The swap address, when known.
|
|
664
|
+
contract: The contract whose ``prev_input`` shape the continuation
|
|
665
|
+
is written in; by default the one ``beacon_id`` names.
|
|
552
666
|
|
|
553
667
|
Returns:
|
|
554
668
|
The claimable offer quantity, floored at 0.
|
|
555
669
|
|
|
556
670
|
Raises:
|
|
557
671
|
InvalidPoolError: ``swap_price`` is not a positive rational.
|
|
672
|
+
ValueError: ``contract`` is not given and ``beacon_id`` is neither
|
|
673
|
+
contract's beacon policy.
|
|
558
674
|
"""
|
|
559
675
|
self.price()
|
|
676
|
+
if contract is None:
|
|
677
|
+
contract = contract_for_beacon(self.beacon_id)
|
|
560
678
|
if self.offer_unit() != "lovelace":
|
|
561
679
|
return gross
|
|
562
680
|
full_ask = held_ask + self.required_ask(gross)
|
|
@@ -565,6 +683,7 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
565
683
|
coins_per_utxo_byte,
|
|
566
684
|
prev_output_index=prev_output_index,
|
|
567
685
|
address=address,
|
|
686
|
+
contract=contract,
|
|
568
687
|
)
|
|
569
688
|
return max(0, gross - floor)
|
|
570
689
|
|
|
@@ -575,6 +694,7 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
575
694
|
*,
|
|
576
695
|
prev_output_index: int = 0,
|
|
577
696
|
address: Address | None = None,
|
|
697
|
+
contract: CardanoSwapsContract | None = None,
|
|
578
698
|
) -> int:
|
|
579
699
|
"""The lovelace a new swap offering ``offer_quantity`` funds for its min-UTxO.
|
|
580
700
|
|
|
@@ -595,12 +715,16 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
595
715
|
coins_per_utxo_byte: The ``coins_per_utxo_byte`` protocol parameter.
|
|
596
716
|
prev_output_index: The output index the swap UTxO is created at.
|
|
597
717
|
address: The swap address, when known.
|
|
718
|
+
contract: The contract whose ``prev_input`` shape the continuation
|
|
719
|
+
is written in; by default the one ``beacon_id`` names.
|
|
598
720
|
|
|
599
721
|
Returns:
|
|
600
722
|
The carrier lovelace.
|
|
601
723
|
|
|
602
724
|
Raises:
|
|
603
725
|
InvalidPoolError: ``swap_price`` is not a positive rational.
|
|
726
|
+
ValueError: ``contract`` is not given and ``beacon_id`` is neither
|
|
727
|
+
contract's beacon policy.
|
|
604
728
|
"""
|
|
605
729
|
self.price()
|
|
606
730
|
ask_unit = self.ask_unit()
|
|
@@ -617,6 +741,7 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
617
741
|
coins_per_utxo_byte,
|
|
618
742
|
prev_output_index=prev_output_index,
|
|
619
743
|
address=address,
|
|
744
|
+
contract=contract,
|
|
620
745
|
)
|
|
621
746
|
if needed <= carrier:
|
|
622
747
|
return carrier
|
|
@@ -629,6 +754,7 @@ class CardanoSwapsSwapDatum(OrderDatum):
|
|
|
629
754
|
coins_per_utxo_byte,
|
|
630
755
|
prev_output_index=prev_output_index,
|
|
631
756
|
address=address,
|
|
757
|
+
contract=contract,
|
|
632
758
|
)
|
|
633
759
|
|
|
634
760
|
|
|
@@ -750,9 +876,9 @@ class _CardanoSwapsOneWayOrderState(AbstractOrderState):
|
|
|
750
876
|
|
|
751
877
|
:meth:`CardanoSwapsSwapDatum.claimable_offer` over this UTxO's offer
|
|
752
878
|
balance and accumulated ask, sized at its own output index (which the
|
|
753
|
-
continuation's ``prev_input`` records
|
|
754
|
-
:meth:`swap_utxo` fill of this amount always
|
|
755
|
-
funded.
|
|
879
|
+
continuation's ``prev_input`` records, in this contract's shape) and at
|
|
880
|
+
its address when known. A :meth:`swap_utxo` fill of this amount always
|
|
881
|
+
leaves the continuing output funded.
|
|
756
882
|
|
|
757
883
|
Args:
|
|
758
884
|
coins_per_utxo_byte: The ``coins_per_utxo_byte`` protocol parameter.
|
|
@@ -766,6 +892,7 @@ class _CardanoSwapsOneWayOrderState(AbstractOrderState):
|
|
|
766
892
|
held_ask=self.assets[self.in_unit],
|
|
767
893
|
prev_output_index=self.tx_index,
|
|
768
894
|
address=Address.decode(self.address) if self.address is not None else None,
|
|
895
|
+
contract=self.CONTRACT,
|
|
769
896
|
)
|
|
770
897
|
|
|
771
898
|
@property
|
|
@@ -1055,6 +1182,7 @@ class _CardanoSwapsOneWayOrderState(AbstractOrderState):
|
|
|
1055
1182
|
tx_builder.context.protocol_param.coins_per_utxo_byte,
|
|
1056
1183
|
prev_output_index=len(tx_builder.outputs),
|
|
1057
1184
|
address=swap_address,
|
|
1185
|
+
contract=cls.CONTRACT,
|
|
1058
1186
|
)
|
|
1059
1187
|
if offer_unit == "lovelace":
|
|
1060
1188
|
txo.amount.coin = offer.quantity() + carrier
|
|
@@ -1183,9 +1311,15 @@ class _CardanoSwapsOneWayOrderState(AbstractOrderState):
|
|
|
1183
1311
|
)
|
|
1184
1312
|
# An expiring swap is fillable only by a transaction whose validity ends at
|
|
1185
1313
|
# or before the expiration (the validator reads it as the upper bound).
|
|
1314
|
+
# The bound is also kept within _FILL_VALIDITY_SLOTS of the tip: a node
|
|
1315
|
+
# cannot convert a slot past its forecast horizon to time, so a far
|
|
1316
|
+
# expiration as the upper bound fails evaluation and submission.
|
|
1186
1317
|
expiration = self.order_datum.expiration
|
|
1187
1318
|
if isinstance(expiration, CardanoSwapsSomeInt):
|
|
1188
|
-
deadline =
|
|
1319
|
+
deadline = min(
|
|
1320
|
+
posix_ms_to_slot(expiration.value),
|
|
1321
|
+
tx_builder.context.last_block_slot + _FILL_VALIDITY_SLOTS,
|
|
1322
|
+
)
|
|
1189
1323
|
if tx_builder.ttl is None or tx_builder.ttl > deadline:
|
|
1190
1324
|
tx_builder.ttl = deadline
|
|
1191
1325
|
# No witness datum: the order UTxO carries its SwapDatum inline (CS requires
|
|
@@ -1199,10 +1333,11 @@ class _CardanoSwapsOneWayOrderState(AbstractOrderState):
|
|
|
1199
1333
|
# and ``offer_taken = offer_in - offer_out`` from this output — there is
|
|
1200
1334
|
# no separate maker payment; the maker collects the accumulated ask on
|
|
1201
1335
|
# CLOSE. The datum is identical to the input EXCEPT prev_input = consumed
|
|
1202
|
-
# TxOutRef.
|
|
1336
|
+
# TxOutRef, in the output-reference shape this contract's validator reads.
|
|
1203
1337
|
cont_datum = self.order_datum.continuation_datum(
|
|
1204
1338
|
bytes.fromhex(self.tx_hash),
|
|
1205
1339
|
self.tx_index,
|
|
1340
|
+
contract=self.CONTRACT,
|
|
1206
1341
|
)
|
|
1207
1342
|
|
|
1208
1343
|
# Continuing value = consumed value, less the offer taken, plus the ask
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/backend/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/cswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/dano.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/minswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/muesli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/splash.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/sundae.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/core/base.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/core/errors.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/axo.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/djed.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py
RENAMED
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/__init__.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/markets.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/math.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/plutus.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/rates.py
RENAMED
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{charli3_dendrite-1.6.0.dev1 → charli3_dendrite-1.6.1.dev0}/src/charli3_dendrite/lending/units.py
RENAMED
|
File without changes
|
|
File without changes
|