Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 33 additions & 5 deletions .github/workflows/Basic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,29 @@ jobs:
target: wasm32-unknown-unknown
override: true

- name: Run all Rust tests
uses: actions-rs/cargo@v1
with:
command: test
toolchain: 1.87.0
args: --workspace --all-targets --locked
env:
RUST_BACKTRACE: 1
integration:
name: Integration Test Suite
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Fix git safe.directory in container
run: mkdir -p /home/runner/work/_temp/_github_home && printf "[safe]\n\tdirectory = /github/workspace" >/home/runner/work/_temp/_github_home/.gitconfig
- name: Install contract toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.81.0
target: wasm32-unknown-unknown
override: true
- name: Compile contracts
run: |
for dir in contracts/*/
Expand All @@ -30,16 +53,21 @@ jobs:
RUSTFLAGS='-C link-arg=-s' cargo wasm
cd -
done

- name: Run unit tests
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.87.0
target: wasm32-unknown-unknown
override: true
- name: Run all integration tests
uses: actions-rs/cargo@v1
with:
command: unit-test
command: test
toolchain: 1.87.0
args: --locked
args: --workspace --all-targets --locked --features=integration
env:
RUST_BACKTRACE: 1

lints:
name: Lints
runs-on: ubuntu-latest
Expand Down
59 changes: 25 additions & 34 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = [ "contracts/*"]
members = [ "contracts/*", "packages/*" ]
resolver = "2"

[profile.release.package.injective-cosmwasm]
Expand All @@ -11,17 +11,17 @@ anyhow = { version = "1.0.66" }
base64 = { version = "0.21.5" }
cosmos-sdk-proto = { version = "0.20.0", default-features = false }
cosmwasm-schema = { version = "1.5.0" }
cosmwasm-std = { version = "3.0.2", features = ["cosmwasm_1_2", "cosmwasm_1_3", "cosmwasm_1_4", "cosmwasm_2_0", "iterator", "stargate" ] }
cosmwasm-std = { version = "3.0.2", features = [ "cosmwasm_1_2", "cosmwasm_1_3", "cosmwasm_1_4", "cosmwasm_2_0", "iterator", "stargate" ] }
cw-multi-test = { version = "3.0.0" }
cw-storage-plus = { version = "3.0.1" }
cw2 = { version = "3.0.0" }
ethereum-types = { version = "0.5.2" }
hex = { version = "0.4.3", features = [ "serde" ] }
injective-cosmwasm = { version = "0.3.5-1" }
injective-math = { version = "0.3.5-1" }
injective-std = { version = "1.16.4-1" }
injective-test-tube = { version = "1.16.4-1" }
injective-testing = { version = "1.1.13-1"}
injective-std = { version = "1.18.0" }
injective-test-tube = { version = "1.18.0" }
injective-testing = { path = "./packages/injective-testing" }
primitive-types = { version = "0.12.2", default-features = false }
prost = { version = "0.13.5", features = [ "prost-derive" ] }
rand = { version = "0.4.6" }
Expand Down
2 changes: 2 additions & 0 deletions contracts/injective-cosmwasm-mock/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ integration = [ ]
library = [ ]

[dependencies]
base64.workspace = true
cosmos-sdk-proto = { workspace = true }
cosmwasm-schema = { workspace = true }
cosmwasm-std = { workspace = true }
Expand All @@ -32,6 +33,7 @@ injective-std = { workspace = true }
prost = { workspace = true }
schemars = { workspace = true }
serde = { workspace = true }
serde_json.workspace = true
thiserror = { workspace = true }

[dev-dependencies]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ use injective_cosmwasm::{
TraderDerivativeOrdersResponse, TrimmedDerivativeLimitOrder,
};
use injective_math::FPDecimal;
use injective_std::types::injective::exchange::v2;
use injective_std::types::injective::exchange::v2::{self, open_notional_cap::Cap, OpenNotionalCap, OpenNotionalCapUncapped};
use injective_test_tube::{injective_std::types::injective::exchange::v1beta1::OrderType, Account, Exchange, Module, Wasm};
use injective_testing::test_tube::exchange::add_exchange_admin;
use injective_testing::test_tube::exchange::add_exchange_admin_v2;

#[test]
#[cfg_attr(not(feature = "integration"), ignore)]
Expand Down Expand Up @@ -55,7 +55,7 @@ fn test_query_derivative_market() {
let maker_fee_rate = FPDecimal::must_from_str("-0.0001");
let taker_fee_rate = FPDecimal::must_from_str("0.001");

add_exchange_admin(&env.app, &env.validator, env.owner.address());
add_exchange_admin_v2(&env.app, &env.validator, env.owner.address());

exchange
.instant_perpetual_market_launch_v2(
Expand All @@ -75,6 +75,9 @@ fn test_query_derivative_market() {
min_quantity_tick_size: dec_to_proto(min_quantity_tick_size),
min_notional: dec_to_proto(min_notional),
reduce_margin_ratio: dec_to_proto(initial_margin_ratio),
open_notional_cap: Some(OpenNotionalCap {
cap: Some(Cap::Uncapped(OpenNotionalCapUncapped {})),
}),
},
&env.owner,
)
Expand Down
12 changes: 9 additions & 3 deletions contracts/injective-cosmwasm-mock/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::msg::{InstantiateMsg, MSG_CREATE_DERIVATIVE_LIMIT_ORDER_ENDPOINT, MSG
use cosmwasm_std::{coin, Addr, Coin};
use injective_cosmwasm::{checked_address_to_subaccount_id, get_default_subaccount_id_for_checked_address, SubaccountId};
use injective_math::{scale::Scaled, FPDecimal};
use injective_std::types::injective::exchange::v2;
use injective_std::types::injective::exchange::v2::{self, open_notional_cap::Cap, OpenNotionalCap, OpenNotionalCapUncapped};
use injective_test_tube::{
injective_std::{
shim::{Any, Timestamp},
Expand Down Expand Up @@ -33,7 +33,7 @@ use injective_test_tube::{
};
use injective_testing::{
mocks::{MOCK_BASE_DECIMALS, MOCK_BASE_DENOM, MOCK_QUOTE_DECIMALS, MOCK_QUOTE_DENOM},
test_tube::exchange::{add_denom_notional_and_decimal, add_exchange_admin, launch_spot_market},
test_tube::exchange::{add_denom_notional_and_decimal, add_exchange_admin_v2, launch_spot_market},
utils::human_to_i64,
};
use prost::Message;
Expand Down Expand Up @@ -167,7 +167,7 @@ impl Setup {
market_id = Some(launch_spot_market(&exchange, &owner, "INJ/USDT".to_string()));
}
ExchangeType::Derivative => {
add_exchange_admin(&app, &validator, owner.address());
add_exchange_admin_v2(&app, &validator, owner.address());
market_id = Some(launch_perp_market(&exchange, &owner, "INJ/USDT".to_string()));
}
ExchangeType::None => {}
Expand Down Expand Up @@ -354,6 +354,9 @@ pub fn launch_perp_market(exchange: &Exchange<InjectiveTestApp>, signer: &Signin
min_quantity_tick_size: dec_to_proto(FPDecimal::must_from_str("0.001")),
min_notional: dec_to_proto(FPDecimal::must_from_str("0.01")),
reduce_margin_ratio: dec_to_proto(FPDecimal::must_from_str("0.033333")),
open_notional_cap: Some(OpenNotionalCap {
cap: Some(Cap::Uncapped(OpenNotionalCapUncapped {})),
}),
},
signer,
)
Expand Down Expand Up @@ -724,6 +727,9 @@ pub fn set_address_of_pyth_contract(app: &InjectiveTestApp, validator: &SigningA
authority: GOV_MODULE_ADDRESS.to_string(),
params: Some(Params {
pyth_contract: pyth_address.address(),
chainlink_verifier_proxy_contract: "".to_string(),
accept_unverified_chainlink_data_streams_reports: true,
chainlink_data_streams_verification_gas_limit: 1000000,
}),
},
&mut buf,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::{
error::ContractError,
handle::{handle_test_market_spot_order, handle_test_transient_derivative_order, handle_test_transient_spot_order},
msg::{ExecuteMsg, InstantiateMsg, QueryMsg},
query::{handle_query_bank_params, handle_query_spot_market, handle_query_stargate_raw},
query::{handle_derivative_market_query, handle_query_bank_params, handle_query_spot_market, handle_query_stargate_raw},
reply::{handle_create_derivative_order_reply_stargate, handle_create_order_reply_stargate},
};

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

Expand Down
8 changes: 4 additions & 4 deletions contracts/injective-cosmwasm-stargate-example/src/handle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use crate::{
use cosmos_sdk_proto::{cosmos::authz::v1beta1::MsgExec, traits::Message, Any};
use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, SubMsg};
use injective_cosmwasm::{InjectiveMsgWrapper, InjectiveQuerier, InjectiveQueryWrapper, MarketId, OrderType, SubaccountId};
use injective_math::FPDecimal;
use injective_math::{scale::Scaled, FPDecimal};

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

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

let order_msg = create_derivative_limit_order(
FPDecimal::must_from_str(price.as_str()),
FPDecimal::must_from_str(quantity.as_str()),
FPDecimal::must_from_str(margin.as_str()),
FPDecimal::must_from_str(price.as_str()).scaled(18i32),
FPDecimal::must_from_str(quantity.as_str()).scaled(18i32),
FPDecimal::must_from_str(margin.as_str()).scaled(18i32),
OrderType::Buy,
info.sender.as_str(),
subaccount_id.as_str(),
Expand Down
1 change: 1 addition & 0 deletions contracts/injective-cosmwasm-stargate-example/src/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ pub enum QueryMsg {
QueryStargateRaw { path: String, query_request: String },
QueryBankParams {},
QuerySpotMarket { market_id: String },
TestDerivativeMarketQuery { market_id: MarketId },
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
Expand Down
14 changes: 10 additions & 4 deletions contracts/injective-cosmwasm-stargate-example/src/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ use crate::msg::QueryStargateResponse;
use base64::engine::general_purpose::STANDARD as BASE64_STANDARD;
use base64::Engine as _;
use cosmwasm_std::{to_json_binary, to_json_vec, Binary, ContractResult, Deps, QuerierWrapper, QueryRequest, StdError, StdResult, SystemResult};
use injective_cosmwasm::InjectiveQueryWrapper;
use injective_std::types::{cosmos::bank::v1beta1::BankQuerier, injective::exchange::v1beta1::ExchangeQuerier};
use injective_cosmwasm::{InjectiveQuerier, InjectiveQueryWrapper, MarketId};
use injective_std::types::{cosmos::bank::v1beta1::BankQuerier, injective::exchange::v2::ExchangeQuerier as ExchangeQuerierV2};

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

pub fn handle_query_spot_market(deps: Deps<InjectiveQueryWrapper>, market_id: &str) -> StdResult<Binary> {
let querier = ExchangeQuerier::new(&deps.querier);
to_json_binary(&querier.spot_market(market_id.to_string())?)
let querier = InjectiveQuerier::new(&deps.querier);
let market_id = MarketId::new(market_id)?;
to_json_binary(&querier.query_spot_market(&market_id)?)
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.

pub fn handle_query_bank_params(deps: Deps<InjectiveQueryWrapper>) -> StdResult<Binary> {
let querier = BankQuerier::new(&deps.querier);
to_json_binary(&querier.params()?)
}

pub fn handle_derivative_market_query(deps: Deps<InjectiveQueryWrapper>, market_id: MarketId) -> StdResult<Binary> {
let querier = ExchangeQuerierV2::new(&deps.querier);
to_json_binary(&querier.derivative_market(market_id.as_str().to_string())?)
}
Loading
Loading