Skip to content

Commit 868f315

Browse files
authored
2.2.3-perps Migration (#18)
* add changelog for 2.2.2 -> 2.2.3 * add migration for credit manager * add migration for wasm oracle * add migration for params * fmt * add astroport zapper migration * add perps migration * ensure correct versions * fix version error * update changelog * fix perps migration * update schema * fix old migration tests * fix perp migration test * use correct oracle migration * fix cargo.lock version
1 parent 4e1395b commit 868f315

File tree

45 files changed

+604
-84
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+604
-84
lines changed

CHANGELOG.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,40 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## Unreleased (post v2.2.2-perps)
6+
7+
### Added
8+
- Support for blacklisting managed vaults in the Credit Manager
9+
- New `BlacklistedVault` error type in the Credit Manager
10+
- New test case `vault_cannot_be_used_after_being_blacklisted` to verify blacklist functionality
11+
- Vault fee improvements
12+
- Fix protocol fee in deleverage
13+
14+
#### Managed Vault Configuration
15+
- Added new structs:
16+
- `ManagedVaultCodeIds`: Manages allowed code IDs for managed vaults
17+
- `BlacklistedVaults`: Tracks blacklisted vault addresses
18+
19+
#### Vault Configuration Updates
20+
- Added `ManagedVaultConfigUpdate` enum for managing vault configurations:
21+
- `AddCodeId(u64)`: Add a new allowed code ID for managed vaults
22+
- `RemoveCodeId(u64)`: Remove an allowed code ID for managed vaults
23+
- `SetMinCreationFeeInUusd(u128)`: Set the minimum creation fee in micro USDC
24+
- `AddVaultToBlacklist(String)`: Add a vault address to the blacklist
25+
- `RemoveVaultFromBlacklist(String)`: Remove a vault address from the blacklist
26+
27+
### Other Notable Changes
28+
- Add PnL Query.
29+
- Prevent binding of vaults that have an admin.
30+
- Filter out perps with 0 OI (Open Interest).
31+
- Extra LP pricing safety.
32+
- Support for Astroport concentrated duality pools.
33+
34+
#### Contributors
35+
- See commit log for detailed contributor information.
36+
37+
---
38+
539
## v2.2.0 - Neutron Perps release
640

741
### Perps Integration

Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/credit-manager/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mars-credit-manager"
3-
version = { workspace = true }
3+
version = "2.2.3"
44
authors = { workspace = true }
55
license = { workspace = true }
66
edition = { workspace = true }

contracts/credit-manager/src/contract.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,5 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> ContractResult<Binary> {
178178

179179
#[cfg_attr(not(feature = "library"), entry_point)]
180180
pub fn migrate(deps: DepsMut, _env: Env, _msg: Empty) -> Result<Response, ContractError> {
181-
migrations::v2_2_0::migrate(deps)
181+
migrations::v2_2_3::migrate(deps)
182182
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
pub mod v2_2_0;
2+
pub mod v2_2_3;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use cosmwasm_std::{DepsMut, Response};
2+
use cw2::{assert_contract_version, set_contract_version};
3+
4+
use crate::{
5+
contract::{CONTRACT_NAME, CONTRACT_VERSION},
6+
error::ContractError,
7+
};
8+
9+
const FROM_VERSION: &str = "2.2.0";
10+
11+
pub fn migrate(deps: DepsMut) -> Result<Response, ContractError> {
12+
// Make sure we're migrating the correct contract and from the correct version
13+
assert_contract_version(deps.storage, &format!("crates.io:{CONTRACT_NAME}"), FROM_VERSION)?;
14+
15+
// Update contract version
16+
set_contract_version(deps.storage, format!("crates.io:{CONTRACT_NAME}"), CONTRACT_VERSION)?;
17+
18+
Ok(Response::new()
19+
.add_attribute("action", "migrate")
20+
.add_attribute("from_version", FROM_VERSION)
21+
.add_attribute("to_version", CONTRACT_VERSION))
22+
}

contracts/credit-manager/tests/tests/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ mod test_liquidate_staked_astro_lp;
2626
mod test_liquidate_vault;
2727
mod test_liquidation_pricing;
2828
mod test_migration_v2;
29+
mod test_migration_v2_2_3;
2930
mod test_no_health_check;
3031
mod test_perp;
3132
mod test_perp_vault;

contracts/credit-manager/tests/tests/test_migration_v2.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
use cosmwasm_std::{attr, testing::mock_env, Empty, Event};
1+
use cosmwasm_std::{attr, Event};
22
use cw2::{ContractVersion, VersionError};
3-
use mars_credit_manager::{contract::migrate, error::ContractError, state::NEXT_TRIGGER_ID};
3+
use mars_credit_manager::{error::ContractError, migrations, state::NEXT_TRIGGER_ID};
44
use mars_testing::mock_dependencies;
55

66
#[test]
77
fn wrong_contract_name() {
88
let mut deps = mock_dependencies(&[]);
9-
cw2::set_contract_version(deps.as_mut().storage, "contract_xyz", "2.1.0").unwrap();
9+
cw2::set_contract_version(deps.as_mut().storage, "contract_xyz", "2.2.0").unwrap();
1010

11-
let err = migrate(deps.as_mut(), mock_env(), Empty {}).unwrap_err();
11+
let err = migrations::v2_2_0::migrate(deps.as_mut()).unwrap_err();
1212

1313
assert_eq!(
1414
err,
@@ -25,7 +25,7 @@ fn wrong_contract_version() {
2525
cw2::set_contract_version(deps.as_mut().storage, "crates.io:mars-credit-manager", "4.1.0")
2626
.unwrap();
2727

28-
let err = migrate(deps.as_mut(), mock_env(), Empty {}).unwrap_err();
28+
let err = migrations::v2_2_0::migrate(deps.as_mut()).unwrap_err();
2929

3030
assert_eq!(
3131
err,
@@ -42,7 +42,7 @@ fn successful_migration() {
4242
cw2::set_contract_version(deps.as_mut().storage, "crates.io:mars-credit-manager", "2.1.0")
4343
.unwrap();
4444

45-
let res = migrate(deps.as_mut(), mock_env(), Empty {}).unwrap();
45+
let res = migrations::v2_2_0::migrate(deps.as_mut()).unwrap();
4646

4747
let order_id = NEXT_TRIGGER_ID.load(deps.as_ref().storage).unwrap();
4848
assert_eq!(order_id, 1);
@@ -52,12 +52,12 @@ fn successful_migration() {
5252
assert!(res.data.is_none());
5353
assert_eq!(
5454
res.attributes,
55-
vec![attr("action", "migrate"), attr("from_version", "2.1.0"), attr("to_version", "2.2.0")]
55+
vec![attr("action", "migrate"), attr("from_version", "2.1.0"), attr("to_version", "2.2.3")]
5656
);
5757

5858
let new_contract_version = ContractVersion {
5959
contract: "crates.io:mars-credit-manager".to_string(),
60-
version: "2.2.0".to_string(),
60+
version: "2.2.3".to_string(),
6161
};
6262
assert_eq!(cw2::get_contract_version(deps.as_ref().storage).unwrap(), new_contract_version);
6363
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
use cosmwasm_std::{attr, testing::mock_env, Empty};
2+
use cw2::{ContractVersion, VersionError};
3+
use mars_credit_manager::{contract::migrate, error::ContractError, state::OWNER};
4+
use mars_testing::mock_dependencies;
5+
6+
const CONTRACT_NAME: &str = "crates.io:mars-credit-manager";
7+
const CONTRACT_VERSION: &str = "2.2.3";
8+
9+
#[test]
10+
fn wrong_contract_name() {
11+
let mut deps = mock_dependencies(&[]);
12+
cw2::set_contract_version(deps.as_mut().storage, "contract_xyz", "2.2.0").unwrap();
13+
14+
let err = migrate(deps.as_mut(), mock_env(), Empty {}).unwrap_err();
15+
16+
assert_eq!(
17+
err,
18+
ContractError::Version(VersionError::WrongContract {
19+
expected: CONTRACT_NAME.to_string(),
20+
found: "contract_xyz".to_string()
21+
})
22+
);
23+
}
24+
25+
#[test]
26+
fn wrong_contract_version() {
27+
let mut deps = mock_dependencies(&[]);
28+
cw2::set_contract_version(deps.as_mut().storage, CONTRACT_NAME, "2.1.0").unwrap();
29+
30+
let err = migrate(deps.as_mut(), mock_env(), Empty {}).unwrap_err();
31+
32+
assert_eq!(
33+
err,
34+
ContractError::Version(VersionError::WrongVersion {
35+
expected: "2.2.0".to_string(),
36+
found: "2.1.0".to_string()
37+
})
38+
);
39+
}
40+
41+
#[test]
42+
fn successful_migration() {
43+
let mut deps = mock_dependencies(&[]);
44+
cw2::set_contract_version(deps.as_mut().storage, CONTRACT_NAME, "2.2.0").unwrap();
45+
46+
// Set up the owner (required for the migration)
47+
let owner = "owner";
48+
let deps_mut = deps.as_mut();
49+
OWNER
50+
.initialize(
51+
deps_mut.storage,
52+
deps_mut.api,
53+
mars_owner::OwnerInit::SetInitialOwner {
54+
owner: owner.to_string(),
55+
},
56+
)
57+
.unwrap();
58+
59+
// Execute the migration
60+
let res = migrate(deps.as_mut(), mock_env(), Empty {}).unwrap();
61+
62+
// Verify the response
63+
assert_eq!(res.messages, vec![]);
64+
assert_eq!(
65+
res.attributes,
66+
vec![
67+
attr("action", "migrate"),
68+
attr("from_version", "2.2.0"),
69+
attr("to_version", CONTRACT_VERSION),
70+
]
71+
);
72+
assert!(res.data.is_none());
73+
74+
// Verify the contract version was updated
75+
let new_contract_version = cw2::get_contract_version(deps.as_ref().storage).unwrap();
76+
assert_eq!(
77+
new_contract_version,
78+
ContractVersion {
79+
contract: CONTRACT_NAME.to_string(),
80+
version: CONTRACT_VERSION.to_string()
81+
}
82+
);
83+
}

contracts/oracle/wasm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "mars-oracle-wasm"
33
description = "A smart contract that provides prices for generic CosmWasm chains"
4-
version = { workspace = true }
4+
version = "2.2.3"
55
authors = { workspace = true }
66
edition = { workspace = true }
77
license = { workspace = true }

0 commit comments

Comments
 (0)