charli3_dendrite 1.5.20.dev0__tar.gz → 1.5.21.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.
Files changed (155) hide show
  1. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/PKG-INFO +1 -1
  2. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/pyproject.toml +2 -2
  3. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/__init__.py +1 -0
  4. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/cardanoswaps.py +244 -59
  5. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/LICENSE +0 -0
  6. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/README.md +0 -0
  7. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/__init__.py +0 -0
  8. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/backend_base.py +0 -0
  9. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/blockfrost/__init__.py +0 -0
  10. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/blockfrost/models.py +0 -0
  11. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/dbsync/__init__.py +0 -0
  12. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/dbsync/models.py +0 -0
  13. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/ogmios_kupo/__init__.py +0 -0
  14. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/ogmios_kupo/models.py +0 -0
  15. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/backend/utils.py +0 -0
  16. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dataclasses/__init__.py +0 -0
  17. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dataclasses/datums.py +0 -0
  18. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dataclasses/models.py +0 -0
  19. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/__init__.py +0 -0
  20. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/__init__.py +0 -0
  21. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/amm_base.py +0 -0
  22. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/amm_types.py +0 -0
  23. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/cswap.py +0 -0
  24. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/dano.py +0 -0
  25. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/minswap.py +0 -0
  26. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/muesli.py +0 -0
  27. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/multi_asset.py +0 -0
  28. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/spectrum.py +0 -0
  29. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/splash.py +0 -0
  30. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/sundae.py +0 -0
  31. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4.py +0 -0
  32. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4_deployments.json +0 -0
  33. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/sundae_v4_stableswap_math.py +0 -0
  34. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/vyfi.py +0 -0
  35. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/amm/wingriders.py +0 -0
  36. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/core/__init__.py +0 -0
  37. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/core/base.py +0 -0
  38. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/core/errors.py +0 -0
  39. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/__init__.py +0 -0
  40. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/axo.py +0 -0
  41. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/chadswap.py +0 -0
  42. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/djed.py +0 -0
  43. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/geniusyield.py +0 -0
  44. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/ob_base.py +0 -0
  45. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/dexs/ob/saturnswap.py +0 -0
  46. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/__init__.py +0 -0
  47. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/base.py +0 -0
  48. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/__init__.py +0 -0
  49. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/constants.py +0 -0
  50. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/datums.py +0 -0
  51. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/loader.py +0 -0
  52. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/market.py +0 -0
  53. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/math.py +0 -0
  54. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/__init__.py +0 -0
  55. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator.py +0 -0
  56. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/aggregator_datums.py +0 -0
  57. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/deployments.py +0 -0
  58. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/forward.py +0 -0
  59. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/leaves.py +0 -0
  60. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/locator.py +0 -0
  61. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/lp_pricing.py +0 -0
  62. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/recipes.json +0 -0
  63. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/redeemer.py +0 -0
  64. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/reproduce.py +0 -0
  65. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/oracles/structured_datums.py +0 -0
  66. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/state.py +0 -0
  67. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/__init__.py +0 -0
  68. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/_common.py +0 -0
  69. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/build.py +0 -0
  70. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/builder.py +0 -0
  71. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/context.py +0 -0
  72. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/create_loan.py +0 -0
  73. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/datum_synth.py +0 -0
  74. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/increase_loan.py +0 -0
  75. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/loan_ids.py +0 -0
  76. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/modify_collateral.py +0 -0
  77. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_redeemer.py +0 -0
  78. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/oracle_synth.py +0 -0
  79. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/redeemers.py +0 -0
  80. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/repay.py +0 -0
  81. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/topup_withdraw.py +0 -0
  82. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/danogo/transactions/verify.py +0 -0
  83. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/__init__.py +0 -0
  84. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/constants.py +0 -0
  85. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/datums.py +0 -0
  86. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/loader.py +0 -0
  87. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/market.py +0 -0
  88. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/math.py +0 -0
  89. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/__init__.py +0 -0
  90. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/feeds.py +0 -0
  91. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/fluid_api.py +0 -0
  92. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/oracles/witness.py +0 -0
  93. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/state.py +0 -0
  94. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/__init__.py +0 -0
  95. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/_common.py +0 -0
  96. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow.py +0 -0
  97. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/borrow_terms.py +0 -0
  98. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/builder.py +0 -0
  99. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/change_collateral.py +0 -0
  100. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/context.py +0 -0
  101. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/datum_synth.py +0 -0
  102. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/lend.py +0 -0
  103. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/pool.py +0 -0
  104. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/recast.py +0 -0
  105. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/redeemers.py +0 -0
  106. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/repay.py +0 -0
  107. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/request.py +0 -0
  108. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/resolve.py +0 -0
  109. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens/transactions/utxos.py +0 -0
  110. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/__init__.py +0 -0
  111. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/constants.py +0 -0
  112. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/datums.py +0 -0
  113. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/indexing.py +0 -0
  114. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/loader.py +0 -0
  115. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/market.py +0 -0
  116. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/rates.py +0 -0
  117. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/state.py +0 -0
  118. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/__init__.py +0 -0
  119. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/borrow.py +0 -0
  120. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/builder.py +0 -0
  121. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/change_collateral.py +0 -0
  122. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/claim.py +0 -0
  123. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/common.py +0 -0
  124. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/lender_bond.py +0 -0
  125. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/loan_action.py +0 -0
  126. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/loan_terms.py +0 -0
  127. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/oracle.py +0 -0
  128. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_action.py +0 -0
  129. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_cancel.py +0 -0
  130. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_create.py +0 -0
  131. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_edit.py +0 -0
  132. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/pool_terms.py +0 -0
  133. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/recast.py +0 -0
  134. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/redeemers.py +0 -0
  135. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/repay.py +0 -0
  136. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/fluidtokens_v4/transactions/resolve.py +0 -0
  137. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/markets.py +0 -0
  138. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/math.py +0 -0
  139. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/normalized.py +0 -0
  140. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/__init__.py +0 -0
  141. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/charli3.py +0 -0
  142. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/dex_pooled.py +0 -0
  143. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/fluid.py +0 -0
  144. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/models.py +0 -0
  145. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/orcfax.py +0 -0
  146. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/oracles/qtoken.py +0 -0
  147. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/plutus.py +0 -0
  148. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/rates.py +0 -0
  149. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/registry.py +0 -0
  150. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/transactions/__init__.py +0 -0
  151. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/transactions/base.py +0 -0
  152. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/transactions/infra.py +0 -0
  153. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/transactions/snapshot.py +0 -0
  154. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/lending/units.py +0 -0
  155. {charli3_dendrite-1.5.20.dev0 → charli3_dendrite-1.5.21.dev0}/src/charli3_dendrite/utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: charli3_dendrite
