Skip to content

Commit

Permalink
Merge pull request astroport-fi#375 from astroport-fi/merge/fixes_100823
Browse files Browse the repository at this point in the history
Release v3.3.2
  • Loading branch information
epanchee authored Aug 10, 2023
2 parents b14d7b9 + 3a787de commit db40908
Show file tree
Hide file tree
Showing 12 changed files with 162 additions and 144 deletions.
74 changes: 74 additions & 0 deletions .github/workflows/check_artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Compiled binaries checks

on:
pull_request:
push:
branches:
- main

env:
CARGO_TERM_COLOR: always

jobs:
check-artifacts-size:
runs-on: ubuntu-latest
name: Check Artifacts Size
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout sources
uses: actions/checkout@v3

- uses: actions/cache@v3
with:
path: |
~/.cargo/bin
~/.cargo/git/checkouts
~/.cargo/git/db
~/.cargo/registry/cache
~/.cargo/registry/index
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

- name: Build Artifacts
run: |
docker run \
-v "$GITHUB_WORKSPACE":/code \
-v ~/.cargo/registry:/usr/local/cargo/registry \
-v ~/.cargo/git:/usr/local/cargo/git \
cosmwasm/workspace-optimizer:0.12.13
- name: Save artifacts cache
uses: actions/cache/save@v3
with:
path: artifacts
key: ${{ runner.os }}-artifacts-${{ hashFiles('**/Cargo.lock') }}

