The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- decimal: Rename to
soroban-decimal
and publish in crates.io (#299) - curve: try to optimize piecewise linear implementation (#307)
- Update soroban-sdk-rs to version 20.5.0 (#308)
- Pool and Pool Stable: adds verification if the current timestamp is after a desired timestamp (#322)
- All: adds helper function that safely casts i128 to u128 (#365)
- Factory: Allows creation of stable pools (#301)
- Trader: Adds nominated trader contract to the DEX (#288)
- Multihop: Allows multihop swaps for stable pool (#303)
- Stake rewards: Create a new contract and prepare first testcases (#306)
- Trader: Adds a check if the contract has been already initialized (#329)
- All: Adds more test that verify the authorization during execution (#363)
- Pool stable: Wrong calculation of swap constant reduces stable pool's efficiency (#366)
1.0.0 - 2024-05-08
- Token: Update the contract to latest version from soroban-examples (#274)
- Update soroban-sdk-rs to 20.5.0 (#275)
- CI: Update rust to 1.77.0 (#275)
- Pool: Replace belief_price swap parameter with minimum amount of tokens expected to be received (#280)
- Stake: Checks if curve complexity is too high during operations and also optimises the curve combine process (#283)
- Pool: Temporarily disable the feature that allows to provide liquidity with a single token (#289)
- Stake: Optimize the process of adding stake if done within 12 hour period between stakes (#295)
- vesting: Add vesting contract (#267)
- all: changes panic! to panic_with_error (#269)
- Audit Report from Veridise (#291)
- all: added entrypoint to update the contracts (#293)
- Pool and Pool Stable: adds query for totally issued tokens (#298)
0.9.0 - 2024-03-12
- Stake: unbonding now automatically pays the rewards (#170)
- Factory: add query displaying data for given user (#176)
- Update soroban-sdk version from v20.0.3 to v20.1.0 ([#193])
- Fixes documentation and naming (#200)
- Multihop: adds a new field in the Swap struct, that hold max_belief_price ([234])
- Fixes incorrect assignment of total_fee_bps in both pool and pool stable ([235])
- Pool: adds a missed part of return_amount argument (#238)
- Pool: Replace panic! with panic_with_error! to provide more contextual information (#206)
- Multihop: changes total_commission_amount type in SimulateSwap and SimulateReverseSwap (#236)
- Multihop: removes unnecessary unwrap of a value (#240)
- Factory, Multihop, Pool, Pool_stable, Phoenix: adds lp_token decimal's as a const instead a user input (#241)
- Factory, Multihop, Pool, Pool_stable: adds a new parameter for creating liquidity pool (#243)
- Update soroban-sdk version from v20.1.0 to v20.4.0 (#262)
- Adds a new macro that validates the bps arguments value (#199)
- Added test coverage for Decimal (#244)
- Pool stable: Fixes an error in the compute_swap function, where commission isn't deducted ([233])
- Pool and Pool stable: extend check if the swapped token is within pool (#237)
- Pool and Pool stable: adds missing validation of max_spread in do_swap (#239)
- Pool: Adds a validation for when shares can be zero during withdrawal (#245)
- Pool: adds new check that verifies the input params for get_deposit_amounts (#246)
- Stake: Adds access control to create distribution flow (#249)
0.8.0 - 2024-01-17
- Factory: Replace tuple in a query
query_for_pool_by_pair_tuple
with a two separate parameters; rename that query toquery_for_pool_by_token_pair
(#144) - Total surrender refactor: replace all errors with panics (#140)
- Pool/Pool stable: Replace
sell_a
parameter in simulate swap messages withoffer_asset
address ([#154]) - Multihop: Implement simulate swap/reverse swap queries (#147)
- Factory: Initializes the Multihop contract upon initializing Factory (#158)
- Multihop: Checks if the list of Swaps being sent is not empty / is valid (#159)
- Multihop: Adds a new parameter to SimulateSwapResponse and SimulateReverseSwapResponse, that keeps information about spread (#168)
- Temporarily disable the referral feature ([#191])
- Update soroban-sdk version to v20.0.3 ([#174])
- All: Adds a flag in all contract initialization functions to check if the contract has been already initialized (#157)
0.7.0 - 2023-10-10
- Stake: Implement APR query (#101)
- Multihop: Provide swap implementation and a testing framework (#133)
- Multihop: Refactor swap algorithm and fix authorization issue on subsequent swaps (#138)
- Pair: Replace
sell_a
parameter in swap message withoffer_asset
address (#141) - Pool: Rename
pair
topool
to avoid further confusion in names (#139)
0.6.0 - 2023-09-20
- Stake: Create new distribution structure for staking rewards flow (#83)
- DEX deployment script (#97)
- Stake: Implement full distribution mechanism for static rewards (#88)
- Stable pair: Initialize contract (#108)
- Stake: Added new variable TotalStaked in storage (#94)
- Pair: Deployment of Stake contract during initialization (#98)
- Factory: Contract that allows us to deploy Liquidity Pools (#112)
- Decimal: Implement
from_atomics
andto_string
(#115) - Curve: Implement
end
helper (#115) - Phoenix: Helper library for commonly used functions, structs, etc... (#116)
- Factory: Adds functionality that provides more detailed information about a single pool or a vector of pools (#128)
- Factory: Adds new query to search for a liquidity pool address by a tuple of token addresses. (#131)
- Curve: Modify implementation to not use named fields in Curve enum, since they are not allowed currently in soroban-sdk (#86)
- Curve: Modify implementation of PiecewiseLinear type to avoid using tuple due to soroban-sdk limitations (#100)
- Pair: Removes redundant slippage check (#96)
- All: more granular error handling (#95)
- All: changed the test for auths() and panic! (#90)
- Factory: Remove pair initialization through client in order to not import other contract in binary (#122)
- Stake: Reward distribution points are now updated when new user bonds (#118)
0.5.0 - 2023-08-04
- Update soroban-sdk from v0.8.4 to v0.9.2 (#81)
0.4.0 - 2023-07-04
- Pair: Incorrect division of assets during providing liquidity with single token; solution was to implement binary search approximation algorithm that finds optimal division to keep the pool ratio intact (within 1%) (#66)
- Curve: Add fully functional implementation of distribution curve that handles 3 types (constant, linear and piecewise linear) (#62)
- CI: Upload CI results to codecov and implement coverage badge in the readme (#64)
- Pair: input parameter validation (>= 0) (#66)
- Decimal: use num_bigint crate to increase increase range of allowed values and prevent avoidable overflow; increase test coverage (#55)
- Pair: modify swap signature to accept spread as BPS instead of plain number translated to percentage (#56)
- Pair: implement update_config message (#58)
- Decimal: Replace wee-alloc in favor of soroban allo features (#63)
0.3.1 - 2023-06-27
- Pair: implement checksum in release artifacts (#37)
- Pair: implement withdraw endpoint in pair contract (#38)
- Pair: implement protocol fees that are subtracted during the swap (#40)
- Pair: implement slippage tolerance into pair contract (#41)
- Pair: implement swap/reverse swap simulation (#45)
- Pair: implement upgrade entrypoint (#46)
- Pair: implement single asset liqudity providing (#50)
- Decimal: replace u128 with i128 in Decimal crate implementation... because someone sometime might want to use negative numbers in their contracts (#38)
- improved architecture docs (#44)
0.2.7 - 2023-06-22
- CI: automated release job which will create artifacts after new tag publication (#29)
- standarized Makefiles across whole repository (#29)
- better error support for pair contract; introduced logs and events (#28)