3
- Version: 1.5.20.dev0
3
+ Version: 1.5.21.dev0
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Elder Millenial
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "charli3_dendrite"
3
- version = "1.5.20-dev0"
3
+ version = "1.5.21-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.5.20-dev0"
53
+ current_version = "1.5.21-dev0"
54
54
  parse = """(?x)
55
55
  (?P<major>\\d+)\\.
56
56
  (?P<minor>\\d+)\\.
@@ -26,6 +26,7 @@ from charli3_dendrite.dexs.amm.wingriders import WingRidersCPPState
26
26
  from charli3_dendrite.dexs.amm.wingriders import WingRidersSSPState
27
27
  from charli3_dendrite.dexs.amm.wingriders import WingRidersV2CPPState
28
28
  from charli3_dendrite.dexs.amm.wingriders import WingRidersV2SSPState
29
+ from charli3_dendrite.dexs.ob.cardanoswaps import CardanoSwapsLegacyOrderState
29
30
  from charli3_dendrite.dexs.ob.cardanoswaps import CardanoSwapsOrderBook
30
31
  from charli3_dendrite.dexs.ob.cardanoswaps import CardanoSwapsOrderState
31
32
  from charli3_dendrite.dexs.ob.chadswap import ChadSwapOrderBook
@@ -17,6 +17,8 @@ import time
17
17
  from dataclasses import dataclass
18
18
  from decimal import Decimal
19
19
  from types import SimpleNamespace
20
+ from typing import Callable
21
+ from typing import ClassVar
20
22
  from typing import Union
21
23
  from typing import cast
22
24
 
@@ -25,6 +27,7 @@ from pycardano import ChainContext
25
27
  from pycardano import Network
26
28
  from pycardano import PlutusData
27
29
  from pycardano import PlutusV2Script
30
+ from pycardano import PlutusV3Script
28
31
  from pycardano import Redeemer
29
32
  from pycardano import ScriptHash
30
33
  from pycardano import TransactionBuilder
@@ -51,24 +54,23 @@ from charli3_dendrite.dexs.ob.ob_base import OrderBookOrder
51
54
  from charli3_dendrite.dexs.ob.ob_base import SellOrderBook
52
55
  from charli3_dendrite.dexs.ob.ob_base import fill_within_budget
53
56
  from charli3_dendrite.utility import asset_to_value
57
+ from charli3_dendrite.utility import posix_ms_to_slot
54
58
 
55
- # v2 one-way beacon minting policy id (also stored verbatim in the datum's
56
- # ``beacon_id`` field).
57
- BEACON_POLICY_ID = "c4d7d117d9ebcde6db28db40837ff2b1401e9eaaa6eecea9e070e209"
59
+ # The pre-release v2 one-way build (Plutus V2), compiled from the protocol source
60
+ # before its Plutus V3 release. Kept so swaps resting on it can be read and
61
+ # closed; it creates and fills nothing.
62
+ LEGACY_BEACON_POLICY_ID = "c4d7d117d9ebcde6db28db40837ff2b1401e9eaaa6eecea9e070e209"
63
+ LEGACY_SWAP_VALIDATOR_HASH = "1d6cff26bcab91d2061aad0bd259cbb7d76d25ced2eeaed5926a42ad"
64
+ LEGACY_SWAP_VALIDATOR_SCRIPT_HEX = "591193010000323232323232323223232322322533300832323232323253233300f300c007132323232323232323253330183016301a3754010264a666032602c60366ea80044c94ccc068cc03d241225374616b696e672063726564656e7469616c20646964206e6f7420617070726f7665003330103020301d375460406042603a6ea8c080c074dd5001002001899807a4812c426561636f6e20736372697074206e6f74206578656375746564206173206d696e74696e6720706f6c6963790033301a3232533302000114a22940c94ccc070c068c078dd50008a5eb7bdb1804dd59811180f9baa001323300100100222533302100114c0103d87a8000132323253330203371e00e6eb8c08800c4c050cc094dd3000a5eb804cc014014008dd598110011812801181180099198008008039129998100008a5eb7bdb1804c8c8c8c94ccc080c048008400c4cc094cdd81ba9002374c0026600c00c0066eacc08800cdd7181000118120011811000a504a22940dd7180f980e1baa018163300b006301e301b37540102c6eb0c074c078c078008dd5980e000980e180e0011bab301a001301a301a301a301a0023758603000260286ea8c05c008c058c05c004c048dd50040a9998079806803899191919191919299980b180a180c1baa0061325333017301430193754002264a6660306601a921225374616b696e672063726564656e7469616c20646964206e6f7420617070726f76650033300e301e301b3754603c603e60366ea8c078c06cdd5001002001899806a4812c426561636f6e20736372697074206e6f74206578656375746564206173207374616b696e6720736372697074003300f004300c3301d3374a90011980e9ba90014bd7025eb805281bae301d301a375402c2c66012008603860326ea801858dd6180d980e180e0011bab301a001301a301a301a301a301a301a0023758603000260286ea8c05c008c058c05c004c048dd5004099191919191919299980b180a180c1baa0061323253330183015301a37540022646464646464646464646666666666666646464444444444444464646464a66606c6464a666070606c60746ea800452889919299981d181b981e1baa003132533303b3038303d3754006266030920127696e76616c69642d686572656166746572206d757374206265203c3d2065787069726174696f6e00337126eb4c104c0f8dd50018008011bad3040303d37540060022a66074920126696e76616c69642d68657265616674657220726571756972656420627574206e6f74207365740016303b00230390013376000a02026464646464646464a66607ca66607ca66607c606002829444c0c004452889980da49194164612063616e206f6e6c79206265206465706f73697465640033712900019b810030061533303e33033491264661696c3a206f666665725f74616b656e202a207072696365203c3d2061736b5f676976656e003371266e08004028cdc1001004899819a4812b5468652061736b2061737365742063616e6e6f742062652074616b656e2066726f6d207468652073776170003371290000010a5016337026eb4c10c01cdd6982180219b81375a60840046eb4c108014dd6982098210009820800991980080081311299981f8008a9981e248123436f72726573706f6e64696e672073776170206f7574707574206e6f7420666f756e6400161323232323253330403375e01c608c608e0042a66608066ebc06400c4ccccccccc07000406005c05805405004c0480444cc01c01c0144cc01c01c014dd5982280098228011821800981f9baa30420023042001375a607c607e002607c00266666666602402201c01a01801601401201000e2c6eb4c0ecc0f0008dd6981d000981b1baa0033374a90021981b98131981b9ba900a3303737520126606e6ea4020cc0dcdd48039981b9ba900633037375200a6606e6ea4010cc0dcdd48019981b8011981b98131981b80e25eb80cc0dc0052f5c097ae0222222222323232323232325333034300730363754607460760042660726ea0014cc0e4dd40019981c9ba80014bd700a9981aa49165554784f206861732077726f6e6720626561636f6e730016375a607200260720046eb4c0dc004c0dc008dd6981a80099980600525eb84101000081010000810100008103d879800011191919191919191929919981c980080a099191919299981e9808181f9baa30430041533303d0021533303d0031330423750016660846ea0024cc108dd40039982119981ea514c103d87a80004c0103d87980004bd7000080080088069807181e9baa30413042002300d303c375460806082608200266602e01097ae10103d87980008103d87980008103d8798000111919191929919199820980100d899823199820800a6103d87a80004c0103d8798000330463330410044c0103d87a80004c0103d8798000330463330410034c0103d87a80004c0103d87980004bd700a999820980100c09982319982080326103d87a80004c0103d8798000330463330410014c0103d87a80004c0103d8798000330463330410034c0103d87a80004c0103d87980004bd700a999820980100a89982319982080326103d87a80004c0103d8798000330463330410044c0103d87a80004c0103d8798000330463330410014c0103d87a80004c0103d87980004bd700a998212481165554784f206861732077726f6e6720626561636f6e730016303e375a608600e6e3cdd71820803180898201baa304430450023010303f375460860026086004601c607a6ea8c10400454c8c8c8c8ccc0f4c0bc0344c94ccc0f8c0ecc100dd50008992991998200028998229ba830070023304537500186608a6ea0004cc114ccc100025300103d87a80004c0103d87980004bd700a9998200020998229ba800e330453750600c0046608a6ea0004cc114ccc10002530103d87a80004c0103d87980004bd700998229ba800e3304537500186608a6ea0004cc114ccc100025300103d87a80004c0103d87980004bd7019b80009001375a608860826ea800458c8cc004004034894ccc10c004530103d87a8000132323253330423034375c60880062606c6608e6ea00052f5c026600a00a0046eb4c110008c11c008c11400454ccc0f54ccc0f400840045280a9998208060a9981f249284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161325333042001132323253330413371e00203226608c6ea0c020008cc118dd4006998231ba800b3304633304100a4c0103d87a80004c0103d87980004bd700a99982099b8f001016133046375001e6608c6ea0c01c008cc118dd400599823199820805260103d87a80004c0103d87980004bd700a998212481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c60840046eb4c108004c11003454ccc108c1140044c8c8c8c8c8c94ccc110cdc780180e0a99982219b8f00101913304937506016008660926ea0c028008cc124dd400719824999822006a6103d87a80004c0103d87980004bd700a99822a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153330443371e0060322a66608866e3c0040704cc124dd41805801198249ba8300a00433049375001c6609266608801a980103d87a80004c0103d87980004bd700a99822a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533045491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c608a0086eb4c11400cdd718218019bad30430023045002304400d153303f4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016304400c1533303d0021533304100c153303e4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333041304400c13232533303f3371e6eb8c10400805c4cc110dd41803000998221ba800b3304437500126608866607e010980103d87a80004c0103d87980004bd700a998202481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a608200260860182a6607c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533303d0011533304100c153303e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333041304400c13232533303f3371e6eb8c1040080504cc110dd4006998221ba830050013304437500126608866607e010980103d87a80004c0103d87980004bd700a998202481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a608200260860182a6607c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153303e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001630040123003014370000c6e0001cdc78041805181c9baa303d303e002375a607800260780046eb4c0e8004c0e8010dd6981c0019bab3034003375c60640046e2120002253330253330250014a094454cc098008584004888c8ccc00400401000c8894ccc0b000840044ccc00c00cc0bc008cc010c0b8008004dd59814181480519192999812181118131baa0011301833029302a3027375400297ae014c103d87a800030293026375460526054604c6ea8038c090dd500698140051bae3028009375c60500106eb8c0a001cdd718140031bae3028005375c60500086eb8c0a000cdd71814001181400098141814981480098140009813800981300098128009812000981180098110009810800980e1baa018301b3754603c603e60366ea8c078c06cdd50008b19805002800980e180c9baa00616301b301c301c301c301c301c00237586034002603460340046eb0c060004c050dd5180b801180b180b80098091baa008371e9110022323300100100322533301500114c0103d87a80001323253330133375e6032602c6ea80080144c01ccc0600092f5c02660080080026032004602e0026e95200022533300d33300d0014a094454cc03800840044004888c8c94ccc03cc034004528899299980818068010992999808980718099baa0011325333012300f30143754002264646600200201044a66603200229404c94ccc058cdc79bae301c00200414a226600600600260380026eb8c060c054dd5000801980b980a1baa00100230163013375400600226600c008602a60246ea8008c040dd50009809980a18081baa00322323300100100322533301100114a0264a66601c66ebc010c040c050008528899801801800980a00098051baa00314984d958c94ccc01cc01000454ccc02cc028dd50010a4c2c2a66600e600a0022a66601660146ea800852616153330073370e90020008a99980598051baa00214985858c020dd5000a999802180098031baa003132323232323232323232323232323232323232323232533301e30210021323232498c94ccc074c0680044c8c94ccc08cc09800852616375a604800260406ea801054ccc074c06c00454ccc084c080dd50020a4c2c2c603c6ea800cc94ccc070c0640044c8c94ccc088c0940084c926533301e301b30203754002264646464a66604c6052004264932999811180f98121baa003132325333028302b002149858dd7181480098129baa0031616375a604e002604e004604a00260426ea80045858c08c004c07cdd50028a99980e180d0008a999810180f9baa00514985858c074dd5002299980d180b980e1baa00513232323253330223025002149858dd6981180098118011bad3021001301d375400a2c2c603e002603e004603a002603a004603600260360046eb8c064004c064008dd7180b800980b8011bae30150013015002375c602600260260046eb8c044004c044008dd7180780098078011bae300d001300d002375c6016002600e6ea800c58dc3a40006e1d20025734ae7155ceaab9e5573eae815d0aba201" # noqa: E501
65
+ LEGACY_BEACON_POLICY_SCRIPT_HEX = "5911ed010000332323232323232322322323232322533300932533300a30060011323232533300d3370e900318079baa0011533300d3009300f3754602660206ea80045288010011809180998079baa004153300c4913c546869732072656465656d65722063616e206f6e6c79206265207573656420746f2072656769737465722074686520626561636f6e207363726970740016300c37540042646464646464646464a666026601c0142646464666600802864a66602e602600226eb8c074c068dd5001899299980c1809001099299980c980a980d9baa001132533301a3015301c375400226eb8c080c074dd5000801980f980e1baa001002301e301b37540080022a6603092012852656465656d6572206e6f7420757365642077697468206d696e74696e6720657865637574696f6e00163018375400460166038603a603a603a603a603a0026eb0c070004c070c070c060dd5180d801180d180d800980b1baa00b13232323333004014325333017301130193754006264a666030602860346ea80044c94ccc064c050c06cdd500089bae301f301c3754002006603c60366ea8004008c074c068dd50018008a9980ba4812852656465656d6572206e6f7420757365642077697468207374616b696e6720657865637574696f6e0016300b301c301d301d301d301d301d001375860380026038603860306ea8c06c008c068c06c004c058dd5005911119199800800801251222533301d00210011333003003302000232323232323232325333025001100913253330260011533023491364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e730016132533302700115330244901364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e73001615333027302a0011323232533302600e153330263301632330160014911a204441707020616464726573732077697468207374616b696e67003301549114426561636f6e206d75737420676f20746f2061200049010053330263375e01066e9520023302b375202897ae01533302630223028375400e29445280a50132323232323232323232323232323232323232323232323232533303f32325333041303c3043375400229444c8c94ccc10cc0fcc114dd50018992999822182018231baa00315333044330354912745787069726174696f6e206d757374206265203e3d20696e76616c69642d68657265616674657200337126eb4c128c11cdd500180089981aa481234d7573742075736520312d6d696e2065787069726174696f6e20696e74657276616c730030403370c002906054838a50002375a6092608c6ea800c00454cc10d240126696e76616c69642d68657265616674657220726571756972656420627574206e6f742073657400163044002304200133760608a608c608c0120562a66607e6605e92010f57726f6e6720626561636f6e5f6964003371e0580302a66607e6605e9201274f666665722061737365742063616e6e6f742062652073616d652061732061736b2061737365740033303f3375e01000e941288a99981f99817a491157726f6e6720706169725f626561636f6e003371e02c64646464646460706464660760020086607400200466072a66608a601200a291010100001005375c6096609800ca6660886010004291010100001002375c609260940046eb8c120004c110dd50049bae3046001304237540102a66607e6605e9211257726f6e67206f666665725f626561636f6e003371e020606466066911010100330330140121533303f3302f49011057726f6e672061736b5f626561636f6e003371e0146064660669110102003303300e00c1533303f3302f49011e737761705f70726963652064656e6f6d696e61746f72206e6f74203e20300030020041533303f3302f49011c737761705f7072696365206e756d657261746f72206e6f74203e203000300200513371290000008a5014a029405280a5014a0294058dd698221919191919192999822180398231baa304a304b002133049375000a660926ea000ccc124dd4000a5eb8054cc115241165554784f206861732077726f6e6720626561636f6e730016375a609200260920046eb4c11c004c11c008dd69822800999818011a5eb84101000081010000810100008103d8798000111919191919191919299199824980081b0991919192999826980818279baa30530041533304d0021533304d0031330523750016660a46ea0024cc148dd400399829199826a514c103d87a80004c0103d87980004bd700008008008806980718269baa30513052002300d304c375460a060a260a200266607601097ae10103d87980008103d87980008103d8798000111919191929919199828980101409982b199828800a6103d87a80004c0103d8798000330563330510044c0103d87a80004c0103d8798000330563330510034c0103d87a80004c0103d87980004bd700a999828980101109982b19982880326103d87a80004c0103d8798000330563330510014c0103d87a80004c0103d8798000330563330510034c0103d87a80004c0103d87980004bd700a999828980100e09982b19982880326103d87a80004c0103d8798000330563330510044c0103d87a80004c0103d8798000330563330510014c0103d87a80004c0103d87980004bd700a998292481165554784f206861732077726f6e6720626561636f6e730016304b375a60a600e6e3cdd71828803180898281baa305430550023010304f375460a600260a6004601c609a6ea8c14400454c8c8c8c8ccc134c0440344c94ccc138c128c140dd500089929919982800289982a9ba83007002330553750018660aa6ea0004cc154ccc140025300103d87a80004c0103d87980004bd700a99982800209982a9ba800e330553750600c004660aa6ea0004cc154ccc14002530103d87a80004c0103d87980004bd7009982a9ba800e330553750018660aa6ea0004cc154ccc140025300103d87a80004c0103d87980004bd7019b80009001375a60a860a26ea800458c8cc004004034894ccc14c004530103d87a8000132323253330523016375c60a800626090660ae6ea00052f5c026600a00a0046eb4c150008c15c008c15400454ccc1354ccc13400840045280a9998288060a99827249284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161325333052001132323253330513371e0020482660ac6ea0c020008cc158dd40069982b1ba800b3305633305100a4c0103d87a80004c0103d87980004bd700a99982899b8f00101e133056375001e660ac6ea0c01c008cc158dd40059982b199828805260103d87a80004c0103d87980004bd700a998292481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c60a40046eb4c148004c15003454ccc148c1540044c8c8c8c8c8c94ccc150cdc78018138a99982a19b8f00102113305937506016008660b26ea0c028008cc164dd40071982c99982a006a6103d87a80004c0103d87980004bd700a9982aa481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153330543371e0060422a6660a866e3c00409c4cc164dd418058011982c9ba8300a00433059375001c660b26660a801a980103d87a80004c0103d87980004bd700a9982aa481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533055491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c60aa0086eb4c15400cdd718298019bad30530023055002305400d153304f4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016305400c1533304d0021533305100c153304e4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333051305400c13232533304f3371e6eb8c1440080884cc150dd418030009982a1ba800b330543750012660a866609e010980103d87a80004c0103d87980004bd700a998282481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a60a200260a60182a6609c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533304d0011533305100c153304e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333051305400c13232533304f3371e6eb8c1440080704cc150dd40069982a1ba83005001330543750012660a866609e010980103d87a80004c0103d87980004bd700a998282481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a60a200260a60182a6609c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153304e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016300401b3003020370000c6e0001cdc7804180518249baa304d304e002375a609800260980046eb4c128004c128010dd698240019bab3044003375c60840046e212000371e91100375a608260840046eb4c100004c0f0dd5181f80198171981e9ba90073303d375200a97ae0302d3303c3752018660786ea40292f5c0607a0046eb8c0ec004c0ec008dd7181c800981c8011bae30370013037002375c606a002606a0046eb8c0cc004c0cc008dd7181880098188011bae302f001302f002375c605a00260526ea94ccc098c080c0a0dd5005099190012999813981198149baa001132323232323232323232323232323232323232323232533304130440021323232498c94ccc100c0f00044c8c94ccc118c12400852616375a608e00260866ea801054ccc100c0ec00454ccc110c10cdd50020a4c2c2c60826ea800cc94ccc0fcc0ec0044c8c94ccc114c1200084c9265333041303d30433754002264646464a6660926098004264932999822982098239baa00313232533304b304e002149858dd7182600098241baa0031616375a60940026094004609000260886ea80045858c118004c108dd50028a99981f981d0008a99982198211baa00514985858c100dd5002299981e981c981f9baa00513232323253330453048002149858dd6982300098230011bad30440013040375400a2c2c6084002608400460800026080004607c002607c0046eb8c0f0004c0f0008dd7181d000981d0011bae30380013038002375c606c002606c0046eb8c0d0004c0d0008dd7181900098190011bae30300013030002375c605c00260546ea800458c0b0c0a4dd50050a99813a48125416c6c207377617020646174756d73206d75737420626520696e6c696e6520646174756d73001614a02940c0ac00cc0a800cc0a400c54cc0912401364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e73001630290013028001325333021301c30233754002297adef6c6013756604e60486ea8004c8cc004004018894ccc098004530103d87a8000132323253330253371e0246eb8c09c00c4c06ccc0a8dd3000a5eb804cc014014008dd598138011815001181400098129813001181200098101baa30230043022302300237566042002604200260386ea8c07c00888cdcb001000912999809199809000a504a22a660260042002200244a666022666022002941288a998090010b080091119199800800802001911299980c00108008999801801980d80119802180d00100091b92001223371400400246464a66601c601260206ea80044c010cc04cc050c044dd5000a5eb80530103d87a80003013301037546026602860206ea8008c038dd50009ba548000c02cdd50030a4c26cac64a66601060080022a66601860166ea8014526161533300830030011533300c300b375400a2930b0a99980418010008a99980618059baa00514985858c024dd50021b8748010dc3a40046e1d2000375c002ae695ce2ab9d5573caae7d5d02ba157449811e581c1d6cff26bcab91d2061aad0bd259cbb7d76d25ced2eeaed5926a42ad0001" # noqa: E501
58
66
 
59
- # v2 one-way swap spending validator hash.
60
- SWAP_VALIDATOR_HASH = "1d6cff26bcab91d2061aad0bd259cbb7d76d25ced2eeaed5926a42ad"
61
-
62
- # Compiled Plutus V2 scripts, inlined verbatim. The swap validator is
63
- # un-parameterized; the beacon minting policy is parameterized by ``dapp_hash``
64
- # (= the swap validator hash), applied here via the aiken blueprint, so
65
- # ``PlutusV2Script(bytes.fromhex(...))`` hashes to the constants above (swap
66
- # validator -> SWAP_VALIDATOR_HASH, beacon policy -> BEACON_POLICY_ID). These are
67
- # attached to the witness set by default; a builder caller may instead supply an
68
- # on-chain reference-script UTxO per script (whose output carries the matching
69
- # script) to keep the script off the witness set -- see the build_* methods.
70
- SWAP_VALIDATOR_SCRIPT_HEX = "591193010000323232323232323223232322322533300832323232323253233300f300c007132323232323232323253330183016301a3754010264a666032602c60366ea80044c94ccc068cc03d241225374616b696e672063726564656e7469616c20646964206e6f7420617070726f7665003330103020301d375460406042603a6ea8c080c074dd5001002001899807a4812c426561636f6e20736372697074206e6f74206578656375746564206173206d696e74696e6720706f6c6963790033301a3232533302000114a22940c94ccc070c068c078dd50008a5eb7bdb1804dd59811180f9baa001323300100100222533302100114c0103d87a8000132323253330203371e00e6eb8c08800c4c050cc094dd3000a5eb804cc014014008dd598110011812801181180099198008008039129998100008a5eb7bdb1804c8c8c8c94ccc080c048008400c4cc094cdd81ba9002374c0026600c00c0066eacc08800cdd7181000118120011811000a504a22940dd7180f980e1baa018163300b006301e301b37540102c6eb0c074c078c078008dd5980e000980e180e0011bab301a001301a301a301a301a0023758603000260286ea8c05c008c058c05c004c048dd50040a9998079806803899191919191919299980b180a180c1baa0061325333017301430193754002264a6660306601a921225374616b696e672063726564656e7469616c20646964206e6f7420617070726f76650033300e301e301b3754603c603e60366ea8c078c06cdd5001002001899806a4812c426561636f6e20736372697074206e6f74206578656375746564206173207374616b696e6720736372697074003300f004300c3301d3374a90011980e9ba90014bd7025eb805281bae301d301a375402c2c66012008603860326ea801858dd6180d980e180e0011bab301a001301a301a301a301a301a301a0023758603000260286ea8c05c008c058c05c004c048dd5004099191919191919299980b180a180c1baa0061323253330183015301a37540022646464646464646464646666666666666646464444444444444464646464a66606c6464a666070606c60746ea800452889919299981d181b981e1baa003132533303b3038303d3754006266030920127696e76616c69642d686572656166746572206d757374206265203c3d2065787069726174696f6e00337126eb4c104c0f8dd50018008011bad3040303d37540060022a66074920126696e76616c69642d68657265616674657220726571756972656420627574206e6f74207365740016303b00230390013376000a02026464646464646464a66607ca66607ca66607c606002829444c0c004452889980da49194164612063616e206f6e6c79206265206465706f73697465640033712900019b810030061533303e33033491264661696c3a206f666665725f74616b656e202a207072696365203c3d2061736b5f676976656e003371266e08004028cdc1001004899819a4812b5468652061736b2061737365742063616e6e6f742062652074616b656e2066726f6d207468652073776170003371290000010a5016337026eb4c10c01cdd6982180219b81375a60840046eb4c108014dd6982098210009820800991980080081311299981f8008a9981e248123436f72726573706f6e64696e672073776170206f7574707574206e6f7420666f756e6400161323232323253330403375e01c608c608e0042a66608066ebc06400c4ccccccccc07000406005c05805405004c0480444cc01c01c0144cc01c01c014dd5982280098228011821800981f9baa30420023042001375a607c607e002607c00266666666602402201c01a01801601401201000e2c6eb4c0ecc0f0008dd6981d000981b1baa0033374a90021981b98131981b9ba900a3303737520126606e6ea4020cc0dcdd48039981b9ba900633037375200a6606e6ea4010cc0dcdd48019981b8011981b98131981b80e25eb80cc0dc0052f5c097ae0222222222323232323232325333034300730363754607460760042660726ea0014cc0e4dd40019981c9ba80014bd700a9981aa49165554784f206861732077726f6e6720626561636f6e730016375a607200260720046eb4c0dc004c0dc008dd6981a80099980600525eb84101000081010000810100008103d879800011191919191919191929919981c980080a099191919299981e9808181f9baa30430041533303d0021533303d0031330423750016660846ea0024cc108dd40039982119981ea514c103d87a80004c0103d87980004bd7000080080088069807181e9baa30413042002300d303c375460806082608200266602e01097ae10103d87980008103d87980008103d8798000111919191929919199820980100d899823199820800a6103d87a80004c0103d8798000330463330410044c0103d87a80004c0103d8798000330463330410034c0103d87a80004c0103d87980004bd700a999820980100c09982319982080326103d87a80004c0103d8798000330463330410014c0103d87a80004c0103d8798000330463330410034c0103d87a80004c0103d87980004bd700a999820980100a89982319982080326103d87a80004c0103d8798000330463330410044c0103d87a80004c0103d8798000330463330410014c0103d87a80004c0103d87980004bd700a998212481165554784f206861732077726f6e6720626561636f6e730016303e375a608600e6e3cdd71820803180898201baa304430450023010303f375460860026086004601c607a6ea8c10400454c8c8c8c8ccc0f4c0bc0344c94ccc0f8c0ecc100dd50008992991998200028998229ba830070023304537500186608a6ea0004cc114ccc100025300103d87a80004c0103d87980004bd700a9998200020998229ba800e330453750600c0046608a6ea0004cc114ccc10002530103d87a80004c0103d87980004bd700998229ba800e3304537500186608a6ea0004cc114ccc100025300103d87a80004c0103d87980004bd7019b80009001375a608860826ea800458c8cc004004034894ccc10c004530103d87a8000132323253330423034375c60880062606c6608e6ea00052f5c026600a00a0046eb4c110008c11c008c11400454ccc0f54ccc0f400840045280a9998208060a9981f249284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161325333042001132323253330413371e00203226608c6ea0c020008cc118dd4006998231ba800b3304633304100a4c0103d87a80004c0103d87980004bd700a99982099b8f001016133046375001e6608c6ea0c01c008cc118dd400599823199820805260103d87a80004c0103d87980004bd700a998212481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c60840046eb4c108004c11003454ccc108c1140044c8c8c8c8c8c94ccc110cdc780180e0a99982219b8f00101913304937506016008660926ea0c028008cc124dd400719824999822006a6103d87a80004c0103d87980004bd700a99822a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153330443371e0060322a66608866e3c0040704cc124dd41805801198249ba8300a00433049375001c6609266608801a980103d87a80004c0103d87980004bd700a99822a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533045491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c608a0086eb4c11400cdd718218019bad30430023045002304400d153303f4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016304400c1533303d0021533304100c153303e4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333041304400c13232533303f3371e6eb8c10400805c4cc110dd41803000998221ba800b3304437500126608866607e010980103d87a80004c0103d87980004bd700a998202481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a608200260860182a6607c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533303d0011533304100c153303e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333041304400c13232533303f3371e6eb8c1040080504cc110dd4006998221ba830050013304437500126608866607e010980103d87a80004c0103d87980004bd700a998202481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a608200260860182a6607c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153303e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001630040123003014370000c6e0001cdc78041805181c9baa303d303e002375a607800260780046eb4c0e8004c0e8010dd6981c0019bab3034003375c60640046e2120002253330253330250014a094454cc098008584004888c8ccc00400401000c8894ccc0b000840044ccc00c00cc0bc008cc010c0b8008004dd59814181480519192999812181118131baa0011301833029302a3027375400297ae014c103d87a800030293026375460526054604c6ea8038c090dd500698140051bae3028009375c60500106eb8c0a001cdd718140031bae3028005375c60500086eb8c0a000cdd71814001181400098141814981480098140009813800981300098128009812000981180098110009810800980e1baa018301b3754603c603e60366ea8c078c06cdd50008b19805002800980e180c9baa00616301b301c301c301c301c301c00237586034002603460340046eb0c060004c050dd5180b801180b180b80098091baa008371e9110022323300100100322533301500114c0103d87a80001323253330133375e6032602c6ea80080144c01ccc0600092f5c02660080080026032004602e0026e95200022533300d33300d0014a094454cc03800840044004888c8c94ccc03cc034004528899299980818068010992999808980718099baa0011325333012300f30143754002264646600200201044a66603200229404c94ccc058cdc79bae301c00200414a226600600600260380026eb8c060c054dd5000801980b980a1baa00100230163013375400600226600c008602a60246ea8008c040dd50009809980a18081baa00322323300100100322533301100114a0264a66601c66ebc010c040c050008528899801801800980a00098051baa00314984d958c94ccc01cc01000454ccc02cc028dd50010a4c2c2a66600e600a0022a66601660146ea800852616153330073370e90020008a99980598051baa00214985858c020dd5000a999802180098031baa003132323232323232323232323232323232323232323232533301e30210021323232498c94ccc074c0680044c8c94ccc08cc09800852616375a604800260406ea801054ccc074c06c00454ccc084c080dd50020a4c2c2c603c6ea800cc94ccc070c0640044c8c94ccc088c0940084c926533301e301b30203754002264646464a66604c6052004264932999811180f98121baa003132325333028302b002149858dd7181480098129baa0031616375a604e002604e004604a00260426ea80045858c08c004c07cdd50028a99980e180d0008a999810180f9baa00514985858c074dd5002299980d180b980e1baa00513232323253330223025002149858dd6981180098118011bad3021001301d375400a2c2c603e002603e004603a002603a004603600260360046eb8c064004c064008dd7180b800980b8011bae30150013015002375c602600260260046eb8c044004c044008dd7180780098078011bae300d001300d002375c6016002600e6ea800c58dc3a40006e1d20025734ae7155ceaab9e5573eae815d0aba201" # noqa: E501
71
- BEACON_POLICY_SCRIPT_HEX = "5911ed010000332323232323232322322323232322533300932533300a30060011323232533300d3370e900318079baa0011533300d3009300f3754602660206ea80045288010011809180998079baa004153300c4913c546869732072656465656d65722063616e206f6e6c79206265207573656420746f2072656769737465722074686520626561636f6e207363726970740016300c37540042646464646464646464a666026601c0142646464666600802864a66602e602600226eb8c074c068dd5001899299980c1809001099299980c980a980d9baa001132533301a3015301c375400226eb8c080c074dd5000801980f980e1baa001002301e301b37540080022a6603092012852656465656d6572206e6f7420757365642077697468206d696e74696e6720657865637574696f6e00163018375400460166038603a603a603a603a603a0026eb0c070004c070c070c060dd5180d801180d180d800980b1baa00b13232323333004014325333017301130193754006264a666030602860346ea80044c94ccc064c050c06cdd500089bae301f301c3754002006603c60366ea8004008c074c068dd50018008a9980ba4812852656465656d6572206e6f7420757365642077697468207374616b696e6720657865637574696f6e0016300b301c301d301d301d301d301d001375860380026038603860306ea8c06c008c068c06c004c058dd5005911119199800800801251222533301d00210011333003003302000232323232323232325333025001100913253330260011533023491364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e730016132533302700115330244901364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e73001615333027302a0011323232533302600e153330263301632330160014911a204441707020616464726573732077697468207374616b696e67003301549114426561636f6e206d75737420676f20746f2061200049010053330263375e01066e9520023302b375202897ae01533302630223028375400e29445280a50132323232323232323232323232323232323232323232323232533303f32325333041303c3043375400229444c8c94ccc10cc0fcc114dd50018992999822182018231baa00315333044330354912745787069726174696f6e206d757374206265203e3d20696e76616c69642d68657265616674657200337126eb4c128c11cdd500180089981aa481234d7573742075736520312d6d696e2065787069726174696f6e20696e74657276616c730030403370c002906054838a50002375a6092608c6ea800c00454cc10d240126696e76616c69642d68657265616674657220726571756972656420627574206e6f742073657400163044002304200133760608a608c608c0120562a66607e6605e92010f57726f6e6720626561636f6e5f6964003371e0580302a66607e6605e9201274f666665722061737365742063616e6e6f742062652073616d652061732061736b2061737365740033303f3375e01000e941288a99981f99817a491157726f6e6720706169725f626561636f6e003371e02c64646464646460706464660760020086607400200466072a66608a601200a291010100001005375c6096609800ca6660886010004291010100001002375c609260940046eb8c120004c110dd50049bae3046001304237540102a66607e6605e9211257726f6e67206f666665725f626561636f6e003371e020606466066911010100330330140121533303f3302f49011057726f6e672061736b5f626561636f6e003371e0146064660669110102003303300e00c1533303f3302f49011e737761705f70726963652064656e6f6d696e61746f72206e6f74203e20300030020041533303f3302f49011c737761705f7072696365206e756d657261746f72206e6f74203e203000300200513371290000008a5014a029405280a5014a0294058dd698221919191919192999822180398231baa304a304b002133049375000a660926ea000ccc124dd4000a5eb8054cc115241165554784f206861732077726f6e6720626561636f6e730016375a609200260920046eb4c11c004c11c008dd69822800999818011a5eb84101000081010000810100008103d8798000111919191919191919299199824980081b0991919192999826980818279baa30530041533304d0021533304d0031330523750016660a46ea0024cc148dd400399829199826a514c103d87a80004c0103d87980004bd700008008008806980718269baa30513052002300d304c375460a060a260a200266607601097ae10103d87980008103d87980008103d8798000111919191929919199828980101409982b199828800a6103d87a80004c0103d8798000330563330510044c0103d87a80004c0103d8798000330563330510034c0103d87a80004c0103d87980004bd700a999828980101109982b19982880326103d87a80004c0103d8798000330563330510014c0103d87a80004c0103d8798000330563330510034c0103d87a80004c0103d87980004bd700a999828980100e09982b19982880326103d87a80004c0103d8798000330563330510044c0103d87a80004c0103d8798000330563330510014c0103d87a80004c0103d87980004bd700a998292481165554784f206861732077726f6e6720626561636f6e730016304b375a60a600e6e3cdd71828803180898281baa305430550023010304f375460a600260a6004601c609a6ea8c14400454c8c8c8c8ccc134c0440344c94ccc138c128c140dd500089929919982800289982a9ba83007002330553750018660aa6ea0004cc154ccc140025300103d87a80004c0103d87980004bd700a99982800209982a9ba800e330553750600c004660aa6ea0004cc154ccc14002530103d87a80004c0103d87980004bd7009982a9ba800e330553750018660aa6ea0004cc154ccc140025300103d87a80004c0103d87980004bd7019b80009001375a60a860a26ea800458c8cc004004034894ccc14c004530103d87a8000132323253330523016375c60a800626090660ae6ea00052f5c026600a00a0046eb4c150008c15c008c15400454ccc1354ccc13400840045280a9998288060a99827249284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161325333052001132323253330513371e0020482660ac6ea0c020008cc158dd40069982b1ba800b3305633305100a4c0103d87a80004c0103d87980004bd700a99982899b8f00101e133056375001e660ac6ea0c01c008cc158dd40059982b199828805260103d87a80004c0103d87980004bd700a998292481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c60a40046eb4c148004c15003454ccc148c1540044c8c8c8c8c8c94ccc150cdc78018138a99982a19b8f00102113305937506016008660b26ea0c028008cc164dd40071982c99982a006a6103d87a80004c0103d87980004bd700a9982aa481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153330543371e0060422a6660a866e3c00409c4cc164dd418058011982c9ba8300a00433059375001c660b26660a801a980103d87a80004c0103d87980004bd700a9982aa481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533055491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375c60aa0086eb4c15400cdd718298019bad30530023055002305400d153304f4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016305400c1533304d0021533305100c153304e4901284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333051305400c13232533304f3371e6eb8c1440080884cc150dd418030009982a1ba800b330543750012660a866609e010980103d87a80004c0103d87980004bd700a998282481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a60a200260a60182a6609c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00161533304d0011533305100c153304e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001615333051305400c13232533304f3371e6eb8c1440080704cc150dd40069982a1ba83005001330543750012660a866609e010980103d87a80004c0103d87980004bd700a998282481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016375a60a200260a60182a6609c921284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016153304e491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f0016300401b3003020370000c6e0001cdc7804180518249baa304d304e002375a609800260980046eb4c128004c128010dd698240019bab3044003375c60840046e212000371e91100375a608260840046eb4c100004c0f0dd5181f80198171981e9ba90073303d375200a97ae0302d3303c3752018660786ea40292f5c0607a0046eb8c0ec004c0ec008dd7181c800981c8011bae30370013037002375c606a002606a0046eb8c0cc004c0cc008dd7181880098188011bae302f001302f002375c605a00260526ea94ccc098c080c0a0dd5005099190012999813981198149baa001132323232323232323232323232323232323232323232533304130440021323232498c94ccc100c0f00044c8c94ccc118c12400852616375a608e00260866ea801054ccc100c0ec00454ccc110c10cdd50020a4c2c2c60826ea800cc94ccc0fcc0ec0044c8c94ccc114c1200084c9265333041303d30433754002264646464a6660926098004264932999822982098239baa00313232533304b304e002149858dd7182600098241baa0031616375a60940026094004609000260886ea80045858c118004c108dd50028a99981f981d0008a99982198211baa00514985858c100dd5002299981e981c981f9baa00513232323253330453048002149858dd6982300098230011bad30440013040375400a2c2c6084002608400460800026080004607c002607c0046eb8c0f0004c0f0008dd7181d000981d0011bae30380013038002375c606c002606c0046eb8c0d0004c0d0008dd7181900098190011bae30300013030002375c605c00260546ea800458c0b0c0a4dd50050a99813a48125416c6c207377617020646174756d73206d75737420626520696e6c696e6520646174756d73001614a02940c0ac00cc0a800cc0a400c54cc0912401364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e73001630290013028001325333021301c30233754002297adef6c6013756604e60486ea8004c8cc004004018894ccc098004530103d87a8000132323253330253371e0246eb8c09c00c4c06ccc0a8dd3000a5eb804cc014014008dd598138011815001181400098129813001181200098101baa30230043022302300237566042002604200260386ea8c07c00888cdcb001000912999809199809000a504a22a660260042002200244a666022666022002941288a998090010b080091119199800800802001911299980c00108008999801801980d80119802180d00100091b92001223371400400246464a66601c601260206ea80044c010cc04cc050c044dd5000a5eb80530103d87a80003013301037546026602860206ea8008c038dd50009ba548000c02cdd50030a4c26cac64a66601060080022a66601860166ea8014526161533300830030011533300c300b375400a2930b0a99980418010008a99980618059baa00514985858c024dd50021b8748010dc3a40046e1d2000375c002ae695ce2ab9d5573caae7d5d02ba157449811e581c1d6cff26bcab91d2061aad0bd259cbb7d76d25ced2eeaed5926a42ad0001" # noqa: E501
67
+ # The official Cardano-Swaps v2 one-way contracts (Plutus V3, release v2.0.0).
68
+ # The beacon policy is parameterised by ``dapp_hash`` (= the swap validator
69
+ # hash); the script below has it applied, so it hashes to BEACON_POLICY_ID.
70
+ SWAP_VALIDATOR_HASH = "e5a22e4c31db20bce1c8b081f8e4009683990a33157947d75030deb8"
71
+ BEACON_POLICY_ID = "274765b4c626c28d18752176b59c0ff63db56b8305c1daa49c9879fe"
72
+ SWAP_VALIDATOR_SCRIPT_HEX = "590d8e01010029800aba2aba1aba0aab9faab9eaab9dab9cab9a4888888896600264653001300900198049805000cdc3a400530090024888966002600460126ea800e2653001300e00198071807800cdc3a400091119912cc004c00c0062b3001301037540150028b20228acc004c0200062b3001301037540150028b20228acc004cdc3a400800315980098081baa00a80145901145900d201a403433001374a9000489660033001001a50a514035153300e00210018800a01a98069baa008911919800800801912cc00400629422b30013375e0066022602a00314a31330020023016001403c80992222332259800980380244c8c8cc89660026016602e6ea80062b3001300b3017375401915980099804a481225374616b696e672063726564656e7469616c20646964206e6f7420617070726f7665009800980d980c1baa301b301c30183754603660306ea80066eacc06c00a6eb0c06cc070c07000900544cc0252412c426561636f6e20736372697074206e6f74206578656375746564206173206d696e74696e6720706f6c696379003232330010013756603a00a44b30010018a508acc004cdc78019bae301a301e0018a51899801001180f800a03040706eb8c06cc060dd5180d980c1baa00c8a50405516405516405460346034002660086eb0c06400802cc064c064c064c064004c050dd5005c5660026018009132323322598009805980b9baa0018acc004c02cc05cdd5006456600266012921225374616b696e672063726564656e7469616c20646964206e6f7420617070726f7665009800980d980c1baa301b301c30183754603660306ea80060053758603660386038006802a2660129212c426561636f6e20736372697074206e6f74206578656375746564206173207374616b696e672073637269707400330070023374a90011980d180d980c1baa301b3018375401897ae08a5040551640551640546eacc064004cc010dd6180c801005980c980c980c980c980c980c800980a1baa00b89919912cc004c028c058dd5000c4c9660026016602e6ea80323300130183754603660306ea803244b30010018a5eb7bdb182264664464660020026600c00c604400a44b300100189981099bb037520086ea000d2f5bded8c113233225980099b910070028acc004cdc780380144c8cc094cdd81ba9008375000e0046eb4c08800e26604866ec0dd48039ba8006004407d13302400333005005001407c6eb8c07c004c090008c0880050201bae301a001375a6036002603a00280da44b30019800800d28528a02e8a9980c0010b4400501748c070c0740066e3d221009bab301b301c001992cc004c044c060dd5000c4c02ccc06cc070c064dd5000a5eb82298103d87a80004058603660306ea8c06cc070c060dd5180d980e180e180e180e180e001cc06c0052222222233223232323232323298009816000cc0b0c0b4c0b40066eb8c0b00466eb8c0b002644444444464b3001330194901165554784f206861732077726f6e6720626561636f6e73003375e606c002604a6606a6e98c048cc0d4cdd81ba90084c101010033035337606ea401530101010033035337606ea40093010101004bd6f7b63025eb8226530010019bab30373038002a5eb84101000081010000810100002002222598008014400633001003981d0014cc8a60026eb8c0dc00a6eacc0e000a6eb4c0ec0066eb4c0ecc0f00066eb4c0ec00d22222598009810802c4c9660026062607a6ea8006264b30015980099b8f00701389811809452820788998209ba833700006002660826ea0014cc104dd419b800040014bd704566002b30013371e00e0211302300f8a5040f11330413750006660826ea0cdc0002800998209ba83370000800297ae08998209ba800333041375000a660826ea0cdc0002000a5eb8103c2078375a6082607c6ea80062c81d8c8c8cc0040040188966002003003899192cc004cdc8a441000018acc004c0980062606866088608400497ae0802a07e8998020021823001a07e375c608000260860028208530103d87a80008acc0056600266e3c014046266e3c01403a294103a44c96600200b0018992cc0040062646644b30013371e00402b133044375066e00018004cc110dd4004198221ba80074bd70456600266e3c00804a2660886ea0018cc110dd419b8000800133044375000e97ae08a99820249284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001640fc81f8dd7181f8009bad304000130420068acc004c10c006266453001375c6080005375a6082005375c6080003375a608200291112cc0056600266e3c010062266e3c008056294104244cc11cdd419b8000900333047375066e0002c004cc11cdd400525eb822b30015980099b8f004015899b8f0020188a504109133047375066e00024004cc11cdd419b8000b00333047375001497ae08a99821a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001641088210608400c608400300241008200c10801503f0a9981da481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00168acc004cdc7802808c4c96600200b0018acc004c108016264b30013371e6eb8c0f800404a2660826ea0cdc00019bad303f00133041375000a660826ea00112f5c1153303d491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001640f0608200b00140fc81f854cc0ed241284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00168acc004cdc780280744c96600200b0018acc004c108016264b30013371e6eb8c0f800403e2660826ea000ccc104dd419b80005375a607e002660826ea00112f5c1153303d491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001640f0608200b00140fc81f854cc0ed241284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00168a9981da49284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001640e881d103a2074181c801181d000a00640dd1640c0653001001805488cc0dc008cc0dcdd3000a5eb810011112cc00400a266002980103d87a80004bd6f7b63044c8cc896600266e4403800a2b30013371e01c005133004302a3303a30380034bd70000c4cc011300103d87a800000540d5198008034006446600c0046607800a00280310351bae3035001303a003303800240d9375c605800f375c605800d375c605800b375c6058009375c6058007375c6058004911111111112cc004c8c966002605c606a6ea80062946264b3001302a3036375400313301d490127696e76616c69642d686572656166746572206d757374206265203c3d2065787069726174696f6e00337126eb4c0e8c0dcdd50009bad303a30373754005153303549126696e76616c69642d68657265616674657220726571756972656420627574206e6f7420736574001640d0607260740048198c0e0004cc0d8028cc0d80592f5c11332233223259800acc00566002603a01714a31301d00840d914a313301f491194164612063616e206f6e6c79206265206465706f73697465640033712900019b81375a6078607a0046eb4c0f0c0f400d036456600266054921264661696c3a206f666665725f74616b656e202a207072696365203c3d2061736b5f676976656e003371266e08cdc09bad303c005375a60780086eb4c0f0c0e4dd500819b82001375a603c60726ea80422660549212b5468652061736b2061737365742063616e6e6f742062652074616b656e2066726f6d20746865207377617000337129000000c528206c8b206c337026eb4c0ec004dd6981d801181d001181d000cc00405e013008803401600900380140050071919198008009bac30390212259800800c54cc0d5240123436f72726573706f6e64696e672073776170206f7574707574206e6f7420666f756e6400168992cc0056600266ebc064c0ecc0e0dd5000c56600266ebc010c0ecc0f0c0f0c0e0dd5000c5660026056606e6ea8c0ecc0f0c0f0c0f0c0e0dd5000c5284528a06a8a5040d514a081aa330013756603a60706ea800601b00c8054026011007803401500b44cc00c00cc0f0009035181d000a0703374a90021981b18131981b1ba90093303637520106606c6ea4018cc0d8dd48029981b1ba90043303637520066606c6ea4008cc0d8dd48009981b0059981b18131981b014a5eb80cc0d80292f5c097ae08b2062181600098158009815000981480098140009813800981300118120041803803a2c80a8c05cdd5180d180d980b9baa301a3017375400316405060326032002660066eb0c060004028c050dd5005a022404444646600200200644b30010018a6103d87a80008992cc004cdd7980d180b9baa001004898049980c800a5eb82266006006603600480a0c064005017111192cc004c038c054dd5000c528c4c9660026014602c6ea8006264b3001300b3017375400313232330010010062259800800c528456600266e3cdd7180f000801c528c4cc008008c07c0050182038375c603660306ea800626600e00a00280a8c068c05cdd5000c52820283019301637540028098c060c064c054dd50018c034dd50040c028dd5001c590070c024004c010dd5004c52689b2b200201" # noqa: E501
73
+ BEACON_POLICY_SCRIPT_HEX = "590fff0101003229800aba2aba1aba0aab9faab9eaab9dab9cab9a9bae002488888888966002646465300130073754003370e90004c02c00e601600491112cc004cdc3a400c0091323259800980298069baa301130120028a518a998062481365075626c6973682063616e206f6e6c79206265207573656420746f2072656769737465722074686520626561636f6e207363726970740016402c6eb4c040004c030dd5002c660026e1d20029ba54800244b30010018a5eb7bdb182264664464660020026600c00c602c00a44b300100189980a99bb037520086ea000d2f5bded8c113233225980099b910070028acc004cdc780380144c8cc064cdd81ba9008375000e0046eb4c05800e26603066ec0dd48039ba8006004404d13301800333005005001404c6eb8c04c004c060008c0580050141bae300e001375a601e0026022002807a44b30019800800d28528a0168a998060010b4400500b489660033001001a50a51402d153300c00210018800a016488888c8cc8966002601601913232329800809cdd7180d180b9baa0109802180d000cdd5980d0014dd6180d180d800cdd6180d001a00a301a0013019301930193019001301830183014375401515980099b87480100322646466453001014acc004c030c05cdd5000c4dd7180d980c1baa0018a9980b2491e5769746864726177206d7573742062652066726f6d206120736372697074001640553005301b0029bab301b0039bac301b301c0029bac301b004401860340026032602c6ea803cc064c064c064c064004c060c060c050dd50054590112022222222329800800c00a94698103d87a800040044444b3001003880144cc88c8cc8a6002604a005302400198121812800cdd598120012444530013028004981418148024c8c8cc00400400c8966002003003899192cc004cdc880b800c56600266e3c05c00626eacc0a800a00a813a266008008605c0068138dd718140009815800a05214bd6f7b630454cc08d2401364f6e652d776179207377617073206d75737420686176652065786163746c79207468726565206b696e6473206f6620626561636f6e730016914c00403e015002800a01e4888896600200713300101000f8992cc00400600713259800800c0122b300130300018991919802acc0040522b30013301e49012e426561636f6e206d75737420676f20746f206120204441707020616464726573732077697468207374616b696e67005980099baf00c3374a9001198181ba901c4bd704566002604a605a6ea802e2946294102b452820568acc004cc0792401225374616b696e672063726564656e7469616c20646964206e6f7420617070726f76650059800cc00400694294502b4528c4c9660026046605c6ea80062946264b30013027302f375400313259800981418181baa001899191980080080e912cc00400629422b30013371e6eb8c0dc00400e2946266004004607000281890351bae3034303137540031323300100101d2259800800c528456600266ebc00cc0c8c0d80062946266004004606e0028181034205c30333030375400314a08168c0c8c0bcdd5000a05830313032302e37546062605c6ea804902b45660026603c920123537761702063616e6e6f7420686f6c642061207265666572656e6365207363726970740059800981298169baa0088a508a5140ad13232323232323232329800981d000cdd7181d0044dd7181d003cdd7181d0034dd7181d002cdd7181d0024dd7181d001cdd7181d001244444444b3001323259800981a98201baa0018a518992cc004c0e4c104dd5000c4c9660026606892012745787069726174696f6e206d757374206265203e3d20696e76616c69642d68657265616674657200337126eb4c118c10cdd5001000c4cc0d1241234d7573742075736520312d6d696e2065787069726174696f6e20696e74657276616c7300303a3370c00290605483c5282080375a608a60846ea800a2a66080920126696e76616c69642d68657265616674657220726571756972656420627574206e6f7420736574001640fc6088608a00481f0c10c004cc104c108c10cc10c024cc1040ad2f5c115980099817a4810f57726f6e6720626561636f6e5f6964003371e0586eb8c1080462b30013302f4901274f666665722061737365742063616e6e6f742062652073616d652061732061736b20617373657400980099baf303233041375200c660826ea40152f5c06064660826ea400ccc104dd480125eb8294294503c45660026605e92011157726f6e6720706169725f626561636f6e003371e00e6e48dd999ba548010cc104dd4803198209ba9005330413752006660826ea40092f5c115980099817a4811257726f6e67206f666665725f626561636f6e003371e0086e48dd99819198209ba900633041375200a97ae08acc004cc0bd24011057726f6e672061736b5f626561636f6e003371e0026e48dd999ba548008cc104dd4801998209ba90024bd7045660026605e9211e737761705f70726963652064656e6f6d696e61746f72206e6f74203e2030003371090001bad30423043303f375401115980099817a491c737761705f7072696365206e756d657261746f72206e6f74203e2030003371090001bad3042303f375401113259800998182490d496e76616c696420617373657400598009800803c4c00401a294503d45660026606092010d496e76616c69642061737365740059800980080244c00400e294503d44cdc4a40006eb4c10cc96600266064921165554784f206861732077726f6e6720626561636f6e73003375e60880026068660866e98c0c0cc10ccdd81ba90094c101010033043337606ea401930101010033043337606ea400d3010101004bd6f7b63025eb8226530010019bab30453046002a5eb8410100008101000081010000200222259800801440063300100398240014cc8a60026eb8c11400a6eacc11800a6eb4c1240066eb4c124c1280066eb4c12400d22222598009806002c4c966002608660966ea8006264b30015980099b8f00701489807009c52820948998279ba8337000060026609e6ea0014cc13cdd419b800040014bd704566002b30013371e00e0231300e0108a50412913304f37500066609e6ea0cdc0002800998279ba83370000800297ae08998279ba80033304f375000a6609e6ea0cdc0002000a5eb8104a2094375a609e60986ea80062c8248c8c8cc0040040188966002003003899192cc004cdc8a441000018acc004c04400626086660a460a000497ae0802a09a899802002182a001a09a375c609c00260a20028278530103d87a80008acc0056600266e3c01404a266e3c01403e294104844c96600200b0018992cc0040062646644b30013371e00402d133052375066e00018004cc148dd4004198291ba80074bd70456600266e3c00804e2660a46ea0018cc148dd419b8000800133052375000e97ae08a99827249284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001641348268dd718268009bad304e00130500068acc004c144006266453001375c609c005375a609e005375c609c003375a609e00291112cc0056600266e3c010066266e3c00805a294105044cc154dd419b8000900333055375066e0002c004cc154dd400525eb822b30015980099b8f004016899b8f0020198a504141133055375066e00024004cc154dd419b8000b00333055375001497ae08a99828a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00164140828060a000c60a000300241388270c14001504d0a99824a481284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00168acc004cdc780280944c96600200b0018acc004c140016264b30013371e6eb8c13000404e26609e6ea0cdc00019bad304d0013304f375000a6609e6ea00112f5c1153304b491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00164128609e00b0014134826854cc125241284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00168acc004cdc7802807c4c96600200b0018acc004c140016264b30013371e6eb8c13000404226609e6ea000ccc13cdd419b80005375a609a0026609e6ea00112f5c1153304b491284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00164128609e00b0014134826854cc125241284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f00168a99824a49284e6f2065787472616e656f75732061737365747320616c6c6f77656420696e20746865205554784f001641208241048209018238011824000a00641151640f865300100180ec88cc114008cc114dd3000a5eb810011112cc00400a266002980103d87a80004bd6f7b63044c8cc896600266e440cc00a2b30013371e06600513300430393304830460034bd70000c4cc011300103d87a8000005410d198008034006446600c0046609400a00280310431bae304300130480033046002411114a081ea294103d1b8f489008a5040f114a081e2294103c452820788a5040f114a081e2294103c45903c0c0e8004c0e4004c0e0004c0dc004c0d8004c0d4004c0d0004c0cc004c0b8dd5001452820568a5040ad14a0815a294102b2cc0040062017101340acb30013375e98103d87a80003030303130313031303130313031303130313031302d37540031980099baf00a012a50a5140a914a081516600266e1d2004302b375400f1323259800981298169baa002899191919191919191919194c004c0f00066eb8c0f002e6eb8c0f002a6eb8c0f00266eb8c0f00226eb8c0f001e6eb8c0f001a6eb8c0f00166eb8c0f0012607800491111111112cc004c11c02e264b3001303b30433754003132323322598009826001c4cc89660026082003132598009827800c4c966002608660966ea8006264646644b300130540038044590511bad3051001375c60a200460a200260986ea80062c8248c1380062c8260c128dd50044566002607c00315980098251baa00880145904b459047208e132598009820000c4c8c966002609e00501e8b2098375a609a00260926ea80422b3001303d0018acc004c124dd500840722c82522c823104618239baa00f3047375400d1641246eb4c124004dd69824801182480098221baa0018b2082304600d8b2088181e000981d800981d000981c800981c000981b800981b000981a800981a000981980098171baa0028b20561001302f302c375400f153302a490125416c6c207377617020646174756d73206d75737420626520696e6c696e6520646174756d73001640a500440b48168c0bc00502c1817001a0560c08c004c07cdd51811000980f1baa002301f00330200034074464b3001300830133754003130073301630173014375400297ae08a6103d87a80004044602c60266ea8c058c05cc04cdd5000980180190090c028c02c004c028004c014dd5005452689b2b20042611e581ce5a22e4c31db20bce1c8b081f8e4009683990a33157947d75030deb80001" # noqa: E501
72
74
 
73
75
 
74
76
  @dataclass
@@ -118,13 +120,13 @@ def _sha256(data: bytes) -> bytes:
118
120
  return hashlib.sha256(data).digest()
119
121
 
120
122
 
121
- def pair_beacon_name(
123
+ def legacy_pair_beacon_name(
122
124
  offer_id: bytes,
123
125
  offer_name: bytes,
124
126
  ask_id: bytes,
125
127
  ask_name: bytes,
126
128
  ) -> bytes:
127
- """The pair-beacon token name.
129
+ """The pair-beacon token name. The pre-release build's rule.
128
130
 
129
131
  ``sha2_256(a1_id ++ offer_name ++ a2_id ++ ask_name)`` where an empty policy
130
132
  id (ADA) is substituted with ``0x00`` for *both* legs. The order is
@@ -135,22 +137,135 @@ def pair_beacon_name(
135
137
  return _sha256(a1 + offer_name + a2 + ask_name)
136
138
 
137
139
 
138
- def offer_beacon_name(offer_id: bytes, offer_name: bytes) -> bytes:
140
+ def legacy_offer_beacon_name(offer_id: bytes, offer_name: bytes) -> bytes:
139
141
  """The offer-beacon token name: ``sha2_256(0x01 ++ offer_id ++ offer_name)``.