- name: Check Artifacts Size
run: |
$GITHUB_WORKSPACE/scripts/check_artifacts_size.sh
cosmwasm-check:
runs-on: ubuntu-latest
name: Cosmwasm check
needs: check-artifacts-size
steps:
# We need this only to get Cargo.lock
- name: Checkout sources
uses: actions/checkout@v3
- name: Restore cached artifacts
uses: actions/cache/restore@v3
with:
path: artifacts
key: ${{ runner.os }}-artifacts-${{ hashFiles('**/Cargo.lock') }}
fail-on-cache-miss: true
- name: Install cosmwasm-check
# Uses --debug for compilation speed
run: cargo install --debug --version 1.3.1 cosmwasm-check
- name: Cosmwasm check
run: |
cosmwasm-check $GITHUB_WORKSPACE/artifacts/*.wasm --available-capabilities staking,cosmwasm_1_1,injective,iterator,stargate
24 changes: 0 additions & 24 deletions .github/workflows/check_artifacts_size.yml

This file was deleted.

8 changes: 5 additions & 3 deletions .github/workflows/tests_and_checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@ jobs:

steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.1
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ github.token }}

- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v3
- uses: actions/cache@v3
if: always()
with:
path: |
~/.cargo/bin
Expand All @@ -32,6 +33,8 @@ jobs:
~/.cargo/registry/index
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
Expand Down Expand Up @@ -65,4 +68,3 @@ jobs:
with:
command: fmt
args: --all -- --check

4 changes: 2 additions & 2 deletions Cargo.lock

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

2 changes: 1 addition & 1 deletion contracts/periphery/liquidity_manager/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "astroport-liquidity-manager"
version = "1.0.0"
version = "1.0.1"
edition = "2021"

[features]
Expand Down
10 changes: 4 additions & 6 deletions contracts/periphery/liquidity_manager/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,13 +110,13 @@ returns excess assets to the user.

### `simulate`

Simulates liquidity provide or withdraw. Simulation direction depends on "pair_msg" field layout.
Simulates liquidity provide or withdraw.

Provide simulation example:

```json
{
"simulate": {
"simulate_provide": {
"pair_addr": "wasm1...addr",
"pair_msg": {
"provide_liquidity": {
Expand Down Expand Up @@ -151,11 +151,9 @@ Withdraw simulation example:

```json
{
"simulate": {
"simulate_withdraw": {
"pair_addr": "wasm1...addr",
"pair_msg": {
"lp_tokens": "1000"
}
"lp_tokens": "1000"
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
use cosmwasm_schema::write_api;

use astroport::liquidity_manager::{ExecuteMsg, InstantiateMsg, QueryMsg};

fn main() {
write_api! {
instantiate: InstantiateMsg,
query: QueryMsg,
execute: ExecuteMsg,
}
}
81 changes: 46 additions & 35 deletions contracts/periphery/liquidity_manager/src/query.rs
Original file line number Diff line number Diff line change
@@ -1,42 +1,50 @@
#[cfg(not(feature = "library"))]
use cosmwasm_std::entry_point;
use cosmwasm_std::{to_binary, Binary, Deps, Env, StdError, StdResult};
use cosmwasm_std::{to_binary, Binary, Deps, Env, StdError, StdResult, Uint128};

use crate::error::ContractError;
use astroport::asset::{Asset, PairInfo};
use astroport::factory::PairType;
use astroport::liquidity_manager::{QueryMsg, SimulateMessage};
use astroport::liquidity_manager::QueryMsg;
use astroport::pair::{ExecuteMsg as PairExecuteMsg, QueryMsg as PairQueryMsg};
use astroport::querier::query_supply;
use astroport_pair::contract::get_share_in_assets;

use crate::error::ContractError;
use crate::utils::{stableswap_provide_simulation, xyk_provide_simulation};

#[cfg_attr(not(feature = "library"), entry_point)]
pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult<Binary> {
match msg {
QueryMsg::Simulate {
QueryMsg::SimulateProvide {
pair_addr,
pair_msg: msg,
} => simulate(deps, env, pair_addr, msg),
pair_msg,
} => simulate_provide(deps, env, pair_addr, pair_msg),
QueryMsg::SimulateWithdraw {
pair_addr,
lp_tokens,
} => simulate_withdraw(deps, pair_addr, lp_tokens),
}
}

fn simulate(deps: Deps, env: Env, pair_addr: String, msg: SimulateMessage) -> StdResult<Binary> {
let pair_addr = deps.api.addr_validate(&pair_addr)?;

fn simulate_provide(
deps: Deps,
env: Env,
pair_addr: String,
msg: PairExecuteMsg,
) -> StdResult<Binary> {
match msg {
SimulateMessage::Provide(PairExecuteMsg::ProvideLiquidity {
PairExecuteMsg::ProvideLiquidity {
mut assets,
slippage_tolerance,
..
}) => {
} => {
if assets.len() != 2 {
return Err(StdError::generic_err(format!(
"{}",
ContractError::WrongPoolLength {}
)));
}
let pair_addr = deps.api.addr_validate(&pair_addr)?;
let pair_info: PairInfo = deps
.querier
.query_wasm_smart(&pair_addr, &PairQueryMsg::Pair {})?;
Expand Down Expand Up @@ -103,38 +111,43 @@ fn simulate(deps: Deps, env: Env, pair_addr: String, msg: SimulateMessage) -> St
PairType::Custom(..) => unimplemented!("not implemented yet"),
}
}
SimulateMessage::Withdraw { lp_tokens } => {
let assets: Vec<Asset> = deps
.querier
.query_wasm_smart(&pair_addr, &PairQueryMsg::Share { amount: lp_tokens })?;

if assets.len() != 2 {
return Err(StdError::generic_err(format!(
"{}",
ContractError::WrongPoolLength {}
)));
}

to_binary(&assets)
}
_ => Err(StdError::generic_err("Invalid simulate message")),
}
}

fn simulate_withdraw(deps: Deps, pair_addr: String, lp_tokens: Uint128) -> StdResult<Binary> {
let pair_addr = deps.api.addr_validate(&pair_addr)?;
let assets: Vec<Asset> = deps
.querier
.query_wasm_smart(pair_addr, &PairQueryMsg::Share { amount: lp_tokens })?;

if assets.len() != 2 {
return Err(StdError::generic_err(format!(
"{}",
ContractError::WrongPoolLength {}
)));
}

to_binary(&assets)
}

#[cfg(test)]
mod tests {
use super::*;
use std::str::FromStr;

use cosmwasm_std::{Addr, Decimal};

use astroport::asset::{native_asset_info, token_asset_info, AssetInfoExt};
use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg};
use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, ExecuteMsg as PairExecuteMsg};
use cosmwasm_std::{Addr, Decimal};
use std::str::FromStr;

use super::*;

#[test]
fn generate_query_msg_examples() {
let provide_query_msg = QueryMsg::Simulate {
let provide_query_msg = QueryMsg::SimulateProvide {
pair_addr: "wasm1...addr".to_string(),
pair_msg: SimulateMessage::Provide(PairExecuteMsg::ProvideLiquidity {
pair_msg: PairExecuteMsg::ProvideLiquidity {
assets: vec![
native_asset_info("uusd".to_string()).with_balance(100000u128),
token_asset_info(Addr::unchecked("wasm1...cw20address".to_string()))
Expand All @@ -143,19 +156,17 @@ mod tests {
slippage_tolerance: Some(Decimal::from_str("0.02").unwrap()),
auto_stake: Some(true),
receiver: Some("wasm1...addr".to_string()),
}),
},
};

println!(
"Provide example query msg: {}",
serde_json::to_string_pretty(&provide_query_msg).unwrap()
);

let withdraw_query_msg = QueryMsg::Simulate {
let withdraw_query_msg = QueryMsg::SimulateWithdraw {
pair_addr: "wasm1...addr".to_string(),
pair_msg: SimulateMessage::Withdraw {
lp_tokens: 1000u16.into(),
},
lp_tokens: 1000u16.into(),
};

println!(
Expand Down
12 changes: 5 additions & 7 deletions contracts/periphery/liquidity_manager/tests/helper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ use itertools::Itertools;

use astroport::asset::{native_asset_info, token_asset_info, Asset, AssetInfo, PairInfo};
use astroport::factory::{PairConfig, PairType};
use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg, SimulateMessage};
use astroport::liquidity_manager::{Cw20HookMsg, ExecuteMsg};
use astroport::liquidity_manager::{InstantiateMsg, QueryMsg};
use astroport::pair::{Cw20HookMsg as PairCw20HookMsg, ExecuteMsg as PairExecuteMsg};
use astroport::pair::{
Expand Down Expand Up @@ -376,9 +376,9 @@ impl Helper {
.wrap()
.query_wasm_smart(
&self.liquidity_manager,
&QueryMsg::Simulate {
&QueryMsg::SimulateProvide {
pair_addr: self.pair_addr.to_string(),
pair_msg: SimulateMessage::Provide(pair_msg),
pair_msg,
},
)
.map_err(Into::into)
Expand All @@ -389,11 +389,9 @@ impl Helper {
.wrap()
.query_wasm_smart(
&self.liquidity_manager,
&QueryMsg::Simulate {
&QueryMsg::SimulateWithdraw {
pair_addr: self.pair_addr.to_string(),
pair_msg: SimulateMessage::Withdraw {
lp_tokens: lp_tokens_amount.into(),
},
lp_tokens: lp_tokens_amount.into(),
},
)
.map_err(Into::into)
Expand Down
2 changes: 1 addition & 1 deletion packages/astroport/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "astroport"
version = "3.3.1"
version = "3.3.2"
authors = ["Astroport"]
edition = "2021"
description = "Common Astroport types, queriers and other utils"
Expand Down
Loading

0 comments on commit db40908

Please sign in to comment.