Skip to content

Commit cbac7f2

Browse files
authored
Merge pull request #263 from InjectiveLabs/feat/upgrade-to-chain-1.18
2 parents e50d59d + 1199a46 commit cbac7f2

19 files changed

Lines changed: 371 additions & 143 deletions

File tree

.github/workflows/Basic.yml

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,29 @@ jobs:
2222
target: wasm32-unknown-unknown
2323
override: true
2424

25+
- name: Run all Rust tests
26+
uses: actions-rs/cargo@v1
27+
with:
28+
command: test
29+
toolchain: 1.87.0
30+
args: --workspace --all-targets --locked
31+
env:
32+
RUST_BACKTRACE: 1
33+
integration:
34+
name: Integration Test Suite
35+
runs-on: ubuntu-latest
36+
steps:
37+
- name: Checkout sources
38+
uses: actions/checkout@v2
39+
- name: Fix git safe.directory in container
40+
run: mkdir -p /home/runner/work/_temp/_github_home && printf "[safe]\n\tdirectory = /github/workspace" >/home/runner/work/_temp/_github_home/.gitconfig
41+
- name: Install contract toolchain
42+
uses: actions-rs/toolchain@v1
43+
with:
44+
profile: minimal
45+
toolchain: 1.81.0
46+
target: wasm32-unknown-unknown
47+
override: true
2548
- name: Compile contracts
2649
run: |
2750
for dir in contracts/*/
@@ -30,16 +53,21 @@ jobs:
3053
RUSTFLAGS='-C link-arg=-s' cargo wasm
3154
cd -
3255
done
33-
34-
- name: Run unit tests
56+
- name: Install stable toolchain
57+
uses: actions-rs/toolchain@v1
58+
with:
59+
profile: minimal
60+
toolchain: 1.87.0
61+
target: wasm32-unknown-unknown
62+
override: true
63+
- name: Run all integration tests
3564
uses: actions-rs/cargo@v1
3665
with:
37-
command: unit-test
66+
command: test
3867
toolchain: 1.87.0
39-
args: --locked
68+
args: --workspace --all-targets --locked --features=integration
4069
env:
4170
RUST_BACKTRACE: 1
42-
4371
lints:
4472
name: Lints
4573
runs-on: ubuntu-latest

Cargo.lock

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

Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[workspace]
2-
members = [ "contracts/*"]
2+
members = [ "contracts/*", "packages/*" ]
33
resolver = "2"
44

55
[profile.release.package.injective-cosmwasm]
@@ -11,17 +11,17 @@ anyhow = { version = "1.0.66" }
1111
base64 = { version = "0.21.5" }
1212
cosmos-sdk-proto = { version = "0.20.0", default-features = false }
1313
cosmwasm-schema = { version = "1.5.0" }
14-
cosmwasm-std = { version = "3.0.2", features = ["cosmwasm_1_2", "cosmwasm_1_3", "cosmwasm_1_4", "cosmwasm_2_0", "iterator", "stargate" ] }
14+
cosmwasm-std = { version = "3.0.2", features = [ "cosmwasm_1_2", "cosmwasm_1_3", "cosmwasm_1_4", "cosmwasm_2_0", "iterator", "stargate" ] }
1515
cw-multi-test = { version = "3.0.0" }
1616
cw-storage-plus = { version = "3.0.1" }
1717
cw2 = { version = "3.0.0" }
1818
ethereum-types = { version = "0.5.2" }
1919
hex = { version = "0.4.3", features = [ "serde" ] }
2020
injective-cosmwasm = { version = "0.3.5-1" }
2121
injective-math = { version = "0.3.5-1" }
22-
injective-std = { version = "1.16.4-1" }
23-
injective-test-tube = { version = "1.16.4-1" }
24-
injective-testing = { version = "1.1.13-1"}
22+
injective-std = { version = "1.18.0" }
23+
injective-test-tube = { version = "1.18.0" }
24+
injective-testing = { path = "./packages/injective-testing" }
2525
primitive-types = { version = "0.12.2", default-features = false }
2626
prost = { version = "0.13.5", features = [ "prost-derive" ] }
2727
rand = { version = "0.4.6" }

contracts/injective-cosmwasm-mock/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ integration = [ ]
2121
library = [ ]
2222

2323
[dependencies]
24+
base64.workspace = true
2425
cosmos-sdk-proto = { workspace = true }
2526
cosmwasm-schema = { workspace = true }
2627
cosmwasm-std = { workspace = true }
@@ -32,6 +33,7 @@ injective-std = { workspace = true }
3233
prost = { workspace = true }
3334
schemars = { workspace = true }
3435
serde = { workspace = true }
36+
serde_json.workspace = true
3537
thiserror = { workspace = true }
3638

3739
[dev-dependencies]

contracts/injective-cosmwasm-mock/src/testing/test_exchange_derivative.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ use injective_cosmwasm::{
1414
TraderDerivativeOrdersResponse, TrimmedDerivativeLimitOrder,
1515
};
1616
use injective_math::FPDecimal;
17-
use injective_std::types::injective::exchange::v2;
17+
use injective_std::types::injective::exchange::v2::{self, open_notional_cap::Cap, OpenNotionalCap, OpenNotionalCapUncapped};
1818
use injective_test_tube::{injective_std::types::injective::exchange::v1beta1::OrderType, Account, Exchange, Module, Wasm};
19-
use injective_testing::test_tube::exchange::add_exchange_admin;
19+
use injective_testing::test_tube::exchange::add_exchange_admin_v2;
2020

2121
#[test]
2222
#[cfg_attr(not(feature = "integration"), ignore)]
@@ -55,7 +55,7 @@ fn test_query_derivative_market() {
5555
let maker_fee_rate = FPDecimal::must_from_str("-0.0001");
5656
let taker_fee_rate = FPDecimal::must_from_str("0.001");
5757

58-
add_exchange_admin(&env.app, &env.validator, env.owner.address());
58+
add_exchange_admin_v2(&env.app, &env.validator, env.owner.address());
5959

6060
exchange
6161
.instant_perpetual_market_launch_v2(
@@ -75,6 +75,9 @@ fn test_query_derivative_market() {
7575
min_quantity_tick_size: dec_to_proto(min_quantity_tick_size),
7676
min_notional: dec_to_proto(min_notional),
7777
reduce_margin_ratio: dec_to_proto(initial_margin_ratio),
78+
open_notional_cap: Some(OpenNotionalCap {
79+
cap: Some(Cap::Uncapped(OpenNotionalCapUncapped {})),
80+
}),
7881
},
7982
&env.owner,
8083
)

contracts/injective-cosmwasm-mock/src/utils.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::msg::{InstantiateMsg, MSG_CREATE_DERIVATIVE_LIMIT_ORDER_ENDPOINT, MSG
22
use cosmwasm_std::{coin, Addr, Coin};
33
use injective_cosmwasm::{checked_address_to_subaccount_id, get_default_subaccount_id_for_checked_address, SubaccountId};
44
use injective_math::{scale::Scaled, FPDecimal};
5-
use injective_std::types::injective::exchange::v2;
5+
use injective_std::types::injective::exchange::v2::{self, open_notional_cap::Cap, OpenNotionalCap, OpenNotionalCapUncapped};
66
use injective_test_tube::{
77
injective_std::{
88
shim::{Any, Timestamp},
@@ -33,7 +33,7 @@ use injective_test_tube::{
3333
};
3434
use injective_testing::{
3535
mocks::{MOCK_BASE_DECIMALS, MOCK_BASE_DENOM, MOCK_QUOTE_DECIMALS, MOCK_QUOTE_DENOM},
36-
test_tube::exchange::{add_denom_notional_and_decimal, add_exchange_admin, launch_spot_market},
36+
test_tube::exchange::{add_denom_notional_and_decimal, add_exchange_admin_v2, launch_spot_market},
3737
utils::human_to_i64,
3838
};
3939
use prost::Message;
@@ -167,7 +167,7 @@ impl Setup {
167167
market_id = Some(launch_spot_market(&exchange, &owner, "INJ/USDT".to_string()));
168168
}
169169
ExchangeType::Derivative => {
170-
add_exchange_admin(&app, &validator, owner.address());
170+
add_exchange_admin_v2(&app, &validator, owner.address());
171171
market_id = Some(launch_perp_market(&exchange, &owner, "INJ/USDT".to_string()));
172172
}
173173
ExchangeType::None => {}
@@ -354,6 +354,9 @@ pub fn launch_perp_market(exchange: &Exchange<InjectiveTestApp>, signer: &Signin
354354
min_quantity_tick_size: dec_to_proto(FPDecimal::must_from_str("0.001")),
355355
min_notional: dec_to_proto(FPDecimal::must_from_str("0.01")),
356356
reduce_margin_ratio: dec_to_proto(FPDecimal::must_from_str("0.033333")),
357+
open_notional_cap: Some(OpenNotionalCap {
358+
cap: Some(Cap::Uncapped(OpenNotionalCapUncapped {})),
359+
}),
357360
},
358361
signer,
359362
)
@@ -724,6 +727,9 @@ pub fn set_address_of_pyth_contract(app: &InjectiveTestApp, validator: &SigningA
724727
authority: GOV_MODULE_ADDRESS.to_string(),
725728
params: Some(Params {
726729
pyth_contract: pyth_address.address(),
730+
chainlink_verifier_proxy_contract: "".to_string(),
731+
accept_unverified_chainlink_data_streams_reports: true,
732+
chainlink_data_streams_verification_gas_limit: 1000000,
727733
}),
728734
},
729735
&mut buf,

contracts/injective-cosmwasm-stargate-example/src/contract.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{
22
error::ContractError,
33
handle::{handle_test_market_spot_order, handle_test_transient_derivative_order, handle_test_transient_spot_order},
44
msg::{ExecuteMsg, InstantiateMsg, QueryMsg},
5-
query::{handle_query_bank_params, handle_query_spot_market, handle_query_stargate_raw},
5+
query::{handle_derivative_market_query, handle_query_bank_params, handle_query_spot_market, handle_query_stargate_raw},
66
reply::{handle_create_derivative_order_reply_stargate, handle_create_order_reply_stargate},
77
};
88

@@ -57,6 +57,7 @@ pub fn query(deps: Deps<InjectiveQueryWrapper>, _env: Env, msg: QueryMsg) -> Std
5757
QueryMsg::QueryStargateRaw { path, query_request } => handle_query_stargate_raw(&deps.querier, path, query_request),
5858
QueryMsg::QueryBankParams {} => handle_query_bank_params(deps),
5959
QueryMsg::QuerySpotMarket { market_id } => handle_query_spot_market(deps, &market_id),
60+
QueryMsg::TestDerivativeMarketQuery { market_id } => handle_derivative_market_query(deps, market_id),
6061
}
6162
}
6263

contracts/injective-cosmwasm-stargate-example/src/handle.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::{
99
use cosmos_sdk_proto::{cosmos::authz::v1beta1::MsgExec, traits::Message, Any};
1010
use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, SubMsg};
1111
use injective_cosmwasm::{InjectiveMsgWrapper, InjectiveQuerier, InjectiveQueryWrapper, MarketId, OrderType, SubaccountId};
12-
use injective_math::FPDecimal;
12+
use injective_math::{scale::Scaled, FPDecimal};
1313

1414
pub const MSG_EXEC: &str = "/cosmos.authz.v1beta1.MsgExec";
1515

@@ -92,9 +92,9 @@ pub fn handle_test_transient_derivative_order(
9292
let market = querier.query_derivative_market(&market_id).unwrap().market.unwrap();
9393

9494
let order_msg = create_derivative_limit_order(
95-
FPDecimal::must_from_str(price.as_str()),
96-
FPDecimal::must_from_str(quantity.as_str()),
97-
FPDecimal::must_from_str(margin.as_str()),
95+
FPDecimal::must_from_str(price.as_str()).scaled(18i32),
96+
FPDecimal::must_from_str(quantity.as_str()).scaled(18i32),
97+
FPDecimal::must_from_str(margin.as_str()).scaled(18i32),
9898
OrderType::Buy,
9999
info.sender.as_str(),
100100
subaccount_id.as_str(),

contracts/injective-cosmwasm-stargate-example/src/msg.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ pub enum QueryMsg {
3939
QueryStargateRaw { path: String, query_request: String },
4040
QueryBankParams {},
4141
QuerySpotMarket { market_id: String },
42+
TestDerivativeMarketQuery { market_id: MarketId },
4243
}
4344

4445
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]

contracts/injective-cosmwasm-stargate-example/src/query.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use crate::msg::QueryStargateResponse;
33
use base64::engine::general_purpose::STANDARD as BASE64_STANDARD;
44
use base64::Engine as _;
55
use cosmwasm_std::{to_json_binary, to_json_vec, Binary, ContractResult, Deps, QuerierWrapper, QueryRequest, StdError, StdResult, SystemResult};
6-
use injective_cosmwasm::InjectiveQueryWrapper;
7-
use injective_std::types::{cosmos::bank::v1beta1::BankQuerier, injective::exchange::v1beta1::ExchangeQuerier};
6+
use injective_cosmwasm::{InjectiveQuerier, InjectiveQueryWrapper, MarketId};
7+
use injective_std::types::{cosmos::bank::v1beta1::BankQuerier, injective::exchange::v2::ExchangeQuerier as ExchangeQuerierV2};
88

99
pub fn handle_query_stargate_raw(querier: &QuerierWrapper<InjectiveQueryWrapper>, path: String, query_request: String) -> StdResult<Binary> {
1010
let data = Binary::from_base64(&query_request)?;
@@ -27,11 +27,17 @@ pub fn handle_query_stargate_raw(querier: &QuerierWrapper<InjectiveQueryWrapper>
2727
}
2828

2929
pub fn handle_query_spot_market(deps: Deps<InjectiveQueryWrapper>, market_id: &str) -> StdResult<Binary> {
30-
let querier = ExchangeQuerier::new(&deps.querier);
31-
to_json_binary(&querier.spot_market(market_id.to_string())?)
30+
let querier = InjectiveQuerier::new(&deps.querier);
31+
let market_id = MarketId::new(market_id)?;
32+
to_json_binary(&querier.query_spot_market(&market_id)?)
3233
}
3334

3435
pub fn handle_query_bank_params(deps: Deps<InjectiveQueryWrapper>) -> StdResult<Binary> {
3536
let querier = BankQuerier::new(&deps.querier);
3637
to_json_binary(&querier.params()?)
3738
}
39+
40+
pub fn handle_derivative_market_query(deps: Deps<InjectiveQueryWrapper>, market_id: MarketId) -> StdResult<Binary> {
41+
let querier = ExchangeQuerierV2::new(&deps.querier);
42+
to_json_binary(&querier.derivative_market(market_id.as_str().to_string())?)
43+
}

0 commit comments

Comments
 (0)