140
142
 
141
- No ``0x00`` substitution: an ADA offer hashes ``sha2_256(0x01)``.
143
+ No ``0x00`` substitution: an ADA offer hashes ``sha2_256(0x01)``. The
144
+ pre-release build's rule.
142
145
  """
143
146
  return _sha256(b"\x01" + offer_id + offer_name)
144
147
 
145
148
 
146
- def ask_beacon_name(ask_id: bytes, ask_name: bytes) -> bytes:
149
+ def legacy_ask_beacon_name(ask_id: bytes, ask_name: bytes) -> bytes:
147
150
  """The ask-beacon token name: ``sha2_256(0x02 ++ ask_id ++ ask_name)``.
148
151
 
149
- No ``0x00`` substitution: an ADA ask hashes ``sha2_256(0x02)``.
152
+ No ``0x00`` substitution: an ADA ask hashes ``sha2_256(0x02)``. The
153
+ pre-release build's rule.
150
154
  """
151
155
  return _sha256(b"\x02" + ask_id + ask_name)
152
156
 
153
157
 
158
+ @dataclass
159
+ class _OfferAsset(PlutusData):
160
+ """Pre-image of an official offer-beacon name."""
161
+
162
+ CONSTR_ID = 0
163
+ policy_id: bytes
164
+ asset_name: bytes
165
+
166
+
167
+ @dataclass
168
+ class _AskAsset(PlutusData):
169
+ """Pre-image of an official ask-beacon name."""
170
+
171
+ CONSTR_ID = 1
172
+ policy_id: bytes
173
+ asset_name: bytes
174
+
175
+
176
+ @dataclass
177
+ class _TradingPair(PlutusData):
178
+ """Pre-image of an official pair-beacon name (offer asset first)."""
179
+
180
+ CONSTR_ID = 2
181
+ offer_id: bytes
182
+ offer_name: bytes
183
+ ask_id: bytes
184
+ ask_name: bytes
185
+
186
+
187
+ def pair_beacon_name(
188
+ offer_id: bytes,
189
+ offer_name: bytes,
190
+ ask_id: bytes,
191
+ ask_name: bytes,
192
+ ) -> bytes:
193
+ """The official pair-beacon name: ``sha2_256(serialiseData(TradingPair))``.
194
+
195
+ ADA is ``("", "")``; the offer asset comes first.
196
+ """
197
+ return _sha256(_TradingPair(offer_id, offer_name, ask_id, ask_name).to_cbor())
198
+
199
+
200
+ def offer_beacon_name(offer_id: bytes, offer_name: bytes) -> bytes:
201
+ """The official offer-beacon name: ``sha2_256(serialiseData(OfferAsset))``."""
202
+ return _sha256(_OfferAsset(offer_id, offer_name).to_cbor())
203
+
204
+
205
+ def ask_beacon_name(ask_id: bytes, ask_name: bytes) -> bytes:
206
+ """The official ask-beacon name: ``sha2_256(serialiseData(AskAsset))``."""
207
+ return _sha256(_AskAsset(ask_id, ask_name).to_cbor())
208
+
209
+
210
+ @dataclass(frozen=True)
211
+ class CardanoSwapsContract:
212
+ """One deployment of the Cardano-Swaps one-way contracts.
213
+
214
+ Everything that differs between deployments: script hashes and bytes, the
215
+ Plutus version, the beacon-name rule, whether a new swap's staking key must
216
+ sign its creation, and which builders are allowed.
217
+ """
218
+
219
+ swap_validator_hash: str
220
+ beacon_policy_id: str
221
+ swap_script_hex: str
222
+ beacon_script_hex: str
223
+ script_class: type[PlutusV2Script] | type[PlutusV3Script]
224
+ pair_beacon_name: Callable[[bytes, bytes, bytes, bytes], bytes]
225
+ offer_beacon_name: Callable[[bytes, bytes], bytes]
226
+ ask_beacon_name: Callable[[bytes, bytes], bytes]
227
+ create_needs_stake_signature: bool
228
+ allows_create: bool
229
+ allows_fill: bool
230
+
231
+ def swap_script(self) -> PlutusV2Script | PlutusV3Script:
232
+ """The swap spending validator."""
233
+ return self.script_class(bytes.fromhex(self.swap_script_hex))
234
+
235
+ def beacon_script(self) -> PlutusV2Script | PlutusV3Script:
236
+ """The beacon minting/staking policy (``dapp_hash`` applied)."""
237
+ return self.script_class(bytes.fromhex(self.beacon_script_hex))
238
+
239
+
240
+ OFFICIAL_CONTRACT = CardanoSwapsContract(
241
+ swap_validator_hash=SWAP_VALIDATOR_HASH,
242
+ beacon_policy_id=BEACON_POLICY_ID,
243
+ swap_script_hex=SWAP_VALIDATOR_SCRIPT_HEX,
244
+ beacon_script_hex=BEACON_POLICY_SCRIPT_HEX,
245
+ script_class=PlutusV3Script,
246
+ pair_beacon_name=pair_beacon_name,
247
+ offer_beacon_name=offer_beacon_name,
248
+ ask_beacon_name=ask_beacon_name,
249
+ create_needs_stake_signature=True,
250
+ allows_create=True,
251
+ allows_fill=True,
252
+ )
253
+
254
+ LEGACY_CONTRACT = CardanoSwapsContract(
255
+ swap_validator_hash=LEGACY_SWAP_VALIDATOR_HASH,
256
+ beacon_policy_id=LEGACY_BEACON_POLICY_ID,
257
+ swap_script_hex=LEGACY_SWAP_VALIDATOR_SCRIPT_HEX,
258
+ beacon_script_hex=LEGACY_BEACON_POLICY_SCRIPT_HEX,
259
+ script_class=PlutusV2Script,
260
+ pair_beacon_name=legacy_pair_beacon_name,
261
+ offer_beacon_name=legacy_offer_beacon_name,
262
+ ask_beacon_name=legacy_ask_beacon_name,
263
+ create_needs_stake_signature=False,
264
+ allows_create=False,
265
+ allows_fill=False,
266
+ )
267
+
268
+
154
269
  def _unit(policy: bytes, name: bytes) -> str:
155
270
  """Build a dendrite asset unit from on-chain policy + name bytes.
156
271
 
@@ -335,11 +450,12 @@ class CardanoSwapsSwapDatum(OrderDatum):
335
450
 
336
451
  def beacon_assets(self, quantity: int = 1) -> Assets:
337
452
  """The pair, offer and ask beacons, each at ``quantity``."""
453
+ policy = self.beacon_id.hex()
338
454
  return Assets(
339
455
  root={
340
- BEACON_POLICY_ID + self.pair_beacon.hex(): quantity,
341
- BEACON_POLICY_ID + self.offer_beacon.hex(): quantity,
342
- BEACON_POLICY_ID + self.ask_beacon.hex(): quantity,
456
+ f"{policy}{self.pair_beacon.hex()}": quantity,
457
+ f"{policy}{self.offer_beacon.hex()}": quantity,
458
+ f"{policy}{self.ask_beacon.hex()}": quantity,
343
459
  },
344
460
  )
345
461
 
@@ -516,8 +632,8 @@ class CardanoSwapsSwapDatum(OrderDatum):
516
632
  )
517
633
 
518
634
 
519
- class CardanoSwapsOrderState(AbstractOrderState):
520
- """A resting Cardano-Swaps v2 one-way swap UTxO.
635
+ class _CardanoSwapsOneWayOrderState(AbstractOrderState):
636
+ """A resting Cardano-Swaps one-way swap UTxO, for the contract in ``CONTRACT``.
521
637
 
522
638
  From the taker's view: ``in`` is the ask asset (taker gives) and ``out`` is
523
639
  the offer asset (taker receives). ``available`` is the offer asset held in
@@ -527,6 +643,8 @@ class CardanoSwapsOrderState(AbstractOrderState):
527
643
  ``out = in * denominator / numerator`` falls out of the base class.
528
644
  """
529
645
 
646
+ CONTRACT: ClassVar[CardanoSwapsContract]
647
+
530
648
  tx_hash: str
531
649
  tx_index: int
532
650
  datum_cbor: str
@@ -545,25 +663,20 @@ class CardanoSwapsOrderState(AbstractOrderState):
545
663
  _datum_parsed: PlutusData | None = None
546
664
  _deposit: Assets = Assets(lovelace=0)
547
665
 
548
- @classmethod
549
- def dex(cls) -> str:
550
- """Official dex name."""
551
- return "CardanoSwaps"
552
-
553
666
  @classmethod
554
667
  def order_datum_class(cls) -> type[PlutusData]:
555
668
  """Returns data class used for handling order datums."""
556
669
  return CardanoSwapsSwapDatum
557
670
 
558
671
  @classmethod
559
- def default_script_class(cls) -> type[PlutusV2Script]:
560
- """The swap spending validator is a Plutus V2 script."""
561
- return PlutusV2Script
672
+ def default_script_class(cls) -> type[PlutusV2Script] | type[PlutusV3Script]:
673
+ """The swap spending validator's Plutus version (this contract's)."""
674
+ return cls.CONTRACT.script_class
562
675
 
563
676
  @classmethod
564
677
  def dex_policy(cls) -> list[str] | None:
565
678
  """The beacon minting policy id used to discover swap UTxOs."""
566
- return [BEACON_POLICY_ID]
679
+ return [cls.CONTRACT.beacon_policy_id]
567
680
 
568
681
  @classmethod
569
682
  def extract_dex_nft(cls, values: dict) -> Assets | None:
@@ -673,7 +786,7 @@ class CardanoSwapsOrderState(AbstractOrderState):
673
786
  @classmethod
674
787
  def pool_selector(cls) -> PoolSelector:
675
788
  """Pool selection: discover by beacon policy id, not address."""
676
- return PoolSelector(addresses=[], assets=[BEACON_POLICY_ID])
789
+ return PoolSelector(addresses=[], assets=[cls.CONTRACT.beacon_policy_id])
677
790
 
678
791
  @property
679
792
  def swap_forward(self) -> bool:
@@ -729,15 +842,15 @@ class CardanoSwapsOrderState(AbstractOrderState):
729
842
 
730
843
  # --- transaction builders --------------------------------------------
731
844
 
732
- @staticmethod
733
- def _swap_script() -> PlutusV2Script:
845
+ @classmethod
846
+ def _swap_script(cls) -> PlutusV2Script | PlutusV3Script:
734
847
  """The (inline) one-way swap spending validator."""
735
- return PlutusV2Script(bytes.fromhex(SWAP_VALIDATOR_SCRIPT_HEX))
848
+ return cls.CONTRACT.swap_script()
736
849
 
737
- @staticmethod
738
- def _beacon_script() -> PlutusV2Script:
850
+ @classmethod
851
+ def _beacon_script(cls) -> PlutusV2Script | PlutusV3Script:
739
852
  """The (inline) beacon minting/staking policy."""
740
- return PlutusV2Script(bytes.fromhex(BEACON_POLICY_SCRIPT_HEX))
853
+ return cls.CONTRACT.beacon_script()
741
854
 
742
855
  @staticmethod
743
856
  def _verify_ref_script(ref_utxo: UTxO, expected_hash: str, label: str) -> None:
@@ -763,7 +876,7 @@ class CardanoSwapsOrderState(AbstractOrderState):
763
876
  def _swap_script_arg(
764
877
  cls,
765
878
  swap_ref_utxo: UTxO | None,
766
- ) -> UTxO | PlutusV2Script:
879
+ ) -> UTxO | PlutusV2Script | PlutusV3Script:
767
880
  """The swap validator to attach to a builder.
768
881
 
769
882
  A caller-supplied reference-script UTxO (referenced via a reference input)
@@ -772,14 +885,18 @@ class CardanoSwapsOrderState(AbstractOrderState):
772
885
  """
773
886
  if swap_ref_utxo is None:
774
887
  return cls._swap_script()
775
- cls._verify_ref_script(swap_ref_utxo, SWAP_VALIDATOR_HASH, "swap validator")
888
+ cls._verify_ref_script(
889
+ swap_ref_utxo,
890
+ cls.CONTRACT.swap_validator_hash,
891
+ "swap validator",
892
+ )
776
893
  return swap_ref_utxo
777
894
 
778
895
  @classmethod
779
896
  def _beacon_script_arg(
780
897
  cls,
781
898
  beacon_ref_utxo: UTxO | None,
782
- ) -> UTxO | PlutusV2Script:
899
+ ) -> UTxO | PlutusV2Script | PlutusV3Script:
783
900
  """The beacon policy to attach to a builder.
784
901
 
785
902
  A caller-supplied reference-script UTxO (referenced via a reference input)
@@ -788,11 +905,15 @@ class CardanoSwapsOrderState(AbstractOrderState):
788
905
  """
789
906
  if beacon_ref_utxo is None:
790
907
  return cls._beacon_script()
791
- cls._verify_ref_script(beacon_ref_utxo, BEACON_POLICY_ID, "beacon policy")
908
+ cls._verify_ref_script(
909
+ beacon_ref_utxo,
910
+ cls.CONTRACT.beacon_policy_id,
911
+ "beacon policy",
912
+ )
792
913
  return beacon_ref_utxo
793
914
 
794
- @staticmethod
795
- def beacon_address(owner_address: Address) -> Address:
915
+ @classmethod
916
+ def beacon_address(cls, owner_address: Address) -> Address:
796
917
  """The beacon-tagged swap address for an owner.
797
918
 
798
919
  The payment credential is the swap spending validator hash; the staking
@@ -801,7 +922,7 @@ class CardanoSwapsOrderState(AbstractOrderState):
801
922
  DApp address, so a resting swap always carries one.
802
923
  """
803
924
  return Address(
804
- payment_part=ScriptHash(bytes.fromhex(SWAP_VALIDATOR_HASH)),
925
+ payment_part=ScriptHash(bytes.fromhex(cls.CONTRACT.swap_validator_hash)),
805
926
  staking_part=owner_address.staking_part,
806
927
  network=owner_address.network or Network.MAINNET,
807
928
  )
@@ -860,8 +981,22 @@ class CardanoSwapsOrderState(AbstractOrderState):
860
981
  The swap output and its inline ``SwapDatum``.
861
982
 
862
983
  Raises:
863
- ValueError: ``price`` is not a positive rational.
984
+ ValueError: this contract creates no swaps, or ``price`` is not a
985
+ positive rational.
864
986
  """
987
+ if not cls.CONTRACT.allows_create:
988
+ raise ValueError(
989
+ "This Cardano-Swaps contract is read-and-close only: "
990
+ "no new swaps are created on it.",
991
+ )
992
+ if cls.CONTRACT.create_needs_stake_signature:
993
+ stake = owner_address.staking_part
994
+ if not isinstance(stake, VerificationKeyHash):
995
+ raise ValueError(
996
+ "Creating a Cardano-Swaps v2 swap must be approved by the "
997
+ "owner's staking key; the owner address has no key-hash "
998
+ "staking credential.",
999
+ )
865
1000
  offer_unit = offer.unit()
866
1001
  ask_unit = ask.unit()
867
1002
  offer_id, offer_name = cls._split_unit(offer_unit)
@@ -876,14 +1011,19 @@ class CardanoSwapsOrderState(AbstractOrderState):
876
1011
  else (PlutusNone())
877
1012
  )
878
1013
  datum = CardanoSwapsSwapDatum(
879
- beacon_id=bytes.fromhex(BEACON_POLICY_ID),
880
- pair_beacon=pair_beacon_name(offer_id, offer_name, ask_id, ask_name),
1014
+ beacon_id=bytes.fromhex(cls.CONTRACT.beacon_policy_id),
1015
+ pair_beacon=cls.CONTRACT.pair_beacon_name(
1016
+ offer_id,
1017
+ offer_name,
1018
+ ask_id,
1019
+ ask_name,
1020
+ ),
881
1021
  offer_id=offer_id,
882
1022
  offer_name=offer_name,
883
- offer_beacon=offer_beacon_name(offer_id, offer_name),
1023
+ offer_beacon=cls.CONTRACT.offer_beacon_name(offer_id, offer_name),
884
1024
  ask_id=ask_id,
885
1025
  ask_name=ask_name,
886
- ask_beacon=ask_beacon_name(ask_id, ask_name),
1026
+ ask_beacon=cls.CONTRACT.ask_beacon_name(ask_id, ask_name),
887
1027
  swap_price=CardanoSwapsRational(numerator=num, denominator=den),
888
1028
  prev_input=PlutusNone(),
889
1029
  expiration=exp,
@@ -925,6 +1065,12 @@ class CardanoSwapsOrderState(AbstractOrderState):
925
1065
  )
926
1066
  tx_builder.add_output(txo)
927
1067
 
1068
+ if cls.CONTRACT.create_needs_stake_signature:
1069
+ signers = list(tx_builder.required_signers or [])
1070
+ if owner_address.staking_part not in signers:
1071
+ signers.append(owner_address.staking_part)
1072
+ tx_builder.required_signers = signers
1073
+
928
1074
  return txo, datum
929
1075
 
930
1076
  @staticmethod
@@ -998,10 +1144,16 @@ class CardanoSwapsOrderState(AbstractOrderState):
998
1144
  offer balance at ~0); only CLOSE removes the beacons.
999
1145
 
1000
1146
  Raises:
1001
- ValueError: the assets are not the offer and ask, or the fill takes
1002
- more of the offer than the UTxO can release.
1147
+ ValueError: this contract fills no swaps, the assets are not the offer
1148
+ and ask, or the fill takes more of the offer than the UTxO can
1149
+ release.
1003
1150
  InvalidPoolError: the datum's ``swap_price`` is not a positive rational.
1004
1151
  """
1152
+ if not self.CONTRACT.allows_fill:
1153
+ raise ValueError(
1154
+ "This Cardano-Swaps contract is read-and-close only: "
1155
+ "its swaps are not filled.",
1156
+ )
1005
1157
  owner = owner_address if owner_address is not None else address_source
1006
1158
 
1007
1159
  # in/out orientation: out = offer (taker receives), in = ask (taker pays).
@@ -1029,6 +1181,13 @@ class CardanoSwapsOrderState(AbstractOrderState):
1029
1181
  script=self._swap_script_arg(swap_ref_utxo),
1030
1182
  redeemer=Redeemer(Swap()),
1031
1183
  )
1184
+ # An expiring swap is fillable only by a transaction whose validity ends at
1185
+ # or before the expiration (the validator reads it as the upper bound).
1186
+ expiration = self.order_datum.expiration
1187
+ if isinstance(expiration, CardanoSwapsSomeInt):
1188
+ deadline = posix_ms_to_slot(expiration.value)
1189
+ if tx_builder.ttl is None or tx_builder.ttl > deadline:
1190
+ tx_builder.ttl = deadline
1032
1191
  # No witness datum: the order UTxO carries its SwapDatum inline (CS requires
1033
1192
  # inline datums, and ``_input_utxo`` attaches it to the spent input above), so
1034
1193
  # the validator reads it from the input directly. Adding the same datum to the
@@ -1137,6 +1296,32 @@ class CardanoSwapsOrderState(AbstractOrderState):
1137
1296
  return self.order_datum
1138
1297
 
1139
1298
 
1299
+ class CardanoSwapsOrderState(_CardanoSwapsOneWayOrderState):
1300
+ """A resting official Cardano-Swaps v2 one-way swap (Plutus V3)."""
1301
+
1302
+ CONTRACT: ClassVar[CardanoSwapsContract] = OFFICIAL_CONTRACT
1303
+
1304
+ @classmethod
1305
+ def dex(cls) -> str:
1306
+ """Official dex name."""
1307
+ return "CardanoSwaps"
1308
+
1309
+
1310
+ class CardanoSwapsLegacyOrderState(_CardanoSwapsOneWayOrderState):
1311
+ """A swap resting on the pre-release v2 one-way build (Plutus V2).
1312
+
1313
+ Read and close only: :meth:`build_create` and :meth:`swap_utxo` refuse, so
1314
+ no new swap is created on this build and none of its swaps is filled.
1315
+ """
1316
+
1317
+ CONTRACT: ClassVar[CardanoSwapsContract] = LEGACY_CONTRACT
1318
+
1319
+ @classmethod
1320
+ def dex(cls) -> str:
1321
+ """Official dex name: the same dex as :class:`CardanoSwapsOrderState`."""
1322
+ return "CardanoSwaps"
1323
+
1324
+
1140
1325
  class CardanoSwapsOrderBook(AbstractOrderBookState):
1141
1326
  """Aggregate order book over resting Cardano-Swaps one-way swap UTxOs.
1142
1327
 
@@ -1220,8 +1405,8 @@ class CardanoSwapsOrderBook(AbstractOrderBookState):
1220
1405
  return CardanoSwapsOrderState.pool_selector()
1221
1406
 
1222
1407
  @classmethod
1223
- def default_script_class(cls) -> type[PlutusV2Script]:
1224
- """The swap spending validator is a Plutus V2 script."""
1408
+ def default_script_class(cls) -> type[PlutusV2Script] | type[PlutusV3Script]:
1409
+ """The swap spending validator's Plutus version (the official contract's)."""
1225
1410
  return CardanoSwapsOrderState.default_script_class()
1226
1411
 
1227
1412
  @classmethod