From b8bb56a38f6d37dcf3662905d2168dc36868b4ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 00:18:22 -0600 Subject: [PATCH 01/29] build(deps): bump actions/cache from 3 to 4 (#118) Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: Unique-Divine --- .github/workflows/build-artifacts.yml | 2 +- .github/workflows/rust-test.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index d3c3427..5a18a4c 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Rust caches - uses: actions/cache@v3 + uses: actions/cache@v4 id: rust-cache with: path: | diff --git a/.github/workflows/rust-test.yml b/.github/workflows/rust-test.yml index b9fee50..b0522fe 100644 --- a/.github/workflows/rust-test.yml +++ b/.github/workflows/rust-test.yml @@ -22,7 +22,7 @@ jobs: with: submodules: true - name: "Set up Rust caches" - uses: actions/cache@v3 + uses: actions/cache@v4 id: rust-cache with: path: | @@ -46,7 +46,7 @@ jobs: with: submodules: true - name: "Set up Rust caches" - uses: actions/cache@v3 + uses: actions/cache@v4 id: rust-cache with: path: | @@ -68,7 +68,7 @@ jobs: with: submodules: true - name: "Set up Rust caches" - uses: actions/cache@v3 + uses: actions/cache@v4 id: rust-cache with: path: | From 9c9f1e11b6a876b48acb1448abee827dfdb828ba Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Thu, 22 Feb 2024 14:55:44 -0600 Subject: [PATCH 02/29] docs(nibi-stargate): more descriptive tutorial --- contracts/nibi-stargate/README.md | 93 +++++++++++++++++++++++++++---- 1 file changed, 81 insertions(+), 12 deletions(-) diff --git a/contracts/nibi-stargate/README.md b/contracts/nibi-stargate/README.md index d39d1c1..1dd1674 100644 --- a/contracts/nibi-stargate/README.md +++ b/contracts/nibi-stargate/README.md @@ -1,25 +1,87 @@ # cw-nibiru/contracts/nibi-stargate -This smart contract showcases usage examples for certain Nibiru-specific and -Cosmos-SDK-specific: +This smart contract showcases usage examples for creating and managing fungible tokens native to Nibiru Chain. -1. **Stargate messages**: Instances of the [`CosmosMsg::Stargate` variant in - cosmwasm-std](https://docs.rs/cosmwasm-std/1.4.1/cosmwasm_std/enum.CosmosMsg.html). These correspond to - [StargateMsg in CosmWasm/wasmvm](https://pkg.go.dev/github.com/CosmWasm/wasmvm@v1.4.1/types#StargateMsg) -2. **Stargate queries**: Instances of the [`QueryRequest::Stargate` variant in - cosmwasm-std](https://docs.rs/cosmwasm-std/1.4.1/cosmwasm_std/enum.QueryRequest.html). These correspond to - [StargateQuery from CosmWasm/wasmvm](https://pkg.go.dev/github.com/CosmWasm/wasmvm@v1.4.1/types#StargateMsg) Table of Contents -- [Examples](#examples) -- [Stargate Types](#stargate-types) +- [Guide: Using the Smart Contract](#guide-using-the-smart-contract) + - [Set environmnent vars](#set-environmnent-vars) + - [Instantiate the Smart Contract](#instantiate-the-smart-contract) +- [Broadcasting Transactions to the Network](#broadcasting-transactions-to-the-network) + - [Examples](#examples) +- [Appendix: Stargate Types](#appendix-stargate-types) - [cosmwasm-std: CosmosMsg::Stargate](#cosmwasm-std-cosmosmsgstargate) - [wasmvm: StargateMsg](#wasmvm-stargatemsg) - [cosmwasm-std: QueryRequest::Stargate](#cosmwasm-std-queryrequeststargate) - [wasmvm: StargateQuery](#wasmvm-stargatequery) -## Examples +## Guide: Using the Smart Contract + +A pre-built version of the Wasm bytecode for every smart contract in the +[NibiruChain/cw-nibiru](https://github.com/NibiruChain/cw-nibiru) repo can be +found in the "artifacts" directory. + +### Set environmnent vars + +This guide assumes you are working with the `nibid` command-line interface. See "[https://nibiru.fi/docs/dev/cli/nibid-binary.html | Nibiru Docs](https://nibiru.fi/docs/dev/cli)" for installation instructions. Note that `nibid` currently only supports Unix systems like MacOS and Linux. We don't yet support vanilla Windows, but you can WSL Ubuntu. + +| Name | Description | +| --- | --- | +| `KEYNAME` | Name in the keyring for the account you'll use to broadcast transactions. It defaults to "validator" on local instances of Nibiru. | +| `tx alias` | This "tx" alias will help with reading the tx responses. It defines a command that first extracts the transaction hash using `jq`, waits for 3 seconds to ensure the transaction is processed, queries the transaction details using `nibid q tx`, and appends the structured information to `out.json`. | + +```bash +# KEYNAME: Name in the keyring for the account you'll use to broadcast +# transactions. It defaults to "validator" on local instances of Nibiru. +KEYNAME="validator" + +# This "tx" alias will help with reading the tx responses. +alias tx="jq -rcs '.[0].txhash' | { read txhash; sleep 3; nibid q tx \$txhash | jq '{txhash, height, code, logs, tx, gas_wanted, gas_used}' >> out.json}" +``` + +### Instantiate the Smart Contract + +In order to instantiate a smart contract, you first need a reference its stored +bytecode on the blockchain. The bytecode may already be stored at a known +"code_id". + +If it is not, you must deploy or store the bytecode yourself like so: +```bash + +nibid tx wasm store ../../artifacts/nibi_stargate.wasm --from="$KEYNAME" --gas=2000999 -y | tx +``` + +ℹ️a If smart contract bytecode is already stored, or deployed, it doesn't need to +be redeployed to create new smart contracts. **Instantiating is what creates new +contracts with new state and a unique address. + +```bash +CODE_ID=1 +nibid tx wasm inst $CODE_ID '{}' --label="fungible tokens" --no-admin --from="$KEYNAME" -y | tx +``` + +- Why is the argument `'{}'` passed during instantiation? + The `InstantiateMsg` for this smart contract is blank. + ```rust + #[cw_serde] + pub struct InstantiateMsg {} // nibi-stargate/src/msgs.rs + ``` + +## Broadcasting Transactions to the Network + +```rust +#[cw_serde] +pub enum ExecuteMsg { + // For x/tokenfactory + CreateDenom { subdenom: String }, + Mint { coin: Coin, mint_to: String }, + Burn { coin: Coin, burn_from: String }, + ChangeAdmin { denom: String, new_admin: String }, +} +``` + +### Examples `ExecuteMsg::CreateDenom` @@ -62,7 +124,14 @@ Table of Contents } ``` -## Stargate Types +## Appendix: Stargate Types + +1. **Stargate messages**: Instances of the [`CosmosMsg::Stargate` variant in + cosmwasm-std](https://docs.rs/cosmwasm-std/1.4.1/cosmwasm_std/enum.CosmosMsg.html). These correspond to + [StargateMsg in CosmWasm/wasmvm](https://pkg.go.dev/github.com/CosmWasm/wasmvm@v1.4.1/types#StargateMsg) +2. **Stargate queries**: Instances of the [`QueryRequest::Stargate` variant in + cosmwasm-std](https://docs.rs/cosmwasm-std/1.4.1/cosmwasm_std/enum.QueryRequest.html). These correspond to + [StargateQuery from CosmWasm/wasmvm](https://pkg.go.dev/github.com/CosmWasm/wasmvm@v1.4.1/types#StargateMsg) ### cosmwasm-std: CosmosMsg::Stargate From 5436b536d024bb94418a226ca9213c717bbf53ac Mon Sep 17 00:00:00 2001 From: Matthias <97468149+matthiasmatt@users.noreply.github.com> Date: Tue, 27 Feb 2024 19:59:52 +0100 Subject: [PATCH 03/29] feat: create airdrop vesting contract (#124) --- .gitignore | 1 + Cargo.lock | 78 +- Cookbook.md | 114 ++- README.md | 1 + artifacts/airdrop_token_vesting.wasm | Bin 0 -> 215280 bytes artifacts/checksums.txt | 1 + contracts/README.md | 4 +- .../.cargo/config | 3 + contracts/airdrop-token-vesting/.gitignore | 12 + contracts/airdrop-token-vesting/Cargo.lock | 264 ++++++ contracts/airdrop-token-vesting/Cargo.toml | 35 + contracts/airdrop-token-vesting/README.md | 192 ++++ .../airdrop-token-vesting/examples/schema.rs | 19 + .../schema/execute_msg.json | 224 +++++ .../schema/instantiate_msg.json | 22 + .../schema/query_msg.json | 80 ++ .../schema/vesting_account_response.json | 143 +++ .../airdrop-token-vesting/src/contract.rs | 612 +++++++++++++ contracts/airdrop-token-vesting/src/errors.rs | 51 ++ .../src/lib.rs | 3 +- contracts/airdrop-token-vesting/src/msg.rs | 362 ++++++++ contracts/airdrop-token-vesting/src/state.rs | 39 + .../airdrop-token-vesting/src/testing.rs | 865 ++++++++++++++++++ contracts/airdrop/Cargo.toml | 36 - contracts/airdrop/README.md | 13 - contracts/airdrop/src/contract.rs | 256 ------ contracts/airdrop/src/msg.rs | 38 - contracts/airdrop/src/state.rs | 18 - contracts/airdrop/src/tests/execute/claim.rs | 76 -- contracts/airdrop/src/tests/execute/mod.rs | 3 - .../airdrop/src/tests/execute/reward_users.rs | 231 ----- .../airdrop/src/tests/execute/withdraw.rs | 115 --- contracts/airdrop/src/tests/instantiate.rs | 74 -- contracts/airdrop/src/tests/mod.rs | 3 - contracts/airdrop/src/tests/query/campaign.rs | 45 - contracts/airdrop/src/tests/query/mod.rs | 2 - .../airdrop/src/tests/query/user_pool.rs | 73 -- 37 files changed, 3031 insertions(+), 1077 deletions(-) create mode 100644 artifacts/airdrop_token_vesting.wasm rename contracts/{airdrop => airdrop-token-vesting}/.cargo/config (67%) create mode 100644 contracts/airdrop-token-vesting/.gitignore create mode 100644 contracts/airdrop-token-vesting/Cargo.lock create mode 100644 contracts/airdrop-token-vesting/Cargo.toml create mode 100644 contracts/airdrop-token-vesting/README.md create mode 100644 contracts/airdrop-token-vesting/examples/schema.rs create mode 100644 contracts/airdrop-token-vesting/schema/execute_msg.json create mode 100644 contracts/airdrop-token-vesting/schema/instantiate_msg.json create mode 100644 contracts/airdrop-token-vesting/schema/query_msg.json create mode 100644 contracts/airdrop-token-vesting/schema/vesting_account_response.json create mode 100644 contracts/airdrop-token-vesting/src/contract.rs create mode 100644 contracts/airdrop-token-vesting/src/errors.rs rename contracts/{airdrop => airdrop-token-vesting}/src/lib.rs (67%) create mode 100644 contracts/airdrop-token-vesting/src/msg.rs create mode 100644 contracts/airdrop-token-vesting/src/state.rs create mode 100644 contracts/airdrop-token-vesting/src/testing.rs delete mode 100644 contracts/airdrop/Cargo.toml delete mode 100644 contracts/airdrop/README.md delete mode 100644 contracts/airdrop/src/contract.rs delete mode 100644 contracts/airdrop/src/msg.rs delete mode 100644 contracts/airdrop/src/state.rs delete mode 100644 contracts/airdrop/src/tests/execute/claim.rs delete mode 100644 contracts/airdrop/src/tests/execute/mod.rs delete mode 100644 contracts/airdrop/src/tests/execute/reward_users.rs delete mode 100644 contracts/airdrop/src/tests/execute/withdraw.rs delete mode 100644 contracts/airdrop/src/tests/instantiate.rs delete mode 100644 contracts/airdrop/src/tests/mod.rs delete mode 100644 contracts/airdrop/src/tests/query/campaign.rs delete mode 100644 contracts/airdrop/src/tests/query/mod.rs delete mode 100644 contracts/airdrop/src/tests/query/user_pool.rs diff --git a/.gitignore b/.gitignore index aad66ca..bab7ff1 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ dist node_modules/ yarn.lock .vscode/ +.idea/ contracts/*/.editorconfig packages/*/.editorconfig diff --git a/Cargo.lock b/Cargo.lock index 49b5e3e..01c444e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,19 +38,18 @@ dependencies = [ ] [[package]] -name = "airdrop" -version = "0.0.1" +name = "airdrop-token-vesting" +version = "0.2.0" dependencies = [ "anyhow", "cosmwasm-schema", "cosmwasm-std", - "cw-ownable", "cw-storage-plus", - "cw2", - "nibiru-std", + "cw-utils", + "cw20", "schemars", - "semver", "serde", + "serde_json", "thiserror", ] @@ -1050,21 +1049,6 @@ dependencies = [ "memmap2 0.5.10", ] -[[package]] -name = "e2e-tests" -version = "0.1.0" -dependencies = [ - "anyhow", - "bash-rs", - "cosmwasm-schema", - "cosmwasm-std", - "home", - "serde", - "serde_json", - "thiserror", - "toml", -] - [[package]] name = "ecdsa" version = "0.16.9" @@ -2493,15 +2477,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_spanned" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2810,40 +2785,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" -dependencies = [ - "indexmap 2.1.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - [[package]] name = "tower-service" version = "0.3.2" @@ -3459,15 +3400,6 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" -[[package]] -name = "winnow" -version = "0.5.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a4882e6b134d6c28953a387571f1acdd3496830d5e36c5e3a1075580ea641c" -dependencies = [ - "memchr", -] - [[package]] name = "winreg" version = "0.50.0" diff --git a/Cookbook.md b/Cookbook.md index d1a5d7f..046c704 100644 --- a/Cookbook.md +++ b/Cookbook.md @@ -260,12 +260,13 @@ This contract implements vesting accounts for the CW20 and native tokens. There's no instantiation message. ```javascript -{} +{ +} ``` ### 3.2 Execute -- **Receive** +- **Receive** ```javascript { @@ -340,7 +341,8 @@ This smart contract showcases usage examples for certain Nibiru-specific and Cos There's no instantiation message. ```javascript -{} +{ +} ``` ### 4.2 Execute @@ -356,33 +358,33 @@ There's no instantiation message. - **Mint** mints tokens ```javascript -{ - "mint": { - "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, - "mint_to": "[mint-to-addr]" - } +{ + "mint": { + "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, + "mint_to": "[mint-to-addr]" + } } ``` - **Burn** burns tokens ```javascript -{ - "burn": { - "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, - "burn_from": "[burn-from-addr]" - } +{ + "burn": { + "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, + "burn_from": "[burn-from-addr]" + } } ``` - **ChangeAdmin** changes the admin of a denom ```javascript -{ - "change_admin": { - "denom": "tf/[contract-addr]/[subdenom]", - "new_admin": "[ADDR]" - } +{ + "change_admin": { + "denom": "tf/[contract-addr]/[subdenom]", + "new_admin": "[ADDR]" + } } ``` @@ -399,6 +401,7 @@ The instantiation defines the owner of the contract, who will be able to add and "admin": "cosmos1...", } ``` + ### 5.2 Execute - **MarketOrder** places a market order for a specified trading pair. `pair` indicates the trading pair, `is_long` determines if it's a long or short order, `quote_amount` is the amount in the quote currency, `leverage` specifies the leverage to apply, and `base_amount_limit` sets a limit for the amount in the base currency. @@ -540,7 +543,6 @@ The owner is the only one who can execute messages in the contract ### 6.3 Query - - **Mintable** queries the amount of μNUSD that can be minted in exchange for the specified set of `from_coins`. ```javascript @@ -579,3 +581,77 @@ The owner is the only one who can execute messages in the contract } } ``` + +## 7. Airdrop token vesting + +This contract implements vesting accounts for the native tokens. + +### 7.1 Instantiate + +We need to specify admin and managers + +```javascript +{ + "admin": "cosmos1...", + "managers": ["cosmos1...", "cosmos1..."] +} +``` + +### 7.2 Execute + +- **RewardUsers** registers several vesting contracts + +```javascript +{ + "reward_users": { + "rewards": [ + { + "user_address": "cosmos1...", + "vesting_amount": "1000000", + "cliff_amount": "100000", // Only needed if vesting schedule is linear with cliff + } + ], + "vesting_schedule": { + "linear_vesting": { + "start_time": "1703772805", + "end_time": "1703872805", + "vesting_amount": "0" // This amount does not matter + } + } + } +} +``` + +- **DeregisterVestingAccount** deregisters a vesting account + +```javascript +{ + "deregister_vesting_account": { + "address": "cosmos1...", + "vested_token_recipient": "cosmos1...", // address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. + "left_vested_token_recipient": "cosmos1...", // address that will receive the left vesting tokens after deregistration. + } +} +``` + +- **Claim** allows to claim vested tokens + +```javascript +{ + "claim": { + "recipient": "cosmos1...", + } +} +``` + +### 7.3 Query + +- **VestingAccount** returns the vesting account details for a given address. + +```javascript +{ + "vesting_account": { + "address": "cosmos1...", + } +} +``` diff --git a/README.md b/README.md index c46c9d2..5c2bbd1 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Smart contract sandbox for Nibiru Chain. └── 📂 core-shifter # Calls peg shift and depth shift in x/perp. └── 📂 core-controller # Calls other admin calls from Nibiru foundation. └── 📂 core-token-vesting # Token linear vesting contracts with optional cliffs. + └── 📂 airdrop-token-vesting # Token linear vesting contracts with optional cliffs but handled for airdrop. ├── 📂 nibiru-std # Nibiru Chain standard library for smart contracts └── 📦 proto # Types and traits for QueryRequest::Stargate and CosmosMsg::Stargate └── # Includes constructors for Cosmos, IBC, and Nibiru. diff --git a/artifacts/airdrop_token_vesting.wasm b/artifacts/airdrop_token_vesting.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ebfaefc12cf93048b50a1d3ebb8dc36691b74b2c GIT binary patch literal 215280 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

*dwyyu| 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ΩG&WvOP*F|L)7bcry_?zSLLS@y5gI?N#zmZv zmJ_Eov_EAcf=Qj&o-(bNczcRdj(T~@BR84FPH@p_%}@$z^ZOFh5RoD8IReHcM@U>shI3F((gNY58*3(eijR9RcDUvN?t#pGdK^dHu+eO=`* zxA6UtDXlKv%_kkSyx5SYg(GE4G;EuZ#l~JbTra(Usf1y7wwVAYKVLnZ0n$ZM*CfIl z<%5ZWi!7~e3$GoXtK@9$`fK- z@EvV8eQNvaQiBwumnMs;n6yR8Z&RC-wA9Gm=WLA6(-?hk3h8Ug!=l&}>#kFAKpVV~ zV2PVuOW$IR8N;nhA{LqMTCuEKo3GIYG-T7TZG|;%HlV01Umx`D?Z{A$x`+_sjiQ9C!~@w z*bR%}mEOAcMB-pa^N?~3MBho_fv>kt%a-ZzCl;AT66uVZ(Qj-Ie5uiI>~CDG>UX1j z7)069Ehh@7S=McjC})7{LvmV<@V-&rPQ1-+RPOD`ZDUVJuAt1}u_uS^$;#N16?+0w z>UJK*8;w2F*~4Km8O-tjjm#=y%%`KNWVF>d_wD$Ov!UMJNu*hmp`#ZYSIg!64{d-N+AeG$K2m?d-UD#7C5a6{?nOtDm@Uyd}cPwt8PRqTF_*owymivaf~V z*$EARj9zRiG>LR5+UO|3t~V>L6ETOZqlM4CAF8IGolaz zeXIG>cybz$#{X%6BfbmT{gxWnE1|ba2DieWMR9w7l95}7*+#aA;l!H#T+t1wley6>nSF&~WQqCvFa z)+jjEuEA1I+-Bhk(pdgd%}GRzg$nvL>qdxC1HpWJCrP!08yBlZNlVlsbX|W~8^0R1 z0ZbZNduUS3FbjRr6#MZuY7jO&tTyc=1EVV;>UmYYMML_bYCoCwiGhCFMH?(6HwT0^ z=N@gc^&BUhhcO(jtGc7H4%puH4R-+U=zwnO4p@67)^K3|Fts#F!v%nP8l`J=Aq?OC zL0wr2IiV{$nDk0cWU=&0qF+WxHT6fCvy~vAb{%TPO1lo*MK7*w%OD}U-NLlk)5@(q z^-FjJ}b!zOi|BOY?~%S8Pg zb;_f8wRzHvU2&c|y&HD9)9&5sl?{v~ zocAy-6ws`g6QvxFu(g~7I1vSK=9SFwfdeWl&p6NItf(C!B@v?m@Zl^vj|sCr)6Bi? zx#9aqaYjMWVTL?)5e6+si0-#jg*^6Wtt=#n9*q)0h62POG+*yDv;s_9OG%h7pgcm&=A1sl`cGQ_CTnyLjRj&=Wx*MQKX!Qdnu$W7YZXCDt?zg zW-lqZ1SjG;GIkV$U};-+ozAmOWK}69C8SysPo+$h zc|`=UdNV)Cxgw!6ZDlbNoQY(Q!#=kS$HCbd0f99hlN-zI= zwdco>W>lXPY z2S8ODW&l=$QWkC~{{RY>Y#AFy9AfG_tr${Epsd)YWcJ3hsKvB|=kmS=BZou9=yu$# zCB+yJmH=ZRkoesv;uz4kAx+~)P-_gg+u$7ItG0!uwgX~vTbLfjy-wN^)`|xUu_a7^ zjJAZu^CoN}58FgC585e##A9`cLrX*iLeg6`v7--yuz1HV7Ue11;vV7FCRs$R37V{w z*AT?{w)I>qxoYA@>pkxGB9#)0*Z^l9AG5}?>l)$cci9+i z3bS_E>+42ff9Rvv$?LKZ5u!RJO8eT)^IpGbN0qMK3j3B;wZc}HsuebXS}W@o?V}@A zNsRk3bm1);N*eudR&h4TkkDxx&>Z~J)un?~b!`W8g}U{pt4kuys=9XUO;xwCh&{h? z5oexHSFmGDe>PFYj6%8LAiCNNC(hAn0sfI517BZBL%qte_X8}&BoL!MJTX^nI@;T0 zu832aHosMeHC(L&4&wedbIz&d;Wkk+Pn@W&9iwyGqJLtnh0ANd9y*WXy29(~NGt_d zCW(7|Hf(CvCSJvW9c4zOBbu#=neeYE$g%00H7=>iv-&kbrdp>*hJzGIDQCG!8aex< zx#|&WVLB>0VY8^tL7F{Eyl3quHlEbP98K6_m`^!hDN|6hf7A}_5ihRh7*VQ^uHqOL z-^DFsbk3J1usYWt)xkf??OUszwK&h(nczCDWo@)}n3FZJA~E3YSDZ5gNB}y*O2c;$ z;upnLI9yTvTIU(Qpw1b^uV;)H;KVItu7Y)Xu_wmIf z;p8xLG$SL!bcbiPv9P!Ug&aRV^igpp4Nn!*(bG|Si&B?rZ^i4HoRTxZ0T#4sEL?xj z!dvtc)}PK6QEX=bx=F=x&@J$~2I$%${p2xf0&~3C-YGDOX%KfcjvZ`c6JdK*X~#~s zLA(2yWSBAeSVB17L5?>QUhM~@6FmQFvan{2!Ydlx>Lf!99zam5W|PsFXvZxX8XFs@ z`H^&GGoLCDiXhNj!mVYb*Q!lJ&?0fW=G&Z*@DKbr0;*#VZgdA1u2eaV}K2c1|+BM79%-RAallcIwmpk)8^ z)(!4zB(nB3408dHt@u4=3)%**aa*t^FEg->Jj~9NfvwnJuwzmx?~$p*PSqz{9fD*0 zs{BXTUp8#@j`?KRJF`1AI2JvNY9sY4kaVJoh2)ir*mG;fx4ADp9q9z+I>pz6hQj)Q z&|@v}!lbLa7n((@Bhj&MSp~GtW7lN;>H%Y`AK=;A(CY_<9&i9m^+2P&ljb%ns9IUl zIw!X+Bs_s7ZH|u?fdyhfZ40p*RxXDc z^?z!5w61A#dgOa}&pM%f!udc5aYl4yz<``e_dHLXjV(}GGAiFdDdn4ldLd!lPe4ML zb3jEcPO7B};(0+V3F2##SY5K5K;Igc6UGu2n_2pnZ{s4Wb_YZsipSZWa<-b97K8)Q zcp6sRgDN#nx>x^drCe%5k*`|@)9+dly&C$h)VljKas;Lsx*P!!H%*w2P^Ut=Ya$Q9 z5H4UU&mbhhW_m4KtKn?{YGqYaXA_t`p37>&BdBCHhWqg>`cWU1&naVa8}FTC`x z9$DW`Hlt6sjU&6~z&kV5lbJRud=F z0dC-=!JW!hJ|lyBebGhE$;PcnVPMC~V$@Zbm!AdJ+pQuldZ&ew~j9XPvPs%z_#!7Aa$f_*WQEgT$?(^h3deR0lF%mnG zu-bk=K;_dxAsU{ad^Sc3g29LDU5+QQZ5xWJ*p3You3Dw^eQ`3UEhE8K035cD8k4&< zl*#-D<~3|sdJ&Y85^K)~tk zHu3fe`+U>AdD_x$u_JZHw{0cyPkI64^qKO%HCyO;HL5ZnuELM7;wjHwvxQ3{T|>T*HOs(5tv$WnIYyx9f81zWt_S ztc3X3^x-QsWop^;QlVK%N9S=7f^=pkHqMT4J{MKn5w`0U>$5S7m{h{*7Abxyo#-Pe zRrd3C?q0zYKIG+xQDlnWm-7N8D+$Oi9${lTd+_v=V7wjERQOLixR9qu-mYFR;7(4X zCW5u0>$&js%|*6IY0{SU5~1#bh`fU;lSs+v)xF1#;5Qx zj{^;sH}lbn{zugvJ2VAu+>R$g&6oPW8mtkWK~p51S!>?=(85jVygz40NYG-{Dmwnf zA7e5(T4XIc7Db+dj)#T@(n{Iy3Jv*&2ZeHFOhCTdva3!{zNCz+oHA4K^qpR1?U~m` z7P+lW)>NwP5wT@423S&GRP5+TD^@^vjuYtL-U3WpDZ?y^Kw0`p#|V_8utlJP+zE86 z6R4{Fizd)pim<_nL@Sz^ZEsN|JuUAPm0(I6m6!>9^1{t1GZuolYPg{iQj!#puuh%w z^*H21pc>#F@qotz@T|!jEE>PWAN~8cY6JJe*f%))ID(u-ejZN{Kumx&;1h4_} zY_<_d`cg-Rql3~&%l93D9&|XZIRrfT=-YUp^BeilnZ|aT%yKH-se+;ZuRy&Ts+wsg z#Nr#HX82T~t#^*vVdcU!2U$2-$@=>{b*8JOv}_c1T2NOHu7<}^2(foq-k`EgR6xZ^ zO9mCYGWE%Dk9w*OR+tXNml(Z^TYY?pTkJKRO(%JRF1mvaxfk`$wKM8le8?kqTd+iFp zOIK`wJ9V8l)R<|2_CsH93rEr+$4q@lzrgCfx{~;K8!c|j?hOn&lYPuz#DMb1n2jTK z9vMIG(ouL^?+h%+a=jxAQs&r>G}d`ghW@EjqQ6<89~R_RoAs7aKDncx1Kikt3um1Q z{mpUoQ#zubeZFUa{^nBoJvtDfRWz4v#`qY={=FJ`tlX7oiD8I|u5#lUhLuV|L1cs?GpNNVXpt=qwr+rZaOom<4Fd}s-b zMtmlswt0%c$6L9;!vz-zSPlmC+vNiJlII}m#r(AsRD5D2s1&oQ1(n&bn5-svNHlq; z1fD{d4Vzac<+gZEtjy=<>X`ma$Mi2G7V2l?zgXgSBl`tvBhLxzAdlba=XvxXXyXT+ zm>dOHp#&8ZWe8`Tn5?-+U}=X2#rtaULCfsuD>8u9Q~~cMw}9yO2dc&3REzQQ<30K= z0#`<3vXIf}Pw`N&Jgwq1fD+)%E(|6>X4Y@bHC&F=?i zm52S#aZoJvZzAx+BR;5`@tHC1L^Sh$s2+Dk2QigBEWO;ex`>4IdKsLVmQx<3M|lNb z<*IGn59;?3GZIhe7MouYG2u_sX;DnHlvxreD}84ZMIbF#{e!F~42Ca|$Hi7uJ;YIC z7`|b`fv-ZHG~}U9YjalVmDbGIS2ocZu3`0|6DPK_ge|7m)XNmqsDdb(4#xDbGA z`*Ha96SLr3>QGWGkmeM4QZ$0rFbk|T6sWcKV2bdhb?8yw?&70G))*f-rJYn!ppjJ5 zqRufP%k7N&I4S<9++nL7zXi$7v`kI&MUH`|NWWbX!T4yLuLG&)YcX*+Huu5OkT zJnMzzq3TM#7jkB7L~W)e#Qqk3RdHI#Mw$0qEKZBt8QWBLSZ3@f%TWb5fle1ZNoDBE zI9Ak{q%+n~GhU=u776Eyhc>Mhlm?88>T6-ovT}}(dVhX{w$}+@cVluI1{;90WmZ-dSYAT;9B9%w_ zg{^gLhXXF!xf>0H!WC7>+JuyJD~sC5&=2~yhl)VmK`J53-!8aSh;y$cg~JPy|Dfsn z0FOdk=#?$$7AP?(Di%Gwc|LR|St0uh1r?8q{{N7vj_A<9E36u(ATB9A;ZL{7USUp@y$Dm}7aXV{prG-0H>|6)qqsG9Q(#KPq_(|Z-XOm?c3ViQ9}Dn9*bW_O{QN0{WqB69j;(ff~eAP}xEK=Q4~c;LhiR zL3(AUqY(~FEi6Sqj%J7`TO|f5Eo%prDB*STppsl+4|3;ke<7zES%hz;{=h1M!9T{D zG%U&c7_Or_O?AN&m$u^17Gli&APvqp#M;mS8`%=E7nl-jhxvzUB-Isv{u3Q=jZW{7}~PCa2kTTyv^bx_!WXu-7H3%}En9sRRT z1Bg0jc}~6QE7Gw}lI%!S1ADg`m;=Uvu3ry3lIK@25MUGuAk$P*p!T za$6D5ex<=uG;DnUI*-ths{vGS-jbhk0t<|TM(}94Y`sjV;YFKsNel<0T8n@6$>05{ zpZx0Qe(7t;PR4DeMwqecX;odvnyji`9c!X`QlDCn7CB`72P2V9kV2d(Ki!I=vWy@U z5ZWb2gVVF{)31^JcM){&pVU>0%D&Kw+UK|`AM@*6b-ih2_2>7J=%sn*^_kTB*+*F0uIi1=d$GR%rF!OF z%$)ppBpd|9&|HbrK&A<^5l%wpoNz{{2u{j*nN_4bLIp<+{QTRFCGnW$7U(GN<~K%h z)jfxbRkQiTh@C)?)pIwzj(h)rxi7MoFaQ-FPBpf_Rv3V;-zILrjEM115>R^HH zbQ+NoOq7Hq%hLwV93g<&30>N^$|bVLO*6{M>%36 zoMxDnTv;_hQemDdfjuk&Ynpb4OzKHFJqxc%WpTo@lZ9_2C@s#}r>`fGUE(LMl98Vq z;odamZDZJTIxvN8yFx7k|2PF&j4HX96LbW{acvqD4S7|(QmDVK%J;Uj!$I2~o+{e@ z@27_^gPCj~UVd5q&4G$R-z_R`osvO~iqC*VjD|lRQ40fA40;R(eV@A0!7XcYvk486 z@F}>lBH(duwDc@-qiwvRW#V?W!Qx?^H{%@fl$$I6_J6j`O<(|1^mNQg+O$az(1G;8?62DW-KTLv)vVa&pKL;FIBY`8 z`wT~5-VSi=+m52AHno!tPf*H5oE37$6RDN9IFWy>L3T$IiCls((smQrNKACr8I2Q;GL(Ig-6z~Oth~kYNE9p z)n>2C3_6BnUVyD-2I11J`P{tI;}WjQo*$K$%9BmRvuKbJijG2kFe5z!$t%v`F*%EP z5S55NR?dOAeSd9HaF(E#h9o_;^^66!k(Y(_jNDPZq9u!+OH~sm$x7oG4P|5VYP=bK zF7sh2uR|iitoJvnHSE}8S+sOI_|WAsXmi0WcD2?R4a!ohnaGIh3?+!!SZ7$r zOu93yWA62t)e#0@{pxG?CnJdhW+*}pV?uzHJ7>Gwz^Z(V+HmBoVIqKt029n7H$CRR z#HNwSV=c4!L;-}geA~aT-OwIM#q#pQSm4#L}E8s{HtKyIg$(51uJsvy8sB6Ta%;O!4 zEk}lnxLjjcYZ)F7jSyzC_8SWTH=IoyO#ev{TsHrGhN+E8R3D5fKhN(N1`|#5^~Wkw z{xrmceU4nOdfZ+id^5EhA^NybFgx^+RhAY3?i+4-aWSrC5eXYY4|QHQzhYpFC$)g9 z2*0sv`9SfjUCABtZLL>Z6|P8%b+GamMCf)ZJnI5mgF_V;M z#Ccprl+7l>xg*q3256k@4*X&cEudv?^i3&}!&o&Mw25XLket6(1F0no15$~Rl=JAH z0T~x8;)upzG`OBDjBVkIKO-1rP>*12`(gw`onSC@Rc%R}3}#!9Ee+d6OI)mJ5VvcR zCRkZa?<(&fUmB<7R(+h(^djpaS;Y?d$?Q-*_#40fwx*VFMEaZpkHm-?Dy>85=_r&g zJuNJfNKi+7d2Ml88Mn2mXBx_c>;pza5}H-$UtukXMTD6cUD`^Kg|;G%5*(-v{Jj4G zq=QY9E!nZJli%~~B#Xh{`v^NQB3sln(lv>AWDU`?hD5wQN}luGb|L?2B&fG*A0l-B zWR?ouPN|m(q5X!pDAR1U?T5`^;fU-8K0@b?RS`FVB zA!O$u418jrBDF z-(9J?y2^VxUmam$@z<8JD?Dx)@8*0}c!gJ(L)|x&v#o6M0-E0za^ELokyp#L(H0ka z2T!g#=heKe9K_~TYfg<8g;g+!5|Io`?6T)+7uhCW;Hur;8YV|*vNHaMq55hEU;Jup z)tWZh6Of>^1%!ggFb zm5qiagcZUR6-^mm`e^rS<7D*b^)Z^Po7fMCOY$NsLD_mZTbR&PO!~1+7 zr)~1O*rXc7Jg{zQ(B*~oF&e{#8Uv|T8Uw+5B}ehcs3n%SEGd=RJRx87Jtqm}P9aH`{$}7yq16`2wEs!VF-rTtV^<_j|Chr$eS}XUNZZvEa2O;I7xcDNKF-$7?d49o zTDK3+XL`@M1Vqg0VpWY)*o24q!2x(L`!C0QmBK(0sX2WnOxN#uP5gqgmspR=-Luyb~ zD~CCeK5uLeWh*a-y{C7-oxP{OW!stiZ_y_lnJ4tIeL~ds7Dt(2T9~9c`&8MzR08>- z{MSq6%8zpY0Dt-)29-bFsPr*C`z}N4IrE<5?%Gkmq4pHRZqqVa6y-eF6f&3OmTXz- zU(A^$y-o8Wn!0t4aS zzgRcclkGX5?8&n|>z*E{d!nrOr1l-Br|b#g!e07M#8c~JkJ#5qI%Oof>|~;YWV3OS z<-?zqWXx=CIzJse?KMt7Bs$|A5nM4kCV)xB7$~XdZ=M1Y0n3k3Hr8y<;ctUPpR*J}7MZRTvxT z@(W%(Zb8qIwDTOQ82<2C5kdJ-a%eU;d8FhzezwnX-?g)T{Hbkv>^z4@?gW@L-fU)v z4Ew~F_q~OA+4`ODK~cDz@DA0}OfV54obXF&CK?3Ag+EjUnPKQ{TJuyQ*{?`Ei3QzZ z?ATc4PS6t<#_FeW#spk-yf-SS2#)X8q#J!=RQm?3O;u-JZF6XBo=57>{1n9^2WBdv z#Vm{>D&Vc^8Fc?ZbQfcLBnS)bhFT0iFwBo)C!vS(#q82^wLe!;;D|M3jUe7k6FR(l zKJ2zZu{<>z)%_lv{m>4L{w>4HoG`Dj@+cGC&vkIaQo4NT= z=oM3eB(hhjz48IJt7_J29oXo6ISuIzO(s}v=R=OUNOYGFu;tRV@2_hsjN(2*%&I-Q z;C2u)FwPnR7rblRpKBXL5m;U^T~%wCR=ac4(e7MUHsbcs*4XyYRJ(K2n+E!>B$fz= zq!9|!+FZR`h)|>L7DA!=ZlMUiBd!o`I(#2=G{LLy4BVOS^mH1g`3Q8g)t<76j`*Fb zh>e!C)2pWW_QbE2Lf`efrnddmzsx|bf7xPJ{N;mmpE}aC)EH5Y(-nxvQX6lr*@9@m z$eb}7DMdE5skPpmD0J(0ec|a7X>Ak2Vo=@C4}q@utN$EWnB@Xy10SO1sK~`?!DwbR zf1a8-D^`>R0L@to`ncVy4klR^*sw|dXQ$Y$!(bHasTsO;w*Fws(K0r(PRKaPMxb&| z@RlTkqUiBn`Q24Iev~Us(8|7Y5w^=Levb*2(~NtJOeL6rN=+GL3VaM%7Wa6r*o{{v z_Bt;=J>u6I!%2c|Y#KVhogvk7ok^lC9&QNoso5MuCPQ26!nrL4`{%anviP-6{{HVA zz4ddy^hk1xVj6n%S6_U`*M8zt4}ADRJ=)A8>dfo1_@xJb{A-{2>gPWCRlOmBnn!>8 z$=|){vv>W`hrgyr#ChR+RtG^U^C9W=Z+Y}MM-9B(+|S>`dr0+cTh`W8v+rYooaM|B zZOz%1U4XO4r68)$#Si_lofrjS{-V8j!CP(~wr?3W7yEDJ_tf>n<}Jh4;>Ne~8fkd_ zFkLL(di}6<%Wz61ID(E5_TE~gw+s`1x%hZ`i`AM^Ep}j0VD_!NriC_dyaBpssR8y9 zSp$0CtX__~993>tFGn@&j>l`NQ*~$~(#TjnxSrNE2JY!20RnDs>HKaUnm3TqZ=8z} zje&7N*e$}oaM;0JK;LpqOeot$hfj)QFye|0yB3;XRKSmeF97e`$kc}qx+LDF`{jV~ zb-AT)O)L@jzz5$_WH1Z?%;2ygC>y3)uOBwR>-9qxHUzI9Rn-PwJC}yJ%E37e2uVb! zY$|gjK?t|dodq%>Ec<@+g~%^@$FeV5d}0t(aAE@w%*_;i*+_H_IRnvZBo|_7a5kYQ zpqpMIP$gOc>!`S*!T4a19z)19$V`KzHlUX^UuE&K5y@YCKF9Kl2U{Rg(ogOEzB^_w{@Q%@_8tFfrv* zW#u$mbvezJCWxuV#p>)w&L9*DcZ8q=OOC2eFIU2d97i#n{ZE~h3aibtfX9fgH z`=tHX^1-vtr*JVvgzjR285z86_)I0Wf<~$Ihn4;w%xA7E`5ryz_FwO#(EeQs+0Fdw z9%S{1UxaG;)jU|g?v-}TG%NSbQ2R z5x&(!?Ze_%4Br}j?4v-f`U$r*HrX@-Jm&41JD*yU*3vLrHUY^5q{Q6o#)UH5nxPd6 z`(7C++Ukv8}v4Vn( zfSzaLw5luvJRUlWb<0n=(fiUgAD2)@8klPGvr2022Co+?+{!dxOyW9?dAA0ITfm)Winfh?0iG>wdER{ub=y| zPi);&hVl6#Oyu*m<(hwv`Fc3&CPb9!CU=PjLDMq+&(u|nzo1~sbP%L*OGU^yZbFer zlhK$E;^8B zO9b(aZH7N8PbrnB$%4oLQdfCR6o)Ddu-pzVE%q_-45s_%>yS`jo$*Cui$S zI6NF3`Y9Ca%V~rl##?IC|D}Ww^6{2zH+MeP5(;LbC5t(*85Jwt!`S3568@5Mu~>#q za??VavIVenk;?3w7cnq%mMY*vO3jE~%6m2D(EmlyNRlk& zTYLeIOD8*c)%XZC?GoM9_eTVdeUN4xe9=dQD1z_fyI4e!w}6^a)Ow9*g##_(jjZpyAq@a(>^v;l}&2UA!~UFGCI`#JS*3!Z%Yxu`V)jwM(W zP*9o0G&QV=UL_;jjL$~rKw1ClAsG^aupXu^{owWHqneZ8p-h%+b@Ydz!y?8F1V6~N z3W;^!9WAeFrI-~gG%`n7MGL`B&1f^>h(yghEoGpGexs|5Am*ot|a>*22#CU%sBLT+F+o+>grfDQ8fDzI| zNlIl{oGGtJFMm2nZx+(4XbzYD6ePwD0jTd)|BbnK0k-Qp>pb_~=bZb#S4Wl~vSlax zoG8gvqHD>)u}$J4+A5qll`zI<8AD~dJW_^^-I)-Y5Z}Z~TIqN|nHZw<7`Ooi z3$O>#xVuG-87^QzNxP<$ZeI`jMgzqKFtA;qB+gH^s~@3r?{ zk8geJd#`V8z$fh-0FyM^SdzX|xI;pK8h17#O~RCkCunKr!yiHsE4(zMM}tuW7$Nlv zBalBEjHqigMhJ6ijHqQs5Z;CclK`zPV*uyv?f_ypHwd5v(Jcb(=Gl4k)kUs=^S64g z_Z@WJUW#@w>vyWm2!Z#=lfQUC$(@7?oyn&Lyb&?^*SC|u*eGs2@VK3I+xBLEi_$bFMI^2)+HIRD;Q+vyPXPx?{+Haa3+!Ru=Rf( z`R;jj{w4F>%e-9#-z8hnWd)@2>nj$)5w>_YK=sKVXCPZV3+As96CPDrj!-Ukty8ned_7{&ZUDru&U5E7+V2=JM zPnFoXE8aBH+E-vkY$R^Q8_7g}`LDn9>%aNTvnT!%+S`$Fl3W%t&dQ^F*dP9VDVVho zWEtl}s2h!jQTG8 zc195O2AGN5gQ|`T}h>YFS%~+9TNs6Z- zdZZdj^k1qJ{crm#Efce^l}#;21)qGk3$;}wX$W%gc4K+5bP(gU0cxP=t!Rr*6f4bM zzztR3Q5=j@1``ce!>9+0FPv`jOuylz!`#Omt;VZ>p`E%(^TFAFI*sVilR9?<84E?a z6+*jLOdu&w1yRr0SW?6AB%TYorwk|*S4M^3;*OO_Fb|00ii6#orU=q)sCdczyT zf9`tj5e`s(FO?)YkMKpF8)=0|5(AytpCCaRcJ6j6L9EhS#rs7pZsAl0iB5EQ_(bl_ z1dN)HH1*}(7HRg%-OqkM3hvhC@PLZWpZiYs=EPWmNJ;skY8H6*a&wzI`-^GN8e$r> z!SX=^P?ZXR8XWNwRK5uWkuwxS%Bu|sb@InX5MoYNx7^juKqz4r0dpM)rCHEPAc?Ce z<`f0sJI1WAL7~$@xod(V&8=#OfS(z z^Xk+^EwrYK3ApN_iAp<+vUw+AnBIX;J2&;$vDZZdnWw)|kWr`E=7L)DFT?_@)?jLC zNK;LUst0v71o8M`Z|%E4x52x2V0o6>r#)X^$=|jE8YLzZAYjIWK7^Ao*8hH-jDl5N zpO_W(O}q`6$Sp&9ne#f$Hf2K5!otBz15K-f2tbZ1EtV!Kgk5halEX4w5-=-<4|d z0ZlmM6ziWr04)|-3>5eP9hb`q3Z#$*?$*aYsAygM123-+d{EK4zz3z*!PKC%+t?3M z$OEQ_st$RWBD$fRCepz{49c$6EAccd%z&=iQX%hoIKR2y4o%`mp7i7iuVWH$Rm-VP z90D%u9uJ$Kh7<~+7ZlXMtdxC%8j8Atfm#z)4>vcGMpR(W{Dhi@#sdL;%%}CkeiLy~ zsA0MZg4PcQAJcdG#t-y@KII)%!!>Wxfx}#??ApWozmh$)zdr0C|FHOt(pfW|+R!9kfAIbU`Dh9b@&j7`Kqrl zGs!gMyNyUQW=mqGM0|yt6%SDdx5y~uLlcg2_5 zCfgsrreI8$|0nXz83)%?1qtA(gS5*0W!tEUt`^)0mmF_P#Hm(T4aaFyhd4&^aE=8f zuE(bqzCz`kG~o@;&p6pV2h0|uS5n&wu0nTu$Q@1h#@j3QoNL{mBy$>5sF6Gwmt@PY zPQ)dLhE$Ko<+WTMk4q<9IM(C5MAem#2nnrDlPi#ZlWspBW4z$}iagG^k(89h88mk`NVr34KkIqFwK%PNO_V@Lmzt>k z06{h+(j0i{z$N~k^>CyE@Yyat_5n(&?_Qn)v*F!7lVBhZm=qZB_MFuc!qJS_)f+w^`#)^KCU1BHy`E6+qIH->hGQ-VDDo~ z)8wEtApcFXrEc3Si!<8F;tZb5ZNbbu61U+>||Kjn_{?dO!CRX}CN!5^miRy?HP94OPoH41c$;sS~lXMV;D9ohAq_vg3 z3jy25@d!Jx2)ze)3y1Mc&5@xGw zuASv>Ak(;ON7pfsr=#}49Rj;IuiN_@O>lIGO4WpwKo5#+0>q?T!3<)RVfa0rFyfPP zc*jY&NsXi=^pWUXr`U+9h(3DlvPV$=c+%-dhnSh z$WqM54`raH^F?ct)tM=j%-%77W!R2b4c!j>8)F_cxa|NZ@U#un5t5Cgu&?WY;?cBC zo|btch2I^}7Shq6+W}g>Dq6luEsM-0s6u81F2kD3fU3xBJ+mTrF|(T0W1?vY+$+5~ z*Cb@7UoA2NoCYm1pS*`v&}!n0<6f;I2n4U~$^Iwa{SVF!qm$6Z1)+TRjc(9F<*-G2 zF}X626?5!W$B5fbh*Spgi?ypGTH1dJmDG~I+N6`H%~?aNC`9MtUhYcPwRlSo!J_su(b+yJyiju} z8Ckc322O|u(hdux*k_?5&LwGR=++-P)aN=YDYE3ktblP&pMGU zkuREaNjxeqZ9W(Ywyb7=yJo$asF9LW-ZGv*69Q(;>_~gJP&%~xiH?HnVrEQdMFKJ; zE~b+37MZ!S@=C&6_;q;8m4w-kD5`$$%Rl?&%<&S}^Z67|Xa7~iOOV_m#Y<2VaNHQ* zay_+n<6F2(@h!6@o+7#+8kS5#O?->(Kl(5N+1JOnXo&ZYm<^rMiLM~7G^fDs@&=#h zAzRH2-$LbxptL90*NC@a*8+Dq6>X9q^j9|qqUu~lit0d&2&L}n3*6wisj-vFy-Jlvpb5<-b3FfO_}Nu zXx#MYtCM$_)v*Go+F~)#vNZ{4PHC!n7hwHu6Hy=ue-ahvkTa6S`;4Zmk+=Es#rnJu z*$sjb&uCqUD(RyD|9gY*-iKDGzKQ4y_OP5pF8DT?i2pc1E&slj{&65EK+ z%Pv8ZY)USMK;4$m*WLp?9PwyH14GoV9{R_tS@k;I=xC1F@;dNohdTtsR^Wg^Bagxxt*OYGkD&mq z#wD=Nx5^L<9r_O^%Mz-1LV(fcci%^2TJw)C+cU1s7Fp~K3e879gX-RlVocb zwl^-XjTc_va$9E>rLHxY=2@;!8gv)WYo@DzD-|g|I!8fVmbk_)0E6yW$Znz|{4j;#gA7LwGr zwXp;aR4;VzpKov6)Msev0*Y+6DI}Ma!$O{&E%vwQkAhFU`%17Fatf{7D|ZpZh9-}> zMHw|%lPnvG-|dydM|0zxd4b=KW=a-%v9HH-XMNaW+YJxx`6}xQ?|}%bg3)|bzg5-e zr2^;Uq#?=L(8d{UjtaNc4GMsu8n1xu+}t1&VV}*76my=<=irBKQsOcL;-^2>3q1Rl zXa#48*0)~+b?Ly)@m9zS7rRGupsoyxnandf0B2qY;AEH!%XvI7b9IJx)Pa3ek`b~n zhHG}tz~Q@HaRv_W=nNcw;tZV3u8m1LW{l>&-r}vm$WxaN`BqDufx|a!PKz^e@IWV1 zs@-wOZ1wu5p*bWEULb-{QFjATYVSG`HpA(ClvdV;&%1MR29EpzbcKO$snX%^d+8$ML5KV=YjOpTd%jRuqO_!a3`L1P24T_uE!XEe(!_A3rT zVN^I7?2PGGE8K%|iHP<^U>>EPn1PE&_)TXJ9!Z_eT?bC4G2rQQt|LD>t;E2ZiJ1an zSTEnpjG+nV9{^GMGTV)r>$x4{Z6&``3ay{yNM@ty4iOpp=LrL@?C3s&`S0w}^?ZJ=>af^GNcUutc=Fgfd=UE3_}5<_ZQr7U9{3{$5Q3FozT*wV#p zX`RavK8(k5N6|?p25<9}%D8P0j>(-ZhQJU6$;>AWuwD;V6Uv>W2b1-thxRK%7(chNnx#HXaQ;Mf ztiAU~>uPiEBt2-hP_(txxs&{u=&h-8hWUhy)U%+&g*wnrAO>?h4GKQs`8?g#t~Lnh z4eK^?k8Xgb-4I*9XDZ@EnJD>pMX5IbVthkv{hldrXtsW{D8>t# z^Ijgg-S?_ZYIo*5seJT4IAByogff+~SL74gw~(MVOl-i*Ej~fBVoR%- zJ+4j0%9{=U5_t&a0**=>TCWb?ARuxGJ;vgqP=`d-fJ+}#m~5n3?F*R@2_u;eUtS;hi#ATM{Ms z1`aJL4WXucx}Hx;b4DnUR=<%>xNGh`w5Vfc`ft0`CmAOprTxzjTtauUQPI41Yn zpO_NSjx(MWqa5nC>HdGXYc9%Dn?{n@BW>5|2W(WM3R%Qr;#EEVXUZh2T)JlO>PJ<= z&uzjq%iC0gI(q8OVrLw#J5f z>ZK!qSs1I+_UrNrp+P8BLq6W(Y9#*!4YG^Ygi#g{?;_;l(b!)r*D+sH@JRjSNIdCD z?FVGYiNm)P`;ZItxwm}S9>=3NT~+i$7=hX8R;+fSz;^L&`a(=MW3GPcA?W`f@@XXx zslCn|CoUziHd}Sfe$fCXK^rP;+xcQX%A!;EGSukjyP|RM6=(@6boo672hWwiR5|5% z7pE|PyXYClmJWJ`S#2|bgunx_Jg`kQ1`CX|u4?tV`DROP?-^T@P+? zuwvgqp$Z9@R3or9hXhPoDpeT3r1Z{+2$-x+(c!`6A_Am_oGQlGGMzwU(sIe93^onFr^K(KqS-LNO}!%gIbvs+{v4Z>Ab}Hh)oP z{n3$pe0?a2lTyfl{Yd>k7MEi#VXG>I^;!bwa>OM9zDi%E1|G>rJN0|lXctd7Uz+vL z?K{V>)6csV1R&c0P{MyQ85{FtA?I>>TvTIugJxJ4gCoeJ&jBSO1PvQe=|&mlM)cq(YDv za!>ZpC*GW&!}j0`Y=byCf%%NDpCXhOQ$v3b&)=NQv&^?J!|B_3ab}FLEM>7}pZZL= z3iGa-=Y#Lh?^h}buv{H>r(w`+WGM0sSr7FVi(~Sa(f&%Wab#tTd`7E-;?MP(Fa(nY z0}18N-{LRhl}CGk5{C4ex?4CY zmp_Y}*Jcrd^&{>`1i*y9r27Lo$@;P~a>*>y$S2&7rR;D|wt9to#M_9&u*-_z0#)P+ zhz(Yq7U)3;Vi~A?o850}WK9Ibg9&&=#hy+LRF>Mh&1JQPX+9d0=tf6A(&JUi7N`(a zGj$c3!X?oM0O?#0T@Fu#gtKFP8B8gB-u+)J&iB~YTenL2bG55DP ztG=X2_-Vz-3m#Z@S3oR<3LNW85tvG6J?aH@zJ37|5t7a?%`G`6nv8+-XV-=t4u}!C6U9eYXytIG&$0Y%u z?~QlwUp##1F=Cu{+X2@rcRw~7?$1ZND?CGj-9-~tTti^7=J{fw$ro6c$R$q@lxrO= z^frXha11-DBba9FHo}3Rfsr!`nn^fvA+?|y|Exgd9t)p)CfwLlW1LPEMN{G&jx5w1hzs-{6Zb^T7ol-3IoByU>XP%Fk`!N&y$9tG3cEwo5n?A+kM@Y{79 zC-u-Sm=E`ob-M0yb&_J~Dow$v3mWB_^v*75Ow@qZ1>O-lgn!5_#tt90P`09l`!~I#c$L zxf_V`G?#>r0)3HVo-+3975<42RD72R0XT8}8s3&*-|5XAHAc%mR8zYkMm2(()|#qf zsj`F#{?)V)(%;a+S!3==Op%GImpY>5in*<7V>2=-QojkA1RR$mle@`X`PQbXKa_1{ zg0sA#19fd{2`D(Zj(|>;3(Wl2L_E(Wl2jAVKQzHy%Fb!3q|KT!LoWcxE(nY?`)LVr z{p$HTW|9uJ;}Y4|{qg>+2xav&Ys&VCeznS_1E2cUQ(QXmiM>U5F(=HTtMj-;343U) z0W_nw5HOLcL~B?mpBHc+>q}hILJ^yzHOL2+#i-Y8L;Z}#P5lYp{uY&_)=($4o}o6k z(otQTc+$)Q0mo)>w!boP4C%#|q#ziYyLCh9|s`+S5 zGj}#!0(Nzm42uS~?#el~>z+hJnY{xl6Z%ZY$#>hTMOL{ox6LniJDnsB|IAc0H?witbDu2(n|#*Ek72Yc1Dh(d?U zc0@S^#ylzcFej2VGzv=mK}Q5l0$m7{Yd&C3Oby}UcK~E(tW|%Yg7iZktAgNcO9wTb z6Dn9zw&cgqt!3AO_i+Q&Qjt((O15%<^D{;DCx}ALtVCu1ui0SD>EnH@pA9^;K1aK~ z?zPNn0&m)3b}Lq(1(8-YRH~+kh^O&&TU*^}hd%}}GSUapu+~;rqycNo{No}GEM=1j z1=kQz06av9Y+2E$JyQ&Er5?H7h=uXFB9I7uA`~d_%+C@=98D-B2z|B~v6Ppxqjfbz z#REWmkSr3ZWyH1l)=}3ub8B==-8s^!>xkwY)MRZM;|4W*O#3nt*Wz&pMO%zx$8%1%tj*L_^tx39n9(+R zohpnTpr?8`FXXD$^5uDD@fD;3YH)`wcK}7Rj2eN!n$IiHRQR%ip=cU*G1$?Pz$b1d z0VFc+qbA=Hft%&^H4|~8QzhZll5iv3eZvG{*cgTmT9bIY zd;iqo#~=p?xi(|4COU#Jt3m><%2p@FwfMXHu`!t|ECClGDRauer6gb_M*CVM;QuC` z_Hqi&480MY6X-S(oB@;tXCP_889-TZ#6tyIKLLba!ZrCeE%bx^L;F#4c})wht?jpViB5)`FLTC4NA0A`~+fbRcAzn$k4LpKHH;tN8!tf4r(=fy=q8RbR~0 zTGJ>ja5FS>k1>s|L$g@bTf8tNz?^@S`md&b_jj}UWgcK5p-rD_vwQknW*SjcTS;uG*&UbCwz`$kn=Q%tqy7nwdgUcq zMW_d>h$Reguu6++rxqoP+)G5cu({W(jo_E2BoLLCZFjI*}|&ZYF_k zt0=`>?8R*C$W>Nu-QmvwS#d^^?l(-9w%pztmFc(@1op(1Tj;~nQeUT^D0@%rFF$@L ztjiLmWz8ws^dTAAVmL?ZdAEmcOtvvIT8rLxo zIwCXrx^2zC#Ue8hu*l4yEi&VbZbaszTIwQK=+=3-5_z`K){L2LbCDSm@e)O5r0yjv zcoBs?eFr+HG(RU{51R^>yp;9+<+kKOhp?U}z#td^k0U0+$OU0zsC~+x${U}utrW?p zeAwTHPx)cfQKj_J+C0oTxRU2BJgVa5x?+sTqFN@}I9_uMVwULDmltuYzM9|X`Mr+c z<-vi`4t`H?&o6Tn4?rEa z2;xvj>a+9+-!paGDnkfHbL!O4>CcvG^5DWuM&cU(mqTx7t5xyqN&BPaQJAfMO9eyc z(3n>rFCt4}EUC__TpQ!37+YK0MEWmhy-c^Y-GRM@g)-e%N6?gwiWl{Z5AemlOjp|& z8hi4gdT(>Kb(=OVNY!=01%wKY#%MeX!9MXi^i-Y4i{VGy0Hu-+Yv*IoaqJHlaXFp0 zcfDrRDl&5r%V^)VaYplOd*20Wma*@7{mPu7<-EVRyAgE~q}0Ll9Ewh`o(?wUXKFmd zOA|^=RrK~@q^bkGIvX-MG>ij26zDbM*g!sW45R!_;XuMAIfjAZ>!$x)RCp~7g|p2D zMF2&aI03b;{%@m7=oRDLX}(l%O_n&Ww{7d=_2jy^FjjOaQQ5upS5c z*s=&N5fGc!k8?NM+^vWaH+S;KDx^HdBi1_I+%0oQa-8I2C4i7CT&hY47QPlDY;2aq zeZh!jEK@vzd7!;5OIbF?*$AY{sbG4_^Jh*7e=ujnOKIB^^3Z0?u(ob0&WD;W<8@WT z;dPZd`?7jn*~KpZ)_A&OM4G-FQ)JL)iU31QQNo~^qGCavlLIRDJ`o?3KrZjU3{OOj z+ngr~3fgvfNDaV!m-S1qu~w(TonGWG(ul%qULxt{(P}RKZo{H3^lklJam(`^8lX0K2Aj#b2e6?rYjG_Nxd1<-X&H zKMoLfP}?|pC0LqrCyFAla?7hyLtfh|>$j8u3P8zfrvy4d$*E2W)P$1LZHYz#6eUw> z_V_*CtL-R~t4)sUM&o4>0?n;LqQmf>*h;BVlXFR$SkAeKxjXSCu*m|70L&}r{5J}M)!=iiP6$JoZuWIQ3(H8ezl>g+y?tb zg_J7=61bGzLekm7nD)^4O}wJ-+PYa~!bTT>xWMM@*38EV?#G{CkVC*d&Ed7j{YZ7omrBw(esMP#xh zPaPTrkAXta3lcMcX8L74kUwReJjJetCJFvj^^DxDk$Y?lJ?$JhAc`bE=yUcW5M^Uhau(_>&KonYNr+^mPNvwRH&hXzeV1jL3Jxivob ztf-2zPy!#Fd8x=ew|9gwu*I=Ix`_%TFK<&eA-?FiFcqev)P3d0RV@*6d$4jGf-&ro zUkkL`qu4^~z9#CvW|k)z{}=DtF}g9LZ))%(&I10LIeA84PS3-f2p%9Vre;p(jYc(d z`eV)9pLUoNsJ08Z2XlHJ3#$koYvFkWW*w}oG>Y0}y}h1;5)zjAC5!1tAMnf{ZuAwqvcx8ShY9ep#Ryga85y-m0g)+%( zDQ|piw75ST?UAi780cDeXF2JrJJ~t-OY_WJ25i?+aRGR41HvLW&7Y)G@!ZSSSc+3M3@ICg~(`%JYr`O;yXQoYc*(L+l8Z(n%1c?PdC8duuxuAn z6lft-g^X9{tQGPa;n&Ktq;7XSGrSUEOyW)e1kJ2hz8;oRoAKy~*@9RYFH7SNJW=cs zT%k@g6E-xXl!f6o5PVOpA1HQOKTvKNs=zIAT0@hWW@@LTl4m{5ajlXwVf8k9RPs!~ zI5?iQO0F@E_NszsrJ9GqZi{3#P(z7prpmpK#lUsoY8`hH_8HPi@nPaO5)X0IF*-@O z^owpSWrjXlYlHJ!TaT`}DOMdMQiG3}k-Gmg^na%5|4iNg8MY7;qe5-_0hH&pdms)@=|ZB*$@%q@XIEy5oNLtVnk3`6Z8v&qPy#Y7^fJRK(IWimF8Vi z;POC+zpxeQG(ZxK^j0VS5|^J89dC1@gs|AAL{{ZB`><5sY1y1}$^r0UD&5a!>}7tv z5sVhAWkjeGKeU<+e}fH9Ho!XNDEpP!4a%Rxjg@7R`uJ8y7Pva?dB$K%vM834(oyh- z%~ZpGpso)sa3Sw5Fa+jtvifaeH72WT>itXZscIyqqjKM@8@%Asb*Fb_x6Lni9q3xVE}PjVQ&3 zhP43|X~>hb78U6@ESc=L6MXU#P*DTDJG!Xz2KeX@^|o=@6v!{l{HQtDW!*RBy@F0P zyAdWi*i;40ZUjK#g2o8K-bNQRyAeQU7c{#OCL=mrGmz|!$2D@cDLMgXGu=lu%}lqJ zXqt#eLEK%C%GX&+7ct<5z9YJLy~XAOsOMz$NUzNl1}P;(|~GBLl{FEXq}~uZIqpj{ziF9w39M5!m5bOWRvAi z?0oEzEIDoWqR@>DLoevJbQZD6@|zIEbbs|N>9V$2GQ}tW zUWFrp6U2dwfoMIlP{PKh_GhCT`Tv{v|7QMwBeK|$iB3NJ&}c99*E6-h_`$JuI1t8* zINW`AKR^Tq~_=txt?vSU9Tso&_%sGOx>W{hE6=~^kq954*Fv`m+G!r>V`*jU1C4*4@HhbihrD2q*y%L+0+U)Hs z_ZV5qJs%qH{f=>7=1;gKdRgw~ppm6=_q)s8<8f%Xc@ynKW+W)kNWo#Z9b{*>aSoG!u?`E56CGCl2S$kN z&f~!4PA<3O$M{u#c$8dcqQ@#R zD)k<}$}WGD-`DVaoZr{-`)m9zB9dH9f35T}3%rew5aepv3fMx?97PRdp@$Ta8W%MO z0L9X|K+&}nbqIv^&!P9}T)Xs^CK>zjX}0ofcK8v1Pa$I?OZRwtJsoV=Y{b)U5leX?D zr)cP-6H+zdMS2Qk;8waqs0}J7t51-Oi;;75P}-t(Lv`EtjxuKa(q7f9Re?D1^9q~a zWP`1T9o;_PAKf@xfH?xNS~BB^#?{07B+v%)Xbaz`*H8C7A;C6kkQV+ z9yzi~CW-2qPb2LAtilE%$jE80G_g!mFnUAr;Z7HVEx^GVY@o*b5LbHp9izu0GD9Ht zqJG190o>2JMD;C0$Br8%cJ&C^#$Lzi z!E>NlI+QJs({Ir9a_v8m!o){&U}SnB(^o*@w$fLqOn2(477=)NSFZ$!Dob?ZK5l^5 zy(SP;)Bo`POwJs5HZUWYo z{hUVsi>Pp-qsDI}xAMwTN1BL;LJE!5mP9P;JekPTi6Bp^sKAhAwt8N_+@I60Y@%cl zLk8kz3fZvNiYa@meuycPs-HwGq{r5}A|Z?U^kFvg*@D2YdZksRz`@3X(5qG%Sw8%D zK2KL!LlYzaE>Db@O&#P);bET?U{o|Y&Z?aUd=MsY$X#?xQF4XKhf0uf#Z;p-=<3P? z6^WU3rI<{en#fb16JGtAKa{jW?RaylUq_tMyS@DnG2*>eqkEE~P_ZQm0LB=^a1Xzf z6NPYXz2eo)3tImkzA3_7xgchaENuGA9%ku~h0$ij4eKs$uIC1x6gSs!1HX?OQYHIJ zlj`_z(D=Op<7bs$z%&Xah==Dq6h@#46`rraliLt*|M&GNo869%S zOC(}MmRfpD^d;z+(@q49hr$u#W63w|nSGCHI?I+mS9!V^UtP{r*W0wqdIA3oYurg# zc?BXw6-~c{7?%GlP!#hTX%!=nuR2~JlZTE{=kg+CnF(b$isx-o8ZXo$H7}`e1d}lL2dX~-5q509@Nu^}R(;Jz6&E>I^{f5CdMhn?n?47VMh0DC`?pl0{+PEMf_1 zFnbrlJv7irN-h5Ftnp7Yr#w(S45~G{99hK=wWufdSiOkc)!?O)Y7|8~6{!a1Gox^uEQr@#vSW9`3x>N9d^RSb$J=tnmyz8!Jom@b*>+XYvMQb?%MDpa+q# zu6iUJym|3d;xk)YHfv+o^&BSlRbYs)o4&~JdNVbspoUfJ{a#G zMdZIzmsKq@-qn1h@$0+Wy5G^9x=i_qq|cH*bxGQGQrq<~heV4uf<@7Me2oF*#>d86 zb#v4PFfMLG7TRk27e*UpV_uNh(8Ag=bOVe#0}0z>t<^D_x5jzrc#mvJH~P=rJH`t; zq;3p&xTnF z?tS{q%v!cg49XJfrzIjfq?uT46cfIs%;0a!=&n#-Ar!Q(&YuK_&%><3=ucRZvd$BK z)(~shOd{6M5|biH{Y|htom3Jv9hsWRI8#SnOI0mrz!8sQ|3~1A_^Ob75%z8=p4HfK z3IH)ryk=Scz~Srog%Saq+h(0-2JHLxD?2*5VRRjt6^5@%4)2Ft#as^A@r< z&vhi+#%O$9G|KWlIFHz%#;QT7*Pu1WEE~hbY7G{z z!{FI`;SQy*%%B82aqLAOtil~2F?NowK2olFAWZwC*{v?InW#O#g zyRkd=q>$@01xsWZAP_a-!`q-F(HxSAu1vgk>*#~s4^bBZ zb9Hv{2_P}|-fG){>Vx;=&Z)l7X`0IHpg)ly#ph`Rx4CQsO^iKAYZIMof1J;i8Rs5! zZChv}kU9}mrN))3OSvr##0;rXedh+ZAlSzJ7G}F1&6YOd`Ib82Ic&9$6;ZLR;%cl@ z1}g~_v0n>S&_M~g)RaN-DPdll5?B!>*k+p&$Q~s}IwdDvf)B8H z2VseKRyrl8T!MeFen;It%fK-)T4B4$wR|8J*6KZHwls?%S=b5xyNws{N`G|(mmY|+ zJ2w5CK%#nM8V_?Rt9fWd?q6L=a2mVTkMuvL2IOW26+U*zj#W3zl2ZfqYTzAB zh+P3O2q^`IYnpXI6uE%x`JR^mG0f3E?nc%C`Wy+5MX%QB*UAM-ed2{iZyLl zk-;dZ5m;r7sjbh{j4<&{6oDkTA=CNbT%S2kSVnEnE%sGcSripnC$h~(e19b0WnNun z)~E5mlP3AOlWF@gFt-s$=MPjr+r39z{d{{bp;EOb&YpS$4kpY?aTN?k=&8VAgIYM} zv+JiJ#c}2sy+i&VpgFvuG}-Tu{WAwewBchb3s&5KfrL$4HjkZlxMCAcV3dtgFx1SN zgsp-YsI6Xs`U~-t)|a96(Sy_4!7}+as)X3_g^1q^O=zYA2`FK&Ikw~1*>h25 zQO02jlsy||*7`8R_`T)Urt9pxkfXLlYxxWT{H$e@hSWKB30>)F^9BC_$S zwnsh53$;*d%hMzJ4DZHRz=CA+laAUN48J@0DSNhIQ|TBcp6h1f{Q)omt`2RG3FEPNdH1JQ*{^bKEpRZNnKQA5MM0SI_sh_voQI6)B!qJ8_hK55fiOncc{m z40r^pA@fGBG>fbCJzKFgPObYpKpn8q(p^?PY_coQ3b^M3afnv?5s_lCbPm;&1|9w| z@JStpu;~h2SyWs?u+<%w*_m{IItO*xl90pk>7UeMj3DUr`~dcY zI&n_+T^yp?H12&0Q_1@@O(Royo+zJ^Y5I)h!iR%B?MKZoJUmq1KGOS`KfSv zEfLKtC+`^sa>q~*z5|+vMhbqpgmd;*NDsgo!ytqp^NGaCr$ZMJq$D8fh)Sl&r$Z8I zBoI!OI^D#kFe=wB2qgRAPsol-0}Ulw&jm4e541vAuIUt7c|fCNIZ`*Xdiw{$cm(b@ zm$DgTtjlKft~NIH zCsWCZD4CT=`fgi3*epktCPjdVbyge0pL5yyC`$(IXI%#T^j^mhE)o^O4GgU&JOp&r zbXNyS7vRZ2hv!i|*Ws~$I&ZSs3{$6O6cFB+u zXZVX;T)P!qiqJ;sIZBh#u2P9Fb}LwB{o8aaKnB1q3mWw4_&_p<#59;^z*WOaP`jkk zo?y35vQb1;R4(ziYL41Ltg4=e5?AL~BR*<}rc^~msM2Pru5^a(<{9ize&KY3@n3xn zXsg!CsMeA_CDdB&LPngk$Ht1WkO|yzfi>eOIO&3p;}xF{*7+mmFT08>aeAlA5;Zpu zg&0ySULiVh3Q=Ygg?QD%4pKREG6#} zAk$Xh|iSQ~S=i^n#-~E~BkAtJ4~?G%6vcRJ)71hTuw8 z(%L-BNF8d^8L>tq2;z&$H`iNbM%8a_?<<@IO zO``q7v|n5Fr&|qI;7U3zR~>ziNrYqRd=_{g-?j*HTS5X(5Dpu|`AgXt&TUYXkFY`H zYg3fjczFi%k@ZfNzm?_ZETOGYmWBKlto|01WqL>O4U&{Xc#;;rsdCJYG%Lr9X%ppm zH7Oq^v>=|;;t`VBXvP>i(7M83J}}S;Gr_ls{-dyY+Lg>>az{s|*5_p?XRHp3i_$?z z0pg&^ie`TmE7K93l;xTB8%Xtp@|&Dm=~Y+iW%33v!Cf2smk=8XXH+PSiwBRWCt;Ed zRXxz>a$3LVuGadOSxR&=_=zZmHFkQmxy~Pbk>MbH65$K5CPkD<(AMIUuvY7JmfnPi zE>Ok12L|sc<%FUdC~ZD`APtf;sC2wo8j2DKa2;j=bqK3N4Gs24nfQe9;&dP+!)W-t zb%Ill$FL{)2@KxR}`bF&uFQ?-CkfhB&78*6m}G>xXfS_4{0Q-B8FF}Vro)Dyt6 zPESdJ>cF7B@vWB=LV7aZ$$7=}JdFrDqYEo-!B;K~*kt{CNq|k*AizqH#$T&6d-c%i zfZdwdIp7STDv2H;qe0=rrhG{?iFt&sSWQaP2Z$}e*&gWy6lxNnovVQ@OFE{9V4)cF z?wDuy5uPCh)BP=lX3-gq!=U=QhG%J%+Nk{v)D5Q^kr|mS>8Q*Glih;+>pCWHi3yT& z2?g#&=u@1PnkE@_obJ>(r|UwvXlAm`evvx~B=#tfbOr+wKUh~HHIc~}!bYUh(W;T{ zqtW?n^hsyiLhy2)@lHDJwqx@ks~qLe)k@>JrUD`)&B4wR-l>X5Sr1m_`00HI>3+wl zNd;%56ZzZ14V@W;ZBdQ%8r;NDJf-E13wMeoXF)R%LMl) zeGGBPizH?b4SuD4eysDH*Vj+u%dED~G-`W9>&NC+MNNf8g#D+DMWj^+zebCQ;}>Kx z41cB835M{l9=d@9CnHR^$(FG~$EM`Jsja)!xDGe!Y=k9v`UFDIo{Z!U5|#*_KE5t^ zdZl}h5OTD8f26&!5b~3VMJrBHx;9|LLWo$ZsB2m&d9zZU&7CGyfr_jUxnVc1kipBk zLQw4LbgY{OQw-{03f6~@H%@qcAt;ahPt&+Gf_7{cAK`tyosbQ-Cu02<10+I>!w);zxFh=I%zL8~$4iT#(}Da@(i&wSR5*lCmo?c`3_8rey+~)+-`W z!fmqk=oR@>=#JbiQmLVJ!(roO;VyZ+!lQDa+U+zkiVOYsVP2b8CvuLaepB{dT~W_1 z#eKR`0AtF>W;cz!Ji{y8IcAq5ptqwk@xgtgjBZiKd+C5YaHE0vsjkNGxzw|aeMH2X z=&@p7v~LH^ja98OZkxU-O#i+9thAK?ze@d~oOpVfUD)G@(U(WBsf8HkgVn^hsTcTS zCfTOo=Gw2ubJb@aUaggmxeDv-KW*>*(Yo65y0&6tZPib{5Ojvd6fJ{~h=zx-_u)B1 zGDGLC0r}A%2Q5ff2(2#*v^a)Q!&1fvrGpSC4aVW``SW|cv7M{}oRZ0uE2}a)st_Ft z95bVt-rs2Q=}b9HDmhqS?TjV5bo;_!)*xir|Fm6->HQU()80 zrr#g6eR6G{em&6iudA(|em_prU#y*e;>y!HO4FaB@R`Xq7=T;s5*R>^8&*FPuh8i^ z&izJ{llNE)-APtKw%<3l+=l5!)^GmYEbNkE&x2hB@^fDbQC>YKB$I(WbD{_dWfXYr z``yKC`j+gw^_8i>cPaN?uIwQ3Ri{pzjJL;AHf+~VL$iuz+UA{bcbPgR$bXkq!@RoK zR(Y9^-dBGEHs$s%B`yN+NZ)% zKNU0P_&2K2!qGcn@0NF&TAFQx$wl47BG?t(#ww`)*!^HIFgc8&$*_%s!sa;qn5nN~ zkQh%Ahs5;(ioqZG%~{EO%$`ZaSOCEX`VAj6FST1aVZd6r8agJ!*zv>p9U6|U$7?MV zlId!{rfnEd_Y`%YRiX9htTUN~DU6&NU`$cS z;_~mOBB4Dbmn|tk3G%5(XxQ<$*mY+6jwUx_(D+ z3U@^736v@Q`NQDFQ`%4WFSS*y4zMDSQBVx?4=yMAX|NKDK@Xnm0LGvTS5thl)(x2i zQmcaJlHSMm-;UnbfJkU-U?^rJK!nuNfJmY<5MHYsKDS;u%*PlyjBTgw+901`ZsqXr zkm%bHN~aNGH^dQd5PiV|RzQ+`B`p@%L&V_$FY6xqRG#QedV#BNw8lp9*eW`w7-r*mRL!xhzu zMMC*AVOyzF0doE^FP!xYtf=U+ybyPbLAn?G#o5vHo}N&GbG#{8b_uk*E>X_1qd?%I zl9NFV4tEnS(pi|)`h<(@UV?y;8V$kh!HgG*!i`XKnR z7XJFhyL`Ndh;0LE#0?_*VVYL!k2?3UuxA|wC?Nw*c$M6JTj!A7x zgaj8sf>Z1O6z6z7AJC0pBhP-KUX^LZI&0p#75kO96jwhu_hD4e(>=84o!RiO^RiHy zLL~ES_^)(x0uyTGZ5F>Ao_?juA-&h>{>dJ@ya57&jJf`a-uN1o zpX?34M1>Y7Q_f{>molAM1k#X6OCDkGwV?F-iE#TbKAJPDe6smWdWr%k$2fyu+Mm0LgQ*RxE7n6+^uD}i>wvujl zTHncX`(vXCZ3roxsc9}U>GD!Kz9dE>9}Xq=H%BE5RFXP_s?OzUkN&-?-=aND-sgko z_2In9>Wwf-0~oXdo_zO+B)mNJcM$5)RTYUm^ir?JgvU8Pv(ItNFaRy=Lku8PfV7_)1 zXh&l)h16IdKGif*XnSu{(VYz{#0#oIQ^rvhfdmWmf!RrYxBw9y=*R>>$5FmkPA}%_ z3_@`(07*1psBFuhq8=x4DzvbXf~SVxud3o!(XQVghs=kd#g|74eHqxWC;JgrMfI6N zinPwXVLGn$bUadwCA2IQy?&u{q$YKo1ZTnY$}POZahXc^T!`n^=Lwd21LSe%1M%o2 zq3>FsR|(l(@P41GWHu|R7j5E`w!!H((c8grq@mG4eMM?9ZXPZ0dGmX;7;#(xR_lWE z%{clouX?fW)q`U)Ys_*gW?mHs=eK(ZO-BT1!^@QdJe>qmPw_s@OxTgClu>@oB#=?Q z^D)(ra-B_}3<<6StjNG5-df6Tb6o`TE@j_5?xhtn!*unSWb)Y6u=!usR;i4_3}{WW zyt0%r)suyeL~eQzOM4@PIr2a+fh)8wsR$=Ys-P_PWPeWgs=v(ZIW~H%e|y7QvkYod zO9h}R8+Wcwy5J6SMb={(ZEV*#O1xMDbEcnFtj`O{Wi{w^Zi>UE4ZNGYhUTkT;DtO- zMk5%QzOffmHv;vXsO0*tyTM$fYo=xfLW-XkQVink*t)wuO(A-wHDDA*5LB1Ez5!a9 z)@nv;I*Uz!99#R3B|vQMl_mH$9yCLqabsFPBo)s>v%ZE$?^8K zaH9HVC0UPB3CcYhg6tavIDd|z4s6l$)PYi-|vdt-? zF&|!}ARg<>^Wk}7{d4NYTiKRp&Kz+mMfEs@%F3m=vr_rh}Rhw;P2lK$x25IU|!ik~UE;e1`u4b056Eg_+l zmISWQhj8NKmRkM;I7V7g3;*l-#wSTv?2J&Ebluw|pRob)xCD|A8l zpLjwLbYz>-`zoUA4w{Ls+r4fu(PwdJkys-&BUiiA!O5WL>HLRD?FcF)`SEwPBQ!0$ zk37P>@`y^>=Ox8{qBtZc>LX39H!Xc!31N!iia?;8BM^1&nCp z5ob|Ka1vI`Dl(#$mA(vhFLN=Lx9$j@o5U|s35iXj@@pG&O8z)mG>KHxcVJU1-ui$d z*ffELvMhj-r;5b%?`rVj?pjQt4c7x^NYKk6d#NJ)O2P^zQbUtrDP9b*vhyN*h8KSR-#tA zG(iCgShBh3gvgQD;)Ywd?LI(fj;k-A^fCS7XIfE@8Fls9kFRFcPHt9E>0VuB;(O9x zuTck$D4K`DrauFnJ_Ps_eOy!kJQ*sAYS|?KyD7QoB?h4D5-qW((BcTKD-=stJ@rpk zQ+>~ISLa!$CGP4x>uKRgkxKeuT3J%Inv(Nwi!>7BRN*;INKn!1yg9m1zQbn(0fH6L zV~g@y?Z)Q!3MN~>I_pBeP!^@tU(q#H5NK{fAm9s7&QW^p{%mv|%H--Gc9Qc3rU<1& z(=>77N>~s_I)}nh|D&FcyqH3Mlm;r`q4ti+oP%^M2M-Uok2w}2VsFPY!#4{48~!AzJF43tg=-z8&_@l* zt82q{=Dv`=G1;=B`nocWsBMZR#js(I^!S8&++!D;``q^RETOmo+_Xut-I9!rmlVo< z`~V24|C(S(w?;7|oS1BE%F? zLin@iUw^TT_p&iS(j<9!-FdFZ;J4x(jX7QyB!mQ=At7(oBOdJtNR3EE=N(X)a(ola z%mUChOG2kdeexSq$>|=cFk*_7bx26X3(++WW93#Mh!P`QIe$U62B3>3@7c&>+8Tj+*2PA=mXBdqxW@ea>$H7_m|ARSFq5e$Df1TyhRX&xAyd z8oyaQtT1wT2`bQ$@>OvujrkRExy&V0NiUq{a!n6OUf4TF3m!YykTCKCvP)mTV^SaJ z_mvK>Cn2WorSLMJ`v6mRUMEP6$yrv8lsbd=VFoaXOpFR9feDjoQyX~igbu=xQ~Xv> z+Mgt=9wSX#5#>9Ad@<$n%W-9{rhpEvQD-IA7(X>d+u0||53{I+HJafGd#GcCkid*# z>&!2;sM84Db5kWTazlUkI2}oAz#h3tx3_uUdh{xeMcTBNUQkU><%g|vl0dcIB@-2s z<%U@%^t)bICtU_XP+6L&6Vbsa1MV6ONOC$KGu6jaD6dzVqh|fpghXS%I}r%6MJ9u^ zqG_058e7Dp4OJ_>J=_#oP$EWl> z`%->O_Gel`2?WnO&x<-*IxV0i=+xC12a7VrZt$qvZ$3z|8+xGF4G*yW3O;t>$5(07 z{pnZK^Pk##f7C+3wK;Y}4-~txuC_XM!;c-iv38O>(-LD7fKO^h0|Lws-n=PvThH5FTrOD1#cM`SE(gm%9$mXI-)hoPWoHK%m;0#8BY7PYqNp zqLfT3h+B2jpoW_R9ULmfqi#R=;9#|&;3hrT0)*V*_AAT>p9H>%mrqrb2de+Qz4u4$ zs9c-jtp|ely4q@Z`*8=}&bH7S-mHbyfw>nPav1AIc?>E^J;aO*x5Yc=Ia-tP%13{K zSF~aeqqwG5oWxDiAH{3YUm#zP{^r^cVc=@|4Ih0;--&sOc=Mg*5(LMW^xX-~WqfBe zkZjBn5`rx;ql*9H_H<9I$0BN8WvTFd;n7=Ms~&DbI(Tsxht_iXRwAfuqvG4NA9SI`&tFV8 zsR!6nT!IMGl)%Y&=VHU3tXf@Q1SeGka5~jB+8`2*X=I(z#w-_KE?C^P7PU;Tke`sx z=up!zO;SRK>JsU6I`-$nOKeJQ5XM6`{5gTN zX-VH4$)jFyEE;r>f8+XDQKAyP_tM+{Yim_)2W*IfK-+-F->{C%IrJFj(5GzwrIHPc?1W1?i_BfHVX3?9PP!Yl+urRb zw>`$6i2kZgJanQn0GoGx82K^?LaNWV5@=M#A*_{KlR zIyks6S@iN=ua`-*s@-?zv^bn93vyp^N<$y>dtN&l*qjX=Vt(`5v%~v((MhmaV)1@f zGDp>u2njm%oeG*4K;-`H(RE#!Jh*VRI@0+s^L62#oqv>iu4ZHSOYGTy)%(}${Y&-i z(R3dDhMw)n@bu-C96$^q8~zv1em4Bi`Rwd3Oy(00c6XvPM8C+UDqb89HDs+>6*;vMGgA=&x|!%r1hA@;TZDF0;8nR4)LxK{hsxu5)1EswWi z6z^Bh);CCD!%q}!QS7Up3Bu_SUyHYE&th2|^tQoeZl!4ag~_52a62>|0?@pe7Y{?lZj zWTUu@Q+lH>S2kN!w1b*bq;wFydPbG#53f`oM)K%=;QQ{U4$^*lCIGK-rSKHc>0bNg|A-KRNkbB@3TPf7Q zrJHl?7cz&wXD4yV*0Vi2S<2joEePURKj--FhtDC;E@v6i3mjIB91hObC4raoBH zg2^&XA2K6U^ihuIy=XVA#oM#$5}>6oLU-#wDN}%$m}!%qsMgGDK=s8HKVqqV2UAM= zOhvO_$n)YsEb}C1>+Q@mjuP-dV#fJ9I58f}1{k6#c>h@Q!V=`fcz&y?Z`*-p{op^W zUipC$<1Y&hTvh8dDyrsq!^B{(R7ZO162T^djcVb7L*hB;O-bEP$^Kf1!eF+5$&{twJALxp+} z&?a2*JGdU4uB|%!8>=Xc)sN_B8jxY6UeWal{Q(fwsh{WKWZV^eHvE4I$&mDi>ay8S z=H2>R(%<$)!8yIWQ1k#>8Gf1Cwhm7fw$xOg_`kWmTDKncPw4ha-2%L#RPb>0@)z}B zrut?7&^X(lPH{barjR?T>CDyuf!b!?E;IUJs&`f6x~4k+>--3B&g%Y4^&Pec7o1lq z1Zd;v1$`R&m16cwMc#YRgNEQkCD?(F=11}Bi!0~^~|qvJEL3sL|Yt`L9l~^mZTonx7#*HNdaMV zl+ zmz~gNfg~Ed$@ni`2F9C1>~b*vI|Q*gfD7WYP#!O4|9-4Q5MGQhEh+`UMapjCvxU_~ zb?7$(8;Z#84)IiGcPYs+O}eV5$t;1)?jj7HrEK;m6GPkwUGBCsJirm7^hGbKW?e1T zSH{X)ikn3sZsBa8!dYeB4@tN{g;0wgT}?Ub#d!5Sy3JmtCD{ zAgl$$>jm|fNU&~L#oKSi>5C4WnQk zX$Yc9+ruG7Jx@ZPhQFarZV3K6Iff3(0BkV(fAuf_>ijdG{%2pRKE?;m+xdHbj8oZjRWoIZ}@OfW>2v3- zLHQ8qOKs7vuiAXB>XBETVLFkN*fq*=f5*5!$Di1Ah0bar`BORlX#W|-7Y33M`j(rl z&nils?kJajQWKbenoDJ37T$O)gN_NIzuNQ#D^~~|!l2{>cZz=1%LW))nEf9cr31pC zY3}dq?K9BJZ1`D#0IrQ4y1|tW@JwbqqJFrcEVjxZ)?otCMoi>3$;nm(;17RU6cZ2T z+P)G<9+;F32V?1MG5u&$rS{a0q#XcU!bENr)e}l;{j;H0#0DOIl84mHpS>EB5ndL_ zMI9|HL>vz&9_g*y4~$W%9fY=6+^i@j3OSL9DqN1Hug3$8;pT`>+Z`iX6kOT{qlXI*)qajD1V|ni;PoBt5o#Bje zDf~f<;akfI5y#uH(Xj1ftfQwOXNfxU<|L{NQ$e?tZU!^gg!Z$GB6?~to$M;SyL&=& zwXU}5b+tjKNS^R3&@>)ExKzuSNmM^o&zOGgEt$|bXL4d!uM~sSB2v7YTg>RZX}R_t z`qMa8dJEW}sK7+^r)W-V$-n~DPy=xPv7C^_FBUOF!C?xl7K|`Q0g?@~&``)+UM&x0 z#N&6luc&mnN#1flFFo+4jG%Gu<~~4>6n88X?j}CaJf5%Y3GIHt9+0)~G*#4f5-Q9a zSA3wFyq^#ZRa=D}!(_lTNKR@rHT*e@20jEWVd~|(v5A5k%nEPHoI$SJcvMXXSEF9E zWCrFcUDLSdBaZnV2yJaE7s%|AP+o+vQt??&?P)QI|IXgDo>_aQL_03UuVCuEt_n#SMXNFP1PVmkWz>7UlhlZp46w0zl#4_bzqCAjLMAp-0C9R0KiHhUpQ z6K7E{*=i#tK^PTG`}@B(jFbC^Br)h zIoQ&q#Lvy^zDA&){~G}HP#)6`XBhxgNV(PwmQYRHKojSXbsg9#(Umu13ORS}v6#X^ zOd-ZniLZzd5{?GESIa;HXoSQhl}TXI)aqE04&BX3R*K(Ez`jRtGl>SvRpC+2p5DX;;N?;VT zD)wQS^UU{~S)W)x>(F}Q+p+q^tRrh^IssW0L@urb33!*?Lo$Jzr_}}PKM`zY)POE3 z0k}V;&eT`etooe&KC6g4Ctjff;%bqY6!}QCQ^v+P7dA>#bQT|rRV#Z@yD2>O|qa9zrm%XhS5Qxf4gk`E- zrj>@ak0$lr^?WkwLl%?%E1ZVivz^SU5L3aTh+Sad!cunaXsQ=eG^I@hY}MK=-_L~L z$hzr!Un(vp2@Owu~vK%rP!b>P(!21II4w# zjub?Uh*yYM*~jn7k2hVB4-4TXHfyMRR_;B8eNhK7D^IM>dPx&&W*u!XUof{_#kV#K zv{yZ28=O~SEG@PHieojCy4RCR%}d!$+LMWYF`>|6J*gVCXLGk^6B*1i8qz+UOf#xw zMeoMbwN+2>(9}w((aa8**Zwx=rqHw$n}+&+9>khL_Li$4 zH4o?})86CTG}(=Au{ZXjgPd$lirq6l0|s!(ugiGwt<6Gp7`dWvG`mz4OholW1%j56 z%t*gsU25idcUN)qt;J4Z(K?(3y%;RT!qAzu7^=OkYcSd4qRm(*$_B&O8|vep0U-A9 z$S*P-NTp@6SlmwC6C>sWm+S{-#}h*2X~l5Q@nb~BFDpbQ-@m#%Ekq{tOS_KLXIp?; zM4qV;`OBLkvQy7}HAH3~AKnwKE$}4~H0=Pp1p9#kB=!R?sO}L3T1D>+_A}dIKjL(k zsK(}E?e8)_yWDE~|H*qFc)P0V-go`k`|N$rKIdcy0trc!wRgF<;gv{e5fEE%=IIBJ zixlnU_4W1fo<+b)4uUzv*nS>=4sxW?#+FuYjjvRrQi&F>*vqT2#TqKDSW(f^N;S1n zQ%hTFV~Z{JqP*{KjJeicd!KVcKy2-OM$X!6t-0nLbIdWvzd7cZ5`S*KFU`u$VQDon ze21O4s!6k!eR62RpU0apqK!md!^K`n&pz!;;YfW-XD&I06b{khVH6Gl#>cm7NtNGH zByVTPWAuG>N^e^uF)gBP>Po{M zdb@(RRkY35^yFxjm$nmYYsR(yQbk* zQf6Ww`J+saa(fi=D`ZJb`c^#n3B*}YTx9D+3M9j!r{vM`Qfs(Wq!Xl4;x zagld0hm;+NljvdSTU<`i9>!v}f7A&{_3$k5WSSmwxY1Kyp{lj zl0Ra>5#bAfVd~+N={Xc?%ECd3vy8)Bn8P4db|mrL<|&~%Dxd9j1#ixOILce#rXTk| zOq@?O01+PgQ#^uu;P+woLlE}*aGxH$PXeG3*0OW>ys1oe@cjz5Qh=3y=HQ&d&($+e zrZ0mJ<#=mGUajGk_GRMa7=3kI^(r5IwYGZI7=5*_det0#wZ3{aHu~y0)vMO%tLN$! z?52h8K!yjYTwzSVU>Pki$uD?I3%>}zKqwh<^a}!N(IW3M}-uQkeg zJ!!8eM_+5C^?J%)PmR9TXzTT~y`CO@tr6Gj74~|?=xZN!hHi;TglE_|&d{h$Lloa5 zV}@nolTkLg#%*lTR17P7T8dja`nnvjqwMujqp!;WJKA0!J^H#FFs*MXxND^Ca=?zU z*T;;$E(h#bdwuNa>vF(W+w0Y%uMan1?Cl>6*jSuq({ew3Z%neV#`tExP9s%t}Ca*p1W+z3^Bi z{FdMji-`@P;6gGSEXC+RD4X`FWj}-`ap317CR6=j4U2p}dhGvL93|pX8(32<%;abW zK-+-p^l?C)JC%DeS>=eGe#_n#t@H5Cv?QMKpGY*fH78r6{D6heD4J`pO3_Sa6dS+V zt5P(#k#!>#mZG_hKpc5hism*_bL3Sin%neehUvv@1foLa=R1hVCC zA^RIm( zJTxfGL{HIOLyE73*3Vzp8%Kf7XBAp<_oLVd8#6jIWpB!sxoIkY^<@`Z4J%5T_({UQrN@yBM(MF9upB#OfG9!@s zY{H|;t3ICB3#N{)h~m%6*^vvE_VTFm<=wTHwi|>mSC%jDtGy(#gnij9Up`cONn#Xx zxuSe|u=Wy$W-q79mygw667$=hnkwHcd_IC&J~&v>C|f)sM+gG_I<3uG*RJcjwQJU{ zS3?m4b$NA7U0z+O%d1UYeo+GJX7GyD166z}1)Rj4KSEJarKBVH7F$1`7?u*`g@-G2 zYtHJg+w|^s%>$+VySuu}0tuU{yFBFKq3RA_b2wPt!Op^C)!kSa z3k$-n)d{VHTgtnoG-1mJWegEdl$O~v(?P=MY+{ybZ;Y8UHlZ4X&^)^j2#U<0{g!37dpyI^?9BTq)ygTu=BZsu7KkxqV#Ig3C%t zPgRT|2LNpi7FMyktT?xdbE?s6D%Tl~D=vhN({PCT^@tYvV!$BD8>v5eCX0e$1X*)$Wm6n8bA7R9N3r_G zm(KYnx+!5bgZJU@GGahd*`tW%MUF*=XP8tOD3i1+;QD9m_+gWHDBa9B^gJldf=G#t zBrO^LoyV3k34#@nBOh#vA7uJK@w4RzM8JA6_EJj#d%ZAyILcDR2;f?c!1ZFV@A0Cm zV&mRCgyXeIY9rdc7$(GcF}+kV{HCjCy0MtVcg=#hr=+NIj#m#5iQ3r)Raxp4%`RzJ z%y>q^yuRgZD63%M9Z#*6;gPUfhF1WFC`}}yp+k`kcc`@FG@fcZwFfzbhx(+DDVAsQ z`9u$;cg_?yN#IP;XXRC(Y_VEVk&~j#4aKAaAPaMKV@Ap?UdBH{!~{pAC)D;B@tz=Z zVYOfYA$nAsfQAy8~-E~CQHd@Te&?EaF?5=!j{1{7X?Da5JJFHILc zki&*$Y<>|s%MKc|*{IbHc0m#Mst#6FJqX|MJpttx62(s&w)rnV1K2bk>hUmad#b7y z!KPDZQ;(w1V&9||Kqm?P+MsYcp;D_BSt+QljlAzQ_`K? zPoqj$wpq54vXqLl8x_%B2%Q01aRa|q! zch>P0THqB$QfU&mOQ4J@9JUi4y+hcfCPlklRHzV%+E2?~Y(F*TKgpw0rHyx3izlj( zs~s7ov%fov`ZF-jfO>)ER3l&mW^)xA+fnSU;`~9ImWh;lqQf$h)};Ub=q$f(O5u;J z*o?zmEmmx!{Cl@ShfJ|fa@?EH>YLdDL&l`OtxAW1}$i5a>&c8_x(jSEcJ=N2tV zjQ6#D7J2fH;IX{2ZP3sP>(0eD)Cz0MrJ)u!_6j6?3*gpn!FNR|2!}aryaj05EE};c ze=O`g0IS#|GojQT{vwJ$)|w`T|7J10rQbObtu~uE`5lq%#xY1s<8j zWdqg``i+_Xq9X8a!UD?`hy|)Sl`_Qm4%Y0t{W-7-W(ApKI#u+6uivX!|NE3j)JELEzI#*_cF; zUVs*lV8rOur`meQr@#S(@p~Mdiy@Wk6e#(GeLMODm+H3g!y}@Dni(uy+AOA9vT=h? zNlj|-@#Qdl?z-(al@=h@-Pjg3jnoYQ3Nq5c_qPf?rdm^fxZ{iQt{mli^uX+0x)&ZO zU(;1cqPkN>kCu1kr%zO$s^*<#J7^$LDQS>Ss2Iabt-M0?iUlaZCwy6>B>iL-Q@7ui zm1aA_TH!||o>{-qIj<0mLP6}ImXR`l$R$2RD>fg7$o_F@1?nY!2hh1iu5nJe+k#Fo z*1ena*?r^P_=#)-kWiYRKXm+!b}fE>!{hqB z13kqyJpO1>5NseYK$Izkz=fI$+1PGYdxJ^By>A;;NzcH6KKZT0Wus<(bCpB)zf7_?k!8^EkC#=-9+HZ!tw`g3ek1o8E2kp*r2BKP3 zdRZYcrjzX`Z3hnl!d@=Cw8P#{Wi|0q)MgK~kIg>Qga36Yc&LGdN>X0sWo~qTE#-;K z3q>Ca6am5`;_>6VfR7?$ z-DM{Eah3S-tx8JX=Et0VtnnXMJ9H8rq1@>D)4k@JK1-Ds&M`*~a50?{aB0U@s;EHb zjBdc}m1HQ=S6F)Iu~yc+t|^^gp=1--ubTme{x2xk_Jq*3feSg-3VeU`^NeCbM(`%? z*t)6HXxNfoZUUTunmM_FZF@RF8QDC+#tw*}Zv-+?Oq@u3G<9`>Std~=J&$x3u7TXm z4+XUm+RTDh>JJEG6KDX}c&U6187Gt$&7aU%T&O=UTQ|p~HQNyAi^k90USvOa`z(s= zlgZZZUt}}#0sN<}cix1vLWVhbgjbMByQ|F#)X=(?0c%5VeMaVgrv;pY3#@2b=UTwE@KqkpORB6?~;9nV#6UGjfRW)UZhxFH}EmhC+_?F1OyX&c#iyZD5MG z&0pWka=J(90p_6J|01>u$^eRVS%S#Nt6>_1!vZsN%vyhZlr2)Mj!i~v2ZnzQoAPRC z+gpPJfAgP1vDOIpr)RaBVyc)vdtHBOXrM(7#uR*@@sJw8^`RaHIKou|Y@j-9-#VHb%maQE$BCI;{uK$VCw3RJAlCZ9er zez=U_dzs7{G?HtV0R@?^J zDCeD1GK4JdBJ);jgS{4WC%2v2Qb+K4GU$M%dBc`B)~#mA+lPS4%ukRL_ZaC9bw$f~ zzJ@Jvz-(8|xvcueU^iSIvR_s9l`4;5kQ+hnxyqz(8$IL7pA`S@K_#<$1sLI@FNuqAhbRWe)E7>^c z(L%JeApYI3?VOAh&w;So$Em{~YfsgHy^jMhdkLf^j*8k}Vn_*&4_*tTvH{0jt z`YnY9@qtnWFx^;0VeFVhxSiX*EFkf?Z_68e^Scegn?DdiHn!HnXCq3=rOBx{+_s1( z;SEy&8Brk`JQRW+-*>o`}Qg_A6yu+r339Az1K9|sNpjG{6=?jsKu9Wd( z)fV?tqA98>v_NpF+L|#3K$l;*1?SZPtwJEJ5dT`uK=jL_Wv#2dlSHIhM>llg7K_ zeriZ86^RuIgrVK_eeI9duLcvvG7Ktbi6>l5OZ3YfUUL&`ig*eJb=}iO2|u8Jkb+@} zZ#)IVqHk`yC!*@ZX_i)daR9TzMz%S2U1>xrj$^|C4`3|lP@|jD7xl_Gvsf6rW0IJQ zL)kJAgm_{Z?YK9V?_r4A&;aaF`!DgulSN&AD)9dx_3hQ*7_zfT3%pe)Vi(N%0TiQM zU9?Ujm20#hPFv}c%p5T0$px8wB0OzN<&^+eP8B0VF(Q7HKtnz@_Wtr zjUt1wxO7AV;zejMDP!1R=oI56V(W%q8QMy2OJC- z19G|?{Q8fE&7&Nj!p}D_E6U6)!_?`0E&n1)=Cv+f(yUI)UW#ZTy|I21O*CiXOX@P! zi*njGv7L5Hy(0?<){YZOQZgA5JU#*RC;F*FnG}o1>i3NBqxJiP)eX8^g%tp;WI99z zpZB~5W)m2tnaJ~BB?PugW4nOBv{J%|gFwTYVJI6mn^3N7w2Zn_R!U^4z%WIWCvn*i zIAXWFQlcxLe@YvmU*g0CSHwb!xuw;W*l%jUOsKZw){J8bO9ow%&M3hDrnXVCKCsMl z=ZnlF`ymkOtWD6BnPN)T23WumDmL{yjgn2VX?J--SWE_JBBizjPO*)Q606||`<&^s zA8?>|MIr*n4A9Iz){CU|*pTp}+v-C+6{BMs)fpWVUD__Rt`C^2zQksO2d$k@r?uN4 zwS7y{8f&Zf@7GeI$Mj;g;rjf@2tJcZ|K+R_ z?)51ju?+J8tHgRrO4$Vkdt`Qdt~4exlSpz*8o3)y67GwHE?j_VtLz5UrwjPDv<6Na z^}lKgem353On2C%rv$3}uZ4ufc=3s^dzn7Pc z)z#FBz`e5(*CyQ^(?i-rReC`AG`9q%>!@SYV46{jnCQ20+T6}=$5xtv$3$ULiFsN! zRSWlGy~0zQa-@dQo_7o}WqP;iz(t+Ivu$$9hE`skBS-5!1GJjXjam?aK=e66-I>iD zI<8uivQy!6z^KY8uvFvU4gGy*{yjfO$Qbe6nIkv<&XRLv7mt08EI|MVm;UC_>YMLq zHr>$h(QqXN8c-kv)cL`IjF7@42Z?(K%6VhF%ybOnD`FsQv=Q4dr3_tfw2n1$3=nox zWrU2(%WN049%o)KJ5|B5hH})6fN=uKBUP;LwIUcyDY%y})!0S)l9<=<^wpiZg)%+a zA6q=O7R*Av0L@z45&zWuZ;?XiV=HylZQZC4K2eR+5=x|x?V@jX{%%PRhZ|dIXu?KO z8ZypQc(RHoo=4LrK2N0gmM0*(=o>K9XK2bz6?TTt-9MGBygt`D%5KiC!2eir*u_I| zWKZJIt^ni}&cW?M_@v3oVnuhlpYoD!CHnOXzLiycA(VbDGiczpMub?G9FtOEXo&!6mfH2OFi z^|4MnSCv%9f9d2(tMX-_8g*u?9LnJy+YUj29Nw|)zv!lOtg;s)X3p~5N-d#!Dr5h6 zK6!$KJNbz4rRI|K_6`WTy!$>D92|W_`|;C9OdQeMCqT#a~V9oHMkL`;IU(ow_h@r{x zEs%HV_#CQ)%|9w{sZppzx=w4j3cd`PcG}}OOQKsxD~5)1mT~5oxeUg1Bh5@-Yv@E^ zy6Tijmn^3f(=ps zJ!&`XDdm}bAuQyv$#SAzVMNQjSPPqaE{I7dj~`TAhgE#4TSAr)BV&sW71T=I)d+j7 zi|;jf_F5N}&I};#(}o|e`x*ooalMBlc=7;sFY3H%^7P$l_PjTl0pbwdb^OvKUhWMA~gxQY6$Y&le- zu1pTPVu2Zqs#;PKoHa&;lWVjN<~%DrW~6mXbu=aA&P)!7`+tQuIg2q0c4?>qj?5*! z%W2t8U8#D9u5@uhSH@u{o)8X3HeH81t827_umVawXclgcm&-{H8MFF(>PPOxH zUgKYXROd*jhaV5XmFO?syU< z&CLeH9iu>4bNLP`hop_7b{XXC`I=zIk|iu@=$LZ#hApti-VW0^=63w5BtVOFtqC$1 z*a6l1;M%m548q-4@z@icS#JPnt)CjRVfJ=AldDt`TJe>UhOAr&1o?uFcN*isPuCac z8Cs3ez=gQEc=?&%wk5uiArjY zi9fPM%cLf0(zRL+6E~?jCVn;UQga@d1dX7$LCtZUH)xcluWY1}n`(#zg=5n6?Ii{Y zvQ8ll3;=$($`z8V*=083VoyI<3C&u()CpPPlGcn(#9Qk94 z-HfSa*@+z*+P#+HK@ETV*$=&Y>>QJal8$;O%1`U>V6bh5S>;v*0>m}!U$2BTGR^VpY)n;!-MdZbpw$s_v~CtoZxs#Y3D z%($sFUBGU-S5-1s4%2YHE8!{Vh zo)aFh{e{U5P-yEc#5hrE{KBH7vXgo2Rc>UC%2JcQ2=NeGDOsuNdE-Qn*yJ0brV=nR zGQxp~LIHhXz+aphyBYGOtY+HqC?fM=`_h^5e)5G<*@HY{_B_l{l{IGUqw`=K9oqR! z2Kx~YFk_}GJQZZlFC_N>tJvYXiit&y`bA|TRvO2?=Fm}D) zIwiD~4OEOb8Z0rF2@UlKS3yeJNbRfDwQm?Pxs}+M+*>hT`z8W`EC&d;S$0QT<<`h} zcSVaG-_%){26JM9a*3Ey=Do87u`Vn$oL-xA!1y)aGyy_`F%RkfxoKTjJh zgYx9$*QHOqW8h0L@pD_W2OxFBqT*sO^bg8 zo%35d4eqjWk{4rR@_{AizLdnpHA+82!!~`)tc!<-bu=NA!>k3iMFvT!MTsUoN~MTO zgq)mwQV@N5q`Sk0>&67>o1=+QQimcB_}3nT9-=NC3!3D3g6h+cM{)Y?wr_p<-R9Ge z(}xA;?yS;<^!=`~TE-N?To>5e;u;XXi($Wk&4H+V+zce8 z*1|ccHW6?3!Ko(V*uZlz<{D5;8zc&p2ITwB1BbX*b?qqo;waLgr|RMxYZH+tOKU(z zdguU50&^aiE)Zu1Qz{2D>;mM695E>{lkZX*&{%ljV<;xd221u!pklVh*HVJ=k=HPz zv(SU=03Fb+{eti;5>8Szn#~*>jt(xR4Xu8usSiv8X+yD5v?0J1_ttg^pVs38H-VX) z6gjM$pr#RhE|m(VD!u3G0fM52;`w0|+otO&qnu11qS3G2e{BNli}?^x>{x-8*PRKH25 zpv0$R;ROn^jCXNt4^Y)HGs(<^0^%Dd=8vQbk_O+t(f!2yK-yo;2u1*|>9hU*r{Hi_ zLi0)_fTk~6o1mO@dQ~Lv(y_v`bg*N!d=?!8#RO;KnloMys0T9%P>cS|uTj$+ZA=X3 zhj&sieZc7I+s$PlKSLaHDUA+DZJbod$QCFU0Vl{zRb6b+AA5RkhMX+=W7)xZJDu)s z??>qc@A}V@XcDrfZM_{){I2Rl30(VFk zd>D!-<-o%tEYVC&-H{`FV}i@|X<6--L!h+J!&s*-BzC#HvT1q9NZU1!uZug-)*(SL ztOJVjme&E%{mid|?q@pSK=(UxU2jCkBfJi^ETYEe?}KsHjfk1gq%|#XAZG5jZ(Ynh zKmrA-+s7j@khBsr&Qmrf`^u_^P40VTGv*-UyJvFmt>OPeY7YGGHE5o`$$eL?uDi+} zAvfS1b_f7fe<1yCo7`Wz|Cis=TE^rq-+kvM_x+M=|C5;9u`l1lCO7ljIP7=XC;F_K z+`v4xj_Pm{rBM__Ve_zg^MW4C*1Q}n%Yy6+Jz!|e8Z&g90y zi!g~O6pz|9;4f}+Yw+-Y)|oMnO8GgPRb@FHFl{7$X zEBJJ3w%Nwy=Snu6>%n)lsCbl=wb4bzMv@(7RgqxRnSc1BPu}>?pZvmy{xbP-@?S%$ znALIyEm~SEt6FMpafyoltrr;0ewBN+Gw`xLg9XNY5RM$pT|UbtNC4?FGgOUtpYY8_R^yVsqr#TVQ0}>R&^cB72@S|8=#n2<#H7 zI#1MW7FWz)Gb&5BK0R9{JpxgR-8B%UX1vw3>_bbxeA+T1Qtl^OS4~>De;f2lns_o{pH*6YI>n4;5h$lb?{OnMlFO%vW6u^>qZmD)HN)_P0#!BJn%onF4HD57l z4t>8fr~dd^@(ibE%?(_`-?^i|QiJ|I04o!DNms&>F=&u*eYE0IUNInwLVAJxYMfU% z98o9#wYxIv(R5@elv5{CO8FiGw~V8ccgLv=r`(_pmsRc#SvrmmiM>S6l${R!ZE<*A zq(Ait_F#&Un$_0tlHhf)p7OxZx8qQB*lRNcwl6_M4-El6<~L#r$~xBCkbX8xciI#|jtGm4hz=7V_NYWryW$Ds z286K!wM%*i0m0PZhU_cc7!dTtk!V#oV@7X_jKz!_!rfv|o}v=PcnC2M8NY$+0JFt$ z$Yc3%&RUH)8O-8-U11jY={kN|wog|$-95U(>GpCpTJ`A9KZcx#LS}~O$LI-6$l)A0 zF1K$9d z!aH|=09|p1onj0E6s@zHqS~Zq!j!qH!x^+_n^!z{sQJ@B5%%zAd36J1h3{Tqq zxWN++8DZ=;!RWatspv$YBStEJBnQVNWn9CBT$37&l{Ol-F@-yzV;C%2_FCxemji{V?(<TQ;aW-vHSJ>R;`9m}I?FjgkGM;->3iaZec7CL+ z>9ixR2^qaaO}AAwZ93wbn8i!fbl)?m38rVKm7lIoTb*`zb;dXsvINAp>?^T&ohaUSB5Nu~*v=i_Q9DS}I%eYRxxcFOjFJMLa`wP|m#FDLRnrTOxF#5& z)nvI|s~P=7Rg(t^7K54F>1izNwBn?5HW?$TjTd4WqyRL|(F38jt9^8PKAo0q;Ud`r zaU@03d1p#JY~^5Q9f>Wn&Awe8G3pzLt4)6fpN=UkvmInHh*6}#*4}CtG`HnO!RniG zQ`yKjRrDg@AeI0}Sp&) zCI3uCrj{%z&P7Sh9>Mulm0S_Np$p?CB+q}8-#6<|1bi32yPwRov|DdvkBTe}j+hOV zm0kQTmFz4Dj+jZU+ScCX?oq{!q8Y+Cbl*%{pJpk5nZXCH9KYSJhR7 zsp%Enl}8=D%2b8NfPhAA7!a$;Wy*$21Qe6;g93(>2gJ6;Z2|L!ryPRDSRN_o-t|4!e3XnCh_0- zfERwAY?Um0I^M1^f)0NbZ&xVZDhvMOlx^3jEjMP=*Hz~l*{45g{4xZ0zJVb=~eFlh@) zh-FDUig~q_>AlXfmH5y$Sc}oY?>ejXfJ()d;m3{g`H9elh8Wul4+ zN-6c|XP{T5lzMrZQxelzTjBZ?qa*!Hu^rkg*UR(G;V8bgLz*}lgv?N@&kJcmy3n`G z&o{Q>9KpJTc-2q|h~>8m$0+$<=YcG3E@HUe7#UO4SY9=zljk>s13$Q>L37h5BuS&e z|408BEK7P^1{9N5;z7$k=E*6c!q6Y>aeE=5B3QxczI6Hrwri~glm%(Er z;?d8|YCd~-bdg`fqlIT`RpXN4RtQ zVn41lR@r9#I})S{r9XHCq&ZBsIgBL&xeTE$La9IKPDEZhXZw%oQilQw1rts1A8VmiTdd<+O~5nHa(R7 z$z>H4s88zZ7}VB+MBsJ>Na9J8&}JhJWq=(*so$Y)d9OJ>Xe&&l0opiq1Zb^Jcd~Et zAiRllr%2Unj>&tI+3Ei{ZvQ)W+5g4&9V#Oq9C4RaN(24b=?l|iYX2L$sXbrvrx(t6 zm&f-FuFYe{I$8*(&nxLOKb1YE$mLGW(D{g&1YHmh(~XNA&aLB`3OnvhQgzAVR!*Pw zsVf$i%sqm_p$*42E$>JQPpYu=x+5t(p~6z_j->FE3QM~?lEUK@me-rB0p&S@hhs9%nHppEQT-~Yj=5`#H33?IzXj;T;y1@MqZ;8$)$J5fn&ETF zEM7f;YlPGJCElonjrh{3$F?hZJCPcGh~hm&=FR!LERiJc z_$Te|BiCOY=5M~|dQD_zkB5Zo9jKYNERlk*nU% zGpiRlsw`6f1|Sa5?Bw=vz(36S5YRjFZaPR$eo&MkHUj}LXg%qpIHH?UmZ5}j@YAqA z%eGE)YMlI-KD^$gy;7M%n-9>RCu61WS3=LQ!r00@o5JleZ|B*~?nNd*7G0gk3CrTb z{C&yUKm@ix4>z-pq&d#htatKg?l=U|P6RQ;c(3VSz1NL!)b`NY8V*^X<0Oe`Q=M<% zPynToWpItGfL~p*e}N1w+$jXHArTYqlA78Jw{r2s@-SHlhFNe5u`0z)Gx)dX3niE)r(xW-&ZtwX+MDEpAtHMqE&)hOP_5>Lb|;AhFNKi0 zu~5((a|ayh3w1!7j2lguu zaMU(t{h@?4^o>bgedA@AFjBu4YdX}^o}FGt2CG(cthL1dQmCjY)yKdSTRCT{rCnjd zlj(5arcq)_>acLkYS4b+Sno9QCEkwU3ze5~|LoUq<7L&O);#;wf7v>0^^0Jhb@V(o zsNd0i1ju|k=>OWFewp9TI{aT9)GwCstk?e!gZfQjYKB6(72-S9Az@F^VBwn{M10>B z=)PglJ)QB`^mOOX=m%j_IGygV*a{n(ICmY~<0)}~xZldrHDMDP($ku}2*uVGePi^m z3@$=^Hx9sjLrjajER~8eZFi+kHEDM>m1HWI+^B!C!pfkOm`1Ybi>ks>iJ1zfVb!ac zDw{D4a59i9rb#@7W5v`E#s{{)Qjbs(j7r7K;PM=O(X_Y=3ZQ)$L&N5DQMMdjD*+^| zRH6gs7)6Ji#m`)d{kcf0a~)jW;H`x8kRWVS-WPh~V%U@zljtPmjlxitw|`gha`YWZ z`nnvIBBX9e%taykgZL#YBR$OHp0wBj6j$Ps+n)TCyofQyp}9EUl_tnbOTcZ26SDi+ zEN8<*B!aOT0nJ3+4{(<$eC(}%ysykLOZ>=|@N3*}OoR;y*P%MiLQ@^mEY*=?IjxrzH zW+YEV|HO{CkReP&S!1OCX$Q0-gDR@i2?!dl+!oDn6_+|V_%a>*#d0b?HNL6}rKMM7 z4C#FBZ$9u9LmO(L*adXa-Jf<|7OOpsW)_zmM-?=AkmL@hvZ$(k!HE3Xtnq(Xjc?1c zyc*yp3G1|>K?K4$2_qwuLA=0tTh)E&&T0|^i5+L$mE~HSD-U0j`o{NXT1Tzg!)r*O zLrVbz2uAQ!!h$Ijt$jRnXoy<4@DLaH9LuQvR&|b#JJ5?3E2}az2swh1j7~bwWB6Px z*0~0@#GzGQ7BCaT+zp+_GQ%Z5y9AEgVW_`&&X*OqtSs6$(>bp^O;BlbEWuuNKP$iD4}c!iu!Qb=%j4nf0z*(f`nDjp7HU)3x5T$ zE0d%rY+JJSLZy&0t4zp{fe^;GaByD|)@c0L7?Xrsb-PZt_&t;GLEWy^E$g32_>69k z(=F?tN%$MxPU@ER&m{blZjaV2>z_$@<6oAyxOAvlx6^uyah-(sRk!$WlCW2|Ru$`? zNw}|iOEf_eK3m<|YQ+KFT0>Y>N%%+I8jv_BlJMrQa{D4RgnK**pU~|p-C`mo;V*Q1 zs%|l9lJJ(l;`Sun%6kw#qT3U6t2rLNqFaL*{XPj_*R8c{B7Wf!Zr7`@xfXWoR+#LF zo#jf)mFpa0o7|d}CzVH|L;>*C}}`s7mu%Z6-|94izclwa%v$#y>s0&Q2{gn77B z*v}t3Fb{f5W)6PwV{f?m!8d%-&x4z}_n*J{$OCWrtL#)}4RCH^^Z zIv&$|(+YO|t)PZJeVO+Eidq-?5iUmcC)=z8EcA_bL%r=C_ev#MOL#;)O(HGKeIza( z*Mx?vT+y+_@vbs`y5Ssh@rsXNWxh=3a2}fqCvb?9r4D4dnvo&AprUPS?VGlkj( zJD?Jdl*KM9w5?e#X# zHt1}HE?ij57m2%|(qdm!7}+sASU9_@~Wh4(t)d6|?lDG!lAiDhNMr)9!~Lc!=*3i#`x3{gYr|0{AuFC;U+|IuIj z)SWl)`{H}9w}V1vKKuF)JpM0t{MCoIYZ}-*`OR;A{nq#1_y-G@dV$Bk^|5c?c++q1 zc!3IZlJNMu?p43e>hzHL5WLZ%P7DVmlbrf#$;di?oOuu#&NXQf`mC2AMa`ucFv*!K znI?|nnsC-nrMkMIs3}#Naqhbw7>ar~VkoMgwJ%5zJY1%#qO6lc=qOS1Zxb9RQ3Q~j zbYQ)b`Ui``uce1VC3n&KQD3y^B|TN2)f@M!%S8q=G3l698LKx%p6|ia%0cC^N=Zvz zm=@1xImBW?rBb!RQ>a>ppd7v(R?a>zMgr_%&2Pu!RW}1g7`akZS?-A)Xr(RJHh9Z_W^bd6>^Mq)GRmEE-+DX{zu0wA8Pr zc@SNpLDQmR;4VBsW%h?6;X10xx4&*Hlgtb`S(#mUi*B;+8^vDBCiyno91b{$g|gg1 zO(n$8Qr6v(F_f$cq;$B1E)#UBtb#6cy6t-nC3ITLr`)p8i5k-GFEPu@HqV(tu$72W z#{`I#t z&^0)$hj!<86$m6MTBB_bpcx=HWRo^^!m7a3VP&*0A=+=OGit~z?7#^`bIsV~q%Z;( zu;?6(4vjJFMPr@G67BcNF#4%V6O9)@i{pZ~+^U(ZtQ;oRG@NODQvUc7ruB-#yBm>A z9egZm!HUPqMwbB0vpEmk?4i_?)zXd-kg|99K_Og!_ze2wvfk)ZsMYEW3N=;qP4cS) z(u?_+45{k808NZ1YK>Ub0FLZ+=iQl2ObJ9FU}!`U^BD_EYs2yU*+|@w{m`Gn@fn%&Vh1Uzp0%x>N(m<-u-#yzt#jPQcE^z zGRQuW_shrLfR)_S_fe)d!gIEV##YVAzMbX-ip{q{fgJ=ivak!h`7Rv!eh%eIx)3;1j6G1?K zpbS%L-Fm&9S0=ZfWr#ub<1sgeMX`lRNZdvx@6 zcLA#tZel+&c!T}O1DwcyGRYLcF+YEe=$SRdEwkZu2t>~B<2F5yXQ)dCFec+HbH9Y5jtt=?To39Oi4&hjnoBe(k0x`J z-cO~}xb{1iHLxU~`^GOOg=FU!u#I-7^M-!5!u@qL_~RA%R`D;NS;5(>6|N**WguMS#cYzRLzUQL)q$*UCu5_vV@ zC9*x>)rs?J&=h&~SjDEr%Piq9gTnynEI-D447R+@0^#gou8yVRNpM(23~|w!uEeQA zZYC0Q#FO;56a`7{$tZ8YqGS*&#uc}=7SEw?h{_%j0sy7OAlXMKIg-+EQG8L_DTOTzJ=4>J_y3r)wUH9ml$hGl}16xx! zr1qIil`v3M-8bV0@4f{oB{zn13xGI(Djy8G08r+UI69KD6A=1M*{g=}EGef!1DF35 zHg7I@vHFNjFqNMxT|$!@0$A5esYN9vH+a&J-i(JA#W7;2(1FPI<`)4Iar#TH5(`bt z1whU=2Wkn&Z|x`Bx^KXuERtgU0FmIhHe)i zbou3s&;?a*9UF$pvhyVaMX*(BoE&05PzhnPKp~Ydk+#r+hm=i=a7-;|$&TazW|!w& zv^(e~yeYZWc{Fs+L5)8JFI8byJ^VqCHq|IeL*h{G~LF?b6^I1_jUWvrdH>J zVXo`@LNimV9NZy&AHsK?&$c*>46gCuIJl_h(7O*VKMjE(pgt*?meqXiC(0nnX5h#} zB&8ycrjE#@OTHsv*FXrvM!MTKOHXBEv)1}VR`9k2Dv>x8+c~?RputJ|hb~FMTL&teCXWe>GFd@qT(fmbul$%3XRMmP==f z?cAztP$QA;ROv@tw~GnP*-HA?2$85@q-}-8m%Sl)xu!jg4{HzOOKA_3q1S{N zx^mQCF&kE+3TgDwS{O3a6`8dfA(tV=_?C0m^`|udri&?dM#DlW>M|u?B%K{2bhNEH zQJqvL+J%(yKFr09XCnJpQu;@L24 zQ?#HSQ+Xh%c{B9{u4yeAugB6M|0ov@_4F zyd4Z8Qo-*_zo99enh3FiEv?Wha*!+zQ)eq91K1&SjxGM+_?P8Lp|sCvJz+-MiolW< z{0QSb+>DM11h`DnlFewU7rPdfLX;-`?9?^}ky!+t31k}&5GLIi#1BTNM}LLOS;Cy1 zS0NLeF_|3YIou8H3U6>pc!j9|mA~X{X<5;$gcaI?aTo_BXk_3=g5i{YBw@xpjQv!^ z&QPj1jH$Y@*i+Ml*F_Pa4vui-$VYZ8onjWBC=z7^W&7RF4%{CX~P34NJET>#YI8l6CN>nq?F4P z;sKMVtdJ6o<)xzZ+NkmzZVmyxI5C$=syE_mxw#U-MhwU@!o48+I6R+t5RPH`o{^w# zq&n+H*Xqpy-8>ZE=vozfL^u268(phnhjeo=zR|TR_PA~yjc;@fWwH5pa`RYxqia=c zhu%C9-{@KuyIF4*_#>!wt%~iezuBc5JyEe+>NmS}qbGWEYyD=AZuCTNZmZwir5iob zn>*?^dv&8HdUJREW}j~KL~rh?-`uYoJ<*%{>NgMSMo;wSVck3sZ*;BR9MH`}@r|xk zu}5^XKfckmDt1UW2jd%Et74Dq=F#{@*Q(gO=<2cfM%Sv?4!wCIzR|TRcC+3r@JC(H zwJNqtH#_4SU8`cdb#qI6qia=ck8W;_Z*;AS-KCq`;u~G7VtaLSM|`7eRcxPb?v8JC zt%}{Rn|tCLU8`dE)!#%_VhK_2tUam{!>rEq1?P6AN|-i)Dv_W{i1Ue+Jq!F!J{M=I zu2eQ~>3pZs163BE>j{9^`4{=zOFc^pcEyT2r3O@KSf!v*Kw2o3Gt6W9YaWmWawi{n zKv;1vn(~04&dCqO7YMT<&j8x7Nr1iRZzdeUGLv#++$CCoCWx2h^ z)#PNj_3!jco+Z@i$I31M5p(0no6#B$9T)}_LZcog)olh1Yp~wMAYd7Er$k#2SlIxB zD4DhbgTb~I3RU0;!vZE1aPdSH=IN0ZAe<9F8617Z$Qp5>pAj;}q)`h+rdWakQq>T7 z1Qww%w)mQ}_(~f@Mp)39TPPGfF)R9GioC-&SROJ}jA2j658cLpW-k~!)o(Olzeq}@ z4OFQbY*Y~?v`k$PR17SE1q=@Frmfs^$6!X$QmhhO5nmRkhf|l4(pw2$t70IvN^iZ# zTT$;l^N9}Oh92}@i(Jendau}r^|AL_dRFggSm9j0&S|~x_M1SArN%3xZWxXAz7Ck_ zoWdzI{$s=r3_2`ue5FUMwG61Se#Zb~V6-WvB__?jyN9~lIeLj_-%33`foY`ZPtjOO zXxO?6bB358r!ghtLwdf;;(6jP3sJRbh%zL?zra5NAZrjLj~WDBe)&|Glvn4>WW78n z+L;_DC2Yy6*Da{CW__B*S%-@NLrEjjU75-?)U*Mfw7CeDX#kcHrxZI)DOA=C4+b2i zY%u68Q9{vRLM8lD-U(t@h+a-0FQPm20JEBp;KS+c*3JqcEtR{HAG33v3I9ne>t({JMk#9Y#^ZoqxFK{8Jb3y(^1=kn;T+pO9buf0eY0eoPuQ=> zI3N6%$omh9SXCL;BSM805LiEm@o*wzSF6Hbz7-N42LWs3gva-_lH%Co8u%#+v&~M< zcP1c%PUphc^nqB=gZ$|JzghUE*N{l)FYK~sh;tg=m`sXN&(W_bxar!!jI+gQTI#18 zll80%M}D~~eB|}ii=-wnz@flE*WIe{dwP@B-YCR?{xIi@v~zPK#uFsH#Cu6_Fq5zz zGL(xAEfF#V)2f9G>244*q`So-L-j8>T70<7v^}V8iJh_s%Y+P}yfDthJpeU>+;FjM z^Vt+5Zx_bz-=aut+X)fHKNxw4!vlk%uUS8*p{~ES|tpJ}M@edh6R?UFD!P z-#lsX8?jIhrK*Z|s$4l>OsL$f2d#(~?WLjQSSe$e> zDSQ!TFFX+Ilw+%qVn`xgv*|?yi<;!2A_|=MpminS4b^z_Mc4;2!w*s5c=SvCzV%yR z_k*ZZwwF6-OqG6odMU;L`G8vp#-@ud<>XsY!Q<&bFL$j24j!W-i7hlj>@meaK6QPXDs7#T8qLY6 z$BI}Bk4qlh!(+v^NS|UzSOxBghqL7N;mj&AZklw?ccBwo(nrFjSm!<8247QQw=R-o z59r5l_?@+L2fs-nSFddv{DGsj`DP*rlFmmn?*}BTei)>RHNNYHdx07KFzlxehn_G= zZ43Y@tDLK+;*ZuNO;Mu2#IaytqJ>nm(ZE#av4}(p4gXFuPa3L+l*Jf68#N?^YJ?1@ zvm|9|=a2|wXUdo6OD?(u{yr+PbV+H(+R+c_K2}k2ybra_C!qk+FIYEOl`W(eQ~^^t zvfMpE-6~|_ltUp$6%~bV2#+U}@9EY#}8N$Eore*5? z#u!UP6q^c6S!&Or_Y_^?`zJrWc8M! ze6aPuY$ZadbOQV|)rfQfb8}X=)&p(Am|=|8;JHf>C+q?B*eWTGtYdGX*{~TFkN&0@ zX!97Y)BNFWPOt>W4rtCYG~^Eg?Z^N*;2D|jA8O@<0v4u0efE2iG|QQ$wq?yk89nUT zlYFx^F^1hK5I%DKf5xa}oN6~&{U)z&0GzlUafz`g+?-UDD$HtamUXD4h{n=Y4NMIS9F^5aKow@`b29I_P=c<albsWb`T_1MF6Te%3#Az!UN|&|3N(fZEz2n zkqhWj(i_0bp||_b?t8P2B+K(NL>i*+PqWT^S~ZVdE|NUgP+Me9@Wz9&k4nZ32vi^` z;haEjKv~7^;o(Q=rDCilSDN90dC4egKrW+Xq+<=;0vk29`SFZYBuJcjq-#{=-2@@_ zw-14vp_7F|x=syp^NG>D9uS&72I!>eAyv;N(lF8KavwfA=9vlbLjzJ8(3*@^8ryqx zLqx!4Z>Oia6Yyq8a)butrbfQWynEu4)??mx6~}2+h`I(leGwc6a*|GHuGx zeWnZ3L$(T|fbObU21d>MNe%-O29o%_B;U*%&-SkTI*9&4bAoQ@_X$27h`cZ*kY;6( zczGrz3|g)~sK&6d1VJ zgj~jErTH{VQTmxphB%-yGhcX<$51^TgYd@ruMs(x0OvXIz_c=0F$v4Ik=m_43A+w& zwBT=k3KygXgXf5K$@c7Wv5lt@4}%(qs$=QYs+0O3tK+9t$0Ba3tV~vqcmu%)tKg|I zNRba+i;L){0^wS-!H`UJ5fivHPZ&lHW>7GZjh#jnb3|3xF!E<;B(XYtXQ-SDx#z}C zJAcu{=#r+7TK@wk21Nwx`)xcoiqo1XQUV1usCtZ1wUI}X4;`Z95C`ty(A1_353o@s z=@5mIbhZ*j>Ni8WFkhg~B)>9>6==V{?pz_Qicc&#~B z*T-fBbee4zjs&>YF&KeO#rUwKwEEi2V={fkX$))yDFdm$!1LJ^rZuLjRO6_B1`IPx zySI}xQTJFIiE0Qgn(aMM1O)n}L_r1&lxgz~Tw2cza)kK^kP3_;a(F z!AwDkc6`b}slFCt_>h7JUJC=18>-H*K?spzt@)3T8)^X@)zW!QB{#9iaG&ezwEN#O zx#^b3zy8>~OTp4oBPE>}Aew@Aly68@{C@jf?9=KJ^UqAQ7K_ab*mc58hrdfnU`?dl z6MT5{<$;@)QUCXLa0j~Oha%!*H~hCqr#Cd)@qcOFZfE69{W_+b7GgCeClwmE@0^}* zyfDS4K($H5cJ@D#zA&|urV(f(uMXNP+h9HVYQMd*&DNu@_S!30>f#CyBx(yTpTUT5 zoJx^c)ard!NFD~FS||h6EGqLUD>Deeq^$OHiOq%1HUvVi*W|xUR4UX3W#vh?qnKb! zWZS|mIC)J(bhh=GBIiI-t@GCPVHyx((RA-e%hEeOY2rc*QDOo`WEP3b<-BO9#5c%m znQZu06s^i401nSVGsocM)H`iG_*@g%ju&@ngkE^~SJ5CWL1HuPDxsn{I!d)MmoDC2D&JUc+!%w`2-%V_}G`#(>&TRN{M^C@>Iexxl&AD@We%;pa_CphA z^Xpx|&f{sGvUfWTKfN^^_~e94L}@MI?q6UAofLNN;rjkepG%TW*Lx8sDReA#4 z!B>=WQgWvG1LoLWf|N}p+-L^?mAY5V`*&Kto@gxf%y>-%Y_-?`(ybD)`#I`X=ViDs%vXyM|5 z5>b{eury?7GblnVGn(@{&y6`TZ!IT13}el0ou$z~ENLFpz!R6j>vjgzut$;ZlW7@aG4Hm1fb-Jw4yxmh@X-qREl z4pZ>r$*c+CL4*xW{@vGeu$u_65#GV~w$lQi71kz}&!kw*n0UvP?AE3T{u@iCX1~m2 zjE$FSJ>%3QtJ>^zGfk32R@_)v;gx0Qse&JyD{CO(hBdN@VGv7fgkJ&xe#k$Vffl&F zAwcPgJWu!Gm1;q%62E=?umZS&NpH z-?>nXFZeNCGB(ka&BPNCmLo3w|q6aGMMxb+q@GASdF5+ryD_jot?eX1+CJxh24w5YsA>&yh* zH>LqH7t$$=CGuA;q^Jq|$N&aIsIJgAoIVzQ!NnGun&F4Hgg1#usO%TGp2{1~N~5mH zFC^$;NOH&Qh#+B7mX7d-d5q#xOX=nC2F;rR@3MMvb?{5I;pV`mr?w~N85qf?4Okj= zxBW_p&S*z}8gh}Xf}~{h+G8#Cf~U?q8XO8>MHmge?wRS@?oDQ!p>I|^#LgfgZ67p( zXKAnLPn1JkDv3()gtb5M<33n8TjWb*zt&=sko5E=_Y&n{LP7gbhx!kxdo)aA;RkBV^bv~ArDGZqjSWrNt z;ji;3yBC*&sMbRh&ZTs4r3#CsM0O=PQsYn*5Mr9{JBS7UK>dM7*9%GjQMJ35ARgy7 zd7ayUxyWraMV#B%GvhWE1BWD+Tj~rh)MngKfz68{Dj*Y zKjC-DPnu$sz+0BIjN1ZGBS1D-S+SdEiAJ*&muU}5g}uk{A0drNw<b&LlJc_*)O(`}Vhg_<{d=efLXp z+;Hl&9)I>r@B94U-Tv{P|EI(sb3_6kFD|}$)*g=*C$SxnP~C=jJwsOla{;xuhDfda z!aJ{Fk(S%d*YLQ>En`LqfPV-iC+07`rpS0cC_eL|9SDHtOm-8EzG%mSu%FFrya|Yp z-mx(A;dj0M-M{#ojror1r=th%`rtc0cn_6z7)T-I;pIataj46Meb>EFT-&FWCs0~@cmeNtXB2(;AUGnN;`j>y1x=;XAvaQt0nEU zz7rRHaGY40Fs_6AU@`=RhccH}mE7xq4yv#%flCDY@dYn~Nv-tf ztvLumI#nCJeiaY7!)vdLN)n?lgRb*s4>HL%gKfSyJ($^yQj6NmGsFr)Lcdu(BNQ(r zTA85M>})Nl@Kam}&tuRLE|5=dHA!Vu(1wRDauNHY+({i*+K_1P#TeC5NU0PlE=2snOU&4T6$gXrSAb==1WgGx716}q@`3?(zpy4 zdM6(-%Dy2C2=GKcdBYPe&ftiF3BBkdms> z2pNIygq(L?z%&7QS+K|^ts&}b5rG!UaPDK!VR9rEtpb#IhukRY97j8)D`Z&3cAHr9 z+UyeJp&fyxVDzpIF{ti}t)aQSvp1~-PD_f$lGXN$NggeuLkN7jkXP$#&1);ke5E+(B%4?4jSpv!k++B-4r zotXAcC>ui!{k2Ze&Bhsk zMa!l4yQH6uTJi4~)uX`AfSBb2HD*}fDHc=-CXbYQ|nx&o$| zQs=MK2ELV8sQB0c7A`hVoH_G(ecmT)0Xnr?=>-@ud4Xh9(cfl4C)^SrH%Av95r z;YY52$rN5X-p}@+);L0GZFn?8gqR*KuG}LLrjUN#Vj6BMTl~AW2M_3o0mTuT-&bB> zls*&{0TFIcvIx39&m1}_nK#u(oqjUa{gb92>Hgbx|LyAjTWLpuG8H{RY;sS@NzPby zLlZ4=|BibVQDXQq{WHFk@#X=qfE>`M*wt(pLN}APYBjA9fc~#YS!iOQ@nU)WBLhrO zAn<2r>D~Dj1zh6KLv?c>CVE;h45=T-%tAwL5l)t$QHj@u3j=KgEVi&UwX}vG7s)4O zVLZxq$Q$Jmok?s2AXI)_Mt-T0S^>r_79ikS1#lM(705>m0M$?dsb$`T)zAt}9x&F5 zT7ooiOT+Di4yPcNY~uW`^c98ji5}2J2FTUCXp!1!17x`$qgBp+s3JU6`>i;YmoNfy z_n(&ir2Wz+*O%I_4g7jB?>5O7yys1@eAFUk#OGA^J1xULErk8N@N;gP;b5)q(KbCc zrfD%UgEoJKQO6FJ_3+ zC;;T=MgT}ky?X9E#H zaSL^~;&W*7Qv2lnrgsn}mGWW5Yxp_fH7YA!gZg7Lmf>P7wJGZ)y8CDip`*y%SsTzd z$KS&P`l<@Kj%E$0qgk8p9nIR&U7`6lp;_c0G&hB2II($OegMLHpZFR^maPDFm@6VW zt=4=f^X*;k*$A9&oNd;qNWeD&z7QAi67NkD@A?$Y1b$=^vB+T0;Kvp?P<&Vlm}em& zS0y<=C21%!(WlLg2>}jxuo)6bnhCB*8b*kzOD(1=AZD~qV`2s^qtOHX5;K6`fNBJT zi5VQLgs7?F6c{CDya9Lx58yw9(I959{*b9ODNVnR!A+wDf?B1JF|2se0Li0heo!|& zLtR%}TE~lyk(M}jU2@3rf!_@Rv4y<96edBSEzra8;3%|#i*k#Wyu$pqagesRBMpsQ zdsBi=>WkEN5qjU?VQK(NnK!DVkZLWQpd*^VG?4^qQH;e>fLyugnagh7(5mrD#cHb_ zzKkYLtC*5433|t+hwy#4?H9_~&svb*?Gc$&?M35LJ%Q89vIKPeyk$B5MZ(xZHyrzFEyNdb z=O6c5J0H(jtVpl(IBhLvf4??8uupmDqQ1fbEKyN;P-F-VfI^m?XyA!FK@Y3u+GqI;3}Jkt&S zm?{uj*ILv)6j^Q&uqG%PXxgCTfj$)|om-C>ywi(+edvw{M6=NDoZ;6U*V1PWf=||g zHe(0txys%;fT9UsuK1{hzy499Bx3k3h-bj9GBHyHL)e%1>&wRQmn_*bYf{keI+3gV zR{Vh_ip#Wy)ycHZ-Bjg5$SbplW!4ll%fPYNB&o=zSvNK&Z4^l@Ub4Hlw$vJ!o9dB; zgxvf3d*KQS34tj?5v7G&Qq9FMW(9hr z^`%!@k4vv9FMR3Mp4rkX?~L2|(yKvgORxOem{_0(&Jr!X>SJ4a1#nQq;%f~~^&4bX z0Ui8~3$QFdY`Z%xQ4KSB+$!y<`=*0F~vN3jcM|S89RXF?E{Ej!pLeeH$+qXvzSkfA;mo? zEp7!mC9x)nK#>lGn}Kh00L54u%=u-v0a2ar0AgQ(=DTLNG|eO11GGeAhuQ!0jN6i4 zR&D;VUIJf@4+-4CZRh5CDXZUGfw zgkoJv!I7Py7!}GxWg+>`eBzrQZy=uJ3U^W4A|nuL0v0l6`540oJ(nvVK)R(Pz1|F= zd@7lA_DbOpaUpLaxbDQRgNtHn;35(HC<3#m1+{h!pdM#jSkh~Ht+JB=zAfOR9%HO#v1Q;rM`#XjaG=6)hg zucK#q*q8XEP}ne|hAZgKe&Z$v6ewnOw_^d(#?ap6l%THj^rl`m0|hV$h0@V*QF5Bj zk7^dOhdc=E{=H>!g2 zXY)ER$au~aJNm8bSl`t*`>v6ubjK=;!9q2@hh&l zthnT=OD{Y5wO7xbe8p9lTztjJms~veGgqBFciGQee)YDwpF8>Lxl2yI{K`u&``PDR zGI#N|%dURj+rWp10|F zr))aIzT@%p=C0n5bd!scB8Yok@q*_+|MXK%zxWj|_`%aQZMx+2(>Gmu@fnw#a@wX-EdVwsKnJ?N0s8-gD~vT6=f5AlO4zva zs#jn9>Z@LR<+h72pSyJKs@J@H+f}odUHS6umtDQ>@+*Jl%rmdvMg?b{`M}Pt6%-Pi?4q5|5x0XfX7u_>E5kZZ7na77umixUL;#;bxW;Q ztGzFhZLsA6PF0;cb$H9%eiuGPJt;> z`8e3*Z0+@?4h@5A#=s1z9QYxgPVw0o)#D?h`FuR7V-3esgYjri2Ulieg;X?$W01OFLQ(zO~x_T5UKHKLL1f- z$@mCKq?A5BXud9FqIiL_lry1gStB}77)A>tT5d2APsZ~*^-N-78|44EHi4CeEg)Bj zM8F&=9ilWn)(Z(c(R&EH0`WLRZZHbSZ8gSL?MUi?=Yu7gVl_=Ka6&U&`t}W0Uz<-gx%trM$2xI zD-1L7S-E9U|HA5W6&(tzf>7@;sBT2)Kus3_XjM=T76KLl76UYOLp+yBXcKBYnMvqL z^d5c33drht%qSKJmI51CY^h*SJ(Aa>iHQmhT7r5$=pMx+sIix_Era%?TS4X8Cq4|c~uxP^QIBfm_`ekL_7j+<+<_hMx>F{m|Wi>EgOeeRELoE zl$nRu6HkE^<5895crc(YS)#V7uObggt2Yr+|E+l-^i>-B-k4dRn6Gj!z#9$LM#@KP!CkLOQ^AQRz;sth-l53MF!0xIbIjnX?Q{@pP~LF zphre0F#Aw)a@c{G+NfvGRH`(x2|boCXJGYU_)9~`i3h1!th=0=N`q$TC{crEV|!DD z6K;<{^9x11#Q$Ez`FMH2s3grJ2`!#9CzZufADcp=gNBX0{3ES0l}{Bq@Dr6J8+aQd zXoGfyJ%%pD2fR!&pV@QGK7>C_{Pn1t*6u$6AXrQIznOSaOF=AVb819O(U1)5Drv|Q zN$fmoRL`Vy@w}Q#Cw24*%4o%F{V)`W#02(kq(T&`>6no#l8DD*=HSp+Ux95w#U7yM zM$-kXeKazHDTZdO=0_pxKv+w)hiSt`QBp$G=9aVNXBy0)nF+E0Wl1Jv5Yjl_iIC(; z1sN5!C9qo=O@m+c%L}k&FlCios5U=^dPo*NgOJupWxY&MvUGG(>G#)dVQ!6w*(=!B zd56x{Yv^{_yqQTjh;pQP#SmKiJc){mUY9y*&MTiGk_Qi=9+G)qm{ec6QBEP}7(qB; z^9VMSvDbQ-#&gmOgJhoWK{KV;dscvFLZF zc>_j4O9XjnA0VB=iW5I^oMfvtop4G|ryv+}g$%PU)RdNl`K&=nRtp&tH3>a60^fu0 za37x5dJk@8lne|iTfn$sDGU+kP0V@D20UuNcU4^prkbM1f>!8!7 zRO+BNVqDf1{|dVJFPB=zA_>zm4iltO7Y9A70bFNYgZNs&I)L^4df*>aZ?5$1z#fR_ zu>(gUg`~kzFMx)E(pBrUX&wQLq0_49p@?y-4Yq7jSrzyu#ENgWI9S6yK0(8xD+&f1VEmK z&D`NE5~Z0+B+eaFs$UAy<}y?Eb# zZ8#FuVjV4(4gH3q%;n0?Y%L48IbEka`v}tII zbVAbatT^dH>kZR`j6T&YS&|zEXBfI9FN0q(Vf!n`dw`QSj!*U^w|8y=s${a{^d4ZS z;e9-t%bOclr9$h^pkeDiqXm)~ueyF$Hp>H(J!IZb?JDl1mGIr;R#%wm_NLX82BXYAl;h zvJ5cpxV1a3!!S2h67n&@OdSP{uz5oqPfChrxwqxUtBXG^p~bJITR}tmCb`n>09Co!O9#nqhrZ zI}|4xK#H|TUUgSm&1BPga26}fdYI3q3v}9q4TtuURI56!Q@1nfD2Sv^Wnt};Q-Zom z?#~o_jqq1Q^!e&uT^$8Mq)6zA2z8&vo=kU|aOSflY&{NC$jREOCbco6m&7>_ z>|$~qk@*W(sA{$XKLAdsnrA|nmOiZY1;3%`wGPcTJeO�rI|Eb)C(?F9eWZZwr9D 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 QvY!Wh9q, + vesting_schedule: VestingSchedule, + }, +``` + +This creates a set of vesting accounts for the given users. + +```rust + DeregisterVestingAccount { +address: String, +vested_token_recipient: Option, +left_vesting_token_recipient: Option, +}, +``` + +- DeregisterVestingAccount - deregister vesting account + - It will compute `claimable_amount` and `left_vesting_amount`. Each amount respectively sent to (`vested_token_recipient` or `vesting_account`) + and (`left_vesting_token_recipient` or `master_address`). + +#### By admin only + +```rust + Withdraw { + amount: Uint128, + recipient: String, + }, +``` + +This allows to get part or all of the unallocated amount from the contract and sends it to the `recipient`. Unallocated is equal to the +amount sent on instantiation minus the already rewarded to users. + +### Vesting Account Operations + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + //////////////////////// + /// VestingAccount Operations /// + //////////////////////// + Claim { + recipient: Option, + }, +} +``` + +- Sends newly vested token to the (`recipient` or `vesting_account`). The `claim_amount` is computed + as (`vested_amount` - `claimed_amount`) and `claimed_amount` is updated to `vested_amount`. + + If everything is claimed, the vesting account is removed from the contract. + +### Deployed Contract Info + +TODO for mainnet/testnet + +| Field | Value | +| ------------- | ----- | +| code_id | ... | +| contract_addr | ... | +| rpc_url | ... | +| chain_id | ... | + +### Testing Against a Live Chain + +You can test this smart contract on a live chain with the following script. It +requires `nibid` version 1 or 2. + +```bash +WALLET=devnet_wallet +MANAGER_WALLET=validator +REWARDEE_WALLET=rewardee + +CONTRACT_PATH=airdrop_token_vesting.wasm + +TX_FLAG=(--keyring-backend test --output json -y --gas 100000000) + +ADMIN=nibi1ds5zr8pv3dqnj4glmr73yef5j4wxq4p3wfxuhv +MANAGER=nibi1zaavvzxez0elundtn32qnk9lkm8kmcsz44g7xl +REWARDEE=nibi1qad9nvdzha9ugl5y28fw3h3ujjg5mrpydrsmeh + +# Send funds to managers +nibid tx bank send $WALLET $MANAGER 100000unibi -y $TX_FLAG + +# Deploy the contract +nibid tx wasm store "$CONTRACT_PATH" --from $WALLET $TX_FLAG + +# you have the code_id from the output of the store tx +CODE_ID=2 + +# Instantiate the contract +cat << EOF | jq '.' | tee instantiate.json +{ + "admin": "$ADMIN", + "managers": ["$MANAGER"] +} +EOF +JSON_DATA="$(: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/contracts/airdrop-token-vesting/schema/instantiate_msg.json b/contracts/airdrop-token-vesting/schema/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/contracts/airdrop-token-vesting/schema/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/contracts/airdrop-token-vesting/schema/query_msg.json b/contracts/airdrop-token-vesting/schema/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/contracts/airdrop-token-vesting/schema/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/contracts/airdrop-token-vesting/schema/vesting_account_response.json b/contracts/airdrop-token-vesting/schema/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/contracts/airdrop-token-vesting/schema/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/contracts/airdrop-token-vesting/src/contract.rs b/contracts/airdrop-token-vesting/src/contract.rs new file mode 100644 index 0000000..e0e4eb9 --- /dev/null +++ b/contracts/airdrop-token-vesting/src/contract.rs @@ -0,0 +1,612 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, + Env, MessageInfo, Response, StdError, StdResult, Storage, Timestamp, + Uint128, +}; +use std::cmp::min; + +use serde_json::to_string; + +use crate::errors::ContractError; +use crate::msg::{ + ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, RewardUserResponse, + VestingAccountResponse, VestingData, VestingSchedule, +}; +use crate::state::{ + VestingAccount, Whitelist, DENOM, UNALLOCATED_AMOUNT, VESTING_ACCOUNTS, + WHITELIST, +}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + info: MessageInfo, + msg: InstantiateMsg, +) -> StdResult { + // Funds validation + if info.funds.len() != 1 { + return Err(StdError::generic_err( + "must deposit exactly one type of token", + ) + .into()); + } + if info.funds[0].amount.is_zero() { + return Err(StdError::generic_err("must deposit some token").into()); + } + // Managers validation + if msg.managers.is_empty() { + return Err(StdError::generic_err("managers cannot be empty").into()); + } + + deps.api.addr_validate(&msg.admin)?; + for manager in msg.managers.iter() { + let _ = deps.api.addr_validate(manager)?; + } + + let unallocated_amount = info.funds[0].amount; + let denom = info.funds[0].denom.clone(); + + UNALLOCATED_AMOUNT.save(deps.storage, &unallocated_amount)?; + DENOM.save(deps.storage, &denom)?; + WHITELIST.save( + deps.storage, + &Whitelist { + members: msg.managers.into_iter().collect(), + admin: msg.admin, + }, + )?; + + Ok(Response::new()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::RewardUsers { + rewards, + vesting_schedule, + } => reward_users(deps, env, info, rewards, vesting_schedule), + ExecuteMsg::DeregisterVestingAccount { + address, + vested_token_recipient, + left_vesting_token_recipient, + } => deregister_vesting_account( + deps, + env, + info, + address, + vested_token_recipient, + left_vesting_token_recipient, + ), + ExecuteMsg::Claim { recipient } => claim(deps, env, info, recipient), + ExecuteMsg::Withdraw { amount, recipient } => { + withdraw(deps, env, info, amount, recipient) + } + } +} + +/// Allow the contract owner to withdraw the funds of the campaign +/// +/// Ensures the requested amount is less than or equal to the unallocated amount +pub fn withdraw( + deps: DepsMut, + _env: Env, + info: MessageInfo, + amount: Uint128, + recipient: String, +) -> Result { + let whitelist = WHITELIST.load(deps.storage)?; + let mut unallocated_amount = UNALLOCATED_AMOUNT.load(deps.storage)?; + let denom = DENOM.load(deps.storage)?; + + if !whitelist.is_admin(info.sender.clone()) { + return Err(StdError::generic_err("Unauthorized").into()); + } + + let amount_max = min(amount, unallocated_amount); + if amount_max.is_zero() { + return Err(StdError::generic_err("Nothing to withdraw").into()); + } + + unallocated_amount = unallocated_amount - amount_max; + UNALLOCATED_AMOUNT.save(deps.storage, &unallocated_amount)?; + + // validate recipient address + deps.api.addr_validate(&recipient.clone())?; + + Ok(Response::new() + .add_messages(vec![build_send_msg( + denom, + amount_max, + recipient.clone(), + )?]) + .add_attribute("action", "withdraw") + .add_attribute("recipient", &recipient) + .add_attribute("amount", &amount_max.to_string()) + .add_attribute("unallocated_amount", &unallocated_amount.to_string())) +} + +fn reward_users( + deps: DepsMut, + env: Env, + info: MessageInfo, + rewards: Vec, + mut vesting_schedule: VestingSchedule, +) -> Result { + let mut res = vec![]; + + let whitelist = WHITELIST.load(deps.storage)?; + + if !(whitelist.is_member(info.sender.clone()) + || whitelist.is_admin(info.sender.clone())) + { + return Err(StdError::generic_err("Unauthorized").into()); + } + + let unallocated_amount = UNALLOCATED_AMOUNT.load(deps.storage)?; + + let total_requested: Uint128 = + rewards.iter().map(|req| req.vesting_amount).sum(); + if total_requested > unallocated_amount { + return Err( + StdError::generic_err("Insufficient funds for all rewards").into() + ); + } + vesting_schedule.validate_time(env.block.time)?; + + let mut attrs: Vec = vec![]; + for req in rewards { + // validate amounts and cliff details if there's one + req.validate(vesting_schedule.clone())?; + + // update the vesting schedule to match with the request + match &mut vesting_schedule { + VestingSchedule::LinearVesting { vesting_amount, .. } => { + *vesting_amount = req.vesting_amount; + } + VestingSchedule::LinearVestingWithCliff { + vesting_amount, + cliff_amount, + .. + } => { + *vesting_amount = req.vesting_amount; + *cliff_amount = req.cliff_amount.unwrap(); + } + } + + let result = register_vesting_account( + deps.storage, + env.block.time, + req.user_address.clone(), + req.vesting_amount, + vesting_schedule.clone(), + ); + + if let Ok(response) = result { + attrs.extend(response.attributes); + res.push(RewardUserResponse { + user_address: req.user_address.clone(), + success: true, + error_msg: "".to_string(), + }); + } else { + let error = result.err().unwrap(); + res.push(RewardUserResponse { + user_address: req.user_address.clone(), + success: false, + error_msg: "Failed to register vesting account: ".to_string() + + &error.to_string(), + }); + } + } + + UNALLOCATED_AMOUNT + .save(deps.storage, &(unallocated_amount - total_requested))?; + + Ok(Response::new() + .add_attributes(attrs) + .add_attribute("method", "reward_users") + .set_data(to_json_binary(&res).unwrap())) +} + +fn register_vesting_account( + storage: &mut dyn Storage, + block_time: Timestamp, + address: String, + deposit_amount: Uint128, + vesting_schedule: VestingSchedule, +) -> Result { + // vesting_account existence check + if VESTING_ACCOUNTS.has(storage, address.as_str()) { + return Err(StdError::generic_err("already exists").into()); + } + vesting_schedule.validate(block_time)?; + + VESTING_ACCOUNTS.save( + storage, + address.as_str(), + &VestingAccount { + address: address.to_string(), + vesting_amount: deposit_amount, + vesting_schedule, + claimed_amount: Uint128::zero(), + }, + )?; + + Ok(Response::new().add_attributes(vec![ + ("action", "register_vesting_account"), + ("address", address.as_str()), + ("vesting_amount", &deposit_amount.to_string()), + ])) +} + +fn deregister_vesting_account( + deps: DepsMut, + env: Env, + info: MessageInfo, + address: String, + vested_token_recipient: Option, + left_vesting_token_recipient: Option, +) -> Result { + let sender = info.sender; + + let whitelist = WHITELIST.load(deps.storage)?; + + let mut messages: Vec = vec![]; + + // vesting_account existence check + let account = VESTING_ACCOUNTS.may_load(deps.storage, address.as_str())?; + let denom = DENOM.load(deps.storage)?; + + if account.is_none() { + return Err(ContractError::Std(StdError::generic_err(format!( + "vesting entry is not found for address {:?}", + to_string(&address).unwrap(), + )))); + } + let account = account.unwrap(); + + if !(whitelist.is_admin(sender.clone()) || whitelist.is_member(sender)) { + return Err(StdError::generic_err("unauthorized").into()); + } + + // remove vesting account + VESTING_ACCOUNTS.remove(deps.storage, address.as_str()); + + let vested_amount = account + .vesting_schedule + .vested_amount(env.block.time.seconds())?; + let claimed_amount = account.claimed_amount; + + // transfer already vested amount to vested_token_recipient and if + // it is not provided, transfer it to the address that is the owner of the vesting account + let claimable_amount = vested_amount.checked_sub(claimed_amount)?; + send_if_amount_is_not_zero( + &mut messages, + claimable_amount, + denom.clone(), + vested_token_recipient, + address.clone(), + )?; + + // transfer left vesting amount to left_vesting_token_recipient and if + // it is not provided, transfer it to the master_address + let left_vesting_amount = + account.vesting_amount.checked_sub(vested_amount)?; + send_if_amount_is_not_zero( + &mut messages, + left_vesting_amount, + denom, + left_vesting_token_recipient, + whitelist.admin.clone(), + )?; + + Ok(Response::new().add_messages(messages).add_attributes(vec![ + ("action", "deregister_vesting_account"), + ("address", address.as_str()), + ("vesting_amount", &account.vesting_amount.to_string()), + ("vested_amount", &vested_amount.to_string()), + ("left_vesting_amount", &left_vesting_amount.to_string()), + ])) +} + +/// +/// creates a send message if the amount to send is not zero +/// +/// If we provide a recipient, we use it. Otherwise, we use the default_recipient +fn send_if_amount_is_not_zero( + messages: &mut Vec, + amount: Uint128, + denom: String, + recipient_option: Option, + default_recipient: String, +) -> Result<(), ContractError> { + if !amount.is_zero() { + let recipient = recipient_option.unwrap_or_else(|| default_recipient); + let msg_send: CosmosMsg = build_send_msg(denom, amount, recipient)?; + messages.push(msg_send); + } + + Ok(()) +} + +fn claim( + deps: DepsMut, + env: Env, + info: MessageInfo, + recipient: Option, +) -> Result { + let sender = info.sender; + let recipient = recipient.unwrap_or_else(|| sender.to_string()); + let denom = DENOM.load(deps.storage)?; + + let mut messages: Vec = vec![]; + let mut attrs: Vec = vec![]; + + // vesting_account existence check + let account = VESTING_ACCOUNTS.may_load(deps.storage, sender.as_str())?; + if account.is_none() { + return Err(StdError::generic_err(format!( + "vesting entry is not found for denom {}", + to_string(&denom).unwrap(), + )) + .into()); + } + + let mut account = account.unwrap(); + let vested_amount = account + .vesting_schedule + .vested_amount(env.block.time.seconds())?; + let claimed_amount = account.claimed_amount; + + let claimable_amount = vested_amount.checked_sub(claimed_amount)?; + if claimable_amount.is_zero() { + return Err(StdError::generic_err("nothing left to claim").into()); + } + + account.claimed_amount = vested_amount; + if account.claimed_amount == account.vesting_amount { + VESTING_ACCOUNTS.remove(deps.storage, sender.as_str()); + } else { + VESTING_ACCOUNTS.save(deps.storage, sender.as_str(), &account)?; + } + + let msg_send: CosmosMsg = + build_send_msg(denom, claimable_amount, recipient.clone())?; + + messages.push(msg_send); + attrs.extend( + vec![ + ("vesting_amount", &account.vesting_amount.to_string()), + ("vested_amount", &vested_amount.to_string()), + ("claim_amount", &claimable_amount.to_string()), + ] + .into_iter() + .map(|(key, val)| Attribute::new(key, val)), + ); + + Ok(Response::new() + .add_messages(messages) + .add_attributes(vec![("action", "claim"), ("address", sender.as_str())]) + .add_attributes(attrs)) +} + +fn build_send_msg( + denom: String, + amount: Uint128, + to: String, +) -> StdResult { + Ok(BankMsg::Send { + to_address: to, + amount: vec![Coin { + denom: denom, + amount, + }], + } + .into()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::VestingAccount { + address, + start_after: _start_after, + limit: _limit, + } => to_json_binary(&vesting_account(deps, env, address)?), + } +} + +/// address: Bech 32 address for the owner of the vesting accounts. This will be +/// the prefix we filter by in state. +/// limit: Maximum number of vesting accounts to retrieve when reading the +/// VESTING_ACCOUNTs store. +fn vesting_account( + deps: Deps, + env: Env, + address: String, +) -> StdResult { + let account = VESTING_ACCOUNTS.may_load(deps.storage, address.as_str())?; + + match account { + None => Err(StdError::not_found("Vesting account not found")), + Some(account) => { + let vested_amount = account + .vesting_schedule + .vested_amount(env.block.time.seconds())?; + + let vesting = VestingData { + vesting_account: account.clone(), + vested_amount: vested_amount, + claimable_amount: vested_amount + .checked_sub(account.claimed_amount)?, + }; + + Ok(VestingAccountResponse { address, vesting }) + } + } +} + +#[cfg(test)] +pub mod tests { + + use super::*; + use anyhow::anyhow; + use cosmwasm_std::{ + coin, + testing::{self, MockApi, MockQuerier, MockStorage}, + Empty, OwnedDeps, Uint64, + }; + + pub type TestResult = Result<(), anyhow::Error>; + + pub fn mock_env_with_time(block_time: u64) -> Env { + let mut env = testing::mock_env(); + env.block.time = Timestamp::from_seconds(block_time); + env + } + + /// Convenience function for instantiating the contract at and setting up + /// the env to have the given block time. + pub fn setup_with_block_time( + block_time: u64, + ) -> anyhow::Result<(OwnedDeps, Env)> + { + let mut deps = testing::mock_dependencies(); + let env = mock_env_with_time(block_time); + instantiate( + deps.as_mut(), + env.clone(), + testing::mock_info("admin-sender", &[coin(5000, "token")]), + InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["manager-sender".to_string()], + }, + )?; + Ok((deps, env)) + } + + #[test] + fn deregister_err_nonexistent_vesting_account() -> TestResult { + let (mut deps, _env) = setup_with_block_time(0)?; + + let msg = ExecuteMsg::DeregisterVestingAccount { + address: "nonexistent".to_string(), + vested_token_recipient: None, + left_vesting_token_recipient: None, + }; + + let res = execute( + deps.as_mut(), + testing::mock_env(), + testing::mock_info("admin-sender", &[]), + msg, + ); + + match res { + Ok(_) => Err(anyhow!("Unexpected result: {:#?}", res)), + Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { + assert!(msg.contains("vesting entry is not found for address")); + Ok(()) + } + Err(err) => Err(anyhow!("Unexpected error: {:#?}", err)), + } + } + + #[test] + fn deregister_err_unauthorized_vesting_account() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(50)?; + + let register_msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(5000u128), + cliff_amount: None, + }], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }, + }; + + execute( + deps.as_mut(), + env.clone(), // Use the custom environment with the adjusted block time + testing::mock_info("admin-sender", &[coin(1000000, "token")]), + register_msg, + )?; + + // Try to deregister with unauthorized sender + let msg = ExecuteMsg::DeregisterVestingAccount { + address: "addr0001".to_string(), + vested_token_recipient: None, + left_vesting_token_recipient: None, + }; + + let res = execute( + deps.as_mut(), + env, // Use the custom environment with the adjusted block time + testing::mock_info("addr0003", &[]), + msg, + ); + match res { + Err(ContractError::Std(StdError::GenericErr { msg, .. })) + if msg == "unauthorized" => {} + _ => return Err(anyhow!("Unexpected result: {:?}", res)), + } + + Ok(()) + } + + #[test] + fn deregister_successful() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(50)?; + + let register_msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(5000u128), + cliff_amount: None, + }], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }, + }; + + execute( + deps.as_mut(), + env.clone(), // Use the custom environment with the adjusted block time + testing::mock_info("admin-sender", &[]), + register_msg, + )?; + + // Deregister with the manager address + let msg = ExecuteMsg::DeregisterVestingAccount { + address: "addr0001".to_string(), + vested_token_recipient: None, + left_vesting_token_recipient: None, + }; + + let _res = execute( + deps.as_mut(), + env, // Use the custom environment with the adjusted block time + testing::mock_info("manager-sender", &[]), + msg, + )?; + + Ok(()) + } +} diff --git a/contracts/airdrop-token-vesting/src/errors.rs b/contracts/airdrop-token-vesting/src/errors.rs new file mode 100644 index 0000000..be9b992 --- /dev/null +++ b/contracts/airdrop-token-vesting/src/errors.rs @@ -0,0 +1,51 @@ +use thiserror::Error; + +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error(transparent)] + Std(#[from] cosmwasm_std::StdError), + + #[error(transparent)] + Vesting(#[from] VestingError), + + #[error(transparent)] + Cliff(#[from] CliffError), + + #[error(transparent)] + Overflow(#[from] cosmwasm_std::OverflowError), +} + +#[derive(thiserror::Error, Debug, PartialEq)] +pub enum CliffError { + #[error("cliff_amount is zero but should be greater than 0")] + ZeroAmount, + + #[error("cliff_time ({cliff_time}) should be greater than block_time ({block_time})")] + InvalidTime { cliff_time: u64, block_time: u64 }, + + #[error("cliff_amount ({cliff_amount}) should be less than or equal to vesting_amount ({vesting_amount})")] + ExcessiveAmount { + cliff_amount: u128, + vesting_amount: u128, + }, +} + +#[derive(thiserror::Error, Debug, PartialEq)] +pub enum VestingError { + #[error("vesting_amount is zero but should be greater than 0")] + ZeroVestingAmount, + + #[error( + "end_time ({end_time}) should be greater than start_time ({start_time})" + )] + InvalidTimeRange { start_time: u64, end_time: u64 }, + + #[error(transparent)] + Cliff(#[from] CliffError), + + #[error("vesting_amount ({vesting_amount}) should be equal to deposit_amount ({deposit_amount})")] + MismatchedVestingAndDepositAmount { + vesting_amount: u128, + deposit_amount: u128, + }, +} diff --git a/contracts/airdrop/src/lib.rs b/contracts/airdrop-token-vesting/src/lib.rs similarity index 67% rename from contracts/airdrop/src/lib.rs rename to contracts/airdrop-token-vesting/src/lib.rs index b88f588..4368eaf 100644 --- a/contracts/airdrop/src/lib.rs +++ b/contracts/airdrop-token-vesting/src/lib.rs @@ -1,6 +1,7 @@ pub mod contract; +pub mod errors; pub mod msg; pub mod state; #[cfg(test)] -mod tests; +mod testing; diff --git a/contracts/airdrop-token-vesting/src/msg.rs b/contracts/airdrop-token-vesting/src/msg.rs new file mode 100644 index 0000000..6b019da --- /dev/null +++ b/contracts/airdrop-token-vesting/src/msg.rs @@ -0,0 +1,362 @@ +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{StdResult, Timestamp, Uint128, Uint64}; +use cw20::Denom; + +use crate::{ + errors::{CliffError, ContractError, VestingError}, + state::VestingAccount, +}; + +/// Structure for the message that instantiates the smart contract. +#[cw_serde] +pub struct InstantiateMsg { + pub admin: String, + pub managers: Vec, +} + +/// Enum respresenting message types for the execute entry point. +/// These express the different ways in which one can invoke the contract +/// and broadcast tx messages against it. +#[cw_serde] +pub enum ExecuteMsg { + /// A creator operation that registers a vesting account + /// address: String: Bech 32 address of the owner of the vesting account. + /// vesting_schedule: VestingSchedule: The vesting schedule of the account. + RewardUsers { + rewards: Vec, + vesting_schedule: VestingSchedule, + }, + + /// A creator operation that unregisters a vesting account. + /// Args: + /// - address: String: Bech 32 address of the owner of vesting account. + /// - denom: Denom: The denomination of the tokens vested. + /// - vested_token_recipient: Option: Bech 32 address that will receive the vested + /// tokens after deregistration. If None, tokens are received by the owner address. + /// - left_vesting_token_recipient: Option: Bech 32 address that will receive the left + /// vesting tokens after deregistration. + DeregisterVestingAccount { + address: String, + vested_token_recipient: Option, + left_vesting_token_recipient: Option, + }, + + /// Claim is an operation that allows one to claim vested tokens. + Claim { + recipient: Option, + }, + + // Withdraw allows the admin to withdraw the funds from the contract + Withdraw { + amount: Uint128, + recipient: String, + }, +} + +#[cw_serde] +pub struct RewardUserRequest { + pub user_address: String, + pub vesting_amount: Uint128, + pub cliff_amount: Option, +} + +impl RewardUserRequest { + pub fn validate( + &self, + vesting_schedule: VestingSchedule, + ) -> Result<(), ContractError> { + if self.vesting_amount.is_zero() { + return Err(ContractError::Vesting(VestingError::ZeroVestingAmount)); + } + + if let VestingSchedule::LinearVestingWithCliff { .. } = vesting_schedule + { + if self.cliff_amount.is_none() + || self.cliff_amount.unwrap().is_zero() + { + return Err(ContractError::Vesting(VestingError::Cliff( + CliffError::ZeroAmount, + ))); + } + + if self.cliff_amount.unwrap() > self.vesting_amount { + return Err(ContractError::Vesting(VestingError::Cliff( + CliffError::ExcessiveAmount { + cliff_amount: self.cliff_amount.unwrap().into(), + vesting_amount: self.vesting_amount.into(), + }, + ))); + } + } + + Ok(()) + } +} + +#[cw_serde] +pub struct RewardUserResponse { + pub user_address: String, + pub success: bool, + pub error_msg: String, +} + +/// Enum representing the message types for the query entry point. +#[cw_serde] +pub enum QueryMsg { + VestingAccount { + address: String, + start_after: Option, + limit: Option, + }, +} + +#[cw_serde] +pub struct VestingAccountResponse { + pub address: String, + pub vesting: VestingData, +} + +#[cw_serde] +pub struct VestingData { + pub vesting_account: VestingAccount, + pub vested_amount: Uint128, + pub claimable_amount: Uint128, +} + +#[cw_serde] +pub enum VestingSchedule { + /// LinearVesting is used to vest tokens linearly during a time period. + /// The total_amount will be vested during this period. + LinearVesting { + start_time: Uint64, // vesting start time in second unit + end_time: Uint64, // vesting end time in second unit + vesting_amount: Uint128, // total vesting amount + }, + LinearVestingWithCliff { + start_time: Uint64, // vesting start time in second unit + end_time: Uint64, // vesting end time in second unit + vesting_amount: Uint128, // total vesting amount + cliff_amount: Uint128, // amount that will be unvested at cliff_time + cliff_time: Uint64, // cliff time in second unit + }, +} + +pub struct Cliff { + pub amount: Uint128, + pub time: Uint64, +} + +impl Cliff { + pub fn ok_time(&self, block_time: Timestamp) -> Result<(), CliffError> { + let cliff_time_seconds = self.time.u64(); + if cliff_time_seconds < block_time.seconds() { + return Err(CliffError::InvalidTime { + cliff_time: cliff_time_seconds, + block_time: block_time.seconds(), + }); + } + Ok(()) + } + + pub fn ok_amount(&self, vesting_amount: Uint128) -> Result<(), CliffError> { + if self.amount.is_zero() { + return Err(CliffError::ZeroAmount); + } + + let cliff_amount = self.amount.u128(); + if cliff_amount > vesting_amount.u128() { + return Err(CliffError::ExcessiveAmount { + cliff_amount, + vesting_amount: vesting_amount.u128(), + }); + } + Ok(()) + } +} + +impl VestingSchedule { + pub fn vested_amount(&self, block_time: u64) -> StdResult { + match self { + VestingSchedule::LinearVesting { + start_time, + end_time, + vesting_amount, + } => { + if block_time <= start_time.u64() { + return Ok(Uint128::zero()); + } + + if block_time >= end_time.u64() { + return Ok(*vesting_amount); + } + + let vested_token = vesting_amount + .checked_mul(Uint128::from(block_time - start_time.u64()))? + .checked_div(Uint128::from(end_time - start_time))?; + + Ok(vested_token) + } + VestingSchedule::LinearVestingWithCliff { + start_time: _start_time, + end_time, + vesting_amount, + cliff_amount, + cliff_time, + } => { + if block_time < cliff_time.u64() { + return Ok(Uint128::zero()); + } + + if block_time == cliff_time.u64() { + return Ok(*cliff_amount); + } + + if block_time >= end_time.u64() { + return Ok(*vesting_amount); + } + + let remaining_token = + vesting_amount.checked_sub(*cliff_amount)?; + let vested_token = remaining_token + .checked_mul(Uint128::from(block_time - cliff_time.u64()))? + .checked_div(Uint128::from(end_time - cliff_time))?; + + Ok(vested_token + cliff_amount) + } + } + } + + /// + /// Validates the vesting schedule. + /// + /// - If the VestingSchedule is LinearVesting, it checks that the vesting amount is not zero. + /// - If the VestingSchedule is LinearVestingWithCliff, it checks: + /// - that the vesting amount is not zero. + /// - that the cliff amount is not zero. + /// - that the cliff amount is less than or equal to the vesting amount. + /// + /// Also it calls to validate_time + /// + pub fn validate(&self, block_time: Timestamp) -> Result<(), VestingError> { + self.validate_time(block_time)?; + match &self { + VestingSchedule::LinearVesting { + start_time: _, + end_time: _, + vesting_amount, + } => { + if vesting_amount.is_zero() { + return Err(VestingError::ZeroVestingAmount); + } + Ok(()) + } + + VestingSchedule::LinearVestingWithCliff { + start_time: _, + end_time: _, + vesting_amount, + cliff_time, + cliff_amount, + } => { + if vesting_amount.is_zero() { + return Err(VestingError::ZeroVestingAmount); + } + let cliff = Cliff { + amount: *cliff_amount, + time: *cliff_time, + }; + cliff.ok_amount(*vesting_amount)?; + Ok(()) + } + } + } + + /// + /// validate_time checks that the start_time is less than the end_time. + /// additionally, if the vesting schedule is LinearVestingWithCliff, it checks that the cliff_time + /// is less than the end_time. + /// + /// Additionally, it the vesting schedule is LinearVestingWithCliff, it checks that the cliff_time + /// is bigger or equal to the block_time. + /// + pub fn validate_time( + &self, + block_time: Timestamp, + ) -> Result<(), VestingError> { + match self { + VestingSchedule::LinearVesting { + start_time, + end_time, + .. + } => { + if end_time <= start_time { + return Err(VestingError::InvalidTimeRange { + start_time: start_time.u64(), + end_time: end_time.u64(), + }); + } + Ok(()) + } + VestingSchedule::LinearVestingWithCliff { + start_time, + end_time, + cliff_time, + .. + } => { + if end_time <= start_time { + return Err(VestingError::InvalidTimeRange { + start_time: start_time.u64(), + end_time: end_time.u64(), + }); + } + let cliff = Cliff { + amount: Uint128::zero(), + time: *cliff_time, + }; + cliff.ok_time(block_time)?; + Ok(()) + } + } + } +} + +#[cfg(test)] +pub mod tests { + use super::*; + use crate::contract::tests::TestResult; + + #[test] + fn linear_vesting_vested_amount() -> TestResult { + let schedule = VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }; + + assert_eq!(schedule.vested_amount(100)?, Uint128::zero()); + assert_eq!(schedule.vested_amount(105)?, Uint128::new(500000u128)); + assert_eq!(schedule.vested_amount(110)?, Uint128::new(1000000u128)); + assert_eq!(schedule.vested_amount(115)?, Uint128::new(1000000u128)); + + Ok(()) + } + + #[test] + fn linear_vesting_with_cliff_vested_amount() -> TestResult { + let schedule = VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1_000_000_u128), + cliff_amount: Uint128::new(100_000_u128), + cliff_time: Uint64::new(105), + }; + + assert_eq!(schedule.vested_amount(100)?, Uint128::zero()); + assert_eq!(schedule.vested_amount(105)?, Uint128::new(100000u128)); // cliff time then the cliff amount + assert_eq!(schedule.vested_amount(120)?, Uint128::new(1000000u128)); // complete vesting + assert_eq!(schedule.vested_amount(104)?, Uint128::zero()); // before cliff time + assert_eq!(schedule.vested_amount(109)?, Uint128::new(820_000)); // after cliff time but before end time + + Ok(()) + } +} diff --git a/contracts/airdrop-token-vesting/src/state.rs b/contracts/airdrop-token-vesting/src/state.rs new file mode 100644 index 0000000..536f58c --- /dev/null +++ b/contracts/airdrop-token-vesting/src/state.rs @@ -0,0 +1,39 @@ +use std::collections::HashSet; + +use cosmwasm_schema::cw_serde; + +use crate::msg::VestingSchedule; +use cosmwasm_std::Uint128; +use cw_storage_plus::{Item, Map}; + +pub const VESTING_ACCOUNTS: Map<&str, VestingAccount> = + Map::new("vesting_accounts"); +pub const UNALLOCATED_AMOUNT: Item = Item::new("unallocated_amount"); +pub const DENOM: Item = Item::new("denom"); +pub const WHITELIST: Item = Item::new("whitelist"); + +#[cw_serde] +pub struct Whitelist { + pub members: HashSet, + pub admin: String, +} + +impl Whitelist { + pub fn is_admin(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + self.admin == addr + } + + pub fn is_member(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + self.members.contains(addr) + } +} + +#[cw_serde] +pub struct VestingAccount { + pub address: String, + pub vesting_amount: Uint128, + pub vesting_schedule: VestingSchedule, + pub claimed_amount: Uint128, +} diff --git a/contracts/airdrop-token-vesting/src/testing.rs b/contracts/airdrop-token-vesting/src/testing.rs new file mode 100644 index 0000000..586c8f1 --- /dev/null +++ b/contracts/airdrop-token-vesting/src/testing.rs @@ -0,0 +1,865 @@ +use crate::contract::tests::TestResult; +use crate::contract::{execute, instantiate, query}; +use crate::errors::{CliffError, ContractError, VestingError}; +use crate::msg::{ + ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, + VestingAccountResponse, VestingData, VestingSchedule, +}; + +use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage}; +use cosmwasm_std::{coin, MessageInfo}; +use cosmwasm_std::{ + from_json, + testing::{mock_dependencies, mock_env, mock_info}, + Attribute, BankMsg, Coin, Env, OwnedDeps, Response, StdError, SubMsg, + Timestamp, Uint128, Uint64, +}; + +#[test] +fn proper_initialization() -> TestResult { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["admin-sender".to_string()], + }; + + let info = mock_info("addr0000", &[coin(1000, "nibi")]); + + let _res = instantiate(deps.as_mut(), mock_env(), info, msg)?; + Ok(()) +} + +#[test] +fn invalid_coin_sent_instantiation() -> TestResult { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["admin-sender".to_string()], + }; + + // No coins sent + let res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[]), + msg.clone(), + ); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "must deposit exactly one type of token".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + // 2 coins sent + let res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(1000, "nibi"), coin(1000, "usd")]), + msg.clone(), + ); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "must deposit exactly one type of token".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + // 0 amount coins sent + let res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(0, "nibi")]), + msg, + ); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "must deposit some token".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + Ok(()) +} + +#[test] +fn invalid_manangers_initialization() -> TestResult { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec![], + }; + + let info = mock_info("addr0000", &[coin(1000, "nibi")]); + + let res = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "managers cannot be empty".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + let msg = InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["".to_string()], + }; + let res = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "Invalid input: human address too short for this mock implementation (must be >= 3).".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + let msg = InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["admin-sender".to_string(), "".to_string()], + }; + let res = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "Invalid input: human address too short for this mock implementation (must be >= 3).".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + let msg = InstantiateMsg { + admin: "".to_string(), + managers: vec!["admin-sender".to_string()], + }; + let res = instantiate(deps.as_mut(), mock_env(), info.clone(), msg.clone()); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "Invalid input: human address too short for this mock implementation (must be >= 3).".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + Ok(()) +} + +#[test] +fn invalid_managers() -> TestResult { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["admin-manager".to_string()], + }; + + // No coins sent + let res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[]), + msg.clone(), + ); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "must deposit exactly one type of token".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + // 2 coins sent + let res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(1000, "nibi"), coin(1000, "usd")]), + msg, + ); + match res { + Err(err) => { + assert_eq!( + err, + StdError::GenericErr { + msg: "must deposit exactly one type of token".to_string(), + } + ) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } + + Ok(()) +} + +#[test] +fn register_cliff_vesting_account_with_native_token() -> TestResult { + let mut deps = mock_dependencies(); + let _res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(2000, "uusd")]), + InstantiateMsg { + admin: "addr0000".to_string(), + managers: vec!["admin-sender".to_string()], + }, + )?; + + let mut env = mock_env(); + env.block.time = Timestamp::from_seconds(100); + + let create_msg = |start_time: u64, + end_time: u64, + vesting_amount: u128, + cliff_amount: Option, + cliff_time: u64| + -> ExecuteMsg { + ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(vesting_amount), + cliff_amount: cliff_amount.map(Uint128::new), + }], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(start_time), + end_time: Uint64::new(end_time), + vesting_amount: Uint128::zero(), + cliff_amount: Uint128::zero(), + cliff_time: Uint64::new(cliff_time), + }, + } + }; + + // unauthorized sender + let msg = create_msg(100, 110, 0, Some(1000), 105); + require_error( + &mut deps, + &env, + mock_info("addr0042", &[]), + msg, + StdError::generic_err("Unauthorized").into(), + ); + + // zero amount vesting token + let msg = create_msg(100, 110, 0, Some(1000), 105); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[]), + msg, + ContractError::Vesting(VestingError::ZeroVestingAmount), + ); + + // zero amount cliff token + let msg = create_msg(100, 110, 1000, Some(0), 105); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[]), + msg, + ContractError::Vesting(VestingError::Cliff(CliffError::ZeroAmount)), + ); + + // none amount cliff token + let msg = create_msg(100, 110, 1000, None, 105); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[]), + msg, + ContractError::Vesting(VestingError::Cliff(CliffError::ZeroAmount)), + ); + + // cliff time less than block time + let msg = create_msg(100, 110, 1000, Some(1000), 99); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[Coin::new(1000u128, "uusd")]), + msg, + ContractError::Vesting(VestingError::Cliff(CliffError::InvalidTime { + cliff_time: 99, + block_time: 100, + })), + ); + + // end time less than start time + let msg = create_msg(110, 100, 1000, Some(1000), 105); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[Coin::new(1000u128, "uusd")]), + msg, + ContractError::Vesting(VestingError::InvalidTimeRange { + start_time: 110, + end_time: 100, + }), + ); + + // cliff amount greater than vesting amount + let (vesting_amount, cliff_amount, cliff_time) = (1000, 1001, 105); + let msg = + create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[Coin::new(1000u128, "uusd")]), + msg, + ContractError::Vesting( + CliffError::ExcessiveAmount { + cliff_amount, + vesting_amount, + } + .into(), + ), + ); + + // deposit amount higher than unallocated + let (vesting_amount, cliff_amount, cliff_time) = (10000, 250, 105); + let msg = + create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + require_error( + &mut deps, + &env, + mock_info("addr0000", &[Coin::new(999u128, "uusd")]), + msg, + StdError::generic_err("Insufficient funds for all rewards").into(), + ); + + // valid amount + let (vesting_amount, cliff_amount, cliff_time) = (1000, 250, 105); + let msg = + create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + + let res = + execute(deps.as_mut(), env.clone(), mock_info("addr0000", &[]), msg)?; + + assert_eq!( + res.attributes, + vec![ + Attribute { + key: "action".to_string(), + value: "register_vesting_account".to_string() + }, + Attribute { + key: "address".to_string(), + value: "addr0001".to_string() + }, + Attribute { + key: "vesting_amount".to_string(), + value: "1000".to_string() + }, + Attribute { + key: "method".to_string(), + value: "reward_users".to_string() + } + ] + ); + + // valid amount - one failed because duplicate + let vesting_amount = 500u128; + let cliff_amount = 250u128; + let cliff_time = 105u64; + + let msg = ExecuteMsg::RewardUsers { + rewards: vec![ + RewardUserRequest { + user_address: "addr0002".to_string(), + vesting_amount: Uint128::new(vesting_amount), + cliff_amount: Some(Uint128::new(cliff_amount)), + }, + RewardUserRequest { + user_address: "addr0002".to_string(), + vesting_amount: Uint128::new(vesting_amount), + cliff_amount: Some(Uint128::new(cliff_amount)), + }, + ], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::zero(), + cliff_amount: Uint128::zero(), + cliff_time: Uint64::new(cliff_time), + }, + }; + + let res = + execute(deps.as_mut(), env.clone(), mock_info("addr0000", &[]), msg)?; + + assert_eq!( + res.attributes, + vec![ + Attribute { + key: "action".to_string(), + value: "register_vesting_account".to_string() + }, + Attribute { + key: "address".to_string(), + value: "addr0002".to_string() + }, + Attribute { + key: "vesting_amount".to_string(), + value: "500".to_string() + }, + Attribute { + key: "method".to_string(), + value: "reward_users".to_string() + } + ] + ); + + Ok(()) +} + +#[test] +fn test_withdraw() -> TestResult { + let mut deps = mock_dependencies(); + let _res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(2000, "uusd")]), + InstantiateMsg { + admin: "addr0000".to_string(), + managers: vec!["admin-sender".to_string()], + }, + )?; + + let mut env = mock_env(); + env.block.time = Timestamp::from_seconds(100); + + let create_msg = |start_time: u64, + end_time: u64, + vesting_amount: u128, + cliff_amount: Option, + cliff_time: u64| + -> ExecuteMsg { + ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(vesting_amount), + cliff_amount: cliff_amount.map(Uint128::new), + }], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(start_time), + end_time: Uint64::new(end_time), + vesting_amount: Uint128::zero(), + cliff_amount: Uint128::zero(), + cliff_time: Uint64::new(cliff_time), + }, + } + }; + + // valid amount + let (vesting_amount, cliff_amount, cliff_time) = (1000, 250, 105); + let msg = + create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + + let _res = + execute(deps.as_mut(), env.clone(), mock_info("addr0000", &[]), msg)?; + + // try to withdraw + + // unauthorized sender + let msg = ExecuteMsg::Withdraw { + recipient: "addr0000".to_string(), + amount: Uint128::new(1000), + }; + require_error( + &mut deps, + &env, + mock_info("addr0042", &[]), + msg, + StdError::generic_err("Unauthorized").into(), + ); + + // withdraw more than unallocated + let msg = ExecuteMsg::Withdraw { + recipient: "addr0000".to_string(), + amount: Uint128::new(1001), + }; + let res = + execute(deps.as_mut(), env.clone(), mock_info("addr0000", &[]), msg)?; + + assert_eq!( + res.attributes, + vec![ + Attribute { + key: "action".to_string(), + value: "withdraw".to_string() + }, + Attribute { + key: "recipient".to_string(), + value: "addr0000".to_string() + }, + Attribute { + key: "amount".to_string(), + value: "1000".to_string() + }, + Attribute { + key: "unallocated_amount".to_string(), + value: "0".to_string() + }, + ] + ); + + // withdraw but there's no more unallocated + let msg = ExecuteMsg::Withdraw { + recipient: "addr0000".to_string(), + amount: Uint128::new(1), + }; + require_error( + &mut deps, + &env, + mock_info("addr0000", &[]), + msg, + StdError::generic_err("Nothing to withdraw").into(), + ); + + Ok(()) +} + +fn require_error( + deps: &mut OwnedDeps, + env: &Env, + info: MessageInfo, + msg: ExecuteMsg, + expected_error: ContractError, +) { + let res = execute(deps.as_mut(), env.clone(), info, msg); + match res { + Err(err) => { + assert_eq!(err, expected_error) + } + Ok(_) => panic!("Expected error but got success: {res:?}"), + } +} + +#[test] +fn register_vesting_account_with_native_token() -> TestResult { + let mut deps = mock_dependencies(); + let _res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(1000, "uusd")]), + InstantiateMsg { + admin: "addr0000".to_string(), + managers: vec!["admin-sender".to_string()], + }, + )?; + + let mut env = mock_env(); + env.block.time = Timestamp::from_seconds(100); + + // zero amount vesting token + let msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::zero(), + cliff_amount: None, + }], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::zero(), + }, + }; + + require_error( + &mut deps, + &env, + mock_info("addr0000", &[Coin::new(0u128, "uusd")]), + msg, + ContractError::Vesting(VestingError::ZeroVestingAmount), + ); + + // too much vesting amount + let msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(1000001u128), + cliff_amount: None, + }], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }, + }; + let info = mock_info("addr0000", &[]); + let res = execute(deps.as_mut(), env.clone(), info, msg.clone()); + match res { + Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { + assert_eq!(msg, "Insufficient funds for all rewards") + } + _ => panic!("should not enter. got result: {res:?}"), + } + + // too much vesting amount in 2 rewards + let msg = ExecuteMsg::RewardUsers { + rewards: vec![ + RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(1000u128), + cliff_amount: None, + }, + RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(1u128), + cliff_amount: None, + }, + ], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }, + }; + let info = mock_info("addr0000", &[]); + let res = execute(deps.as_mut(), env.clone(), info, msg.clone()); + match res { + Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { + assert_eq!(msg, "Insufficient funds for all rewards") + } + _ => panic!("should not enter. got result: {res:?}"), + } + + // valid amount + let msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(100u128), + cliff_amount: None, + }], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(100u128), + }, + }; + let info = mock_info("addr0000", &[Coin::new(1000u128, "uusd")]); + let res: Response = execute(deps.as_mut(), env.clone(), info, msg)?; + assert_eq!( + res.attributes, + vec![ + Attribute { + key: "action".to_string(), + value: "register_vesting_account".to_string() + }, + Attribute { + key: "address".to_string(), + value: "addr0001".to_string() + }, + Attribute { + key: "vesting_amount".to_string(), + value: "100".to_string() + }, + Attribute { + key: "method".to_string(), + value: "reward_users".to_string() + } + ] + ); + + // query vesting account + assert_eq!( + from_json::(&query( + deps.as_ref(), + env, + QueryMsg::VestingAccount { + address: "addr0001".to_string(), + start_after: None, + limit: None, + }, + )?)?, + VestingAccountResponse { + address: "addr0001".to_string(), + vesting: VestingData { + vesting_account: crate::state::VestingAccount { + address: "addr0001".to_string(), + vesting_amount: Uint128::new(100u128), + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(100u128), + }, + claimed_amount: Uint128::zero(), + }, + vested_amount: Uint128::zero(), + claimable_amount: Uint128::zero(), + }, + } + ); + Ok(()) +} + +#[test] +fn claim_native() -> TestResult { + let mut deps = mock_dependencies(); + let _res = instantiate( + deps.as_mut(), + mock_env(), + mock_info("addr0000", &[coin(1000000u128, "uusd")]), + InstantiateMsg { + admin: "addr0000".to_string(), + managers: vec!["admin-sender".to_string()], + }, + )?; + + // init env to time 100 + let mut env = mock_env(); + env.block.time = Timestamp::from_seconds(100); + + // valid amount + let msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(1000000u128), + cliff_amount: None, + }], + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }, + }; + + let info = mock_info("addr0000", &[Coin::new(1000000u128, "uusd")]); + let _ = execute(deps.as_mut(), env.clone(), info, msg)?; + + // make time to half claimable + env.block.time = Timestamp::from_seconds(105); + + // valid claim + let info = mock_info("addr0001", &[]); + let msg = ExecuteMsg::Claim { recipient: None }; + + let res = execute(deps.as_mut(), env.clone(), info.clone(), msg.clone())?; + assert_eq!( + res.messages, + vec![SubMsg::new(BankMsg::Send { + to_address: "addr0001".to_string(), + amount: vec![Coin { + denom: "uusd".to_string(), + amount: Uint128::new(500000u128), + }], + }),] + ); + assert_eq!( + res.attributes, + vec![ + Attribute::new("action", "claim"), + Attribute::new("address", "addr0001"), + Attribute::new("vesting_amount", "1000000"), + Attribute::new("vested_amount", "500000"), + Attribute::new("claim_amount", "500000"), + ], + ); + + // query vesting account + assert_eq!( + from_json::(&query( + deps.as_ref(), + env.clone(), + QueryMsg::VestingAccount { + address: "addr0001".to_string(), + start_after: None, + limit: None, + }, + )?)?, + VestingAccountResponse { + address: "addr0001".to_string(), + vesting: VestingData { + vesting_account: crate::state::VestingAccount { + address: "addr0001".to_string(), + vesting_amount: Uint128::new(1000000), + vesting_schedule: VestingSchedule::LinearVesting { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + vesting_amount: Uint128::new(1000000u128), + }, + claimed_amount: Uint128::new(500000), + }, + vested_amount: Uint128::new(500000), + claimable_amount: Uint128::zero(), + }, + } + ); + + // make time to half claimable + env.block.time = Timestamp::from_seconds(110); + + let res = execute(deps.as_mut(), env.clone(), info, msg)?; + assert_eq!( + res.messages, + vec![SubMsg::new(BankMsg::Send { + to_address: "addr0001".to_string(), + amount: vec![Coin { + denom: "uusd".to_string(), + amount: Uint128::new(500000u128), + }], + }),] + ); + assert_eq!( + res.attributes, + vec![ + Attribute::new("action", "claim"), + Attribute::new("address", "addr0001"), + Attribute::new("vesting_amount", "1000000"), + Attribute::new("vested_amount", "1000000"), + Attribute::new("claim_amount", "500000"), + ], + ); + + // query vesting account + let res = &query( + deps.as_ref(), + env, + QueryMsg::VestingAccount { + address: "addr0001".to_string(), + start_after: None, + limit: None, + }, + ); + //expect res to be an errro + match res { + Err(StdError::NotFound { .. }) => {} + _ => panic!("should not enter. got result: {res:?}"), + } + + Ok(()) +} diff --git a/contracts/airdrop/Cargo.toml b/contracts/airdrop/Cargo.toml deleted file mode 100644 index 39ac9e9..0000000 --- a/contracts/airdrop/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "airdrop" -version = "0.0.1" -edition = "2021" -homepage = "https://nibiru.fi" -repository = "https://github.com/NibiruChain/cw-nibiru" -exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all instantiate/execute/query exports -library = [] - -[dependencies] -cosmwasm-std = { workspace = true } -cosmwasm-schema = { workspace = true } -cw-storage-plus = { workspace = true } -nibiru-std = { workspace = true } -thiserror = { workspace = true } -schemars = "0.8.15" -serde = { version = "1.0.188", default-features = false, features = ["derive"] } -cw-ownable = { workspace = true } -cw2 = { workspace = true } -semver = "1" - -[dev-dependencies] -anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/airdrop/README.md b/contracts/airdrop/README.md deleted file mode 100644 index fae09cc..0000000 --- a/contracts/airdrop/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Airdrop Contract - -## Overview - -The airdrop contract is used to distribute tokens to a list of addresses. An instance of a contract represents a campaign. The contract is initialized with a campaign id, a campaign name, a campaign description, an owner (the deployer of the contract), a list of managers, and funds which become the unallocated amount. - -The token allocation amount starts unallocated and eventually gets allocated to users by the owner and managers. - -The contract owner and managers can allocate/reward users with tokens by calling the `reward_users` function. The `reward_users` function takes a list of addresses and amounts. The total reward amount must be less than the unallocated token amount of the contract. - -## Withdraw - -Only the contract owner can withdraw from the contract (not the managers). The `withdraw` exists to withdraw any leftover tokens after the campaign has ended. There is no check for if the total outstanding reward amount is greater than the amount of funds left in the contract. `withdraw` should only be called after the campaign ends because it could leave the contract in a state where it cannot fulfill a user's outstanding reward amount. Additional funds can be sent to the contract to reverse the withdrawal. diff --git a/contracts/airdrop/src/contract.rs b/contracts/airdrop/src/contract.rs deleted file mode 100644 index 09fafab..0000000 --- a/contracts/airdrop/src/contract.rs +++ /dev/null @@ -1,256 +0,0 @@ -use crate::{ - msg::{ - ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, - RewardUserResponse, - }, - state::{Campaign, CAMPAIGN, USER_REWARDS}, -}; -#[cfg(not(feature = "library"))] -use cosmwasm_std::entry_point; -use cosmwasm_std::{ - to_json_binary, Addr, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, - Empty, Env, MessageInfo, Response, StdError, StdResult, Uint128, -}; -use cw2::{get_contract_version, set_contract_version}; -use semver::Version; - -pub const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); -pub const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - deps: DepsMut, - _env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - if info.funds.len() != 1 { - return Err(StdError::generic_err("Only one coin is allowed")); - } - - let bond_denom = deps.querier.query_bonded_denom()?; - let coin = info.funds.get(0).unwrap(); - if coin.denom != bond_denom { - return Err(StdError::generic_err("Only native tokens are allowed")); - } - - let campaign = Campaign { - campaign_id: msg.campaign_id, - campaign_name: msg.campaign_name, - campaign_description: msg.campaign_description, - owner: info.sender.clone(), - managers: msg.managers, - unallocated_amount: coin.amount, - }; - CAMPAIGN.save(deps.storage, &campaign)?; - - Ok(Response::new() - .add_attribute("method", "instantiate") - .add_attribute("owner", info.sender)) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn migrate( - deps: DepsMut, - _env: Env, - _msg: Empty, -) -> Result { - let new_version: Version = CONTRACT_VERSION - .parse() - .map_err(|_| StdError::generic_err("Invalid contract version format"))?; - let current_version = get_contract_version(deps.storage)?; - - if current_version.contract != CONTRACT_NAME { - return Err(StdError::generic_err( - "Can only upgrade from same contract type", - )); - } - - if current_version.version.parse::().unwrap() >= new_version { - return Err(StdError::generic_err( - "Cannot upgrade from a newer contract version", - )); - } - - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - - Ok(Response::new().add_attribute("method", "migrate")) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::RewardUsers { requests } => { - reward_users(deps, env, info, requests) - } - ExecuteMsg::Claim {} => claim(deps, env, info), - ExecuteMsg::Withdraw { amount } => withdraw(deps, env, info, amount), - } -} - -/// Reward a set of users with native tokens from the campaign pool -/// -/// - Requires sender to be the contract owner or a campaign manager. -/// - Ensures there are enough unallocated funds in the campaign -/// - Saves/updates user reward pool balances. -/// - Reduces the available campaign balance -pub fn reward_users( - deps: DepsMut, - _env: Env, - info: MessageInfo, - requests: Vec, -) -> Result { - let mut res = vec![]; - - let mut campaign = CAMPAIGN - .load(deps.storage) - .map_err(|_| StdError::generic_err("Failed to load campaign data"))?; - - if campaign.owner != info.sender && !campaign.managers.contains(&info.sender) - { - return Err(StdError::generic_err("Unauthorized")); - } - - for req in requests { - if campaign.unallocated_amount < req.amount { - return Err(StdError::generic_err( - "Not enough funds in the campaign", - )); - } - - match USER_REWARDS.may_load(deps.storage, req.user_address.clone())? { - Some(mut user_reward) => { - user_reward += req.amount; - USER_REWARDS.save( - deps.storage, - req.user_address.clone(), - &user_reward, - )?; - } - None => { - USER_REWARDS.save( - deps.storage, - req.user_address.clone(), - &req.amount, - )?; - } - }; - campaign.unallocated_amount -= req.amount; - CAMPAIGN.save(deps.storage, &campaign)?; - - res.push(RewardUserResponse { - user_address: req.user_address.clone(), - success: true, - error_msg: "".to_string(), - }); - } - - Ok(Response::new() - .add_attribute("method", "reward_users") - .set_data(to_json_binary(&res).unwrap())) -} - -/// Allow a user to claim any rewards allocated to them -/// -/// Transfers the user's full reward balance to their account. Resets their -/// reward balance to 0. -pub fn claim( - deps: DepsMut, - _env: Env, - info: MessageInfo, -) -> Result { - let bond_denom = deps.querier.query_bonded_denom()?; - - match USER_REWARDS.may_load(deps.storage, info.sender.clone())? { - Some(user_reward) => { - USER_REWARDS.remove(deps.storage, info.sender.clone()); - - Ok(Response::new() - .add_attribute("method", "claim") - .add_message(CosmosMsg::Bank(BankMsg::Send { - to_address: info.sender.to_string(), - amount: vec![Coin { - denom: bond_denom.clone(), - amount: user_reward, - }], - }))) - } - None => Err(StdError::generic_err("User pool does not exist")), - } -} - -/// Allow the contract owner to withdraw native tokens -/// -/// Ensures the requested amount is available in the contract balance. Transfers -/// tokens to the contract owner's account. -pub fn withdraw( - deps: DepsMut, - env: Env, - info: MessageInfo, - amount: Uint128, -) -> Result { - let campaign = CAMPAIGN.load(deps.storage)?; - - if info.sender != campaign.owner { - return Err(StdError::generic_err("Only contract owner can withdraw")); - } - - let bond_denom = deps.querier.query_bonded_denom()?; - - let own_balance: Uint128 = deps - .querier - .query_balance(env.contract.address, bond_denom.clone()) - .map_err(|_| StdError::generic_err("Failed to query contract balance"))? - .amount; - - if amount > own_balance { - return Err(StdError::generic_err("Not enough funds in the contract")); - } - - let res = Response::new() - .add_attribute("method", "withdraw") - .add_message(CosmosMsg::Bank(BankMsg::Send { - to_address: info.sender.to_string(), - amount: vec![Coin { - denom: bond_denom.clone(), - amount, - }], - })); - - Ok(res) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Campaign {} => query_campaign(deps, env), - QueryMsg::GetUserReward { user_address } => { - query_user_reward(deps, env, user_address) - } - } -} - -pub fn query_campaign(deps: Deps, _env: Env) -> StdResult { - match CAMPAIGN.load(deps.storage) { - Ok(campaign) => to_json_binary(&campaign), - Err(_) => Err(StdError::generic_err("Failed to load campaign data")), - } -} - -pub fn query_user_reward( - deps: Deps, - _env: Env, - user_address: Addr, -) -> StdResult { - match USER_REWARDS.load(deps.storage, user_address) { - Ok(user_reward) => to_json_binary(&user_reward), - Err(_) => Err(StdError::generic_err("User reward does not exist")), - } -} diff --git a/contracts/airdrop/src/msg.rs b/contracts/airdrop/src/msg.rs deleted file mode 100644 index 6ab5696..0000000 --- a/contracts/airdrop/src/msg.rs +++ /dev/null @@ -1,38 +0,0 @@ -use cosmwasm_std::{Addr, Uint128}; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct InstantiateMsg { - pub campaign_id: String, - pub campaign_name: String, - pub campaign_description: String, - pub managers: Vec, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RewardUserRequest { - pub user_address: Addr, - pub amount: Uint128, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub struct RewardUserResponse { - pub user_address: Addr, - pub success: bool, - pub error_msg: String, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -#[serde(rename_all = "snake_case")] -pub enum ExecuteMsg { - RewardUsers { requests: Vec }, - Claim {}, - Withdraw { amount: Uint128 }, -} - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - Campaign {}, - GetUserReward { user_address: Addr }, -} diff --git a/contracts/airdrop/src/state.rs b/contracts/airdrop/src/state.rs deleted file mode 100644 index b486153..0000000 --- a/contracts/airdrop/src/state.rs +++ /dev/null @@ -1,18 +0,0 @@ -use cosmwasm_std::{Addr, Uint128}; -use cw_storage_plus::{Item, Map}; -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct Campaign { - pub campaign_id: String, - pub campaign_name: String, - pub campaign_description: String, - - pub unallocated_amount: Uint128, - pub owner: Addr, - pub managers: Vec, -} - -pub const CAMPAIGN: Item = Item::new("campaign"); -pub const USER_REWARDS: Map = Map::new("user_rewards"); diff --git a/contracts/airdrop/src/tests/execute/claim.rs b/contracts/airdrop/src/tests/execute/claim.rs deleted file mode 100644 index 22db64c..0000000 --- a/contracts/airdrop/src/tests/execute/claim.rs +++ /dev/null @@ -1,76 +0,0 @@ -use crate::contract::{claim, instantiate, reward_users}; -use crate::msg::{InstantiateMsg, RewardUserRequest}; -use crate::state::USER_REWARDS; -use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{coins, Addr, BankMsg, CosmosMsg, StdError, SubMsg, Uint128}; -use std::vec; - -#[test] -fn test_claim() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - reward_users( - deps.as_mut(), - env.clone(), - mock_info("owner", &[]), - vec![ - RewardUserRequest { - user_address: Addr::unchecked("user1"), - amount: Uint128::new(750), - }, - RewardUserRequest { - user_address: Addr::unchecked("user2"), - amount: Uint128::new(250), - }, - ], - ) - .unwrap(); - - // try to claim from user1 - let resp = - claim(deps.as_mut(), env.clone(), mock_info("user1", &[])).unwrap(); - - assert_eq!( - resp.messages, - vec![SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: "user1".to_string(), - amount: coins(750, ""), - }))] - ); - assert!(!USER_REWARDS.has(deps.as_ref().storage, Addr::unchecked("user1"))); - - // try to claim from user2 - let resp = - claim(deps.as_mut(), env.clone(), mock_info("user2", &[])).unwrap(); - - assert_eq!( - resp.messages, - vec![SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: "user2".to_string(), - amount: coins(250, ""), - }))] - ); - assert!(!USER_REWARDS.has(deps.as_ref().storage, Addr::unchecked("user2"))); - - // try to claim from user3 who doesn't exist - let resp = claim(deps.as_mut(), env.clone(), mock_info("user3", &[])); - - assert_eq!(resp, Err(StdError::generic_err("User pool does not exist"))); -} diff --git a/contracts/airdrop/src/tests/execute/mod.rs b/contracts/airdrop/src/tests/execute/mod.rs deleted file mode 100644 index 62de483..0000000 --- a/contracts/airdrop/src/tests/execute/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod claim; -mod reward_users; -mod withdraw; diff --git a/contracts/airdrop/src/tests/execute/reward_users.rs b/contracts/airdrop/src/tests/execute/reward_users.rs deleted file mode 100644 index 2ab8ee6..0000000 --- a/contracts/airdrop/src/tests/execute/reward_users.rs +++ /dev/null @@ -1,231 +0,0 @@ -use crate::contract::{instantiate, reward_users}; -use crate::msg::{InstantiateMsg, RewardUserRequest, RewardUserResponse}; -use crate::state::{Campaign, CAMPAIGN, USER_REWARDS}; -use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{coins, from_json, Addr, StdError, Uint128}; -use std::vec; - -#[test] -fn test_reward_users_fully_allocated() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - let resp = reward_users( - deps.as_mut(), - env.clone(), - mock_info("owner", &[]), - vec![ - RewardUserRequest { - user_address: Addr::unchecked("user1"), - amount: Uint128::new(750), - }, - RewardUserRequest { - user_address: Addr::unchecked("user2"), - amount: Uint128::new(250), - }, - ], - ) - .unwrap(); - - // assert response - let user_responses: Vec = - from_json(resp.data.unwrap()).unwrap(); - assert_eq!( - user_responses, - vec![ - RewardUserResponse { - user_address: Addr::unchecked("user1"), - success: true, - error_msg: "".to_string(), - }, - RewardUserResponse { - user_address: Addr::unchecked("user2"), - success: true, - error_msg: "".to_string(), - }, - ] - ); - - // assert inner state of the contract - let campaign = CAMPAIGN.load(deps.as_ref().storage).unwrap(); - assert_eq!( - campaign, - Campaign { - owner: Addr::unchecked("owner"), - unallocated_amount: Uint128::zero(), - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2") - ], - } - ); - - assert_eq!( - USER_REWARDS - .load(deps.as_ref().storage, Addr::unchecked("user1")) - .unwrap(), - Uint128::new(750) - ); - - assert_eq!( - USER_REWARDS - .load(deps.as_ref().storage, Addr::unchecked("user2")) - .unwrap(), - Uint128::new(250) - ); -} - -#[test] -fn test_reward_users_as_manager() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - let resp = reward_users( - deps.as_mut(), - env.clone(), - mock_info("manager1", &[]), - vec![ - RewardUserRequest { - user_address: Addr::unchecked("user1"), - amount: Uint128::new(750), - }, - RewardUserRequest { - user_address: Addr::unchecked("user2"), - amount: Uint128::new(250), - }, - ], - ) - .unwrap(); - - // assert response - let user_responses: Vec = - from_json(resp.data.unwrap()).unwrap(); - assert_eq!( - user_responses, - vec![ - RewardUserResponse { - user_address: Addr::unchecked("user1"), - success: true, - error_msg: "".to_string(), - }, - RewardUserResponse { - user_address: Addr::unchecked("user2"), - success: true, - error_msg: "".to_string(), - }, - ] - ); - - // assert inner state of the contract - let campaign = CAMPAIGN.load(deps.as_ref().storage).unwrap(); - assert_eq!( - campaign, - Campaign { - owner: Addr::unchecked("owner"), - unallocated_amount: Uint128::zero(), - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2") - ], - } - ); - - assert_eq!( - USER_REWARDS - .load(deps.as_ref().storage, Addr::unchecked("user1")) - .unwrap(), - Uint128::new(750) - ); - - assert_eq!( - USER_REWARDS - .load(deps.as_ref().storage, Addr::unchecked("user2")) - .unwrap(), - Uint128::new(250) - ); -} - -#[test] -fn test_fails_when_we_try_to_allocate_more_than_available() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - let resp = reward_users( - deps.as_mut(), - env.clone(), - mock_info("manager1", &[]), - vec![ - RewardUserRequest { - user_address: Addr::unchecked("user1"), - amount: Uint128::new(750), - }, - RewardUserRequest { - user_address: Addr::unchecked("user2"), - amount: Uint128::new(250), - }, - RewardUserRequest { - user_address: Addr::unchecked("user3"), - amount: Uint128::new(251), - }, - ], - ); - - assert_eq!( - resp, - Err(StdError::generic_err("Not enough funds in the campaign",)) - ); -} diff --git a/contracts/airdrop/src/tests/execute/withdraw.rs b/contracts/airdrop/src/tests/execute/withdraw.rs deleted file mode 100644 index f64d519..0000000 --- a/contracts/airdrop/src/tests/execute/withdraw.rs +++ /dev/null @@ -1,115 +0,0 @@ -use crate::contract::{instantiate, withdraw}; -use crate::msg::InstantiateMsg; -use cosmwasm_std::testing::{ - mock_dependencies, mock_dependencies_with_balance, mock_env, mock_info, -}; -use cosmwasm_std::{coins, Addr, BankMsg, CosmosMsg, StdError, SubMsg, Uint128}; -use std::vec; - -#[test] -fn test_withdraw_ok() { - let mut deps = mock_dependencies_with_balance(&coins(1000, "")); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - // try to withdraw - let resp = withdraw( - deps.as_mut(), - env.clone(), - mock_info("owner", &[]), - Uint128::new(1000), - ) - .unwrap(); - - assert_eq!( - resp.messages, - vec![SubMsg::new(CosmosMsg::Bank(BankMsg::Send { - to_address: "owner".to_string(), - amount: coins(1000, ""), - }))] - ); -} - -#[test] -fn test_withdraw_too_much() { - let mut deps = mock_dependencies_with_balance(&coins(1000, "")); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - // try to withdraw - let resp = withdraw( - deps.as_mut(), - env.clone(), - mock_info("owner", &[]), - Uint128::new(1001), - ); - - assert_eq!( - resp, - Err(StdError::generic_err("Not enough funds in the contract")) - ); -} - -#[test] -fn test_withdraw_unauthorized() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - // try to withdraw - let res = withdraw( - deps.as_mut(), - env.clone(), - mock_info("not_owner", &[]), - Uint128::new(1000), - ); - assert_eq!( - res, - Err(StdError::generic_err("Only contract owner can withdraw")) - ); -} diff --git a/contracts/airdrop/src/tests/instantiate.rs b/contracts/airdrop/src/tests/instantiate.rs deleted file mode 100644 index cf0348d..0000000 --- a/contracts/airdrop/src/tests/instantiate.rs +++ /dev/null @@ -1,74 +0,0 @@ -use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{coins, Addr, StdError, Uint128}; - -use crate::contract::instantiate; -use crate::msg::InstantiateMsg; -use crate::state::{Campaign, CAMPAIGN}; - -#[test] -fn test_instantiate() { - let mut deps = mock_dependencies(); - let info = mock_info("sender", &coins(1000, "")); - let env = mock_env(); - let msg = InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![Addr::unchecked("manager1"), Addr::unchecked("manager2")], - }; - - instantiate(deps.as_mut(), env.clone(), info.clone(), msg.clone()).unwrap(); - - let campaign = CAMPAIGN.load(deps.as_ref().storage).unwrap(); - assert_eq!( - campaign, - Campaign { - owner: Addr::unchecked("sender"), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2") - ], - unallocated_amount: Uint128::new(1000), - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - } - ); -} - -#[test] -fn test_instantiate_with_no_funds() { - let mut deps = mock_dependencies(); - let info = mock_info("sender", &[]); - let env = mock_env(); - let msg = InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![Addr::unchecked("manager1"), Addr::unchecked("manager2")], - }; - - let resp = - instantiate(deps.as_mut(), env.clone(), info.clone(), msg.clone()); - assert_eq!(resp, Err(StdError::generic_err("Only one coin is allowed"))); -} - -#[test] -fn test_instantiate_with_invalid_denom() { - let mut deps = mock_dependencies(); - let info = mock_info("sender", &coins(1000, "foo")); - let env = mock_env(); - let msg = InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![Addr::unchecked("manager1"), Addr::unchecked("manager2")], - }; - - let resp = - instantiate(deps.as_mut(), env.clone(), info.clone(), msg.clone()); - assert_eq!( - resp, - Err(StdError::generic_err("Only native tokens are allowed")) - ); -} diff --git a/contracts/airdrop/src/tests/mod.rs b/contracts/airdrop/src/tests/mod.rs deleted file mode 100644 index 577ea74..0000000 --- a/contracts/airdrop/src/tests/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod execute; -mod instantiate; -mod query; diff --git a/contracts/airdrop/src/tests/query/campaign.rs b/contracts/airdrop/src/tests/query/campaign.rs deleted file mode 100644 index 36b80bc..0000000 --- a/contracts/airdrop/src/tests/query/campaign.rs +++ /dev/null @@ -1,45 +0,0 @@ -use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{coins, from_json, Addr, Uint128}; - -use crate::contract::{instantiate, query_campaign}; -use crate::msg::InstantiateMsg; -use crate::state::Campaign; - -#[test] -fn test_query_campaign() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - let res = query_campaign(deps.as_ref(), env.clone()).unwrap(); - let campaign: Campaign = from_json(res).unwrap(); - assert_eq!( - campaign, - Campaign { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - owner: Addr::unchecked("owner"), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2") - ], - unallocated_amount: Uint128::new(1000), - } - ); -} diff --git a/contracts/airdrop/src/tests/query/mod.rs b/contracts/airdrop/src/tests/query/mod.rs deleted file mode 100644 index 5abd2f9..0000000 --- a/contracts/airdrop/src/tests/query/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod campaign; -mod user_pool; diff --git a/contracts/airdrop/src/tests/query/user_pool.rs b/contracts/airdrop/src/tests/query/user_pool.rs deleted file mode 100644 index 55a54c1..0000000 --- a/contracts/airdrop/src/tests/query/user_pool.rs +++ /dev/null @@ -1,73 +0,0 @@ -use crate::contract::{instantiate, query_user_reward, reward_users}; -use crate::msg::{InstantiateMsg, RewardUserRequest}; -use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{coins, from_json, Addr, StdError, Uint128}; -use std::vec; - -#[test] -fn test_query_user_pool() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - reward_users( - deps.as_mut(), - env.clone(), - mock_info("owner", &[]), - vec![RewardUserRequest { - user_address: Addr::unchecked("user1"), - amount: Uint128::new(999), - }], - ) - .unwrap(); - - let res = - query_user_reward(deps.as_ref(), env.clone(), Addr::unchecked("user1")) - .unwrap(); - let user_pool: Uint128 = from_json(res).unwrap(); - assert_eq!(user_pool, Uint128::new(999)); -} - -#[test] -fn test_query_user_pool_empty() { - let mut deps = mock_dependencies(); - let env = mock_env(); - - instantiate( - deps.as_mut(), - env.clone(), - mock_info("owner", &coins(1000, "")), - InstantiateMsg { - campaign_id: "campaign_id".to_string(), - campaign_name: "campaign_name".to_string(), - campaign_description: "campaign_description".to_string(), - managers: vec![ - Addr::unchecked("manager1"), - Addr::unchecked("manager2"), - ], - }, - ) - .unwrap(); - - let res = - query_user_reward(deps.as_ref(), env.clone(), Addr::unchecked("user1")); - assert_eq!( - res, - Err(StdError::generic_err("User reward does not exist")) - ); -} From 6595c823e9999c0e86a418a79dbaf80a3a01f66b Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Mon, 4 Mar 2024 18:16:00 -0600 Subject: [PATCH 04/29] chore: delete airdrop.wasm --- artifacts/airdrop.wasm | Bin 200510 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 artifacts/airdrop.wasm diff --git a/artifacts/airdrop.wasm b/artifacts/airdrop.wasm deleted file mode 100644 index 916883eab0f2035de36b975964181cadc7a98cf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200510 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

5Y%mPtx>Zuph9*F;*ll6$GH)>ki_H8z^Tm{- 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,B&w&SK6~cl!UTK1Z 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 From 1049e84fc7054eef16df3cb6724182671a8287b9 Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Wed, 6 Mar 2024 02:26:27 -0600 Subject: [PATCH 05/29] refactor(airdrop-token-vesting): remove unnecessary fields (#129) * refactor: make cliff_amount required * refactor: remove VestingSchedule::LinearVesting * feat: allow zero cliff * refactor: remove cliff amount and vesting amount from VestingSchedule --- .../airdrop-token-vesting/src/contract.rs | 78 +++---- contracts/airdrop-token-vesting/src/errors.rs | 3 - contracts/airdrop-token-vesting/src/msg.rs | 208 ++---------------- contracts/airdrop-token-vesting/src/state.rs | 35 ++- .../airdrop-token-vesting/src/testing.rs | 123 +++++------ 5 files changed, 147 insertions(+), 300 deletions(-) diff --git a/contracts/airdrop-token-vesting/src/contract.rs b/contracts/airdrop-token-vesting/src/contract.rs index e0e4eb9..1df66cb 100644 --- a/contracts/airdrop-token-vesting/src/contract.rs +++ b/contracts/airdrop-token-vesting/src/contract.rs @@ -139,7 +139,7 @@ fn reward_users( env: Env, info: MessageInfo, rewards: Vec, - mut vesting_schedule: VestingSchedule, + vesting_schedule: VestingSchedule, ) -> Result { let mut res = vec![]; @@ -160,33 +160,19 @@ fn reward_users( StdError::generic_err("Insufficient funds for all rewards").into() ); } - vesting_schedule.validate_time(env.block.time)?; + vesting_schedule.validate(env.block.time)?; let mut attrs: Vec = vec![]; for req in rewards { // validate amounts and cliff details if there's one - req.validate(vesting_schedule.clone())?; - - // update the vesting schedule to match with the request - match &mut vesting_schedule { - VestingSchedule::LinearVesting { vesting_amount, .. } => { - *vesting_amount = req.vesting_amount; - } - VestingSchedule::LinearVestingWithCliff { - vesting_amount, - cliff_amount, - .. - } => { - *vesting_amount = req.vesting_amount; - *cliff_amount = req.cliff_amount.unwrap(); - } - } + req.validate()?; let result = register_vesting_account( deps.storage, env.block.time, req.user_address.clone(), req.vesting_amount, + req.cliff_amount, vesting_schedule.clone(), ); @@ -221,7 +207,8 @@ fn register_vesting_account( storage: &mut dyn Storage, block_time: Timestamp, address: String, - deposit_amount: Uint128, + vesting_amount: Uint128, + cliff_amount: Uint128, vesting_schedule: VestingSchedule, ) -> Result { // vesting_account existence check @@ -235,7 +222,8 @@ fn register_vesting_account( address.as_str(), &VestingAccount { address: address.to_string(), - vesting_amount: deposit_amount, + vesting_amount, + cliff_amount, vesting_schedule, claimed_amount: Uint128::zero(), }, @@ -244,7 +232,7 @@ fn register_vesting_account( Ok(Response::new().add_attributes(vec![ ("action", "register_vesting_account"), ("address", address.as_str()), - ("vesting_amount", &deposit_amount.to_string()), + ("vesting_amount", &vesting_amount.to_string()), ])) } @@ -281,9 +269,7 @@ fn deregister_vesting_account( // remove vesting account VESTING_ACCOUNTS.remove(deps.storage, address.as_str()); - let vested_amount = account - .vesting_schedule - .vested_amount(env.block.time.seconds())?; + let vested_amount = account.vested_amount(env.block.time.seconds())?; let claimed_amount = account.claimed_amount; // transfer already vested amount to vested_token_recipient and if @@ -362,9 +348,7 @@ fn claim( } let mut account = account.unwrap(); - let vested_amount = account - .vesting_schedule - .vested_amount(env.block.time.seconds())?; + let vested_amount = account.vested_amount(env.block.time.seconds())?; let claimed_amount = account.claimed_amount; let claimable_amount = vested_amount.checked_sub(claimed_amount)?; @@ -439,9 +423,8 @@ fn vesting_account( match account { None => Err(StdError::not_found("Vesting account not found")), Some(account) => { - let vested_amount = account - .vesting_schedule - .vested_amount(env.block.time.seconds())?; + let vested_amount = + account.vested_amount(env.block.time.seconds())?; let vesting = VestingData { vesting_account: account.clone(), @@ -530,21 +513,42 @@ pub mod tests { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(5000u128), - cliff_amount: None, + cliff_amount: Uint128::zero(), }], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), + cliff_time: Uint64::new(105), }, }; - execute( + let res = execute( deps.as_mut(), env.clone(), // Use the custom environment with the adjusted block time testing::mock_info("admin-sender", &[coin(1000000, "token")]), register_msg, )?; + assert_eq!( + res.attributes, + vec![ + Attribute { + key: "action".to_string(), + value: "register_vesting_account".to_string() + }, + Attribute { + key: "address".to_string(), + value: "addr0001".to_string() + }, + Attribute { + key: "vesting_amount".to_string(), + value: "5000".to_string() + }, + Attribute { + key: "method".to_string(), + value: "reward_users".to_string() + } + ] + ); // Try to deregister with unauthorized sender let msg = ExecuteMsg::DeregisterVestingAccount { @@ -577,12 +581,12 @@ pub mod tests { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(5000u128), - cliff_amount: None, + cliff_amount: Uint128::zero(), }], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), + cliff_time: Uint64::new(105), }, }; diff --git a/contracts/airdrop-token-vesting/src/errors.rs b/contracts/airdrop-token-vesting/src/errors.rs index be9b992..fef343d 100644 --- a/contracts/airdrop-token-vesting/src/errors.rs +++ b/contracts/airdrop-token-vesting/src/errors.rs @@ -17,9 +17,6 @@ pub enum ContractError { #[derive(thiserror::Error, Debug, PartialEq)] pub enum CliffError { - #[error("cliff_amount is zero but should be greater than 0")] - ZeroAmount, - #[error("cliff_time ({cliff_time}) should be greater than block_time ({block_time})")] InvalidTime { cliff_time: u64, block_time: u64 }, diff --git a/contracts/airdrop-token-vesting/src/msg.rs b/contracts/airdrop-token-vesting/src/msg.rs index 6b019da..f3fbfb3 100644 --- a/contracts/airdrop-token-vesting/src/msg.rs +++ b/contracts/airdrop-token-vesting/src/msg.rs @@ -1,5 +1,5 @@ use cosmwasm_schema::cw_serde; -use cosmwasm_std::{StdResult, Timestamp, Uint128, Uint64}; +use cosmwasm_std::{Timestamp, Uint128, Uint64}; use cw20::Denom; use crate::{ @@ -57,36 +57,22 @@ pub enum ExecuteMsg { pub struct RewardUserRequest { pub user_address: String, pub vesting_amount: Uint128, - pub cliff_amount: Option, + pub cliff_amount: Uint128, } impl RewardUserRequest { - pub fn validate( - &self, - vesting_schedule: VestingSchedule, - ) -> Result<(), ContractError> { + pub fn validate(&self) -> Result<(), ContractError> { if self.vesting_amount.is_zero() { return Err(ContractError::Vesting(VestingError::ZeroVestingAmount)); } - if let VestingSchedule::LinearVestingWithCliff { .. } = vesting_schedule - { - if self.cliff_amount.is_none() - || self.cliff_amount.unwrap().is_zero() - { - return Err(ContractError::Vesting(VestingError::Cliff( - CliffError::ZeroAmount, - ))); - } - - if self.cliff_amount.unwrap() > self.vesting_amount { - return Err(ContractError::Vesting(VestingError::Cliff( - CliffError::ExcessiveAmount { - cliff_amount: self.cliff_amount.unwrap().into(), - vesting_amount: self.vesting_amount.into(), - }, - ))); - } + if self.cliff_amount > self.vesting_amount { + return Err(ContractError::Vesting(VestingError::Cliff( + CliffError::ExcessiveAmount { + cliff_amount: self.cliff_amount.into(), + vesting_amount: self.vesting_amount.into(), + }, + ))); } Ok(()) @@ -125,19 +111,10 @@ pub struct VestingData { #[cw_serde] pub enum VestingSchedule { - /// LinearVesting is used to vest tokens linearly during a time period. - /// The total_amount will be vested during this period. - LinearVesting { - start_time: Uint64, // vesting start time in second unit - end_time: Uint64, // vesting end time in second unit - vesting_amount: Uint128, // total vesting amount - }, LinearVestingWithCliff { - start_time: Uint64, // vesting start time in second unit - end_time: Uint64, // vesting end time in second unit - vesting_amount: Uint128, // total vesting amount - cliff_amount: Uint128, // amount that will be unvested at cliff_time - cliff_time: Uint64, // cliff time in second unit + start_time: Uint64, // vesting start time in second unit + end_time: Uint64, // vesting end time in second unit + cliff_time: Uint64, // cliff time in second unit }, } @@ -159,10 +136,6 @@ impl Cliff { } pub fn ok_amount(&self, vesting_amount: Uint128) -> Result<(), CliffError> { - if self.amount.is_zero() { - return Err(CliffError::ZeroAmount); - } - let cliff_amount = self.amount.u128(); if cliff_amount > vesting_amount.u128() { return Err(CliffError::ExcessiveAmount { @@ -175,102 +148,6 @@ impl Cliff { } impl VestingSchedule { - pub fn vested_amount(&self, block_time: u64) -> StdResult { - match self { - VestingSchedule::LinearVesting { - start_time, - end_time, - vesting_amount, - } => { - if block_time <= start_time.u64() { - return Ok(Uint128::zero()); - } - - if block_time >= end_time.u64() { - return Ok(*vesting_amount); - } - - let vested_token = vesting_amount - .checked_mul(Uint128::from(block_time - start_time.u64()))? - .checked_div(Uint128::from(end_time - start_time))?; - - Ok(vested_token) - } - VestingSchedule::LinearVestingWithCliff { - start_time: _start_time, - end_time, - vesting_amount, - cliff_amount, - cliff_time, - } => { - if block_time < cliff_time.u64() { - return Ok(Uint128::zero()); - } - - if block_time == cliff_time.u64() { - return Ok(*cliff_amount); - } - - if block_time >= end_time.u64() { - return Ok(*vesting_amount); - } - - let remaining_token = - vesting_amount.checked_sub(*cliff_amount)?; - let vested_token = remaining_token - .checked_mul(Uint128::from(block_time - cliff_time.u64()))? - .checked_div(Uint128::from(end_time - cliff_time))?; - - Ok(vested_token + cliff_amount) - } - } - } - - /// - /// Validates the vesting schedule. - /// - /// - If the VestingSchedule is LinearVesting, it checks that the vesting amount is not zero. - /// - If the VestingSchedule is LinearVestingWithCliff, it checks: - /// - that the vesting amount is not zero. - /// - that the cliff amount is not zero. - /// - that the cliff amount is less than or equal to the vesting amount. - /// - /// Also it calls to validate_time - /// - pub fn validate(&self, block_time: Timestamp) -> Result<(), VestingError> { - self.validate_time(block_time)?; - match &self { - VestingSchedule::LinearVesting { - start_time: _, - end_time: _, - vesting_amount, - } => { - if vesting_amount.is_zero() { - return Err(VestingError::ZeroVestingAmount); - } - Ok(()) - } - - VestingSchedule::LinearVestingWithCliff { - start_time: _, - end_time: _, - vesting_amount, - cliff_time, - cliff_amount, - } => { - if vesting_amount.is_zero() { - return Err(VestingError::ZeroVestingAmount); - } - let cliff = Cliff { - amount: *cliff_amount, - time: *cliff_time, - }; - cliff.ok_amount(*vesting_amount)?; - Ok(()) - } - } - } - /// /// validate_time checks that the start_time is less than the end_time. /// additionally, if the vesting schedule is LinearVestingWithCliff, it checks that the cliff_time @@ -279,24 +156,8 @@ impl VestingSchedule { /// Additionally, it the vesting schedule is LinearVestingWithCliff, it checks that the cliff_time /// is bigger or equal to the block_time. /// - pub fn validate_time( - &self, - block_time: Timestamp, - ) -> Result<(), VestingError> { + pub fn validate(&self, block_time: Timestamp) -> Result<(), VestingError> { match self { - VestingSchedule::LinearVesting { - start_time, - end_time, - .. - } => { - if end_time <= start_time { - return Err(VestingError::InvalidTimeRange { - start_time: start_time.u64(), - end_time: end_time.u64(), - }); - } - Ok(()) - } VestingSchedule::LinearVestingWithCliff { start_time, end_time, @@ -319,44 +180,3 @@ impl VestingSchedule { } } } - -#[cfg(test)] -pub mod tests { - use super::*; - use crate::contract::tests::TestResult; - - #[test] - fn linear_vesting_vested_amount() -> TestResult { - let schedule = VestingSchedule::LinearVesting { - start_time: Uint64::new(100), - end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), - }; - - assert_eq!(schedule.vested_amount(100)?, Uint128::zero()); - assert_eq!(schedule.vested_amount(105)?, Uint128::new(500000u128)); - assert_eq!(schedule.vested_amount(110)?, Uint128::new(1000000u128)); - assert_eq!(schedule.vested_amount(115)?, Uint128::new(1000000u128)); - - Ok(()) - } - - #[test] - fn linear_vesting_with_cliff_vested_amount() -> TestResult { - let schedule = VestingSchedule::LinearVestingWithCliff { - start_time: Uint64::new(100), - end_time: Uint64::new(110), - vesting_amount: Uint128::new(1_000_000_u128), - cliff_amount: Uint128::new(100_000_u128), - cliff_time: Uint64::new(105), - }; - - assert_eq!(schedule.vested_amount(100)?, Uint128::zero()); - assert_eq!(schedule.vested_amount(105)?, Uint128::new(100000u128)); // cliff time then the cliff amount - assert_eq!(schedule.vested_amount(120)?, Uint128::new(1000000u128)); // complete vesting - assert_eq!(schedule.vested_amount(104)?, Uint128::zero()); // before cliff time - assert_eq!(schedule.vested_amount(109)?, Uint128::new(820_000)); // after cliff time but before end time - - Ok(()) - } -} diff --git a/contracts/airdrop-token-vesting/src/state.rs b/contracts/airdrop-token-vesting/src/state.rs index 536f58c..add1587 100644 --- a/contracts/airdrop-token-vesting/src/state.rs +++ b/contracts/airdrop-token-vesting/src/state.rs @@ -3,7 +3,7 @@ use std::collections::HashSet; use cosmwasm_schema::cw_serde; use crate::msg::VestingSchedule; -use cosmwasm_std::Uint128; +use cosmwasm_std::{StdResult, Uint128}; use cw_storage_plus::{Item, Map}; pub const VESTING_ACCOUNTS: Map<&str, VestingAccount> = @@ -34,6 +34,39 @@ impl Whitelist { pub struct VestingAccount { pub address: String, pub vesting_amount: Uint128, + pub cliff_amount: Uint128, pub vesting_schedule: VestingSchedule, pub claimed_amount: Uint128, } + +impl VestingAccount { + pub fn vested_amount(&self, block_time: u64) -> StdResult { + match self.vesting_schedule { + VestingSchedule::LinearVestingWithCliff { + start_time: _start_time, + end_time, + cliff_time, + } => { + if block_time < cliff_time.u64() { + return Ok(Uint128::zero()); + } + + if block_time == cliff_time.u64() { + return Ok(self.cliff_amount); + } + + if block_time >= end_time.u64() { + return Ok(self.vesting_amount); + } + + let remaining_token = + self.vesting_amount.checked_sub(self.cliff_amount)?; + let vested_token = remaining_token + .checked_mul(Uint128::from(block_time - cliff_time.u64()))? + .checked_div(Uint128::from(end_time - cliff_time))?; + + Ok(vested_token + self.cliff_amount) + } + } + } +} diff --git a/contracts/airdrop-token-vesting/src/testing.rs b/contracts/airdrop-token-vesting/src/testing.rs index 586c8f1..6b20848 100644 --- a/contracts/airdrop-token-vesting/src/testing.rs +++ b/contracts/airdrop-token-vesting/src/testing.rs @@ -246,27 +246,25 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { let create_msg = |start_time: u64, end_time: u64, vesting_amount: u128, - cliff_amount: Option, + cliff_amount: u128, cliff_time: u64| -> ExecuteMsg { ExecuteMsg::RewardUsers { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(vesting_amount), - cliff_amount: cliff_amount.map(Uint128::new), + cliff_amount: Uint128::new(cliff_amount), }], vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(start_time), end_time: Uint64::new(end_time), - vesting_amount: Uint128::zero(), - cliff_amount: Uint128::zero(), cliff_time: Uint64::new(cliff_time), }, } }; // unauthorized sender - let msg = create_msg(100, 110, 0, Some(1000), 105); + let msg = create_msg(100, 110, 0, 1000, 105); require_error( &mut deps, &env, @@ -276,7 +274,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { ); // zero amount vesting token - let msg = create_msg(100, 110, 0, Some(1000), 105); + let msg = create_msg(100, 110, 0, 1000, 105); require_error( &mut deps, &env, @@ -285,28 +283,8 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { ContractError::Vesting(VestingError::ZeroVestingAmount), ); - // zero amount cliff token - let msg = create_msg(100, 110, 1000, Some(0), 105); - require_error( - &mut deps, - &env, - mock_info("addr0000", &[]), - msg, - ContractError::Vesting(VestingError::Cliff(CliffError::ZeroAmount)), - ); - - // none amount cliff token - let msg = create_msg(100, 110, 1000, None, 105); - require_error( - &mut deps, - &env, - mock_info("addr0000", &[]), - msg, - ContractError::Vesting(VestingError::Cliff(CliffError::ZeroAmount)), - ); - // cliff time less than block time - let msg = create_msg(100, 110, 1000, Some(1000), 99); + let msg = create_msg(100, 110, 1000, 500, 99); require_error( &mut deps, &env, @@ -319,7 +297,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { ); // end time less than start time - let msg = create_msg(110, 100, 1000, Some(1000), 105); + let msg = create_msg(110, 100, 1000, 1000, 105); require_error( &mut deps, &env, @@ -333,8 +311,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { // cliff amount greater than vesting amount let (vesting_amount, cliff_amount, cliff_time) = (1000, 1001, 105); - let msg = - create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + let msg = create_msg(100, 110, vesting_amount, cliff_amount, cliff_time); require_error( &mut deps, &env, @@ -351,8 +328,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { // deposit amount higher than unallocated let (vesting_amount, cliff_amount, cliff_time) = (10000, 250, 105); - let msg = - create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + let msg = create_msg(100, 110, vesting_amount, cliff_amount, cliff_time); require_error( &mut deps, &env, @@ -363,8 +339,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { // valid amount let (vesting_amount, cliff_amount, cliff_time) = (1000, 250, 105); - let msg = - create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + let msg = create_msg(100, 110, vesting_amount, cliff_amount, cliff_time); let res = execute(deps.as_mut(), env.clone(), mock_info("addr0000", &[]), msg)?; @@ -401,19 +376,17 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { RewardUserRequest { user_address: "addr0002".to_string(), vesting_amount: Uint128::new(vesting_amount), - cliff_amount: Some(Uint128::new(cliff_amount)), + cliff_amount: Uint128::new(cliff_amount), }, RewardUserRequest { user_address: "addr0002".to_string(), vesting_amount: Uint128::new(vesting_amount), - cliff_amount: Some(Uint128::new(cliff_amount)), + cliff_amount: Uint128::new(cliff_amount), }, ], vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::zero(), - cliff_amount: Uint128::zero(), cliff_time: Uint64::new(cliff_time), }, }; @@ -465,20 +438,18 @@ fn test_withdraw() -> TestResult { let create_msg = |start_time: u64, end_time: u64, vesting_amount: u128, - cliff_amount: Option, + cliff_amount: u128, cliff_time: u64| -> ExecuteMsg { ExecuteMsg::RewardUsers { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(vesting_amount), - cliff_amount: cliff_amount.map(Uint128::new), + cliff_amount: Uint128::new(cliff_amount), }], vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(start_time), end_time: Uint64::new(end_time), - vesting_amount: Uint128::zero(), - cliff_amount: Uint128::zero(), cliff_time: Uint64::new(cliff_time), }, } @@ -486,8 +457,7 @@ fn test_withdraw() -> TestResult { // valid amount let (vesting_amount, cliff_amount, cliff_time) = (1000, 250, 105); - let msg = - create_msg(100, 110, vesting_amount, Some(cliff_amount), cliff_time); + let msg = create_msg(100, 110, vesting_amount, cliff_amount, cliff_time); let _res = execute(deps.as_mut(), env.clone(), mock_info("addr0000", &[]), msg)?; @@ -590,12 +560,12 @@ fn register_vesting_account_with_native_token() -> TestResult { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::zero(), - cliff_amount: None, + cliff_amount: Uint128::zero(), }], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::zero(), + cliff_time: Uint64::new(105), }, }; @@ -612,12 +582,12 @@ fn register_vesting_account_with_native_token() -> TestResult { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(1000001u128), - cliff_amount: None, + cliff_amount: Uint128::zero(), }], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), + cliff_time: Uint64::new(105), }, }; let info = mock_info("addr0000", &[]); @@ -635,18 +605,18 @@ fn register_vesting_account_with_native_token() -> TestResult { RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(1000u128), - cliff_amount: None, + cliff_amount: Uint128::zero(), }, RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(1u128), - cliff_amount: None, + cliff_amount: Uint128::zero(), }, ], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), + cliff_time: Uint64::new(105), }, }; let info = mock_info("addr0000", &[]); @@ -663,12 +633,12 @@ fn register_vesting_account_with_native_token() -> TestResult { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(100u128), - cliff_amount: None, + cliff_amount: Uint128::zero(), }], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(100u128), + cliff_time: Uint64::new(105), }, }; let info = mock_info("addr0000", &[Coin::new(1000u128, "uusd")]); @@ -712,10 +682,11 @@ fn register_vesting_account_with_native_token() -> TestResult { vesting_account: crate::state::VestingAccount { address: "addr0001".to_string(), vesting_amount: Uint128::new(100u128), - vesting_schedule: VestingSchedule::LinearVesting { + cliff_amount: Uint128::zero(), + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(100u128), + cliff_time: Uint64::new(105), }, claimed_amount: Uint128::zero(), }, @@ -749,17 +720,38 @@ fn claim_native() -> TestResult { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(1000000u128), - cliff_amount: None, + cliff_amount: Uint128::new(500000u128), }], - vesting_schedule: VestingSchedule::LinearVesting { + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), + cliff_time: Uint64::new(105), end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), }, }; let info = mock_info("addr0000", &[Coin::new(1000000u128, "uusd")]); - let _ = execute(deps.as_mut(), env.clone(), info, msg)?; + let res = execute(deps.as_mut(), env.clone(), info, msg)?; + assert_eq!( + res.attributes, + vec![ + Attribute { + key: "action".to_string(), + value: "register_vesting_account".to_string() + }, + Attribute { + key: "address".to_string(), + value: "addr0001".to_string() + }, + Attribute { + key: "vesting_amount".to_string(), + value: "1000000".to_string() + }, + Attribute { + key: "method".to_string(), + value: "reward_users".to_string() + } + ] + ); // make time to half claimable env.block.time = Timestamp::from_seconds(105); @@ -807,10 +799,11 @@ fn claim_native() -> TestResult { vesting_account: crate::state::VestingAccount { address: "addr0001".to_string(), vesting_amount: Uint128::new(1000000), - vesting_schedule: VestingSchedule::LinearVesting { + cliff_amount: Uint128::new(500000), + vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), - vesting_amount: Uint128::new(1000000u128), + cliff_time: Uint64::new(105), }, claimed_amount: Uint128::new(500000), }, From bae458367ca228fd42970694fde73be82c92f12d Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Wed, 6 Mar 2024 15:02:15 +0100 Subject: [PATCH 06/29] feat: generate all schemas at once (#125) * generate just action * move to schema base folder --- justfile | 13 +- .../airdrop-token-vesting}/execute_msg.json | 0 .../instantiate_msg.json | 0 .../airdrop-token-vesting}/query_msg.json | 0 .../vesting_account_response.json | 0 schema/core-cw3-flex-msig/execute_msg.json | 224 ++++++++++++++++++ .../core-cw3-flex-msig/instantiate_msg.json | 22 ++ schema/core-cw3-flex-msig/query_msg.json | 80 +++++++ .../vesting_account_response.json | 143 +++++++++++ schema/core-shifter/execute_msg.json | 224 ++++++++++++++++++ schema/core-shifter/instantiate_msg.json | 22 ++ schema/core-shifter/query_msg.json | 80 +++++++ .../vesting_account_response.json | 143 +++++++++++ schema/core-token-vesting/execute_msg.json | 224 ++++++++++++++++++ .../core-token-vesting/instantiate_msg.json | 22 ++ schema/core-token-vesting/query_msg.json | 80 +++++++ .../vesting_account_response.json | 143 +++++++++++ schema/incentives/execute_msg.json | 224 ++++++++++++++++++ schema/incentives/instantiate_msg.json | 22 ++ schema/incentives/query_msg.json | 80 +++++++ .../incentives/vesting_account_response.json | 143 +++++++++++ schema/lockup/execute_msg.json | 224 ++++++++++++++++++ schema/lockup/instantiate_msg.json | 22 ++ schema/lockup/query_msg.json | 80 +++++++ schema/lockup/vesting_account_response.json | 143 +++++++++++ schema/nibi-stargate-perp/execute_msg.json | 224 ++++++++++++++++++ .../nibi-stargate-perp/instantiate_msg.json | 22 ++ schema/nibi-stargate-perp/query_msg.json | 80 +++++++ .../vesting_account_response.json | 143 +++++++++++ schema/nibi-stargate/execute_msg.json | 224 ++++++++++++++++++ schema/nibi-stargate/instantiate_msg.json | 22 ++ schema/nibi-stargate/query_msg.json | 80 +++++++ .../vesting_account_response.json | 143 +++++++++++ schema/nusd-valuator/execute_msg.json | 224 ++++++++++++++++++ schema/nusd-valuator/instantiate_msg.json | 22 ++ schema/nusd-valuator/query_msg.json | 80 +++++++ .../vesting_account_response.json | 143 +++++++++++ schema/pricefeed/execute_msg.json | 224 ++++++++++++++++++ schema/pricefeed/instantiate_msg.json | 22 ++ schema/pricefeed/query_msg.json | 80 +++++++ .../pricefeed/vesting_account_response.json | 143 +++++++++++ 41 files changed, 4233 insertions(+), 1 deletion(-) rename {contracts/airdrop-token-vesting/schema => schema/airdrop-token-vesting}/execute_msg.json (100%) rename {contracts/airdrop-token-vesting/schema => schema/airdrop-token-vesting}/instantiate_msg.json (100%) rename {contracts/airdrop-token-vesting/schema => schema/airdrop-token-vesting}/query_msg.json (100%) rename {contracts/airdrop-token-vesting/schema => schema/airdrop-token-vesting}/vesting_account_response.json (100%) create mode 100644 schema/core-cw3-flex-msig/execute_msg.json create mode 100644 schema/core-cw3-flex-msig/instantiate_msg.json create mode 100644 schema/core-cw3-flex-msig/query_msg.json create mode 100644 schema/core-cw3-flex-msig/vesting_account_response.json create mode 100644 schema/core-shifter/execute_msg.json create mode 100644 schema/core-shifter/instantiate_msg.json create mode 100644 schema/core-shifter/query_msg.json create mode 100644 schema/core-shifter/vesting_account_response.json create mode 100644 schema/core-token-vesting/execute_msg.json create mode 100644 schema/core-token-vesting/instantiate_msg.json create mode 100644 schema/core-token-vesting/query_msg.json create mode 100644 schema/core-token-vesting/vesting_account_response.json create mode 100644 schema/incentives/execute_msg.json create mode 100644 schema/incentives/instantiate_msg.json create mode 100644 schema/incentives/query_msg.json create mode 100644 schema/incentives/vesting_account_response.json create mode 100644 schema/lockup/execute_msg.json create mode 100644 schema/lockup/instantiate_msg.json create mode 100644 schema/lockup/query_msg.json create mode 100644 schema/lockup/vesting_account_response.json create mode 100644 schema/nibi-stargate-perp/execute_msg.json create mode 100644 schema/nibi-stargate-perp/instantiate_msg.json create mode 100644 schema/nibi-stargate-perp/query_msg.json create mode 100644 schema/nibi-stargate-perp/vesting_account_response.json create mode 100644 schema/nibi-stargate/execute_msg.json create mode 100644 schema/nibi-stargate/instantiate_msg.json create mode 100644 schema/nibi-stargate/query_msg.json create mode 100644 schema/nibi-stargate/vesting_account_response.json create mode 100644 schema/nusd-valuator/execute_msg.json create mode 100644 schema/nusd-valuator/instantiate_msg.json create mode 100644 schema/nusd-valuator/query_msg.json create mode 100644 schema/nusd-valuator/vesting_account_response.json create mode 100644 schema/pricefeed/execute_msg.json create mode 100644 schema/pricefeed/instantiate_msg.json create mode 100644 schema/pricefeed/query_msg.json create mode 100644 schema/pricefeed/vesting_account_response.json diff --git a/justfile b/justfile index 8151fdd..757808e 100644 --- a/justfile +++ b/justfile @@ -87,4 +87,15 @@ tidy: # Format, lint, update dependencies, and test tidy-update: build-update - just tidy \ No newline at end of file + just tidy + +gen-schema: + #!/usr/bin/env bash + for dir in contracts/*/; do + dir_name=$(basename $dir) + + echo "Generating schema for $dir" + cd $dir + cargo schema + mv ./schema ../../schema/$dir_name + done \ No newline at end of file diff --git a/contracts/airdrop-token-vesting/schema/execute_msg.json b/schema/airdrop-token-vesting/execute_msg.json similarity index 100% rename from contracts/airdrop-token-vesting/schema/execute_msg.json rename to schema/airdrop-token-vesting/execute_msg.json diff --git a/contracts/airdrop-token-vesting/schema/instantiate_msg.json b/schema/airdrop-token-vesting/instantiate_msg.json similarity index 100% rename from contracts/airdrop-token-vesting/schema/instantiate_msg.json rename to schema/airdrop-token-vesting/instantiate_msg.json diff --git a/contracts/airdrop-token-vesting/schema/query_msg.json b/schema/airdrop-token-vesting/query_msg.json similarity index 100% rename from contracts/airdrop-token-vesting/schema/query_msg.json rename to schema/airdrop-token-vesting/query_msg.json diff --git a/contracts/airdrop-token-vesting/schema/vesting_account_response.json b/schema/airdrop-token-vesting/vesting_account_response.json similarity index 100% rename from contracts/airdrop-token-vesting/schema/vesting_account_response.json rename to schema/airdrop-token-vesting/vesting_account_response.json diff --git a/schema/core-cw3-flex-msig/execute_msg.json b/schema/core-cw3-flex-msig/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/core-cw3-flex-msig/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-cw3-flex-msig/instantiate_msg.json b/schema/core-cw3-flex-msig/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/core-cw3-flex-msig/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/core-cw3-flex-msig/query_msg.json b/schema/core-cw3-flex-msig/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/core-cw3-flex-msig/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-cw3-flex-msig/vesting_account_response.json b/schema/core-cw3-flex-msig/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/core-cw3-flex-msig/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-shifter/execute_msg.json b/schema/core-shifter/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/core-shifter/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-shifter/instantiate_msg.json b/schema/core-shifter/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/core-shifter/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/core-shifter/query_msg.json b/schema/core-shifter/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/core-shifter/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-shifter/vesting_account_response.json b/schema/core-shifter/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/core-shifter/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-token-vesting/execute_msg.json b/schema/core-token-vesting/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/core-token-vesting/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-token-vesting/instantiate_msg.json b/schema/core-token-vesting/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/core-token-vesting/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/core-token-vesting/query_msg.json b/schema/core-token-vesting/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/core-token-vesting/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/core-token-vesting/vesting_account_response.json b/schema/core-token-vesting/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/core-token-vesting/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/incentives/execute_msg.json b/schema/incentives/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/incentives/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/incentives/instantiate_msg.json b/schema/incentives/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/incentives/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/incentives/query_msg.json b/schema/incentives/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/incentives/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/incentives/vesting_account_response.json b/schema/incentives/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/incentives/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/lockup/execute_msg.json b/schema/lockup/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/lockup/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/lockup/instantiate_msg.json b/schema/lockup/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/lockup/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/lockup/query_msg.json b/schema/lockup/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/lockup/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/lockup/vesting_account_response.json b/schema/lockup/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/lockup/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nibi-stargate-perp/execute_msg.json b/schema/nibi-stargate-perp/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/nibi-stargate-perp/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nibi-stargate-perp/instantiate_msg.json b/schema/nibi-stargate-perp/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/nibi-stargate-perp/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/nibi-stargate-perp/query_msg.json b/schema/nibi-stargate-perp/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/nibi-stargate-perp/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nibi-stargate-perp/vesting_account_response.json b/schema/nibi-stargate-perp/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/nibi-stargate-perp/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nibi-stargate/execute_msg.json b/schema/nibi-stargate/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/nibi-stargate/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nibi-stargate/instantiate_msg.json b/schema/nibi-stargate/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/nibi-stargate/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/nibi-stargate/query_msg.json b/schema/nibi-stargate/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/nibi-stargate/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nibi-stargate/vesting_account_response.json b/schema/nibi-stargate/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/nibi-stargate/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nusd-valuator/execute_msg.json b/schema/nusd-valuator/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/nusd-valuator/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nusd-valuator/instantiate_msg.json b/schema/nusd-valuator/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/nusd-valuator/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/nusd-valuator/query_msg.json b/schema/nusd-valuator/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/nusd-valuator/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/nusd-valuator/vesting_account_response.json b/schema/nusd-valuator/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/nusd-valuator/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/pricefeed/execute_msg.json b/schema/pricefeed/execute_msg.json new file mode 100644 index 0000000..58d45c7 --- /dev/null +++ b/schema/pricefeed/execute_msg.json @@ -0,0 +1,224 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", + "oneOf": [ + { + "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", + "type": "object", + "required": [ + "reward_users" + ], + "properties": { + "reward_users": { + "type": "object", + "required": [ + "rewards", + "vesting_schedule" + ], + "properties": { + "rewards": { + "type": "array", + "items": { + "$ref": "#/definitions/RewardUserRequest" + } + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", + "type": "object", + "required": [ + "deregister_vesting_account" + ], + "properties": { + "deregister_vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "left_vesting_token_recipient": { + "type": [ + "string", + "null" + ] + }, + "vested_token_recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "description": "Claim is an operation that allows one to claim vested tokens.", + "type": "object", + "required": [ + "claim" + ], + "properties": { + "claim": { + "type": "object", + "properties": { + "recipient": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "withdraw" + ], + "properties": { + "withdraw": { + "type": "object", + "required": [ + "amount", + "recipient" + ], + "properties": { + "amount": { + "$ref": "#/definitions/Uint128" + }, + "recipient": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "RewardUserRequest": { + "type": "object", + "required": [ + "user_address", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "anyOf": [ + { + "$ref": "#/definitions/Uint128" + }, + { + "type": "null" + } + ] + }, + "user_address": { + "type": "string" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + }, + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/pricefeed/instantiate_msg.json b/schema/pricefeed/instantiate_msg.json new file mode 100644 index 0000000..86caf63 --- /dev/null +++ b/schema/pricefeed/instantiate_msg.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "description": "Structure for the message that instantiates the smart contract.", + "type": "object", + "required": [ + "admin", + "managers" + ], + "properties": { + "admin": { + "type": "string" + }, + "managers": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/schema/pricefeed/query_msg.json b/schema/pricefeed/query_msg.json new file mode 100644 index 0000000..10a7347 --- /dev/null +++ b/schema/pricefeed/query_msg.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "description": "Enum representing the message types for the query entry point.", + "oneOf": [ + { + "type": "object", + "required": [ + "vesting_account" + ], + "properties": { + "vesting_account": { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "type": "string" + }, + "limit": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "start_after": { + "anyOf": [ + { + "$ref": "#/definitions/Denom" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Addr": { + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", + "type": "string" + }, + "Denom": { + "oneOf": [ + { + "type": "object", + "required": [ + "native" + ], + "properties": { + "native": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "cw20" + ], + "properties": { + "cw20": { + "$ref": "#/definitions/Addr" + } + }, + "additionalProperties": false + } + ] + } + } +} diff --git a/schema/pricefeed/vesting_account_response.json b/schema/pricefeed/vesting_account_response.json new file mode 100644 index 0000000..026467e --- /dev/null +++ b/schema/pricefeed/vesting_account_response.json @@ -0,0 +1,143 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "VestingAccountResponse", + "type": "object", + "required": [ + "address", + "vesting" + ], + "properties": { + "address": { + "type": "string" + }, + "vesting": { + "$ref": "#/definitions/VestingData" + } + }, + "additionalProperties": false, + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + }, + "Uint64": { + "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", + "type": "string" + }, + "VestingAccount": { + "type": "object", + "required": [ + "address", + "claimed_amount", + "vesting_amount", + "vesting_schedule" + ], + "properties": { + "address": { + "type": "string" + }, + "claimed_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_schedule": { + "$ref": "#/definitions/VestingSchedule" + } + }, + "additionalProperties": false + }, + "VestingData": { + "type": "object", + "required": [ + "claimable_amount", + "vested_amount", + "vesting_account" + ], + "properties": { + "claimable_amount": { + "$ref": "#/definitions/Uint128" + }, + "vested_amount": { + "$ref": "#/definitions/Uint128" + }, + "vesting_account": { + "$ref": "#/definitions/VestingAccount" + } + }, + "additionalProperties": false + }, + "VestingSchedule": { + "oneOf": [ + { + "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", + "type": "object", + "required": [ + "linear_vesting" + ], + "properties": { + "linear_vesting": { + "type": "object", + "required": [ + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "linear_vesting_with_cliff" + ], + "properties": { + "linear_vesting_with_cliff": { + "type": "object", + "required": [ + "cliff_amount", + "cliff_time", + "end_time", + "start_time", + "vesting_amount" + ], + "properties": { + "cliff_amount": { + "$ref": "#/definitions/Uint128" + }, + "cliff_time": { + "$ref": "#/definitions/Uint64" + }, + "end_time": { + "$ref": "#/definitions/Uint64" + }, + "start_time": { + "$ref": "#/definitions/Uint64" + }, + "vesting_amount": { + "$ref": "#/definitions/Uint128" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + } + } +} From 55404f22bd77fc6905d443703d4b125a430fb0be Mon Sep 17 00:00:00 2001 From: Matthias <97468149+matthiasmatt@users.noreply.github.com> Date: Wed, 6 Mar 2024 17:14:21 +0100 Subject: [PATCH 07/29] fix: normalize query output for vesting contracts (#130) * fix: make new contract with the same query output format as the previous one * docs(cw3-flex-msig): Add usage guide to README * clean: ignore schema directories * clean: ignore schema directories * chore: run cargo b + tidy wip! * chore(artifacts): tidy + wasm-all --------- Co-authored-by: Unique Divine --- .gitignore | 4 + Cargo.lock | 552 ++++++++++-------- Cookbook.md | 391 +++---------- artifacts/airdrop_token_vesting.wasm | Bin 215280 -> 215354 bytes artifacts/checksums.txt | 21 +- artifacts/cw3_flex_multisig.wasm | Bin 387454 -> 398376 bytes artifacts/incentives.wasm | Bin 238405 -> 243286 bytes artifacts/lockup.wasm | Bin 193952 -> 198308 bytes artifacts/nibi_stargate.wasm | Bin 159869 -> 163509 bytes artifacts/nibi_stargate_perp.wasm | Bin 208709 -> 214880 bytes artifacts/nusd_valuator.wasm | Bin 204619 -> 210848 bytes artifacts/pricefeed.wasm | Bin 210744 -> 215298 bytes artifacts/shifter.wasm | Bin 210914 -> 216527 bytes artifacts/token_vesting.wasm | Bin 205359 -> 210485 bytes .../airdrop-token-vesting/src/contract.rs | 46 +- contracts/airdrop-token-vesting/src/msg.rs | 45 +- .../airdrop-token-vesting/src/testing.rs | 44 +- contracts/core-cw3-flex-msig/README.md | 202 ++++++- .../schema/cw20_hook_msg.json | 119 ---- .../schema/execute_msg.json | 257 -------- .../schema/instantiate_msg.json | 6 - .../core-token-vesting/schema/query_msg.json | 79 --- .../schema/vesting_account_response.json | 168 ------ nibiru-std/src/proto/buf/nibiru.oracle.v1.rs | 227 ++++--- schema/airdrop-token-vesting/execute_msg.json | 224 ------- .../instantiate_msg.json | 22 - schema/airdrop-token-vesting/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/core-cw3-flex-msig/execute_msg.json | 224 ------- .../core-cw3-flex-msig/instantiate_msg.json | 22 - schema/core-cw3-flex-msig/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/core-shifter/execute_msg.json | 224 ------- schema/core-shifter/instantiate_msg.json | 22 - schema/core-shifter/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/core-token-vesting/execute_msg.json | 224 ------- .../core-token-vesting/instantiate_msg.json | 22 - schema/core-token-vesting/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/incentives/execute_msg.json | 224 ------- schema/incentives/instantiate_msg.json | 22 - schema/incentives/query_msg.json | 80 --- .../incentives/vesting_account_response.json | 143 ----- schema/lockup/execute_msg.json | 224 ------- schema/lockup/instantiate_msg.json | 22 - schema/lockup/query_msg.json | 80 --- schema/lockup/vesting_account_response.json | 143 ----- schema/nibi-stargate-perp/execute_msg.json | 224 ------- .../nibi-stargate-perp/instantiate_msg.json | 22 - schema/nibi-stargate-perp/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/nibi-stargate/execute_msg.json | 224 ------- schema/nibi-stargate/instantiate_msg.json | 22 - schema/nibi-stargate/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/nusd-valuator/execute_msg.json | 224 ------- schema/nusd-valuator/instantiate_msg.json | 22 - schema/nusd-valuator/query_msg.json | 80 --- .../vesting_account_response.json | 143 ----- schema/pricefeed/execute_msg.json | 224 ------- schema/pricefeed/instantiate_msg.json | 22 - schema/pricefeed/query_msg.json | 80 --- .../pricefeed/vesting_account_response.json | 143 ----- 64 files changed, 795 insertions(+), 6056 deletions(-) delete mode 100644 contracts/core-token-vesting/schema/cw20_hook_msg.json delete mode 100644 contracts/core-token-vesting/schema/execute_msg.json delete mode 100644 contracts/core-token-vesting/schema/instantiate_msg.json delete mode 100644 contracts/core-token-vesting/schema/query_msg.json delete mode 100644 contracts/core-token-vesting/schema/vesting_account_response.json delete mode 100644 schema/airdrop-token-vesting/execute_msg.json delete mode 100644 schema/airdrop-token-vesting/instantiate_msg.json delete mode 100644 schema/airdrop-token-vesting/query_msg.json delete mode 100644 schema/airdrop-token-vesting/vesting_account_response.json delete mode 100644 schema/core-cw3-flex-msig/execute_msg.json delete mode 100644 schema/core-cw3-flex-msig/instantiate_msg.json delete mode 100644 schema/core-cw3-flex-msig/query_msg.json delete mode 100644 schema/core-cw3-flex-msig/vesting_account_response.json delete mode 100644 schema/core-shifter/execute_msg.json delete mode 100644 schema/core-shifter/instantiate_msg.json delete mode 100644 schema/core-shifter/query_msg.json delete mode 100644 schema/core-shifter/vesting_account_response.json delete mode 100644 schema/core-token-vesting/execute_msg.json delete mode 100644 schema/core-token-vesting/instantiate_msg.json delete mode 100644 schema/core-token-vesting/query_msg.json delete mode 100644 schema/core-token-vesting/vesting_account_response.json delete mode 100644 schema/incentives/execute_msg.json delete mode 100644 schema/incentives/instantiate_msg.json delete mode 100644 schema/incentives/query_msg.json delete mode 100644 schema/incentives/vesting_account_response.json delete mode 100644 schema/lockup/execute_msg.json delete mode 100644 schema/lockup/instantiate_msg.json delete mode 100644 schema/lockup/query_msg.json delete mode 100644 schema/lockup/vesting_account_response.json delete mode 100644 schema/nibi-stargate-perp/execute_msg.json delete mode 100644 schema/nibi-stargate-perp/instantiate_msg.json delete mode 100644 schema/nibi-stargate-perp/query_msg.json delete mode 100644 schema/nibi-stargate-perp/vesting_account_response.json delete mode 100644 schema/nibi-stargate/execute_msg.json delete mode 100644 schema/nibi-stargate/instantiate_msg.json delete mode 100644 schema/nibi-stargate/query_msg.json delete mode 100644 schema/nibi-stargate/vesting_account_response.json delete mode 100644 schema/nusd-valuator/execute_msg.json delete mode 100644 schema/nusd-valuator/instantiate_msg.json delete mode 100644 schema/nusd-valuator/query_msg.json delete mode 100644 schema/nusd-valuator/vesting_account_response.json delete mode 100644 schema/pricefeed/execute_msg.json delete mode 100644 schema/pricefeed/instantiate_msg.json delete mode 100644 schema/pricefeed/query_msg.json delete mode 100644 schema/pricefeed/vesting_account_response.json diff --git a/.gitignore b/.gitignore index bab7ff1..82f0831 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Generated smart contract schema JSON types +schema +contracts/*/schema + ### Rust ### # Generated by Cargo # will have compiled files and executables diff --git a/Cargo.lock b/Cargo.lock index 01c444e..028bbd5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ "getrandom", "once_cell", @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.5" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" dependencies = [ "anstyle", "anstyle-parse", @@ -69,9 +69,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" @@ -103,9 +103,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.76" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d2a3357dde987206219e78ecfbbb6e8dad06cbb65292758d3270e6254f7355" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" dependencies = [ "backtrace", ] @@ -118,9 +118,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.12" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" +checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" dependencies = [ "anstyle", "bstr", @@ -160,9 +160,9 @@ checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -195,9 +195,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bitvec" @@ -231,15 +231,15 @@ dependencies = [ [[package]] name = "bnum" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" +checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" [[package]] name = "bstr" -version = "1.8.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "regex-automata", @@ -248,15 +248,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "bytecheck" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -265,9 +265,9 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ "proc-macro2", "quote", @@ -288,12 +288,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723" [[package]] name = "cfg-if" @@ -303,9 +300,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.4.11" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" dependencies = [ "clap_builder", "clap_derive", @@ -313,9 +310,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.11" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" dependencies = [ "anstream", "anstyle", @@ -325,21 +322,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "clru" @@ -403,9 +400,9 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bb3c77c3b7ce472056968c745eb501c440fbc07be5004eba02782c35bfbbe3" +checksum = "9934c79e58d9676edfd592557dee765d2a6ef54c09d5aa2edb06156b00148966" dependencies = [ "digest 0.10.7", "ecdsa", @@ -417,18 +414,18 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea73e9162e6efde00018d55ed0061e93a108b5d6ec4548b4f8ce3c706249687" +checksum = "bc5e72e330bd3bdab11c52b5ecbdeb6a8697a004c57964caeb5d876f0b088b3c" dependencies = [ "syn 1.0.109", ] [[package]] name = "cosmwasm-schema" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df41ea55f2946b6b43579659eec048cc2f66e8c8e2e3652fc5e5e476f673856" +checksum = "ac3e3a2136e2a60e8b6582f5dffca5d1a683ed77bf38537d330bc1dfccd69010" dependencies = [ "cosmwasm-schema-derive", "schemars", @@ -439,9 +436,9 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43609e92ce1b9368aa951b334dd354a2d0dd4d484931a5f83ae10e12a26c8ba9" +checksum = "f5d803bea6bd9ed61bd1ee0b4a2eb09ee20dbb539cc6e0b8795614d20952ebb1" dependencies = [ "proc-macro2", "quote", @@ -450,9 +447,9 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d6864742e3a7662d024b51a94ea81c9af21db6faea2f9a6d2232bb97c6e53e" +checksum = "ef8666e572a3a2519010dde88c04d16e9339ae751b56b2bb35081fe3f7d6be74" dependencies = [ "base64", "bech32", @@ -464,7 +461,7 @@ dependencies = [ "hex", "schemars", "serde", - "serde-json-wasm 0.5.1", + "serde-json-wasm 0.5.2", "sha2 0.10.8", "static_assertions", "thiserror", @@ -472,9 +469,9 @@ dependencies = [ [[package]] name = "cosmwasm-vm" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce190445de4a64d1b046f453b1f52e1e3df1fb481ad5cb039f82d7d47375cb9" +checksum = "011bc44b0d617f440ea509b38e543437511a196c6e2a0ebd3425edd912902fb2" dependencies = [ "bitflags 1.3.2", "bytecheck", @@ -497,9 +494,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -589,53 +586,46 @@ checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.17" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e3681d554572a651dda4186cd47240627c3d0114d45a95f6ad27f2f22e7548d" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc6598521bb5a83d491e8c1fe51db7296019d2ca3cb93cc6c2a20369a4d78a2" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.18" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crypto-bigint" @@ -727,7 +717,7 @@ dependencies = [ "cw-storage-plus", "cw-utils", "derivative", - "itertools 0.12.0", + "itertools 0.12.1", "prost", "schemars", "serde", @@ -918,9 +908,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ "darling_core", "darling_macro", @@ -928,26 +918,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -1019,9 +1009,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "dynasm" @@ -1049,6 +1039,21 @@ dependencies = [ "memmap2 0.5.10", ] +[[package]] +name = "e2e-tests" +version = "0.1.0" +dependencies = [ + "anyhow", + "bash-rs", + "cosmwasm-schema", + "cosmwasm-std", + "home", + "serde", + "serde_json", + "thiserror", + "toml", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -1080,9 +1085,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "elliptic-curve" @@ -1150,7 +1155,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -1303,9 +1308,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1342,9 +1347,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1352,7 +1357,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.1.0", + "indexmap 2.2.5", "slab", "tokio", "tokio-util", @@ -1382,9 +1387,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -1412,9 +1417,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1511,7 +1516,7 @@ dependencies = [ "lockup", "schemars", "serde", - "serde-json-wasm 1.0.0", + "serde-json-wasm 1.0.1", "thiserror", ] @@ -1527,9 +1532,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -1552,9 +1557,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -1567,18 +1572,18 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f01b677d82ef7a676aa37e099defd83a28e15687112cafdd112d60236b6115b" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if", "ecdsa", @@ -1602,15 +1607,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1639,9 +1644,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "mach" @@ -1654,9 +1659,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" @@ -1693,18 +1698,18 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -1842,17 +1847,17 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.62" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cfg-if", "foreign-types", "libc", @@ -1869,7 +1874,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -1880,9 +1885,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.98" +version = "0.9.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7" +checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" dependencies = [ "cc", "libc", @@ -1933,19 +1938,18 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "predicates" -version = "3.0.4" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" +checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" dependencies = [ "anstyle", "difflib", - "itertools 0.11.0", "predicates-core", ] @@ -2006,9 +2010,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.71" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2033,7 +2037,7 @@ dependencies = [ "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -2067,9 +2071,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2097,9 +2101,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" dependencies = [ "either", "rayon-core", @@ -2107,9 +2111,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2138,9 +2142,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2150,9 +2154,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -2179,18 +2183,18 @@ dependencies = [ [[package]] name = "rend" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.23" +version = "0.11.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" +checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" dependencies = [ "base64", "bytes", @@ -2210,9 +2214,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -2236,9 +2242,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.43" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ "bitvec", "bytecheck", @@ -2255,9 +2261,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.43" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" dependencies = [ "proc-macro2", "quote", @@ -2272,22 +2278,31 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", "windows-sys 0.52.0", ] +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "same-file" @@ -2300,11 +2315,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2402,33 +2417,33 @@ checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" [[package]] name = "semver" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde-json-wasm" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" +checksum = "9e9213a07d53faa0b8dd81e767a54a8188a242fdb9be99ab75ec576a774bfdd7" dependencies = [ "serde", ] [[package]] name = "serde-json-wasm" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c37d03f3b0f6b5f77c11af1e7c772de1c9af83e50bef7bb6069601900ba67b" +checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5" dependencies = [ "serde", ] @@ -2446,13 +2461,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -2468,15 +2483,24 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2572,18 +2596,18 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2610,9 +2634,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "subtle" @@ -2633,15 +2657,21 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "system-configuration" version = "0.5.1" @@ -2671,21 +2701,20 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.12" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2696,22 +2725,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -2747,9 +2776,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -2785,6 +2814,40 @@ dependencies = [ "tracing", ] +[[package]] +name = "toml" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +dependencies = [ + "indexmap 2.2.5", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "tower-service" version = "0.3.2" @@ -2810,7 +2873,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", ] [[package]] @@ -2836,9 +2899,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -2848,9 +2911,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -2874,9 +2937,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" [[package]] name = "vcpkg" @@ -2901,9 +2964,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2926,9 +2989,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2936,16 +2999,16 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", "wasm-bindgen-shared", ] @@ -2974,9 +3037,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -2986,9 +3049,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2996,22 +3059,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.52", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasmer" @@ -3186,9 +3249,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -3253,7 +3316,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.4", ] [[package]] @@ -3273,17 +3336,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -3294,9 +3357,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -3312,9 +3375,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -3330,9 +3393,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -3348,9 +3411,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -3366,9 +3429,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" @@ -3378,9 +3441,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -3396,9 +3459,18 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +dependencies = [ + "memchr", +] [[package]] name = "winreg" diff --git a/Cookbook.md b/Cookbook.md index 046c704..e319366 100644 --- a/Cookbook.md +++ b/Cookbook.md @@ -3,202 +3,43 @@ This file describes the different messages that can be sent as queries or transactions to the contracts of this repository with a description of the expected behavior. -## 1. Core cw3 flex multisig - -This contract is a multisig contract that is backed by a cw4 (group) contract, which independently maintains the voter set. - -### 1.1 Instantiate - -```javascript -{ - "group_addr": "cosmos1...", // this is the group contract that contains the member list - "threshold": { - "absolute_count": {"weight": 2}, - "absolute_percentage": {"percentage": 0.5}, - "threshold_quorum": { "threshold": 0.1, "quorum": 0.2 } - }, - "max_voting_period": "3600s", - // who is able to execute passed proposals - // None means that anyone can execute - "executor": {}, - /// The cost of creating a proposal (if any). - "proposal_deposit": { - "denom": "uusd", - "amount": "1000000" - }, -} -``` - -### 1.2 Execute - -- **Propose** creates a message to be executed by the multisig. It can be executed by anyone. - -```javascript -{ - "propose": { - "title": "My proposal", - "description": "This is a proposal", - "msgs": [ - { - "bank": { - "send": { - "from_address": "cosmos1...", - "to_address": "cosmos1...", - "amount": [{ "denom": "uusd", "amount": "1000000" }] - } - } - } - ], - "latest": { - "at_height": 123456 - } - } -} -``` - -- **Vote** adds a vote to an existing proposal. It can be executed by anyone. - -```javascript -{ - "vote": { - "proposal_id": 1, - "vote": "yes" - } -} -``` - -- **Execute** executes a passed proposal. It can be executed by anyone. - -```javascript -{ - "execute": { - "proposal_id": 1 - } -} -``` - -- **Close** closes an expired proposal. It can be executed by anyone. - -```javascript -{ - "close": { - "proposal_id": 1 - } -} -``` - -### 1.3 Query - -- **Threshold** returns the current threshold necessary for a proposal to be executed. - -```javascript -{ - "threshold": {} -} -``` - -- **Proposal** fetches the details of a specific proposal given its ID. - -```javascript -{ - "proposal": { - "proposal_id": 1 - } -} -``` - -- **ListProposals** lists proposals with optional pagination. `start_after` specifies the ID after which to start listing, and `limit` sets the maximum number of proposals to return. - -```javascript -{ - "list_proposals": { - "start_after": 1, - "limit": 10 - } -} -``` - -- **ReverseProposals** lists proposals in reverse order with optional pagination. `start_before` specifies the ID before which to start listing in reverse, and `limit` sets the maximum number of proposals to return. - -```javascript -{ - "reverse_proposals": { - "start_before": 10, - "limit": 10 - } -} -``` - -- **Vote** retrieves the vote details for a given proposal ID and voter address. - -```javascript -{ - "vote": { - "proposal_id": 1, - "voter": "cosmos1..." - } -} -``` - -- **ListVotes** lists votes for a given proposal, with optional pagination. `start_after` specifies the address after which to start listing votes, and `limit` sets the maximum number of votes to return. - -```javascript -{ - "list_votes": { - "proposal_id": 1, - "start_after": "cosmos1...", - "limit": 10 - } -} -``` - -- **Voter** fetches details about a specific voter by their address. - -```javascript -{ - "voter": { - "address": "cosmos1..." - } -} -``` - -- **ListVoters** lists voters with optional pagination. `start_after` specifies the address after which to start listing voters, and `limit` sets the maximum number of voters to return. - -```javascript -{ - "list_voters": { - "start_after": "cosmos1...", - "limit": 10 - } -} -``` - -- **Config** retrieves the current configuration of the system. - -```javascript -{ - "config": {} -} -``` - -## 2. Core shifter +- [Core shifter](#core-shifter) + - [Instantiate](#instantiate) + - [Execute](#execute) + - [Query](#query) +- [Core token vesting](#core-token-vesting) + - [Instantiate](#instantiate-1) + - [Execute](#execute-1) + - [Query](#query-1) +- [4. Nibi Stargate](#4-nibi-stargate) + - [4.1 Instantiate](#41-instantiate) + - [4.2 Execute](#42-execute) +- [5. Nibi Stargate Perp](#5-nibi-stargate-perp) + - [5.1 Instantiate](#51-instantiate) + - [5.2 Execute](#52-execute) +- [6. Nusd Valuator](#6-nusd-valuator) + - [6.1 Instantiate](#61-instantiate) + - [6.2 Execute](#62-execute) + - [6.3 Query](#63-query) + +## Core shifter Shifter is a simple contract that can execute peg and depth shift to any markets in the x/perp module of Nibiru. The contract holds a whitelist of addressses that are allowed to execute the shift. -### 2.1 Instantiate +### Instantiate The instantiation defines just the onwer of the contract, who wil be able to add and remove addresses from the whitelist, and execute the shifts. -```javascript +```js {"owner": "cosmos1..."} ``` -### 2.2 Execute +### Execute - **ShiftSwapInvariant** executes a depth shift in a market. -```javascript +```js { "shift_swap_invariant": { "pair": "uusd:usdr", @@ -209,7 +50,7 @@ The instantiation defines just the onwer of the contract, who wil be able to add - **ShiftPegMultiplier** executes a depth shift on a market. It can be executed by anyone. -```javascript +```js { "shift_peg_multiplier": { "pair": "ubtc:unusd", @@ -220,7 +61,7 @@ The instantiation defines just the onwer of the contract, who wil be able to add - **EditOpers** adds or removes addresses from the whitelist. It can be executed by the owner. -```javascript +```js { "edit_opers": { "add_oper": {"addr": "cosmos1..."}, @@ -229,13 +70,13 @@ The instantiation defines just the onwer of the contract, who wil be able to add } ``` -### 2.3 Query +### Query The queries have to do with checking permissions of addresses. - **HasPerms** checks if an address has permissions to execute shifts. -```javascript +```js { "has_perms": { "address": "cosmos1..." @@ -245,30 +86,29 @@ The queries have to do with checking permissions of addresses. - **Perms** query the contract owner and set of operators. -```javascript +```js { "perms": {}, } ``` -## 3. Core token vesting +## Core token vesting This contract implements vesting accounts for the CW20 and native tokens. -### 3.1 Instantiate +### Instantiate There's no instantiation message. -```javascript -{ -} +```js +{} ``` -### 3.2 Execute +### Execute - **Receive** -```javascript +```js { "receive": { "sender": "cosmos1...", @@ -280,7 +120,7 @@ There's no instantiation message. - **RegisterVestingAccount** registers a vesting account -```javascript +```js { "register_vesting_account": { "address": "cosmos1...", @@ -298,7 +138,7 @@ There's no instantiation message. - **DeregisterVestingAccount** deregisters a vesting account -```javascript +```js { "deregister_vesting_account": { "address": "cosmos1...", @@ -311,7 +151,7 @@ There's no instantiation message. - **Claim** allows to claim vested tokens -```javascript +```js { "claim": { "denom": "uusd", @@ -320,11 +160,11 @@ There's no instantiation message. } ``` -### 3.3 Query +### Query - **VestingAccount** returns the vesting account details for a given address. -```javascript +```js { "vesting_account": { "address": "cosmos1...", @@ -340,16 +180,15 @@ This smart contract showcases usage examples for certain Nibiru-specific and Cos There's no instantiation message. -```javascript -{ -} +```js +{} ``` ### 4.2 Execute - **CreateDenom** creates a new denom -```javascript +```js { "create_denom": { "subdenom": "zzz" } } @@ -357,34 +196,34 @@ There's no instantiation message. - **Mint** mints tokens -```javascript -{ - "mint": { - "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, - "mint_to": "[mint-to-addr]" - } +```js +{ + "mint": { + "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, + "mint_to": "[mint-to-addr]" + } } ``` - **Burn** burns tokens -```javascript -{ - "burn": { - "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, - "burn_from": "[burn-from-addr]" - } +```js +{ + "burn": { + "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, + "burn_from": "[burn-from-addr]" + } } ``` - **ChangeAdmin** changes the admin of a denom -```javascript -{ - "change_admin": { - "denom": "tf/[contract-addr]/[subdenom]", - "new_admin": "[ADDR]" - } +```js +{ + "change_admin": { + "denom": "tf/[contract-addr]/[subdenom]", + "new_admin": "[ADDR]" + } } ``` @@ -396,7 +235,7 @@ This smart contract showcases usage examples for certain Nibiru-specific for the The instantiation defines the owner of the contract, who will be able to add and remove addresses from the whitelist, and execute the shifts. -```javascript +```js { "admin": "cosmos1...", } @@ -406,7 +245,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **MarketOrder** places a market order for a specified trading pair. `pair` indicates the trading pair, `is_long` determines if it's a long or short order, `quote_amount` is the amount in the quote currency, `leverage` specifies the leverage to apply, and `base_amount_limit` sets a limit for the amount in the base currency. -```javascript +```js { "market_order": { "pair": "BTC/USDT", @@ -420,7 +259,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **ClosePosition** closes an open position for a specified trading pair. -```javascript +```js { "close_position": { "pair": "BTC/USDT" @@ -430,7 +269,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **AddMargin** adds margin to an existing position for a specified trading pair. `margin` is the amount of additional margin to add. -```javascript +```js { "add_margin": { "pair": "BTC/USDT", @@ -441,7 +280,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **RemoveMargin** removes margin from an existing position for a specified trading pair. `margin` is the amount of margin to remove. -```javascript +```js { "remove_margin": { "pair": "BTC/USDT", @@ -452,7 +291,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **MultiLiquidate** triggers multiple liquidations based on the provided arguments. `liquidations` is a list of liquidation arguments specifying the details for each liquidation. -```javascript +```js { "multi_liquidate": { "liquidations": [ @@ -471,7 +310,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **DonateToInsuranceFund** allows donation to the insurance fund. `donation` is the coin and amount to donate. -```javascript +```js { "donate_to_insurance_fund": { "donation": {"denom": "usdt", "amount": "100000"} @@ -481,7 +320,7 @@ The instantiation defines the owner of the contract, who will be able to add and - **Claim** facilitates the claiming of funds. `funds` is an optional field specifying a particular coin and amount to claim, `claim_all` is an optional flag to claim all funds, and `to` is the address to which the funds will be sent. -```javascript +```js { "claim": { "funds": {"denom": "usdt", "amount": "100000"}, @@ -501,7 +340,7 @@ This smart contract is a simple valuator for the nusd token, which takes one col The owner is the only one who can execute messages in the contract -```javascript +```js { "owner": "cosmos1...", "accepted_denoms": "uusdc", @@ -512,7 +351,7 @@ The owner is the only one who can execute messages in the contract - **ChangeDenom** updates the accepted denoms -```javascript +```js { "change_denom": { "from: "uusdc", @@ -523,7 +362,7 @@ The owner is the only one who can execute messages in the contract - **AddDenom** adds a new accepted denom -```javascript +```js { "add_denom": { "denom": "uusd", @@ -533,7 +372,7 @@ The owner is the only one who can execute messages in the contract - **RemoveDenom** removes an accepted denom -```javascript +```js { "remove_denom": { "denom": "uusd", @@ -545,7 +384,7 @@ The owner is the only one who can execute messages in the contract - **Mintable** queries the amount of μNUSD that can be minted in exchange for the specified set of `from_coins`. -```javascript +```js { "mintable": { "from_coins": ["BTC", "ETH"] @@ -555,7 +394,7 @@ The owner is the only one who can execute messages in the contract - **Redeemable** calculates the amount of a specified `to_denom` currency that is redeemable for a given `redeem_amount` of μNUSD. -```javascript +```js { "redeemable": { "redeem_amount": "1000000", @@ -566,7 +405,7 @@ The owner is the only one who can execute messages in the contract - **AcceptedDenoms** retrieves the set of token denominations that are accepted as collateral. -```javascript +```js { "accepted_denoms": {} } @@ -574,84 +413,10 @@ The owner is the only one who can execute messages in the contract - **RedeemableChoices** provides a set of possible redeemable coin options that could be received when redeeming a specified `redeem_amount` of μNUSD. -```javascript +```js { "redeemable_choices": { "redeem_amount": "1000000" } } -``` - -## 7. Airdrop token vesting - -This contract implements vesting accounts for the native tokens. - -### 7.1 Instantiate - -We need to specify admin and managers - -```javascript -{ - "admin": "cosmos1...", - "managers": ["cosmos1...", "cosmos1..."] -} -``` - -### 7.2 Execute - -- **RewardUsers** registers several vesting contracts - -```javascript -{ - "reward_users": { - "rewards": [ - { - "user_address": "cosmos1...", - "vesting_amount": "1000000", - "cliff_amount": "100000", // Only needed if vesting schedule is linear with cliff - } - ], - "vesting_schedule": { - "linear_vesting": { - "start_time": "1703772805", - "end_time": "1703872805", - "vesting_amount": "0" // This amount does not matter - } - } - } -} -``` - -- **DeregisterVestingAccount** deregisters a vesting account - -```javascript -{ - "deregister_vesting_account": { - "address": "cosmos1...", - "vested_token_recipient": "cosmos1...", // address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - "left_vested_token_recipient": "cosmos1...", // address that will receive the left vesting tokens after deregistration. - } -} -``` - -- **Claim** allows to claim vested tokens - -```javascript -{ - "claim": { - "recipient": "cosmos1...", - } -} -``` - -### 7.3 Query - -- **VestingAccount** returns the vesting account details for a given address. - -```javascript -{ - "vesting_account": { - "address": "cosmos1...", - } -} -``` +``` \ No newline at end of file diff --git a/artifacts/airdrop_token_vesting.wasm b/artifacts/airdrop_token_vesting.wasm index ebfaefc12cf93048b50a1d3ebb8dc36691b74b2c..e53dd648b857cc7d61fb9b795bd19ce92fbbb9e8 100644 GIT binary patch literal 215354 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≷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

G$)fOxKBDal3)Ih-+ZPY{V-^=|o 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%0ACZrlTdKOfy3a&(b)t522zCx1v5T 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

Q@~=xDxYjZrbxXpISbF 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 literal 387454 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 R%KZNj%AqPPLFnFG_CFtbiJbrd diff --git a/artifacts/incentives.wasm b/artifacts/incentives.wasm index cb6ac808c918f3e82cc0d2091b7d54cc9fd2b5fe..2bbfd3069623eda5f9708dd908975ccf990499e8 100644 GIT binary patch delta 96390 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 diff --git a/artifacts/lockup.wasm b/artifacts/lockup.wasm index 848e86609f8aedaae47c66ad05af96ee87b10cad..9c1c8d3bbe971fd4952c2d718c06f4f1c8be88da 100644 GIT binary patch delta 76849 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 _5};XOC3+S-#}jm#7`vP#=$1J^@<& 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 PGMaM+!fJ$_Me6?oYvG2c delta 58165 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 lof$G_Kki@NDV?IjJcCX@LRvC~ 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 PVVeQB05$_&i>Cb(a&PcM diff --git a/artifacts/nusd_valuator.wasm b/artifacts/nusd_valuator.wasm index 3525864b6a55ecdc036b56ab689f4c69df23fc93..77cb6244a463c334be073135bb9e05bf2c3478bf 100644 GIT binary patch delta 85521 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 ?iz=E}zEqhDQX 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

@W*2Q6uy-&mWi%NiaC9$~(%CCCo04 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 OZ1%zLQvBwR3H(323-1m9 delta 79252 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

*dwyyu| zp9p9PjWzv&BHTn9{DhWaPKG3<(**_V;OOzL24Ee2pDN8F8}CeNVKI5tz}!&cXm7a* z*$p5w%;9im2~b;uDdTud5Yg;#$_27Kfi*-jN?M}O;=eqTB%}q4Sfiv@Z+3j{&uH z#K)+zG8H2W8eg>`2p}pGVpdlAJLyg{iWzn2jROpBng;7=+jSCdOM^Zr!!sXrvfa{^ zVYmL-boC_&mxfc~bQygzSY}ba$8J29lv~Ps@vZy+QB(?Bs*IK`xP5t#fEq1}@qhi$ zOZkPdh_06~RbZ_MW=5j7ad;3m7H;bf(BHhp&jFj%=7m<0aExRIv4DV|hC-sgD8(xS z`KU51L*QDjNo>ZkVJHB3PP9zrXp!Ngr7zH2zLS~h|GuWgpZKgTmv_|9HKS61nD!X=tN$TT z9!QpF&S|ImFYy1&?ot-8)3lK`TS=#UfW{~|d~vURP6rnYVwf*)Ru3YE@&tE85XwK% zwb3ab)D<7f0BT7Bn|jQI_=0bh>d!**Bgxi-cLBl?khbRwm)BhD?M|CYQiBweE!+VOb()ph31xU|MNA z_b7kvQGUg>P`~+Dl%HM*#;5dx{|X<=S5GOnC=nr=-a$MpE${k+V@MAuto-V|x|>rc zG}He?&}cA1B!jFX>j`5Oy|^lVo@(=yOo?-=0o|R)-B!D6b9dgT(T;S7g{X@Lf*D33 zroEG)B#aFJEUseWj6rBE5WyzV=ywH+)GY0lQ#=Q6f@_$F-MBNh^CgQsE?L+zWhtC# z(Xv{M%}-vyxOEuL^_as7F0uz@4ja=+1e#3j|32+7kIZ)eb5ZgYVIf%ol?rE;`Cz@x z-$HU@TK-*vkSk~6qte>y|AAVt2vz?$w+qSjOk^k@CT2yj=gq?|4VPgs8+KR!ROq_s zs&l&!ON$kfeTd^wK7v%*!1V#Ho4DRXC^6qZIGfuOJUWN#$GM&*@%*Iz$$_^3A1?EG zCZo&07Z}()ME!c9oEpq_SxSbFZy<6}X5vhH2dI7Coz+3n8jyz-nS&m>Zc(j%VfH z>S03GvZx{4F73L zy<;`g6ir=jiN71 z>M$Z3I)!*z4va!+qoh6fORqQ3h72MFjcu3;=u`ND*n}X*R_4j`Yq@1lVy^_qXCf-j zw|Sd4d9{7mb9rU#JztNfPp5g8g(@1{Mo$L%6c780$>13Rebqm=EhK$ff_}C1nbJc^ zA8}v9WKRp(gSF7dNY*=ut>*|Tmbh~S4IIcq_ z5N)*1fIc4yp_U1uBxT%FaRI9mLM@?Ts{E2IR#if%0r9t0i2fPPQYv5r?VxDf z{Ys8h17dmrzrS{K64R${4rWDn8mb4v?87#Mi+gyZ^Wm{{KqAz9cr+c57d0OqNe6vM zrg+9tlMP<&v#9a0n)G%~u^|rr91UI&xbOr&HN->Jx!+c1LitcC2YT=oJ`@Ii`sQ zVDK%2Dd6cV!tZ0Pki1nbLWqVD2DzFL5t&-a48`Uh2zIWRSI2ZkBHK8LMBI}~4n0GT zaQ`CdR84^vxKQfFGeWY^eniSC{qGucs!Dif8W3cxc_q9x9%-GoxGVxUR5y z98A*9J zzN|!!Nqjm2=l9`V>*-n)$6Vq(w5U6kGP4R&0tMjVhso>^pKiy0oWM5835evC+J6nYYHB z%~AH9MrRdQXWum}o+A+NN(bla`k{0H<(C-Xeqo-g`K2>e1Z{Kua9JHma17)padJq1_~WPB5hGyZPhWF@-CY+kc*L=OlD2_H?JX3;ER#^%#zHlxPY14cnmu~;Qid0Nv*pD$%F|`7zJQX5s(Wi)0J{cw>vavIe3275} zS~fJ!G98L~SESd?KT#~gD{&!&Gllgskd<4$7f?Dj5h4)Li!DGILmTfhYsR~?#Y+3=4w&wPX`A`+bgh_;R{YAxeJ>}Cr;!W-WB4A{jUV&r(EIr zAB2yH9xJM<01;~&iUeh()hp)2^OEP}nU+W1p}-Nzn2IT#N5QO|C+M@;?iBu+FI1ZK zguPrWJMniyV5dpU@fhX6Fn3{h^-t3$9l{8?o5IlUr7TpKBZRO>qk-LLsRfS@=a!KP zLqLw*t~*9fHtW#sYF1b9hvcs_dl`m zVy1kF%2w;4Dw84e4D#RjMVKZ39qfqghO8EYT(}hi#JryHJQJoyJ70`O<=dtcW_r5+h-Yi@q8u*IbV5@7Cr1bdRNtQ`R9X`(cLaaY zjzrR4%paWb{apT@3r@Zfv9RcMr0A&tkY+Cdtx*l;>#3*)NiTjfh*ec4+C{9La62nL zX~Zs+g=c(%*x&7ZVqxtUkyZg)Imt>FW{P2mWokNx7kbpiT)^zlz!82DLlgIsE1NRZCZe&DN=0JazV|i4Z{f>Phl0{$*eSrH5h{<8+awQ6Lc-NB?|g- z2jjWPH}U41wQ^UI5#vtNc`|KD*Otw=kZeVmSbYeff=17${Iwatz7C1L6bB=DFu)}U zSWOdyv-L_s6?5G7S-HX4Ksrc!V=5TUOJWL{yP;Jion)}hE84i4S2;LwHkmF;ZwoIn z$)O;6R(`5ZmyDtWQ%RDzp406%r?k9~JWny89$5~;s3duuQ$cN$d7dWICcqamCMJ|A z)98j%br=GCXl7lCpRN4Z`jv+i+CI7M7;J7@pt;e-tH>4X(d40Qi4-?vnw>n+vyd8{ zI1dQJ7N}@z%_%K65b9COFFu#*m~r;fB0QG4YJN*aF`6&w2;yNPFZ1GE@$gX5LWF(n z9@Mp>{<*;Yhw~N6pAXxKlQ2in=0!#OqW$8srgSR}YRv|C%5;B+i9~g4VLE6QT75+# z#06CY!WL^N{8^pH8McawCP~(9a&rNBAjMENM z+Fl~!R4qv#y835QpRgq{ErIDXx6qE?cE%RkO7Km6-{?vu@th}Gsl=dY^nWjf8_sk! z5UW56OMYY6t$DENNN18h_Ti+sOs?C8%GKp|OVpREHPXDbs+f?5iEBrIvgro1_0Ns#M( z{3d8r{#UNgfZf-rA$2hNhonCFpThJp6g;^|c(%#yOwomITp-laSaG(=?yNh9Yv=Hu z062jqP`+dVpM~Uvfn;mkCcYaUSMOtlH!M=Wfn|)$7pUa=SM~3&P(jGv(4Z*HLV{&s z%ZoE!Cw2@vsCYje6P#tqPS^X9bh_RbT(ut$LxKqkF}6VJ1_hE@Nbw32kP*v+E%w<5 zP7Hvv8|82P(6Ja=4~!s}zG{@8)WeR)?B#Q)6Iy#MIW-~Wq`B(K7k)UqL~ zhZ&bq;GP~=chZ{dM6I1kEomiMZL z5eua5#M5eekb1UX>Ml>A+-V9~xx{_&iM@#{m6)o#fWIE0m zz_>iqNV5da5U5`e2iVfN*ure^nfW9sANhm-;{#2lWn=n_P-cv3kKgh;fBILS{m_Gv zEt<|2I=f&b{IDg)yTGd&??P?mlO2dDlxn&7<;mtFQ#6YiX$Vsf3~|OM3*)S4?nek1 zTi{wJa{S2rFg!UQfDa2x6JRJGL#P-xjPt?G+0O7t(3}sCYMU4$rfxu@BqEiFt1Ndj z0*zD?(jk~AGshtmme37%$cUcbswy@*-7hSY5s)OAd8N-=)^N)yc4k=834q)5=Hvi< zaPjfJ zb_=3b$8~KMv+PH>FDUM-0ch~>=(A+pDE7G$a z4c_-N zbBYv<(Tc^D%ZDMLMt`7TJsimOzdCPTL|{Z7Ds28mqt%nG)tp3p+463pA4mn^sG6q=M>w?L zi0H^}O$#NhwJ!@zdB1AynWt)PHO9wUGn{K}@*zz{RgmuKP6TEB#Oa`)`G6Qh3(Sk6 z408pvBF1J~c`GV%a*svlqMo$aw(OxW7&;PBM7}=h`q4Ug zZt`iGFFzaV0D`jKWp03ig#>eBJ@Mb(Y|&ASh5nwkIL}(<3|Fmbt}mW-lwmFx9W1!B{t9!a>(X~K*G4q1t#|80ELe4Yp^!aSv&eLN3uH>D%ZXguR zm9>pvYv$pdVNg&DLxH~-#SxPn3szeiKU(2XWcS?UN0j~u4sMI6yj3IG1h)&5fQIy@ zV1InYi8LqLr*Bc^JGt%q?QPt4-FU%cy_MAiJlkT^MZLLmd|qTtmd9X|XykzstB;8h zwC-<i^;5bHR=J zbO}4m%{bN&M(~jbLPBL~ z?T(}-liWng@iE)~xNLt(`Gw^7NB)(Fy0Q%KwbE`Gekx_VpDm-Q&3j1}aobR7g%-^_ zR=E-~;sxA7@-eO1h-U_@bVfr&4$zuelC~Tp%TJY?X7{l~;(1E`jy$CpKhknq6@vLl zT&lXq`j-n-HNQrx5=XZ%I${&f!Aez{)%rpx?;dON?g|v%0$y$<7Ls2~D+AE##IXqR zRWJ)~xAYmrlu1swJs+C_keyk7;6TP7He5z_cS|cX)8+povC+ckVY@4`1Z%F*7d)li?KWogU_jvtsvV z1ZWJkYDR%R95knGGiDfn1=gt~@I=2;ZWP=(Hvj)2lGL4|1LVD69OXG?76LREc(rJ6 z8>J|U_edz7!K7)u8pbYIcz;at8+G}puB?qdtgA0$|E=2B683(1ExwKmX0TwagGYl{ z&ny@lIYx_N%#^pLYfOJS!c=+;-)0X%i_?~JP|;jm$%c3+V@xnp%Fs59+<`hEEd$S7$#y%>r zkbG|??X1S>r5%=q#ehue`HYKD*da=9OzX5uyBydWl6F~n<6)$oGAbqQ6u&{**=x=G z^s3j$Ye_p>=4X^-f|<0_Ud$-z){=7@*_u{My4YW#fj&aKPFEPotbg3gZSdt_FjA#j zQ&5pez1Ga>LN*gpP;^{Z1sr7U7`CsA*k&q#Wmc|wZ;-os)THi%yXBqcNs^kaIq97m z(b;UU1Z94!#kEIDNyg zz@}m2UtSbP$$g`|wXOZG>@q_J#?lNqE0d1-o@kh2*77Gf5@N6s<+dft#{0r>3th+^ zH=}((j*ck4D(lY={!D2ccU9J2%tEnCgqWCHl@{k0k(JS)V@keN``1& zM6(=if##IpUiZO40UYa!q8Kc)`o41AO*aos#we%BwpCOdbA|KY<)B#pfGOK35`bX5 zT?y$?H%gYS2Bw1AONFYiI5MrQRu>3fQx{~tlR_gk5eZdoii)*?L=gbBW!B@sEK{I2 zJ9}U`vu0&xlw<f+$B&TpXwb#?!V*h$fq)sTJaQ*UfA1ig?g*r_3HTiw`+`4Fz3tE zAiw41sO6KDHZW`g2K)r`rOduxNVL(HvEpbUXr5aSi5CLQNJ0Q$;0zQ+kvsAu8aB=j z_;Dvijyo=!df%1cY1ya_v*d#%RDMvFBiYGP%l&WSnRa`vm7jE5rq!?e{}~cqt`TJr zEMztOnl%z$)=2FEy`!}~$o@2`J)!{1Y}xObSM1x>p=~W$sz`ARV(p7<_J3_`Um)jm zu?w-VW4a(hVl3ZpSsf)NnQzfYOUeA90beFNjK;D%Ph`@;Q6TdlwaYu!?DE6SuV_c4U%sN9x2a!ur4E-!^ZTX7DUNtZz*R6gm^B&5YwHt zd48TRjva20=T3Sb=?3~ar=LB3Znd8q^;41YE%tMhel`?X(%Gvjf0mxC<7d}?Zq`o_ zt{*y9MMXW>!oE{p33bJK7j#>QWB48CBcA1VFhW>MC+}>o$ug<{tV%%M93_sh%n_y% zv=qOHwFs(d(ZdqV>>&`uXDVk~aQ%^|BJ*wwoRdHk>M-z5>1Tr!oTPR7w}{oWhTt5e z3sE!$#I<&KnM2P!&L zC&!j7(Tk!=!Y}BUCUD6gPvSv;I+y_(h&$jVPID#KhPu9(&v&qcK(Yc^aI@sv)CmpJ z72yxr3u8{RHlM?33le^F1H`CN5?REGR#yDQJEci%=1>r`1u?nB%tRR^eR;L`7DVp} zco8?#v+6V#<1A&n5GGh~HH)rhVTIG3A34}NWo@%Q3A;pq*suH2`qb4*L*e1ZGrdVw z5zT{+)n|H3KVef|GmvA6diwA7l;MDFmvQw3Xs(_%N9{yIYicJFKS9e#JMk-SF+!$| zbicII865Ea5z&L|U9@$87NGOYJz_gvK3jEW0n$;FV*4(k6$p$OmjXlh=l%C_r_pc% zz0Vd_r5`fjhbod8D}u6RS;X7k$dd{}1`>vFc7}c|ww_$6a#m}UE zYzKxX+2%(6DP$Pp3HOn)!^tPyi?KC3Fm^u4*e`Zo{j3C z?&I$NeHPk>!VONC7Mf*ixbyd^sWbC~9YvjtyrNFq6cdkO62J_&X3l|je+P^O%uwg+ zA;Eu5x7&$|?wR>0Ka->KiTz7ZI5&uLIM<4WIvG~P_t>vvcYa8KM1g2rI7A9mBm?Q0 z?QYgM`yI>8%SG_xdZ9Ec&k2zH?^+v}ELPY?l+MKr1X(!o5xtL|T6LznvTd}kWqDO& z>gj2w%g%{jIwJwhjvSphjYyS}!#_Z5*8E$}jr)Le(Fe3`CZG+D3brMKL!P7)wV?u< z(z(7S+H#+Ej_M7YhYeujrcY8-y+y{3lf>FXu$yq1fnU4Obwj4{C`redgP=zOhDZm( z_Vmr-W^MSgyq2RRjhM1@3AdW~OuXmBpS-#!s>ngmUWVXmKi+o`dK^+LUB(`<2t-_o zmBGx2B!w6pl;I}2px2UUv;3uZ$^)KVEU4v0A z*+@a#HRNSRxNtO>_=B>cCSO))mqfD2?03wF-W~h0k7_-k(N&L4(bPtMkVog*KzIcJ z1We`>ZMo?@UfkUauE@| z4W}5{fan1$E1l|;ZpLknBZ+fML-v5^bX-DUG*pB=a4p5fK`BFJpBg8yDuC!7FmX2Y zvk*vw4K)a9jQvwI49nO^!)Sw=(h3@3=9Hiom=m2X!?0`>kt9&0prfPrGDtJkXc&P; zQ%yD)n=a=V4LXVW?3BmfcT5M5eU*!!H5DH`w)(-XKf9{Ld#VQ$Lyz{3rJNv|C(dXB zBG>}y$Dk8NlE;*1w{l=N%aIq}v}0CC2V(HBvXbinv?;;gBYO>#C|&lC-$){20)+k{ zJy)cM%iI7;Wg6suw-4}V8u{|GMPCq4Wlu;HM*pNq30@Q*o8)vwQl5PVDDi6kmHQLUWC zZ?TpYy>WBa4r?cSWDBA5jWAg$7Ammg8V{J3H5^ zWHBp2n&fh14evo(f4x-)A>MFSejX)Ta&{z>z~=_)wkeAc%lyk^a(sw)YV}!xU92~> zlNL^KW?5hfJ%_mpy zP_C2_msR#Sh5$!!TaaJ`dO{WW#P%`B9z11#%(e+x;f{G%f3O>BLg*80{?QtQcmS8l46+tiMZziH_g>9!|4*552tgCC8_4F>6J+z+ zSRqqhfBDEyQE3{YXfO4N7OSEx36Y`~_y-kWYYoG$3Wx|t1!}U|yfjW$mg`S@biRLMC%TW+9qHschRkfel()?DC0azS!2AV)d3FV+!LJ6q(MU8V ze#Xf~s1Sv{vPQ~8(@zOe*7Y|EΩG&WvOP*F|L)7bcry_?zSLLS@y5gI?N#zmZv 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�rI|Eb)C(?F9eWZZwr9D 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 QvY!Wh9qaX_&n@6t289Tl?uH*_%|}P^BdMk!&u% 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

k3uX69oce(M3MYZiJ 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

    g;9>A+&u^(}na{3?(*XGCLl*pO7-WLN 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 iIMNPbp!}X;Un567$*~+>gf9CLU>0 unallocated_amount { - return Err( - StdError::generic_err("Insufficient funds for all rewards").into() - ); + return Err(StdError::generic_err(format!( + "Insufficient funds for all rewards. Have {} but want {}", + unallocated_amount, total_requested + )) + .into()); } vesting_schedule.validate()?; diff --git a/contracts/airdrop-token-vesting/src/errors.rs b/contracts/core-token-vesting-v2/src/errors.rs similarity index 100% rename from contracts/airdrop-token-vesting/src/errors.rs rename to contracts/core-token-vesting-v2/src/errors.rs diff --git a/contracts/airdrop-token-vesting/src/lib.rs b/contracts/core-token-vesting-v2/src/lib.rs similarity index 100% rename from contracts/airdrop-token-vesting/src/lib.rs rename to contracts/core-token-vesting-v2/src/lib.rs diff --git a/contracts/airdrop-token-vesting/src/msg.rs b/contracts/core-token-vesting-v2/src/msg.rs similarity index 100% rename from contracts/airdrop-token-vesting/src/msg.rs rename to contracts/core-token-vesting-v2/src/msg.rs diff --git a/contracts/airdrop-token-vesting/src/state.rs b/contracts/core-token-vesting-v2/src/state.rs similarity index 100% rename from contracts/airdrop-token-vesting/src/state.rs rename to contracts/core-token-vesting-v2/src/state.rs diff --git a/contracts/airdrop-token-vesting/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs similarity index 97% rename from contracts/airdrop-token-vesting/src/testing.rs rename to contracts/core-token-vesting-v2/src/testing.rs index 99dac73..64d27a7 100644 --- a/contracts/airdrop-token-vesting/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -320,13 +320,10 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { &env, mock_info("addr0000", &[Coin::new(1000u128, "uusd")]), msg, - ContractError::Vesting( - VestingError::ExcessiveAmount { - cliff_amount, - vesting_amount, - } - .into(), - ), + ContractError::Vesting(VestingError::ExcessiveAmount { + cliff_amount, + vesting_amount, + }), ); // deposit amount higher than unallocated @@ -337,7 +334,10 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { &env, mock_info("addr0000", &[Coin::new(999u128, "uusd")]), msg, - StdError::generic_err("Insufficient funds for all rewards").into(), + StdError::generic_err( + "Insufficient funds for all rewards. Have 2000 but want 10000", + ) + .into(), ); // valid amount @@ -597,7 +597,10 @@ fn register_vesting_account_with_native_token() -> TestResult { let res = execute(deps.as_mut(), env.clone(), info, msg.clone()); match res { Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { - assert_eq!(msg, "Insufficient funds for all rewards") + assert_eq!( + msg, + "Insufficient funds for all rewards. Have 1000 but want 1000001" + ) } _ => panic!("should not enter. got result: {res:?}"), } @@ -626,7 +629,10 @@ fn register_vesting_account_with_native_token() -> TestResult { let res = execute(deps.as_mut(), env.clone(), info, msg.clone()); match res { Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { - assert_eq!(msg, "Insufficient funds for all rewards") + assert_eq!( + msg, + "Insufficient funds for all rewards. Have 1000 but want 1001" + ) } _ => panic!("should not enter. got result: {res:?}"), } From a8163a976087060978d9d33c9184fb445f9e8050 Mon Sep 17 00:00:00 2001 From: Oleg Nikonychev Date: Sat, 9 Mar 2024 01:15:40 +0400 Subject: [PATCH 11/29] feat: deregister vesting for list of accounts (#135) --- artifacts/checksums.txt | 2 + artifacts/core_token_vesting_v2.wasm | Bin 0 -> 219301 bytes contracts/core-token-vesting-v2/README.md | 25 +- .../core-token-vesting-v2/src/contract.rs | 272 ++++-------------- contracts/core-token-vesting-v2/src/msg.rs | 23 +- .../core-token-vesting-v2/src/testing.rs | 115 +++++++- 6 files changed, 203 insertions(+), 234 deletions(-) create mode 100644 artifacts/core_token_vesting_v2.wasm diff --git a/artifacts/checksums.txt b/artifacts/checksums.txt index 8e52fac..2fd54d7 100644 --- a/artifacts/checksums.txt +++ b/artifacts/checksums.txt @@ -1,4 +1,5 @@ 382c05baf544f2886de849933ecf59e8bc3bcdcdd552d5a63537bd6d63f2ecf1 controller.wasm +6cf70cdf7ca010cbeff5fff2ca992ccb6d48fa669baf2b9ee26c8289a926413c core_token_vesting_v2.wasm b56a880d4c67d9f353f549b502256f73159f89b50aa6dae683948e117efa4792 cw3_flex_multisig.wasm 1ecff403bbf3b5fcedccb5de76a0ef5f1fdbcc5f60890e3388f5425584899f0b incentives.wasm dc89ed88f1c69bf63fc284492b7bf6935e3a85da2945067d70f71f08c01df60d lockup.wasm @@ -7,3 +8,4 @@ ef5b4de76526713e3531c3b9bbc4620b5d61599c4a0e8605365ebb0f1d7ee2ac nibi_stargate_ 0074489ff40c8ecbd766f7140b32d288dcaf7302ba630d452f79e7d292ea57ef nusd_valuator.wasm 955592d08017aa41f3c9ba3883153d6de024e8c7a3a79aa3b664a241ec1e7a19 pricefeed.wasm 354fdeff1386394d7aa829358323f89bde548d4aa782bae4a16dddfe33dad739 shifter.wasm +8d982ca2d679ea8d44f825fe91a3d4e0cb92150b12e4684497eee9e76991d247 token_vesting.wasm diff --git a/artifacts/core_token_vesting_v2.wasm b/artifacts/core_token_vesting_v2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..dd361909cb8055ff0714881e0ffcd7f0ed0e2c31 GIT binary patch literal 219301 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

    VW8n8PgAL)Jg4fh#NY*tNd-ns-9 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, -left_vesting_token_recipient: Option, + addresses: Vec, }, ``` - DeregisterVestingAccount - deregister vesting account - - It will compute `claimable_amount` and `left_vesting_amount`. Each amount respectively sent to (`vested_token_recipient` or `vesting_account`) - and (`left_vesting_token_recipient` or `master_address`). + - It will compute `claimable_amount` and `left_vesting_amount` and send back to the contract admin. #### By admin only @@ -139,10 +136,10 @@ cat << EOF | jq '.' | tee reward.json } ], "vesting_schedule": { - "linear_vesting": { + "linear_vesting_with_cliff": { "start_time": "1708642800", "end_time": "1708729200", - "vesting_amount": "0" + "cliff_time": "1708642800" } } } @@ -191,4 +188,18 @@ cat << EOF | jq '.' | tee withdraw.json EOF JSON_DATA="$( reward_users(deps, env, info, rewards, vesting_schedule), - ExecuteMsg::DeregisterVestingAccount { - address, - vested_token_recipient, - left_vesting_token_recipient, - } => deregister_vesting_account( - deps, - env, - info, - address, - vested_token_recipient, - left_vesting_token_recipient, - ), + ExecuteMsg::DeregisterVestingAccounts { addresses } => { + deregister_vesting_accounts(deps, env, info, addresses) + } ExecuteMsg::Claim { denoms: _denoms, recipient, @@ -238,23 +229,66 @@ fn register_vesting_account( ])) } -fn deregister_vesting_account( +fn deregister_vesting_accounts( deps: DepsMut, env: Env, info: MessageInfo, - address: String, - vested_token_recipient: Option, - left_vesting_token_recipient: Option, + addresses: Vec, ) -> Result { - let sender = info.sender; + let mut res = vec![]; let whitelist = WHITELIST.load(deps.storage)?; + if !(whitelist.is_member(info.sender.clone()) + || whitelist.is_admin(info.sender.clone())) + { + return Err(StdError::generic_err("Unauthorized").into()); + } + + let mut attrs: Vec = vec![]; + + for address in addresses { + let result = deregister_vesting_account( + deps.storage, + env.block.time.seconds(), + address.clone(), + whitelist.admin.clone(), + ); + + if let Ok(response) = result { + attrs.extend(response.attributes); + res.push(DeregisterUserResponse { + user_address: address.clone(), + success: true, + error_msg: "".to_string(), + }); + } else { + let error = result.err().unwrap(); + res.push(DeregisterUserResponse { + user_address: address.clone(), + success: false, + error_msg: "Failed to deregister vesting account: ".to_string() + + &error.to_string(), + }); + } + } + Ok(Response::new() + .add_attributes(attrs) + .add_attribute("action", "deregister_vesting_accounts") + .set_data(to_json_binary(&res).unwrap())) +} + +fn deregister_vesting_account( + storage: &mut dyn Storage, + timestamp: u64, + address: String, + admin_address: String, +) -> Result { let mut messages: Vec = vec![]; // vesting_account existence check - let account = VESTING_ACCOUNTS.may_load(deps.storage, address.as_str())?; - let denom = DENOM.load(deps.storage)?; + let account = VESTING_ACCOUNTS.may_load(storage, address.as_str())?; + let denom = DENOM.load(storage)?; if account.is_none() { return Err(ContractError::Std(StdError::generic_err(format!( @@ -264,14 +298,10 @@ fn deregister_vesting_account( } let account = account.unwrap(); - if !(whitelist.is_admin(sender.clone()) || whitelist.is_member(sender)) { - return Err(StdError::generic_err("unauthorized").into()); - } - // remove vesting account - VESTING_ACCOUNTS.remove(deps.storage, address.as_str()); + VESTING_ACCOUNTS.remove(storage, address.as_str()); - let vested_amount = account.vested_amount(env.block.time.seconds())?; + let vested_amount = account.vested_amount(timestamp)?; let claimed_amount = account.claimed_amount; // transfer already vested amount to vested_token_recipient and if @@ -281,7 +311,6 @@ fn deregister_vesting_account( &mut messages, claimable_amount, denom.clone(), - vested_token_recipient, address.clone(), )?; @@ -293,8 +322,7 @@ fn deregister_vesting_account( &mut messages, left_vesting_amount, denom, - left_vesting_token_recipient, - whitelist.admin.clone(), + admin_address, )?; Ok(Response::new().add_messages(messages).add_attributes(vec![ @@ -309,16 +337,13 @@ fn deregister_vesting_account( /// /// creates a send message if the amount to send is not zero /// -/// If we provide a recipient, we use it. Otherwise, we use the default_recipient fn send_if_amount_is_not_zero( messages: &mut Vec, amount: Uint128, denom: String, - recipient_option: Option, - default_recipient: String, + recipient: String, ) -> Result<(), ContractError> { if !amount.is_zero() { - let recipient = recipient_option.unwrap_or(default_recipient); let msg_send: CosmosMsg = build_send_msg(denom, amount, recipient)?; messages.push(msg_send); } @@ -454,180 +479,3 @@ fn vesting_account( } } } - -#[cfg(test)] -pub mod tests { - - use super::*; - use anyhow::anyhow; - use cosmwasm_std::{ - coin, - testing::{self, MockApi, MockQuerier, MockStorage}, - Empty, OwnedDeps, Timestamp, Uint64, - }; - - pub type TestResult = Result<(), anyhow::Error>; - - pub fn mock_env_with_time(block_time: u64) -> Env { - let mut env = testing::mock_env(); - env.block.time = Timestamp::from_seconds(block_time); - env - } - - /// Convenience function for instantiating the contract at and setting up - /// the env to have the given block time. - pub fn setup_with_block_time( - block_time: u64, - ) -> anyhow::Result<(OwnedDeps, Env)> - { - let mut deps = testing::mock_dependencies(); - let env = mock_env_with_time(block_time); - instantiate( - deps.as_mut(), - env.clone(), - testing::mock_info("admin-sender", &[coin(5000, "token")]), - InstantiateMsg { - admin: "admin-sender".to_string(), - managers: vec!["manager-sender".to_string()], - }, - )?; - Ok((deps, env)) - } - - #[test] - fn deregister_err_nonexistent_vesting_account() -> TestResult { - let (mut deps, _env) = setup_with_block_time(0)?; - - let msg = ExecuteMsg::DeregisterVestingAccount { - address: "nonexistent".to_string(), - vested_token_recipient: None, - left_vesting_token_recipient: None, - }; - - let res = execute( - deps.as_mut(), - testing::mock_env(), - testing::mock_info("admin-sender", &[]), - msg, - ); - - match res { - Ok(_) => Err(anyhow!("Unexpected result: {:#?}", res)), - Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { - assert!(msg.contains("vesting entry is not found for address")); - Ok(()) - } - Err(err) => Err(anyhow!("Unexpected error: {:#?}", err)), - } - } - - #[test] - fn deregister_err_unauthorized_vesting_account() -> TestResult { - // Set up the environment with a block time before the vesting start time - let (mut deps, env) = setup_with_block_time(50)?; - - let register_msg = ExecuteMsg::RewardUsers { - rewards: vec![RewardUserRequest { - user_address: "addr0001".to_string(), - vesting_amount: Uint128::new(5000u128), - cliff_amount: Uint128::zero(), - }], - vesting_schedule: VestingSchedule::LinearVestingWithCliff { - start_time: Uint64::new(100), - end_time: Uint64::new(110), - cliff_time: Uint64::new(105), - }, - }; - - let res = execute( - deps.as_mut(), - env.clone(), // Use the custom environment with the adjusted block time - testing::mock_info("admin-sender", &[coin(1000000, "token")]), - register_msg, - )?; - assert_eq!( - res.attributes, - vec![ - Attribute { - key: "action".to_string(), - value: "register_vesting_account".to_string() - }, - Attribute { - key: "address".to_string(), - value: "addr0001".to_string() - }, - Attribute { - key: "vesting_amount".to_string(), - value: "5000".to_string() - }, - Attribute { - key: "method".to_string(), - value: "reward_users".to_string() - } - ] - ); - - // Try to deregister with unauthorized sender - let msg = ExecuteMsg::DeregisterVestingAccount { - address: "addr0001".to_string(), - vested_token_recipient: None, - left_vesting_token_recipient: None, - }; - - let res = execute( - deps.as_mut(), - env, // Use the custom environment with the adjusted block time - testing::mock_info("addr0003", &[]), - msg, - ); - match res { - Err(ContractError::Std(StdError::GenericErr { msg, .. })) - if msg == "unauthorized" => {} - _ => return Err(anyhow!("Unexpected result: {:?}", res)), - } - - Ok(()) - } - - #[test] - fn deregister_successful() -> TestResult { - // Set up the environment with a block time before the vesting start time - let (mut deps, env) = setup_with_block_time(50)?; - - let register_msg = ExecuteMsg::RewardUsers { - rewards: vec![RewardUserRequest { - user_address: "addr0001".to_string(), - vesting_amount: Uint128::new(5000u128), - cliff_amount: Uint128::zero(), - }], - vesting_schedule: VestingSchedule::LinearVestingWithCliff { - start_time: Uint64::new(100), - end_time: Uint64::new(110), - cliff_time: Uint64::new(105), - }, - }; - - execute( - deps.as_mut(), - env.clone(), // Use the custom environment with the adjusted block time - testing::mock_info("admin-sender", &[]), - register_msg, - )?; - - // Deregister with the manager address - let msg = ExecuteMsg::DeregisterVestingAccount { - address: "addr0001".to_string(), - vested_token_recipient: None, - left_vesting_token_recipient: None, - }; - - let _res = execute( - deps.as_mut(), - env, // Use the custom environment with the adjusted block time - testing::mock_info("manager-sender", &[]), - msg, - )?; - - Ok(()) - } -} diff --git a/contracts/core-token-vesting-v2/src/msg.rs b/contracts/core-token-vesting-v2/src/msg.rs index fe38f6b..91719a9 100644 --- a/contracts/core-token-vesting-v2/src/msg.rs +++ b/contracts/core-token-vesting-v2/src/msg.rs @@ -24,18 +24,12 @@ pub enum ExecuteMsg { vesting_schedule: VestingSchedule, }, - /// A creator operation that unregisters a vesting account. + /// A creator operation that unregisters a vesting account + /// and transfers the rest of tokens back to contract admin. /// Args: - /// - address: String: Bech 32 address of the owner of vesting account. - /// - denom: Denom: The denomination of the tokens vested. - /// - vested_token_recipient: Option: Bech 32 address that will receive the vested - /// tokens after deregistration. If None, tokens are received by the owner address. - /// - left_vesting_token_recipient: Option: Bech 32 address that will receive the left - /// vesting tokens after deregistration. - DeregisterVestingAccount { - address: String, - vested_token_recipient: Option, - left_vesting_token_recipient: Option, + /// - addresses: Vec: Bech 32 addresses of the owners of vesting accounts. + DeregisterVestingAccounts { + addresses: Vec, }, /// Claim is an operation that allows one to claim vested tokens. @@ -82,6 +76,13 @@ pub struct RewardUserResponse { pub error_msg: String, } +#[cw_serde] +pub struct DeregisterUserResponse { + pub user_address: String, + pub success: bool, + pub error_msg: String, +} + /// Enum representing the message types for the query entry point. #[cw_serde] pub enum QueryMsg { diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index 64d27a7..da589e8 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -1,14 +1,13 @@ -use crate::contract::tests::TestResult; use crate::contract::{execute, instantiate, query}; use crate::errors::{ContractError, VestingError}; use crate::msg::{ - ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, - VestingAccountResponse, VestingData, VestingSchedule, + DeregisterUserResponse, ExecuteMsg, InstantiateMsg, QueryMsg, + RewardUserRequest, VestingAccountResponse, VestingData, VestingSchedule, VestingScheduleQueryOutput, }; use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage}; -use cosmwasm_std::{coin, MessageInfo}; +use cosmwasm_std::{coin, testing, Empty, MessageInfo}; use cosmwasm_std::{ from_json, testing::{mock_dependencies, mock_env, mock_info}, @@ -16,6 +15,33 @@ use cosmwasm_std::{ Timestamp, Uint128, Uint64, }; +pub type TestResult = Result<(), anyhow::Error>; + +pub fn mock_env_with_time(block_time: u64) -> Env { + let mut env = testing::mock_env(); + env.block.time = Timestamp::from_seconds(block_time); + env +} + +/// Convenience function for instantiating the contract at and setting up +/// the env to have the given block time. +pub fn setup_with_block_time( + block_time: u64, +) -> anyhow::Result<(OwnedDeps, Env)> { + let mut deps = testing::mock_dependencies(); + let env = mock_env_with_time(block_time); + instantiate( + deps.as_mut(), + env.clone(), + testing::mock_info("admin-sender", &[coin(5000, "token")]), + InstantiateMsg { + admin: "admin-sender".to_string(), + managers: vec!["manager-sender".to_string()], + }, + )?; + Ok((deps, env)) +} + #[test] fn proper_initialization() -> TestResult { let mut deps = mock_dependencies(); @@ -868,3 +894,84 @@ fn claim_native() -> TestResult { Ok(()) } + +#[test] +fn deregister_err_nonexistent_vesting_account() -> TestResult { + let (mut deps, env) = setup_with_block_time(50)?; + + let msg = ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["nonexistent".to_string()], + }; + let res = execute( + deps.as_mut(), + env, // Use the custom environment with the adjusted block time + testing::mock_info("manager-sender", &[]), + msg, + )?; + let response_items: Vec = + from_json(res.data.unwrap()).unwrap(); + assert!(!response_items[0].success); + let error_msg = response_items[0].clone().error_msg; + if !error_msg.contains("not found") { + panic!("Unexpected error message {error_msg:?}") + } + Ok(()) +} + +#[test] +fn deregister_err_unauthorized_vesting_account() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(50)?; + + // Try to deregister with unauthorized sender + let msg = ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["addr0001".to_string()], + }; + require_error( + &mut deps, + &env, + mock_info("addr0042", &[]), + msg, + StdError::generic_err("Unauthorized").into(), + ); + Ok(()) +} + +#[test] +fn deregister_successful() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(50)?; + + let register_msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(5000u128), + cliff_amount: Uint128::zero(), + }], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + cliff_time: Uint64::new(105), + }, + }; + + execute( + deps.as_mut(), + env.clone(), // Use the custom environment with the adjusted block time + testing::mock_info("admin-sender", &[]), + register_msg, + )?; + + // Deregister with the manager address + let msg = ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["addr0001".to_string()], + }; + + let _res = execute( + deps.as_mut(), + env, // Use the custom environment with the adjusted block time + testing::mock_info("manager-sender", &[]), + msg, + )?; + Ok(()) +} From 6ffeead95b543ce39be0c00974324bf3da733737 Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:20:01 -0500 Subject: [PATCH 12/29] refactor(core-token-vesting-v2): use idiomatic rust (#136) * refactor(core-token-vesting-v2): use references instead of clone * chore: run linter * refactor: use move instead of clone * refactor: don't use StdResult when unneeded * refactor: create better error messages --- Cargo.lock | 31 +-- .../core-token-vesting-v2/src/contract.rs | 215 +++++++++--------- contracts/core-token-vesting-v2/src/msg.rs | 1 - contracts/core-token-vesting-v2/src/state.rs | 12 +- .../core-token-vesting-v2/src/testing.rs | 12 +- 5 files changed, 127 insertions(+), 144 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index adcdbd7..6ff94ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1370,12 +1370,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hex" version = "0.4.3" @@ -1788,16 +1782,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "nusd-valuator" version = "0.1.0" @@ -2177,9 +2161,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "0eea5a9eb898d3783f17c6407670e3592fd174cb81a10e51d4c37f49450b9946" dependencies = [ "base64", "bytes", @@ -2650,20 +2634,20 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.2", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -2760,7 +2744,6 @@ dependencies = [ "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", "socket2", "windows-sys 0.48.0", diff --git a/contracts/core-token-vesting-v2/src/contract.rs b/contracts/core-token-vesting-v2/src/contract.rs index a2466cb..a0cfc75 100644 --- a/contracts/core-token-vesting-v2/src/contract.rs +++ b/contracts/core-token-vesting-v2/src/contract.rs @@ -1,8 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, - Env, MessageInfo, Response, StdError, StdResult, Storage, Uint128, + to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, Storage, Timestamp, Uint128 }; use std::cmp::min; @@ -42,14 +41,14 @@ pub fn instantiate( deps.api.addr_validate(&msg.admin)?; for manager in msg.managers.iter() { - let _ = deps.api.addr_validate(manager)?; + deps.api.addr_validate(manager)?; } let unallocated_amount = info.funds[0].amount; - let denom = info.funds[0].denom.clone(); + let denom = &info.funds[0].denom; UNALLOCATED_AMOUNT.save(deps.storage, &unallocated_amount)?; - DENOM.save(deps.storage, &denom)?; + DENOM.save(deps.storage, denom)?; WHITELIST.save( deps.storage, &Whitelist { @@ -100,7 +99,7 @@ pub fn withdraw( let mut unallocated_amount = UNALLOCATED_AMOUNT.load(deps.storage)?; let denom = DENOM.load(deps.storage)?; - if !whitelist.is_admin(info.sender.clone()) { + if !whitelist.is_admin(info.sender) { return Err(StdError::generic_err("Unauthorized").into()); } @@ -113,14 +112,10 @@ pub fn withdraw( UNALLOCATED_AMOUNT.save(deps.storage, &unallocated_amount)?; // validate recipient address - deps.api.addr_validate(&recipient.clone())?; + deps.api.addr_validate(&recipient)?; Ok(Response::new() - .add_messages(vec![build_send_msg( - denom, - amount_max, - recipient.clone(), - )?]) + .add_messages(vec![build_send_msg(&denom, amount_max, &recipient)]) .add_attribute("action", "withdraw") .add_attribute("recipient", &recipient) .add_attribute("amount", amount_max.to_string()) @@ -137,11 +132,12 @@ fn reward_users( let mut res = vec![]; let whitelist = WHITELIST.load(deps.storage)?; - - if !(whitelist.is_member(info.sender.clone()) - || whitelist.is_admin(info.sender.clone())) - { - return Err(StdError::generic_err("Unauthorized").into()); + if !(whitelist.is_member(&info.sender) || whitelist.is_admin(&info.sender)) { + return Err(StdError::generic_err(format!( + "Sender {} is unauthorized to reward users.", + &info.sender + )) + .into()); } let unallocated_amount = UNALLOCATED_AMOUNT.load(deps.storage)?; @@ -150,7 +146,7 @@ fn reward_users( rewards.iter().map(|req| req.vesting_amount).sum(); if total_requested > unallocated_amount { return Err(StdError::generic_err(format!( - "Insufficient funds for all rewards. Have {} but want {}", + "Insufficient funds for all rewards. Contract has {} available but trying to allocate {}", unallocated_amount, total_requested )) .into()); @@ -164,27 +160,31 @@ fn reward_users( let result = register_vesting_account( deps.storage, - req.user_address.clone(), + &req.user_address, req.vesting_amount, req.cliff_amount, - vesting_schedule.clone(), + &vesting_schedule, ); - if let Ok(response) = result { - attrs.extend(response.attributes); - res.push(RewardUserResponse { - user_address: req.user_address.clone(), - success: true, - error_msg: "".to_string(), - }); - } else { - let error = result.err().unwrap(); - res.push(RewardUserResponse { - user_address: req.user_address.clone(), - success: false, - error_msg: "Failed to register vesting account: ".to_string() - + &error.to_string(), - }); + match result { + Ok(response) => { + attrs.extend(response.attributes); + res.push(RewardUserResponse { + user_address: req.user_address, + success: true, + error_msg: "".to_string(), + }); + } + Err(error) => { + res.push(RewardUserResponse { + user_address: req.user_address, + success: false, + error_msg: format!( + "Failed to register vesting account: {}", + error + ), + }); + } } } @@ -199,32 +199,36 @@ fn reward_users( fn register_vesting_account( storage: &mut dyn Storage, - address: String, + address: &str, vesting_amount: Uint128, cliff_amount: Uint128, - vesting_schedule: VestingSchedule, + vesting_schedule: &VestingSchedule, ) -> Result { // vesting_account existence check - if VESTING_ACCOUNTS.has(storage, address.as_str()) { - return Err(StdError::generic_err("already exists").into()); + if VESTING_ACCOUNTS.has(storage, address) { + return Err(StdError::generic_err(format!( + "User {} already has a vesting account", + address + )) + .into()); } vesting_schedule.validate()?; VESTING_ACCOUNTS.save( storage, - address.as_str(), + address, &VestingAccount { address: address.to_string(), vesting_amount, cliff_amount, - vesting_schedule, + vesting_schedule: vesting_schedule.clone(), claimed_amount: Uint128::zero(), }, )?; Ok(Response::new().add_attributes(vec![ ("action", "register_vesting_account"), - ("address", address.as_str()), + ("address", address), ("vesting_amount", &vesting_amount.to_string()), ])) } @@ -235,43 +239,48 @@ fn deregister_vesting_accounts( info: MessageInfo, addresses: Vec, ) -> Result { - let mut res = vec![]; - let whitelist = WHITELIST.load(deps.storage)?; - - if !(whitelist.is_member(info.sender.clone()) - || whitelist.is_admin(info.sender.clone())) - { - return Err(StdError::generic_err("Unauthorized").into()); + if !(whitelist.is_member(&info.sender) || whitelist.is_admin(&info.sender)) { + return Err(StdError::generic_err(format!( + "Sender {} is not authorized to deregister vesting accounts.", + &info.sender + )) + .into()); } + let mut res = vec![]; let mut attrs: Vec = vec![]; for address in addresses { let result = deregister_vesting_account( deps.storage, - env.block.time.seconds(), - address.clone(), - whitelist.admin.clone(), + env.block.time, + &address, + &whitelist.admin, ); - if let Ok(response) = result { - attrs.extend(response.attributes); - res.push(DeregisterUserResponse { - user_address: address.clone(), - success: true, - error_msg: "".to_string(), - }); - } else { - let error = result.err().unwrap(); - res.push(DeregisterUserResponse { - user_address: address.clone(), - success: false, - error_msg: "Failed to deregister vesting account: ".to_string() - + &error.to_string(), - }); + match result { + Ok(response) => { + attrs.extend(response.attributes); + res.push(DeregisterUserResponse { + user_address: address, + success: true, + error_msg: "".to_string(), + }); + } + Err(error) => { + res.push(DeregisterUserResponse { + user_address: address, + success: false, + error_msg: format!( + "Failed to deregister vesting account: {}", + error + ), + }); + } } } + Ok(Response::new() .add_attributes(attrs) .add_attribute("action", "deregister_vesting_accounts") @@ -280,54 +289,53 @@ fn deregister_vesting_accounts( fn deregister_vesting_account( storage: &mut dyn Storage, - timestamp: u64, - address: String, - admin_address: String, + timestamp: Timestamp, + address: &str, + admin_address: &str, ) -> Result { let mut messages: Vec = vec![]; // vesting_account existence check - let account = VESTING_ACCOUNTS.may_load(storage, address.as_str())?; + let account = VESTING_ACCOUNTS.may_load(storage, address)?; let denom = DENOM.load(storage)?; if account.is_none() { - return Err(ContractError::Std(StdError::generic_err(format!( - "vesting entry is not found for address {:?}", - to_string(&address).unwrap(), - )))); + return Err(StdError::generic_err(format!( + "User {} does not have a vesting account.", + address, + )) + .into()); } let account = account.unwrap(); // remove vesting account - VESTING_ACCOUNTS.remove(storage, address.as_str()); + VESTING_ACCOUNTS.remove(storage, address); let vested_amount = account.vested_amount(timestamp)?; let claimed_amount = account.claimed_amount; - // transfer already vested amount to vested_token_recipient and if - // it is not provided, transfer it to the address that is the owner of the vesting account + // transfer already vested amount to the user let claimable_amount = vested_amount.checked_sub(claimed_amount)?; send_if_amount_is_not_zero( &mut messages, claimable_amount, - denom.clone(), - address.clone(), + &denom, + address, )?; - // transfer left vesting amount to left_vesting_token_recipient and if - // it is not provided, transfer it to the master_address + // transfer left vesting amount to the admin let left_vesting_amount = account.vesting_amount.checked_sub(vested_amount)?; send_if_amount_is_not_zero( &mut messages, left_vesting_amount, - denom, + &denom, admin_address, )?; Ok(Response::new().add_messages(messages).add_attributes(vec![ ("action", "deregister_vesting_account"), - ("address", address.as_str()), + ("address", address), ("vesting_amount", &account.vesting_amount.to_string()), ("vested_amount", &vested_amount.to_string()), ("left_vesting_amount", &left_vesting_amount.to_string()), @@ -340,12 +348,11 @@ fn deregister_vesting_account( fn send_if_amount_is_not_zero( messages: &mut Vec, amount: Uint128, - denom: String, - recipient: String, + denom: &str, + recipient: &str, ) -> Result<(), ContractError> { if !amount.is_zero() { - let msg_send: CosmosMsg = build_send_msg(denom, amount, recipient)?; - messages.push(msg_send); + messages.push(build_send_msg(denom, amount, recipient)); } Ok(()) @@ -357,11 +364,10 @@ fn claim( info: MessageInfo, recipient: Option, ) -> Result { - let sender = info.sender; - let recipient = recipient.unwrap_or_else(|| sender.to_string()); + let sender = &info.sender; + let recipient = &recipient.unwrap_or_else(|| sender.to_string()); let denom = DENOM.load(deps.storage)?; - let mut messages: Vec = vec![]; let mut attrs: Vec = vec![]; // vesting_account existence check @@ -375,7 +381,7 @@ fn claim( } let mut account = account.unwrap(); - let vested_amount = account.vested_amount(env.block.time.seconds())?; + let vested_amount = account.vested_amount(env.block.time)?; let claimed_amount = account.claimed_amount; let claimable_amount = vested_amount.checked_sub(claimed_amount)?; @@ -390,10 +396,6 @@ fn claim( VESTING_ACCOUNTS.save(deps.storage, sender.as_str(), &account)?; } - let msg_send: CosmosMsg = - build_send_msg(denom, claimable_amount, recipient.clone())?; - - messages.push(msg_send); attrs.extend( vec![ ("vesting_amount", &account.vesting_amount.to_string()), @@ -405,21 +407,20 @@ fn claim( ); Ok(Response::new() - .add_messages(messages) + .add_messages(vec![build_send_msg(&denom, claimable_amount, recipient)]) .add_attributes(vec![("action", "claim"), ("address", sender.as_str())]) .add_attributes(attrs)) } -fn build_send_msg( - denom: String, - amount: Uint128, - to: String, -) -> StdResult { - Ok(BankMsg::Send { - to_address: to, - amount: vec![Coin { denom, amount }], +fn build_send_msg(denom: &str, amount: Uint128, to: &str) -> CosmosMsg { + BankMsg::Send { + to_address: to.to_string(), + amount: vec![Coin { + denom: denom.to_string(), + amount, + }], } - .into()) + .into() } #[cfg_attr(not(feature = "library"), entry_point)] @@ -453,7 +454,7 @@ fn vesting_account( }), Some(account) => { let vested_amount = - account.vested_amount(env.block.time.seconds())?; + account.vested_amount(env.block.time)?; let vesting_schedule_query = from_vesting_to_query_output( &account.vesting_schedule, diff --git a/contracts/core-token-vesting-v2/src/msg.rs b/contracts/core-token-vesting-v2/src/msg.rs index 91719a9..7b0194f 100644 --- a/contracts/core-token-vesting-v2/src/msg.rs +++ b/contracts/core-token-vesting-v2/src/msg.rs @@ -166,7 +166,6 @@ impl VestingSchedule { start_time, end_time, cliff_time, - .. } => { if end_time <= start_time { return Err(VestingError::InvalidTimeRange { diff --git a/contracts/core-token-vesting-v2/src/state.rs b/contracts/core-token-vesting-v2/src/state.rs index add1587..4dcd9d2 100644 --- a/contracts/core-token-vesting-v2/src/state.rs +++ b/contracts/core-token-vesting-v2/src/state.rs @@ -3,7 +3,7 @@ use std::collections::HashSet; use cosmwasm_schema::cw_serde; use crate::msg::VestingSchedule; -use cosmwasm_std::{StdResult, Uint128}; +use cosmwasm_std::{StdResult, Timestamp, Uint128}; use cw_storage_plus::{Item, Map}; pub const VESTING_ACCOUNTS: Map<&str, VestingAccount> = @@ -40,29 +40,29 @@ pub struct VestingAccount { } impl VestingAccount { - pub fn vested_amount(&self, block_time: u64) -> StdResult { + pub fn vested_amount(&self, block_time: Timestamp) -> StdResult { match self.vesting_schedule { VestingSchedule::LinearVestingWithCliff { start_time: _start_time, end_time, cliff_time, } => { - if block_time < cliff_time.u64() { + if block_time.seconds() < cliff_time.u64() { return Ok(Uint128::zero()); } - if block_time == cliff_time.u64() { + if block_time.seconds() == cliff_time.u64() { return Ok(self.cliff_amount); } - if block_time >= end_time.u64() { + if block_time.seconds() >= end_time.u64() { return Ok(self.vesting_amount); } let remaining_token = self.vesting_amount.checked_sub(self.cliff_amount)?; let vested_token = remaining_token - .checked_mul(Uint128::from(block_time - cliff_time.u64()))? + .checked_mul(Uint128::from(block_time.seconds() - cliff_time.u64()))? .checked_div(Uint128::from(end_time - cliff_time))?; Ok(vested_token + self.cliff_amount) diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index da589e8..4cd33cf 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -297,7 +297,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { &env, mock_info("addr0042", &[]), msg, - StdError::generic_err("Unauthorized").into(), + StdError::generic_err("Sender addr0042 is unauthorized to reward users.").into(), ); // zero amount vesting token @@ -361,7 +361,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { mock_info("addr0000", &[Coin::new(999u128, "uusd")]), msg, StdError::generic_err( - "Insufficient funds for all rewards. Have 2000 but want 10000", + "Insufficient funds for all rewards. Contract has 2000 available but trying to allocate 10000", ) .into(), ); @@ -625,7 +625,7 @@ fn register_vesting_account_with_native_token() -> TestResult { Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { assert_eq!( msg, - "Insufficient funds for all rewards. Have 1000 but want 1000001" + "Insufficient funds for all rewards. Contract has 1000 available but trying to allocate 1000001" ) } _ => panic!("should not enter. got result: {res:?}"), @@ -657,7 +657,7 @@ fn register_vesting_account_with_native_token() -> TestResult { Err(ContractError::Std(StdError::GenericErr { msg, .. })) => { assert_eq!( msg, - "Insufficient funds for all rewards. Have 1000 but want 1001" + "Insufficient funds for all rewards. Contract has 1000 available but trying to allocate 1001" ) } _ => panic!("should not enter. got result: {res:?}"), @@ -912,7 +912,7 @@ fn deregister_err_nonexistent_vesting_account() -> TestResult { from_json(res.data.unwrap()).unwrap(); assert!(!response_items[0].success); let error_msg = response_items[0].clone().error_msg; - if !error_msg.contains("not found") { + if !error_msg.contains("Failed to deregister vesting account: Generic error: User nonexistent does not have a vesting account.") { panic!("Unexpected error message {error_msg:?}") } Ok(()) @@ -932,7 +932,7 @@ fn deregister_err_unauthorized_vesting_account() -> TestResult { &env, mock_info("addr0042", &[]), msg, - StdError::generic_err("Unauthorized").into(), + StdError::generic_err("Sender addr0042 is not authorized to deregister vesting accounts.").into(), ); Ok(()) } From 9453c84eb57bb77c455d6fe879d6178ae414f010 Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:24:37 -0500 Subject: [PATCH 13/29] feat(core-token-vesting-v2): add query for multiple vesting accounts (#137) * refactor(core-token-vesting-v2): use references instead of clone * chore: run linter * refactor: use move instead of clone * refactor: don't use StdResult when unneeded * refactor: create better error messages * feat(core-token-vesting): add query for multiple vesting accounts and tests --- .../core-token-vesting-v2/src/contract.rs | 29 ++++++-- contracts/core-token-vesting-v2/src/msg.rs | 3 + .../core-token-vesting-v2/src/testing.rs | 69 ++++++++++++++++++- 3 files changed, 92 insertions(+), 9 deletions(-) diff --git a/contracts/core-token-vesting-v2/src/contract.rs b/contracts/core-token-vesting-v2/src/contract.rs index a0cfc75..f342676 100644 --- a/contracts/core-token-vesting-v2/src/contract.rs +++ b/contracts/core-token-vesting-v2/src/contract.rs @@ -1,7 +1,9 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{ - to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, Env, MessageInfo, Response, StdError, StdResult, Storage, Timestamp, Uint128 + to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, + Env, MessageInfo, Response, StdError, StdResult, Storage, Timestamp, + Uint128, }; use std::cmp::min; @@ -430,17 +432,31 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { address, start_after: _start_after, limit: _limit, - } => to_json_binary(&vesting_account(deps, env, address)?), + } => to_json_binary(&vesting_account(deps, &env, address)?), + QueryMsg::VestingAccounts { address } => { + to_json_binary(&vesting_accounts(deps, &env, address)?) + } } } +// query multiple vesting accounts, with the provided vec of addresses +fn vesting_accounts( + deps: Deps, + env: &Env, + addresses: Vec, +) -> StdResult> { + let mut res = vec![]; + for address in addresses { + res.push(vesting_account(deps, env, address)?); + } + Ok(res) +} + /// address: Bech 32 address for the owner of the vesting accounts. This will be /// the prefix we filter by in state. -/// limit: Maximum number of vesting accounts to retrieve when reading the -/// VESTING_ACCOUNTs store. fn vesting_account( deps: Deps, - env: Env, + env: &Env, address: String, ) -> StdResult { let account = VESTING_ACCOUNTS.may_load(deps.storage, address.as_str())?; @@ -453,8 +469,7 @@ fn vesting_account( vestings: vec![], }), Some(account) => { - let vested_amount = - account.vested_amount(env.block.time)?; + let vested_amount = account.vested_amount(env.block.time)?; let vesting_schedule_query = from_vesting_to_query_output( &account.vesting_schedule, diff --git a/contracts/core-token-vesting-v2/src/msg.rs b/contracts/core-token-vesting-v2/src/msg.rs index 7b0194f..25f2255 100644 --- a/contracts/core-token-vesting-v2/src/msg.rs +++ b/contracts/core-token-vesting-v2/src/msg.rs @@ -91,6 +91,9 @@ pub enum QueryMsg { start_after: Option, limit: Option, }, + VestingAccounts { + address: Vec, + } } #[cw_serde] diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index 4cd33cf..f4a07c0 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -297,7 +297,10 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { &env, mock_info("addr0042", &[]), msg, - StdError::generic_err("Sender addr0042 is unauthorized to reward users.").into(), + StdError::generic_err( + "Sender addr0042 is unauthorized to reward users.", + ) + .into(), ); // zero amount vesting token @@ -932,7 +935,10 @@ fn deregister_err_unauthorized_vesting_account() -> TestResult { &env, mock_info("addr0042", &[]), msg, - StdError::generic_err("Sender addr0042 is not authorized to deregister vesting accounts.").into(), + StdError::generic_err( + "Sender addr0042 is not authorized to deregister vesting accounts.", + ) + .into(), ); Ok(()) } @@ -975,3 +981,62 @@ fn deregister_successful() -> TestResult { )?; Ok(()) } + +#[test] +fn query_vesting_accounts() -> TestResult { + // Set up the environment with a block time before the vesting start time + let (mut deps, env) = setup_with_block_time(105)?; + + let register_msg = ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(5000u128), + cliff_amount: Uint128::new(1250u128), + }], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + cliff_time: Uint64::new(105), + }, + }; + + execute( + deps.as_mut(), + env.clone(), // Use the custom environment with the adjusted block time + testing::mock_info("admin-sender", &[]), + register_msg, + )?; + + let res = query( + deps.as_ref(), + env, + QueryMsg::VestingAccounts { + address: vec!["addr0001".to_string()], + }, + )?; + + let response_items: Vec = from_json(res).unwrap(); + assert_eq!( + response_items[0], + VestingAccountResponse { + address: "addr0001".to_string(), + vestings: vec![VestingData { + master_address: Some("admin-sender".to_string()), + vesting_amount: Uint128::new(5000u128), + vesting_schedule: + VestingScheduleQueryOutput::LinearVestingWithCliff { + start_time: Uint64::new(100), + end_time: Uint64::new(110), + cliff_time: Uint64::new(105), + vesting_amount: Uint128::new(5000u128), + cliff_amount: Uint128::new(1250u128), + }, + vesting_denom: cw20::Denom::Native("token".to_string()), + vested_amount: Uint128::new(1250u128), + claimable_amount: Uint128::new(1250u128), + }] + } + ); + + Ok(()) +} From ddc4387bef54e52df16bbe3e3e687e732fc8836f Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:21:37 -0500 Subject: [PATCH 14/29] fix(core-token-vesting-v2): deregister should send tokens to recipient and admin (#138) * fix(core-token-vesting-v2): deregister should send tokens to recipient and admin * refactor: pass in mutable message vec --- .../core-token-vesting-v2/src/contract.rs | 14 ++++--- .../core-token-vesting-v2/src/testing.rs | 40 +++++++++++++++++-- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/contracts/core-token-vesting-v2/src/contract.rs b/contracts/core-token-vesting-v2/src/contract.rs index f342676..d51fc95 100644 --- a/contracts/core-token-vesting-v2/src/contract.rs +++ b/contracts/core-token-vesting-v2/src/contract.rs @@ -2,7 +2,7 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{ to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, - Env, MessageInfo, Response, StdError, StdResult, Storage, Timestamp, + Env, MessageInfo, Response, StdError, StdResult, Storage, SubMsg, Timestamp, Uint128, }; use std::cmp::min; @@ -252,6 +252,7 @@ fn deregister_vesting_accounts( let mut res = vec![]; let mut attrs: Vec = vec![]; + let mut messages: Vec = vec![]; for address in addresses { let result = deregister_vesting_account( @@ -259,6 +260,7 @@ fn deregister_vesting_accounts( env.block.time, &address, &whitelist.admin, + &mut messages, ); match result { @@ -284,6 +286,7 @@ fn deregister_vesting_accounts( } Ok(Response::new() + .add_messages(messages) .add_attributes(attrs) .add_attribute("action", "deregister_vesting_accounts") .set_data(to_json_binary(&res).unwrap())) @@ -294,9 +297,8 @@ fn deregister_vesting_account( timestamp: Timestamp, address: &str, admin_address: &str, + messages: &mut Vec, ) -> Result { - let mut messages: Vec = vec![]; - // vesting_account existence check let account = VESTING_ACCOUNTS.may_load(storage, address)?; let denom = DENOM.load(storage)?; @@ -319,7 +321,7 @@ fn deregister_vesting_account( // transfer already vested amount to the user let claimable_amount = vested_amount.checked_sub(claimed_amount)?; send_if_amount_is_not_zero( - &mut messages, + messages, claimable_amount, &denom, address, @@ -329,13 +331,13 @@ fn deregister_vesting_account( let left_vesting_amount = account.vesting_amount.checked_sub(vested_amount)?; send_if_amount_is_not_zero( - &mut messages, + messages, left_vesting_amount, &denom, admin_address, )?; - Ok(Response::new().add_messages(messages).add_attributes(vec![ + Ok(Response::new().add_attributes(vec![ ("action", "deregister_vesting_account"), ("address", address), ("vesting_amount", &account.vesting_amount.to_string()), diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index f4a07c0..def135f 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -946,18 +946,18 @@ fn deregister_err_unauthorized_vesting_account() -> TestResult { #[test] fn deregister_successful() -> TestResult { // Set up the environment with a block time before the vesting start time - let (mut deps, env) = setup_with_block_time(50)?; + let (mut deps, env) = setup_with_block_time(105)?; let register_msg = ExecuteMsg::RewardUsers { rewards: vec![RewardUserRequest { user_address: "addr0001".to_string(), vesting_amount: Uint128::new(5000u128), - cliff_amount: Uint128::zero(), + cliff_amount: Uint128::new(1250u128), }], vesting_schedule: VestingSchedule::LinearVestingWithCliff { start_time: Uint64::new(100), - end_time: Uint64::new(110), cliff_time: Uint64::new(105), + end_time: Uint64::new(110), }, }; @@ -973,12 +973,44 @@ fn deregister_successful() -> TestResult { addresses: vec!["addr0001".to_string()], }; - let _res = execute( + let res = execute( deps.as_mut(), env, // Use the custom environment with the adjusted block time testing::mock_info("manager-sender", &[]), msg, )?; + let data = + from_json::>(res.data.unwrap()).unwrap(); + + assert_eq!( + data[0], + DeregisterUserResponse { + user_address: "addr0001".to_string(), + success: true, + error_msg: "".to_string(), + } + ); + assert_eq!(res.messages.len(), 2); + assert_eq!( + res.messages[0], + SubMsg::new(BankMsg::Send { + to_address: "addr0001".to_string(), + amount: vec![Coin { + denom: "token".to_string(), + amount: Uint128::new(1250u128), + }], + }) + ); + assert_eq!( + res.messages[1], + SubMsg::new(BankMsg::Send { + to_address: "admin-sender".to_string(), + amount: vec![Coin { + denom: "token".to_string(), + amount: Uint128::new(3750u128), + }], + }) + ); Ok(()) } From 3ad5d5efb9bcc991435c8bf5fedafe0b1f239094 Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:59:20 -0500 Subject: [PATCH 15/29] refactor(core-token-vesting-v2)!: remove recipient (#139) * refactor: remove recipient * chore: bump package version * refactor: remove denom field in Claim msg --- Cargo.lock | 2 +- contracts/core-token-vesting-v2/Cargo.toml | 2 +- .../core-token-vesting-v2/src/contract.rs | 41 ++++++------------- contracts/core-token-vesting-v2/src/msg.rs | 8 +--- .../core-token-vesting-v2/src/testing.rs | 8 +--- 5 files changed, 18 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ff94ce..39e2a96 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -371,7 +371,7 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-token-vesting-v2" -version = "2.0.0" +version = "2.1.0" dependencies = [ "anyhow", "cosmwasm-schema", diff --git a/contracts/core-token-vesting-v2/Cargo.toml b/contracts/core-token-vesting-v2/Cargo.toml index 02b11cb..3cd727c 100644 --- a/contracts/core-token-vesting-v2/Cargo.toml +++ b/contracts/core-token-vesting-v2/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "core-token-vesting-v2" -version = "2.0.0" +version = "2.1.0" edition = "2021" description = "Token vesting contract v2" diff --git a/contracts/core-token-vesting-v2/src/contract.rs b/contracts/core-token-vesting-v2/src/contract.rs index d51fc95..32ba435 100644 --- a/contracts/core-token-vesting-v2/src/contract.rs +++ b/contracts/core-token-vesting-v2/src/contract.rs @@ -2,7 +2,7 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{ to_json_binary, Attribute, BankMsg, Binary, Coin, CosmosMsg, Deps, DepsMut, - Env, MessageInfo, Response, StdError, StdResult, Storage, SubMsg, Timestamp, + Env, MessageInfo, Response, StdError, StdResult, Storage, Timestamp, Uint128, }; use std::cmp::min; @@ -77,13 +77,8 @@ pub fn execute( ExecuteMsg::DeregisterVestingAccounts { addresses } => { deregister_vesting_accounts(deps, env, info, addresses) } - ExecuteMsg::Claim { - denoms: _denoms, - recipient, - } => claim(deps, env, info, recipient), - ExecuteMsg::Withdraw { amount, recipient } => { - withdraw(deps, env, info, amount, recipient) - } + ExecuteMsg::Claim { } => claim(deps, env, info), + ExecuteMsg::Withdraw { amount } => withdraw(deps, env, info, amount), } } @@ -95,15 +90,15 @@ pub fn withdraw( _env: Env, info: MessageInfo, amount: Uint128, - recipient: String, ) -> Result { let whitelist = WHITELIST.load(deps.storage)?; let mut unallocated_amount = UNALLOCATED_AMOUNT.load(deps.storage)?; let denom = DENOM.load(deps.storage)?; - if !whitelist.is_admin(info.sender) { + if !whitelist.is_admin(&info.sender) { return Err(StdError::generic_err("Unauthorized").into()); } + let recipient = info.sender.as_str(); let amount_max = min(amount, unallocated_amount); if amount_max.is_zero() { @@ -113,13 +108,10 @@ pub fn withdraw( unallocated_amount -= amount_max; UNALLOCATED_AMOUNT.save(deps.storage, &unallocated_amount)?; - // validate recipient address - deps.api.addr_validate(&recipient)?; - Ok(Response::new() - .add_messages(vec![build_send_msg(&denom, amount_max, &recipient)]) + .add_messages(vec![build_send_msg(&denom, amount_max, recipient)]) .add_attribute("action", "withdraw") - .add_attribute("recipient", &recipient) + .add_attribute("recipient", recipient) .add_attribute("amount", amount_max.to_string()) .add_attribute("unallocated_amount", unallocated_amount.to_string())) } @@ -320,12 +312,7 @@ fn deregister_vesting_account( // transfer already vested amount to the user let claimable_amount = vested_amount.checked_sub(claimed_amount)?; - send_if_amount_is_not_zero( - messages, - claimable_amount, - &denom, - address, - )?; + send_if_amount_is_not_zero(messages, claimable_amount, &denom, address)?; // transfer left vesting amount to the admin let left_vesting_amount = @@ -366,16 +353,14 @@ fn claim( deps: DepsMut, env: Env, info: MessageInfo, - recipient: Option, ) -> Result { - let sender = &info.sender; - let recipient = &recipient.unwrap_or_else(|| sender.to_string()); + let recipient = info.sender.as_str(); let denom = DENOM.load(deps.storage)?; let mut attrs: Vec = vec![]; // vesting_account existence check - let account = VESTING_ACCOUNTS.may_load(deps.storage, sender.as_str())?; + let account = VESTING_ACCOUNTS.may_load(deps.storage, recipient)?; if account.is_none() { return Err(StdError::generic_err(format!( "vesting entry is not found for denom {}", @@ -395,9 +380,9 @@ fn claim( account.claimed_amount = vested_amount; if account.claimed_amount == account.vesting_amount { - VESTING_ACCOUNTS.remove(deps.storage, sender.as_str()); + VESTING_ACCOUNTS.remove(deps.storage, recipient); } else { - VESTING_ACCOUNTS.save(deps.storage, sender.as_str(), &account)?; + VESTING_ACCOUNTS.save(deps.storage, recipient, &account)?; } attrs.extend( @@ -412,7 +397,7 @@ fn claim( Ok(Response::new() .add_messages(vec![build_send_msg(&denom, claimable_amount, recipient)]) - .add_attributes(vec![("action", "claim"), ("address", sender.as_str())]) + .add_attributes(vec![("action", "claim"), ("address", recipient)]) .add_attributes(attrs)) } diff --git a/contracts/core-token-vesting-v2/src/msg.rs b/contracts/core-token-vesting-v2/src/msg.rs index 25f2255..6595111 100644 --- a/contracts/core-token-vesting-v2/src/msg.rs +++ b/contracts/core-token-vesting-v2/src/msg.rs @@ -33,15 +33,11 @@ pub enum ExecuteMsg { }, /// Claim is an operation that allows one to claim vested tokens. - Claim { - denoms: Vec, - recipient: Option, - }, + Claim {}, // Withdraw allows the admin to withdraw the funds from the contract Withdraw { amount: Uint128, - recipient: String, }, } @@ -93,7 +89,7 @@ pub enum QueryMsg { }, VestingAccounts { address: Vec, - } + }, } #[cw_serde] diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index def135f..e73585d 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -498,7 +498,6 @@ fn test_withdraw() -> TestResult { // unauthorized sender let msg = ExecuteMsg::Withdraw { - recipient: "addr0000".to_string(), amount: Uint128::new(1000), }; require_error( @@ -511,7 +510,6 @@ fn test_withdraw() -> TestResult { // withdraw more than unallocated let msg = ExecuteMsg::Withdraw { - recipient: "addr0000".to_string(), amount: Uint128::new(1001), }; let res = @@ -541,7 +539,6 @@ fn test_withdraw() -> TestResult { // withdraw but there's no more unallocated let msg = ExecuteMsg::Withdraw { - recipient: "addr0000".to_string(), amount: Uint128::new(1), }; require_error( @@ -796,10 +793,7 @@ fn claim_native() -> TestResult { // valid claim let info = mock_info("addr0001", &[]); - let msg = ExecuteMsg::Claim { - recipient: None, - denoms: vec![], - }; + let msg = ExecuteMsg::Claim {}; let res = execute(deps.as_mut(), env.clone(), info.clone(), msg.clone())?; assert_eq!( From 4b0444f6fa8bc2af5c31f570f9424d1c62dfa7c2 Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Thu, 14 Mar 2024 00:47:28 -0500 Subject: [PATCH 16/29] refactor(core-token-vesting-v2): deregister returns all unclaimed funds (#141) --- .../core-token-vesting-v2/src/contract.rs | 14 +++-- .../core-token-vesting-v2/src/testing.rs | 54 +++++++++---------- 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/contracts/core-token-vesting-v2/src/contract.rs b/contracts/core-token-vesting-v2/src/contract.rs index 32ba435..acbfc13 100644 --- a/contracts/core-token-vesting-v2/src/contract.rs +++ b/contracts/core-token-vesting-v2/src/contract.rs @@ -308,18 +308,14 @@ fn deregister_vesting_account( VESTING_ACCOUNTS.remove(storage, address); let vested_amount = account.vested_amount(timestamp)?; - let claimed_amount = account.claimed_amount; + let left_vesting_amount = account.vesting_amount.checked_sub(vested_amount)?; - // transfer already vested amount to the user - let claimable_amount = vested_amount.checked_sub(claimed_amount)?; - send_if_amount_is_not_zero(messages, claimable_amount, &denom, address)?; + let recoverable_amount = account.vesting_amount - account.claimed_amount; + // transfer all that's unclaimed to the admin - // transfer left vesting amount to the admin - let left_vesting_amount = - account.vesting_amount.checked_sub(vested_amount)?; send_if_amount_is_not_zero( messages, - left_vesting_amount, + recoverable_amount, &denom, admin_address, )?; @@ -330,6 +326,8 @@ fn deregister_vesting_account( ("vesting_amount", &account.vesting_amount.to_string()), ("vested_amount", &vested_amount.to_string()), ("left_vesting_amount", &left_vesting_amount.to_string()), + ("claimed_amount", &account.claimed_amount.to_string()), + ("recoverable_amount", &recoverable_amount.to_string()), ])) } diff --git a/contracts/core-token-vesting-v2/src/testing.rs b/contracts/core-token-vesting-v2/src/testing.rs index e73585d..01de747 100644 --- a/contracts/core-token-vesting-v2/src/testing.rs +++ b/contracts/core-token-vesting-v2/src/testing.rs @@ -942,36 +942,40 @@ fn deregister_successful() -> TestResult { // Set up the environment with a block time before the vesting start time let (mut deps, env) = setup_with_block_time(105)?; - let register_msg = ExecuteMsg::RewardUsers { - rewards: vec![RewardUserRequest { - user_address: "addr0001".to_string(), - vesting_amount: Uint128::new(5000u128), - cliff_amount: Uint128::new(1250u128), - }], - vesting_schedule: VestingSchedule::LinearVestingWithCliff { - start_time: Uint64::new(100), - cliff_time: Uint64::new(105), - end_time: Uint64::new(110), - }, - }; - execute( deps.as_mut(), env.clone(), // Use the custom environment with the adjusted block time testing::mock_info("admin-sender", &[]), - register_msg, + ExecuteMsg::RewardUsers { + rewards: vec![RewardUserRequest { + user_address: "addr0001".to_string(), + vesting_amount: Uint128::new(5000u128), + cliff_amount: Uint128::new(1250u128), + }], + vesting_schedule: VestingSchedule::LinearVestingWithCliff { + start_time: Uint64::new(100), + cliff_time: Uint64::new(105), + end_time: Uint64::new(110), + }, + }, )?; - // Deregister with the manager address - let msg = ExecuteMsg::DeregisterVestingAccounts { - addresses: vec!["addr0001".to_string()], - }; + // claim some of it + execute( + deps.as_mut(), + env.clone(), + testing::mock_info("addr0001", &[]), + ExecuteMsg::Claim {}, + )?; + // Deregister with the manager address let res = execute( deps.as_mut(), env, // Use the custom environment with the adjusted block time testing::mock_info("manager-sender", &[]), - msg, + ExecuteMsg::DeregisterVestingAccounts { + addresses: vec!["addr0001".to_string()], + }, )?; let data = from_json::>(res.data.unwrap()).unwrap(); @@ -984,19 +988,9 @@ fn deregister_successful() -> TestResult { error_msg: "".to_string(), } ); - assert_eq!(res.messages.len(), 2); + assert_eq!(res.messages.len(), 1); assert_eq!( res.messages[0], - SubMsg::new(BankMsg::Send { - to_address: "addr0001".to_string(), - amount: vec![Coin { - denom: "token".to_string(), - amount: Uint128::new(1250u128), - }], - }) - ); - assert_eq!( - res.messages[1], SubMsg::new(BankMsg::Send { to_address: "admin-sender".to_string(), amount: vec![Coin { From 21dbc5c301a0e6b5cf52dcd7a4f17c59290107c4 Mon Sep 17 00:00:00 2001 From: Unique Divine <51418232+Unique-Divine@users.noreply.github.com> Date: Tue, 19 Mar 2024 07:28:18 -0500 Subject: [PATCH 17/29] feat(broker-bank): smart contract as broker for bank transfers (#134) * docs(cw3-flex-msig): Add usage guide to README * clean: ignore schema directories * feat(broker-bank): smart contract as broker for bank transfers * test(broker-bank): more test cases + cleanup * test(broker-bank): ExecuteMsg::Withdraw * test(broker-bank): exec toggle halt * test(broker-bank): exec edit opers * fix: fix bank send is_halted handling --------- Co-authored-by: matthiasmatt --- .gitignore | 1 + Cargo.lock | 17 + contracts/broker-bank/.cargo/config | 4 + contracts/broker-bank/Cargo.toml | 28 + contracts/broker-bank/src/contract.rs | 760 ++++++++++++++++++++++++ contracts/broker-bank/src/error.rs | 45 ++ contracts/broker-bank/src/events.rs | 33 + contracts/broker-bank/src/lib.rs | 14 + contracts/broker-bank/src/msgs.rs | 58 ++ contracts/broker-bank/src/oper_perms.rs | 71 +++ contracts/broker-bank/src/state.rs | 29 + contracts/broker-bank/src/tutil.rs | 62 ++ contracts/core-shifter/src/contract.rs | 15 +- contracts/core-shifter/src/msgs.rs | 31 +- nibiru-std/src/errors.rs | 1 - 15 files changed, 1144 insertions(+), 25 deletions(-) create mode 100644 contracts/broker-bank/.cargo/config create mode 100644 contracts/broker-bank/Cargo.toml create mode 100644 contracts/broker-bank/src/contract.rs create mode 100644 contracts/broker-bank/src/error.rs create mode 100644 contracts/broker-bank/src/events.rs create mode 100644 contracts/broker-bank/src/lib.rs create mode 100644 contracts/broker-bank/src/msgs.rs create mode 100644 contracts/broker-bank/src/oper_perms.rs create mode 100644 contracts/broker-bank/src/state.rs create mode 100644 contracts/broker-bank/src/tutil.rs diff --git a/.gitignore b/.gitignore index 73b6eda..ed42a4f 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ yarn.lock contracts/*/.editorconfig packages/*/.editorconfig +contracts/*/schema lcov.info .DS_Store diff --git a/Cargo.lock b/Cargo.lock index 39e2a96..37e62b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -219,6 +219,23 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" +[[package]] +name = "broker-bank" +version = "0.1.0" +dependencies = [ + "anyhow", + "cosmwasm-schema", + "cosmwasm-std", + "cw-ownable", + "cw-storage-plus", + "cw2", + "nibiru-std", + "schemars", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "bstr" version = "1.9.1" diff --git a/contracts/broker-bank/.cargo/config b/contracts/broker-bank/.cargo/config new file mode 100644 index 0000000..b613a59 --- /dev/null +++ b/contracts/broker-bank/.cargo/config @@ -0,0 +1,4 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +schema = "run --example schema" diff --git a/contracts/broker-bank/Cargo.toml b/contracts/broker-bank/Cargo.toml new file mode 100644 index 0000000..1e8ed07 --- /dev/null +++ b/contracts/broker-bank/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "broker-bank" +version = "0.1.0" +edition = "2021" +homepage = "https://nibiru.fi" +repository = "https://github.com/NibiruChain/cw-nibiru" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +# library = [] + +[dependencies] +cosmwasm-std = { workspace = true } +cosmwasm-schema = { workspace = true } +cw-storage-plus = { workspace = true } +schemars = { workspace = true } +serde = { workspace = true } +thiserror = { workspace = true } +nibiru-std = { workspace = true } +cw2 = { workspace = true } +serde_json = { workspace = true } +cw-ownable = { workspace = true } +anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/broker-bank/src/contract.rs b/contracts/broker-bank/src/contract.rs new file mode 100644 index 0000000..7acd460 --- /dev/null +++ b/contracts/broker-bank/src/contract.rs @@ -0,0 +1,760 @@ +use std::collections::BTreeSet; + +use cosmwasm_std::{ + self as cw_std, attr, to_json_binary, AllBalanceResponse, BankMsg, + BankQuery, Binary, Deps, DepsMut, Env, MessageInfo, QueryRequest, Response, + StdResult, +}; + +use crate::oper_perms::Permissions; +use crate::{ + msgs::{PermsStatus, QueryMsg}, + oper_perms, + state::{Log, IS_HALTED, LOGS, OPERATORS}, +}; + +use cw2::set_contract_version; + +use crate::{ + error::ContractError, + events::{event_bank_send, event_toggle_halt, event_withdraw}, + msgs::{ExecuteMsg, InstantiateMsg}, + state::TO_ADDRS, +}; + +#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + set_contract_version( + deps.storage, + format!("crates.io:{CONTRACT_NAME}"), + CONTRACT_VERSION, + )?; + cw_ownable::initialize_owner(deps.storage, deps.api, Some(&msg.owner))?; + TO_ADDRS.save(deps.storage, &msg.to_addrs)?; + OPERATORS.save(deps.storage, &msg.opers)?; + IS_HALTED.save(deps.storage, &false)?; + Ok(Response::default()) +} + +#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + let contract_addr = env.contract.address.to_string(); + match msg { + ExecuteMsg::BankSend { coins, to } => { + // assert sender is operator + Permissions::assert_operator(deps.storage, info.sender.to_string())?; + // assert: Operator execute calls should not be halted. + let is_halted = IS_HALTED.load(deps.storage)?; + assert_not_halted(is_halted)?; + + // assert: Recipient addr must be in the TO_ADDRS set. + if !TO_ADDRS.load(deps.storage)?.contains(&to) { + return Err(ContractError::ToAddrNotAllowed { + to_addr: to.to_string(), + }); + } + + // Events and tx history logging + let coins_json = serde_json::to_string(&coins)?; + let event = event_bank_send(&coins_json, info.sender.as_str()); + LOGS.push_front( + deps.storage, + &Log { + block_height: env.block.height, + sender_addr: info.sender.to_string(), + event: event.clone(), + }, + )?; + + // Reply with TxMsg to send funds + Ok(Response::new() + .add_message(BankMsg::Send { + to_address: to, + amount: coins, + }) + .add_event(event)) + } + + ExecuteMsg::ToggleHalt {} => { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let new_is_halted = !IS_HALTED.load(deps.storage)?; + IS_HALTED.save(deps.storage, &new_is_halted)?; + Ok(Response::new().add_event(event_toggle_halt(&new_is_halted))) + } + + ExecuteMsg::UpdateOwnership(action) => { + Ok(execute_update_ownership(deps, env, info, action)?) + } + + ExecuteMsg::EditOpers(action) => { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let mut perms = Permissions::load(deps.storage)?; + let api = deps.api; + match action { + oper_perms::Action::AddOper { address } => { + let addr = api.addr_validate(address.as_str())?; + perms.operators.insert(addr.into_string()); + OPERATORS.save(deps.storage, &perms.operators)?; + + let res = Response::new().add_attributes(vec![ + attr("action", "add_operator"), + attr("address", address), + ]); + Ok(res) + } + + oper_perms::Action::RemoveOper { address } => { + perms.operators.remove(address.as_str()); + OPERATORS.save(deps.storage, &perms.operators)?; + + let res = Response::new().add_attributes(vec![ + attr("action", "remove_operator"), + attr("address", address), + ]); + Ok(res) + } + } + } + + ExecuteMsg::WithdrawAll { to } => { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let to_addr: String = match to { + Some(given_to_addr) => given_to_addr, + None => info.sender.to_string(), + }; + let balances = query_bank_balances(contract_addr, deps.as_ref())?; + let tx_msg = BankMsg::Send { + to_address: to_addr.to_string(), + amount: balances.amount.clone(), + }; + let event = event_withdraw( + serde_json::to_string(&balances.amount)?.as_str(), + &to_addr, + ); + LOGS.push_front( + deps.storage, + &Log { + block_height: env.block.height, + sender_addr: info.sender.to_string(), + event: event.clone(), + }, + )?; + Ok(Response::new().add_message(tx_msg).add_event(event)) + } + + ExecuteMsg::Withdraw { to, denoms } => { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let to_addr: String = match to { + Some(given_to_addr) => given_to_addr, + None => info.sender.to_string(), + }; + let balances: AllBalanceResponse = + query_bank_balances(contract_addr, deps.as_ref())?; + let balances: Vec = balances + .amount + .iter() + .filter(|b_coin| denoms.contains(&b_coin.denom)) + .cloned() + .collect(); + + let tx_msg = BankMsg::Send { + to_address: to_addr.to_string(), + amount: balances.clone(), + }; + let event = event_withdraw( + serde_json::to_string(&balances)?.as_str(), + &to_addr, + ); + LOGS.push_front( + deps.storage, + &Log { + block_height: env.block.height, + sender_addr: info.sender.to_string(), + event: event.clone(), + }, + )?; + Ok(Response::new().add_message(tx_msg).add_event(event)) + } + } +} + +fn execute_update_ownership( + deps: DepsMut, + env: Env, + info: MessageInfo, + action: cw_ownable::Action, +) -> Result { + let ownership = + cw_ownable::update_ownership(deps, &env.block, &info.sender, action)?; + Ok(Response::new().add_attributes(ownership.into_attributes())) +} + +fn assert_not_halted(is_halted: bool) -> Result<(), ContractError> { + match is_halted { + true => Err(ContractError::OperationsHalted), + false => Ok(()), + } +} + +pub const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME"); +pub const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)] +pub fn query( + deps: Deps, + _env: Env, + msg: QueryMsg, +) -> Result { + match msg { + QueryMsg::Perms {} => { + let perms_status: PermsStatus = query_perms_status(deps)?; + Ok(to_json_binary(&perms_status)?) + } + QueryMsg::Ownership {} => { + Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) + } + } +} + +pub fn query_accepted_denoms(deps: Deps) -> StdResult> { + TO_ADDRS.load(deps.storage) +} + +/// Query all bank balances or return an empty response. +/// +/// ```rust +/// use broker_bank::contract::query_bank_balances; +/// use cosmwasm_std::{ +/// testing::{mock_dependencies, mock_env}, +/// AllBalanceResponse, DepsMut, Env, StdResult}; +/// +/// let env: Env = mock_env(); +/// let mut deps = mock_dependencies(); +/// let mut deps: DepsMut = deps.as_mut(); +/// let contract_addr = env.contract.address.to_string(); +/// let balances: StdResult = +/// query_bank_balances(contract_addr.to_string(), deps.as_ref()); +/// assert!(balances.is_ok()) +/// ``` +pub fn query_bank_balances( + addr: String, + deps: Deps, +) -> StdResult { + let query_result = + deps.querier + .query(&QueryRequest::Bank(BankQuery::AllBalances { + address: addr, + }))?; + let balances: AllBalanceResponse = match query_result { + Some(res) => res, + None => AllBalanceResponse::default(), + }; + Ok(balances) +} + +/// Query the permissions status for the contract owner and operators +pub fn query_perms_status(deps: Deps) -> Result { + let perms = oper_perms::Permissions::load(deps.storage)?; + let perms_status = PermsStatus { + perms, + is_halted: IS_HALTED.load(deps.storage)?, + }; + Ok(perms_status) +} + +#[cfg(test)] +pub mod tests { + use std::collections::BTreeSet; + + use cosmwasm_std::{self as cw_std}; + use cw_std::{ + from_json, testing, BankMsg, Coin, CosmosMsg, Response, SubMsg, Uint128, + }; + use nibiru_std::errors::TestResult; + use serde::Serialize; + + use crate::{ + contract::{execute, query}, + msgs::{ExecuteMsg, PermsStatus, QueryMsg}, + oper_perms::{self, Permissions}, + state::{IS_HALTED, OPERATORS}, + tutil::{ + self, mock_info_for_sender, setup_contract, setup_contract_defaults, + TEST_OWNER, + }, + }; + + struct TestCaseExec<'a> { + to_addrs: Vec, + opers: Vec, + exec_msg: ExecuteMsg, + sender: &'a str, + err: Option<&'a str>, + contract_funds_start: Option>, + resp_msgs: Vec, + } + + /// Test that all owner-gated execute calls fail when the tx sender is not + /// the smart contract owner. + #[test] + pub fn test_assert_owner() -> TestResult { + let not_owner = "not-owner"; + let want_err: Option<&str> = Some("not the contract's current owner"); + + let to_addrs: [String; 2] = + ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + + let test_cases: Vec = vec![ + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::EditOpers(oper_perms::Action::AddOper { + address: String::from("new_oper"), + }), + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::UpdateOwnership( + cw_ownable::Action::TransferOwnership { + new_owner: String::from("new_owner"), + expiry: None, + }, + ), + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::Withdraw { + to: Some(String::from("mm_bybit")), + denoms: vec![].into_iter().collect(), + }, + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::ToggleHalt {}, + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::WithdrawAll { + to: Some(String::from("mm_bybit")), + }, + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + ]; + + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + // send the exec msg and it should fail. + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + assert!(res.is_err()); + let err = res.expect_err("err should be defined"); + let is_contained = err + .to_string() + .contains(tc.err.expect("errors should occur in this test")); + assert!(is_contained, "got error {}", err); + } + Ok(()) + } + + #[test] + fn exec_withdraw() -> TestResult { + let to_addrs: [String; 2] = + ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let test_cases: Vec = vec![ + // WithdrawAll + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: TEST_OWNER, + exec_msg: ExecuteMsg::WithdrawAll { + to: Some(String::from("mm_bybit")), + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![BankMsg::Send { + to_address: String::from("mm_bybit"), + amount: vec![], + } + .into()], + }, + // WithdrawAll / Nonzero amount + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: TEST_OWNER, + exec_msg: ExecuteMsg::WithdrawAll { + to: Some(String::from("to_addr")), + }, + err: None, + contract_funds_start: Some(vec![Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }]), + resp_msgs: vec![BankMsg::Send { + to_address: String::from("to_addr"), + amount: vec![Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }], + } + .into()], + }, + // Withdraw / Nonzero amount + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: TEST_OWNER, + exec_msg: ExecuteMsg::Withdraw { + to: Some(String::from("to_addr")), + denoms: ["uusd"] + .iter() + .map(|str| String::from(*str)) + .collect(), + }, + err: None, + contract_funds_start: Some(vec![ + Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }, + Coin { + denom: "uusd".into(), + amount: Uint128::from(69u128), + }, + ]), + resp_msgs: vec![BankMsg::Send { + to_address: String::from("to_addr"), + amount: vec![Coin { + denom: "uusd".into(), + amount: Uint128::from(69u128), + }], + } + .into()], + }, + ]; + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + if let Some(funds_start) = &tc.contract_funds_start { + // Set up a mock querier with contract balance + let contract_addr = env.contract.address.to_string(); + let balances: &[(&str, &[Coin])] = + &[(contract_addr.as_str(), funds_start.as_slice())]; + let querier = testing::MockQuerier::new(balances); + deps.querier = querier; + } + + // send the exec msg + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + if let Some(want_err) = tc.err { + let got_err = res.expect_err("errors should occur in this test"); + let is_contained = got_err.to_string().contains(want_err); + assert!(is_contained, "got error {}", got_err); + return Ok(()); + } + assert!(res.is_ok()); + + let resp = res?; + let got_resp_msgs: Vec = resp + .messages + .iter() + .map(|sub_msg| CosmosMsgExt(&sub_msg.msg)) + .collect(); + let want_resp_msgs: Vec = + tc.resp_msgs.iter().map(CosmosMsgExt).collect(); + assert_eq!(want_resp_msgs, got_resp_msgs); + } + Ok(()) + } + + #[derive(Debug, Serialize)] + struct CosmosMsgExt<'a>(&'a CosmosMsg); + + impl<'a> PartialEq for CosmosMsgExt<'a> { + fn eq(&self, other: &Self) -> bool { + let err_msg = "cosmos msg should be jsonable"; + let self_str = serde_json::to_string_pretty(self).expect(err_msg); + let other_str = serde_json::to_string_pretty(other).expect(err_msg); + self_str.eq(&other_str) + } + } + + impl<'a> std::fmt::Display for CosmosMsgExt<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", serde_json::to_string_pretty(&self.0).unwrap()) + } + } + + #[test] + pub fn exec_toggle_halt() -> TestResult { + let (mut deps, env, _info) = setup_contract_defaults()?; + + let query_msg = QueryMsg::Perms {}; + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + + let want_is_halted = false; + assert_eq!(resp.is_halted, want_is_halted); + assert_eq!( + resp.perms, + Permissions { + owner: Some(String::from(TEST_OWNER)), + operators: ["oper0", "oper1"] + .into_iter() + .map(String::from) + .collect(), + } + ); + + // ToggleHalt : error case + let exec_msg = ExecuteMsg::ToggleHalt {}; + let sender = "not_owner"; + let info = mock_info_for_sender(sender); + let exec_resp = + execute(deps.as_mut(), env.clone(), info, exec_msg.clone()); + assert!(exec_resp.is_err(), "got {exec_resp:?}"); + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + assert_eq!(resp.is_halted, want_is_halted); + + // ToggleHalt : success case + let sender = TEST_OWNER; + let mut want_is_halted = true; + let info = mock_info_for_sender(sender); + let _exec_resp = + execute(deps.as_mut(), env.clone(), info.clone(), exec_msg.clone())?; + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + assert_eq!(resp.is_halted, want_is_halted); + + want_is_halted = false; + let _exec_resp = + execute(deps.as_mut(), env.clone(), info, exec_msg.clone())?; + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + assert_eq!(resp.is_halted, want_is_halted); + + Ok(()) + } + + // TODO: test ExecuteMsg::EditOpers + // TODO: ownership query + // pub fn get_ownership(storage: &dyn Storage) -> StdResult> + + #[test] + fn exec_edit_opers_add() -> TestResult { + let (mut deps, _env, _info) = tutil::setup_contract_defaults()?; + let new_member = "new_member"; + let perms = Permissions::load(&deps.storage)?; + let not_has: bool = !perms.is_owner(new_member); + assert!(not_has); + + // Add an operator to the permission set + let execute_msg = ExecuteMsg::EditOpers(oper_perms::Action::AddOper { + address: new_member.to_string(), + }); + let sender = tutil::TEST_OWNER; + let execute_info = testing::mock_info(sender, &[]); + + let check_resp = |resp: Response| { + assert_eq!( + resp.messages.len(), + 0, + "resp.messages: {:?}", + resp.messages + ); + assert_eq!( + resp.attributes.len(), + 2, + "resp.attributes: {:#?}", + resp.attributes + ); + }; + + let result = execute( + deps.as_mut(), + testing::mock_env(), + execute_info, + execute_msg, + )?; + check_resp(result); + + // Check correctness of the result + let perms = Permissions::load(&deps.storage)?; + let has: bool = perms.has(new_member); + assert!(has); + + let query_req = QueryMsg::Perms {}; + let binary = query(deps.as_ref(), testing::mock_env(), query_req)?; + let response: PermsStatus = cosmwasm_std::from_json(binary)?; + assert!(response.perms.has(sender)); + Ok(()) + } + + #[test] + fn exec_edit_opers_remove() -> TestResult { + let to_addrs = vec![]; + let opers = vec![]; + let (mut deps, _env, _info) = tutil::setup_contract(to_addrs, opers)?; + // Set up initial perms + let opers_start: Vec = ["vitalik", "musk", "satoshi"] + .iter() + .map(|&s| s.to_string()) + .collect(); + let mut perms = Permissions::load(&deps.storage)?; + assert_eq!(perms.operators.len(), 0); // admin remains + for member in opers_start.iter() { + perms.operators.insert(member.clone()); + } + let res = OPERATORS.save(deps.as_mut().storage, &perms.operators); + assert!(res.is_ok()); + + // Remove a member from the whitelist + let execute_msg = + ExecuteMsg::EditOpers(oper_perms::Action::RemoveOper { + address: "satoshi".to_string(), + }); + let sender = tutil::TEST_OWNER; + let execute_info = testing::mock_info(sender, &[]); + let check_resp = |resp: Response| { + assert_eq!( + resp.messages.len(), + 0, + "resp.messages: {:?}", + resp.messages + ); + assert_eq!( + resp.attributes.len(), + 2, + "resp.attributes: {:#?}", + resp.attributes + ); + }; + let result = execute( + deps.as_mut(), + testing::mock_env(), + execute_info, + execute_msg, + )?; + check_resp(result); + + // Check correctness of the result + let query_req = QueryMsg::Perms {}; + let binary = query(deps.as_ref(), testing::mock_env(), query_req)?; + let response: PermsStatus = cosmwasm_std::from_json(binary)?; + let expected_opers: BTreeSet = + ["vitalik", "musk"].iter().map(|&s| s.to_string()).collect(); + assert_eq!( + response.perms.operators, expected_opers, + "got: {:#?}, wanted: {:#?}", + response.perms.operators, expected_opers + ); + Ok(()) + } + + #[test] + fn exec_bank_send() -> TestResult { + let to_addrs: [String; 2] = + ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let (mut deps, env, _info) = + setup_contract(to_addrs.to_vec(), opers.to_vec())?; + + // Set is_halted to false + IS_HALTED.save(deps.as_mut().storage, &false)?; + + let coins = vec![ + Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }, + Coin { + denom: "uusd".into(), + amount: Uint128::from(69u128), + }, + ]; + + // Success case: valid operator sends coins to an allowed address + let exec_msg = ExecuteMsg::BankSend { + coins: coins.clone(), + to: String::from("mm_bybit"), + }; + let sender = "valid_oper"; + let info = mock_info_for_sender(sender); + let res = execute(deps.as_mut(), env.clone(), info, exec_msg.clone())?; + assert_eq!( + res.messages, + vec![SubMsg::new(CosmosMsg::Bank(BankMsg::Send { + to_address: String::from("mm_bybit"), + amount: coins.clone(), + }))] + ); + + // Error case: unauthorized sender + let exec_msg = ExecuteMsg::BankSend { + coins: coins.clone(), + to: String::from("mm_bybit"), + }; + let sender = "invalid_sender"; + let info = mock_info_for_sender(sender); + let res = execute(deps.as_mut(), env.clone(), info, exec_msg.clone()); + assert!(res.is_err()); + + // Error case: sending to an address not in the allowed list + let exec_msg = ExecuteMsg::BankSend { + coins, + to: String::from("not_allowed_addr"), + }; + let sender = "valid_oper"; + let info = mock_info_for_sender(sender); + let res = execute(deps.as_mut(), env, info, exec_msg); + assert!(res.is_err()); + + Ok(()) + } +} diff --git a/contracts/broker-bank/src/error.rs b/contracts/broker-bank/src/error.rs new file mode 100644 index 0000000..ce41389 --- /dev/null +++ b/contracts/broker-bank/src/error.rs @@ -0,0 +1,45 @@ +use cosmwasm_std::StdError; +use std::collections::BTreeSet; + +use thiserror::Error; + +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("serde_json error: {0}")] + SerdeJson(String), + + #[error("{0}")] + Ownership(#[from] cw_ownable::OwnershipError), + + // #[error("serde_json error: {err:?}")] + // SerdeJson { err: serde_json::error::Error }, + #[error("not implemented")] + NotImplemented, + + #[error("operations are currently halted")] + OperationsHalted, + + #[error("recipient address is not whitelisted (to_addr: {to_addr:?}). Query permissions for more info.")] + ToAddrNotAllowed { to_addr: String }, + + #[error("unknown request")] + UnknownRequest, + + #[error("insufficient permissions: address is not a contract operator ({addr:?})")] + NoOperatorPerms { addr: String }, + + #[error("no need to add denom {denom} to set {denom_set:?}")] + AddExistentDenom { + denom: String, + denom_set: BTreeSet, + }, +} + +impl From for ContractError { + fn from(err: serde_json::Error) -> Self { + ContractError::SerdeJson(err.to_string()) + } +} diff --git a/contracts/broker-bank/src/events.rs b/contracts/broker-bank/src/events.rs new file mode 100644 index 0000000..52af274 --- /dev/null +++ b/contracts/broker-bank/src/events.rs @@ -0,0 +1,33 @@ +use std::collections::BTreeSet; + +use cosmwasm_std::Event; + +pub fn event_bank_send(coins_json: &str, caller: &str) -> Event { + Event::new("broker_bank/send") + .add_attribute("coins", coins_json) + .add_attribute("caller", caller) +} + +pub fn event_toggle_halt(is_halted: &bool) -> Event { + Event::new("broker_bank/toggle_halt") + .add_attribute("new_is_halted", is_halted.to_string()) +} + +pub fn event_withdraw(coins_json: &str, to_addr: &str) -> Event { + Event::new("broker_bank/withdraw") + .add_attribute("coins", coins_json) + .add_attribute("to_addr", to_addr) +} + +pub fn denom_set_json( + denom_set: BTreeSet, +) -> serde_json::Result { + serde_json::to_string(&denom_set) +} + +pub fn event_migrate(_arg0: &u64, _arg1: &bool) -> Event { + // Event::new("migrate_nusd_valuator") + // .add_attribute("id", _arg0.to_string()) + // .add_attribute("new_done", _arg1.to_string()) + todo!(); // TODO: event migrate +} diff --git a/contracts/broker-bank/src/lib.rs b/contracts/broker-bank/src/lib.rs new file mode 100644 index 0000000..52855d4 --- /dev/null +++ b/contracts/broker-bank/src/lib.rs @@ -0,0 +1,14 @@ +pub mod msgs; +pub mod oper_perms; + +#[cfg(test)] +pub mod tutil; + +#[cfg(not(feature = "library"))] +// When imported with the "library" feature, contract.rs will not be compiled. +// This prevents errors related to entry the smart contract's entrypoints, +// enabling its use as a library. +pub mod contract; +pub mod error; +pub mod events; +pub mod state; diff --git a/contracts/broker-bank/src/msgs.rs b/contracts/broker-bank/src/msgs.rs new file mode 100644 index 0000000..9ce0399 --- /dev/null +++ b/contracts/broker-bank/src/msgs.rs @@ -0,0 +1,58 @@ +use std::collections::BTreeSet; + +use cosmwasm_schema::cw_serde; +use cosmwasm_std as cw; + +use crate::oper_perms; + +#[cw_ownable::cw_ownable_execute] +#[cw_serde] +pub enum ExecuteMsg { + /// Send coins to an account the set of "TO_ADDRS", appending transaction + /// info to the "LOGS". This tx msg emits a "broker/bank/send" event + BankSend { coins: Vec, to: String }, + + /// ToggleHalt: Toggles on or off the ability of the operators to use the + /// smart contract. Only callable by the contract owner. + ToggleHalt {}, + + /// Withdraw coins from the broker smart contract balance. Only callable by + /// the contract owner. + Withdraw { + to: Option, + denoms: BTreeSet, + }, + + /// Withdraw all coins from the broker smart contract balance. Only callable + /// by the contract owner. + WithdrawAll { to: Option }, + + /// TODO: owner + EditOpers(oper_perms::Action), + // TODO: feat(broker-bank): Clear logs tx +} + +#[cw_ownable::cw_ownable_query] +#[cw_serde] +#[derive(cosmwasm_schema::QueryResponses)] +pub enum QueryMsg { + /// Perms: Query the smart contract owner, set of operators, and whether + /// operator set is "halted". + #[returns(PermsStatus)] + Perms {}, + // TODO: feat(broker-bank): Logs query +} + +#[cw_serde] +pub struct PermsStatus { + pub is_halted: bool, + pub perms: oper_perms::Permissions, +} + +#[cw_serde] +pub struct InstantiateMsg { + /// The owner is the only one that can use ExecuteMsg. + pub owner: String, + pub to_addrs: BTreeSet, + pub opers: BTreeSet, +} diff --git a/contracts/broker-bank/src/oper_perms.rs b/contracts/broker-bank/src/oper_perms.rs new file mode 100644 index 0000000..47c9d0e --- /dev/null +++ b/contracts/broker-bank/src/oper_perms.rs @@ -0,0 +1,71 @@ +use std::collections::BTreeSet; + +use cosmwasm_schema::cw_serde; +use cosmwasm_std::Storage; + +use crate::{error::ContractError, state::OPERATORS}; + +#[cw_serde] +pub enum Action { + AddOper { address: String }, + RemoveOper { address: String }, +} + +#[cw_serde] +pub struct HasPermsResponse { + pub has_perms: bool, + pub addr: String, + pub perms: Permissions, +} + +#[cw_serde] +pub struct PermsResponse { + pub perms: Permissions, +} + +#[cw_serde] +pub struct Permissions { + pub owner: Option, + pub operators: BTreeSet, +} + +impl Permissions { + pub fn has(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + self.operators.contains(addr) || self.is_owner(addr) + } + + pub fn is_owner(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + if let Some(owner) = &self.owner { + owner == addr + } else { + false + } + } + + pub fn is_operator(&self, addr: impl AsRef) -> bool { + let addr = addr.as_ref(); + self.operators.contains(addr) + } + + pub fn load(storage: &dyn Storage) -> Result { + let owner = cw_ownable::get_ownership(storage)?.owner; + let opers = OPERATORS.load(storage)?; + Ok(Permissions { + owner: owner.map(|addr| addr.into_string()), + operators: opers, + }) + } + + pub fn assert_operator( + storage: &dyn Storage, + addr: String, + ) -> Result { + let perms = Self::load(storage)?; + match perms.is_operator(&addr) || perms.is_owner(&addr) { + true => Ok(perms), + false => Err(ContractError::NoOperatorPerms { addr }), + } + } +} diff --git a/contracts/broker-bank/src/state.rs b/contracts/broker-bank/src/state.rs new file mode 100644 index 0000000..b308c19 --- /dev/null +++ b/contracts/broker-bank/src/state.rs @@ -0,0 +1,29 @@ +use cosmwasm_schema::cw_serde; +use cosmwasm_std::Event; +use cw_storage_plus::{Deque, Item}; +use std::collections::BTreeSet; + +/// TO_ADDRS: Defines the set of addresses that can receive transfers from the +/// contract. +pub const TO_ADDRS: Item> = Item::new("to_addrs"); + +/// OPERATORS: The set of accounts that can operate the broker smart contract. +/// Operators cannot add or remove other operators or withdraw funds. +pub const OPERATORS: Item> = Item::new("operators"); + +/// LOGS: Stateful `cw_storage_plus::Deque` holding transaction and event logs. +/// The "Deque" increments every time the smart contract is invoked to send +/// funds, withdraw, or change operator permissions. +pub const LOGS: Deque = Deque::new("logs"); + +/// IS_HALTED: An on and off switch the owner can toggle for the operators. +pub const IS_HALTED: Item = Item::new("is_halted"); + +/// Log: An entry in the "logs" state of the contract. Each `Log` records a +/// successful execute transaction on the broker contract. +#[cw_serde] +pub struct Log { + pub block_height: u64, + pub sender_addr: String, + pub event: Event, +} diff --git a/contracts/broker-bank/src/tutil.rs b/contracts/broker-bank/src/tutil.rs new file mode 100644 index 0000000..a2a17d9 --- /dev/null +++ b/contracts/broker-bank/src/tutil.rs @@ -0,0 +1,62 @@ +//! testing.rs: Test helpers for the contract + +use cosmwasm_std::{ + testing::{ + mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, + MockStorage, + }, + Env, MessageInfo, OwnedDeps, +}; + +use crate::{contract::instantiate, msgs::InstantiateMsg}; + +pub const TEST_OWNER: &str = "owner"; +pub const TEST_DENOM: &str = "testdenom"; + +pub fn setup_contract( + to_addrs: Vec, + opers: Vec, +) -> anyhow::Result<( + OwnedDeps, + Env, + MessageInfo, +)> { + let mut deps = mock_dependencies(); + let env = mock_env(); + let info = mock_info(TEST_OWNER, &[]); + + let msg = InstantiateMsg { + owner: info.sender.to_string(), + to_addrs: to_addrs.into_iter().collect(), + opers: opers.into_iter().collect(), + }; + let res = instantiate(deps.as_mut(), env.clone(), info.clone(), msg)?; + assert_eq!(0, res.messages.len()); + Ok((deps, env, info)) +} + +pub fn setup_contract_defaults() -> anyhow::Result<( + OwnedDeps, + Env, + MessageInfo, +)> { + let to_addrs = vec!["to_addr0", "to_addr1"] + .into_iter() + .map(String::from) + .collect(); + let opers = vec!["oper0", "oper1"] + .into_iter() + .map(String::from) + .collect(); + setup_contract(to_addrs, opers) +} + +pub fn mock_info_for_sender(sender: &str) -> MessageInfo { + mock_info(sender, &[]) +} + +pub fn mock_env_height(height: u64) -> Env { + let mut env = mock_env(); + env.block.height = height; + env +} \ No newline at end of file diff --git a/contracts/core-shifter/src/contract.rs b/contracts/core-shifter/src/contract.rs index 519e030..33e7ef3 100644 --- a/contracts/core-shifter/src/contract.rs +++ b/contracts/core-shifter/src/contract.rs @@ -12,10 +12,7 @@ use nibiru_std::{ use crate::{ error::ContractError, - msgs::{ - operator_perms, ExecuteMsg, HasPermsResponse, InitMsg, PermsResponse, - QueryMsg, - }, + msgs::{operator_perms, ExecuteMsg, InitMsg, QueryMsg}, state::{instantiate_perms, Permissions, OPERATORS}, }; @@ -167,7 +164,7 @@ pub fn query( QueryMsg::HasPerms { address } => { let perms = Permissions::load(deps.storage)?; let has_perms: bool = perms.is_operator(&address); - let res = HasPermsResponse { + let res = operator_perms::HasPermsResponse { has_perms, perms, addr: address, @@ -176,7 +173,7 @@ pub fn query( } QueryMsg::Perms {} => { let perms = Permissions::load(deps.storage)?; - let res = PermsResponse { perms }; + let res = operator_perms::PermsResponse { perms }; Ok(cosmwasm_std::to_json_binary(&res)?) } } @@ -292,7 +289,8 @@ pub mod tests { address: new_member.to_string(), }; let binary = query(deps.as_ref(), testing::mock_env(), query_req)?; - let response: HasPermsResponse = cosmwasm_std::from_json(binary)?; + let response: operator_perms::HasPermsResponse = + cosmwasm_std::from_json(binary)?; assert!(response.has_perms); Ok(()) } @@ -345,7 +343,8 @@ pub mod tests { // Check correctness of the result let query_req = QueryMsg::Perms {}; let binary = query(deps.as_ref(), testing::mock_env(), query_req)?; - let response: PermsResponse = cosmwasm_std::from_json(binary)?; + let response: operator_perms::PermsResponse = + cosmwasm_std::from_json(binary)?; let expected_opers: BTreeSet = ["vitalik", "musk"].iter().map(|&s| s.to_string()).collect(); assert_eq!( diff --git a/contracts/core-shifter/src/msgs.rs b/contracts/core-shifter/src/msgs.rs index 3b5ea52..0db1ded 100644 --- a/contracts/core-shifter/src/msgs.rs +++ b/contracts/core-shifter/src/msgs.rs @@ -1,8 +1,6 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::Uint256; -use crate::state::Permissions; - /// InitMsg specifies the args for the instantiate entry point of the contract. #[cw_serde] pub struct InitMsg { @@ -25,6 +23,7 @@ pub enum ExecuteMsg { } pub mod operator_perms { + use crate::state::Permissions; use cosmwasm_schema::cw_serde; #[cw_serde] @@ -32,6 +31,18 @@ pub mod operator_perms { AddOper { address: String }, RemoveOper { address: String }, } + + #[cw_serde] + pub struct HasPermsResponse { + pub has_perms: bool, + pub addr: String, + pub perms: Permissions, + } + + #[cw_serde] + pub struct PermsResponse { + pub perms: Permissions, + } } /// QueryMsg specifies the args for the query entry point of the contract. @@ -40,21 +51,9 @@ pub mod operator_perms { pub enum QueryMsg { /// HasPerms: Query whether the given address has operator permissions. /// The query response showcases the contract owner and set of operators. - #[returns(HasPermsResponse)] + #[returns(operator_perms::HasPermsResponse)] HasPerms { address: String }, /// Perms: Query the contract owner and set of operators. - #[returns(PermsResponse)] + #[returns(operator_perms::PermsResponse)] Perms {}, } - -#[cw_serde] -pub struct HasPermsResponse { - pub has_perms: bool, - pub addr: String, - pub perms: Permissions, -} - -#[cw_serde] -pub struct PermsResponse { - pub perms: Permissions, -} diff --git a/nibiru-std/src/errors.rs b/nibiru-std/src/errors.rs index 174a53e..2f7b879 100644 --- a/nibiru-std/src/errors.rs +++ b/nibiru-std/src/errors.rs @@ -3,7 +3,6 @@ use thiserror::Error; use cosmwasm_std as cw; /// Shorthand for an empty anyhow::Result. Useful for idiomatic tests. -#[cfg(test)] pub type TestResult = anyhow::Result<()>; pub type NibiruResult = Result; From f546e8979725875b32a44803f207df54cf6ca633 Mon Sep 17 00:00:00 2001 From: Matthias <97468149+matthiasmatt@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:00:19 +0100 Subject: [PATCH 18/29] feat: add core compounder contract (#126) --- Cargo.lock | 19 + Cargo.toml | 3 +- Cookbook.md | 268 ++++++- artifacts/broker_bank.wasm | Bin 0 -> 229956 bytes artifacts/broker_staking.wasm | Bin 0 -> 256746 bytes artifacts/checksums.txt | 7 +- artifacts/core_token_vesting_v2.wasm | Bin 219301 -> 213406 bytes artifacts/shifter.wasm | Bin 216527 -> 216559 bytes contracts/README.md | 22 +- contracts/broker-bank/Cargo.toml | 6 +- contracts/broker-bank/README.md | 5 + contracts/broker-bank/src/contract.rs | 295 ++++--- contracts/broker-bank/src/lib.rs | 4 +- contracts/broker-bank/src/msgs.rs | 4 +- contracts/broker-bank/src/tutil.rs | 14 +- contracts/broker-staking/.cargo/config | 7 + contracts/broker-staking/.gitignore | 12 + contracts/broker-staking/Cargo.lock | 264 ++++++ contracts/broker-staking/Cargo.toml | 38 + contracts/broker-staking/README.md | 157 ++++ contracts/broker-staking/examples/schema.rs | 17 + contracts/broker-staking/src/contract.rs | 179 +++++ contracts/broker-staking/src/lib.rs | 5 + contracts/broker-staking/src/msg.rs | 61 ++ contracts/broker-staking/src/testing.rs | 754 ++++++++++++++++++ .../core-token-vesting-v2/src/contract.rs | 5 +- contracts/core-token-vesting-v2/src/state.rs | 4 +- 27 files changed, 1965 insertions(+), 185 deletions(-) create mode 100644 artifacts/broker_bank.wasm create mode 100644 artifacts/broker_staking.wasm create mode 100644 contracts/broker-bank/README.md create mode 100644 contracts/broker-staking/.cargo/config create mode 100644 contracts/broker-staking/.gitignore create mode 100644 contracts/broker-staking/Cargo.lock create mode 100644 contracts/broker-staking/Cargo.toml create mode 100644 contracts/broker-staking/README.md create mode 100644 contracts/broker-staking/examples/schema.rs create mode 100644 contracts/broker-staking/src/contract.rs create mode 100644 contracts/broker-staking/src/lib.rs create mode 100644 contracts/broker-staking/src/msg.rs create mode 100644 contracts/broker-staking/src/testing.rs diff --git a/Cargo.lock b/Cargo.lock index 37e62b0..2d9b6ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -236,6 +236,25 @@ dependencies = [ "thiserror", ] +[[package]] +name = "broker-staking" +version = "0.2.0" +dependencies = [ + "anyhow", + "broker-bank", + "cosmwasm-schema", + "cosmwasm-std", + "cw-ownable", + "cw-storage-plus", + "cw-utils", + "cw20", + "nibiru-std", + "schemars", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "bstr" version = "1.9.1" diff --git a/Cargo.toml b/Cargo.toml index 2f6911a..762893f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ cosmwasm-std = { version = "1.5.0", features = ["stargate", "staking"] } cosmwasm-schema = "1.5.0" cw-storage-plus = { version = "1.2.0" } cw-multi-test = { version = "0.20.0" } -cw-utils = { version = "1.0.2" } +cw-utils = { version = "1.0.3" } # Macros for controlling ownership of CosmWasm smart contracts cw-ownable = { version = "0.5.1"} @@ -42,6 +42,7 @@ shifter = { path = "contracts/core-shifter" } controller = { path = "contracts/core-controller" } lockup = { path = "contracts/lockup", features = ["library"] } incentives = { path = "contracts/incentives", features = ["library"] } +broker-bank = { path = "contracts/broker-bank", features = ["library"] } # deps: else anyhow = "1" diff --git a/Cookbook.md b/Cookbook.md index e319366..276b63c 100644 --- a/Cookbook.md +++ b/Cookbook.md @@ -3,24 +3,35 @@ This file describes the different messages that can be sent as queries or transactions to the contracts of this repository with a description of the expected behavior. -- [Core shifter](#core-shifter) - - [Instantiate](#instantiate) - - [Execute](#execute) - - [Query](#query) -- [Core token vesting](#core-token-vesting) - - [Instantiate](#instantiate-1) - - [Execute](#execute-1) - - [Query](#query-1) -- [4. Nibi Stargate](#4-nibi-stargate) - - [4.1 Instantiate](#41-instantiate) - - [4.2 Execute](#42-execute) -- [5. Nibi Stargate Perp](#5-nibi-stargate-perp) - - [5.1 Instantiate](#51-instantiate) - - [5.2 Execute](#52-execute) -- [6. Nusd Valuator](#6-nusd-valuator) - - [6.1 Instantiate](#61-instantiate) - - [6.2 Execute](#62-execute) - - [6.3 Query](#63-query) +- [Contracts Cookbook](#contracts-cookbook) + - [Core shifter](#core-shifter) + - [Instantiate](#instantiate) + - [Execute](#execute) + - [Query](#query) + - [Core token vesting](#core-token-vesting) + - [Instantiate](#instantiate-1) + - [Execute](#execute-1) + - [Query](#query-1) + - [4. Nibi Stargate](#4-nibi-stargate) + - [4.1 Instantiate](#41-instantiate) + - [4.2 Execute](#42-execute) + - [5. Nibi Stargate Perp](#5-nibi-stargate-perp) + - [5.1 Instantiate](#51-instantiate) + - [5.2 Execute](#52-execute) + - [6. Nusd Valuator](#6-nusd-valuator) + - [6.1 Instantiate](#61-instantiate) + - [6.2 Execute](#62-execute) + - [6.3 Query](#63-query) + - [7. Airdrop token vesting](#7-airdrop-token-vesting) + - [7.1 Instantiate](#71-instantiate) + - [7.2 Execute](#72-execute) + - [7.3 Query](#73-query) + - [8. Auto compounder](#8-auto-compounder) + - [8.1 Instantiate](#81-instantiate) + - [8.2 Execute](#82-execute) + - [Admin functions](#admin-functions) + - [Manager functions](#manager-functions) + - [8.3 Query](#83-query) ## Core shifter @@ -101,7 +112,8 @@ This contract implements vesting accounts for the CW20 and native tokens. There's no instantiation message. ```js -{} +{ +} ``` ### Execute @@ -181,7 +193,8 @@ This smart contract showcases usage examples for certain Nibiru-specific and Cos There's no instantiation message. ```js -{} +{ +} ``` ### 4.2 Execute @@ -197,33 +210,33 @@ There's no instantiation message. - **Mint** mints tokens ```js -{ - "mint": { - "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, - "mint_to": "[mint-to-addr]" - } +{ + "mint": { + "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, + "mint_to": "[mint-to-addr]" + } } ``` - **Burn** burns tokens ```js -{ - "burn": { - "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, - "burn_from": "[burn-from-addr]" - } +{ + "burn": { + "coin": { "amount": "[amount]", "denom": "tf/[contract-addr]/[subdenom]" }, + "burn_from": "[burn-from-addr]" + } } ``` - **ChangeAdmin** changes the admin of a denom ```js -{ - "change_admin": { - "denom": "tf/[contract-addr]/[subdenom]", - "new_admin": "[ADDR]" - } +{ + "change_admin": { + "denom": "tf/[contract-addr]/[subdenom]", + "new_admin": "[ADDR]" + } } ``` @@ -419,4 +432,187 @@ The owner is the only one who can execute messages in the contract "redeem_amount": "1000000" } } -``` \ No newline at end of file +``` + +## 7. Airdrop token vesting + +This contract implements vesting accounts for the native tokens. + +### 7.1 Instantiate + +We need to specify admin and managers + +```javascript +{ + "admin": "cosmos1...", + "managers": ["cosmos1...", "cosmos1..."] +} +``` + +### 7.2 Execute + +- **RewardUsers** registers several vesting contracts + +```javascript +{ + "reward_users": { + "rewards": [ + { + "user_address": "cosmos1...", + "vesting_amount": "1000000", + "cliff_amount": "100000", // Only needed if vesting schedule is linear with cliff + } + ], + "vesting_schedule": { + "linear_vesting": { + "start_time": "1703772805", + "end_time": "1703872805", + "vesting_amount": "0" // This amount does not matter + } + } + } +} +``` + +- **DeregisterVestingAccount** deregisters a vesting account + +```javascript +{ + "deregister_vesting_account": { + "address": "cosmos1...", + "vested_token_recipient": "cosmos1...", // address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. + "left_vested_token_recipient": "cosmos1...", // address that will receive the left vesting tokens after deregistration. + } +} +``` + +- **Claim** allows to claim vested tokens + +```javascript +{ + "claim": { + "recipient": "cosmos1...", + } +} +``` + +### 7.3 Query + +- **VestingAccount** returns the vesting account details for a given address. + +```javascript +{ + "vesting_account": { + "address": "cosmos1...", + } +} +``` + +## 8. Auto compounder + +This contract manages staking re-delegation processes securely, allowing for auto-compounding of staked funds. + +### 8.1 Instantiate + +We need to specify admin and managers + +```javascript +{ + "admin": "cosmos1...", + "managers": ["cosmos1...", "cosmos1..."] +} +``` + +### 8.2 Execute + +#### Admin functions + +- **SetAutoCompounderMode** sets the auto compounder mode + +```javascript +{ + "set_auto_compounder_mode": { + "mode": "true" // true or false + } +} +``` + +- **Withdraw** allows to withdraw the funds from the contract + + ```javascript + { + "withdraw": { + "amount": "1000000" + "recipient": "cosmos1..." + } + } + ``` + +- **unstakes** allows to unstake the funds from the contract + + ```javascript + { + "unstake": { + "unstake_msgs": [ + { + "validator": "cosmosvaloper1...", + "amount": "1000000" + }, + { + "validator": "cosmosvaloper1...", + "amount": "1000000" + } + ] + } + } + ``` + +- **update managers** allows to update the managers of the contract + +```javascript +{ + "update_managers": { + "managers": ["cosmos1...", "cosmos1..."] + } +} +``` + +#### Manager functions + +- **stake** allows to stake the funds from the contract. The shares are normalized + +```javascript +{ + "stake": { + "stake_msgs": [ + { + "validator": "cosmosvaloper1...", + "share": "1000000" + }, + { + "validator": "cosmosvaloper1...", + "share": "1000000" + } + ] + }, + "amount": "1000000" +} +``` + +### 8.3 Query + +- **auto compounder mode** returns wether the auto compounder mode is enabled or not + +```javascript +{ + "auto_compounder_mode": {} +} +``` + +- **AdminAndManagers** returns the admin and managers of the contract + +```javascript +{ + "admin_and_managers": {} +} +``` diff --git a/artifacts/broker_bank.wasm b/artifacts/broker_bank.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e26970c299c4de57540f2c5c2f6c119eb6fec545 GIT binary patch literal 229956 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ΞS?BeDy(XHfu^zj`A? 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 Xh@T(=Z-c;MQu!F$Tx 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 bn!V^-rXFjDo3WMsI>Jv7bZlRiY^eG#Q=x|w literal 0 HcmV?d00001 diff --git a/artifacts/broker_staking.wasm b/artifacts/broker_staking.wasm new file mode 100644 index 0000000000000000000000000000000000000000..976aecc5a00224622c1965aef5eb3925bac5659f GIT binary patch literal 256746 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

    sv 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 z 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 NCwU&{`LFYH{|`aJNpb)H literal 0 HcmV?d00001 diff --git a/artifacts/checksums.txt b/artifacts/checksums.txt index 2fd54d7..162ea1b 100644 --- a/artifacts/checksums.txt +++ b/artifacts/checksums.txt @@ -1,5 +1,8 @@ +3878c8fec84001d1260da6d8b7ea91af5bc3d3433d8cab293ae24de94a9fdda0 broker_bank.wasm +dfd48116b2181f477d42b7d0d697057e16814c0b703ef592a8757ca681c6e5ad broker_staking.wasm 382c05baf544f2886de849933ecf59e8bc3bcdcdd552d5a63537bd6d63f2ecf1 controller.wasm -6cf70cdf7ca010cbeff5fff2ca992ccb6d48fa669baf2b9ee26c8289a926413c core_token_vesting_v2.wasm +05948cad982935aa30a9c2011649ab40a38172ab50df5781a3e24f72b76dcc56 core_compounder.wasm +ed4a89ae4669b22863fcabd18e3bd7e40d039899f863a07eb0449eed059a898e core_token_vesting_v2.wasm b56a880d4c67d9f353f549b502256f73159f89b50aa6dae683948e117efa4792 cw3_flex_multisig.wasm 1ecff403bbf3b5fcedccb5de76a0ef5f1fdbcc5f60890e3388f5425584899f0b incentives.wasm dc89ed88f1c69bf63fc284492b7bf6935e3a85da2945067d70f71f08c01df60d lockup.wasm @@ -7,5 +10,5 @@ dc89ed88f1c69bf63fc284492b7bf6935e3a85da2945067d70f71f08c01df60d lockup.wasm ef5b4de76526713e3531c3b9bbc4620b5d61599c4a0e8605365ebb0f1d7ee2ac nibi_stargate_perp.wasm 0074489ff40c8ecbd766f7140b32d288dcaf7302ba630d452f79e7d292ea57ef nusd_valuator.wasm 955592d08017aa41f3c9ba3883153d6de024e8c7a3a79aa3b664a241ec1e7a19 pricefeed.wasm -354fdeff1386394d7aa829358323f89bde548d4aa782bae4a16dddfe33dad739 shifter.wasm +89e3236c932a73575bf39da532bcb93f8e4a5f4a3a7f3836e43f8970993eb809 shifter.wasm 8d982ca2d679ea8d44f825fe91a3d4e0cb92150b12e4684497eee9e76991d247 token_vesting.wasm diff --git a/artifacts/core_token_vesting_v2.wasm b/artifacts/core_token_vesting_v2.wasm index dd361909cb8055ff0714881e0ffcd7f0ed0e2c31..31f078d30f33b29d0b731daa57d6cc2d13e1fc24 100644 GIT binary patch literal 213406 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

    Ky18NO>f`{6vBh^p(X7YaW@y=LLxl4clm>d zmOpr;d@$1WuoIze)o<)*C_jb~K^E{vkT#+xnHc+Om?s>FL{&{X*>l+t$`QJndq z{SycO7?4e97D4Vlc}%4yk6%olR3_Qj)tJF3Wxg`m=q2B@K`-M$-l>uSh4zhB4f

  1. 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 literal 219301 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

    VW8n8PgAL)Jg4fh#NY*tNd-ns-9 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ⅆ0qBLxlWYRlimS!MjJeg@$b@8 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 +# Contracts - [Core Contracts](#core-contracts) - [Example Contracts](#example-contracts) @@ -9,11 +9,29 @@ ## Core Contracts - [**core-token-vesting**](./core-token-vesting/README.md) +- [**core-token-vesting-v2**](./core-token-vesting-v2/README.md) - [**core-shifter**](./core-shifter/README.md): Simple contract to execute peg shift and depth shift admin calls in x/perp module. This contract is meant to be used to run a bot. - [**core-controller**](./core-controller): Admin calls for things like creating perp markets or changing oracle parameters. +- [**core-compounder**](./core-compounder): Simple contract to allow third parties + to stake funds without being able to withdraw/unstake them. + +## Broker Contracts + +Account abstraction smart contracts where the smart contract acts as or enables a +broker to act on the contract owner's behalf with some gated functionality. + +- [**broker-bank**](./broker-bank/README.md): Account abstration to enable funds + to be held and sent to a whitelisted set of accounts (`TO_ADDRS`). Bank + transfers can only be called by "operators", and the funds can only be + withdrawn by the contract owner. +- [**broker-staking**](./broker-staking/README.md): Account abstraction to enable + certain staking transaction messages to be called by a subset of "operators". + Although operators can stake the funds, only the contract owner can withdraw or + unstake them. + ## Example Contracts @@ -27,5 +45,3 @@ - [**pricefeed**](./pricefeed): Legacy implementation of the Nibiru Oracle Module in pure CosmWasm rather than the Cosmos-SDK. - -- [**core-token-vesting-v2**](./core-token-vesting-v2/README.md) diff --git a/contracts/broker-bank/Cargo.toml b/contracts/broker-bank/Cargo.toml index 1e8ed07..6f8147e 100644 --- a/contracts/broker-bank/Cargo.toml +++ b/contracts/broker-bank/Cargo.toml @@ -11,8 +11,10 @@ crate-type = ["cdylib", "rlib"] [features] backtraces = ["cosmwasm-std/backtraces"] -# use library feature to disable all instantiate/execute/query exports -# library = [] +# features.library: Use the library feature to disable all +# instantiate/execute/query exports. This is necessary use this as a dependency +# for another smart contract crate. +library = [] [dependencies] cosmwasm-std = { workspace = true } diff --git a/contracts/broker-bank/README.md b/contracts/broker-bank/README.md new file mode 100644 index 0000000..3f786b0 --- /dev/null +++ b/contracts/broker-bank/README.md @@ -0,0 +1,5 @@ +# contracts/broker-bank + +Account abstration to enable funds to be held and sent to a whitelisted set of +accounts (`TO_ADDRS`). Bank transfers can only be called by "operators", and the +funds can only be withdrawn by the contract owner. \ No newline at end of file diff --git a/contracts/broker-bank/src/contract.rs b/contracts/broker-bank/src/contract.rs index 7acd460..18cb584 100644 --- a/contracts/broker-bank/src/contract.rs +++ b/contracts/broker-bank/src/contract.rs @@ -51,155 +51,192 @@ pub fn execute( let contract_addr = env.contract.address.to_string(); match msg { ExecuteMsg::BankSend { coins, to } => { - // assert sender is operator - Permissions::assert_operator(deps.storage, info.sender.to_string())?; - // assert: Operator execute calls should not be halted. - let is_halted = IS_HALTED.load(deps.storage)?; - assert_not_halted(is_halted)?; - - // assert: Recipient addr must be in the TO_ADDRS set. - if !TO_ADDRS.load(deps.storage)?.contains(&to) { - return Err(ContractError::ToAddrNotAllowed { - to_addr: to.to_string(), - }); - } - - // Events and tx history logging - let coins_json = serde_json::to_string(&coins)?; - let event = event_bank_send(&coins_json, info.sender.as_str()); - LOGS.push_front( - deps.storage, - &Log { - block_height: env.block.height, - sender_addr: info.sender.to_string(), - event: event.clone(), - }, - )?; - - // Reply with TxMsg to send funds - Ok(Response::new() - .add_message(BankMsg::Send { - to_address: to, - amount: coins, - }) - .add_event(event)) + bank_send(deps, env, info, coins, to) } - - ExecuteMsg::ToggleHalt {} => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; - let new_is_halted = !IS_HALTED.load(deps.storage)?; - IS_HALTED.save(deps.storage, &new_is_halted)?; - Ok(Response::new().add_event(event_toggle_halt(&new_is_halted))) - } - + ExecuteMsg::ToggleHalt {} => toggle_halt(deps, env, info), ExecuteMsg::UpdateOwnership(action) => { - Ok(execute_update_ownership(deps, env, info, action)?) + execute_update_ownership(deps, env, info, action) + } + ExecuteMsg::EditOpers(action) => edit_opers(deps, env, info, action), + ExecuteMsg::WithdrawAll { to } => { + withdraw_all(deps, env, info, to, contract_addr) + } + ExecuteMsg::Withdraw { to, denoms } => { + withdraw(deps, env, info, to, denoms, contract_addr) } + } +} - ExecuteMsg::EditOpers(action) => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; - let mut perms = Permissions::load(deps.storage)?; - let api = deps.api; - match action { - oper_perms::Action::AddOper { address } => { - let addr = api.addr_validate(address.as_str())?; - perms.operators.insert(addr.into_string()); - OPERATORS.save(deps.storage, &perms.operators)?; - - let res = Response::new().add_attributes(vec![ - attr("action", "add_operator"), - attr("address", address), - ]); - Ok(res) - } +pub fn withdraw( + deps: DepsMut, + env: Env, + info: MessageInfo, + to: Option, + denoms: BTreeSet, + contract_addr: String, +) -> Result { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let to_addr: String = match to { + Some(given_to_addr) => given_to_addr, + None => info.sender.to_string(), + }; + let balances: AllBalanceResponse = + query_bank_balances(contract_addr, deps.as_ref())?; + let balances: Vec = balances + .amount + .iter() + .filter(|b_coin| denoms.contains(&b_coin.denom)) + .cloned() + .collect(); + + let tx_msg = BankMsg::Send { + to_address: to_addr.to_string(), + amount: balances.clone(), + }; + let event = + event_withdraw(serde_json::to_string(&balances)?.as_str(), &to_addr); + LOGS.push_front( + deps.storage, + &Log { + block_height: env.block.height, + sender_addr: info.sender.to_string(), + event: event.clone(), + }, + )?; + Ok(Response::new().add_message(tx_msg).add_event(event)) +} - oper_perms::Action::RemoveOper { address } => { - perms.operators.remove(address.as_str()); - OPERATORS.save(deps.storage, &perms.operators)?; +pub fn withdraw_all( + deps: DepsMut, + env: Env, + info: MessageInfo, + to: Option, + contract_addr: String, +) -> Result { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let to_addr: String = match to { + Some(given_to_addr) => given_to_addr, + None => info.sender.to_string(), + }; + let balances = query_bank_balances(contract_addr, deps.as_ref())?; + let tx_msg = BankMsg::Send { + to_address: to_addr.to_string(), + amount: balances.amount.clone(), + }; + let event = event_withdraw( + serde_json::to_string(&balances.amount)?.as_str(), + &to_addr, + ); + LOGS.push_front( + deps.storage, + &Log { + block_height: env.block.height, + sender_addr: info.sender.to_string(), + event: event.clone(), + }, + )?; + Ok(Response::new().add_message(tx_msg).add_event(event)) +} - let res = Response::new().add_attributes(vec![ - attr("action", "remove_operator"), - attr("address", address), - ]); - Ok(res) - } - } +pub fn edit_opers( + deps: DepsMut, + _env: Env, + info: MessageInfo, + action: oper_perms::Action, +) -> Result { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let mut perms = Permissions::load(deps.storage)?; + let api = deps.api; + match action { + oper_perms::Action::AddOper { address } => { + let addr = api.addr_validate(address.as_str())?; + perms.operators.insert(addr.into_string()); + OPERATORS.save(deps.storage, &perms.operators)?; + + let res = Response::new().add_attributes(vec![ + attr("action", "add_operator"), + attr("address", address), + ]); + Ok(res) } - ExecuteMsg::WithdrawAll { to } => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; - let to_addr: String = match to { - Some(given_to_addr) => given_to_addr, - None => info.sender.to_string(), - }; - let balances = query_bank_balances(contract_addr, deps.as_ref())?; - let tx_msg = BankMsg::Send { - to_address: to_addr.to_string(), - amount: balances.amount.clone(), - }; - let event = event_withdraw( - serde_json::to_string(&balances.amount)?.as_str(), - &to_addr, - ); - LOGS.push_front( - deps.storage, - &Log { - block_height: env.block.height, - sender_addr: info.sender.to_string(), - event: event.clone(), - }, - )?; - Ok(Response::new().add_message(tx_msg).add_event(event)) + oper_perms::Action::RemoveOper { address } => { + perms.operators.remove(address.as_str()); + OPERATORS.save(deps.storage, &perms.operators)?; + + let res = Response::new().add_attributes(vec![ + attr("action", "remove_operator"), + attr("address", address), + ]); + Ok(res) } + } +} - ExecuteMsg::Withdraw { to, denoms } => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; - let to_addr: String = match to { - Some(given_to_addr) => given_to_addr, - None => info.sender.to_string(), - }; - let balances: AllBalanceResponse = - query_bank_balances(contract_addr, deps.as_ref())?; - let balances: Vec = balances - .amount - .iter() - .filter(|b_coin| denoms.contains(&b_coin.denom)) - .cloned() - .collect(); +pub fn toggle_halt( + deps: DepsMut, + _env: Env, + info: MessageInfo, +) -> Result { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + let new_is_halted = !IS_HALTED.load(deps.storage)?; + IS_HALTED.save(deps.storage, &new_is_halted)?; + Ok(Response::new().add_event(event_toggle_halt(&new_is_halted))) +} - let tx_msg = BankMsg::Send { - to_address: to_addr.to_string(), - amount: balances.clone(), - }; - let event = event_withdraw( - serde_json::to_string(&balances)?.as_str(), - &to_addr, - ); - LOGS.push_front( - deps.storage, - &Log { - block_height: env.block.height, - sender_addr: info.sender.to_string(), - event: event.clone(), - }, - )?; - Ok(Response::new().add_message(tx_msg).add_event(event)) - } +pub fn bank_send( + deps: DepsMut, + env: Env, + info: MessageInfo, + coins: Vec, + to: String, +) -> Result { + // assert sender is operator + Permissions::assert_operator(deps.storage, info.sender.to_string())?; + // assert: Operator execute calls should not be halted. + let is_halted = IS_HALTED.load(deps.storage)?; + assert_not_halted(is_halted)?; + + // assert: Recipient addr must be in the TO_ADDRS set. + if !TO_ADDRS.load(deps.storage)?.contains(&to) { + return Err(ContractError::ToAddrNotAllowed { + to_addr: to.to_string(), + }); } + + // Events and tx history logging + let coins_json = serde_json::to_string(&coins)?; + let event = event_bank_send(&coins_json, info.sender.as_str()); + LOGS.push_front( + deps.storage, + &Log { + block_height: env.block.height, + sender_addr: info.sender.to_string(), + event: event.clone(), + }, + )?; + + // Reply with TxMsg to send funds + Ok(Response::new() + .add_message(BankMsg::Send { + to_address: to, + amount: coins, + }) + .add_event(event)) } -fn execute_update_ownership( +pub fn execute_update_ownership( deps: DepsMut, env: Env, info: MessageInfo, action: cw_ownable::Action, -) -> Result { +) -> Result { let ownership = cw_ownable::update_ownership(deps, &env.block, &info.sender, action)?; Ok(Response::new().add_attributes(ownership.into_attributes())) } -fn assert_not_halted(is_halted: bool) -> Result<(), ContractError> { +pub fn assert_not_halted(is_halted: bool) -> Result<(), ContractError> { match is_halted { true => Err(ContractError::OperationsHalted), false => Ok(()), @@ -223,6 +260,10 @@ pub fn query( QueryMsg::Ownership {} => { Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) } + QueryMsg::IsHalted {} => { + let is_halted = IS_HALTED.load(deps.storage)?; + Ok(to_json_binary(&is_halted)?) + } } } @@ -757,4 +798,4 @@ pub mod tests { Ok(()) } -} +} \ No newline at end of file diff --git a/contracts/broker-bank/src/lib.rs b/contracts/broker-bank/src/lib.rs index 52855d4..251911f 100644 --- a/contracts/broker-bank/src/lib.rs +++ b/contracts/broker-bank/src/lib.rs @@ -1,10 +1,8 @@ pub mod msgs; pub mod oper_perms; - -#[cfg(test)] pub mod tutil; -#[cfg(not(feature = "library"))] +// #[cfg(not(feature = "library"))] // When imported with the "library" feature, contract.rs will not be compiled. // This prevents errors related to entry the smart contract's entrypoints, // enabling its use as a library. diff --git a/contracts/broker-bank/src/msgs.rs b/contracts/broker-bank/src/msgs.rs index 9ce0399..1d4ff5b 100644 --- a/contracts/broker-bank/src/msgs.rs +++ b/contracts/broker-bank/src/msgs.rs @@ -40,7 +40,9 @@ pub enum QueryMsg { /// operator set is "halted". #[returns(PermsStatus)] Perms {}, - // TODO: feat(broker-bank): Logs query + + #[returns(bool)] + IsHalted {}, } #[cw_serde] diff --git a/contracts/broker-bank/src/tutil.rs b/contracts/broker-bank/src/tutil.rs index a2a17d9..c8ec7c8 100644 --- a/contracts/broker-bank/src/tutil.rs +++ b/contracts/broker-bank/src/tutil.rs @@ -1,11 +1,11 @@ //! testing.rs: Test helpers for the contract +#![cfg(not(target_arch = "wasm32"))] -use cosmwasm_std::{ - testing::{ - mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, - MockStorage, - }, - Env, MessageInfo, OwnedDeps, +use cosmwasm_std::{Env, MessageInfo, OwnedDeps}; + +#[cfg(not(target_arch = "wasm32"))] +use cosmwasm_std::testing::{ + mock_dependencies, mock_env, mock_info, MockApi, MockQuerier, MockStorage, }; use crate::{contract::instantiate, msgs::InstantiateMsg}; @@ -59,4 +59,4 @@ pub fn mock_env_height(height: u64) -> Env { let mut env = mock_env(); env.block.height = height; env -} \ No newline at end of file +} diff --git a/contracts/broker-staking/.cargo/config b/contracts/broker-staking/.cargo/config new file mode 100644 index 0000000..8a76ed5 --- /dev/null +++ b/contracts/broker-staking/.cargo/config @@ -0,0 +1,7 @@ +[alias] +wasm = "build --release --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --example schema" + diff --git a/contracts/broker-staking/.gitignore b/contracts/broker-staking/.gitignore new file mode 100644 index 0000000..10fe5d6 --- /dev/null +++ b/contracts/broker-staking/.gitignore @@ -0,0 +1,12 @@ +# Build results +/target + +# Text file backups +**/*.rs.bk + +# macOS +.DS_Store + +# IDEs +*.iml +.idea diff --git a/contracts/broker-staking/Cargo.lock b/contracts/broker-staking/Cargo.lock new file mode 100644 index 0000000..96fc701 --- /dev/null +++ b/contracts/broker-staking/Cargo.lock @@ -0,0 +1,264 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "addr2line" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a49806b9dadc843c61e7c97e72490ad7f7220ae249012fbda9ad0609457c0543" +dependencies = [ + "gimli", +] + +[[package]] +name = "backtrace" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df2f85c8a2abbe3b7d7e748052fdd9b76a0458fdeb16ad4223f5eca78c7c130" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cosmwasm-schema" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2196586ea197eaa21129d09c84a19e2eb80bdce239eec8e6a4f108cb644c295f" +dependencies = [ + "schemars", + "serde_json", +] + +[[package]] +name = "cosmwasm-std" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f85908a2696117c8f2c1b3ce201d34a1aa9a6b3c1583a65cfb794ec66e1cfde4" +dependencies = [ + "base64", + "schemars", + "serde", + "serde-json-wasm", + "snafu", +] + +[[package]] +name = "cosmwasm-storage" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e103531a2ce636e86b7639cec25d348c4d360832ab8e0e7f9a6e00f08aac1379" +dependencies = [ + "cosmwasm-std", + "serde", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "gimli" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c" + +[[package]] +name = "itoa" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" + +[[package]] +name = "libc" +version = "0.2.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" + +[[package]] +name = "limit-order" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "schemars", + "serde", + "terra-cosmwasm", +] + +[[package]] +name = "object" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cbca9424c482ee628fa549d9c812e2cd22f1180b9222c9200fdfa6eb31aecb2" + +[[package]] +name = "proc-macro2" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1502d12e458c49a4c9cbff560d0fe0060c252bc29799ed94ca2ed4bb665a0101" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" + +[[package]] +name = "ryu" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" + +[[package]] +name = "schemars" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be77ed66abed6954aabf6a3e31a84706bedbf93750d267e92ef4a6d90bbd6a61" +dependencies = [ + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11af7a475c9ee266cfaa9e303a47c830ebe072bf3101ab907a7b7b9d816fa01d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn", +] + +[[package]] +name = "serde" +version = "1.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-json-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7294d94d390f1d2334697c065ea591d7074c676e2d20aa6f1df752fced29823f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_derive_internals" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dbab34ca63057a1f15280bdf3c39f2b1eb1b54c17e98360e511637aef7418c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "snafu" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5aed652511f5c9123cf2afbe9c244c29db6effa2abb05c866e965c82405ce" +dependencies = [ + "backtrace", + "doc-comment", + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf8f7d5720104a9df0f7076a8682024e958bba0fe9848767bb44f251f3648e9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "syn" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f14a640819f79b72a710c0be059dce779f9339ae046c8bef12c361d56702146f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "terra-cosmwasm" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "293b020a968fdd2df1099fb99392ce348201b8416bbc92d6b4de291e3ca0b744" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" diff --git a/contracts/broker-staking/Cargo.toml b/contracts/broker-staking/Cargo.toml new file mode 100644 index 0000000..30ce203 --- /dev/null +++ b/contracts/broker-staking/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "broker-staking" +version = "0.2.0" +edition = "2021" +description = "Broker smart contract to stake on another account's behalf" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# for quicker tests, cargo test --lib +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] + +[dependencies] +cosmwasm-schema = { workspace = true } +cw-ownable = { workspace = true } +nibiru-std = { workspace = true } +cosmwasm-std = { workspace = true } +cw20.workspace = true +cw-utils = { workspace = true } +thiserror = { workspace = true } +cw-storage-plus = { workspace = true } +schemars = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +broker-bank = { workspace = true } + +[dev-dependencies] +anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/broker-staking/README.md b/contracts/broker-staking/README.md new file mode 100644 index 0000000..92323de --- /dev/null +++ b/contracts/broker-staking/README.md @@ -0,0 +1,157 @@ +## contracts/broker-staking + +This smart contract handles account abstraction to enable certain staking transaction messages +to be called by a subset of "operators", while the funds can only be withdrawn by the contract owner. + +This is useful if you want a mutlisig to manage a large allocation of funds while +permitting certain bots to safely make calls to stake or unstake, as is the case +for Nibiru's Foundation Delegation Program. + +Table of Contents: +- [Overview](#overview) +- [Master Operations](#master-operations) + - [Instantiate](#instantiate) + - [Execute](#execute) + - [Admin functions](#admin-functions) + - [Manager functions](#manager-functions) + - [Query](#query) +- [Deployed Contract Info](#deployed-contract-info) +- [Testing Against a Live Chain](#testing-against-a-live-chain) + +## Overview + +The contract has 2 modes, defined by the autocompounder_on flag. When it is +true, managers can call the contract to stake the balance of the contract. + +Admin can: + +- unstake funds from validators +- toggle on/off the autocompounder +- withdraw funds to the multisig + +Managers (and admin) can: + +- stake funds to validators in the proportion given + +This way, only the multisig can maange the funds, and the seed keys of the +managers can be public with no risk to the funds of the treasury. + +### Master Operations + +#### Instantiate + +We need to specify admin and managers + +```javascript +{ + "admin": "cosmos1...", + "managers": ["cosmos1...", "cosmos1..."] +} +``` + +#### Execute + +##### Admin functions + +- **SetAutoCompounderMode** sets the auto compounder mode + +```javascript +{ + "set_auto_compounder_mode": { + "mode": "true" // true or false + } +} +``` + +- **Withdraw** allows to withdraw the funds from the contract + + ```javascript + { + "withdraw": { + "amount": "1000000" + "recipient": "cosmos1..." + } + } + ``` + +- **unstakes** allows to unstake the funds from the contract + + ```javascript + { + "unstake": { + "unstake_msgs": [ + { + "validator": "cosmosvaloper1...", + "amount": "1000000" + }, + { + "validator": "cosmosvaloper1...", + "amount": "1000000" + } + ] + } + } + ``` + +- **update managers** allows to update the managers of the contract + +```javascript +{ + "update_managers": { + "managers": ["cosmos1...", "cosmos1..."] + } +} +``` + +##### Manager functions + +- **stake** allows to stake the funds from the contract. The shares are normalized + +```javascript +{ + "stake": { + "stake_msgs": [ + { + "validator": "cosmosvaloper1...", + "share": "1000000" + }, + { + "validator": "cosmosvaloper1...", + "share": "1000000" + } + ] + }, + "amount": "1000000" +} +``` + +#### Query + +- **auto compounder mode** returns wether the auto compounder mode is enabled or not + +```javascript +{ + "auto_compounder_mode": {} +} +``` + +- **AdminAndManagers** returns the admin and managers of the contract + +```javascript +{ + "admin_and_managers": {} +} +``` + +### Deployed Contract Info + +TODO for mainnet/testnet + +| Field | Value | +| ------------- | ----- | +| code_id | ... | +| contract_addr | ... | +| rpc_url | ... | +| chain_id | ... | + +### Testing Against a Live Chain \ No newline at end of file diff --git a/contracts/broker-staking/examples/schema.rs b/contracts/broker-staking/examples/schema.rs new file mode 100644 index 0000000..9913d00 --- /dev/null +++ b/contracts/broker-staking/examples/schema.rs @@ -0,0 +1,17 @@ +use std::env::current_dir; +use std::fs::create_dir_all; + +use broker_bank::msgs::{InstantiateMsg, QueryMsg}; +use broker_staking::msg::ExecuteMsg; +use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema(&schema_for!(ExecuteMsg), &out_dir); + export_schema(&schema_for!(QueryMsg), &out_dir); +} diff --git a/contracts/broker-staking/src/contract.rs b/contracts/broker-staking/src/contract.rs new file mode 100644 index 0000000..082b793 --- /dev/null +++ b/contracts/broker-staking/src/contract.rs @@ -0,0 +1,179 @@ +use broker_bank::contract::{ + assert_not_halted, edit_opers, execute_update_ownership, query_perms_status, + toggle_halt, withdraw, withdraw_all, +}; +use broker_bank::oper_perms::Permissions; +use broker_bank::state::{IS_HALTED, OPERATORS, TO_ADDRS}; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + to_json_binary, Binary, Coin, CosmosMsg, Deps, DepsMut, Env, MessageInfo, + Response, StakingMsg, StdResult, Uint128, +}; + +use crate::msg::{ExecuteMsg, StakeMsg, UnstakeMsg}; +use broker_bank::error::ContractError; +use broker_bank::msgs::{ + InstantiateMsg as BrokerBankInstantiateMsg, PermsStatus, QueryMsg, +}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: BrokerBankInstantiateMsg, +) -> StdResult { + // Managers validation + cw_ownable::initialize_owner(deps.storage, deps.api, Some(&msg.owner))?; + TO_ADDRS.save(deps.storage, &msg.to_addrs)?; + OPERATORS.save(deps.storage, &msg.opers)?; + IS_HALTED.save(deps.storage, &false)?; + + Ok(Response::new()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + let contract_addr = env.contract.address.to_string(); + match msg { + ExecuteMsg::Withdraw { to, denoms } => { + withdraw(deps, env, info, to, denoms, contract_addr) + } + ExecuteMsg::Stake { stake_msgs, amount } => { + stake(deps, env, info, stake_msgs, amount) + } + ExecuteMsg::Unstake { unstake_msgs } => { + unstake(deps, env, info, unstake_msgs) + } + ExecuteMsg::ToggleHalt {} => toggle_halt(deps, env, info), + ExecuteMsg::UpdateOwnership(action) => { + execute_update_ownership(deps, env, info, action) + } + ExecuteMsg::EditOpers(action) => edit_opers(deps, env, info, action), + ExecuteMsg::WithdrawAll { to } => { + withdraw_all(deps, env, info, to, contract_addr) + } + } +} + +pub fn unstake( + deps: DepsMut, + _env: Env, + info: MessageInfo, + unstake_msgs: Vec, +) -> Result { + cw_ownable::assert_owner(deps.storage, &info.sender)?; + + let mut messages: Vec = vec![]; + for msg in unstake_msgs.iter() { + if msg.amount.is_zero() { + continue; + } + messages.push(build_unstakes_messages( + msg.amount, + msg.validator.to_string(), + )?); + } + + Ok(Response::new() + .add_messages(messages) + .add_attribute("action", "unstake")) +} + +/// Managers functions +pub fn stake( + deps: DepsMut, + _env: Env, + info: MessageInfo, + stake_msgs: Vec, + amount: Uint128, +) -> Result { + Permissions::assert_operator(deps.storage, info.sender.to_string())?; + let is_halted = IS_HALTED.load(deps.storage)?; + assert_not_halted(is_halted)?; + + // sum total amount of shares in the stake msgs + let total_shares: Uint128 = stake_msgs.iter().map(|m| m.share).sum(); + if total_shares.is_zero() { + return Err(ContractError::Std(cosmwasm_std::StdError::generic_err( + "total shares cannot be zero", + ))); + } + + let mut messages: Vec = vec![]; + let mut attrs: Vec = vec![]; + for stake_msg in stake_msgs.iter() { + let amount_to_delegate = amount * stake_msg.share / total_shares; + if amount_to_delegate.is_zero() { + continue; + } + + messages.push(build_stake_message( + amount_to_delegate, + stake_msg.validator.to_string(), + )?); + attrs.push(cosmwasm_std::Attribute { + key: "stake".to_string(), + value: format!("{}:{}", stake_msg.validator, amount_to_delegate), + }); + } + + Ok(Response::new() + .add_messages(messages) + .add_attribute("action", "stake") + .add_attribute("amount", amount) + .add_attributes(attrs)) +} + +fn build_stake_message( + amount: Uint128, + validator: String, +) -> StdResult { + Ok(CosmosMsg::Staking(StakingMsg::Delegate { + validator, + amount: Coin { + denom: "unibi".to_string(), + amount, + }, + })) +} + +fn build_unstakes_messages( + amount: Uint128, + validator: String, +) -> StdResult { + Ok(CosmosMsg::Staking(StakingMsg::Undelegate { + validator, + amount: Coin { + denom: "unibi".to_string(), + amount, + }, + })) +} + +#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)] +pub fn query( + deps: Deps, + _env: Env, + msg: QueryMsg, +) -> Result { + match msg { + QueryMsg::Perms {} => { + let perms_status: PermsStatus = query_perms_status(deps)?; + Ok(to_json_binary(&perms_status)?) + } + QueryMsg::Ownership {} => { + Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) + } + QueryMsg::IsHalted {} => { + let is_halted = IS_HALTED.load(deps.storage)?; + Ok(to_json_binary(&is_halted)?) + } + } +} diff --git a/contracts/broker-staking/src/lib.rs b/contracts/broker-staking/src/lib.rs new file mode 100644 index 0000000..6c9410d --- /dev/null +++ b/contracts/broker-staking/src/lib.rs @@ -0,0 +1,5 @@ +pub mod contract; +pub mod msg; + +#[cfg(test)] +mod testing; diff --git a/contracts/broker-staking/src/msg.rs b/contracts/broker-staking/src/msg.rs new file mode 100644 index 0000000..8dd6386 --- /dev/null +++ b/contracts/broker-staking/src/msg.rs @@ -0,0 +1,61 @@ +use std::collections::BTreeSet; + +use broker_bank::oper_perms; +use cosmwasm_schema::cw_serde; +use cosmwasm_std::Uint128; + +/// Enum respresenting message types for the execute entry point. +/// These express the different ways in which one can invoke the contract +/// and broadcast tx messages against it. +#[cw_ownable::cw_ownable_execute] +#[cw_serde] +pub enum ExecuteMsg { + /// SetAutocompounderMode allows to set the autocompounder mode. + /// If it's set to true, managers will be able to stake tokens, otherwise + /// they won't be able to do so. + ToggleHalt {}, + + /// Withdraw coins from the broker smart contract balance. Only callable by + /// the contract owner. + Withdraw { + to: Option, + denoms: BTreeSet, + }, + + /// Withdraw all coins from the broker smart contract balance. Only callable + /// by the contract owner. + WithdrawAll { + to: Option, + }, + + /// Unstake allows to unstake a given amount of tokens from a set of + /// validators. The UnstakeMsgs defines the tokens amount and address + /// of the validator. + Unstake { + unstake_msgs: Vec, + }, + + /// Manager functions + + /// Stake allows to stake a given amount of tokens to a set of validators. + /// The StakeMsgs defines the share of tokens distributed and the validator + /// to which the stake is made. + Stake { + amount: Uint128, + stake_msgs: Vec, + }, + + EditOpers(oper_perms::Action), +} + +#[cw_serde] +pub struct UnstakeMsg { + pub amount: Uint128, + pub validator: String, +} + +#[cw_serde] +pub struct StakeMsg { + pub share: Uint128, + pub validator: String, +} diff --git a/contracts/broker-staking/src/testing.rs b/contracts/broker-staking/src/testing.rs new file mode 100644 index 0000000..815a178 --- /dev/null +++ b/contracts/broker-staking/src/testing.rs @@ -0,0 +1,754 @@ +use std::collections::BTreeSet; + +use crate::contract::{execute, query}; +use crate::msg::{ExecuteMsg, StakeMsg, UnstakeMsg}; +use cosmwasm_std::{self as cw_std}; +use cw_std::{ + coin, from_json, testing, BankMsg, Coin, CosmosMsg, Response, StakingMsg, + Uint128, +}; +use nibiru_std::errors::TestResult; +use serde::Serialize; + +use broker_bank::{ + msgs::{PermsStatus, QueryMsg}, + oper_perms::{self, Permissions}, + state::{IS_HALTED, OPERATORS}, + tutil::{ + self, mock_info_for_sender, setup_contract, setup_contract_defaults, + TEST_OWNER, + }, +}; + +struct TestCaseExec<'a> { + to_addrs: Vec, + opers: Vec, + exec_msg: ExecuteMsg, + sender: &'a str, + err: Option<&'a str>, + contract_funds_start: Option>, + resp_msgs: Vec, +} + +/// Test that all owner-gated execute calls fail when the tx sender is not +/// the smart contract owner. +#[test] +pub fn test_assert_owner() -> TestResult { + let not_owner = "not-owner"; + let want_err: Option<&str> = Some("not the contract's current owner"); + + let to_addrs: [String; 2] = ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + + let test_cases: Vec = vec![ + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::EditOpers(oper_perms::Action::AddOper { + address: String::from("new_oper"), + }), + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::UpdateOwnership( + cw_ownable::Action::TransferOwnership { + new_owner: String::from("new_owner"), + expiry: None, + }, + ), + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::Withdraw { + to: Some(String::from("mm_bybit")), + denoms: vec![].into_iter().collect(), + }, + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::ToggleHalt {}, + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: not_owner, + exec_msg: ExecuteMsg::WithdrawAll { + to: Some(String::from("mm_bybit")), + }, + err: want_err, + contract_funds_start: None, + resp_msgs: vec![], + }, + ]; + + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + // send the exec msg and it should fail. + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + assert!(res.is_err()); + let err = res.expect_err("err should be defined"); + let is_contained = err + .to_string() + .contains(tc.err.expect("errors should occur in this test")); + assert!(is_contained, "got error {}", err); + } + Ok(()) +} + +#[test] +fn exec_withdraw() -> TestResult { + let to_addrs: [String; 2] = ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let test_cases: Vec = vec![ + // WithdrawAll + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: TEST_OWNER, + exec_msg: ExecuteMsg::WithdrawAll { + to: Some(String::from("mm_bybit")), + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![BankMsg::Send { + to_address: String::from("mm_bybit"), + amount: vec![], + } + .into()], + }, + // WithdrawAll / Nonzero amount + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: TEST_OWNER, + exec_msg: ExecuteMsg::WithdrawAll { + to: Some(String::from("to_addr")), + }, + err: None, + contract_funds_start: Some(vec![Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }]), + resp_msgs: vec![BankMsg::Send { + to_address: String::from("to_addr"), + amount: vec![Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }], + } + .into()], + }, + // Withdraw / Nonzero amount + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: TEST_OWNER, + exec_msg: ExecuteMsg::Withdraw { + to: Some(String::from("to_addr")), + denoms: ["uusd"].iter().map(|str| String::from(*str)).collect(), + }, + err: None, + contract_funds_start: Some(vec![ + Coin { + denom: "unibi".into(), + amount: Uint128::from(420u128), + }, + Coin { + denom: "uusd".into(), + amount: Uint128::from(69u128), + }, + ]), + resp_msgs: vec![BankMsg::Send { + to_address: String::from("to_addr"), + amount: vec![Coin { + denom: "uusd".into(), + amount: Uint128::from(69u128), + }], + } + .into()], + }, + ]; + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + if let Some(funds_start) = &tc.contract_funds_start { + // Set up a mock querier with contract balance + let contract_addr = env.contract.address.to_string(); + let balances: &[(&str, &[Coin])] = + &[(contract_addr.as_str(), funds_start.as_slice())]; + let querier = testing::MockQuerier::new(balances); + deps.querier = querier; + } + + // send the exec msg + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + if let Some(want_err) = tc.err { + let got_err = res.expect_err("errors should occur in this test"); + let is_contained = got_err.to_string().contains(want_err); + assert!(is_contained, "got error {}", got_err); + return Ok(()); + } + assert!(res.is_ok()); + + let resp = res?; + let got_resp_msgs: Vec = resp + .messages + .iter() + .map(|sub_msg| CosmosMsgExt(&sub_msg.msg)) + .collect(); + let want_resp_msgs: Vec = + tc.resp_msgs.iter().map(CosmosMsgExt).collect(); + assert_eq!(want_resp_msgs, got_resp_msgs); + } + Ok(()) +} + +#[derive(Debug, Serialize)] +struct CosmosMsgExt<'a>(&'a CosmosMsg); + +impl<'a> PartialEq for CosmosMsgExt<'a> { + fn eq(&self, other: &Self) -> bool { + let err_msg = "cosmos msg should be jsonable"; + let self_str = serde_json::to_string_pretty(self).expect(err_msg); + let other_str = serde_json::to_string_pretty(other).expect(err_msg); + self_str.eq(&other_str) + } +} + +impl<'a> std::fmt::Display for CosmosMsgExt<'a> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", serde_json::to_string_pretty(&self.0).unwrap()) + } +} + +#[test] +pub fn exec_toggle_halt() -> TestResult { + let (mut deps, env, _info) = setup_contract_defaults()?; + + let query_msg = QueryMsg::Perms {}; + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + + let want_is_halted = false; + assert_eq!(resp.is_halted, want_is_halted); + assert_eq!( + resp.perms, + Permissions { + owner: Some(String::from(TEST_OWNER)), + operators: ["oper0", "oper1"] + .into_iter() + .map(String::from) + .collect(), + } + ); + + // ToggleHalt : error case + let exec_msg = ExecuteMsg::ToggleHalt {}; + let sender = "not_owner"; + let info = mock_info_for_sender(sender); + let exec_resp = execute(deps.as_mut(), env.clone(), info, exec_msg.clone()); + assert!(exec_resp.is_err(), "got {exec_resp:?}"); + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + assert_eq!(resp.is_halted, want_is_halted); + + // ToggleHalt : success case + let sender = TEST_OWNER; + let mut want_is_halted = true; + let info = mock_info_for_sender(sender); + let _exec_resp = + execute(deps.as_mut(), env.clone(), info.clone(), exec_msg.clone())?; + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + assert_eq!(resp.is_halted, want_is_halted); + + want_is_halted = false; + let _exec_resp = + execute(deps.as_mut(), env.clone(), info, exec_msg.clone())?; + let resp: PermsStatus = + from_json(query(deps.as_ref(), env.clone(), query_msg.clone())?)?; + assert_eq!(resp.is_halted, want_is_halted); + + Ok(()) +} + +// TODO: test ExecuteMsg::EditOpers +// TODO: ownership query +// pub fn get_ownership(storage: &dyn Storage) -> StdResult> + +#[test] +fn exec_edit_opers_add() -> TestResult { + let (mut deps, _env, _info) = tutil::setup_contract_defaults()?; + let new_member = "new_member"; + let perms = Permissions::load(&deps.storage)?; + let not_has: bool = !perms.is_owner(new_member); + assert!(not_has); + + // Add an operator to the permission set + let execute_msg = ExecuteMsg::EditOpers(oper_perms::Action::AddOper { + address: new_member.to_string(), + }); + let sender = tutil::TEST_OWNER; + let execute_info = testing::mock_info(sender, &[]); + + let check_resp = |resp: Response| { + assert_eq!(resp.messages.len(), 0, "resp.messages: {:?}", resp.messages); + assert_eq!( + resp.attributes.len(), + 2, + "resp.attributes: {:#?}", + resp.attributes + ); + }; + + let result = execute( + deps.as_mut(), + testing::mock_env(), + execute_info, + execute_msg, + )?; + check_resp(result); + + // Check correctness of the result + let perms = Permissions::load(&deps.storage)?; + let has: bool = perms.has(new_member); + assert!(has); + + let query_req = QueryMsg::Perms {}; + let binary = query(deps.as_ref(), testing::mock_env(), query_req)?; + let response: PermsStatus = cosmwasm_std::from_json(binary)?; + assert!(response.perms.has(sender)); + Ok(()) +} + +#[test] +fn exec_edit_opers_remove() -> TestResult { + let to_addrs = vec![]; + let opers = vec![]; + let (mut deps, _env, _info) = tutil::setup_contract(to_addrs, opers)?; + // Set up initial perms + let opers_start: Vec = ["vitalik", "musk", "satoshi"] + .iter() + .map(|&s| s.to_string()) + .collect(); + let mut perms = Permissions::load(&deps.storage)?; + assert_eq!(perms.operators.len(), 0); // admin remains + for member in opers_start.iter() { + perms.operators.insert(member.clone()); + } + let res = OPERATORS.save(deps.as_mut().storage, &perms.operators); + assert!(res.is_ok()); + + // Remove a member from the whitelist + let execute_msg = ExecuteMsg::EditOpers(oper_perms::Action::RemoveOper { + address: "satoshi".to_string(), + }); + let sender = tutil::TEST_OWNER; + let execute_info = testing::mock_info(sender, &[]); + let check_resp = |resp: Response| { + assert_eq!(resp.messages.len(), 0, "resp.messages: {:?}", resp.messages); + assert_eq!( + resp.attributes.len(), + 2, + "resp.attributes: {:#?}", + resp.attributes + ); + }; + let result = execute( + deps.as_mut(), + testing::mock_env(), + execute_info, + execute_msg, + )?; + check_resp(result); + + // Check correctness of the result + let query_req = QueryMsg::Perms {}; + let binary = query(deps.as_ref(), testing::mock_env(), query_req)?; + let response: PermsStatus = cosmwasm_std::from_json(binary)?; + let expected_opers: BTreeSet = + ["vitalik", "musk"].iter().map(|&s| s.to_string()).collect(); + assert_eq!( + response.perms.operators, expected_opers, + "got: {:#?}, wanted: {:#?}", + response.perms.operators, expected_opers + ); + Ok(()) +} + +#[test] +fn exec_stake_halted() -> TestResult { + let to_addrs: [String; 2] = ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let (mut deps, env, _info) = + setup_contract(to_addrs.to_vec(), opers.to_vec())?; + + // Set is_halted to false + IS_HALTED.save(deps.as_mut().storage, &false)?; + + // Success case: valid operator sends coins to an allowed address + let valid_exec_msg = ExecuteMsg::Stake { + stake_msgs: vec![StakeMsg { + share: Uint128::new(100), + validator: String::from("mm_bybit"), + }], + amount: Uint128::new(50), + }; + let sender = "valid_oper"; + let info = mock_info_for_sender(sender); + let res = execute( + deps.as_mut(), + env.clone(), + info.clone(), + valid_exec_msg.clone(), + )?; + + for message in res.messages { + match message.msg { + CosmosMsg::Staking(StakingMsg::Delegate { validator, amount }) => { + assert_eq!(validator, "mm_bybit"); + assert_eq!(amount, coin(50, "unibi")); + } + _ => panic!("unexpected message: {:?}", message), + } + } + + // Error case: Halted operations + IS_HALTED.save(deps.as_mut().storage, &true)?; + let sender = "valid_oper"; + let info = mock_info_for_sender(sender); + let res = execute(deps.as_mut(), env.clone(), info, valid_exec_msg.clone()); + assert!(res.is_err()); + + Ok(()) +} + +#[test] +fn exec_stake() -> TestResult { + let to_addrs: [String; 2] = ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let test_cases: Vec = vec![ + // Success + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "valid_oper", + exec_msg: ExecuteMsg::Stake { + stake_msgs: vec![StakeMsg { + share: Uint128::new(100), + validator: String::from("mm_bybit"), + }], + amount: Uint128::new(50), + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_bybit"), + amount: coin(50, "unibi"), + })], + }, + // Success : valid operation to multiple stakers + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "valid_oper", + exec_msg: ExecuteMsg::Stake { + stake_msgs: vec![ + StakeMsg { + share: Uint128::new(100), + validator: String::from("mm_bybit"), + }, + StakeMsg { + share: Uint128::new(100), + validator: String::from("mm_kucoin"), + }, + ], + amount: Uint128::new(50), + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![ + CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_bybit"), + amount: coin(25, "unibi"), + }), + CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_kucoin"), + amount: coin(25, "unibi"), + }), + ], + }, + // Success : valid operation to multiple stakers - different shares + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "valid_oper", + exec_msg: ExecuteMsg::Stake { + stake_msgs: vec![ + StakeMsg { + share: Uint128::new(100), + validator: String::from("mm_bybit"), + }, + StakeMsg { + share: Uint128::new(150), + validator: String::from("mm_kucoin"), + }, + ], + amount: Uint128::new(50), + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![ + CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_bybit"), + amount: coin(20, "unibi"), + }), + CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_kucoin"), + amount: coin(30, "unibi"), + }), + ], + }, + // Fail - invalid sender + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "invalid_oper", + exec_msg: ExecuteMsg::Stake { + stake_msgs: vec![StakeMsg { + share: Uint128::new(100), + validator: String::from("mm_bybit"), + }], + amount: Uint128::new(50), + }, + err: Some( + "insufficient permissions: address is not a contract operator", + ), + contract_funds_start: None, + resp_msgs: vec![CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_bybit"), + amount: coin(50, "unibi"), + })], + }, + // Fail - empty stake messages + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "valid_oper", + exec_msg: ExecuteMsg::Stake { + stake_msgs: vec![], + amount: Uint128::new(50), + }, + err: Some("total shares cannot be zero"), + contract_funds_start: None, + resp_msgs: vec![CosmosMsg::Staking(StakingMsg::Delegate { + validator: String::from("mm_bybit"), + amount: coin(50, "unibi"), + })], + }, + ]; + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + if let Some(funds_start) = &tc.contract_funds_start { + // Set up a mock querier with contract balance + let contract_addr = env.contract.address.to_string(); + let balances: &[(&str, &[Coin])] = + &[(contract_addr.as_str(), funds_start.as_slice())]; + let querier = testing::MockQuerier::new(balances); + deps.querier = querier; + } + + // send the exec msg + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + + if let Some(want_err) = tc.err { + let got_err = res.expect_err("errors should occur in this test"); + let is_contained = got_err.to_string().contains(want_err); + assert!(is_contained, "got error {}", got_err); + return Ok(()); + } + assert!(res.is_ok()); + + let resp = res?; + let got_resp_msgs: Vec = resp + .messages + .iter() + .map(|sub_msg| CosmosMsgExt(&sub_msg.msg)) + .collect(); + let want_resp_msgs: Vec = + tc.resp_msgs.iter().map(CosmosMsgExt).collect(); + assert_eq!(want_resp_msgs, got_resp_msgs); + } + Ok(()) +} + +#[test] +fn exec_unstake() -> TestResult { + let to_addrs: [String; 2] = ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let test_cases: Vec = vec![ + // Success + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "owner", + exec_msg: ExecuteMsg::Unstake { + unstake_msgs: vec![UnstakeMsg { + amount: Uint128::new(100), + validator: String::from("mm_bybit"), + }], + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![CosmosMsg::Staking(StakingMsg::Undelegate { + validator: String::from("mm_bybit"), + amount: coin(100, "unibi"), + })], + }, + // Success - multiple + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "owner", + exec_msg: ExecuteMsg::Unstake { + unstake_msgs: vec![ + UnstakeMsg { + amount: Uint128::new(100), + validator: String::from("mm_bybit"), + }, + UnstakeMsg { + amount: Uint128::new(20), + validator: String::from("mm_kucoin"), + }, + UnstakeMsg { + amount: Uint128::new(0), + validator: String::from("mm_binance"), + }, + ], + }, + err: None, + contract_funds_start: None, + resp_msgs: vec![ + CosmosMsg::Staking(StakingMsg::Undelegate { + validator: String::from("mm_bybit"), + amount: coin(100, "unibi"), + }), + CosmosMsg::Staking(StakingMsg::Undelegate { + validator: String::from("mm_kucoin"), + amount: coin(20, "unibi"), + }), + ], + }, + // Fail - oper can't do that + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "valid_oper", + exec_msg: ExecuteMsg::Unstake { + unstake_msgs: vec![UnstakeMsg { + amount: Uint128::new(100), + validator: String::from("mm_bybit"), + }], + }, + err: Some("Caller is not the contract's current owner"), + contract_funds_start: None, + resp_msgs: vec![CosmosMsg::Staking(StakingMsg::Undelegate { + validator: String::from("mm_bybit"), + amount: coin(100, "unibi"), + })], + }, + // Fail - non oper also can't + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "invalid_oper", + exec_msg: ExecuteMsg::Unstake { + unstake_msgs: vec![UnstakeMsg { + amount: Uint128::new(100), + validator: String::from("mm_bybit"), + }], + }, + err: Some("Caller is not the contract's current owner"), + contract_funds_start: None, + resp_msgs: vec![CosmosMsg::Staking(StakingMsg::Undelegate { + validator: String::from("mm_bybit"), + amount: coin(100, "unibi"), + })], + }, + ]; + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + if let Some(funds_start) = &tc.contract_funds_start { + // Set up a mock querier with contract balance + let contract_addr = env.contract.address.to_string(); + let balances: &[(&str, &[Coin])] = + &[(contract_addr.as_str(), funds_start.as_slice())]; + let querier = testing::MockQuerier::new(balances); + deps.querier = querier; + } + + // send the exec msg + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + + if let Some(want_err) = tc.err { + let got_err = res.expect_err("errors should occur in this test"); + let is_contained = got_err.to_string().contains(want_err); + assert!(is_contained, "got error {}", got_err); + return Ok(()); + } + assert!(res.is_ok(), "got {res:?}"); + + let resp = res?; + let got_resp_msgs: Vec = resp + .messages + .iter() + .map(|sub_msg| CosmosMsgExt(&sub_msg.msg)) + .collect(); + let want_resp_msgs: Vec = + tc.resp_msgs.iter().map(CosmosMsgExt).collect(); + assert_eq!(want_resp_msgs, got_resp_msgs); + } + Ok(()) +} diff --git a/contracts/core-token-vesting-v2/src/contract.rs b/contracts/core-token-vesting-v2/src/contract.rs index acbfc13..ed833b9 100644 --- a/contracts/core-token-vesting-v2/src/contract.rs +++ b/contracts/core-token-vesting-v2/src/contract.rs @@ -77,7 +77,7 @@ pub fn execute( ExecuteMsg::DeregisterVestingAccounts { addresses } => { deregister_vesting_accounts(deps, env, info, addresses) } - ExecuteMsg::Claim { } => claim(deps, env, info), + ExecuteMsg::Claim {} => claim(deps, env, info), ExecuteMsg::Withdraw { amount } => withdraw(deps, env, info, amount), } } @@ -308,7 +308,8 @@ fn deregister_vesting_account( VESTING_ACCOUNTS.remove(storage, address); let vested_amount = account.vested_amount(timestamp)?; - let left_vesting_amount = account.vesting_amount.checked_sub(vested_amount)?; + let left_vesting_amount = + account.vesting_amount.checked_sub(vested_amount)?; let recoverable_amount = account.vesting_amount - account.claimed_amount; // transfer all that's unclaimed to the admin diff --git a/contracts/core-token-vesting-v2/src/state.rs b/contracts/core-token-vesting-v2/src/state.rs index 4dcd9d2..cc89484 100644 --- a/contracts/core-token-vesting-v2/src/state.rs +++ b/contracts/core-token-vesting-v2/src/state.rs @@ -62,7 +62,9 @@ impl VestingAccount { let remaining_token = self.vesting_amount.checked_sub(self.cliff_amount)?; let vested_token = remaining_token - .checked_mul(Uint128::from(block_time.seconds() - cliff_time.u64()))? + .checked_mul(Uint128::from( + block_time.seconds() - cliff_time.u64(), + ))? .checked_div(Uint128::from(end_time - cliff_time))?; Ok(vested_token + self.cliff_amount) From f143dc9e9f9cbe24c359228c361d66db3d5d9da7 Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Mon, 25 Mar 2024 08:16:38 +0900 Subject: [PATCH 19/29] fix(nibi-dev): fetch test should pass when offline as well refactor(broker): remove unused code commit 754be3c4f0f8561674a89f67cd6aafc8ddeaa26c Merge: 40b95b0 f546e89 Author: Unique Divine Date: Mon Mar 25 08:16:20 2024 +0900 Merge branch 'main' into ud/perms commit 40b95b0a38ab64bad222b9e44f9627ce9e4e29aa Author: Unique Divine Date: Sat Mar 23 18:25:18 2024 -0500 fix(nibi-dev): fetch test should pass when offline as well commit 49d93cd7b42b234050e348258a789cd52aeddd2a Author: Unique Divine Date: Sat Mar 23 18:25:01 2024 -0500 refactor(broker): remove unused code commit fca8548992d10009efee2d23498c046c4d15bb49 Author: Unique Divine Date: Fri Mar 22 04:36:53 2024 -0500 fix(broker-staking): compilation issues and run tidy commit 4b874039a4e25ce9d7e1a422091815605a3e9ad3 Author: matthiasmatt Date: Thu Mar 21 10:20:12 2024 +0100 chore: doc commit abf8865d257efb50f8a559df3398e3981c59aebd Author: matthiasmatt Date: Thu Mar 21 09:55:02 2024 +0100 feat: update compounder to use broker-bank library commit effd11bbd859f9f83196d98124dc789e43f26467 Merge: 73f96b5 21dbc5c Author: matthiasmatt Date: Tue Mar 19 13:33:09 2024 +0100 Merge remote-tracking branch 'origin/main' into mat/autocompounder commit 73f96b56d9c508ddcf1bb9ed1942a624686e9b2c Merge: 3209e9c 4b0444f Author: matthiasmatt Date: Tue Mar 19 13:29:37 2024 +0100 fix: fix merge conflicts commit 3209e9c7585f30839dc25d25d885f326dd1bfb7b Author: matthiasmatt Date: Thu Mar 7 18:51:56 2024 +0100 fix: remove validation for nibivaloper adresses commit 50a1130e7ddf6ee72c6f1486b1930fff7d7c60cb Author: matthiasmatt Date: Thu Mar 7 14:54:12 2024 +0100 feat: update artifacts commit e29f8a63af02741347352df598467e038dcda56e Merge: 36ca1fd 753f118 Author: matthiasmatt Date: Thu Mar 7 14:54:06 2024 +0100 Merge remote-tracking branch 'origin/main' into mat/autocompounder commit 36ca1fd3c08d35adc4c2981d5b28f13ba769ed7e Author: matthiasmatt Date: Thu Feb 29 18:33:57 2024 +0100 tests: add unit testing commit 6af55fb8a97616a2c917d9e876814bdfae90e9f4 Author: matthiasmatt Date: Thu Feb 29 14:14:45 2024 +0100 feat: add core compounder contract --- Cookbook.md | 2 +- contracts/broker-bank/src/contract.rs | 6 +----- contracts/broker-bank/src/msgs.rs | 3 --- contracts/broker-bank/src/oper_perms.rs | 5 ----- contracts/broker-staking/src/contract.rs | 6 +----- contracts/broker-staking/src/msg.rs | 9 ++++++--- packages/nibi-dev/src/gh_release.rs | 16 ++++++++++++++-- 7 files changed, 23 insertions(+), 24 deletions(-) diff --git a/Cookbook.md b/Cookbook.md index 276b63c..7876e0f 100644 --- a/Cookbook.md +++ b/Cookbook.md @@ -615,4 +615,4 @@ We need to specify admin and managers { "admin_and_managers": {} } -``` +``` \ No newline at end of file diff --git a/contracts/broker-bank/src/contract.rs b/contracts/broker-bank/src/contract.rs index 18cb584..60627ba 100644 --- a/contracts/broker-bank/src/contract.rs +++ b/contracts/broker-bank/src/contract.rs @@ -260,10 +260,6 @@ pub fn query( QueryMsg::Ownership {} => { Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) } - QueryMsg::IsHalted {} => { - let is_halted = IS_HALTED.load(deps.storage)?; - Ok(to_json_binary(&is_halted)?) - } } } @@ -798,4 +794,4 @@ pub mod tests { Ok(()) } -} \ No newline at end of file +} diff --git a/contracts/broker-bank/src/msgs.rs b/contracts/broker-bank/src/msgs.rs index 1d4ff5b..0b377dd 100644 --- a/contracts/broker-bank/src/msgs.rs +++ b/contracts/broker-bank/src/msgs.rs @@ -40,9 +40,6 @@ pub enum QueryMsg { /// operator set is "halted". #[returns(PermsStatus)] Perms {}, - - #[returns(bool)] - IsHalted {}, } #[cw_serde] diff --git a/contracts/broker-bank/src/oper_perms.rs b/contracts/broker-bank/src/oper_perms.rs index 47c9d0e..3c34a6f 100644 --- a/contracts/broker-bank/src/oper_perms.rs +++ b/contracts/broker-bank/src/oper_perms.rs @@ -18,11 +18,6 @@ pub struct HasPermsResponse { pub perms: Permissions, } -#[cw_serde] -pub struct PermsResponse { - pub perms: Permissions, -} - #[cw_serde] pub struct Permissions { pub owner: Option, diff --git a/contracts/broker-staking/src/contract.rs b/contracts/broker-staking/src/contract.rs index 082b793..a15ae9e 100644 --- a/contracts/broker-staking/src/contract.rs +++ b/contracts/broker-staking/src/contract.rs @@ -53,7 +53,7 @@ pub fn execute( } ExecuteMsg::ToggleHalt {} => toggle_halt(deps, env, info), ExecuteMsg::UpdateOwnership(action) => { - execute_update_ownership(deps, env, info, action) + Ok(execute_update_ownership(deps, env, info, action)?) } ExecuteMsg::EditOpers(action) => edit_opers(deps, env, info, action), ExecuteMsg::WithdrawAll { to } => { @@ -171,9 +171,5 @@ pub fn query( QueryMsg::Ownership {} => { Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) } - QueryMsg::IsHalted {} => { - let is_halted = IS_HALTED.load(deps.storage)?; - Ok(to_json_binary(&is_halted)?) - } } } diff --git a/contracts/broker-staking/src/msg.rs b/contracts/broker-staking/src/msg.rs index 8dd6386..fa4a66a 100644 --- a/contracts/broker-staking/src/msg.rs +++ b/contracts/broker-staking/src/msg.rs @@ -10,9 +10,12 @@ use cosmwasm_std::Uint128; #[cw_ownable::cw_ownable_execute] #[cw_serde] pub enum ExecuteMsg { - /// SetAutocompounderMode allows to set the autocompounder mode. - /// If it's set to true, managers will be able to stake tokens, otherwise - /// they won't be able to do so. + /// Toggles whether "operators" can invoke the smart contract. This acts a + /// security feature for the contract owner to disable non-owner permissions + /// quickly without sending multiple calls of `ExecuteMsg::EditOpers`. + /// + /// When the smart contract is halted, the owner can still use the everything, + /// while operators cannot. ToggleHalt {}, /// Withdraw coins from the broker smart contract balance. Only callable by diff --git a/packages/nibi-dev/src/gh_release.rs b/packages/nibi-dev/src/gh_release.rs index 86c4cb4..64fe53b 100644 --- a/packages/nibi-dev/src/gh_release.rs +++ b/packages/nibi-dev/src/gh_release.rs @@ -221,7 +221,13 @@ mod tests { #[test] fn api_version_is_not_stale() -> Result<(), anyhow::Error> { - gh_release::active_gh_api()?; + match gh_release::active_gh_api() { + Ok(_) => {} + Err(err) => { + // For when you're programming offline. + assert!(err.to_string().contains("failed to lookup address")) + } + }; Ok(()) } @@ -229,7 +235,13 @@ mod tests { fn fetch_latest_releases() -> anyhow::Result<()> { let repo_owner = "NibiruChain".to_string(); let repo_name = "nibiru".to_string(); - gh_release::fetch_latest_releases(repo_owner, repo_name)?; + match gh_release::fetch_latest_releases(repo_owner, repo_name) { + Ok(_) => {} + Err(err) => { + // For when you're programming offline. + assert!(err.to_string().contains("failed to lookup address")) + } + }; Ok(()) } From 4452beba3584b20459960a34da18d003caf838da Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Sat, 27 Apr 2024 07:43:51 -0500 Subject: [PATCH 20/29] ci(rust-test): Add CODECOV_TOKEN for uploads --- .github/workflows/rust-test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/rust-test.yml b/.github/workflows/rust-test.yml index b0522fe..33d7ca4 100644 --- a/.github/workflows/rust-test.yml +++ b/.github/workflows/rust-test.yml @@ -99,4 +99,6 @@ jobs: - name: Upload to codecov.io uses: codecov/codecov-action@v3 with: - fail_ci_if_error: false \ No newline at end of file + fail_ci_if_error: false + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file From 334f7066ebbeae08490dc87225a41df56c514c1a Mon Sep 17 00:00:00 2001 From: Unique Divine <51418232+Unique-Divine@users.noreply.github.com> Date: Mon, 27 May 2024 20:16:33 -0500 Subject: [PATCH 21/29] feat: Upgrade everything for CosmWasm V2 (#148) * feat(nibiru-ownable): cw-ownable with updates deps * fix(deps): Cargo.toml sync and fix broker-bank contract * quick save wip * fix(contracts): compile again * fix: Make everything compatible --- Cargo.lock | 634 +++++++++++------- Cargo.toml | 49 +- contracts/broker-bank/.cargo/config | 4 - .../config => broker-bank/.cargo/config.toml} | 7 +- contracts/broker-bank/Cargo.toml | 3 +- contracts/broker-bank/src/contract.rs | 61 +- contracts/broker-bank/src/error.rs | 2 +- contracts/broker-bank/src/msgs.rs | 4 +- contracts/broker-bank/src/oper_perms.rs | 4 +- contracts/broker-staking/.cargo/config | 7 - contracts/broker-staking/.cargo/config.toml | 9 + contracts/broker-staking/Cargo.toml | 4 +- contracts/broker-staking/src/contract.rs | 10 +- contracts/broker-staking/src/msg.rs | 2 +- contracts/broker-staking/src/testing.rs | 2 +- contracts/config.toml | 9 + .../core-cw3-flex-msig/.cargo/config.toml | 9 + contracts/core-cw3-flex-msig/Cargo.toml | 14 +- contracts/core-cw3-flex-msig/src/contract.rs | 25 +- contracts/core-shifter/.cargo/config | 4 - contracts/core-shifter/.cargo/config.toml | 9 + contracts/core-shifter/Cargo.toml | 6 +- contracts/core-shifter/out.json | 0 contracts/core-shifter/src/contract.rs | 16 +- contracts/core-shifter/src/error.rs | 2 +- contracts/core-shifter/src/msgs.rs | 2 +- contracts/core-shifter/src/state.rs | 8 +- contracts/core-shifter/vote.json | 6 + contracts/core-token-vesting-v2/.cargo/config | 7 - .../core-token-vesting-v2/.cargo/config.toml | 9 + contracts/core-token-vesting-v2/Cargo.toml | 4 +- contracts/core-token-vesting/.cargo/config | 7 - .../core-token-vesting/.cargo/config.toml | 9 + contracts/core-token-vesting/Cargo.toml | 4 +- contracts/incentives/.cargo/config | 4 - contracts/incentives/.cargo/config.toml | 9 + contracts/incentives/Cargo.toml | 20 +- contracts/incentives/src/contract.rs | 25 +- contracts/incentives/src/error.rs | 3 - contracts/incentives/src/state.rs | 6 +- contracts/incentives/src/testing.rs | 189 ++++-- contracts/lockup/.cargo/config | 4 - contracts/lockup/.cargo/config.toml | 9 + contracts/lockup/Cargo.toml | 1 - contracts/lockup/src/contract.rs | 26 +- contracts/lockup/src/error.rs | 3 - contracts/lockup/src/msgs.rs | 5 +- contracts/lockup/src/state.rs | 12 +- contracts/nibi-stargate-perp/.cargo/config | 4 - .../nibi-stargate-perp/.cargo/config.toml | 9 + contracts/nibi-stargate-perp/Cargo.toml | 4 +- contracts/nibi-stargate-perp/src/contract.rs | 33 +- contracts/nibi-stargate/.cargo/config | 4 - contracts/nibi-stargate/.cargo/config.toml | 9 + contracts/nibi-stargate/Cargo.toml | 1 - contracts/nibi-stargate/src/bin/schema.rs | 11 + contracts/nibi-stargate/src/contract.rs | 6 +- contracts/nibi-stargate/src/error.rs | 3 - contracts/nibi-stargate/src/msgs.rs | 1 + contracts/nusd-valuator/.cargo/config | 4 - contracts/nusd-valuator/.cargo/config.toml | 9 + contracts/nusd-valuator/Cargo.toml | 5 +- contracts/nusd-valuator/src/contract.rs | 20 +- contracts/nusd-valuator/src/error.rs | 2 +- contracts/nusd-valuator/src/msgs.rs | 4 +- contracts/nusd-valuator/src/queries.rs | 2 +- contracts/pricefeed/.cargo/config | 4 - contracts/pricefeed/.cargo/config.toml | 9 + contracts/pricefeed/Cargo.toml | 1 - contracts/pricefeed/src/error.rs | 3 - nibiru-std/Cargo.toml | 8 +- packages/core-controller/Cargo.toml | 1 - packages/core-controller/src/contract.rs | 10 +- packages/cw-address-like/Cargo.toml | 14 + packages/cw-address-like/README.md | 69 ++ packages/cw-address-like/src/lib.rs | 20 + packages/easy-addr/Cargo.toml | 14 + packages/easy-addr/src/lib.rs | 15 + packages/nibiru-ownable/Cargo.toml | 22 + packages/nibiru-ownable/README.md | 128 ++++ packages/nibiru-ownable/derive/Cargo.toml | 23 + packages/nibiru-ownable/derive/README.md | 7 + packages/nibiru-ownable/derive/src/lib.rs | 186 +++++ packages/nibiru-ownable/src/lib.rs | 588 ++++++++++++++++ packages/nibiru-ownable/tests/macro.rs | 55 ++ 85 files changed, 1986 insertions(+), 590 deletions(-) delete mode 100644 contracts/broker-bank/.cargo/config rename contracts/{core-cw3-flex-msig/.cargo/config => broker-bank/.cargo/config.toml} (50%) delete mode 100644 contracts/broker-staking/.cargo/config create mode 100644 contracts/broker-staking/.cargo/config.toml create mode 100644 contracts/config.toml create mode 100644 contracts/core-cw3-flex-msig/.cargo/config.toml delete mode 100644 contracts/core-shifter/.cargo/config create mode 100644 contracts/core-shifter/.cargo/config.toml create mode 100644 contracts/core-shifter/out.json create mode 100644 contracts/core-shifter/vote.json delete mode 100644 contracts/core-token-vesting-v2/.cargo/config create mode 100644 contracts/core-token-vesting-v2/.cargo/config.toml delete mode 100644 contracts/core-token-vesting/.cargo/config create mode 100644 contracts/core-token-vesting/.cargo/config.toml delete mode 100644 contracts/incentives/.cargo/config create mode 100644 contracts/incentives/.cargo/config.toml delete mode 100644 contracts/lockup/.cargo/config create mode 100644 contracts/lockup/.cargo/config.toml delete mode 100644 contracts/nibi-stargate-perp/.cargo/config create mode 100644 contracts/nibi-stargate-perp/.cargo/config.toml delete mode 100644 contracts/nibi-stargate/.cargo/config create mode 100644 contracts/nibi-stargate/.cargo/config.toml create mode 100644 contracts/nibi-stargate/src/bin/schema.rs delete mode 100644 contracts/nusd-valuator/.cargo/config create mode 100644 contracts/nusd-valuator/.cargo/config.toml delete mode 100644 contracts/pricefeed/.cargo/config create mode 100644 contracts/pricefeed/.cargo/config.toml create mode 100644 packages/cw-address-like/Cargo.toml create mode 100644 packages/cw-address-like/README.md create mode 100644 packages/cw-address-like/src/lib.rs create mode 100644 packages/easy-addr/Cargo.toml create mode 100644 packages/easy-addr/src/lib.rs create mode 100644 packages/nibiru-ownable/Cargo.toml create mode 100644 packages/nibiru-ownable/README.md create mode 100644 packages/nibiru-ownable/derive/Cargo.toml create mode 100644 packages/nibiru-ownable/derive/README.md create mode 100644 packages/nibiru-ownable/derive/src/lib.rs create mode 100644 packages/nibiru-ownable/src/lib.rs create mode 100644 packages/nibiru-ownable/tests/macro.rs diff --git a/Cargo.lock b/Cargo.lock index 2d9b6ad..3bbebff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.80" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" dependencies = [ "backtrace", ] @@ -171,6 +171,12 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +[[package]] +name = "bech32" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" + [[package]] name = "bitflags" version = "1.3.2" @@ -213,6 +219,12 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bnum" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" + [[package]] name = "bnum" version = "0.10.0" @@ -224,11 +236,11 @@ name = "broker-bank" version = "0.1.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-ownable", - "cw-storage-plus", - "cw2", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw2 2.0.0", + "nibiru-ownable", "nibiru-std", "schemars", "serde", @@ -242,12 +254,12 @@ version = "0.2.0" dependencies = [ "anyhow", "broker-bank", - "cosmwasm-schema", - "cosmwasm-std", - "cw-ownable", - "cw-storage-plus", - "cw-utils", - "cw20", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw20 2.0.0", + "nibiru-ownable", "nibiru-std", "schemars", "serde", @@ -380,9 +392,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" name = "controller" version = "0.2.0" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", "nibiru-std", "schemars", "serde", @@ -410,11 +422,11 @@ name = "core-token-vesting-v2" version = "2.1.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw20", + "cosmwasm-schema 1.5.3", + "cosmwasm-std 1.5.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw20 1.1.2", "schemars", "serde", "serde_json", @@ -436,9 +448,9 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.5.3" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9934c79e58d9676edfd592557dee765d2a6ef54c09d5aa2edb06156b00148966" +checksum = "8ed6aa9f904de106fa16443ad14ec2abe75e94ba003bb61c681c0e43d4c58d2a" dependencies = [ "digest 0.10.7", "ecdsa", @@ -448,6 +460,19 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cosmwasm-crypto" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b08e6670ab9e13a1a8a9cfad8fdad48bf0aaf88a6e81f39f2d9b2fc79b1890" +dependencies = [ + "digest 0.10.7", + "ed25519-zebra", + "k256", + "rand_core 0.6.4", + "thiserror", +] + [[package]] name = "cosmwasm-derive" version = "1.5.3" @@ -457,13 +482,35 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "cosmwasm-derive" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b0918fc1a24b2ee08142c8d99d03f4c8e6d74244bdb304dbb29c0dab8e77e9" +dependencies = [ + "syn 1.0.109", +] + [[package]] name = "cosmwasm-schema" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3e3a2136e2a60e8b6582f5dffca5d1a683ed77bf38537d330bc1dfccd69010" dependencies = [ - "cosmwasm-schema-derive", + "cosmwasm-schema-derive 1.5.3", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cosmwasm-schema" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dbdb5800ca67f2f2f938d67db59a7c5434af133c3e508779a4df7a9b5d533b" +dependencies = [ + "cosmwasm-schema-derive 2.0.2", "schemars", "serde", "serde_json", @@ -481,17 +528,28 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "cosmwasm-schema-derive" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ee47cf29f7688ebfa6ade8ddabcf51fc153f1157a3b46f5b4b1ce7a0316fdf" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "cosmwasm-std" -version = "1.5.3" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8666e572a3a2519010dde88c04d16e9339ae751b56b2bb35081fe3f7d6be74" +checksum = "ad011ae7447188e26e4a7dbca2fcd0fc186aa21ae5c86df0503ea44c78f9e469" dependencies = [ "base64", - "bech32", - "bnum", - "cosmwasm-crypto", - "cosmwasm-derive", + "bech32 0.9.1", + "bnum 0.8.1", + "cosmwasm-crypto 1.5.2", + "cosmwasm-derive 1.5.3", "derivative", "forward_ref", "hex", @@ -503,26 +561,49 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cosmwasm-std" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88191bd0d4743613eb7a2f086acb0838404cb531bf658382effafc7ba91e8320" +dependencies = [ + "base64", + "bech32 0.9.1", + "bnum 0.10.0", + "cosmwasm-crypto 2.0.2", + "cosmwasm-derive 2.0.2", + "derivative", + "forward_ref", + "hex", + "schemars", + "serde", + "serde-json-wasm 1.0.1", + "sha2 0.10.8", + "static_assertions", + "thiserror", +] + [[package]] name = "cosmwasm-vm" -version = "1.5.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011bc44b0d617f440ea509b38e543437511a196c6e2a0ebd3425edd912902fb2" +checksum = "184841233ccfac1b1826821a24bdd7d75228c07cb493c1b8c265ef2482950a58" dependencies = [ + "bech32 0.9.1", "bitflags 1.3.2", "bytecheck", "bytes", "clru", - "cosmwasm-crypto", - "cosmwasm-std", + "cosmwasm-crypto 2.0.2", + "cosmwasm-std 2.0.2", "crc32fast", "derivative", - "enumset", "hex", "schemars", "serde", "serde_json", "sha2 0.10.8", + "strum", "thiserror", "wasmer", "wasmer-middlewares", @@ -700,23 +781,21 @@ dependencies = [ [[package]] name = "cw-address-like" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451a4691083a88a3c0630a8a88799e9d4cd6679b7ce8ff22b8da2873ff31d380" +version = "2.0.0" dependencies = [ - "cosmwasm-std", + "cosmwasm-std 2.0.2", ] [[package]] name = "cw-controllers" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57de8d3761e46be863e3ac1eba8c8a976362a48c6abf240df1e26c3e421ee9e8" +checksum = "50c1804013d21060b994dea28a080f9eab78a3bcb6b617f05e7634b0600bf7b1" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", "schemars", "serde", "thiserror", @@ -724,16 +803,17 @@ dependencies = [ [[package]] name = "cw-multi-test" -version = "0.17.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d818f5323c80ed4890db7f89d65eda3f0261fe21878e628c27ea2d8de4b7ba4" +checksum = "e403ad6ec62c8bcbcb75f7f4940712d0142b6103310da2a9375252b942358caa" dependencies = [ "anyhow", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", + "bech32 0.11.0", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", "derivative", - "itertools 0.11.0", + "itertools", "prost", "schemars", "serde", @@ -742,71 +822,64 @@ dependencies = [ ] [[package]] -name = "cw-multi-test" -version = "0.20.0" +name = "cw-storage-plus" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fff029689ae89127cf6d7655809a68d712f3edbdb9686c70b018ba438b26ca" +checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" dependencies = [ - "anyhow", - "bech32", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "derivative", - "itertools 0.12.1", - "prost", + "cosmwasm-std 1.5.2", "schemars", "serde", - "sha2 0.10.8", - "thiserror", ] [[package]] -name = "cw-ownable" -version = "0.5.1" +name = "cw-storage-plus" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093dfb4520c48b5848274dd88ea99e280a04bc08729603341c7fb0d758c74321" +checksum = "f13360e9007f51998d42b1bc6b7fa0141f74feae61ed5fd1e5b0a89eec7b5de1" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-address-like", - "cw-ownable-derive", - "cw-storage-plus", - "cw-utils", - "thiserror", + "cosmwasm-std 2.0.2", + "schemars", + "serde", ] [[package]] -name = "cw-ownable-derive" -version = "0.5.1" +name = "cw-utils" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d3bf2e0f341bb6cc100d7d441d31cf713fbd3ce0c511f91e79f14b40a889af" +checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "cosmwasm-schema 1.5.3", + "cosmwasm-std 1.5.2", + "cw2 1.1.2", + "schemars", + "semver", + "serde", + "thiserror", ] [[package]] -name = "cw-storage-plus" -version = "1.2.0" +name = "cw-utils" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" +checksum = "07dfee7f12f802431a856984a32bce1cb7da1e6c006b5409e3981035ce562dec" dependencies = [ - "cosmwasm-std", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", "schemars", "serde", + "thiserror", ] [[package]] -name = "cw-utils" -version = "1.0.3" +name = "cw2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" +checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw2", + "cosmwasm-schema 1.5.3", + "cosmwasm-std 1.5.2", + "cw-storage-plus 1.2.0", "schemars", "semver", "serde", @@ -815,13 +888,13 @@ dependencies = [ [[package]] name = "cw2" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" +checksum = "b04852cd38f044c0751259d5f78255d07590d136b8a86d4e09efdd7666bd6d27" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", "schemars", "semver", "serde", @@ -834,24 +907,37 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "526e39bb20534e25a1cd0386727f0038f4da294e5e535729ba3ef54055246abd" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-utils", + "cosmwasm-schema 1.5.3", + "cosmwasm-std 1.5.2", + "cw-utils 1.0.3", + "schemars", + "serde", +] + +[[package]] +name = "cw20" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a42212b6bf29bbdda693743697c621894723f35d3db0d5df930be22903d0e27c" +dependencies = [ + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-utils 2.0.0", "schemars", "serde", ] [[package]] name = "cw20-base" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ad79e86ea3707229bf78df94e08732e8f713207b4a77b2699755596725e7d9" +checksum = "d6de8c32e100f1fca306972d86b617234a5e6b00594ea2b48716fd6804d4d95d" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw2", - "cw20", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw2 2.0.0", + "cw20 2.0.0", "schemars", "semver", "serde", @@ -860,14 +946,14 @@ dependencies = [ [[package]] name = "cw3" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2967fbd073d4b626dd9e7148e05a84a3bebd9794e71342e12351110ffbb12395" +checksum = "d5e53c2057526c65d9c88be8b2a564729ebad7a3d87ee97b97665a71446f913a" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-utils", - "cw20", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-utils 2.0.0", + "cw20 2.0.0", "schemars", "serde", "thiserror", @@ -875,15 +961,15 @@ dependencies = [ [[package]] name = "cw3-fixed-multisig" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58d7480e78644625c38bb082bfe9a27b01ca58bfcb785690ef43363fd40acf51" +checksum = "9a8233125653e61e898eaade6c6fdb3bd9c48aceb2ad97e84eada2c9bf5bff46" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw2", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", "cw3", "schemars", "serde", @@ -894,18 +980,19 @@ dependencies = [ name = "cw3-flex-multisig" version = "1.0.1" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 0.17.0", - "cw-storage-plus", - "cw-utils", - "cw2", - "cw20", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-multi-test", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", + "cw20 2.0.0", "cw20-base", "cw3", "cw3-fixed-multisig", "cw4", "cw4-group", + "easy-addr", "schemars", "serde", "thiserror", @@ -913,29 +1000,29 @@ dependencies = [ [[package]] name = "cw4" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24754ff6e45f2a1c60adc409d9b2eb87666012c44021329141ffaab3388fccd2" +checksum = "d33f5c8a6b6cd1bd24e212d7f44967697bfa3c4f9cc3f9a8e1c58f5fe5db032d" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", "schemars", "serde", ] [[package]] name = "cw4-group" -version = "1.1.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e24a22c3af54c52edf528673b420a67a1648be2c159b8ec778d2fbf543df24b" +checksum = "e60083d0aec9f6d6191c797bb3605835289fd3d875fe516ae5a164c7f8a0ba4e" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", "cw-controllers", - "cw-storage-plus", - "cw-utils", - "cw2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", "cw4", "schemars", "serde", @@ -1075,6 +1162,16 @@ dependencies = [ "memmap2 0.5.10", ] +[[package]] +name = "easy-addr" +version = "0.1.0" +dependencies = [ + "cosmwasm-std 2.0.2", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -1521,14 +1618,17 @@ dependencies = [ name = "incentives" version = "0.2.0" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test 0.20.0", - "cw-storage-plus", - "cw-utils", - "cw2", - "cw20", + "anyhow", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-multi-test", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", + "cw20 2.0.0", + "easy-addr", "lockup", + "nibiru-std", "schemars", "serde", "serde-json-wasm 1.0.1", @@ -1561,15 +1661,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -1596,9 +1687,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -1646,12 +1737,12 @@ dependencies = [ name = "lockup" version = "0.2.0" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw2", - "cw20", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", + "cw20 2.0.0", "schemars", "serde", "thiserror", @@ -1698,9 +1789,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -1774,12 +1865,12 @@ name = "nibi-stargate" version = "0.2.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw2", - "cw20", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", + "cw20 2.0.0", "nibiru-std", "schemars", "serde", @@ -1791,12 +1882,13 @@ name = "nibi-stargate-perp" version = "0.2.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", + "broker-bank", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", "cosmwasm-vm", - "cw-storage-plus", - "cw-utils", - "cw2", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "cw2 2.0.0", "nibiru-std", "schemars", "serde", @@ -1804,13 +1896,26 @@ dependencies = [ "thiserror", ] +[[package]] +name = "nibiru-ownable" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-address-like", + "cw-storage-plus 2.0.0", + "cw-utils 2.0.0", + "ownable-derive", + "thiserror", +] + [[package]] name = "nibiru-std" -version = "0.0.5" +version = "0.1.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", "prost", "prost-types", "serde", @@ -1823,11 +1928,11 @@ name = "nusd-valuator" version = "0.1.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-ownable", - "cw-storage-plus", - "cw2", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw2 2.0.0", + "nibiru-ownable", "nibiru-std", "schemars", "serde", @@ -1900,6 +2005,18 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "ownable-derive" +version = "0.6.0" +dependencies = [ + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "nibiru-ownable", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "parking_lot_core" version = "0.9.9" @@ -1978,12 +2095,12 @@ dependencies = [ name = "pricefeed" version = "0.2.0" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw2", - "cw20", + "cosmwasm-schema 1.5.3", + "cosmwasm-std 1.5.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw2 1.1.2", + "cw20 1.1.2", "schemars", "serde", "thiserror", @@ -2024,9 +2141,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922" dependencies = [ "bytes", "prost-derive", @@ -2034,12 +2151,12 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +checksum = "19de2de2a00075bf566bee3bd4db014b11587e84184d3f7a791bc17f1a8e9e48" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools", "proc-macro2", "quote", "syn 2.0.52", @@ -2303,6 +2420,12 @@ dependencies = [ "base64", ] +[[package]] +name = "rustversion" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" + [[package]] name = "ryu" version = "1.0.17" @@ -2428,9 +2551,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" dependencies = [ "serde_derive", ] @@ -2466,9 +2589,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" dependencies = [ "proc-macro2", "quote", @@ -2548,11 +2671,12 @@ name = "shifter" version = "0.2.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-ownable", - "cw-storage-plus", - "cw2", + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "cw-storage-plus 2.0.0", + "cw2 2.0.0", + "easy-addr", + "nibiru-ownable", "nibiru-std", "schemars", "serde", @@ -2634,6 +2758,28 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.52", +] + [[package]] name = "subtle" version = "2.5.0" @@ -2721,18 +2867,18 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", @@ -2759,11 +2905,11 @@ name = "token-vesting" version = "0.2.0" dependencies = [ "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw20", + "cosmwasm-schema 1.5.3", + "cosmwasm-std 1.5.2", + "cw-storage-plus 1.2.0", + "cw-utils 1.0.3", + "cw20 1.1.2", "schemars", "serde", "serde_json", @@ -2973,29 +3119,6 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-downcast" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dac026d43bcca6e7ce1c0956ba68f59edf6403e8e930a5d891be72c31a44340" -dependencies = [ - "js-sys", - "once_cell", - "wasm-bindgen", - "wasm-bindgen-downcast-macros", -] - -[[package]] -name = "wasm-bindgen-downcast-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5020cfa87c7cecefef118055d44e3c1fc122c7ec25701d528ee458a0b45f38f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "wasm-bindgen-futures" version = "0.4.42" @@ -3039,9 +3162,9 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasmer" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e626f958755a90a6552b9528f59b58a62ae288e6c17fcf40e99495bc33c60f0" +checksum = "5c15724dc25d1ee57962334aea8e41ade2675e5ea2ac6b8d42da6051b0face66" dependencies = [ "bytes", "cfg-if", @@ -3055,8 +3178,8 @@ dependencies = [ "shared-buffer", "target-lexicon", "thiserror", + "tracing", "wasm-bindgen", - "wasm-bindgen-downcast", "wasmer-compiler", "wasmer-compiler-cranelift", "wasmer-compiler-singlepass", @@ -3068,9 +3191,9 @@ dependencies = [ [[package]] name = "wasmer-compiler" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848e1922694cf97f4df680a0534c9d72c836378b5eb2313c1708fe1a75b40044" +checksum = "55a7f3b3a96f8d844c25e2c032af9572306dd63fa93dc17bcca4c5458ac569bd" dependencies = [ "backtrace", "bytes", @@ -3095,9 +3218,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-cranelift" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d96bce6fad15a954edcfc2749b59e47ea7de524b6ef3df392035636491a40b4" +checksum = "102e2c5bacac69495c4025767e2fa26797ffb27f242dccb7cf57d9cefd944386" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -3114,9 +3237,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-singlepass" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebaa865b40ffb3351b03dab9fe9930a5248c25daebd55b464b79b862d9b55ccd" +checksum = "2071db9b993508dac72d12f7a9372e0c095fbdc173e0009c4b75886bed4a855e" dependencies = [ "byteorder", "dynasm", @@ -3133,9 +3256,9 @@ dependencies = [ [[package]] name = "wasmer-derive" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f08f80d166a9279671b7af7a09409c28ede2e0b4e3acabbf0e3cb22c8038ba7" +checksum = "0ea737fa08f95d6abc4459f42a70a9833e8974b814e74971d77ef473814f4d4c" dependencies = [ "proc-macro-error", "proc-macro2", @@ -3145,9 +3268,9 @@ dependencies = [ [[package]] name = "wasmer-middlewares" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb4b87c0ea9f8636c81a8ab8f52bad01c8623c9fcbb3db5f367d5f157fada30" +checksum = "0346ed39c185c1c5c1094e6c0271d798276a34f80e1e5576bcb2e32fa2e7f05a" dependencies = [ "wasmer", "wasmer-types", @@ -3156,9 +3279,9 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae2c892882f0b416783fb4310e5697f5c30587f6f9555f9d4f2be85ab39d5d3d" +checksum = "b0689110e291b0f07fc665f2824e5ff81df120848e8a9acfbf1a9bf7990773f9" dependencies = [ "bytecheck", "enum-iterator", @@ -3172,9 +3295,9 @@ dependencies = [ [[package]] name = "wasmer-vm" -version = "4.2.2" +version = "4.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0a9a57b627fb39e5a491058d4365f099bc9b140031c000fded24a3306d9480" +checksum = "4cd41f822a1ac4242d478754e8ceba2806a00ea5072803622e1fe91e8e28b2a1" dependencies = [ "backtrace", "cc", @@ -3200,12 +3323,13 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.95.0" +version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ea896273ea99b15132414be1da01ab0d8836415083298ecaffbe308eaac87a" +checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ - "indexmap 1.9.3", - "url", + "bitflags 2.4.2", + "indexmap 2.2.5", + "semver", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 762893f..4688121 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,10 @@ members = ["scripts", "packages/*", "nibiru-std", "contracts/*"] exclude = ["packages/msig-ez"] resolver = "2" +package.version = "0.1.0" +package.homepage = "https://github.com/NibiruChain/cw-nibiru" +package.repository = "https://github.com/NibiruChain/cw-nibiru" +package.edition = "2021" # Dependencies can be inherited from a workspace by specifying the dependency in # the `[workspace.dependencies]` table. To use workspace crates, add them to the @@ -14,34 +18,38 @@ resolver = "2" serde = { version = "1.0.189", default-features = false, features = ["derive"] } serde_json = "1.0.108" +# deps: packages nibiru-std = { path = "nibiru-std" } prost = "0.12.3" prost-types = "0.12.3" -bash-rs = { path = "packages/bash-rs" } +bash-rs = { path = "packages/bash-rs" } +# Macros for controlling ownership of CosmWasm smart contracts +nibiru-ownable = { path = "packages/nibiru-ownable" } +ownable-derive = { path = "packages/nibiru-ownable/derive" } +cw-address-like = { path = "packages/cw-address-like" } +easy-addr = { path = "packages/easy-addr" } # deps: CosmWasm -cosmwasm-std = { version = "1.5.0", features = ["stargate", "staking"] } -cosmwasm-schema = "1.5.0" -cw-storage-plus = { version = "1.2.0" } -cw-multi-test = { version = "0.20.0" } -cw-utils = { version = "1.0.3" } -# Macros for controlling ownership of CosmWasm smart contracts -cw-ownable = { version = "0.5.1"} +cosmwasm-std = { version = "2.0.2", features = ["stargate", "staking"] } +cosmwasm-schema = "2.0.2" +cw-storage-plus = { version = "2.0.0" } +cw-multi-test = { version = "2.0.1" } +cw-utils = { version = "2.0.0" } # deps: cw-plus -cw2 = { version = "1.1.1" } -cw3 = { version = "1.1.1" } -cw3-fixed-multisig = { version = "1.1.1", features = ["library"] } -cw4 = { version = "1.1.1" } -cw20 = { version = "1.1.1" } +cw2 = { version = "2.0.0" } +cw3 = { version = "2.0.0" } +cw3-fixed-multisig = { version = "2.0.0", features = ["library"] } +cw4 = { version = "2.0.0" } +cw20 = { version = "2.0.0" } +cw4-group = { version = "2.0" } +cw20-base = { version = "2.0" } # deps: core contracts -# TODO: revive bindings-perp with stargate -# bindings-perp = { path = "core/core-bindings-perp" } -shifter = { path = "contracts/core-shifter" } -controller = { path = "contracts/core-controller" } -lockup = { path = "contracts/lockup", features = ["library"] } -incentives = { path = "contracts/incentives", features = ["library"] } +shifter = { path = "contracts/core-shifter" } +controller = { path = "contracts/core-controller" } +lockup = { path = "contracts/lockup", features = ["library"] } +incentives = { path = "contracts/incentives", features = ["library"] } broker-bank = { path = "contracts/broker-bank", features = ["library"] } # deps: else @@ -53,6 +61,9 @@ clap = { version = "4.4.7", features = ["derive", "cargo", "env", "string"] } schemars = "0.8.15" home = "0.5" toml = "0.8" +quote = "1.0" +syn = { version = "1", features = ["full"] } # NOTE: This needs to stay v1 +proc-macro2 = "1.0" [profile.release] opt-level = 3 diff --git a/contracts/broker-bank/.cargo/config b/contracts/broker-bank/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/broker-bank/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/core-cw3-flex-msig/.cargo/config b/contracts/broker-bank/.cargo/config.toml similarity index 50% rename from contracts/core-cw3-flex-msig/.cargo/config rename to contracts/broker-bank/.cargo/config.toml index f517478..051a969 100644 --- a/contracts/core-cw3-flex-msig/.cargo/config +++ b/contracts/broker-bank/.cargo/config.toml @@ -1,6 +1,9 @@ [alias] wasm = "build --release --lib --target wasm32-unknown-unknown" wasm-debug = "build --lib --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/broker-bank/Cargo.toml b/contracts/broker-bank/Cargo.toml index 6f8147e..7976aa6 100644 --- a/contracts/broker-bank/Cargo.toml +++ b/contracts/broker-bank/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/NibiruChain/cw-nibiru" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # features.library: Use the library feature to disable all # instantiate/execute/query exports. This is necessary use this as a dependency # for another smart contract crate. @@ -26,5 +25,5 @@ thiserror = { workspace = true } nibiru-std = { workspace = true } cw2 = { workspace = true } serde_json = { workspace = true } -cw-ownable = { workspace = true } +nibiru-ownable = { workspace = true } anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/broker-bank/src/contract.rs b/contracts/broker-bank/src/contract.rs index 60627ba..1c823f9 100644 --- a/contracts/broker-bank/src/contract.rs +++ b/contracts/broker-bank/src/contract.rs @@ -5,6 +5,7 @@ use cosmwasm_std::{ BankQuery, Binary, Deps, DepsMut, Env, MessageInfo, QueryRequest, Response, StdResult, }; +use cw_std::Coin; use crate::oper_perms::Permissions; use crate::{ @@ -34,7 +35,7 @@ pub fn instantiate( format!("crates.io:{CONTRACT_NAME}"), CONTRACT_VERSION, )?; - cw_ownable::initialize_owner(deps.storage, deps.api, Some(&msg.owner))?; + nibiru_ownable::initialize_owner(deps.storage, Some(&msg.owner))?; TO_ADDRS.save(deps.storage, &msg.to_addrs)?; OPERATORS.save(deps.storage, &msg.opers)?; IS_HALTED.save(deps.storage, &false)?; @@ -75,15 +76,14 @@ pub fn withdraw( denoms: BTreeSet, contract_addr: String, ) -> Result { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let to_addr: String = match to { Some(given_to_addr) => given_to_addr, None => info.sender.to_string(), }; - let balances: AllBalanceResponse = + let balances: Vec = query_bank_balances(contract_addr, deps.as_ref())?; let balances: Vec = balances - .amount .iter() .filter(|b_coin| denoms.contains(&b_coin.denom)) .cloned() @@ -113,7 +113,7 @@ pub fn withdraw_all( to: Option, contract_addr: String, ) -> Result { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let to_addr: String = match to { Some(given_to_addr) => given_to_addr, None => info.sender.to_string(), @@ -121,12 +121,10 @@ pub fn withdraw_all( let balances = query_bank_balances(contract_addr, deps.as_ref())?; let tx_msg = BankMsg::Send { to_address: to_addr.to_string(), - amount: balances.amount.clone(), + amount: balances.clone(), }; - let event = event_withdraw( - serde_json::to_string(&balances.amount)?.as_str(), - &to_addr, - ); + let event = + event_withdraw(serde_json::to_string(&balances)?.as_str(), &to_addr); LOGS.push_front( deps.storage, &Log { @@ -144,13 +142,11 @@ pub fn edit_opers( info: MessageInfo, action: oper_perms::Action, ) -> Result { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let mut perms = Permissions::load(deps.storage)?; - let api = deps.api; match action { oper_perms::Action::AddOper { address } => { - let addr = api.addr_validate(address.as_str())?; - perms.operators.insert(addr.into_string()); + perms.operators.insert(address.clone()); OPERATORS.save(deps.storage, &perms.operators)?; let res = Response::new().add_attributes(vec![ @@ -178,7 +174,7 @@ pub fn toggle_halt( _env: Env, info: MessageInfo, ) -> Result { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let new_is_halted = !IS_HALTED.load(deps.storage)?; IS_HALTED.save(deps.storage, &new_is_halted)?; Ok(Response::new().add_event(event_toggle_halt(&new_is_halted))) @@ -229,10 +225,14 @@ pub fn execute_update_ownership( deps: DepsMut, env: Env, info: MessageInfo, - action: cw_ownable::Action, + action: nibiru_ownable::Action, ) -> Result { - let ownership = - cw_ownable::update_ownership(deps, &env.block, &info.sender, action)?; + let ownership = nibiru_ownable::update_ownership( + deps, + &env.block, + info.sender.as_str(), + action, + )?; Ok(Response::new().add_attributes(ownership.into_attributes())) } @@ -257,9 +257,9 @@ pub fn query( let perms_status: PermsStatus = query_perms_status(deps)?; Ok(to_json_binary(&perms_status)?) } - QueryMsg::Ownership {} => { - Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) - } + QueryMsg::Ownership {} => Ok(to_json_binary( + &nibiru_ownable::get_ownership(deps.storage)?, + )?), } } @@ -273,28 +273,25 @@ pub fn query_accepted_denoms(deps: Deps) -> StdResult> { /// use broker_bank::contract::query_bank_balances; /// use cosmwasm_std::{ /// testing::{mock_dependencies, mock_env}, -/// AllBalanceResponse, DepsMut, Env, StdResult}; +/// DepsMut, Env, StdResult, Coin}; /// /// let env: Env = mock_env(); /// let mut deps = mock_dependencies(); /// let mut deps: DepsMut = deps.as_mut(); /// let contract_addr = env.contract.address.to_string(); -/// let balances: StdResult = +/// let balances: StdResult> = /// query_bank_balances(contract_addr.to_string(), deps.as_ref()); /// assert!(balances.is_ok()) /// ``` -pub fn query_bank_balances( - addr: String, - deps: Deps, -) -> StdResult { - let query_result = +pub fn query_bank_balances(addr: String, deps: Deps) -> StdResult> { + let query_result: Option = deps.querier .query(&QueryRequest::Bank(BankQuery::AllBalances { address: addr, }))?; - let balances: AllBalanceResponse = match query_result { - Some(res) => res, - None => AllBalanceResponse::default(), + let balances: Vec = match query_result { + Some(res) => res.amount, + None => Vec::new(), }; Ok(balances) } @@ -369,7 +366,7 @@ pub mod tests { opers: opers.to_vec(), sender: not_owner, exec_msg: ExecuteMsg::UpdateOwnership( - cw_ownable::Action::TransferOwnership { + nibiru_ownable::Action::TransferOwnership { new_owner: String::from("new_owner"), expiry: None, }, diff --git a/contracts/broker-bank/src/error.rs b/contracts/broker-bank/src/error.rs index ce41389..9d949ea 100644 --- a/contracts/broker-bank/src/error.rs +++ b/contracts/broker-bank/src/error.rs @@ -12,7 +12,7 @@ pub enum ContractError { SerdeJson(String), #[error("{0}")] - Ownership(#[from] cw_ownable::OwnershipError), + Ownership(#[from] nibiru_ownable::OwnershipError), // #[error("serde_json error: {err:?}")] // SerdeJson { err: serde_json::error::Error }, diff --git a/contracts/broker-bank/src/msgs.rs b/contracts/broker-bank/src/msgs.rs index 0b377dd..6e75f0a 100644 --- a/contracts/broker-bank/src/msgs.rs +++ b/contracts/broker-bank/src/msgs.rs @@ -5,7 +5,7 @@ use cosmwasm_std as cw; use crate::oper_perms; -#[cw_ownable::cw_ownable_execute] +#[nibiru_ownable::ownable_execute] #[cw_serde] pub enum ExecuteMsg { /// Send coins to an account the set of "TO_ADDRS", appending transaction @@ -32,7 +32,7 @@ pub enum ExecuteMsg { // TODO: feat(broker-bank): Clear logs tx } -#[cw_ownable::cw_ownable_query] +#[nibiru_ownable::ownable_query] #[cw_serde] #[derive(cosmwasm_schema::QueryResponses)] pub enum QueryMsg { diff --git a/contracts/broker-bank/src/oper_perms.rs b/contracts/broker-bank/src/oper_perms.rs index 3c34a6f..e920b57 100644 --- a/contracts/broker-bank/src/oper_perms.rs +++ b/contracts/broker-bank/src/oper_perms.rs @@ -45,10 +45,10 @@ impl Permissions { } pub fn load(storage: &dyn Storage) -> Result { - let owner = cw_ownable::get_ownership(storage)?.owner; + let owner = nibiru_ownable::get_ownership(storage)?.owner; let opers = OPERATORS.load(storage)?; Ok(Permissions { - owner: owner.map(|addr| addr.into_string()), + owner: owner.map(|addr| addr.to_string()), operators: opers, }) } diff --git a/contracts/broker-staking/.cargo/config b/contracts/broker-staking/.cargo/config deleted file mode 100644 index 8a76ed5..0000000 --- a/contracts/broker-staking/.cargo/config +++ /dev/null @@ -1,7 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example schema" - diff --git a/contracts/broker-staking/.cargo/config.toml b/contracts/broker-staking/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/broker-staking/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/broker-staking/Cargo.toml b/contracts/broker-staking/Cargo.toml index 30ce203..32acb65 100644 --- a/contracts/broker-staking/Cargo.toml +++ b/contracts/broker-staking/Cargo.toml @@ -17,12 +17,10 @@ crate-type = ["cdylib", "rlib"] [features] # for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] [dependencies] cosmwasm-schema = { workspace = true } -cw-ownable = { workspace = true } +nibiru-ownable = { workspace = true } nibiru-std = { workspace = true } cosmwasm-std = { workspace = true } cw20.workspace = true diff --git a/contracts/broker-staking/src/contract.rs b/contracts/broker-staking/src/contract.rs index a15ae9e..4f732c9 100644 --- a/contracts/broker-staking/src/contract.rs +++ b/contracts/broker-staking/src/contract.rs @@ -25,7 +25,7 @@ pub fn instantiate( msg: BrokerBankInstantiateMsg, ) -> StdResult { // Managers validation - cw_ownable::initialize_owner(deps.storage, deps.api, Some(&msg.owner))?; + nibiru_ownable::initialize_owner(deps.storage, Some(&msg.owner))?; TO_ADDRS.save(deps.storage, &msg.to_addrs)?; OPERATORS.save(deps.storage, &msg.opers)?; IS_HALTED.save(deps.storage, &false)?; @@ -68,7 +68,7 @@ pub fn unstake( info: MessageInfo, unstake_msgs: Vec, ) -> Result { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let mut messages: Vec = vec![]; for msg in unstake_msgs.iter() { @@ -168,8 +168,8 @@ pub fn query( let perms_status: PermsStatus = query_perms_status(deps)?; Ok(to_json_binary(&perms_status)?) } - QueryMsg::Ownership {} => { - Ok(to_json_binary(&cw_ownable::get_ownership(deps.storage)?)?) - } + QueryMsg::Ownership {} => Ok(to_json_binary( + &nibiru_ownable::get_ownership(deps.storage)?, + )?), } } diff --git a/contracts/broker-staking/src/msg.rs b/contracts/broker-staking/src/msg.rs index fa4a66a..abfbb97 100644 --- a/contracts/broker-staking/src/msg.rs +++ b/contracts/broker-staking/src/msg.rs @@ -7,7 +7,7 @@ use cosmwasm_std::Uint128; /// Enum respresenting message types for the execute entry point. /// These express the different ways in which one can invoke the contract /// and broadcast tx messages against it. -#[cw_ownable::cw_ownable_execute] +#[nibiru_ownable::ownable_execute] #[cw_serde] pub enum ExecuteMsg { /// Toggles whether "operators" can invoke the smart contract. This acts a diff --git a/contracts/broker-staking/src/testing.rs b/contracts/broker-staking/src/testing.rs index 815a178..7978667 100644 --- a/contracts/broker-staking/src/testing.rs +++ b/contracts/broker-staking/src/testing.rs @@ -57,7 +57,7 @@ pub fn test_assert_owner() -> TestResult { opers: opers.to_vec(), sender: not_owner, exec_msg: ExecuteMsg::UpdateOwnership( - cw_ownable::Action::TransferOwnership { + nibiru_ownable::Action::TransferOwnership { new_owner: String::from("new_owner"), expiry: None, }, diff --git a/contracts/config.toml b/contracts/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/core-cw3-flex-msig/.cargo/config.toml b/contracts/core-cw3-flex-msig/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/core-cw3-flex-msig/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/core-cw3-flex-msig/Cargo.toml b/contracts/core-cw3-flex-msig/Cargo.toml index 0999733..3119b77 100644 --- a/contracts/core-cw3-flex-msig/Cargo.toml +++ b/contracts/core-cw3-flex-msig/Cargo.toml @@ -13,7 +13,6 @@ documentation = "https://docs.cosmwasm.com" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] @@ -21,17 +20,18 @@ library = [] cosmwasm-std = { workspace = true } cw-storage-plus = { workspace = true } cosmwasm-schema = { workspace = true } -cw-utils = "1.0.2" +cw-utils = { workspace = true } cw2 = { workspace = true } cw3 = { workspace = true } cw3-fixed-multisig = { workspace = true } cw4 = { workspace = true } cw20 = { workspace = true } -schemars = "0.8.15" +schemars = { workspace = true } serde = { version = "1.0.190", default-features = false, features = ["derive"] } -thiserror = { version = "1.0.23" } +thiserror = { workspace = true } [dev-dependencies] -cw4-group = { version = "1.1.1" } -cw-multi-test = "0.17.0" -cw20-base = { version = "1.1.1" } \ No newline at end of file +cw4-group = { workspace = true } +cw-multi-test = { workspace = true } +cw20-base = { workspace = true } +easy-addr = { workspace = true } \ No newline at end of file diff --git a/contracts/core-cw3-flex-msig/src/contract.rs b/contracts/core-cw3-flex-msig/src/contract.rs index 911905b..223207d 100644 --- a/contracts/core-cw3-flex-msig/src/contract.rs +++ b/contracts/core-cw3-flex-msig/src/contract.rs @@ -513,6 +513,7 @@ mod tests { coin, coins, Addr, BankMsg, Coin, Decimal, Timestamp, Uint128, }; + use super::*; use cw2::{query_contract_info, ContractVersion}; use cw20::{Cw20Coin, UncheckedDenom}; use cw3::{DepositError, UncheckedDepositInfo}; @@ -523,16 +524,16 @@ mod tests { Executor, SudoMsg, }; use cw_utils::{Duration, Threshold}; + use easy_addr::addr; - use super::*; - - const OWNER: &str = "admin0001"; - const VOTER1: &str = "voter0001"; - const VOTER2: &str = "voter0002"; - const VOTER3: &str = "voter0003"; - const VOTER4: &str = "voter0004"; - const VOTER5: &str = "voter0005"; - const SOMEBODY: &str = "somebody"; + const OWNER: &str = addr!("admin0001"); + const VOTER1: &str = addr!("voter0001"); + const VOTER2: &str = addr!("voter0002"); + const VOTER3: &str = addr!("voter0003"); + const VOTER4: &str = addr!("voter0004"); + const VOTER5: &str = addr!("voter0005"); + const SOMEBODY: &str = addr!("somebody"); + const NEWBIE: &str = addr!("newbie"); fn member>(addr: T, weight: u64) -> Member { Member { @@ -1926,7 +1927,7 @@ mod tests { // updates VOTER2 power to 21 -> with snapshot, vote doesn't pass proposal // adds NEWBIE with 2 power -> with snapshot, invalid vote // removes VOTER3 -> with snapshot, can vote on proposal - let newbie: &str = "newbie"; + let newbie: &str = NEWBIE; let update_msg = cw4_group::msg::ExecuteMsg::UpdateMembers { remove: vec![VOTER3.into()], add: vec![member(VOTER2, 21), member(newbie, 2)], @@ -2226,7 +2227,7 @@ mod tests { app.update_block(|block| block.height += 2); // admin changes the group (3 -> 0, 2 -> 9, 0 -> 29) - total = 56, require 29 to pass - let newbie: &str = "newbie"; + let newbie: &str = NEWBIE; let update_msg = cw4_group::msg::ExecuteMsg::UpdateMembers { remove: vec![VOTER3.into()], add: vec![member(VOTER2, 9), member(newbie, 29)], @@ -2331,7 +2332,7 @@ mod tests { app.update_block(|block| block.height += 2); // admin changes the group (3 -> 0, 2 -> 9, 0 -> 28) - total = 55, require 28 to pass - let newbie: &str = "newbie"; + let newbie: &str = NEWBIE; let update_msg = cw4_group::msg::ExecuteMsg::UpdateMembers { remove: vec![VOTER3.into()], add: vec![member(VOTER2, 9), member(newbie, 29)], diff --git a/contracts/core-shifter/.cargo/config b/contracts/core-shifter/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/core-shifter/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/core-shifter/.cargo/config.toml b/contracts/core-shifter/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/core-shifter/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/core-shifter/Cargo.toml b/contracts/core-shifter/Cargo.toml index 3ab9070..f610908 100644 --- a/contracts/core-shifter/Cargo.toml +++ b/contracts/core-shifter/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/NibiruChain/cw-nibiru" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] @@ -22,8 +21,9 @@ nibiru-std = { workspace = true } thiserror = { workspace = true } schemars = "0.8.15" serde = { version = "1.0.188", default-features = false, features = ["derive"] } -cw-ownable = { workspace = true } +nibiru-ownable = { workspace = true } cw2 = { workspace = true } [dev-dependencies] -anyhow = { workspace = true } \ No newline at end of file +anyhow = { workspace = true } +easy-addr = { workspace = true } \ No newline at end of file diff --git a/contracts/core-shifter/out.json b/contracts/core-shifter/out.json new file mode 100644 index 0000000..e69de29 diff --git a/contracts/core-shifter/src/contract.rs b/contracts/core-shifter/src/contract.rs index 33e7ef3..f8b778b 100644 --- a/contracts/core-shifter/src/contract.rs +++ b/contracts/core-shifter/src/contract.rs @@ -118,10 +118,14 @@ fn execute_update_ownership( deps: DepsMut, env: Env, info: MessageInfo, - action: cw_ownable::Action, -) -> Result { - let ownership = - cw_ownable::update_ownership(deps, &env.block, &info.sender, action)?; + action: nibiru_ownable::Action, +) -> Result { + let ownership = nibiru_ownable::update_ownership( + deps, + &env.block, + info.sender.as_str(), + action, + )?; Ok(Response::new().add_attributes(ownership.into_attributes())) } @@ -191,6 +195,8 @@ pub mod tests { use cosmwasm_std::{coins, testing}; use std::collections::BTreeSet; + use easy_addr::addr; + // --------------------------------------------------------------------------- // Tests // --------------------------------------------------------------------------- @@ -244,7 +250,7 @@ pub mod tests { #[test] fn test_exec_edit_opers_add() -> TestResult { let (mut deps, _env, _info) = t::setup_contract()?; - let new_member = "new_member"; + let new_member = addr!("new_member"); let perms = Permissions::load(&deps.storage)?; let not_has: bool = !perms.is_owner(new_member); assert!(not_has); diff --git a/contracts/core-shifter/src/error.rs b/contracts/core-shifter/src/error.rs index d021256..d4eb51e 100644 --- a/contracts/core-shifter/src/error.rs +++ b/contracts/core-shifter/src/error.rs @@ -9,7 +9,7 @@ pub enum ContractError { Std(#[from] StdError), #[error("{0}")] - Ownership(#[from] cw_ownable::OwnershipError), + Ownership(#[from] nibiru_ownable::OwnershipError), #[error("insufficient permissions: sender is not a contract operator ({sender:?})")] NoOperatorPerms { sender: String }, diff --git a/contracts/core-shifter/src/msgs.rs b/contracts/core-shifter/src/msgs.rs index 0db1ded..2f5df8b 100644 --- a/contracts/core-shifter/src/msgs.rs +++ b/contracts/core-shifter/src/msgs.rs @@ -8,7 +8,7 @@ pub struct InitMsg { } /// ExecuteMsg specifies the args for the execute entry point of the contract. -#[cw_ownable::cw_ownable_execute] +#[nibiru_ownable::ownable_execute] #[cw_serde] pub enum ExecuteMsg { ShiftSwapInvariant { diff --git a/contracts/core-shifter/src/state.rs b/contracts/core-shifter/src/state.rs index d6ca58f..03ebac5 100644 --- a/contracts/core-shifter/src/state.rs +++ b/contracts/core-shifter/src/state.rs @@ -35,10 +35,10 @@ impl Permissions { } pub fn load(storage: &dyn Storage) -> Result { - let owner = cw_ownable::get_ownership(storage)?.owner; + let owner = nibiru_ownable::get_ownership(storage)?.owner; let opers = OPERATORS.load(storage)?; Ok(Permissions { - owner: owner.map(|addr| addr.into_string()), + owner: owner.map(|addr| addr.to_string()), operators: opers, }) } @@ -50,9 +50,9 @@ impl Permissions { pub fn instantiate_perms( owner: Option<&str>, storage: &mut dyn Storage, - api: &dyn Api, + _api: &dyn Api, ) -> Result<(), ContractError> { - cw_ownable::initialize_owner(storage, api, owner)?; + nibiru_ownable::initialize_owner(storage, owner)?; Ok(OPERATORS.save(storage, &BTreeSet::default())?) } diff --git a/contracts/core-shifter/vote.json b/contracts/core-shifter/vote.json new file mode 100644 index 0000000..d3e9737 --- /dev/null +++ b/contracts/core-shifter/vote.json @@ -0,0 +1,6 @@ +{ + "vote": { + "proposal_id": 73, + "vote": "yes" + } +} diff --git a/contracts/core-token-vesting-v2/.cargo/config b/contracts/core-token-vesting-v2/.cargo/config deleted file mode 100644 index 8a76ed5..0000000 --- a/contracts/core-token-vesting-v2/.cargo/config +++ /dev/null @@ -1,7 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example schema" - diff --git a/contracts/core-token-vesting-v2/.cargo/config.toml b/contracts/core-token-vesting-v2/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/core-token-vesting-v2/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/core-token-vesting-v2/Cargo.toml b/contracts/core-token-vesting-v2/Cargo.toml index 3cd727c..409a8e8 100644 --- a/contracts/core-token-vesting-v2/Cargo.toml +++ b/contracts/core-token-vesting-v2/Cargo.toml @@ -17,8 +17,6 @@ crate-type = ["cdylib", "rlib"] [features] # for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] [dependencies] cosmwasm-schema = "1.4.0" @@ -32,4 +30,4 @@ serde = { version = "1.0.188", default-features = false, features = ["derive"] } serde_json = { version = "1.0", default-features = false, features = ["alloc"] } [dev-dependencies] -anyhow = { workspace = true } +anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/core-token-vesting/.cargo/config b/contracts/core-token-vesting/.cargo/config deleted file mode 100644 index 8a76ed5..0000000 --- a/contracts/core-token-vesting/.cargo/config +++ /dev/null @@ -1,7 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -unit-test = "test --lib" -integration-test = "test --test integration" -schema = "run --example schema" - diff --git a/contracts/core-token-vesting/.cargo/config.toml b/contracts/core-token-vesting/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/core-token-vesting/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/core-token-vesting/Cargo.toml b/contracts/core-token-vesting/Cargo.toml index 7a2d3bf..0905e6c 100644 --- a/contracts/core-token-vesting/Cargo.toml +++ b/contracts/core-token-vesting/Cargo.toml @@ -17,8 +17,6 @@ crate-type = ["cdylib", "rlib"] [features] # for quicker tests, cargo test --lib -# for more explicit tests, cargo test --features=backtraces -backtraces = ["cosmwasm-std/backtraces"] [dependencies] cosmwasm-schema = "1.4.0" @@ -32,4 +30,4 @@ serde = { version = "1.0.188", default-features = false, features = ["derive"] } serde_json = { version = "1.0", default-features = false, features = ["alloc"] } [dev-dependencies] -anyhow = { workspace = true } \ No newline at end of file +anyhow = { workspace = true } diff --git a/contracts/incentives/.cargo/config b/contracts/incentives/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/incentives/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/incentives/.cargo/config.toml b/contracts/incentives/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/incentives/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/incentives/Cargo.toml b/contracts/incentives/Cargo.toml index 806a572..a98a494 100644 --- a/contracts/incentives/Cargo.toml +++ b/contracts/incentives/Cargo.toml @@ -8,22 +8,24 @@ edition = "2021" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] [dependencies] -cw-utils = { version = "1.0.2" } -cw2 = { version = "1.1.1" } -cw20 = { version = "1.1.1" } -cosmwasm-schema = { version = "1.4.0" } -cosmwasm-std = { version = "1.4.0" } -cw-storage-plus = { version = "1.1.0" } +cosmwasm-std = { workspace = true } +cosmwasm-schema = { workspace = true } +cw-storage-plus = { workspace = true } +cw-utils = { workspace = true } +cw2 = { workspace = true } +cw20 = { workspace = true } +nibiru-std = { workspace = true } schemars = "0.8.15" serde = { version = "1.0.188", default-features = false, features = ["derive"] } serde-json-wasm = "1.0.0" -thiserror = { version = "1.0.49" } +thiserror = { workspace = true } lockup = { workspace = true } [dev-dependencies] -cw-multi-test = { workspace = true } \ No newline at end of file +cw-multi-test = { workspace = true } +easy-addr = { workspace = true } +anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/incentives/src/contract.rs b/contracts/incentives/src/contract.rs index 3c94db9..52e4f61 100644 --- a/contracts/incentives/src/contract.rs +++ b/contracts/incentives/src/contract.rs @@ -216,7 +216,7 @@ fn execute_withdraw_rewards( &lockup::msgs::QueryMsg::LocksByDenomAndAddressBetween { denom: program.lockup_denom.clone(), unlocking_after: epoch.for_coins_unlocking_after, - address: info.sender.clone(), + address: info.sender.to_string(), locked_before: epoch.for_coins_locked_before, }, )?; @@ -240,11 +240,18 @@ fn execute_withdraw_rewards( Decimal::from_ratio(qualified_locked_amount, epoch.total_locked); println!("ownership ratio: {:?}", user_ownership_ratio.to_string()); for coin in epoch.to_distribute { + let coin_amount: Uint128 = coin + .amount + .checked_multiply_ratio( + qualified_locked_amount, + epoch.total_locked, + ) + .unwrap(); add_coins( &mut to_distribute, Coin { denom: coin.denom, - amount: coin.amount * user_ownership_ratio, + amount: coin_amount, }, ) } @@ -265,6 +272,14 @@ fn execute_withdraw_rewards( .unwrap(); println!("distributing: {:?}", &to_distribute); + let to_distribute: Vec = to_distribute + .into_iter() + .filter(|coin| !coin.amount.is_zero()) + .collect(); + + if to_distribute.is_empty() { + return Ok(Response::new()); + } Ok(Response::new().add_message(BankMsg::Send { to_address: info.sender.to_string(), amount: to_distribute, @@ -326,10 +341,8 @@ fn execute_process_epoch( )?; // identify how much is the total locked - let total_locked = locks - .iter() - .map(|lock| -> Uint128 { lock.coin.amount }) - .sum::(); + let total_locked = + locks.iter().map(|lock| lock.coin.amount).sum::(); // then we identify how many coins we need to pay // based on the program funding diff --git a/contracts/incentives/src/error.rs b/contracts/incentives/src/error.rs index 1b9088d..6a81e9b 100644 --- a/contracts/incentives/src/error.rs +++ b/contracts/incentives/src/error.rs @@ -1,7 +1,4 @@ use cosmwasm_std::StdError; -#[cfg(feature = "backtraces")] -use std::backtrace::Backtrace; - use thiserror::Error; #[allow(dead_code)] diff --git a/contracts/incentives/src/state.rs b/contracts/incentives/src/state.rs index 61f15fd..d2c4aad 100644 --- a/contracts/incentives/src/state.rs +++ b/contracts/incentives/src/state.rs @@ -49,7 +49,7 @@ pub struct FundingIndexes<'a> { pub(crate) pay_from_epoch: MultiIndex<'a, (u64, u64), Funding, u64>, } -impl<'a> IndexList for FundingIndexes<'a> { +impl IndexList for FundingIndexes<'_> { fn get_indexes( &'_ self, ) -> Box> + '_> { @@ -58,7 +58,7 @@ impl<'a> IndexList for FundingIndexes<'a> { } } -pub fn funding<'a>() -> IndexedMap<'a, u64, Funding, FundingIndexes<'a>> { +pub fn funding<'a>() -> IndexedMap> { let indexes = FundingIndexes { pay_from_epoch: MultiIndex::new( |_bz, funding: &Funding| -> (_, _) { @@ -69,5 +69,5 @@ pub fn funding<'a>() -> IndexedMap<'a, u64, Funding, FundingIndexes<'a>> { ), }; - return IndexedMap::new("funding", indexes); + IndexedMap::new("funding", indexes) } diff --git a/contracts/incentives/src/testing.rs b/contracts/incentives/src/testing.rs index 0a67b1c..016bfce 100644 --- a/contracts/incentives/src/testing.rs +++ b/contracts/incentives/src/testing.rs @@ -6,21 +6,32 @@ mod integration_test { use cosmwasm_std::{from_json, Addr, Coin}; use cw_multi_test::{App, BankSudo, ContractWrapper, Executor}; + use easy_addr::addr; + use nibiru_std::errors::TestResult; - const ROOT: &str = "root"; - const INCENTIVES: &str = "contract1"; - const LOCKUP: &str = "contract0"; + const ADDR_ROOT: &str = addr!("root"); + + #[derive(Debug, Clone)] + pub struct TestContracts { + pub contract_incentives_addr: Addr, + pub contract_lockup_addr: Addr, + } + pub struct TestDeps { + pub app: App, + pub contracts: TestContracts, + } fn create_program( app: &mut App, + contracts: TestContracts, denom: String, epochs: u64, epoch_block_duration: u64, min_lockup_blocks: u64, ) { app.execute_contract( - Addr::unchecked(ROOT), - Addr::unchecked(INCENTIVES), + Addr::unchecked(ADDR_ROOT), + contracts.contract_incentives_addr, &ExecuteMsg::CreateProgram { denom, epochs, @@ -34,18 +45,19 @@ mod integration_test { fn fund_program( app: &mut App, + contracts: TestContracts, _program_id: u64, coins: &[Coin], ) -> Vec { app.execute_contract( - Addr::unchecked(ROOT), - Addr::unchecked(INCENTIVES), + Addr::unchecked(ADDR_ROOT), + contracts.contract_incentives_addr, &ExecuteMsg::FundProgram { id: 1 }, coins, ) .unwrap(); - app.wrap().query_all_balances(ROOT).unwrap() + app.wrap().query_all_balances(ADDR_ROOT).unwrap() } fn mint(app: &mut App, to: &Addr, coins: &[Coin]) { @@ -59,12 +71,18 @@ mod integration_test { .unwrap(); } - fn mint_and_lock(app: &mut App, user: &Addr, coins: &[Coin], blocks: u64) { + fn mint_and_lock( + app: &mut App, + contracts: TestContracts, + user: &Addr, + coins: &[Coin], + blocks: u64, + ) { mint(app, user, coins); // we make alice lock some atoms app.execute_contract( user.clone(), - Addr::unchecked(LOCKUP), + contracts.contract_lockup_addr, &lockup::msgs::ExecuteMsg::Lock { blocks }, coins, ) @@ -73,12 +91,13 @@ mod integration_test { fn withdraw_rewards( app: &mut App, + contracts: TestContracts, user: &Addr, _program_id: u64, ) -> Vec { app.execute_contract( user.clone(), - Addr::unchecked(INCENTIVES), + contracts.contract_incentives_addr, &crate::msgs::ExecuteMsg::WithdrawRewards { id: 1 }, &[], ) @@ -87,11 +106,15 @@ mod integration_test { app.wrap().query_all_balances(user).unwrap() } - fn process_epoch(app: &mut App, _program_id: u64) -> EpochInfo { + fn process_epoch( + app: &mut App, + contracts: TestContracts, + _program_id: u64, + ) -> EpochInfo { from_json::( &app.execute_contract( - Addr::unchecked(ROOT), - Addr::unchecked(INCENTIVES), + Addr::unchecked(ADDR_ROOT), + contracts.contract_incentives_addr, &ExecuteMsg::ProcessEpoch { id: 1 }, &[], ) @@ -102,7 +125,7 @@ mod integration_test { .unwrap() } - fn app() -> App { + fn app() -> anyhow::Result { let mut app = App::default(); // note don't break the order otherwise contracts will have different addresses // which renders the const in the module useless TODO: maybe do better. @@ -113,69 +136,92 @@ mod integration_test { lockup::contract::query, )); let code = app.store_code(lockup_contract); - app.instantiate_contract( + let contract_lockup_addr = app.instantiate_contract( code, - Addr::unchecked(ROOT), + Addr::unchecked(ADDR_ROOT), &lockup::msgs::InstantiateMsg {}, &[], "lockup", None, - ) - .unwrap(); + )?; let incentives_contract = Box::new(ContractWrapper::new(execute, instantiate, query)); let code = app.store_code(incentives_contract); - app.instantiate_contract( + let contract_incentives_addr = app.instantiate_contract( code, - Addr::unchecked(ROOT), + Addr::unchecked(ADDR_ROOT), &InstantiateMsg { - lockup_contract_address: Addr::unchecked(LOCKUP), + lockup_contract_address: contract_lockup_addr.clone(), }, &[], "incentives", None, - ) - .unwrap(); + )?; - app + Ok(TestDeps { + app, + contracts: TestContracts { + contract_incentives_addr, + contract_lockup_addr, + }, + }) } #[test] - fn flow() { - let mut app = app(); - let _lockup_addr = Addr::unchecked(LOCKUP); - let _incentives_addr = Addr::unchecked(INCENTIVES); + fn flow() -> TestResult { + let test_deps = app()?; + let mut app = test_deps.app; + let contracts = test_deps.contracts; - let alice = Addr::unchecked("alice"); - let bob = Addr::unchecked("bob"); + let alice = Addr::unchecked(addr!("alice")); + let bob = Addr::unchecked(addr!("bob")); // mint coins mint( &mut app, - &Addr::unchecked(ROOT), + &Addr::unchecked(ADDR_ROOT), &[ - Coin::new(1_000_000, "ATOM"), - Coin::new(1_000_000, "OSMO"), - Coin::new(1_000_000, "LUNA"), + Coin::new(1_000_000u32, "ATOM"), + Coin::new(1_000_000u32, "OSMO"), + Coin::new(1_000_000u32, "LUNA"), ], ); // we make alice lock some lp coins - mint_and_lock(&mut app, &alice, &[Coin::new(100, "NIBI_LP")], 100); + let blocks = 100; + mint_and_lock( + &mut app, + contracts.clone(), + &alice, + &[Coin::new(100u32, "NIBI_LP")], + blocks, + ); // now we create a new incentives program - create_program(&mut app, "NIBI_LP".to_string(), 5, 5, 50); + create_program( + &mut app, + contracts.clone(), + "NIBI_LP".to_string(), + 5, + 5, + 50, + ); // now we fund the incentives program - let balance = fund_program(&mut app, 1, &[Coin::new(1_000, "ATOM")]); + let balance = fund_program( + &mut app, + contracts.clone(), + 1, + &[Coin::new(1_000u32, "ATOM")], + ); println!("{:?}", balance,); let funding: Vec = app .wrap() .query_wasm_smart( - INCENTIVES, + &contracts.contract_incentives_addr, &QueryMsg::ProgramFunding { program_id: 1 }, ) .unwrap(); @@ -185,18 +231,25 @@ mod integration_test { block.height += 6 // shift +1 because epoch can be processed after the epoch block }); - let epoch_info = process_epoch(&mut app, 1); + let epoch_info = process_epoch(&mut app, contracts.clone(), 1); println!("{:?}", epoch_info); // withdraw rewards for alice at epoch 1 - let alice_rewards = withdraw_rewards(&mut app, &alice, 1); + let alice_rewards = + withdraw_rewards(&mut app, contracts.clone(), &alice, 1); // expected: 200ATOM coins - assert_eq!(vec![Coin::new(200, "ATOM")], alice_rewards,); + assert_eq!(vec![Coin::new(200u32, "ATOM")], alice_rewards,); // add bob lock - mint_and_lock(&mut app, &bob, &[Coin::new(200, "NIBI_LP")], 300); + mint_and_lock( + &mut app, + contracts.clone(), + &bob, + &[Coin::new(200u32, "NIBI_LP")], + 300, + ); // bob qualifies for next epoch app.update_block(|block| { @@ -204,74 +257,88 @@ mod integration_test { }); // process epoch - let epoch_info = process_epoch(&mut app, 1); + let epoch_info = process_epoch(&mut app, contracts.clone(), 1); println!("{:?}", epoch_info); // withdraw rewards for alice at epoch 2 - let alice_balance = withdraw_rewards(&mut app, &alice, 1); + let alice_balance = + withdraw_rewards(&mut app, contracts.clone(), &alice, 1); // expected: 200 + 0.33*200 ATOM coins - assert_eq!(vec![Coin::new(200 + 66, "ATOM")], alice_balance,); + assert_eq!(vec![Coin::new(200u32 + 66u32, "ATOM")], alice_balance,); // withdraw rewards for bob at epoch 2 - let bob_balance = withdraw_rewards(&mut app, &bob, 1); + let bob_balance = withdraw_rewards(&mut app, contracts.clone(), &bob, 1); // expected: 200 * 0.66666666 ATOM - assert_eq!(vec![Coin::new(133, "ATOM")], bob_balance,); + assert_eq!(vec![Coin::new(133u32, "ATOM")], bob_balance,); app.update_block(|block| block.height += 1); // add more funding - fund_program(&mut app, 1, &[Coin::new(1000, "OSMO")]); + fund_program( + &mut app, + contracts.clone(), + 1, + &[Coin::new(1000u32, "OSMO")], + ); // go to epoch 3 block and process it app.update_block(|block| block.height += 4); - let epoch_info = process_epoch(&mut app, 1); + let epoch_info = process_epoch(&mut app, contracts.clone(), 1); println!("{:?}", epoch_info); // go to epoch 4 block and process it app.update_block(|block| block.height += 5); - let epoch_info = process_epoch(&mut app, 1); + let epoch_info = process_epoch(&mut app, contracts.clone(), 1); println!("{:?}", epoch_info); // withdraw rewards for alice at epoch 3-4 - let alice_balance = withdraw_rewards(&mut app, &alice, 1); + let alice_balance = + withdraw_rewards(&mut app, contracts.clone(), &alice, 1); // withdraw rewards for bob at epoch 3-4 - let bob_balance = withdraw_rewards(&mut app, &bob, 1); + let bob_balance = withdraw_rewards(&mut app, contracts.clone(), &bob, 1); assert_eq!( - vec![Coin::new(399, "ATOM"), Coin::new(442, "OSMO")], + vec![Coin::new(399u32, "ATOM"), Coin::new(444u32, "OSMO")], bob_balance, ); assert_eq!( - vec![Coin::new(398, "ATOM"), Coin::new(220, "OSMO")], + vec![Coin::new(398u32, "ATOM"), Coin::new(222u32, "OSMO")], alice_balance, ); // create a new funding for last epoch - fund_program(&mut app, 1, &[Coin::new(1000, "OSMO")]); + fund_program( + &mut app, + contracts.clone(), + 1, + &[Coin::new(1000u32, "OSMO")], + ); // fast forward to epoch 5 app.update_block(|block| block.height += 5); // process epoch 5 app.update_block(|block| block.height += 5); - let epoch_info = process_epoch(&mut app, 1); + let epoch_info = process_epoch(&mut app, contracts.clone(), 1); println!("{:?}", epoch_info); // finalize distribution - let alice_balance = withdraw_rewards(&mut app, &alice, 1); + let alice_balance = + withdraw_rewards(&mut app, contracts.clone(), &alice, 1); assert_eq!( - vec![Coin::new(464, "ATOM"), Coin::new(664, "OSMO")], + vec![Coin::new(464u32, "ATOM"), Coin::new(666u32, "OSMO")], alice_balance, ); - let bob_balance = withdraw_rewards(&mut app, &bob, 1); + let bob_balance = withdraw_rewards(&mut app, contracts, &bob, 1); assert_eq!( - vec![Coin::new(532, "ATOM"), Coin::new(1330, "OSMO")], + vec![Coin::new(532u32, "ATOM"), Coin::new(1332u32, "OSMO")], bob_balance, ); + Ok(()) } } diff --git a/contracts/lockup/.cargo/config b/contracts/lockup/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/lockup/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/lockup/.cargo/config.toml b/contracts/lockup/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/lockup/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/lockup/Cargo.toml b/contracts/lockup/Cargo.toml index 5e1f09c..1060dd4 100644 --- a/contracts/lockup/Cargo.toml +++ b/contracts/lockup/Cargo.toml @@ -8,7 +8,6 @@ edition = "2021" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] diff --git a/contracts/lockup/src/contract.rs b/contracts/lockup/src/contract.rs index bc34feb..83c04d8 100644 --- a/contracts/lockup/src/contract.rs +++ b/contracts/lockup/src/contract.rs @@ -140,7 +140,7 @@ pub(crate) fn execute_lock( &Lock { id, coin: coin.clone(), - owner: info.sender.clone(), + owner: info.sender.to_string(), duration_blocks: blocks, start_block: env.block.height, end_block: NOT_UNLOCKING_BLOCK_IDENTIFIER, @@ -265,12 +265,12 @@ mod tests { use crate::state::Lock; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; - use cosmwasm_std::{from_json, Addr, Coin, DepsMut, Env}; + use cosmwasm_std::{from_json, Coin, DepsMut, Env}; /// A 'TestLock' is struct representating an "owner" locking "coins" for /// some "duration". struct TestLock { - owner: Addr, + owner: String, duration: u64, coins: Vec, } @@ -320,15 +320,15 @@ mod tests { init(deps.as_mut()); let lock_1 = TestLock { - owner: Addr::unchecked("alice"), + owner: String::from("alice"), duration: 100, - coins: vec![Coin::new(100, "ATOM"), Coin::new(300, "LUNA")], + coins: vec![Coin::new(100u128, "ATOM"), Coin::new(300u128, "LUNA")], }; let lock_2 = TestLock { - owner: Addr::unchecked("bob"), + owner: String::from("bob"), duration: 50, - coins: vec![Coin::new(200, "ATOM"), Coin::new(700, "NIBI")], + coins: vec![Coin::new(200u128, "ATOM"), Coin::new(700u128, "NIBI")], }; create_lock(deps.as_mut(), &env, &lock_1); create_lock(deps.as_mut(), &env, &lock_2); @@ -348,7 +348,7 @@ mod tests { denom: denom.to_string(), unlocking_after, }, - coins: vec![Coin::new(100, denom), Coin::new(200, denom)], + coins: vec![Coin::new(100u128, denom), Coin::new(200u128, denom)], }); cases.push(CaseLocksByDenomUnlockingAfter { msg: QueryMsg::LocksByDenomAndAddressUnlockingAfter { @@ -356,7 +356,7 @@ mod tests { unlocking_after: 0, address: lock_1.owner.clone(), }, - coins: vec![Coin::new(100, denom)], + coins: vec![Coin::new(100u128, denom)], }); cases.push(CaseLocksByDenomUnlockingAfter { msg: QueryMsg::LocksByDenomAndAddressUnlockingAfter { @@ -364,7 +364,7 @@ mod tests { unlocking_after: 0, address: lock_2.owner.clone(), }, - coins: vec![Coin::new(200, denom)], + coins: vec![Coin::new(200u128, denom)], }); let denom = "LUNA"; @@ -373,7 +373,7 @@ mod tests { denom: denom.to_string(), unlocking_after, }, - coins: vec![Coin::new(300, denom)], + coins: vec![Coin::new(300u128, denom)], }); let denom = "NIBI"; @@ -382,7 +382,7 @@ mod tests { denom: denom.to_string(), unlocking_after, }, - coins: vec![Coin::new(700, denom)], + coins: vec![Coin::new(700u128, denom)], }); cases.push(CaseLocksByDenomUnlockingAfter { @@ -399,7 +399,7 @@ mod tests { unlocking_after, address: lock_2.owner, }, - coins: vec![Coin::new(700, denom)], + coins: vec![Coin::new(700u128, denom)], }); for case in &cases { diff --git a/contracts/lockup/src/error.rs b/contracts/lockup/src/error.rs index 6e23521..a2f9599 100644 --- a/contracts/lockup/src/error.rs +++ b/contracts/lockup/src/error.rs @@ -1,7 +1,4 @@ use cosmwasm_std::StdError; -#[cfg(feature = "backtraces")] -use std::backtrace::Backtrace; - use thiserror::Error; #[derive(Error, Debug, PartialEq)] diff --git a/contracts/lockup/src/msgs.rs b/contracts/lockup/src/msgs.rs index f31e1ad..150c114 100644 --- a/contracts/lockup/src/msgs.rs +++ b/contracts/lockup/src/msgs.rs @@ -1,4 +1,3 @@ -use cosmwasm_std::Addr; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -23,7 +22,7 @@ pub enum QueryMsg { LocksByDenomAndAddressUnlockingAfter { denom: String, unlocking_after: u64, - address: Addr, + address: String, }, LocksByDenomBetween { denom: String, @@ -32,7 +31,7 @@ pub enum QueryMsg { }, LocksByDenomAndAddressBetween { denom: String, - address: Addr, + address: String, locked_before: u64, unlocking_after: u64, }, diff --git a/contracts/lockup/src/state.rs b/contracts/lockup/src/state.rs index 8409fc0..bd822c5 100644 --- a/contracts/lockup/src/state.rs +++ b/contracts/lockup/src/state.rs @@ -1,4 +1,4 @@ -use cosmwasm_std::{Addr, Coin}; +use cosmwasm_std::Coin; use cw_storage_plus::{Index, IndexList, IndexedMap, Item, MultiIndex}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -10,7 +10,7 @@ pub const LOCKS_ID: Item = Item::new("locks_id"); pub struct Lock { pub id: u64, pub coin: Coin, - pub owner: Addr, + pub owner: String, pub duration_blocks: u64, pub start_block: u64, pub end_block: u64, @@ -19,9 +19,9 @@ pub struct Lock { pub struct LockIndexes<'a> { pub denom_end: MultiIndex<'a, (String, u64), Lock, u64>, - pub addr_denom_end: MultiIndex<'a, (Addr, String, u64), Lock, u64>, + pub addr_denom_end: MultiIndex<'a, (String, String, u64), Lock, u64>, pub denom_start: MultiIndex<'a, (String, u64), Lock, u64>, - pub addr_denom_start: MultiIndex<'a, (Addr, String, u64), Lock, u64>, + pub addr_denom_start: MultiIndex<'a, (String, String, u64), Lock, u64>, } impl<'a> IndexList for LockIndexes<'a> { @@ -38,7 +38,7 @@ impl<'a> IndexList for LockIndexes<'a> { } } -pub fn locks<'a>() -> IndexedMap<'a, u64, Lock, LockIndexes<'a>> { +pub fn locks() -> IndexedMap> { let indexes = LockIndexes { addr_denom_end: MultiIndex::new( |_bz, lock: &Lock| -> (_, _, _) { @@ -75,5 +75,5 @@ pub fn locks<'a>() -> IndexedMap<'a, u64, Lock, LockIndexes<'a>> { ), }; - return IndexedMap::new("locks", indexes); + IndexedMap::new("locks", indexes) } diff --git a/contracts/nibi-stargate-perp/.cargo/config b/contracts/nibi-stargate-perp/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/nibi-stargate-perp/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/nibi-stargate-perp/.cargo/config.toml b/contracts/nibi-stargate-perp/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/nibi-stargate-perp/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/nibi-stargate-perp/Cargo.toml b/contracts/nibi-stargate-perp/Cargo.toml index 2a3941c..ecf0188 100644 --- a/contracts/nibi-stargate-perp/Cargo.toml +++ b/contracts/nibi-stargate-perp/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/NibiruChain/cw-nibiru" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] @@ -24,8 +23,9 @@ cw2 = { workspace = true } serde = { workspace = true } thiserror = { workspace = true } nibiru-std = { workspace = true } +broker-bank = { workspace = true } [dev-dependencies] -cosmwasm-vm = "1.5.0" +cosmwasm-vm = "2.0.2" serde_json = "1.0.108" anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/nibi-stargate-perp/src/contract.rs b/contracts/nibi-stargate-perp/src/contract.rs index acf469a..8b7f512 100644 --- a/contracts/nibi-stargate-perp/src/contract.rs +++ b/contracts/nibi-stargate-perp/src/contract.rs @@ -1,7 +1,7 @@ +use broker_bank::contract::query_bank_balances; use cosmwasm_std::{ - entry_point, AllBalanceResponse, BankMsg, BankQuery, Binary, CosmosMsg, - Deps, DepsMut, Env, MessageInfo, QueryRequest, Response, StdError, - StdResult, + entry_point, BankMsg, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, + Response, StdError, StdResult, }; use cw2::set_contract_version; @@ -204,7 +204,7 @@ pub fn execute( )); } let contract_address = env_ctx.contract.address; - let balances = query_contract_balance( + let balances: Vec = query_bank_balances( contract_address.to_string(), deps.as_ref(), )?; @@ -212,7 +212,7 @@ pub fn execute( // Send all funds to the specified recipient. let transfer_msg = BankMsg::Send { to_address: to.clone(), - amount: balances.amount, + amount: balances, }; Ok(Response::new().add_message(transfer_msg).add_attribute( event_key, @@ -277,23 +277,6 @@ fn check_can_execute(deps: Deps, sender: &str) -> StdResult { }) } -/// Query all contract balances or return an empty response -fn query_contract_balance( - contract_address: String, - deps: Deps, -) -> StdResult { - let query_result = - deps.querier - .query(&QueryRequest::Bank(BankQuery::AllBalances { - address: contract_address, - }))?; - let balances: AllBalanceResponse = match query_result { - Some(res) => res, - None => AllBalanceResponse::default(), - }; - Ok(balances) -} - #[cfg(test)] pub mod tests { use std::str::FromStr; @@ -460,7 +443,7 @@ pub mod tests { // Set up a mock querier with contract balance let balances: &[(&str, &[Coin])] = - &[(contract_address.as_str(), &[Coin::new(100, "token")])]; + &[(contract_address.as_str(), &[Coin::new(100u128, "token")])]; let querier = testing::MockQuerier::new(balances); deps.querier = querier; @@ -479,7 +462,7 @@ pub mod tests { // claim happy / partial TestCaseExecClaim { exec_msg: ExecuteMsg::Claim { - funds: Some(Coin::new(50, "token")), + funds: Some(Coin::new(50u128, "token")), claim_all: None, to: to_address.clone(), }, @@ -518,7 +501,7 @@ pub mod tests { // Set up a mock querier with contract balance let balances: &[(&str, &[Coin])] = - &[(contract_address.as_str(), &[Coin::new(100, "token")])]; + &[(contract_address.as_str(), &[Coin::new(100u128, "token")])]; let querier = testing::MockQuerier::new(balances); deps.querier = querier; diff --git a/contracts/nibi-stargate/.cargo/config b/contracts/nibi-stargate/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/nibi-stargate/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/nibi-stargate/.cargo/config.toml b/contracts/nibi-stargate/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/nibi-stargate/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/nibi-stargate/Cargo.toml b/contracts/nibi-stargate/Cargo.toml index f6c689d..6d0f27d 100644 --- a/contracts/nibi-stargate/Cargo.toml +++ b/contracts/nibi-stargate/Cargo.toml @@ -8,7 +8,6 @@ edition = "2021" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] diff --git a/contracts/nibi-stargate/src/bin/schema.rs b/contracts/nibi-stargate/src/bin/schema.rs new file mode 100644 index 0000000..9cdac7f --- /dev/null +++ b/contracts/nibi-stargate/src/bin/schema.rs @@ -0,0 +1,11 @@ +use cosmwasm_schema::write_api; + +use nibi_stargate::msgs::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + execute: ExecuteMsg, + query: QueryMsg, + } +} diff --git a/contracts/nibi-stargate/src/contract.rs b/contracts/nibi-stargate/src/contract.rs index 9cfeee7..ed94fe9 100644 --- a/contracts/nibi-stargate/src/contract.rs +++ b/contracts/nibi-stargate/src/contract.rs @@ -54,9 +54,9 @@ pub fn execute( let denom_parts: Vec<&str> = coin.denom.split('/').collect(); if denom_parts.len() != 3 { - return Err(StdError::GenericErr { - msg: "invalid denom input".to_string(), - } + return Err(StdError::generic_err( + "invalid denom input".to_string(), + ) .into()); } diff --git a/contracts/nibi-stargate/src/error.rs b/contracts/nibi-stargate/src/error.rs index 6e23521..a2f9599 100644 --- a/contracts/nibi-stargate/src/error.rs +++ b/contracts/nibi-stargate/src/error.rs @@ -1,7 +1,4 @@ use cosmwasm_std::StdError; -#[cfg(feature = "backtraces")] -use std::backtrace::Backtrace; - use thiserror::Error; #[derive(Error, Debug, PartialEq)] diff --git a/contracts/nibi-stargate/src/msgs.rs b/contracts/nibi-stargate/src/msgs.rs index f0b1c75..c7afb8c 100644 --- a/contracts/nibi-stargate/src/msgs.rs +++ b/contracts/nibi-stargate/src/msgs.rs @@ -13,5 +13,6 @@ pub enum ExecuteMsg { ChangeAdmin { denom: String, new_admin: String }, } +#[derive(cosmwasm_schema::QueryResponses)] #[cw_serde] pub enum QueryMsg {} diff --git a/contracts/nusd-valuator/.cargo/config b/contracts/nusd-valuator/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/nusd-valuator/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/nusd-valuator/.cargo/config.toml b/contracts/nusd-valuator/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/nusd-valuator/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/nusd-valuator/Cargo.toml b/contracts/nusd-valuator/Cargo.toml index e2fa7cc..09dbe8f 100644 --- a/contracts/nusd-valuator/Cargo.toml +++ b/contracts/nusd-valuator/Cargo.toml @@ -10,9 +10,8 @@ repository = "https://github.com/NibiruChain/cw-nibiru" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports -# library = [] +library = [] [dependencies] cosmwasm-std = { workspace = true } @@ -24,5 +23,5 @@ thiserror = { workspace = true } nibiru-std = { workspace = true } cw2 = { workspace = true } serde_json = { workspace = true } -cw-ownable = { workspace = true } +nibiru-ownable = { workspace = true } anyhow = { workspace = true } \ No newline at end of file diff --git a/contracts/nusd-valuator/src/contract.rs b/contracts/nusd-valuator/src/contract.rs index 6ab1cab..af05d7b 100644 --- a/contracts/nusd-valuator/src/contract.rs +++ b/contracts/nusd-valuator/src/contract.rs @@ -20,7 +20,7 @@ pub fn execute( ) -> Result { match msg { ExecuteMsg::ChangeDenom { from, to } => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; // "from" should be within the list of accepted denoms let mut denom_set = ACCEPTED_DENOMS.load(deps.storage)?; @@ -45,7 +45,7 @@ pub fn execute( Ok(Response::default().add_event(event)) } ExecuteMsg::AddDenom { denom } => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let mut denom_set = ACCEPTED_DENOMS.load(deps.storage)?; if denom_set.contains(&denom) { @@ -63,7 +63,7 @@ pub fn execute( } ExecuteMsg::RemoveDenom { denom } => { - cw_ownable::assert_owner(deps.storage, &info.sender)?; + nibiru_ownable::assert_owner(deps.storage, info.sender.as_str())?; let mut denom_set = ACCEPTED_DENOMS.load(deps.storage)?; let was_present = denom_set.remove(&denom); if !was_present { @@ -91,10 +91,14 @@ fn execute_update_ownership( deps: DepsMut, env: Env, info: MessageInfo, - action: cw_ownable::Action, -) -> Result { - let ownership = - cw_ownable::update_ownership(deps, &env.block, &info.sender, action)?; + action: nibiru_ownable::Action, +) -> Result { + let ownership = nibiru_ownable::update_ownership( + deps, + &env.block, + info.sender.as_str(), + action, + )?; Ok(Response::new().add_attributes(ownership.into_attributes())) } @@ -138,7 +142,7 @@ pub fn instantiate( format!("crates.io:{CONTRACT_NAME}"), CONTRACT_VERSION, )?; - cw_ownable::initialize_owner(deps.storage, deps.api, Some(&msg.owner))?; + nibiru_ownable::initialize_owner(deps.storage, Some(&msg.owner))?; ACCEPTED_DENOMS.save(deps.storage, &msg.accepted_denoms)?; Ok(Response::default()) } diff --git a/contracts/nusd-valuator/src/error.rs b/contracts/nusd-valuator/src/error.rs index fdd291e..f675c9f 100644 --- a/contracts/nusd-valuator/src/error.rs +++ b/contracts/nusd-valuator/src/error.rs @@ -12,7 +12,7 @@ pub enum ContractError { SerdeJson(String), #[error("{0}")] - Ownership(#[from] cw_ownable::OwnershipError), + Ownership(#[from] nibiru_ownable::OwnershipError), // #[error("serde_json error: {err:?}")] // SerdeJson { err: serde_json::error::Error }, diff --git a/contracts/nusd-valuator/src/msgs.rs b/contracts/nusd-valuator/src/msgs.rs index df53807..1009a3c 100644 --- a/contracts/nusd-valuator/src/msgs.rs +++ b/contracts/nusd-valuator/src/msgs.rs @@ -3,7 +3,7 @@ use std::collections::BTreeSet; use cosmwasm_schema::cw_serde; use cosmwasm_std as cw; -#[cw_ownable::cw_ownable_query] +#[nibiru_ownable::ownable_query] #[cw_serde] #[derive(cosmwasm_schema::QueryResponses)] pub enum QueryMsg { @@ -30,7 +30,7 @@ pub enum QueryMsg { RedeemableChoices { redeem_amount: cw::Uint128 }, } -#[cw_ownable::cw_ownable_execute] +#[nibiru_ownable::ownable_execute] #[cw_serde] pub enum ExecuteMsg { /// Change one denom in the "ACCEPTED_DENOMS" set to another one in-place. diff --git a/contracts/nusd-valuator/src/queries.rs b/contracts/nusd-valuator/src/queries.rs index cd78957..fc14a98 100644 --- a/contracts/nusd-valuator/src/queries.rs +++ b/contracts/nusd-valuator/src/queries.rs @@ -27,7 +27,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { to_json_binary(&query_redeemable_choices(deps, redeem_amount)?) } QueryMsg::Ownership {} => { - to_json_binary(&cw_ownable::get_ownership(deps.storage)?) + to_json_binary(&nibiru_ownable::get_ownership(deps.storage)?) } } } diff --git a/contracts/pricefeed/.cargo/config b/contracts/pricefeed/.cargo/config deleted file mode 100644 index b613a59..0000000 --- a/contracts/pricefeed/.cargo/config +++ /dev/null @@ -1,4 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown" -wasm-debug = "build --target wasm32-unknown-unknown" -schema = "run --example schema" diff --git a/contracts/pricefeed/.cargo/config.toml b/contracts/pricefeed/.cargo/config.toml new file mode 100644 index 0000000..051a969 --- /dev/null +++ b/contracts/pricefeed/.cargo/config.toml @@ -0,0 +1,9 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +schema = "run --bin schema" + +# OLDER: +# wasm = "build --release --target wasm32-unknown-unknown" +# wasm-debug = "build --target wasm32-unknown-unknown" +# schema = "run --example schema" \ No newline at end of file diff --git a/contracts/pricefeed/Cargo.toml b/contracts/pricefeed/Cargo.toml index 8ab05fe..ec82feb 100644 --- a/contracts/pricefeed/Cargo.toml +++ b/contracts/pricefeed/Cargo.toml @@ -8,7 +8,6 @@ edition = "2021" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] diff --git a/contracts/pricefeed/src/error.rs b/contracts/pricefeed/src/error.rs index 355de1e..16e6006 100644 --- a/contracts/pricefeed/src/error.rs +++ b/contracts/pricefeed/src/error.rs @@ -1,7 +1,4 @@ use cosmwasm_std::{Addr, StdError}; -#[cfg(feature = "backtraces")] -use std::backtrace::Backtrace; - use thiserror::Error; #[derive(Error, Debug, PartialEq)] diff --git a/nibiru-std/Cargo.toml b/nibiru-std/Cargo.toml index 21a4fe2..39e8d83 100644 --- a/nibiru-std/Cargo.toml +++ b/nibiru-std/Cargo.toml @@ -1,18 +1,16 @@ [package] name = "nibiru-std" -version = "0.0.5" +version = { workspace = true } edition = "2021" description = "Nibiru Chain standard library for CosmWasm smart contracts" authors = ["Unique Divine "] documentation = "https://docs.rs/nibiru-std" -homepage = "https://github.com/NibiruChain/cw-nibiru" -repository = "https://github.com/NibiruChain/cw-nibiru" +homepage = { workspace = true } +repository = { workspace = true } license-file = "LICENSE" -# license = "MIT" # only one of license, license-file is needed. [features] -backtraces = ["cosmwasm-std/backtraces"] default = [] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/packages/core-controller/Cargo.toml b/packages/core-controller/Cargo.toml index 0d851b9..c214419 100644 --- a/packages/core-controller/Cargo.toml +++ b/packages/core-controller/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/NibiruChain/cw-nibiru" crate-type = ["cdylib", "rlib"] [features] -backtraces = ["cosmwasm-std/backtraces"] # use library feature to disable all instantiate/execute/query exports library = [] diff --git a/packages/core-controller/src/contract.rs b/packages/core-controller/src/contract.rs index 03eb61a..784d805 100644 --- a/packages/core-controller/src/contract.rs +++ b/packages/core-controller/src/contract.rs @@ -134,9 +134,8 @@ pub fn execute( ExecuteMsg::AddMember { address } => { check_admin(check)?; - let api = deps.api; - let addr = api.addr_validate(address.as_str()).unwrap(); - whitelist.members.insert(addr.into_string()); + let addr = address.as_str(); + whitelist.members.insert(addr.to_string()); WHITELIST.save(deps.storage, &whitelist)?; let res = Response::new().add_attributes(vec![ @@ -160,9 +159,8 @@ pub fn execute( ExecuteMsg::ChangeAdmin { address } => { check_admin(check)?; - let api = deps.api; - let new_admin = api.addr_validate(address.as_str()).unwrap(); - whitelist.admin = new_admin.clone().into_string(); + let new_admin = address.as_str(); + whitelist.admin = new_admin.to_string(); whitelist.members.insert(new_admin.to_string()); WHITELIST.save(deps.storage, &whitelist)?; diff --git a/packages/cw-address-like/Cargo.toml b/packages/cw-address-like/Cargo.toml new file mode 100644 index 0000000..51e2abf --- /dev/null +++ b/packages/cw-address-like/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "cw-address-like" +version = "2.0.0" + description = "A trait that marks unchecked or checked CosmWasm address strings" +authors = ["larry "] +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } + +[lib] +doctest = false # disable doc tests + +[dependencies] +cosmwasm-std = { workspace = true } \ No newline at end of file diff --git a/packages/cw-address-like/README.md b/packages/cw-address-like/README.md new file mode 100644 index 0000000..c6acd00 --- /dev/null +++ b/packages/cw-address-like/README.md @@ -0,0 +1,69 @@ +# CW Address Like + +This crate provides an trait `AddressLike`, which marks types that can be used as addresses in CosmWasm, namely `String` and `cosmwasm_std::Addr`. + +## Background + +In CosmWasm, there are two types that are typically used to represent addresses: + +- `String` - Represents an _unverified_ address, which are used in contract APIs, i.e. messages and query responses. +- `cosmwasm_std::Addr` - Represents an _verified_ address, used in contract internal logics. + +When a contract receives an address (as a `String`) from a message, it must not simply assume it is valid. Instead, it should use the `deps.api.addr_validate` method to verify it, which returns an `Addr`. The contract can then use the `Addr` in its business logics or save it in storage. + +Similarly, the contract should also converts `Addr`s back to `String`s when returning them in query responses. + +### The problem + +A problem arises when _we want to define a struct or enum that is to be used in both the API and internal logics._ For example, consider a contract that saves a "config" in its storage, which uses an `Addr` inside to represent the address of the contract's owner, while also providing a query method for the config, which uses a `String`. + +In such cases, developers may either define two types, one for each case: + +```rust +struct Config { + pub owner: Addr, +} + +struct ConfigResponse { + pub owner: String, +} +``` + +This approach works, but is somewhat cumbersome, especially when the config contains more fields. + +Another approach is to define a single type that contains a generic: + +```rust +struct Config { + pub owner: T, +} +``` + +Then use `Config` in the API and `Config` in internal logics. + +The main drawback of this approach is there's no restriction on what `T` can be. It is theoretically possible to plug any type in as `T` here, not limited to `String` and `Addr`. + +## How to use + +In this crate we provide an `AddressLike` trait, which is defined simply as: + +```rust +pub trait AddressLike {} + +impl AddressLike for Addr {} +impl AddressLike for String {} +``` + +The developer can then define their type as: + +```rust +struct Config { + pub owner: T, +} +``` + +This restricts that only `String` and `Addr` can be used as `T`. + +## License + +Contents of this crate at or prior to version `1.0.3` are published under [GNU Affero General Public License v3](https://github.com/steak-enjoyers/cw-plus-plus/blob/9c8fcf1c95b74dd415caf5602068c558e9d16ecc/LICENSE) or later; contents after the said version are published under [Apache-2.0](../../LICENSE) license. diff --git a/packages/cw-address-like/src/lib.rs b/packages/cw-address-like/src/lib.rs new file mode 100644 index 0000000..bfc4071 --- /dev/null +++ b/packages/cw-address-like/src/lib.rs @@ -0,0 +1,20 @@ +#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))] + +use std::{ + fmt::{Debug, Display}, + hash::Hash, +}; + +/// Marks either `String` or `cosmwasm_std::Addr`. +/// +/// String is used in unverified types, such as messages and query responses. +/// Addr is used in verified types, which are to be stored in blockchain state. +/// +/// This trait is intended to be used as a generic in type definitions. +pub trait AddressLike: + Clone + Debug + Display + PartialEq + Eq + PartialOrd + Ord + Hash +{ +} + +impl AddressLike for String {} +impl AddressLike for cosmwasm_std::Addr {} diff --git a/packages/easy-addr/Cargo.toml b/packages/easy-addr/Cargo.toml new file mode 100644 index 0000000..e7801ff --- /dev/null +++ b/packages/easy-addr/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "easy-addr" +version.workspace = true +edition = "2021" +publish = false + +[lib] +proc-macro = true + +[dependencies] +cosmwasm-std = { workspace = true } +proc-macro2 = "1" +quote = "1" +syn = { version = "1.0.6", features = ["full", "printing", "extra-traits"] } \ No newline at end of file diff --git a/packages/easy-addr/src/lib.rs b/packages/easy-addr/src/lib.rs new file mode 100644 index 0000000..385d24a --- /dev/null +++ b/packages/easy-addr/src/lib.rs @@ -0,0 +1,15 @@ +use cosmwasm_std::testing::mock_dependencies; + +use proc_macro::TokenStream; +use quote::quote; +use syn::parse_macro_input; + +#[proc_macro] +pub fn addr(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as syn::LitStr).value(); + let addr = mock_dependencies() + .api + .addr_make(input.as_str()) + .to_string(); + TokenStream::from(quote! {#addr}) +} diff --git a/packages/nibiru-ownable/Cargo.toml b/packages/nibiru-ownable/Cargo.toml new file mode 100644 index 0000000..74b58da --- /dev/null +++ b/packages/nibiru-ownable/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "nibiru-ownable" +version = { workspace = true } +description = "Utility for single-party ownership of CosmWasm smart contracts" +authors = ["larry ", "Unique Divine "] +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } +# license = { workspace = true } +# keywords = { workspace = true } + +[lib] +doctest = false # disable doc tests + +[dependencies] +cosmwasm-schema = { workspace = true } +cosmwasm-std = { workspace = true } +cw-address-like = { workspace = true } +ownable-derive = { workspace = true } +cw-storage-plus = { workspace = true } +cw-utils = { workspace = true } +thiserror = { workspace = true } \ No newline at end of file diff --git a/packages/nibiru-ownable/README.md b/packages/nibiru-ownable/README.md new file mode 100644 index 0000000..8a8b8c2 --- /dev/null +++ b/packages/nibiru-ownable/README.md @@ -0,0 +1,128 @@ +# CW Ownable + +Utility for controlling ownership of [CosmWasm](https://github.com/CosmWasm/cosmwasm) smart contracts. + +## How to use + +Initialize the owner during instantiation using the `initialize_owner` method provided by this crate: + +```rust +use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response}; +use nibiru_ownable::OwnershipError; + +#[entry_point] +pub fn instantiate( + deps: DepsMut, + env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result, OwnershipError> { + nibiru_ownable::initialize_owner(deps.storage, deps.api, msg.owner.as_deref())?; + Ok(Response::new()) +} +``` + +Use the `#[ownable_execute]` macro to extend your execute message: + +```rust +use cosmwasm_schema::cw_serde; +use nibiru_ownable::ownable_execute; + +#[ownable_execute] +#[cw_serde] +enum ExecuteMsg { + Foo {}, + Bar {}, +} +``` + +The macro inserts a new variant, `UpdateOwnership` to the enum: + +```rust +#[cw_serde] +enum ExecuteMsg { + UpdateOwnership(nibiru_ownable::Action), + Foo {}, + Bar {}, +} +``` + +Where `Action` can be one of three: + +- Propose to transfer the contract's ownership to another account +- Accept the proposed ownership transfer +- Renounce the ownership, permanently setting the contract's owner to vacant + +Handle the messages using the `update_ownership` function provided by this crate: + +```rust +use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response}; +use nibiru_ownable::{cw_serde, update_ownership, OwnershipError}; + +#[entry_point] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::UpdateOwnership(action) => { + update_ownership(deps, &env.block, &info.sender, action)?; + } + _ => unimplemneted!(), + } + Ok(Response::new()) +} +``` + +Use the `#[ownable_query]` macro to extend your query message: + +```rust +use cosmwasm_schema::{cw_serde, QueryResponses}; +use nibiru_ownable::ownable_query; + +#[ownable_query] +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + #[returns(FooResponse)] + Foo {}, + #[returns(BarResponse)] + Bar {}, +} +``` + +The macro inserts a new variant, `Ownership`: + +```rust +#[cw_serde] +#[derive(QueryResponses)] +enum QueryMsg { + #[returns(Ownership)] + Ownership {}, + #[returns(FooResponse)] + Foo {}, + #[returns(BarResponse)] + Bar {}, +} +``` + +Handle the message using the `get_ownership` function provided by this crate: + +```rust +use cosmwasm_std::{entry_point, Deps, Env, Binary}; +use nibiru_ownable::get_ownership; + +#[entry_point] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Ownership {} => to_binary(&get_ownership(deps.storage)?), + _ => unimplemented!(), + } +} +``` + +## License + +Contents of this crate at or prior to version `0.5.0` are published under [GNU Affero General Public License v3](https://github.com/steak-enjoyers/cw-plus-plus/blob/9c8fcf1c95b74dd415caf5602068c558e9d16ecc/LICENSE) or later; contents after the said version are published under [Apache-2.0](../../LICENSE) license. \ No newline at end of file diff --git a/packages/nibiru-ownable/derive/Cargo.toml b/packages/nibiru-ownable/derive/Cargo.toml new file mode 100644 index 0000000..466bb9c --- /dev/null +++ b/packages/nibiru-ownable/derive/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "ownable-derive" +version = "0.6.0" +description = "Macros for generating code used by the `nibiru-ownable` crate" +authors = ["larry ", "Unique Divine "] +# edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } +license = "MIT" # only one of license, license-file is needed. + +[lib] +doctest = true # disable doc tests +proc-macro = true + +[dependencies] +proc-macro2 = { workspace = true } +quote = { workspace = true } +syn = { workspace = true } + +[dev-dependencies] +cosmwasm-schema = { workspace = true } +cosmwasm-std = { workspace = true } +nibiru-ownable = { workspace = true } \ No newline at end of file diff --git a/packages/nibiru-ownable/derive/README.md b/packages/nibiru-ownable/derive/README.md new file mode 100644 index 0000000..c0b4295 --- /dev/null +++ b/packages/nibiru-ownable/derive/README.md @@ -0,0 +1,7 @@ +# CW Ownable Derive + +Macros for generating code used by the [`cw-ownable`](https://crates.io/crates/cw-ownable) crate. + +## License + +Contents of this crate at or prior to version `0.5.0` are published under [GNU Affero General Public License v3](https://github.com/steak-enjoyers/cw-plus-plus/blob/9c8fcf1c95b74dd415caf5602068c558e9d16ecc/LICENSE) or later; contents after the said version are published under [Apache-2.0](../../../LICENSE) license. diff --git a/packages/nibiru-ownable/derive/src/lib.rs b/packages/nibiru-ownable/derive/src/lib.rs new file mode 100644 index 0000000..5f2d161 --- /dev/null +++ b/packages/nibiru-ownable/derive/src/lib.rs @@ -0,0 +1,186 @@ +extern crate proc_macro; +extern crate quote; +extern crate syn; +use proc_macro::TokenStream; +use quote::quote; +use syn::{parse_macro_input, AttributeArgs, DataEnum, DeriveInput}; + +/// Merges the variants of two enums. +/// +/// Adapted from DAO DAO: +/// https://github.com/DA0-DA0/dao-contracts/blob/74bd3881fdd86829e5e8b132b9952dd64f2d0737/packages/dao-macros/src/lib.rs#L9 +fn merge_variants( + metadata: TokenStream, + left: TokenStream, + right: TokenStream, +) -> TokenStream { + use syn::Data::Enum; + + // parse metadata + let args = parse_macro_input!(metadata as AttributeArgs); + if let Some(first_arg) = args.first() { + return syn::Error::new_spanned(first_arg, "macro takes no arguments") + .to_compile_error() + .into(); + } + + // parse the left enum + let mut left: DeriveInput = parse_macro_input!(left); + let Enum(DataEnum { variants, .. }) = &mut left.data else { + return syn::Error::new( + left.ident.span(), + "only enums can accept variants", + ) + .to_compile_error() + .into(); + }; + + // parse the right enum + let right: DeriveInput = parse_macro_input!(right); + let Enum(DataEnum { + variants: to_add, .. + }) = right.data + else { + return syn::Error::new( + left.ident.span(), + "only enums can provide variants", + ) + .to_compile_error() + .into(); + }; + + // insert variants from the right to the left + variants.extend(to_add); + + quote! { #left }.into() +} + +/// Append ownership-related execute message variant(s) to an enum. +/// +/// For example, apply the `ownable_execute` macro to the following enum: +/// +/// ```rust +/// extern crate cosmwasm_schema; // not to be copied +/// extern crate nibiru_ownable; // not to be copied +/// use cosmwasm_schema::cw_serde; +/// use nibiru_ownable::ownable_execute; +/// +/// #[ownable_execute] +/// #[cw_serde] +/// enum ExecuteMsg { +/// Foo {}, +/// Bar {}, +/// } +/// ``` +/// +/// Is equivalent to: +/// +/// ```rust +/// extern crate cosmwasm_schema; // not to be copied +/// extern crate nibiru_ownable; // not to be copied +/// use cosmwasm_schema::cw_serde; +/// use nibiru_ownable::Action; +/// +/// #[cw_serde] +/// enum ExecuteMsg { +/// UpdateOwnership(Action), +/// Foo {}, +/// Bar {}, +/// } +/// +/// let _msg = ExecuteMsg::Foo{}; +/// ``` +/// +/// Note: `#[ownable_execute]` must be applied _before_ `#[cw_serde]`. +#[proc_macro_attribute] +pub fn ownable_execute( + metadata: TokenStream, + input: TokenStream, +) -> TokenStream { + merge_variants( + metadata, + input, + quote! { + enum Right { + /// Update the contract's ownership. The `action` to be provided + /// can be either to propose transferring ownership to an account, + /// accept a pending ownership transfer, or renounce the ownership + /// permanently. + UpdateOwnership(::nibiru_ownable::Action), + } + } + .into(), + ) +} + +/// Append ownership-related query message variant(s) to an enum. +/// +/// For example, apply the `ownable_query` macro to the following enum: +/// +/// ```rust +/// extern crate cosmwasm_schema; // not to be copied +/// extern crate nibiru_ownable; // not to be copied +/// use cosmwasm_schema::{cw_serde, QueryResponses}; +/// use nibiru_ownable::ownable_query; +/// +/// #[ownable_query] +/// #[cw_serde] +/// #[derive(QueryResponses)] +/// enum QueryMsg { +/// #[returns(FooResponse)] +/// Foo {}, +/// #[returns(BarResponse)] +/// Bar {}, +/// } +/// +/// #[cw_serde] +/// pub struct FooResponse {} +/// #[cw_serde] +/// pub struct BarResponse {} +/// +/// let _msg = QueryMsg::Foo{}; +/// ``` +/// +/// Is equivalent to: +/// +/// ```rust +/// extern crate cosmwasm_schema; // not to be copied +/// extern crate nibiru_ownable; // not to be copied +/// use cosmwasm_schema::{cw_serde, QueryResponses}; +/// use nibiru_ownable::Ownership; +/// +/// #[cw_serde] +/// #[derive(QueryResponses)] +/// enum QueryMsg { +/// #[returns(Ownership)] +/// Ownership {}, +/// #[returns(FooResponse)] +/// Foo {}, +/// #[returns(BarResponse)] +/// Bar {}, +/// } +/// +/// #[cw_serde] +/// pub struct FooResponse {} +/// #[cw_serde] +/// pub struct BarResponse {} +/// +/// let _msg = QueryMsg::Bar{}; +/// ``` +/// +/// Note: `#[ownable_query]` must be applied _before_ `#[cw_serde]`. +#[proc_macro_attribute] +pub fn ownable_query(metadata: TokenStream, input: TokenStream) -> TokenStream { + merge_variants( + metadata, + input, + quote! { + enum Right { + /// Query the contract's ownership information + #[returns(::nibiru_ownable::Ownership)] + Ownership {}, + } + } + .into(), + ) +} diff --git a/packages/nibiru-ownable/src/lib.rs b/packages/nibiru-ownable/src/lib.rs new file mode 100644 index 0000000..2d52625 --- /dev/null +++ b/packages/nibiru-ownable/src/lib.rs @@ -0,0 +1,588 @@ +#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))] + +use std::fmt::Display; + +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{ + Attribute, BlockInfo, DepsMut, StdError, StdResult, Storage, +}; +use cw_address_like::AddressLike; +use cw_storage_plus::Item; + +// re-export the proc macros and the Expiration class +pub use cw_utils::Expiration; +pub use ownable_derive::{ownable_execute, ownable_query}; + +/// The contract's ownership info +#[cw_serde] +pub struct Ownership { + /// The contract's current owner. + /// `None` if the ownership has been renounced. + pub owner: Option, + + /// The account who has been proposed to take over the ownership. + /// `None` if there isn't a pending ownership transfer. + pub pending_owner: Option, + + /// The deadline for the pending owner to accept the ownership. + /// `None` if there isn't a pending ownership transfer, or if a transfer + /// exists and it doesn't have a deadline. + pub pending_expiry: Option, +} + +/// Actions that can be taken to alter the contract's ownership +#[cw_serde] +pub enum Action { + /// Propose to transfer the contract's ownership to another account, + /// optionally with an expiry time. + /// + /// Can only be called by the contract's current owner. + /// + /// Any existing pending ownership transfer is overwritten. + TransferOwnership { + new_owner: String, + expiry: Option, + }, + + /// Accept the pending ownership transfer. + /// + /// Can only be called by the pending owner. + AcceptOwnership, + + /// Give up the contract's ownership and the possibility of appointing + /// a new owner. + /// + /// Can only be invoked by the contract's current owner. + /// + /// Any existing pending ownership transfer is canceled. + RenounceOwnership, +} + +/// Errors associated with the contract's ownership +#[derive(thiserror::Error, Debug, PartialEq)] +pub enum OwnershipError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Contract ownership has been renounced")] + NoOwner, + + #[error("Caller is not the contract's current owner")] + NotOwner, + + #[error("Caller is not the contract's pending owner")] + NotPendingOwner, + + #[error("There isn't a pending ownership transfer")] + TransferNotFound, + + #[error("A pending ownership transfer exists but it has expired")] + TransferExpired, +} + +/// Storage constant for the contract's ownership +const OWNERSHIP: Item> = Item::new("ownership"); + +/// Set the given address as the contract owner. +/// +/// This function is only intended to be used only during contract instantiation. +pub fn initialize_owner( + storage: &mut dyn Storage, + owner: Option<&str>, +) -> StdResult> { + let ownership = Ownership { + owner: owner.map(String::from), + pending_owner: None, + pending_expiry: None, + }; + OWNERSHIP.save(storage, &ownership)?; + Ok(ownership) +} + +/// Return Ok(true) if the contract has an owner and it's the given address. +/// Return Ok(false) if the contract doesn't have an owner, of if it does but +/// it's not the given address. +/// Return Err if fails to load ownership info from storage. +pub fn is_owner(store: &dyn Storage, addr: &str) -> StdResult { + let ownership = OWNERSHIP.load(store)?; + + if let Some(owner) = ownership.owner { + if addr == owner { + return Ok(true); + } + } + + Ok(false) +} + +/// Assert that an account is the contract's current owner. +pub fn assert_owner( + store: &dyn Storage, + sender: &str, +) -> Result<(), OwnershipError> { + let ownership = OWNERSHIP.load(store)?; + check_owner(&ownership, sender) +} + +/// Assert that an account is the contract's current owner. +fn check_owner( + ownership: &Ownership, + sender: &str, +) -> Result<(), OwnershipError> { + // the contract must have an owner + let Some(current_owner) = &ownership.owner else { + return Err(OwnershipError::NoOwner); + }; + + // the sender must be the current owner + if sender != current_owner { + return Err(OwnershipError::NotOwner); + } + + Ok(()) +} + +/// Update the contract's ownership info based on the given action. +/// Return the updated ownership. +pub fn update_ownership( + deps: DepsMut, + block: &BlockInfo, + sender: &str, + action: Action, +) -> Result, OwnershipError> { + match action { + Action::TransferOwnership { new_owner, expiry } => { + transfer_ownership(deps, sender, &new_owner, expiry) + } + Action::AcceptOwnership => accept_ownership(deps.storage, block, sender), + Action::RenounceOwnership => renounce_ownership(deps.storage, sender), + } +} + +/// Get the current ownership value. +pub fn get_ownership(storage: &dyn Storage) -> StdResult> { + OWNERSHIP.load(storage) +} + +impl Ownership { + /// Serializes the current ownership state as attributes which may + /// be used in a message response. Serialization is done according + /// to the std::fmt::Display implementation for `T` and + /// `cosmwasm_std::Expiration` (for `pending_expiry`). If an + /// ownership field has no value, `"none"` will be serialized. + /// + /// Attribute keys used: + /// - owner + /// - pending_owner + /// - pending_expiry + /// + /// Callers should take care not to use these keys elsewhere + /// in their response as CosmWasm will override reused attribute + /// keys. + /// + /// # Example + /// + /// ```rust + /// use cw_utils::Expiration; + /// + /// assert_eq!( + /// Ownership { + /// owner: Some("blue"), + /// pending_owner: None, + /// pending_expiry: Some(Expiration::Never {}) + /// } + /// .into_attributes(), + /// vec![ + /// Attribute::new("owner", "blue"), + /// Attribute::new("pending_owner", "none"), + /// Attribute::new("pending_expiry", "expiration: never") + /// ], + /// ) + /// ``` + pub fn into_attributes(self) -> Vec { + vec![ + Attribute::new("owner", none_or(self.owner.as_ref())), + Attribute::new( + "pending_owner", + none_or(self.pending_owner.as_ref()), + ), + Attribute::new( + "pending_expiry", + none_or(self.pending_expiry.as_ref()), + ), + ] + } +} + +fn none_or(or: Option<&T>) -> String { + or.map_or_else(|| "none".to_string(), |or| or.to_string()) +} + +/// Propose to transfer the contract's ownership to the given address, with an +/// optional deadline. +fn transfer_ownership( + deps: DepsMut, + sender: &str, + new_owner: &str, + expiry: Option, +) -> Result, OwnershipError> { + OWNERSHIP.update(deps.storage, |ownership| { + // the contract must have an owner + check_owner(&ownership, sender)?; + + // NOTE: We don't validate the expiry, i.e. asserting it is later than + // the current block time. + // + // This is because if the owner submits an invalid expiry, it won't have + // any negative effect - it's just that the pending owner won't be able + // to accept the ownership. + // + // By not doing the check, we save a little bit of gas. + // + // To fix the erorr, the owner can simply invoke `transfer_ownership` + // again with the correct expiry and overwrite the invalid one. + Ok(Ownership { + pending_owner: Some(new_owner.to_string()), + pending_expiry: expiry, + ..ownership + }) + }) +} + +/// Accept a pending ownership transfer. +fn accept_ownership( + store: &mut dyn Storage, + block: &BlockInfo, + sender: &str, +) -> Result, OwnershipError> { + OWNERSHIP.update(store, |ownership| { + // there must be an existing ownership transfer + let Some(pending_owner) = &ownership.pending_owner else { + return Err(OwnershipError::TransferNotFound); + }; + + // the sender must be the pending owner + if sender != pending_owner { + return Err(OwnershipError::NotPendingOwner); + }; + + // if the transfer has a deadline, it must not have been reached + if let Some(expiry) = &ownership.pending_expiry { + if expiry.is_expired(block) { + return Err(OwnershipError::TransferExpired); + } + } + + Ok(Ownership { + owner: ownership.pending_owner, + pending_owner: None, + pending_expiry: None, + }) + }) +} + +/// Set the contract's ownership as vacant permanently. +fn renounce_ownership( + store: &mut dyn Storage, + sender: &str, +) -> Result, OwnershipError> { + OWNERSHIP.update(store, |ownership| { + check_owner(&ownership, sender)?; + + Ok(Ownership { + owner: None, + pending_owner: None, + pending_expiry: None, + }) + }) +} + +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +#[cfg(test)] +mod tests { + use cosmwasm_std::{testing::mock_dependencies, Timestamp}; + + use super::*; + + fn mock_addresses() -> [String; 3] { + [ + String::from("larry"), + String::from("jake"), + String::from("pumpkin"), + ] + } + + fn mock_block_at_height(height: u64) -> BlockInfo { + BlockInfo { + height, + time: Timestamp::from_seconds(10000), + chain_id: "".into(), + } + } + + #[test] + fn initializing_ownership() { + let mut deps = mock_dependencies(); + let [larry, _, _] = mock_addresses(); + + let ownership = + initialize_owner(&mut deps.storage, Some(larry.as_str())).unwrap(); + + // ownership returned is same as ownership stored. + assert_eq!(ownership, OWNERSHIP.load(deps.as_ref().storage).unwrap()); + + assert_eq!( + ownership, + Ownership { + owner: Some(larry), + pending_owner: None, + pending_expiry: None, + }, + ); + } + + #[test] + fn initialize_ownership_no_owner() { + let mut deps = mock_dependencies(); + let ownership = initialize_owner(&mut deps.storage, None).unwrap(); + assert_eq!( + ownership, + Ownership { + owner: None, + pending_owner: None, + pending_expiry: None, + }, + ); + } + + #[test] + fn asserting_ownership() { + let mut deps = mock_dependencies(); + let [larry, jake, _] = mock_addresses(); + + // case 1. owner has not renounced + { + initialize_owner(&mut deps.storage, Some(larry.as_str())).unwrap(); + + let res = assert_owner(deps.as_ref().storage, &larry); + assert!(res.is_ok()); + + let res = assert_owner(deps.as_ref().storage, &jake); + assert_eq!(res.unwrap_err(), OwnershipError::NotOwner); + } + + // case 2. owner has renounced + { + renounce_ownership(deps.as_mut().storage, &larry).unwrap(); + + let res = assert_owner(deps.as_ref().storage, &larry); + assert_eq!(res.unwrap_err(), OwnershipError::NoOwner); + } + } + + #[test] + fn transferring_ownership() { + let mut deps = mock_dependencies(); + let [larry, jake, pumpkin] = mock_addresses(); + + initialize_owner(&mut deps.storage, Some(larry.as_str())).unwrap(); + + // non-owner cannot transfer ownership + { + let err = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &jake, + Action::TransferOwnership { + new_owner: pumpkin.to_string(), + expiry: None, + }, + ) + .unwrap_err(); + assert_eq!(err, OwnershipError::NotOwner); + } + + // owner properly transfers ownership + { + let ownership = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &larry, + Action::TransferOwnership { + new_owner: pumpkin.to_string(), + expiry: Some(Expiration::AtHeight(42069)), + }, + ) + .unwrap(); + assert_eq!( + ownership, + Ownership { + owner: Some(larry), + pending_owner: Some(pumpkin), + pending_expiry: Some(Expiration::AtHeight(42069)), + }, + ); + + let saved_ownership = OWNERSHIP.load(deps.as_ref().storage).unwrap(); + assert_eq!(saved_ownership, ownership); + } + } + + #[test] + fn accepting_ownership() { + let mut deps = mock_dependencies(); + let [larry, jake, pumpkin] = mock_addresses(); + + initialize_owner(&mut deps.storage, Some(larry.as_str())).unwrap(); + + // cannot accept ownership when there isn't a pending ownership transfer + { + let err = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &pumpkin, + Action::AcceptOwnership, + ) + .unwrap_err(); + assert_eq!(err, OwnershipError::TransferNotFound); + } + + transfer_ownership( + deps.as_mut(), + &larry, + pumpkin.as_str(), + Some(Expiration::AtHeight(42069)), + ) + .unwrap(); + + // non-pending owner cannot accept ownership + { + let err = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &jake, + Action::AcceptOwnership, + ) + .unwrap_err(); + assert_eq!(err, OwnershipError::NotPendingOwner); + } + + // cannot accept ownership if deadline has passed + { + let err = update_ownership( + deps.as_mut(), + &mock_block_at_height(69420), + &pumpkin, + Action::AcceptOwnership, + ) + .unwrap_err(); + assert_eq!(err, OwnershipError::TransferExpired); + } + + // pending owner properly accepts ownership before deadline + { + let ownership = update_ownership( + deps.as_mut(), + &mock_block_at_height(10000), + &pumpkin, + Action::AcceptOwnership, + ) + .unwrap(); + assert_eq!( + ownership, + Ownership { + owner: Some(pumpkin), + pending_owner: None, + pending_expiry: None, + }, + ); + + let saved_ownership = OWNERSHIP.load(deps.as_ref().storage).unwrap(); + assert_eq!(saved_ownership, ownership); + } + } + + #[test] + fn renouncing_ownership() { + let mut deps = mock_dependencies(); + let [larry, jake, pumpkin] = mock_addresses(); + + let ownership = Ownership { + owner: Some(larry.clone()), + pending_owner: Some(pumpkin), + pending_expiry: None, + }; + OWNERSHIP.save(deps.as_mut().storage, &ownership).unwrap(); + + // non-owner cannot renounce + { + let err = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &jake, + Action::RenounceOwnership, + ) + .unwrap_err(); + assert_eq!(err, OwnershipError::NotOwner); + } + + // owner properly renounces + { + let ownership = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &larry, + Action::RenounceOwnership, + ) + .unwrap(); + + // ownership returned is same as ownership stored. + assert_eq!( + ownership, + OWNERSHIP.load(deps.as_ref().storage).unwrap() + ); + + assert_eq!( + ownership, + Ownership { + owner: None, + pending_owner: None, + pending_expiry: None, + }, + ); + } + + // cannot renounce twice + { + let err = update_ownership( + deps.as_mut(), + &mock_block_at_height(12345), + &larry, + Action::RenounceOwnership, + ) + .unwrap_err(); + assert_eq!(err, OwnershipError::NoOwner); + } + } + + #[test] + fn into_attributes_works() { + use cw_utils::Expiration; + assert_eq!( + Ownership { + owner: Some("blue".to_string()), + pending_owner: None, + pending_expiry: Some(Expiration::Never {}) + } + .into_attributes(), + vec![ + Attribute::new("owner", "blue"), + Attribute::new("pending_owner", "none"), + Attribute::new("pending_expiry", "expiration: never") + ], + ); + } +} diff --git a/packages/nibiru-ownable/tests/macro.rs b/packages/nibiru-ownable/tests/macro.rs new file mode 100644 index 0000000..0a55e05 --- /dev/null +++ b/packages/nibiru-ownable/tests/macro.rs @@ -0,0 +1,55 @@ +use cosmwasm_schema::{cw_serde, QueryResponses}; +use nibiru_ownable::{ownable_execute, ownable_query, Action}; + +#[ownable_execute] +#[cw_serde] +enum ExecuteMsg { + Foo, + Bar(u64), + Fuzz { buzz: String }, +} + +#[ownable_query] +#[cw_serde] +#[derive(QueryResponses)] +enum QueryMsg { + #[returns(String)] + Foo, + + #[returns(String)] + Bar(u64), + + #[returns(String)] + Fuzz { buzz: String }, +} + +#[test] +fn derive_execute_variants() { + let msg = ExecuteMsg::Foo; + + // If this compiles we have won. + match msg { + ExecuteMsg::UpdateOwnership(Action::TransferOwnership { + new_owner: _, + expiry: _, + }) + | ExecuteMsg::UpdateOwnership(Action::AcceptOwnership) + | ExecuteMsg::UpdateOwnership(Action::RenounceOwnership) + | ExecuteMsg::Foo + | ExecuteMsg::Bar(_) + | ExecuteMsg::Fuzz { .. } => "yay", + }; +} + +#[test] +fn derive_query_variants() { + let msg = QueryMsg::Foo; + + // If this compiles we have won. + match msg { + QueryMsg::Ownership {} + | QueryMsg::Foo + | QueryMsg::Bar(_) + | QueryMsg::Fuzz { .. } => "yay", + }; +} From e6a3a65425255858c142978f1d902b9b421a3e35 Mon Sep 17 00:00:00 2001 From: Matthias <97468149+matthiasmatt@users.noreply.github.com> Date: Tue, 2 Jul 2024 14:39:32 +0200 Subject: [PATCH 22/29] feat: create route to withdraw rewards (#146) * feat: create route to withdraw rewards * fix: fix test name * fix: fix comment --- artifacts/broker_bank.wasm | Bin 229956 -> 228860 bytes artifacts/broker_staking.wasm | Bin 256746 -> 265557 bytes artifacts/checksums.txt | 5 +- contracts/broker-staking/src/contract.rs | 33 ++++++++- contracts/broker-staking/src/msg.rs | 2 + contracts/broker-staking/src/testing.rs | 81 ++++++++++++++++++++++- 6 files changed, 114 insertions(+), 7 deletions(-) diff --git a/artifacts/broker_bank.wasm b/artifacts/broker_bank.wasm index e26970c299c4de57540f2c5c2f6c119eb6fec545..405c9fe7512a5e8aeb8805b133ee1f63bacc453b 100644 GIT binary patch delta 32777 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 delta 33365 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 AcK`qY delta 99869 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 { withdraw_all(deps, env, info, to, contract_addr) } + ExecuteMsg::ClaimRewards {} => claim_rewards(deps, env, info), } } +pub fn claim_rewards( + deps: DepsMut, + env: Env, + info: MessageInfo, +) -> Result { + let is_halted = IS_HALTED.load(deps.storage)?; + assert_not_halted(is_halted)?; + + Permissions::assert_operator(deps.storage, info.sender.to_string())?; + + // query current delegations + let delegations = + deps.querier.query_all_delegations(&env.contract.address)?; + + let mut messages: Vec = vec![]; + for delegation in delegations.iter() { + messages.push(CosmosMsg::Distribution( + DistributionMsg::WithdrawDelegatorReward { + validator: delegation.validator.clone(), + }, + )); + } + + Ok(Response::new() + .add_messages(messages) + .add_attribute("action", "claim_rewards")) +} + pub fn unstake( deps: DepsMut, _env: Env, diff --git a/contracts/broker-staking/src/msg.rs b/contracts/broker-staking/src/msg.rs index abfbb97..12401b4 100644 --- a/contracts/broker-staking/src/msg.rs +++ b/contracts/broker-staking/src/msg.rs @@ -31,6 +31,8 @@ pub enum ExecuteMsg { to: Option, }, + ClaimRewards {}, + /// Unstake allows to unstake a given amount of tokens from a set of /// validators. The UnstakeMsgs defines the tokens amount and address /// of the validator. diff --git a/contracts/broker-staking/src/testing.rs b/contracts/broker-staking/src/testing.rs index 7978667..ad1c628 100644 --- a/contracts/broker-staking/src/testing.rs +++ b/contracts/broker-staking/src/testing.rs @@ -4,8 +4,8 @@ use crate::contract::{execute, query}; use crate::msg::{ExecuteMsg, StakeMsg, UnstakeMsg}; use cosmwasm_std::{self as cw_std}; use cw_std::{ - coin, from_json, testing, BankMsg, Coin, CosmosMsg, Response, StakingMsg, - Uint128, + coin, from_json, testing, BankMsg, Coin, CosmosMsg, DistributionMsg, + Response, StakingMsg, Uint128, }; use nibiru_std::errors::TestResult; use serde::Serialize; @@ -752,3 +752,80 @@ fn exec_unstake() -> TestResult { } Ok(()) } + +#[test] +fn test_withdraw_rewards() -> TestResult { + let to_addrs: [String; 2] = ["mm_kucoin", "mm_bybit"].map(|s| s.to_string()); + let opers: [String; 1] = ["valid_oper"].map(|s| s.to_string()); + let test_cases: Vec = vec![ + // Success + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "owner", + exec_msg: ExecuteMsg::ClaimRewards {}, + err: None, + contract_funds_start: None, + resp_msgs: vec![], + }, + // Success - oper can do that + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "valid_oper", + exec_msg: ExecuteMsg::ClaimRewards {}, + err: None, + contract_funds_start: None, + resp_msgs: vec![], + }, + // Fail - non oper can't + TestCaseExec { + to_addrs: to_addrs.to_vec(), + opers: opers.to_vec(), + sender: "invalid_oper", + exec_msg: ExecuteMsg::ClaimRewards {}, + err: Some("insufficient permissions"), + contract_funds_start: None, + resp_msgs: vec![], + }, + ]; + for tc in &test_cases { + let to_addrs = &tc.to_addrs; + let opers = &tc.opers; + // instantiate smart contract from the owner + let (mut deps, env, _info) = + setup_contract(to_addrs.clone(), opers.clone())?; + + if let Some(funds_start) = &tc.contract_funds_start { + // Set up a mock querier with contract balance + let contract_addr = env.contract.address.to_string(); + let balances: &[(&str, &[Coin])] = + &[(contract_addr.as_str(), funds_start.as_slice())]; + let querier = testing::MockQuerier::new(balances); + deps.querier = querier; + } + + // send the exec msg + let info = mock_info_for_sender(tc.sender); + let res = execute(deps.as_mut(), env, info, tc.exec_msg.clone()); + + if let Some(want_err) = tc.err { + let got_err = res.expect_err("errors should occur in this test"); + let is_contained = got_err.to_string().contains(want_err); + assert!(is_contained, "got error {}", got_err); + return Ok(()); + } + assert!(res.is_ok(), "got {res:?}"); + + let resp = res?; + let got_resp_msgs: Vec = resp + .messages + .iter() + .map(|sub_msg| CosmosMsgExt(&sub_msg.msg)) + .collect(); + let want_resp_msgs: Vec = + tc.resp_msgs.iter().map(CosmosMsgExt).collect(); + assert_eq!(want_resp_msgs, got_resp_msgs); + } + Ok(()) +} From 5cf640e8706c02f170f00f761837b9d173e67c6d Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Mon, 8 Jul 2024 11:43:29 -0500 Subject: [PATCH 23/29] chore: publish nibiru-ownable and nibiru-ownable-derive --- Cargo.lock | 27 +++++++++---------- Cargo.toml | 3 ++- packages/cw-address-like/Cargo.toml | 4 +-- .../Cargo.toml | 6 ++--- .../README.md | 0 .../src/lib.rs | 0 packages/nibiru-ownable/Cargo.toml | 6 ++--- packages/nibiru-ownable/README.md | 6 ++--- packages/nibiru-ownable/src/address_like.rs | 18 +++++++++++++ packages/nibiru-ownable/src/lib.rs | 8 +++--- 10 files changed, 48 insertions(+), 30 deletions(-) rename packages/{nibiru-ownable/derive => nibiru-ownable-derive}/Cargo.toml (85%) rename packages/{nibiru-ownable/derive => nibiru-ownable-derive}/README.md (100%) rename packages/{nibiru-ownable/derive => nibiru-ownable-derive}/src/lib.rs (100%) create mode 100644 packages/nibiru-ownable/src/address_like.rs diff --git a/Cargo.lock b/Cargo.lock index 3bbebff..fa8bb9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1902,13 +1902,24 @@ version = "0.1.0" dependencies = [ "cosmwasm-schema 2.0.2", "cosmwasm-std 2.0.2", - "cw-address-like", "cw-storage-plus 2.0.0", "cw-utils 2.0.0", - "ownable-derive", + "nibiru-ownable-derive", "thiserror", ] +[[package]] +name = "nibiru-ownable-derive" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema 2.0.2", + "cosmwasm-std 2.0.2", + "nibiru-ownable", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "nibiru-std" version = "0.1.0" @@ -2005,18 +2016,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "ownable-derive" -version = "0.6.0" -dependencies = [ - "cosmwasm-schema 2.0.2", - "cosmwasm-std 2.0.2", - "nibiru-ownable", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "parking_lot_core" version = "0.9.9" diff --git a/Cargo.toml b/Cargo.toml index 4688121..6f1f7d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,8 @@ prost-types = "0.12.3" bash-rs = { path = "packages/bash-rs" } # Macros for controlling ownership of CosmWasm smart contracts nibiru-ownable = { path = "packages/nibiru-ownable" } -ownable-derive = { path = "packages/nibiru-ownable/derive" } +nibiru-ownable-derive = { version = "0.1.0" } +# nibiru-ownable-derive = { path = "packages/nibiru-ownable-derive" } cw-address-like = { path = "packages/cw-address-like" } easy-addr = { path = "packages/easy-addr" } diff --git a/packages/cw-address-like/Cargo.toml b/packages/cw-address-like/Cargo.toml index 51e2abf..2392011 100644 --- a/packages/cw-address-like/Cargo.toml +++ b/packages/cw-address-like/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "cw-address-like" version = "2.0.0" - description = "A trait that marks unchecked or checked CosmWasm address strings" -authors = ["larry "] +description = "A trait that marks unchecked or checked CosmWasm address strings" +authors = ["larry ", "Unique Divine "] edition = { workspace = true } homepage = { workspace = true } repository = { workspace = true } diff --git a/packages/nibiru-ownable/derive/Cargo.toml b/packages/nibiru-ownable-derive/Cargo.toml similarity index 85% rename from packages/nibiru-ownable/derive/Cargo.toml rename to packages/nibiru-ownable-derive/Cargo.toml index 466bb9c..0866b77 100644 --- a/packages/nibiru-ownable/derive/Cargo.toml +++ b/packages/nibiru-ownable-derive/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "ownable-derive" -version = "0.6.0" +name = "nibiru-ownable-derive" +version = { workspace = true } description = "Macros for generating code used by the `nibiru-ownable` crate" authors = ["larry ", "Unique Divine "] -# edition = { workspace = true } +edition = { workspace = true } homepage = { workspace = true } repository = { workspace = true } license = "MIT" # only one of license, license-file is needed. diff --git a/packages/nibiru-ownable/derive/README.md b/packages/nibiru-ownable-derive/README.md similarity index 100% rename from packages/nibiru-ownable/derive/README.md rename to packages/nibiru-ownable-derive/README.md diff --git a/packages/nibiru-ownable/derive/src/lib.rs b/packages/nibiru-ownable-derive/src/lib.rs similarity index 100% rename from packages/nibiru-ownable/derive/src/lib.rs rename to packages/nibiru-ownable-derive/src/lib.rs diff --git a/packages/nibiru-ownable/Cargo.toml b/packages/nibiru-ownable/Cargo.toml index 74b58da..f9b66e4 100644 --- a/packages/nibiru-ownable/Cargo.toml +++ b/packages/nibiru-ownable/Cargo.toml @@ -6,8 +6,7 @@ authors = ["larry ", "Unique Divine Date: Thu, 15 Aug 2024 23:55:38 +0200 Subject: [PATCH 24/29] fix: update readme --- contracts/broker-staking/README.md | 198 +++++++++++++++-------------- 1 file changed, 106 insertions(+), 92 deletions(-) diff --git a/contracts/broker-staking/README.md b/contracts/broker-staking/README.md index 92323de..f8935a1 100644 --- a/contracts/broker-staking/README.md +++ b/contracts/broker-staking/README.md @@ -1,82 +1,76 @@ ## contracts/broker-staking -This smart contract handles account abstraction to enable certain staking transaction messages -to be called by a subset of "operators", while the funds can only be withdrawn by the contract owner. +This smart contract handles account abstraction to enable certain staking transaction messages to be called by a subset of "operators", while the funds can only be withdrawn by the contract owner. -This is useful if you want a mutlisig to manage a large allocation of funds while -permitting certain bots to safely make calls to stake or unstake, as is the case -for Nibiru's Foundation Delegation Program. +This is useful if you want a multisig to manage a large allocation of funds while permitting certain bots to safely make calls to stake or unstake, as is the case for Nibiru's Foundation Delegation Program. Table of Contents: + +- [contracts/broker-staking](#contractsbroker-staking) - [Overview](#overview) -- [Master Operations](#master-operations) - - [Instantiate](#instantiate) - - [Execute](#execute) - - [Admin functions](#admin-functions) - - [Manager functions](#manager-functions) - - [Query](#query) -- [Deployed Contract Info](#deployed-contract-info) -- [Testing Against a Live Chain](#testing-against-a-live-chain) + - [Master Operations](#master-operations) + - [Instantiate](#instantiate) + - [Execute](#execute) + - [Admin Functions](#admin-functions) + - [Manager Functions](#manager-functions) + - [Query](#query) + - [Deployed Contract Info](#deployed-contract-info) + - [Testing Against a Live Chain](#testing-against-a-live-chain) ## Overview -The contract has 2 modes, defined by the autocompounder_on flag. When it is -true, managers can call the contract to stake the balance of the contract. - -Admin can: - -- unstake funds from validators -- toggle on/off the autocompounder -- withdraw funds to the multisig - -Managers (and admin) can: - -- stake funds to validators in the proportion given - -This way, only the multisig can maange the funds, and the seed keys of the -managers can be public with no risk to the funds of the treasury. +The contract has 2 modes, defined by the `autocompounder_on` flag. When it is true, managers can call the contract to stake the balance of the contract. ### Master Operations #### Instantiate -We need to specify admin and managers +We need to specify the admin and managers. -```javascript +```json { - "admin": "cosmos1...", - "managers": ["cosmos1...", "cosmos1..."] + "owner": "cosmos1...", + "to_addrs": ["cosmos1...", "cosmos1..."], + "opers": ["cosmos1...", "cosmos1..."] } ``` #### Execute -##### Admin functions +##### Admin Functions -- **SetAutoCompounderMode** sets the auto compounder mode +- **ToggleHalt** allows the admin to halt or resume operator actions, effectively disabling or enabling non-owner permissions. -```javascript -{ - "set_auto_compounder_mode": { - "mode": "true" // true or false + ```json + { + "toggle_halt": {} } -} -``` + ``` -- **Withdraw** allows to withdraw the funds from the contract +- **Withdraw** allows the admin to withdraw specific denominations from the contract. - ```javascript + ```json { "withdraw": { - "amount": "1000000" - "recipient": "cosmos1..." + "denoms": ["uatom", "uusd"], + "to": "cosmos1..." + } + } + ``` + +- **WithdrawAll** allows the admin to withdraw all funds from the contract. + + ```json + { + "withdraw_all": { + "to": "cosmos1..." } } ``` -- **unstakes** allows to unstake the funds from the contract +- **Unstake** allows the admin to unstake the funds from the contract. - ```javascript + ```json { "unstake": { "unstake_msgs": [ @@ -93,65 +87,85 @@ We need to specify admin and managers } ``` -- **update managers** allows to update the managers of the contract +- **UpdateManagers** allows the admin to update the managers of the contract. -```javascript -{ - "update_managers": { - "managers": ["cosmos1...", "cosmos1..."] + ```json + { + "edit_opers": { + "action": { + "AddOper": { + "address": "cosmos1..." + } + } + } } -} -``` + ``` -##### Manager functions +- **ClaimRewards** allows the admin or managers to claim all staking rewards from the contract’s delegations. -- **stake** allows to stake the funds from the contract. The shares are normalized + ```json + { + "claim_rewards": {} + } + ``` -```javascript -{ - "stake": { - "stake_msgs": [ - { - "validator": "cosmosvaloper1...", - "share": "1000000" - }, - { - "validator": "cosmosvaloper1...", - "share": "1000000" - } - ] - }, - "amount": "1000000" -} -``` +##### Manager Functions + +- **Stake** allows managers to stake funds from the contract. The shares are normalized. + + ```json + { + "stake": { + "stake_msgs": [ + { + "validator": "cosmosvaloper1...", + "share": "1000000" + }, + { + "validator": "cosmosvaloper1...", + "share": "1000000" + } + ], + "amount": "1000000" + } + } + ``` + +- **ClaimRewards** allows managers to claim all staking rewards from the contract’s delegations. + + ```json + { + "claim_rewards": {} + } + ``` #### Query -- **auto compounder mode** returns wether the auto compounder mode is enabled or not +- **Perms** returns the current permissions status of the contract, including the owner and the operators. -```javascript -{ - "auto_compounder_mode": {} -} -``` + ```json + { + "perms": {} + } + ``` -- **AdminAndManagers** returns the admin and managers of the contract +- **Ownership** returns the ownership status of the contract. -```javascript -{ - "admin_and_managers": {} -} -``` + ```json + { + "ownership": {} + } + ``` ### Deployed Contract Info -TODO for mainnet/testnet +Testnet: + +| Field | Value | +| ------------- | --------------------------------------------------------------- | +| code_id | 124 | +| contract_addr | nibi16znhpjugl5cc3dqhu75tytmzqj58herzdg3r4xnkeqpqrwdqeqcq2eshjl | -| Field | Value | -| ------------- | ----- | -| code_id | ... | -| contract_addr | ... | -| rpc_url | ... | -| chain_id | ... | +### Testing Against a Live Chain -### Testing Against a Live Chain \ No newline at end of file +--- From 027d1651e46deac0af123cc25158507427db16a5 Mon Sep 17 00:00:00 2001 From: Matthias <97468149+matthiasmatt@users.noreply.github.com> Date: Tue, 3 Sep 2024 16:58:58 +0200 Subject: [PATCH 25/29] fix: update version nibiru-std (#149) --- nibiru-std/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nibiru-std/Cargo.toml b/nibiru-std/Cargo.toml index 39e8d83..ffcd947 100644 --- a/nibiru-std/Cargo.toml +++ b/nibiru-std/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nibiru-std" -version = { workspace = true } +version = "0.2.0" edition = "2021" description = "Nibiru Chain standard library for CosmWasm smart contracts" authors = ["Unique Divine "] @@ -27,4 +27,4 @@ thiserror = { workspace = true } # cargo run --bin script-name # [[bin]] # name = "rust script name" -# path = "bin/script_name.rs" \ No newline at end of file +# path = "bin/script_name.rs" From 89a9050b7f6b84846e4aeb56391e769fc0e92cc0 Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Tue, 24 Sep 2024 08:32:46 -0500 Subject: [PATCH 26/29] fix(warning): deprecated clippy warning for CosmosMsg::Stargate --- nibiru-std/src/proto/traits.rs | 6 ++++++ packages/nibiru-ownable/src/address_like.rs | 2 +- packages/nibiru-ownable/src/lib.rs | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nibiru-std/src/proto/traits.rs b/nibiru-std/src/proto/traits.rs index 4178807..bef13da 100644 --- a/nibiru-std/src/proto/traits.rs +++ b/nibiru-std/src/proto/traits.rs @@ -1,6 +1,12 @@ //! nibiru-std::proto - traits.rs : Implements extensions for prost::Message //! types for easy conversion to types needed for CosmWasm smart contracts. +// Allow deprecated variant `cosmwasm_std::CosmosMsg::Stargate` for compatibility +// with CosmWasm v1. Once we upgrade everything to v2 on Nibiru, we can remove +// this deprecate statement. +#![allow(deprecated)] +// TODO: remove allow(deprevated) ↑ + use cosmwasm_std::{Binary, CosmosMsg, QueryRequest}; use crate::errors::{NibiruError, NibiruResult}; diff --git a/packages/nibiru-ownable/src/address_like.rs b/packages/nibiru-ownable/src/address_like.rs index 6a3aca2..9b163fb 100644 --- a/packages/nibiru-ownable/src/address_like.rs +++ b/packages/nibiru-ownable/src/address_like.rs @@ -15,4 +15,4 @@ pub trait AddressLike: } impl AddressLike for String {} -impl AddressLike for cosmwasm_std::Addr {} \ No newline at end of file +impl AddressLike for cosmwasm_std::Addr {} diff --git a/packages/nibiru-ownable/src/lib.rs b/packages/nibiru-ownable/src/lib.rs index fbf5b76..9056b9f 100644 --- a/packages/nibiru-ownable/src/lib.rs +++ b/packages/nibiru-ownable/src/lib.rs @@ -587,4 +587,4 @@ mod tests { ], ); } -} \ No newline at end of file +} From 6181ee58ae4df76649e3e6376477ec33eb4b927d Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Tue, 24 Sep 2024 11:05:29 -0500 Subject: [PATCH 27/29] chore: linter, fix 'just tidy' --- Cargo.lock | 23 ++++++++++++++++++----- Cargo.toml | 2 +- contracts/broker-staking/src/contract.rs | 2 +- contracts/broker-staking/src/testing.rs | 4 ++-- contracts/core-cw3-flex-msig/Cargo.toml | 4 ++-- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa8bb9d..fe79fcb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -961,16 +961,18 @@ dependencies = [ [[package]] name = "cw3-fixed-multisig" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8233125653e61e898eaade6c6fdb3bd9c48aceb2ad97e84eada2c9bf5bff46" +version = "2.0.1" dependencies = [ "cosmwasm-schema 2.0.2", "cosmwasm-std 2.0.2", + "cw-multi-test", "cw-storage-plus 2.0.0", "cw-utils 2.0.0", "cw2 2.0.0", + "cw20 2.0.0", + "cw20-base", "cw3", + "easy-addr", "schemars", "serde", "thiserror", @@ -978,7 +980,7 @@ dependencies = [ [[package]] name = "cw3-flex-multisig" -version = "1.0.1" +version = "2.0.1" dependencies = [ "cosmwasm-schema 2.0.2", "cosmwasm-std 2.0.2", @@ -1904,7 +1906,7 @@ dependencies = [ "cosmwasm-std 2.0.2", "cw-storage-plus 2.0.0", "cw-utils 2.0.0", - "nibiru-ownable-derive", + "nibiru-ownable-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror", ] @@ -1920,6 +1922,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "nibiru-ownable-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b268c084c537b4baf71eab9bcb7c651723e1475b77cbe7b1a8502612784c4057" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "nibiru-std" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 6f1f7d8..58e17c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ cw-utils = { version = "2.0.0" } # deps: cw-plus cw2 = { version = "2.0.0" } cw3 = { version = "2.0.0" } -cw3-fixed-multisig = { version = "2.0.0", features = ["library"] } +cw3-fixed-multisig = { path = "contracts/core-cw3-fixed-msig", version = "2.0.0", features = ["library"] } cw4 = { version = "2.0.0" } cw20 = { version = "2.0.0" } cw4-group = { version = "2.0" } diff --git a/contracts/broker-staking/src/contract.rs b/contracts/broker-staking/src/contract.rs index d1c54b8..fbd1f0b 100644 --- a/contracts/broker-staking/src/contract.rs +++ b/contracts/broker-staking/src/contract.rs @@ -75,7 +75,7 @@ pub fn claim_rewards( // query current delegations let delegations = - deps.querier.query_all_delegations(&env.contract.address)?; + deps.querier.query_all_delegations(env.contract.address)?; let mut messages: Vec = vec![]; for delegation in delegations.iter() { diff --git a/contracts/broker-staking/src/testing.rs b/contracts/broker-staking/src/testing.rs index ad1c628..cd3c8a4 100644 --- a/contracts/broker-staking/src/testing.rs +++ b/contracts/broker-staking/src/testing.rs @@ -4,8 +4,8 @@ use crate::contract::{execute, query}; use crate::msg::{ExecuteMsg, StakeMsg, UnstakeMsg}; use cosmwasm_std::{self as cw_std}; use cw_std::{ - coin, from_json, testing, BankMsg, Coin, CosmosMsg, DistributionMsg, - Response, StakingMsg, Uint128, + coin, from_json, testing, BankMsg, Coin, CosmosMsg, Response, StakingMsg, + Uint128, }; use nibiru_std::errors::TestResult; use serde::Serialize; diff --git a/contracts/core-cw3-flex-msig/Cargo.toml b/contracts/core-cw3-flex-msig/Cargo.toml index 3119b77..47a0ef0 100644 --- a/contracts/core-cw3-flex-msig/Cargo.toml +++ b/contracts/core-cw3-flex-msig/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "cw3-flex-multisig" -version = "1.0.1" +version = "2.0.1" authors = ["Ethan Frey "] edition = "2021" description = "Implementing cw3 with multiple voting patterns and dynamic groups" license = "Apache-2.0" -repository = "https://github.com/CosmWasm/cw-plus" +repository = "https://github.com/NibiruChain/cw-nibiru" homepage = "https://cosmwasm.com" documentation = "https://docs.cosmwasm.com" From 8aa2f8625e1b55427276166bfa159ae82cbb361f Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Tue, 24 Sep 2024 11:09:40 -0500 Subject: [PATCH 28/29] chore(github): Add project automation for https://tinyurl.com/25uty9w5 --- .github/issue-labeler-config.yml | 3 +++ .github/workflows/gh-issues.yml | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 .github/issue-labeler-config.yml create mode 100644 .github/workflows/gh-issues.yml diff --git a/.github/issue-labeler-config.yml b/.github/issue-labeler-config.yml new file mode 100644 index 0000000..1d7046b --- /dev/null +++ b/.github/issue-labeler-config.yml @@ -0,0 +1,3 @@ +# Adds the "S-triage" label ot any issue that gets opened. +S-triage: + - '/.*/' diff --git a/.github/workflows/gh-issues.yml b/.github/workflows/gh-issues.yml new file mode 100644 index 0000000..6905464 --- /dev/null +++ b/.github/workflows/gh-issues.yml @@ -0,0 +1,38 @@ +name: "Auto-add GH issues to project" +# Add all issues opened to the issue board for triage and assignment +# GitHub Org and Project Automation +# https://www.notion.so/nibiru/GitHub-Org-and-Project-Automation-c771d671109849ee9fda7c8b741cd66a?pvs=4 + +on: + issues: + types: ["opened", "labeled"] + +permissions: + issues: write + contents: read + +jobs: + # https://github.com/actions/add-to-project + add-to-project: + name: "Add GH ticket to project" + runs-on: ubuntu-latest + steps: + - uses: actions/add-to-project@v1.0.2 + with: + project-url: https://github.com/orgs/NibiruChain/projects/8 + github-token: ${{ secrets.NIBIRU_PM }} + + label-triage: + name: "Add GH ticket to project" + runs-on: ubuntu-latest + # The action comes from the "Activty types" for the "issues" webhook event + # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#issues + if: "github.event.action == 'opened'" + steps: + - uses: github/issue-labeler@v3.4 + if: join(github.event.issue.labels) == '' + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + configuration-path: ".github/issue-labeler-config.yml" + enable-versioned-regex: 0 + not-before: "2024-05-01T00:00:00Z" From 2ddfecfcd8d6e0ee8b35dd35002c4200b258e991 Mon Sep 17 00:00:00 2001 From: Unique Divine Date: Tue, 24 Sep 2024 11:10:28 -0500 Subject: [PATCH 29/29] chore(contracts): add local copy of cw3-fixed-multisig that compiles on v2 --- contracts/core-cw3-fixed-msig/.cargo/config | 6 + contracts/core-cw3-fixed-msig/Cargo.toml | 34 + contracts/core-cw3-fixed-msig/README.md | 65 + .../core-cw3-fixed-msig/src/bin/schema.rs | 11 + contracts/core-cw3-fixed-msig/src/contract.rs | 1198 +++++++++++++++++ contracts/core-cw3-fixed-msig/src/error.rs | 46 + .../src/integration_tests.rs | 153 +++ contracts/core-cw3-fixed-msig/src/lib.rs | 25 + contracts/core-cw3-fixed-msig/src/msg.rs | 74 + contracts/core-cw3-fixed-msig/src/state.rs | 30 + 10 files changed, 1642 insertions(+) create mode 100644 contracts/core-cw3-fixed-msig/.cargo/config create mode 100644 contracts/core-cw3-fixed-msig/Cargo.toml create mode 100644 contracts/core-cw3-fixed-msig/README.md create mode 100644 contracts/core-cw3-fixed-msig/src/bin/schema.rs create mode 100644 contracts/core-cw3-fixed-msig/src/contract.rs create mode 100644 contracts/core-cw3-fixed-msig/src/error.rs create mode 100644 contracts/core-cw3-fixed-msig/src/integration_tests.rs create mode 100644 contracts/core-cw3-fixed-msig/src/lib.rs create mode 100644 contracts/core-cw3-fixed-msig/src/msg.rs create mode 100644 contracts/core-cw3-fixed-msig/src/state.rs diff --git a/contracts/core-cw3-fixed-msig/.cargo/config b/contracts/core-cw3-fixed-msig/.cargo/config new file mode 100644 index 0000000..f517478 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/.cargo/config @@ -0,0 +1,6 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --lib --target wasm32-unknown-unknown" +unit-test = "test --lib" +integration-test = "test --test integration" +schema = "run --bin schema" diff --git a/contracts/core-cw3-fixed-msig/Cargo.toml b/contracts/core-cw3-fixed-msig/Cargo.toml new file mode 100644 index 0000000..a350d71 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "cw3-fixed-multisig" +version = "2.0.1" # Should match contracts/core-cw3-flex-msig +authors = ["Ethan Frey "] +edition = "2021" +description = "Implementing cw3 with an fixed group multisig" +license = "Apache-2.0" +repository = "https://github.com/NibiruChain/cw-nibiru" +homepage = "https://cosmwasm.com" +documentation = "https://docs.cosmwasm.com" + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[dependencies] +cosmwasm-schema = { workspace = true } +cw-utils = { workspace = true } +cw2 = { workspace = true } +cw3 = { workspace = true } +cw-storage-plus = { workspace = true } +cosmwasm-std = { workspace = true } +schemars = { workspace = true } +serde = { workspace = true } +thiserror = { workspace = true } + +[dev-dependencies] +cw20 = { workspace = true } +cw20-base = { workspace = true } +cw-multi-test = { workspace = true } +easy-addr = { workspace = true } \ No newline at end of file diff --git a/contracts/core-cw3-fixed-msig/README.md b/contracts/core-cw3-fixed-msig/README.md new file mode 100644 index 0000000..6fabd6a --- /dev/null +++ b/contracts/core-cw3-fixed-msig/README.md @@ -0,0 +1,65 @@ +# CW3 Fixed Multisig + +This is a simple implementation of the [cw3 spec](../../packages/cw3/README.md). +It is a multisig with a fixed set of addresses created upon instatiation. +Each address may have the same weight (K of N), or some may have extra voting +power. This works much like the native Cosmos SDK multisig, except that rather +than aggregating the signatures off chain and submitting the final result, +we aggregate the approvals on-chain. + +This is usable as is, and probably the most secure implementation of cw3 +(as it is the simplest), but we will be adding more complex cases, such +as updating the multisig set, different voting rules for the same group +with different permissions, and even allow token-weighted voting. All through +the same client interface. + +## Instantiation + +To create the multisig, you must pass in a set of `HumanAddr` with a weight +for each one, as well as a required weight to pass a proposal. To create +a 2 of 3 multisig, pass 3 voters with weight 1 and a `required_weight` of 2. + +Note that 0 *is an allowed weight*. This doesn't give any voting rights, but +it does allow that key to submit proposals that can later be approved by the +voters. Any address not in the voter set cannot submit a proposal. + +## Execution Process + +First, a registered voter must submit a proposal. This also includes the +first "Yes" vote on the proposal by the proposer. The proposer can set +an expiration time for the voting process, or it defaults to the limit +provided when creating the contract (so proposals can be closed after several +days). + +Before the proposal has expired, any voter with non-zero weight can add their +vote. Only "Yes" votes are tallied. If enough "Yes" votes were submitted before +the proposal expiration date, the status is set to "Passed". + +Once a proposal is "Passed", anyone may submit an "Execute" message. This will +trigger the proposal to send all stored messages from the proposal and update +it's state to "Executed", so it cannot run again. (Note if the execution fails +for any reason - out of gas, insufficient funds, etc - the state update will +be reverted, and it will remain "Passed", so you can try again). + +Once a proposal has expired without passing, anyone can submit a "Close" +message to mark it closed. This has no effect beyond cleaning up the UI/database. + +## Running this contract + +You will need Rust 1.44.1+ with `wasm32-unknown-unknown` target installed. + +You can run unit tests on this via: + +`cargo test` + +Once you are happy with the content, you can compile it to wasm via: + +``` +RUSTFLAGS='-C link-arg=-s' cargo wasm +cp ../../target/wasm32-unknown-unknown/release/cw3_fixed_multisig.wasm . +ls -l cw3_fixed_multisig.wasm +sha256sum cw3_fixed_multisig.wasm +``` + +Or for a production-ready (optimized) build, run a build command in the +repository root: https://github.com/CosmWasm/cw-plus#compiling. diff --git a/contracts/core-cw3-fixed-msig/src/bin/schema.rs b/contracts/core-cw3-fixed-msig/src/bin/schema.rs new file mode 100644 index 0000000..8081025 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/bin/schema.rs @@ -0,0 +1,11 @@ +use cosmwasm_schema::write_api; + +use cw3_fixed_multisig::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + execute: ExecuteMsg, + query: QueryMsg, + } +} diff --git a/contracts/core-cw3-fixed-msig/src/contract.rs b/contracts/core-cw3-fixed-msig/src/contract.rs new file mode 100644 index 0000000..025d478 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/contract.rs @@ -0,0 +1,1198 @@ +use std::cmp::Ordering; + +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + to_json_binary, Binary, BlockInfo, CosmosMsg, Deps, DepsMut, Empty, Env, + MessageInfo, Order, Response, StdResult, +}; + +use cw2::set_contract_version; +use cw3::{ + Ballot, Proposal, ProposalListResponse, ProposalResponse, Status, Vote, + VoteInfo, VoteListResponse, VoteResponse, VoterDetail, VoterListResponse, + VoterResponse, Votes, +}; +use cw_storage_plus::Bound; +use cw_utils::{Expiration, ThresholdResponse}; + +use crate::error::ContractError; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use crate::state::{next_id, Config, BALLOTS, CONFIG, PROPOSALS, VOTERS}; + +// version info for migration info +const CONTRACT_NAME: &str = "crates.io:cw3-fixed-multisig"; +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + if msg.voters.is_empty() { + return Err(ContractError::NoVoters {}); + } + let total_weight = msg.voters.iter().map(|v| v.weight).sum(); + + msg.threshold.validate(total_weight)?; + + set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; + + let cfg = Config { + threshold: msg.threshold, + total_weight, + max_voting_period: msg.max_voting_period, + }; + CONFIG.save(deps.storage, &cfg)?; + + // add all voters + for voter in msg.voters.iter() { + let key = deps.api.addr_validate(&voter.addr)?; + VOTERS.save(deps.storage, &key, &voter.weight)?; + } + Ok(Response::default()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result, ContractError> { + match msg { + ExecuteMsg::Propose { + title, + description, + msgs, + latest, + } => execute_propose(deps, env, info, title, description, msgs, latest), + ExecuteMsg::Vote { proposal_id, vote } => { + execute_vote(deps, env, info, proposal_id, vote) + } + ExecuteMsg::Execute { proposal_id } => { + execute_execute(deps, env, info, proposal_id) + } + ExecuteMsg::Close { proposal_id } => { + execute_close(deps, env, info, proposal_id) + } + } +} + +pub fn execute_propose( + deps: DepsMut, + env: Env, + info: MessageInfo, + title: String, + description: String, + msgs: Vec, + // we ignore earliest + latest: Option, +) -> Result, ContractError> { + // only members of the multisig can create a proposal + let vote_power = VOTERS + .may_load(deps.storage, &info.sender)? + .ok_or(ContractError::Unauthorized {})?; + + let cfg = CONFIG.load(deps.storage)?; + + // max expires also used as default + let max_expires = cfg.max_voting_period.after(&env.block); + let mut expires = latest.unwrap_or(max_expires); + let comp = expires.partial_cmp(&max_expires); + if let Some(Ordering::Greater) = comp { + expires = max_expires; + } else if comp.is_none() { + return Err(ContractError::WrongExpiration {}); + } + + // create a proposal + let mut prop = Proposal { + title, + description, + start_height: env.block.height, + expires, + msgs, + status: Status::Open, + votes: Votes::yes(vote_power), + threshold: cfg.threshold, + total_weight: cfg.total_weight, + proposer: info.sender.clone(), + deposit: None, + }; + prop.update_status(&env.block); + let id = next_id(deps.storage)?; + PROPOSALS.save(deps.storage, id, &prop)?; + + // add the first yes vote from voter + let ballot = Ballot { + weight: vote_power, + vote: Vote::Yes, + }; + BALLOTS.save(deps.storage, (id, &info.sender), &ballot)?; + + Ok(Response::new() + .add_attribute("action", "propose") + .add_attribute("sender", info.sender) + .add_attribute("proposal_id", id.to_string()) + .add_attribute("status", format!("{:?}", prop.status))) +} + +pub fn execute_vote( + deps: DepsMut, + env: Env, + info: MessageInfo, + proposal_id: u64, + vote: Vote, +) -> Result, ContractError> { + // only members of the multisig with weight >= 1 can vote + let voter_power = VOTERS.may_load(deps.storage, &info.sender)?; + let vote_power = match voter_power { + Some(power) if power >= 1 => power, + _ => return Err(ContractError::Unauthorized {}), + }; + + // ensure proposal exists and can be voted on + let mut prop = PROPOSALS.load(deps.storage, proposal_id)?; + // Allow voting on Passed and Rejected proposals too, + if ![Status::Open, Status::Passed, Status::Rejected].contains(&prop.status) { + return Err(ContractError::NotOpen {}); + } + // if they are not expired + if prop.expires.is_expired(&env.block) { + return Err(ContractError::Expired {}); + } + + // cast vote if no vote previously cast + BALLOTS.update( + deps.storage, + (proposal_id, &info.sender), + |bal| match bal { + Some(_) => Err(ContractError::AlreadyVoted {}), + None => Ok(Ballot { + weight: vote_power, + vote, + }), + }, + )?; + + // update vote tally + prop.votes.add_vote(vote, vote_power); + prop.update_status(&env.block); + PROPOSALS.save(deps.storage, proposal_id, &prop)?; + + Ok(Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", info.sender) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", format!("{:?}", prop.status))) +} + +pub fn execute_execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + proposal_id: u64, +) -> Result { + // anyone can trigger this if the vote passed + + let mut prop = PROPOSALS.load(deps.storage, proposal_id)?; + // we allow execution even after the proposal "expiration" as long as all vote come in before + // that point. If it was approved on time, it can be executed any time. + prop.update_status(&env.block); + if prop.status != Status::Passed { + return Err(ContractError::WrongExecuteStatus {}); + } + + // set it to executed + prop.status = Status::Executed; + PROPOSALS.save(deps.storage, proposal_id, &prop)?; + + // dispatch all proposed messages + Ok(Response::new() + .add_messages(prop.msgs) + .add_attribute("action", "execute") + .add_attribute("sender", info.sender) + .add_attribute("proposal_id", proposal_id.to_string())) +} + +pub fn execute_close( + deps: DepsMut, + env: Env, + info: MessageInfo, + proposal_id: u64, +) -> Result, ContractError> { + // anyone can trigger this if the vote passed + + let mut prop = PROPOSALS.load(deps.storage, proposal_id)?; + if [Status::Executed, Status::Rejected, Status::Passed] + .contains(&prop.status) + { + return Err(ContractError::WrongCloseStatus {}); + } + // Avoid closing of Passed due to expiration proposals + if prop.current_status(&env.block) == Status::Passed { + return Err(ContractError::WrongCloseStatus {}); + } + if !prop.expires.is_expired(&env.block) { + return Err(ContractError::NotExpired {}); + } + + // set it to failed + prop.status = Status::Rejected; + PROPOSALS.save(deps.storage, proposal_id, &prop)?; + + Ok(Response::new() + .add_attribute("action", "close") + .add_attribute("sender", info.sender) + .add_attribute("proposal_id", proposal_id.to_string())) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::Threshold {} => to_json_binary(&query_threshold(deps)?), + QueryMsg::Proposal { proposal_id } => { + to_json_binary(&query_proposal(deps, env, proposal_id)?) + } + QueryMsg::Vote { proposal_id, voter } => { + to_json_binary(&query_vote(deps, proposal_id, voter)?) + } + QueryMsg::ListProposals { start_after, limit } => { + to_json_binary(&list_proposals(deps, env, start_after, limit)?) + } + QueryMsg::ReverseProposals { + start_before, + limit, + } => to_json_binary(&reverse_proposals(deps, env, start_before, limit)?), + QueryMsg::ListVotes { + proposal_id, + start_after, + limit, + } => to_json_binary(&list_votes(deps, proposal_id, start_after, limit)?), + QueryMsg::Voter { address } => { + to_json_binary(&query_voter(deps, address)?) + } + QueryMsg::ListVoters { start_after, limit } => { + to_json_binary(&list_voters(deps, start_after, limit)?) + } + } +} + +fn query_threshold(deps: Deps) -> StdResult { + let cfg = CONFIG.load(deps.storage)?; + Ok(cfg.threshold.to_response(cfg.total_weight)) +} + +fn query_proposal(deps: Deps, env: Env, id: u64) -> StdResult { + let prop = PROPOSALS.load(deps.storage, id)?; + let status = prop.current_status(&env.block); + let threshold = prop.threshold.to_response(prop.total_weight); + Ok(ProposalResponse { + id, + title: prop.title, + description: prop.description, + msgs: prop.msgs, + status, + expires: prop.expires, + deposit: prop.deposit, + proposer: prop.proposer, + threshold, + }) +} + +// settings for pagination +const MAX_LIMIT: u32 = 30; +const DEFAULT_LIMIT: u32 = 10; + +fn list_proposals( + deps: Deps, + env: Env, + start_after: Option, + limit: Option, +) -> StdResult { + let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; + let start = start_after.map(Bound::exclusive); + let proposals = PROPOSALS + .range(deps.storage, start, None, Order::Ascending) + .take(limit) + .map(|p| map_proposal(&env.block, p)) + .collect::>()?; + + Ok(ProposalListResponse { proposals }) +} + +fn reverse_proposals( + deps: Deps, + env: Env, + start_before: Option, + limit: Option, +) -> StdResult { + let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; + let end = start_before.map(Bound::exclusive); + let props: StdResult> = PROPOSALS + .range(deps.storage, None, end, Order::Descending) + .take(limit) + .map(|p| map_proposal(&env.block, p)) + .collect(); + + Ok(ProposalListResponse { proposals: props? }) +} + +fn map_proposal( + block: &BlockInfo, + item: StdResult<(u64, Proposal)>, +) -> StdResult { + item.map(|(id, prop)| { + let status = prop.current_status(block); + let threshold = prop.threshold.to_response(prop.total_weight); + ProposalResponse { + id, + title: prop.title, + description: prop.description, + msgs: prop.msgs, + status, + deposit: prop.deposit, + proposer: prop.proposer, + expires: prop.expires, + threshold, + } + }) +} + +fn query_vote( + deps: Deps, + proposal_id: u64, + voter: String, +) -> StdResult { + let voter = deps.api.addr_validate(&voter)?; + let ballot = BALLOTS.may_load(deps.storage, (proposal_id, &voter))?; + let vote = ballot.map(|b| VoteInfo { + proposal_id, + voter: voter.into(), + vote: b.vote, + weight: b.weight, + }); + Ok(VoteResponse { vote }) +} + +fn list_votes( + deps: Deps, + proposal_id: u64, + start_after: Option, + limit: Option, +) -> StdResult { + let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; + let start = start_after.map(|s| Bound::ExclusiveRaw(s.into())); + + let votes = BALLOTS + .prefix(proposal_id) + .range(deps.storage, start, None, Order::Ascending) + .take(limit) + .map(|item| { + item.map(|(addr, ballot)| VoteInfo { + proposal_id, + voter: addr.into(), + vote: ballot.vote, + weight: ballot.weight, + }) + }) + .collect::>()?; + + Ok(VoteListResponse { votes }) +} + +fn query_voter(deps: Deps, voter: String) -> StdResult { + let voter = deps.api.addr_validate(&voter)?; + let weight = VOTERS.may_load(deps.storage, &voter)?; + Ok(VoterResponse { weight }) +} + +fn list_voters( + deps: Deps, + start_after: Option, + limit: Option, +) -> StdResult { + let limit = limit.unwrap_or(DEFAULT_LIMIT).min(MAX_LIMIT) as usize; + let start = start_after.map(|s| Bound::ExclusiveRaw(s.into())); + + let voters = VOTERS + .range(deps.storage, start, None, Order::Ascending) + .take(limit) + .map(|item| { + item.map(|(addr, weight)| VoterDetail { + addr: addr.into(), + weight, + }) + }) + .collect::>()?; + + Ok(VoterListResponse { voters }) +} + +#[cfg(test)] +mod tests { + use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; + use cosmwasm_std::{coin, from_json, BankMsg, Decimal}; + + use cw2::{get_contract_version, ContractVersion}; + use cw_utils::{Duration, Threshold}; + + use easy_addr::addr; + + use crate::msg::Voter; + + use super::*; + + fn mock_env_height(height_delta: u64) -> Env { + let mut env = mock_env(); + env.block.height += height_delta; + env + } + + fn mock_env_time(time_delta: u64) -> Env { + let mut env = mock_env(); + env.block.time = env.block.time.plus_seconds(time_delta); + env + } + + const OWNER: &str = addr!("admin0001"); + const VOTER1: &str = addr!("voter0001"); + const VOTER2: &str = addr!("voter0002"); + const VOTER3: &str = addr!("voter0003"); + const VOTER4: &str = addr!("voter0004"); + const VOTER5: &str = addr!("voter0005"); + const VOTER6: &str = addr!("voter0006"); + const NOWEIGHT_VOTER: &str = addr!("voterxxxx"); + const SOMEBODY: &str = addr!("somebody"); + + fn voter>(addr: T, weight: u64) -> Voter { + Voter { + addr: addr.into(), + weight, + } + } + + // this will set up the instantiation for other tests + #[track_caller] + fn setup_test_case( + deps: DepsMut, + info: MessageInfo, + threshold: Threshold, + max_voting_period: Duration, + ) -> Result, ContractError> { + // Instantiate a contract with voters + let voters = vec![ + voter(&info.sender, 1), + voter(VOTER1, 1), + voter(VOTER2, 2), + voter(VOTER3, 3), + voter(VOTER4, 4), + voter(VOTER5, 5), + voter(VOTER6, 1), + voter(NOWEIGHT_VOTER, 0), + ]; + + let instantiate_msg = InstantiateMsg { + voters, + threshold, + max_voting_period, + }; + instantiate(deps, mock_env(), info, instantiate_msg) + } + + fn get_tally(deps: Deps, proposal_id: u64) -> u64 { + // Get all the voters on the proposal + let voters = QueryMsg::ListVotes { + proposal_id, + start_after: None, + limit: None, + }; + let votes: VoteListResponse = + from_json(query(deps, mock_env(), voters).unwrap()).unwrap(); + // Sum the weights of the Yes votes to get the tally + votes + .votes + .iter() + .filter(|&v| v.vote == Vote::Yes) + .map(|v| v.weight) + .sum() + } + + #[test] + fn test_instantiate_works() { + let mut deps = mock_dependencies(); + let info = mock_info(OWNER, &[]); + + let max_voting_period = Duration::Time(1234567); + + // No voters fails + let instantiate_msg = InstantiateMsg { + voters: vec![], + threshold: Threshold::ThresholdQuorum { + threshold: Decimal::zero(), + quorum: Decimal::percent(1), + }, + max_voting_period, + }; + let err = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + instantiate_msg.clone(), + ) + .unwrap_err(); + assert_eq!(err, ContractError::NoVoters {}); + + // Zero required weight fails + let instantiate_msg = InstantiateMsg { + voters: vec![voter(OWNER, 1)], + ..instantiate_msg + }; + let err = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + instantiate_msg, + ) + .unwrap_err(); + assert_eq!( + err, + ContractError::Threshold( + cw_utils::ThresholdError::InvalidThreshold {} + ) + ); + + // Total weight less than required weight not allowed + let threshold = Threshold::AbsoluteCount { weight: 100 }; + let err = setup_test_case( + deps.as_mut(), + info.clone(), + threshold, + max_voting_period, + ) + .unwrap_err(); + assert_eq!( + err, + ContractError::Threshold( + cw_utils::ThresholdError::UnreachableWeight {} + ) + ); + + // All valid + let threshold = Threshold::AbsoluteCount { weight: 1 }; + setup_test_case(deps.as_mut(), info, threshold, max_voting_period) + .unwrap(); + + // Verify + assert_eq!( + ContractVersion { + contract: CONTRACT_NAME.to_string(), + version: CONTRACT_VERSION.to_string(), + }, + get_contract_version(&deps.storage).unwrap() + ) + } + + // TODO: query() tests + + #[test] + fn zero_weight_member_cant_vote() { + let mut deps = mock_dependencies(); + + let threshold = Threshold::AbsoluteCount { weight: 4 }; + let voting_period = Duration::Time(2000000); + + let info = mock_info(OWNER, &[]); + setup_test_case(deps.as_mut(), info, threshold, voting_period).unwrap(); + + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + + // Voter without voting power still can create proposal + let info = mock_info(NOWEIGHT_VOTER, &[]); + let proposal = ExecuteMsg::Propose { + title: "Rewarding somebody".to_string(), + description: "Do we reward her?".to_string(), + msgs, + latest: None, + }; + let res = execute(deps.as_mut(), mock_env(), info, proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + // Cast a No vote + let no_vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::No, + }; + // Only voters with weight can vote + let info = mock_info(NOWEIGHT_VOTER, &[]); + let err = execute(deps.as_mut(), mock_env(), info, no_vote).unwrap_err(); + assert_eq!(err, ContractError::Unauthorized {}); + } + + #[test] + fn test_propose_works() { + let mut deps = mock_dependencies(); + + let threshold = Threshold::AbsoluteCount { weight: 4 }; + let voting_period = Duration::Time(2000000); + + let info = mock_info(OWNER, &[]); + setup_test_case(deps.as_mut(), info, threshold, voting_period).unwrap(); + + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + + // Only voters can propose + let info = mock_info(SOMEBODY, &[]); + let proposal = ExecuteMsg::Propose { + title: "Rewarding somebody".to_string(), + description: "Do we reward her?".to_string(), + msgs: msgs.clone(), + latest: None, + }; + let err = execute(deps.as_mut(), mock_env(), info, proposal.clone()) + .unwrap_err(); + assert_eq!(err, ContractError::Unauthorized {}); + + // Wrong expiration option fails + let info = mock_info(OWNER, &[]); + let proposal_wrong_exp = ExecuteMsg::Propose { + title: "Rewarding somebody".to_string(), + description: "Do we reward her?".to_string(), + msgs, + latest: Some(Expiration::AtHeight(123456)), + }; + let err = execute(deps.as_mut(), mock_env(), info, proposal_wrong_exp) + .unwrap_err(); + assert_eq!(err, ContractError::WrongExpiration {}); + + // Proposal from voter works + let info = mock_info(VOTER3, &[]); + let res = + execute(deps.as_mut(), mock_env(), info, proposal.clone()).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "propose") + .add_attribute("sender", VOTER3) + .add_attribute("proposal_id", 1.to_string()) + .add_attribute("status", "Open") + ); + + // Proposal from voter with enough vote power directly passes + let info = mock_info(VOTER4, &[]); + let res = execute(deps.as_mut(), mock_env(), info, proposal).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "propose") + .add_attribute("sender", VOTER4) + .add_attribute("proposal_id", 2.to_string()) + .add_attribute("status", "Passed") + ); + } + + #[test] + fn test_vote_works() { + let mut deps = mock_dependencies(); + + let threshold = Threshold::AbsoluteCount { weight: 3 }; + let voting_period = Duration::Time(2000000); + + let info = mock_info(OWNER, &[]); + setup_test_case(deps.as_mut(), info.clone(), threshold, voting_period) + .unwrap(); + + // Propose + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + let proposal = ExecuteMsg::Propose { + title: "Pay somebody".to_string(), + description: "Do I pay her?".to_string(), + msgs, + latest: None, + }; + let res = + execute(deps.as_mut(), mock_env(), info.clone(), proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + // Owner cannot vote (again) + let yes_vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::Yes, + }; + let err = execute(deps.as_mut(), mock_env(), info, yes_vote.clone()) + .unwrap_err(); + assert_eq!(err, ContractError::AlreadyVoted {}); + + // Only voters can vote + let info = mock_info(SOMEBODY, &[]); + let err = execute(deps.as_mut(), mock_env(), info, yes_vote.clone()) + .unwrap_err(); + assert_eq!(err, ContractError::Unauthorized {}); + + // But voter1 can + let info = mock_info(VOTER1, &[]); + let res = + execute(deps.as_mut(), mock_env(), info, yes_vote.clone()).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER1) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Open") + ); + + // No/Veto votes have no effect on the tally + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + // Compute the current tally + let tally = get_tally(deps.as_ref(), proposal_id); + + // Cast a No vote + let no_vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::No, + }; + let info = mock_info(VOTER2, &[]); + execute(deps.as_mut(), mock_env(), info, no_vote.clone()).unwrap(); + + // Cast a Veto vote + let veto_vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::Veto, + }; + let info = mock_info(VOTER3, &[]); + execute(deps.as_mut(), mock_env(), info.clone(), veto_vote).unwrap(); + + // Verify + assert_eq!(tally, get_tally(deps.as_ref(), proposal_id)); + + // Once voted, votes cannot be changed + let err = + execute(deps.as_mut(), mock_env(), info.clone(), yes_vote.clone()) + .unwrap_err(); + assert_eq!(err, ContractError::AlreadyVoted {}); + assert_eq!(tally, get_tally(deps.as_ref(), proposal_id)); + + // Expired proposals cannot be voted + let env = match voting_period { + Duration::Time(duration) => mock_env_time(duration + 1), + Duration::Height(duration) => mock_env_height(duration + 1), + }; + let err = execute(deps.as_mut(), env, info, no_vote).unwrap_err(); + assert_eq!(err, ContractError::Expired {}); + + // Vote it again, so it passes + let info = mock_info(VOTER4, &[]); + let res = + execute(deps.as_mut(), mock_env(), info, yes_vote.clone()).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER4) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Passed") + ); + + // Passed proposals can still be voted (while they are not expired or executed) + let info = mock_info(VOTER5, &[]); + let res = execute(deps.as_mut(), mock_env(), info, yes_vote).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER5) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Passed") + ); + + // Propose + let info = mock_info(OWNER, &[]); + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + let proposal = ExecuteMsg::Propose { + title: "Pay somebody".to_string(), + description: "Do I pay her?".to_string(), + msgs, + latest: None, + }; + let res = execute(deps.as_mut(), mock_env(), info, proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + // Cast a No vote + let no_vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::No, + }; + // Voter1 vote no, weight 1 + let info = mock_info(VOTER1, &[]); + let res = + execute(deps.as_mut(), mock_env(), info, no_vote.clone()).unwrap(); + + // Verify it is not enough to reject yet + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER1) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Open") + ); + + // Voter 4 votes no, weight 4, total weight for no so far 5, need 14 to reject + let info = mock_info(VOTER4, &[]); + let res = + execute(deps.as_mut(), mock_env(), info, no_vote.clone()).unwrap(); + + // Verify it is still open as we actually need no votes > 17 - 3 + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER4) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Open") + ); + + // Voter 3 votes no, weight 3, total weight for no far 8, need 14 + let info = mock_info(VOTER3, &[]); + let _res = + execute(deps.as_mut(), mock_env(), info, no_vote.clone()).unwrap(); + + // Voter 5 votes no, weight 5, total weight for no far 13, need 14 + let info = mock_info(VOTER5, &[]); + let res = + execute(deps.as_mut(), mock_env(), info, no_vote.clone()).unwrap(); + + // Verify it is still open as we actually need no votes > 17 - 3 + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER5) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Open") + ); + + // Voter 2 votes no, weight 2, total weight for no so far 15, need 14. + // Can now reject + let info = mock_info(VOTER2, &[]); + let res = execute(deps.as_mut(), mock_env(), info, no_vote).unwrap(); + + // Verify it is rejected as, 15 no votes > 17 - 3 + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER2) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Rejected") + ); + + // Rejected proposals can still be voted (while they are not expired) + let info = mock_info(VOTER6, &[]); + let yes_vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::Yes, + }; + let res = execute(deps.as_mut(), mock_env(), info, yes_vote).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER6) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Rejected") + ); + } + + #[test] + fn test_execute_works() { + let mut deps = mock_dependencies(); + + let threshold = Threshold::AbsoluteCount { weight: 3 }; + let voting_period = Duration::Time(2000000); + + let info = mock_info(OWNER, &[]); + setup_test_case(deps.as_mut(), info.clone(), threshold, voting_period) + .unwrap(); + + // Propose + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + let proposal = ExecuteMsg::Propose { + title: "Pay somebody".to_string(), + description: "Do I pay her?".to_string(), + msgs: msgs.clone(), + latest: None, + }; + let res = + execute(deps.as_mut(), mock_env(), info.clone(), proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + // Only Passed can be executed + let execution = ExecuteMsg::Execute { proposal_id }; + let err = execute(deps.as_mut(), mock_env(), info, execution.clone()) + .unwrap_err(); + assert_eq!(err, ContractError::WrongExecuteStatus {}); + + // Vote it, so it passes + let vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::Yes, + }; + let info = mock_info(VOTER3, &[]); + let res = + execute(deps.as_mut(), mock_env(), info.clone(), vote).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER3) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Passed") + ); + + // In passing: Try to close Passed fails + let closing = ExecuteMsg::Close { proposal_id }; + let err = execute(deps.as_mut(), mock_env(), info, closing).unwrap_err(); + assert_eq!(err, ContractError::WrongCloseStatus {}); + + // Execute works. Anybody can execute Passed proposals + let info = mock_info(SOMEBODY, &[]); + let res = + execute(deps.as_mut(), mock_env(), info.clone(), execution).unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_messages(msgs) + .add_attribute("action", "execute") + .add_attribute("sender", SOMEBODY) + .add_attribute("proposal_id", proposal_id.to_string()) + ); + + // In passing: Try to close Executed fails + let closing = ExecuteMsg::Close { proposal_id }; + let err = execute(deps.as_mut(), mock_env(), info, closing).unwrap_err(); + assert_eq!(err, ContractError::WrongCloseStatus {}); + } + + #[test] + fn proposal_pass_on_expiration() { + let mut deps = mock_dependencies(); + + let threshold = Threshold::ThresholdQuorum { + threshold: Decimal::percent(51), + quorum: Decimal::percent(1), + }; + let voting_period = Duration::Time(2000000); + + let info = mock_info(OWNER, &[]); + setup_test_case(deps.as_mut(), info.clone(), threshold, voting_period) + .unwrap(); + + // Propose + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + let proposal = ExecuteMsg::Propose { + title: "Pay somebody".to_string(), + description: "Do I pay her?".to_string(), + msgs, + latest: None, + }; + let res = execute(deps.as_mut(), mock_env(), info, proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + // Vote it, so it passes after voting period is over + let vote = ExecuteMsg::Vote { + proposal_id, + vote: Vote::Yes, + }; + let info = mock_info(VOTER3, &[]); + let res = execute(deps.as_mut(), mock_env(), info, vote).unwrap(); + assert_eq!( + res, + Response::new() + .add_attribute("action", "vote") + .add_attribute("sender", VOTER3) + .add_attribute("proposal_id", proposal_id.to_string()) + .add_attribute("status", "Open") + ); + + // Wait until the voting period is over + let env = match voting_period { + Duration::Time(duration) => mock_env_time(duration + 1), + Duration::Height(duration) => mock_env_height(duration + 1), + }; + + // Proposal should now be passed + let prop: ProposalResponse = from_json( + query( + deps.as_ref(), + env.clone(), + QueryMsg::Proposal { proposal_id }, + ) + .unwrap(), + ) + .unwrap(); + assert_eq!(prop.status, Status::Passed); + + // Closing should NOT be possible + let info = mock_info(SOMEBODY, &[]); + let err = execute( + deps.as_mut(), + env.clone(), + info.clone(), + ExecuteMsg::Close { proposal_id }, + ) + .unwrap_err(); + assert_eq!(err, ContractError::WrongCloseStatus {}); + + // Execution should now be possible + let res = execute( + deps.as_mut(), + env, + info, + ExecuteMsg::Execute { proposal_id }, + ) + .unwrap(); + assert_eq!( + res.attributes, + Response::::new() + .add_attribute("action", "execute") + .add_attribute("sender", SOMEBODY) + .add_attribute("proposal_id", proposal_id.to_string()) + .attributes + ) + } + + #[test] + fn test_close_works() { + let mut deps = mock_dependencies(); + + let threshold = Threshold::AbsoluteCount { weight: 3 }; + let voting_period = Duration::Height(2000000); + + let info = mock_info(OWNER, &[]); + setup_test_case(deps.as_mut(), info.clone(), threshold, voting_period) + .unwrap(); + + // Propose + let bank_msg = BankMsg::Send { + to_address: SOMEBODY.into(), + amount: vec![coin(1, "BTC")], + }; + let msgs = vec![CosmosMsg::Bank(bank_msg)]; + let proposal = ExecuteMsg::Propose { + title: "Pay somebody".to_string(), + description: "Do I pay her?".to_string(), + msgs: msgs.clone(), + latest: None, + }; + let res = execute(deps.as_mut(), mock_env(), info, proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + let closing = ExecuteMsg::Close { proposal_id }; + + // Anybody can close + let info = mock_info(SOMEBODY, &[]); + + // Non-expired proposals cannot be closed + let err = execute(deps.as_mut(), mock_env(), info, closing).unwrap_err(); + assert_eq!(err, ContractError::NotExpired {}); + + // Expired proposals can be closed + let info = mock_info(OWNER, &[]); + + let proposal = ExecuteMsg::Propose { + title: "(Try to) pay somebody".to_string(), + description: "Pay somebody after time?".to_string(), + msgs, + latest: Some(Expiration::AtHeight(123456)), + }; + let res = + execute(deps.as_mut(), mock_env(), info.clone(), proposal).unwrap(); + + // Get the proposal id from the logs + let proposal_id: u64 = res.attributes[2].value.parse().unwrap(); + + let closing = ExecuteMsg::Close { proposal_id }; + + // Close expired works + let env = mock_env_height(1234567); + let res = execute( + deps.as_mut(), + env, + mock_info(SOMEBODY, &[]), + closing.clone(), + ) + .unwrap(); + + // Verify + assert_eq!( + res, + Response::new() + .add_attribute("action", "close") + .add_attribute("sender", SOMEBODY) + .add_attribute("proposal_id", proposal_id.to_string()) + ); + + // Trying to close it again fails + let err = execute(deps.as_mut(), mock_env(), info, closing).unwrap_err(); + assert_eq!(err, ContractError::WrongCloseStatus {}); + } +} diff --git a/contracts/core-cw3-fixed-msig/src/error.rs b/contracts/core-cw3-fixed-msig/src/error.rs new file mode 100644 index 0000000..ff0b523 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/error.rs @@ -0,0 +1,46 @@ +use cosmwasm_std::StdError; +use cw_utils::ThresholdError; + +use thiserror::Error; + +#[derive(Error, Debug, PartialEq)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("{0}")] + Threshold(#[from] ThresholdError), + + #[error("Required weight cannot be zero")] + ZeroWeight {}, + + #[error("Not possible to reach required (passing) weight")] + UnreachableWeight {}, + + #[error("No voters")] + NoVoters {}, + + #[error("Unauthorized")] + Unauthorized {}, + + #[error("Proposal is not open")] + NotOpen {}, + + #[error("Proposal voting period has expired")] + Expired {}, + + #[error("Proposal must expire before you can close it")] + NotExpired {}, + + #[error("Wrong expiration option")] + WrongExpiration {}, + + #[error("Already voted on this proposal")] + AlreadyVoted {}, + + #[error("Proposal must have passed and not yet been executed")] + WrongExecuteStatus {}, + + #[error("Cannot close completed or passed proposals")] + WrongCloseStatus {}, +} diff --git a/contracts/core-cw3-fixed-msig/src/integration_tests.rs b/contracts/core-cw3-fixed-msig/src/integration_tests.rs new file mode 100644 index 0000000..dff97d0 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/integration_tests.rs @@ -0,0 +1,153 @@ +#![cfg(test)] + +use cosmwasm_std::{to_json_binary, Empty, Uint128, WasmMsg}; +use cw20::{BalanceResponse, MinterResponse}; +use cw20_base::msg::QueryMsg; +use cw3::Vote; +use cw_multi_test::{App, Contract, ContractWrapper, Executor}; +use cw_utils::{Duration, Threshold}; + +use crate::contract::{execute, instantiate, query}; +use crate::msg::{ExecuteMsg, InstantiateMsg, Voter}; + +fn mock_app() -> App { + App::default() +} + +pub fn contract_cw3_fixed_multisig() -> Box> { + let contract = ContractWrapper::new(execute, instantiate, query); + Box::new(contract) +} + +pub fn contract_cw20() -> Box> { + let contract = ContractWrapper::new( + cw20_base::contract::execute, + cw20_base::contract::instantiate, + cw20_base::contract::query, + ); + Box::new(contract) +} + +#[test] +// cw3 multisig account can control cw20 admin actions +fn cw3_controls_cw20() { + let mut router = mock_app(); + + // setup cw3 multisig with 3 accounts + let cw3_id = router.store_code(contract_cw3_fixed_multisig()); + + let addr1 = router.api().addr_make("addr1"); + let addr2 = router.api().addr_make("addr2"); + let addr3 = router.api().addr_make("addr3"); + let cw3_instantiate_msg = InstantiateMsg { + voters: vec![ + Voter { + addr: addr1.to_string(), + weight: 1, + }, + Voter { + addr: addr2.to_string(), + weight: 1, + }, + Voter { + addr: addr3.to_string(), + weight: 1, + }, + ], + threshold: Threshold::AbsoluteCount { weight: 2 }, + max_voting_period: Duration::Height(3), + }; + + let multisig_addr = router + .instantiate_contract( + cw3_id, + addr1.clone(), + &cw3_instantiate_msg, + &[], + "Consortium", + None, + ) + .unwrap(); + + // setup cw20 as cw3 multisig admin + let cw20_id = router.store_code(contract_cw20()); + + let cw20_instantiate_msg = cw20_base::msg::InstantiateMsg { + name: "Consortium Token".parse().unwrap(), + symbol: "CST".parse().unwrap(), + decimals: 6, + initial_balances: vec![], + mint: Some(MinterResponse { + minter: multisig_addr.to_string(), + cap: None, + }), + marketing: None, + }; + let cw20_addr = router + .instantiate_contract( + cw20_id, + multisig_addr.clone(), + &cw20_instantiate_msg, + &[], + "Consortium", + None, + ) + .unwrap(); + + // mint some cw20 tokens according to proposal result + let mint_recipient = router.api().addr_make("mint_recipient"); + let mint_amount = Uint128::new(1000); + let cw20_mint_msg = cw20_base::msg::ExecuteMsg::Mint { + recipient: mint_recipient.to_string(), + amount: mint_amount, + }; + + let execute_mint_msg = WasmMsg::Execute { + contract_addr: cw20_addr.to_string(), + msg: to_json_binary(&cw20_mint_msg).unwrap(), + funds: vec![], + }; + let propose_msg = ExecuteMsg::Propose { + title: "Mint tokens".to_string(), + description: "Need to mint tokens".to_string(), + msgs: vec![execute_mint_msg.into()], + latest: None, + }; + // propose mint + router + .execute_contract( + addr1.clone(), + multisig_addr.clone(), + &propose_msg, + &[], + ) + .unwrap(); + + // second votes + let vote2_msg = ExecuteMsg::Vote { + proposal_id: 1, + vote: Vote::Yes, + }; + router + .execute_contract(addr2, multisig_addr.clone(), &vote2_msg, &[]) + .unwrap(); + + // only 1 vote and msg mint fails + let execute_proposal_msg = ExecuteMsg::Execute { proposal_id: 1 }; + // execute mint + router + .execute_contract(addr1, multisig_addr, &execute_proposal_msg, &[]) + .unwrap(); + + // check the mint is successful + let cw20_balance_query = QueryMsg::Balance { + address: mint_recipient.to_string(), + }; + let balance: BalanceResponse = router + .wrap() + .query_wasm_smart(&cw20_addr, &cw20_balance_query) + .unwrap(); + + // compare minted amount + assert_eq!(balance.balance, mint_amount); +} diff --git a/contracts/core-cw3-fixed-msig/src/lib.rs b/contracts/core-cw3-fixed-msig/src/lib.rs new file mode 100644 index 0000000..9053ec9 --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/lib.rs @@ -0,0 +1,25 @@ +/*! +This is a simple implementation of the [cw3 spec](https://github.com/CosmWasm/cw-plus/blob/main/packages/cw3/README.md). +It is a multisig with a fixed set of addresses created upon instatiation. +Each address may have the same weight (K of N), or some may have extra voting +power. This works much like the native Cosmos SDK multisig, except that rather +than aggregating the signatures off chain and submitting the final result, +we aggregate the approvals on-chain. + +This is usable as is, and probably the most secure implementation of cw3 +(as it is the simplest), but we will be adding more complex cases, such +as updating the multisig set, different voting rules for the same group +with different permissions, and even allow token-weighted voting. All through +the same client interface. + +For more information on this contract, please check out the +[README](https://github.com/CosmWasm/cw-plus/blob/main/contracts/cw3-fixed-multisig/README.md). +*/ + +pub mod contract; +mod error; +mod integration_tests; +pub mod msg; +pub mod state; + +pub use crate::error::ContractError; diff --git a/contracts/core-cw3-fixed-msig/src/msg.rs b/contracts/core-cw3-fixed-msig/src/msg.rs new file mode 100644 index 0000000..c21908c --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/msg.rs @@ -0,0 +1,74 @@ +use cosmwasm_schema::{cw_serde, QueryResponses}; +use cosmwasm_std::{CosmosMsg, Empty}; +use cw3::Vote; +use cw_utils::{Duration, Expiration, Threshold}; + +#[cw_serde] +pub struct InstantiateMsg { + pub voters: Vec, + pub threshold: Threshold, + pub max_voting_period: Duration, +} + +#[cw_serde] +pub struct Voter { + pub addr: String, + pub weight: u64, +} + +// TODO: add some T variants? Maybe good enough as fixed Empty for now +#[cw_serde] +pub enum ExecuteMsg { + Propose { + title: String, + description: String, + msgs: Vec>, + // note: we ignore API-spec'd earliest if passed, always opens immediately + latest: Option, + }, + Vote { + proposal_id: u64, + vote: Vote, + }, + Execute { + proposal_id: u64, + }, + Close { + proposal_id: u64, + }, +} + +// We can also add this as a cw3 extension +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + #[returns(cw_utils::ThresholdResponse)] + Threshold {}, + #[returns(cw3::ProposalResponse)] + Proposal { proposal_id: u64 }, + #[returns(cw3::ProposalListResponse)] + ListProposals { + start_after: Option, + limit: Option, + }, + #[returns(cw3::ProposalListResponse)] + ReverseProposals { + start_before: Option, + limit: Option, + }, + #[returns(cw3::VoteResponse)] + Vote { proposal_id: u64, voter: String }, + #[returns(cw3::VoteListResponse)] + ListVotes { + proposal_id: u64, + start_after: Option, + limit: Option, + }, + #[returns(cw3::VoterResponse)] + Voter { address: String }, + #[returns(cw3::VoterListResponse)] + ListVoters { + start_after: Option, + limit: Option, + }, +} diff --git a/contracts/core-cw3-fixed-msig/src/state.rs b/contracts/core-cw3-fixed-msig/src/state.rs new file mode 100644 index 0000000..c37775a --- /dev/null +++ b/contracts/core-cw3-fixed-msig/src/state.rs @@ -0,0 +1,30 @@ +use cosmwasm_schema::cw_serde; +use cosmwasm_std::{Addr, StdResult, Storage}; + +use cw3::{Ballot, Proposal}; +use cw_storage_plus::{Item, Map}; +use cw_utils::{Duration, Threshold}; + +#[cw_serde] +pub struct Config { + pub threshold: Threshold, + pub total_weight: u64, + pub max_voting_period: Duration, +} + +// unique items +pub const CONFIG: Item = Item::new("config"); +pub const PROPOSAL_COUNT: Item = Item::new("proposal_count"); + +// multiple-item map +pub const BALLOTS: Map<(u64, &Addr), Ballot> = Map::new("votes"); +pub const PROPOSALS: Map = Map::new("proposals"); + +// multiple-item maps +pub const VOTERS: Map<&Addr, u64> = Map::new("voters"); + +pub fn next_id(store: &mut dyn Storage) -> StdResult { + let id: u64 = PROPOSAL_COUNT.may_load(store)?.unwrap_or_default() + 1; + PROPOSAL_COUNT.save(store, &id)?; + Ok(id) +}

YRr$)MyW+=OdewA!dRwL!&-?GMeH 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 Qbnv?nzlHccdSvK-0P;Q<0RR91 delta 81800 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 OaLvQ-Ec|8^1pW_l?^gN% delta 78636 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%0A7I`%M(M2lHjp7%~eMN(Wa~ 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 diff --git a/artifacts/token_vesting.wasm b/artifacts/token_vesting.wasm index 1d5c7937ca2f7ea0bbb4f1afad9338aebda1d5de..38f8c11035bb732d99c0445429415c24262f0f9b 100644 GIT binary patch literal 210485 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 U;REQ-lc6Wo1I`6pxVZ3t0aJ8MtN;K2 delta 85328 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 diff --git a/contracts/airdrop-token-vesting/src/contract.rs b/contracts/airdrop-token-vesting/src/contract.rs index 1df66cb..fe73ec5 100644 --- a/contracts/airdrop-token-vesting/src/contract.rs +++ b/contracts/airdrop-token-vesting/src/contract.rs @@ -11,8 +11,9 @@ use serde_json::to_string; use crate::errors::ContractError; use crate::msg::{ - ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, RewardUserResponse, - VestingAccountResponse, VestingData, VestingSchedule, + from_vesting_to_query_output, ExecuteMsg, InstantiateMsg, QueryMsg, + RewardUserRequest, RewardUserResponse, VestingAccountResponse, VestingData, + VestingSchedule, }; use crate::state::{ VestingAccount, Whitelist, DENOM, UNALLOCATED_AMOUNT, VESTING_ACCOUNTS, @@ -30,15 +31,14 @@ pub fn instantiate( if info.funds.len() != 1 { return Err(StdError::generic_err( "must deposit exactly one type of token", - ) - .into()); + )); } if info.funds[0].amount.is_zero() { - return Err(StdError::generic_err("must deposit some token").into()); + return Err(StdError::generic_err("must deposit some token")); } // Managers validation if msg.managers.is_empty() { - return Err(StdError::generic_err("managers cannot be empty").into()); + return Err(StdError::generic_err("managers cannot be empty")); } deps.api.addr_validate(&msg.admin)?; @@ -116,7 +116,7 @@ pub fn withdraw( return Err(StdError::generic_err("Nothing to withdraw").into()); } - unallocated_amount = unallocated_amount - amount_max; + unallocated_amount -= amount_max; UNALLOCATED_AMOUNT.save(deps.storage, &unallocated_amount)?; // validate recipient address @@ -130,8 +130,8 @@ pub fn withdraw( )?]) .add_attribute("action", "withdraw") .add_attribute("recipient", &recipient) - .add_attribute("amount", &amount_max.to_string()) - .add_attribute("unallocated_amount", &unallocated_amount.to_string())) + .add_attribute("amount", amount_max.to_string()) + .add_attribute("unallocated_amount", unallocated_amount.to_string())) } fn reward_users( @@ -316,7 +316,7 @@ fn send_if_amount_is_not_zero( default_recipient: String, ) -> Result<(), ContractError> { if !amount.is_zero() { - let recipient = recipient_option.unwrap_or_else(|| default_recipient); + let recipient = recipient_option.unwrap_or(default_recipient); let msg_send: CosmosMsg = build_send_msg(denom, amount, recipient)?; messages.push(msg_send); } @@ -390,10 +390,7 @@ fn build_send_msg( ) -> StdResult { Ok(BankMsg::Send { to_address: to, - amount: vec![Coin { - denom: denom, - amount, - }], + amount: vec![Coin { denom, amount }], } .into()) } @@ -419,6 +416,8 @@ fn vesting_account( address: String, ) -> StdResult { let account = VESTING_ACCOUNTS.may_load(deps.storage, address.as_str())?; + let whitelist = WHITELIST.load(deps.storage)?; + let denom = DENOM.load(deps.storage)?; match account { None => Err(StdError::not_found("Vesting account not found")), @@ -426,14 +425,27 @@ fn vesting_account( let vested_amount = account.vested_amount(env.block.time.seconds())?; + let vesting_schedule_query = from_vesting_to_query_output( + &account.vesting_schedule, + account.vesting_amount, + account.cliff_amount, + ); + let vesting = VestingData { - vesting_account: account.clone(), - vested_amount: vested_amount, + master_address: Some(whitelist.admin.clone()), + vesting_denom: cw20::Denom::Native(denom), + vesting_amount: account.vesting_amount, + vesting_schedule: vesting_schedule_query, + + vested_amount, claimable_amount: vested_amount .checked_sub(account.claimed_amount)?, }; - Ok(VestingAccountResponse { address, vesting }) + Ok(VestingAccountResponse { + address, + vestings: vec![vesting], + }) } } } diff --git a/contracts/airdrop-token-vesting/src/msg.rs b/contracts/airdrop-token-vesting/src/msg.rs index f3fbfb3..9da9574 100644 --- a/contracts/airdrop-token-vesting/src/msg.rs +++ b/contracts/airdrop-token-vesting/src/msg.rs @@ -2,10 +2,7 @@ use cosmwasm_schema::cw_serde; use cosmwasm_std::{Timestamp, Uint128, Uint64}; use cw20::Denom; -use crate::{ - errors::{CliffError, ContractError, VestingError}, - state::VestingAccount, -}; +use crate::errors::{CliffError, ContractError, VestingError}; /// Structure for the message that instantiates the smart contract. #[cw_serde] @@ -99,12 +96,16 @@ pub enum QueryMsg { #[cw_serde] pub struct VestingAccountResponse { pub address: String, - pub vesting: VestingData, + pub vestings: Vec, } #[cw_serde] pub struct VestingData { - pub vesting_account: VestingAccount, + pub master_address: Option, + pub vesting_denom: Denom, + pub vesting_amount: Uint128, + pub vesting_schedule: VestingScheduleQueryOutput, + pub vested_amount: Uint128, pub claimable_amount: Uint128, } @@ -118,6 +119,38 @@ pub enum VestingSchedule { }, } +/// For legacy, we need the query to return the schedule with the vesting amount and cliff amount +#[cw_serde] +pub enum VestingScheduleQueryOutput { + LinearVestingWithCliff { + start_time: Uint64, // vesting start time in second unit + end_time: Uint64, // vesting end time in second unit + cliff_time: Uint64, // cliff time in second unit + vesting_amount: Uint128, + cliff_amount: Uint128, + }, +} + +pub fn from_vesting_to_query_output( + vesting: &VestingSchedule, + vesting_amount: Uint128, + cliff_amount: Uint128, +) -> VestingScheduleQueryOutput { + match vesting { + VestingSchedule::LinearVestingWithCliff { + start_time, + end_time, + cliff_time, + } => VestingScheduleQueryOutput::LinearVestingWithCliff { + start_time: *start_time, + end_time: *end_time, + cliff_time: *cliff_time, + vesting_amount, + cliff_amount, + }, + } +} + pub struct Cliff { pub amount: Uint128, pub time: Uint64, diff --git a/contracts/airdrop-token-vesting/src/testing.rs b/contracts/airdrop-token-vesting/src/testing.rs index 6b20848..4f7e9bb 100644 --- a/contracts/airdrop-token-vesting/src/testing.rs +++ b/contracts/airdrop-token-vesting/src/testing.rs @@ -4,6 +4,7 @@ use crate::errors::{CliffError, ContractError, VestingError}; use crate::msg::{ ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, VestingAccountResponse, VestingData, VestingSchedule, + VestingScheduleQueryOutput, }; use cosmwasm_std::testing::{MockApi, MockQuerier, MockStorage}; @@ -678,22 +679,22 @@ fn register_vesting_account_with_native_token() -> TestResult { )?)?, VestingAccountResponse { address: "addr0001".to_string(), - vesting: VestingData { - vesting_account: crate::state::VestingAccount { - address: "addr0001".to_string(), - vesting_amount: Uint128::new(100u128), - cliff_amount: Uint128::zero(), - vesting_schedule: VestingSchedule::LinearVestingWithCliff { + vestings: vec![VestingData { + master_address: Some("addr0000".to_string()), + vesting_amount: Uint128::new(100u128), + vesting_schedule: + VestingScheduleQueryOutput::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), cliff_time: Uint64::new(105), + vesting_amount: Uint128::new(100u128), + cliff_amount: Uint128::zero(), }, - claimed_amount: Uint128::zero(), - }, + vesting_denom: cw20::Denom::Native("uusd".to_string()), vested_amount: Uint128::zero(), claimable_amount: Uint128::zero(), - }, - } + }] + }, ); Ok(()) } @@ -782,7 +783,6 @@ fn claim_native() -> TestResult { ], ); - // query vesting account assert_eq!( from_json::(&query( deps.as_ref(), @@ -795,22 +795,22 @@ fn claim_native() -> TestResult { )?)?, VestingAccountResponse { address: "addr0001".to_string(), - vesting: VestingData { - vesting_account: crate::state::VestingAccount { - address: "addr0001".to_string(), - vesting_amount: Uint128::new(1000000), - cliff_amount: Uint128::new(500000), - vesting_schedule: VestingSchedule::LinearVestingWithCliff { + vestings: vec![VestingData { + master_address: Some("addr0000".to_string()), + vesting_amount: Uint128::new(1000000u128), + vesting_schedule: + VestingScheduleQueryOutput::LinearVestingWithCliff { start_time: Uint64::new(100), end_time: Uint64::new(110), cliff_time: Uint64::new(105), + vesting_amount: Uint128::new(1000000u128), + cliff_amount: Uint128::new(500000u128), }, - claimed_amount: Uint128::new(500000), - }, - vested_amount: Uint128::new(500000), + vesting_denom: cw20::Denom::Native("uusd".to_string()), + vested_amount: Uint128::new(500000u128), claimable_amount: Uint128::zero(), - }, - } + }] + }, ); // make time to half claimable diff --git a/contracts/core-cw3-flex-msig/README.md b/contracts/core-cw3-flex-msig/README.md index 3225d94..88efda2 100644 --- a/contracts/core-cw3-flex-msig/README.md +++ b/contracts/core-cw3-flex-msig/README.md @@ -1,27 +1,205 @@ # CW3 Flexible Multisig -This builds on [cw3-fixed-multisig](../cw3-fixed-multisig) with a more -powerful implementation of the [cw3 spec](../../packages/cw3/README.md). +This smart contract builds on [cw3-fixed-multisig](../cw3-fixed-multisig) with a more +powerful implementation of the [cw3 spec](https://github.com/CosmWasm/cw-plus/tree/v1.1.2/packages/cw3). It is a multisig contract that is backed by a -[cw4 (group)](../../packages/cw4/README.md) contract, which independently +[cw4 (group)](https://github.com/CosmWasm/cw-plus/tree/v1.1.2/packages/cw4) contract, which independently maintains the voter set. -This provides 2 main advantages: +This provides several advantages: * You can create two different multisigs with different voting thresholds backed by the same group. Thus, you can have a 50% vote, and a 67% vote that always use the same voter set, but can take other actions. +* In addition to the dynamic voting set, the main difference with the native + Cosmos SDK multisig, is that it aggregates the signatures on chain, with + visible proposals (like `x/gov` in the Cosmos SDK), rather than requiring + signers to share signatures off chain. * TODO: It allows dynamic multisig groups. Since the group can change, we can set one of the multisigs as the admin of the group contract, and the +## Usage Guide: CW3 Flex Multisig -In addition to the dynamic voting set, the main difference with the native -Cosmos SDK multisig, is that it aggregates the signatures on chain, with -visible proposals (like `x/gov` in the Cosmos SDK), rather than requiring -signers to share signatures off chain. +This contract is a multisig contract that is backed by a cw4 (group) contract, which independently maintains the voter set. -## Instantiation +### Instantiate + +```js +{ + "group_addr": "cosmos1...", // this is the group contract that contains the member list + "threshold": { + "absolute_count": {"weight": 2}, + "absolute_percentage": {"percentage": 0.5}, + "threshold_quorum": { "threshold": 0.1, "quorum": 0.2 } + }, + "max_voting_period": "3600s", + // who is able to execute passed proposals + // None means that anyone can execute + "executor": {}, + /// The cost of creating a proposal (if any). + "proposal_deposit": { + "denom": "uusd", + "amount": "1000000" + }, +} +``` + +### Execute + +- **Propose** creates a message to be executed by the multisig. It can be executed by anyone. + +```js +{ + "propose": { + "title": "My proposal", + "description": "This is a proposal", + "msgs": [ + { + "bank": { + "send": { + "from_address": "cosmos1...", + "to_address": "cosmos1...", + "amount": [{ "denom": "uusd", "amount": "1000000" }] + } + } + } + ], + "latest": { + "at_height": 123456 + } + } +} +``` + +- **Vote** adds a vote to an existing proposal. It can be executed by anyone. + +```js +{ + "vote": { + "proposal_id": 1, + "vote": "yes" + } +} +``` + +- **Execute** executes a passed proposal. It can be executed by anyone. + +```js +{ + "execute": { + "proposal_id": 1 + } +} +``` + +- **Close** closes an expired proposal. It can be executed by anyone. + +```js +{ + "close": { + "proposal_id": 1 + } +} +``` + +### Query + +- **Threshold** returns the current threshold necessary for a proposal to be executed. + +```js +{ + "threshold": {} +} +``` + +- **Proposal** fetches the details of a specific proposal given its ID. + +```js +{ + "proposal": { + "proposal_id": 1 + } +} +``` + +- **ListProposals** lists proposals with optional pagination. `start_after` specifies the ID after which to start listing, and `limit` sets the maximum number of proposals to return. + +```js +{ + "list_proposals": { + "start_after": 1, + "limit": 10 + } +} +``` + +- **ReverseProposals** lists proposals in reverse order with optional pagination. `start_before` specifies the ID before which to start listing in reverse, and `limit` sets the maximum number of proposals to return. + +```js +{ + "reverse_proposals": { + "start_before": 10, + "limit": 10 + } +} +``` + +- **Vote** retrieves the vote details for a given proposal ID and voter address. + +```js +{ + "vote": { + "proposal_id": 1, + "voter": "cosmos1..." + } +} +``` + +- **ListVotes** lists votes for a given proposal, with optional pagination. `start_after` specifies the address after which to start listing votes, and `limit` sets the maximum number of votes to return. + +```js +{ + "list_votes": { + "proposal_id": 1, + "start_after": "cosmos1...", + "limit": 10 + } +} +``` + +- **Voter** fetches details about a specific voter by their address. + +```js +{ + "voter": { + "address": "cosmos1..." + } +} +``` + +- **ListVoters** lists voters with optional pagination. `start_after` specifies the address after which to start listing voters, and `limit` sets the maximum number of voters to return. + +```js +{ + "list_voters": { + "start_after": "cosmos1...", + "limit": 10 + } +} +``` + +- **Config** retrieves the current configuration of the system. + +```js +{ + "config": {} +} +``` + +## Concepts + +### Instantiation The first step to create such a multisig is to instantiate a cw4 contract with the desired member set. For now, this only is supported by @@ -43,7 +221,7 @@ self-deploying contract on-chain). (TODO: document better). When creating the multisig, you must set the required weight to pass a vote as well as the max/default voting period. (TODO: allow more threshold types) -## Execution Process +### Execution Process First, a registered voter must submit a proposal. This also includes the first "Yes" vote on the proposal by the proposer. The proposer can set @@ -64,7 +242,7 @@ be reverted, and it will remain "Passed", so you can try again). Once a proposal has expired without passing, anyone can submit a "Close" message to mark it closed. This has no effect beyond cleaning up the UI/database. -## Running this contract +## Building and Testing this contract You will need Rust 1.44.1+ with `wasm32-unknown-unknown` target installed. @@ -82,4 +260,4 @@ sha256sum cw3_fixed_multisig.wasm ``` Or for a production-ready (optimized) build, run a build command in -the repository root: https://github.com/CosmWasm/cw-plus#compiling. +the repository root: https://github.com/CosmWasm/cw-plus#compiling. \ No newline at end of file diff --git a/contracts/core-token-vesting/schema/cw20_hook_msg.json b/contracts/core-token-vesting/schema/cw20_hook_msg.json deleted file mode 100644 index e0af96a..0000000 --- a/contracts/core-token-vesting/schema/cw20_hook_msg.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Cw20HookMsg", - "oneOf": [ - { - "description": "Register vesting account with token transfer", - "type": "object", - "required": [ - "register_vesting_account" - ], - "properties": { - "register_vesting_account": { - "type": "object", - "required": [ - "address", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "master_address": { - "type": [ - "string", - "null" - ] - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/contracts/core-token-vesting/schema/execute_msg.json b/contracts/core-token-vesting/schema/execute_msg.json deleted file mode 100644 index 34ae237..0000000 --- a/contracts/core-token-vesting/schema/execute_msg.json +++ /dev/null @@ -1,257 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "type": "object", - "required": [ - "receive" - ], - "properties": { - "receive": { - "$ref": "#/definitions/Cw20ReceiveMsg" - } - }, - "additionalProperties": false - }, - { - "description": "Creator Operations ///", - "type": "object", - "required": [ - "register_vesting_account" - ], - "properties": { - "register_vesting_account": { - "type": "object", - "required": [ - "address", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "master_address": { - "type": [ - "string", - "null" - ] - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "only available when master_address was set", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address", - "denom" - ], - "properties": { - "address": { - "type": "string" - }, - "denom": { - "$ref": "#/definitions/Denom" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "VestingAccount Operations ///", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "required": [ - "denoms" - ], - "properties": { - "denoms": { - "type": "array", - "items": { - "$ref": "#/definitions/Denom" - } - }, - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Binary": { - "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", - "type": "string" - }, - "Cw20ReceiveMsg": { - "description": "Cw20ReceiveMsg should be de/serialized under `Receive()` variant in a ExecuteMsg", - "type": "object", - "required": [ - "amount", - "msg", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "msg": { - "$ref": "#/definitions/Binary" - }, - "sender": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/contracts/core-token-vesting/schema/instantiate_msg.json b/contracts/core-token-vesting/schema/instantiate_msg.json deleted file mode 100644 index 1352613..0000000 --- a/contracts/core-token-vesting/schema/instantiate_msg.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "type": "object", - "additionalProperties": false -} diff --git a/contracts/core-token-vesting/schema/query_msg.json b/contracts/core-token-vesting/schema/query_msg.json deleted file mode 100644 index 5802c73..0000000 --- a/contracts/core-token-vesting/schema/query_msg.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/contracts/core-token-vesting/schema/vesting_account_response.json b/contracts/core-token-vesting/schema/vesting_account_response.json deleted file mode 100644 index 3c73c67..0000000 --- a/contracts/core-token-vesting/schema/vesting_account_response.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vestings" - ], - "properties": { - "address": { - "type": "string" - }, - "vestings": { - "type": "array", - "items": { - "$ref": "#/definitions/VestingData" - } - } - }, - "additionalProperties": false, - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_amount", - "vesting_denom", - "vesting_schedule" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "master_address": { - "type": [ - "string", - "null" - ] - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_denom": { - "$ref": "#/definitions/Denom" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/nibiru-std/src/proto/buf/nibiru.oracle.v1.rs b/nibiru-std/src/proto/buf/nibiru.oracle.v1.rs index 4d6815e..aa527c4 100644 --- a/nibiru-std/src/proto/buf/nibiru.oracle.v1.rs +++ b/nibiru-std/src/proto/buf/nibiru.oracle.v1.rs @@ -4,51 +4,51 @@ #[derive(Clone, PartialEq, ::prost::Message)] pub struct Params { /// VotePeriod defines the number of blocks during which voting takes place. - #[prost(uint64, tag="1")] + #[prost(uint64, tag = "1")] pub vote_period: u64, /// VoteThreshold specifies the minimum proportion of votes that must be /// received for a ballot to pass. - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub vote_threshold: ::prost::alloc::string::String, /// RewardBand defines a maxium divergence that a price vote can have from the /// weighted median in the ballot. If a vote lies within the valid range /// defined by: - /// μ := weightedMedian, - /// validRange := μ ± (μ * rewardBand / 2), + /// μ := weightedMedian, + /// validRange := μ ± (μ * rewardBand / 2), /// then rewards are added to the validator performance. /// Note that if the reward band is smaller than 1 standard /// deviation, the band is taken to be 1 standard deviation.a price - #[prost(string, tag="3")] + #[prost(string, tag = "3")] pub reward_band: ::prost::alloc::string::String, /// The set of whitelisted markets, or asset pairs, for the module. /// Ex. '\["unibi:uusd","ubtc:uusd"\]' - #[prost(string, repeated, tag="4")] + #[prost(string, repeated, tag = "4")] pub whitelist: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// SlashFraction returns the proportion of an oracle's stake that gets /// slashed in the event of slashing. `SlashFraction` specifies the exact /// penalty for failing a voting period. - #[prost(string, tag="5")] + #[prost(string, tag = "5")] pub slash_fraction: ::prost::alloc::string::String, /// SlashWindow returns the number of voting periods that specify a /// "slash window". After each slash window, all oracles that have missed more /// than the penalty threshold are slashed. Missing the penalty threshold is /// synonymous with submitting fewer valid votes than `MinValidPerWindow`. - #[prost(uint64, tag="6")] + #[prost(uint64, tag = "6")] pub slash_window: u64, - #[prost(string, tag="7")] + #[prost(string, tag = "7")] pub min_valid_per_window: ::prost::alloc::string::String, /// Amount of time to look back for TWAP calculations. /// Ex: "900.000000069s" corresponds to 900 seconds and 69 nanoseconds in JSON. - #[prost(message, optional, tag="8")] + #[prost(message, optional, tag = "8")] pub twap_lookback_window: ::core::option::Option<::prost_types::Duration>, /// The minimum number of voters (i.e. oracle validators) per pair for it to be /// considered a passing ballot. Recommended at least 4. - #[prost(uint64, tag="9")] + #[prost(uint64, tag = "9")] pub min_voters: u64, /// The validator fee ratio that is given to validators every epoch. - #[prost(string, tag="10")] + #[prost(string, tag = "10")] pub validator_fee_ratio: ::prost::alloc::string::String, - #[prost(uint64, tag="11")] + #[prost(uint64, tag = "11")] pub expiration_blocks: u64, } /// Struct for aggregate prevoting on the ExchangeRateVote. @@ -58,11 +58,11 @@ pub struct Params { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct AggregateExchangeRatePrevote { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub hash: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub voter: ::prost::alloc::string::String, - #[prost(uint64, tag="3")] + #[prost(uint64, tag = "3")] pub submit_block: u64, } /// MsgAggregateExchangeRateVote - struct for voting on @@ -70,26 +70,26 @@ pub struct AggregateExchangeRatePrevote { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct AggregateExchangeRateVote { - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub exchange_rate_tuples: ::prost::alloc::vec::Vec, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub voter: ::prost::alloc::string::String, } /// ExchangeRateTuple - struct to store interpreted exchange rates data to store #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ExchangeRateTuple { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub pair: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub exchange_rate: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct DatedPrice { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub exchange_rate: ::prost::alloc::string::String, - #[prost(uint64, tag="2")] + #[prost(uint64, tag = "2")] pub created_block: u64, } /// Rewards defines a credit object towards validators @@ -98,25 +98,26 @@ pub struct DatedPrice { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Rewards { /// id uniquely identifies the rewards instance of the pair - #[prost(uint64, tag="1")] + #[prost(uint64, tag = "1")] pub id: u64, /// vote_periods defines the vote periods left in which rewards will be /// distributed. - #[prost(uint64, tag="2")] + #[prost(uint64, tag = "2")] pub vote_periods: u64, /// Coins defines the amount of coins to distribute in a single vote period. - #[prost(message, repeated, tag="3")] - pub coins: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "3")] + pub coins: + ::prost::alloc::vec::Vec, } /// Emitted when a price is posted #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct EventPriceUpdate { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub pair: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub price: ::prost::alloc::string::String, - #[prost(int64, tag="3")] + #[prost(int64, tag = "3")] pub timestamp_ms: i64, } /// Emitted when a valoper delegates oracle voting rights to a feeder address. @@ -124,11 +125,11 @@ pub struct EventPriceUpdate { #[derive(Clone, PartialEq, ::prost::Message)] pub struct EventDelegateFeederConsent { /// Validator is the Bech32 address that is delegating voting rights. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator: ::prost::alloc::string::String, /// Feeder is the delegate or representative that will be able to send /// vote and prevote transaction messages. - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub feeder: ::prost::alloc::string::String, } /// Emitted by MsgAggregateExchangeVote when an aggregate vote is added to state @@ -136,13 +137,13 @@ pub struct EventDelegateFeederConsent { #[derive(Clone, PartialEq, ::prost::Message)] pub struct EventAggregateVote { /// Validator is the Bech32 address to which the vote will be credited. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator: ::prost::alloc::string::String, /// Feeder is the delegate or representative that will send vote and prevote /// transaction messages on behalf of the voting validator. - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub feeder: ::prost::alloc::string::String, - #[prost(message, repeated, tag="3")] + #[prost(message, repeated, tag = "3")] pub prices: ::prost::alloc::vec::Vec, } /// Emitted by MsgAggregateExchangePrevote when an aggregate prevote is added @@ -151,55 +152,57 @@ pub struct EventAggregateVote { #[derive(Clone, PartialEq, ::prost::Message)] pub struct EventAggregatePrevote { /// Validator is the Bech32 address to which the vote will be credited. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator: ::prost::alloc::string::String, /// Feeder is the delegate or representative that will send vote and prevote /// transaction messages on behalf of the voting validator. - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub feeder: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct EventValidatorPerformance { /// Validator is the Bech32 address to which the vote will be credited. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator: ::prost::alloc::string::String, /// Tendermint consensus voting power - #[prost(int64, tag="2")] + #[prost(int64, tag = "2")] pub voting_power: i64, /// RewardWeight: Weight of rewards the validator should receive in units of /// consensus power. - #[prost(int64, tag="3")] + #[prost(int64, tag = "3")] pub reward_weight: i64, /// Number of valid votes for which the validator will be rewarded - #[prost(int64, tag="4")] + #[prost(int64, tag = "4")] pub win_count: i64, /// Number of abstained votes for which there will be no reward or punishment - #[prost(int64, tag="5")] + #[prost(int64, tag = "5")] pub abstain_count: i64, /// Number of invalid/punishable votes - #[prost(int64, tag="6")] + #[prost(int64, tag = "6")] pub miss_count: i64, } /// GenesisState defines the oracle module's genesis state. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GenesisState { - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub params: ::core::option::Option, - #[prost(message, repeated, tag="2")] + #[prost(message, repeated, tag = "2")] pub feeder_delegations: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="3")] + #[prost(message, repeated, tag = "3")] pub exchange_rates: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="4")] + #[prost(message, repeated, tag = "4")] pub miss_counters: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="5")] - pub aggregate_exchange_rate_prevotes: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="6")] - pub aggregate_exchange_rate_votes: ::prost::alloc::vec::Vec, - #[prost(string, repeated, tag="7")] + #[prost(message, repeated, tag = "5")] + pub aggregate_exchange_rate_prevotes: + ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "6")] + pub aggregate_exchange_rate_votes: + ::prost::alloc::vec::Vec, + #[prost(string, repeated, tag = "7")] pub pairs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(message, repeated, tag="8")] + #[prost(message, repeated, tag = "8")] pub rewards: ::prost::alloc::vec::Vec, } /// FeederDelegation is the address for where oracle feeder authority are @@ -208,9 +211,9 @@ pub struct GenesisState { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct FeederDelegation { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub feeder_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub validator_address: ::prost::alloc::string::String, } /// MissCounter defines an miss counter and validator address pair used in @@ -218,9 +221,9 @@ pub struct FeederDelegation { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MissCounter { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator_address: ::prost::alloc::string::String, - #[prost(uint64, tag="2")] + #[prost(uint64, tag = "2")] pub miss_counter: u64, } /// QueryExchangeRateRequest is the request type for the Query/ExchangeRate RPC @@ -229,7 +232,7 @@ pub struct MissCounter { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryExchangeRateRequest { /// pair defines the pair to query for. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub pair: ::prost::alloc::string::String, } /// QueryExchangeRateResponse is response type for the @@ -238,15 +241,14 @@ pub struct QueryExchangeRateRequest { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryExchangeRateResponse { /// exchange_rate defines the exchange rate of assets voted by validators - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub exchange_rate: ::prost::alloc::string::String, } /// QueryExchangeRatesRequest is the request type for the Query/ExchangeRates RPC /// method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryExchangeRatesRequest { -} +pub struct QueryExchangeRatesRequest {} /// QueryExchangeRatesResponse is response type for the /// Query/ExchangeRates RPC method. #[allow(clippy::derive_partial_eq_without_eq)] @@ -254,29 +256,27 @@ pub struct QueryExchangeRatesRequest { pub struct QueryExchangeRatesResponse { /// exchange_rates defines a list of the exchange rate for all whitelisted /// pairs. - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub exchange_rates: ::prost::alloc::vec::Vec, } /// QueryActivesRequest is the request type for the Query/Actives RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryActivesRequest { -} +pub struct QueryActivesRequest {} /// QueryActivesResponse is response type for the /// Query/Actives RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryActivesResponse { /// actives defines a list of the pair which oracle prices agreed upon. - #[prost(string, repeated, tag="1")] + #[prost(string, repeated, tag = "1")] pub actives: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } /// QueryVoteTargetsRequest is the request type for the Query/VoteTargets RPC /// method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryVoteTargetsRequest { -} +pub struct QueryVoteTargetsRequest {} /// QueryVoteTargetsResponse is response type for the /// Query/VoteTargets RPC method. #[allow(clippy::derive_partial_eq_without_eq)] @@ -284,7 +284,7 @@ pub struct QueryVoteTargetsRequest { pub struct QueryVoteTargetsResponse { /// vote_targets defines a list of the pairs in which everyone /// should vote in the current vote period. - #[prost(string, repeated, tag="1")] + #[prost(string, repeated, tag = "1")] pub vote_targets: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } /// QueryFeederDelegationRequest is the request type for the @@ -293,7 +293,7 @@ pub struct QueryVoteTargetsResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryFeederDelegationRequest { /// validator defines the validator address to query for. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator_addr: ::prost::alloc::string::String, } /// QueryFeederDelegationResponse is response type for the @@ -302,7 +302,7 @@ pub struct QueryFeederDelegationRequest { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryFeederDelegationResponse { /// feeder_addr defines the feeder delegation of a validator - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub feeder_addr: ::prost::alloc::string::String, } /// QueryMissCounterRequest is the request type for the Query/MissCounter RPC @@ -311,7 +311,7 @@ pub struct QueryFeederDelegationResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryMissCounterRequest { /// validator defines the validator address to query for. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator_addr: ::prost::alloc::string::String, } /// QueryMissCounterResponse is response type for the @@ -320,7 +320,7 @@ pub struct QueryMissCounterRequest { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryMissCounterResponse { /// miss_counter defines the oracle miss counter of a validator - #[prost(uint64, tag="1")] + #[prost(uint64, tag = "1")] pub miss_counter: u64, } /// QueryAggregatePrevoteRequest is the request type for the @@ -329,7 +329,7 @@ pub struct QueryMissCounterResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryAggregatePrevoteRequest { /// validator defines the validator address to query for. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator_addr: ::prost::alloc::string::String, } /// QueryAggregatePrevoteResponse is response type for the @@ -339,15 +339,14 @@ pub struct QueryAggregatePrevoteRequest { pub struct QueryAggregatePrevoteResponse { /// aggregate_prevote defines oracle aggregate prevote submitted by a validator /// in the current vote period - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub aggregate_prevote: ::core::option::Option, } /// QueryAggregatePrevotesRequest is the request type for the /// Query/AggregatePrevotes RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryAggregatePrevotesRequest { -} +pub struct QueryAggregatePrevotesRequest {} /// QueryAggregatePrevotesResponse is response type for the /// Query/AggregatePrevotes RPC method. #[allow(clippy::derive_partial_eq_without_eq)] @@ -355,8 +354,9 @@ pub struct QueryAggregatePrevotesRequest { pub struct QueryAggregatePrevotesResponse { /// aggregate_prevotes defines all oracle aggregate prevotes submitted in the /// current vote period - #[prost(message, repeated, tag="1")] - pub aggregate_prevotes: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "1")] + pub aggregate_prevotes: + ::prost::alloc::vec::Vec, } /// QueryAggregateVoteRequest is the request type for the Query/AggregateVote RPC /// method. @@ -364,7 +364,7 @@ pub struct QueryAggregatePrevotesResponse { #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryAggregateVoteRequest { /// validator defines the validator address to query for. - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub validator_addr: ::prost::alloc::string::String, } /// QueryAggregateVoteResponse is response type for the @@ -374,15 +374,14 @@ pub struct QueryAggregateVoteRequest { pub struct QueryAggregateVoteResponse { /// aggregate_vote defines oracle aggregate vote submitted by a validator in /// the current vote period - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub aggregate_vote: ::core::option::Option, } /// QueryAggregateVotesRequest is the request type for the Query/AggregateVotes /// RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryAggregateVotesRequest { -} +pub struct QueryAggregateVotesRequest {} /// QueryAggregateVotesResponse is response type for the /// Query/AggregateVotes RPC method. #[allow(clippy::derive_partial_eq_without_eq)] @@ -390,32 +389,31 @@ pub struct QueryAggregateVotesRequest { pub struct QueryAggregateVotesResponse { /// aggregate_votes defines all oracle aggregate votes submitted in the current /// vote period - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub aggregate_votes: ::prost::alloc::vec::Vec, } /// QueryParamsRequest is the request type for the Query/Params RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryParamsRequest { -} +pub struct QueryParamsRequest {} /// QueryParamsResponse is the response type for the Query/Params RPC method. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryParamsResponse { /// params defines the parameters of the module. - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub params: ::core::option::Option, } /// a snapshot of the prices at a given point in time #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct PriceSnapshot { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub pair: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub price: ::prost::alloc::string::String, /// milliseconds since unix epoch - #[prost(int64, tag="3")] + #[prost(int64, tag = "3")] pub timestamp_ms: i64, } /// MsgAggregateExchangeRatePrevote represents a message to submit @@ -423,94 +421,91 @@ pub struct PriceSnapshot { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MsgAggregateExchangeRatePrevote { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub hash: ::prost::alloc::string::String, /// Feeder is the Bech32 address of the price feeder. A validator may /// specify multiple price feeders by delegating them consent. The validator /// address is also a valid feeder by default. - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub feeder: ::prost::alloc::string::String, /// Validator is the Bech32 address to which the prevote will be credited. - #[prost(string, tag="3")] + #[prost(string, tag = "3")] pub validator: ::prost::alloc::string::String, } /// MsgAggregateExchangeRatePrevoteResponse defines the /// Msg/AggregateExchangeRatePrevote response type. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct MsgAggregateExchangeRatePrevoteResponse { -} +pub struct MsgAggregateExchangeRatePrevoteResponse {} /// MsgAggregateExchangeRateVote represents a message to submit /// aggregate exchange rate vote. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MsgAggregateExchangeRateVote { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub salt: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub exchange_rates: ::prost::alloc::string::String, /// Feeder is the Bech32 address of the price feeder. A validator may /// specify multiple price feeders by delegating them consent. The validator /// address is also a valid feeder by default. - #[prost(string, tag="3")] + #[prost(string, tag = "3")] pub feeder: ::prost::alloc::string::String, /// Validator is the Bech32 address to which the vote will be credited. - #[prost(string, tag="4")] + #[prost(string, tag = "4")] pub validator: ::prost::alloc::string::String, } /// MsgAggregateExchangeRateVoteResponse defines the /// Msg/AggregateExchangeRateVote response type. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct MsgAggregateExchangeRateVoteResponse { -} +pub struct MsgAggregateExchangeRateVoteResponse {} /// MsgDelegateFeedConsent represents a message to delegate oracle voting rights /// to another address. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MsgDelegateFeedConsent { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub operator: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub delegate: ::prost::alloc::string::String, } /// MsgDelegateFeedConsentResponse defines the Msg/DelegateFeedConsent response /// type. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct MsgDelegateFeedConsentResponse { -} +pub struct MsgDelegateFeedConsentResponse {} /// MsgEditOracleParams: gRPC tx message for updating the x/oracle module params /// \[SUDO\] Only callable by sudoers. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MsgEditOracleParams { - #[prost(string, tag="1")] + #[prost(string, tag = "1")] pub sender: ::prost::alloc::string::String, - #[prost(string, tag="2")] + #[prost(string, tag = "2")] pub vote_period: ::prost::alloc::string::String, /// vote_threshold: \[cosmossdk.io/math.LegacyDec\] TODO: - #[prost(string, tag="3")] + #[prost(string, tag = "3")] pub vote_threshold: ::prost::alloc::string::String, /// reward_band: \[cosmossdk.io/math.LegacyDec\] TODO: - #[prost(string, tag="4")] + #[prost(string, tag = "4")] pub reward_band: ::prost::alloc::string::String, - #[prost(string, repeated, tag="5")] + #[prost(string, repeated, tag = "5")] pub whitelist: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, /// slash_fraction: \[cosmossdk.io/math.LegacyDec\] TODO: - #[prost(string, tag="6")] + #[prost(string, tag = "6")] pub slash_fraction: ::prost::alloc::string::String, - #[prost(string, tag="7")] + #[prost(string, tag = "7")] pub slash_window: ::prost::alloc::string::String, /// min_valid_per_window: \[cosmossdk.io/math.LegacyDec\] TODO: - #[prost(string, tag="8")] + #[prost(string, tag = "8")] pub min_valid_per_window: ::prost::alloc::string::String, - #[prost(string, tag="9")] + #[prost(string, tag = "9")] pub twap_lookback_window: ::prost::alloc::string::String, - #[prost(string, tag="10")] + #[prost(string, tag = "10")] pub min_voters: ::prost::alloc::string::String, /// VoteThreshold: \[cosmossdk.io/math.LegacyDec\] TODO: - #[prost(string, tag="11")] + #[prost(string, tag = "11")] pub validator_fee_ratio: ::prost::alloc::string::String, } /// MsgEditOracleParamsResponse defines the Msg/EditOracleParams response @@ -518,7 +513,7 @@ pub struct MsgEditOracleParams { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct MsgEditOracleParamsResponse { - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub new_params: ::core::option::Option, } -// @@protoc_insertion_point(module) +// @@protoc_insertion_point(module) \ No newline at end of file diff --git a/schema/airdrop-token-vesting/execute_msg.json b/schema/airdrop-token-vesting/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/airdrop-token-vesting/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/airdrop-token-vesting/instantiate_msg.json b/schema/airdrop-token-vesting/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/airdrop-token-vesting/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/airdrop-token-vesting/query_msg.json b/schema/airdrop-token-vesting/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/airdrop-token-vesting/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/airdrop-token-vesting/vesting_account_response.json b/schema/airdrop-token-vesting/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/airdrop-token-vesting/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-cw3-flex-msig/execute_msg.json b/schema/core-cw3-flex-msig/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/core-cw3-flex-msig/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-cw3-flex-msig/instantiate_msg.json b/schema/core-cw3-flex-msig/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/core-cw3-flex-msig/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/core-cw3-flex-msig/query_msg.json b/schema/core-cw3-flex-msig/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/core-cw3-flex-msig/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-cw3-flex-msig/vesting_account_response.json b/schema/core-cw3-flex-msig/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/core-cw3-flex-msig/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-shifter/execute_msg.json b/schema/core-shifter/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/core-shifter/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-shifter/instantiate_msg.json b/schema/core-shifter/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/core-shifter/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/core-shifter/query_msg.json b/schema/core-shifter/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/core-shifter/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-shifter/vesting_account_response.json b/schema/core-shifter/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/core-shifter/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-token-vesting/execute_msg.json b/schema/core-token-vesting/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/core-token-vesting/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-token-vesting/instantiate_msg.json b/schema/core-token-vesting/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/core-token-vesting/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/core-token-vesting/query_msg.json b/schema/core-token-vesting/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/core-token-vesting/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/core-token-vesting/vesting_account_response.json b/schema/core-token-vesting/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/core-token-vesting/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/incentives/execute_msg.json b/schema/incentives/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/incentives/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/incentives/instantiate_msg.json b/schema/incentives/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/incentives/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/incentives/query_msg.json b/schema/incentives/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/incentives/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/incentives/vesting_account_response.json b/schema/incentives/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/incentives/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/lockup/execute_msg.json b/schema/lockup/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/lockup/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/lockup/instantiate_msg.json b/schema/lockup/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/lockup/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/lockup/query_msg.json b/schema/lockup/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/lockup/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/lockup/vesting_account_response.json b/schema/lockup/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/lockup/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nibi-stargate-perp/execute_msg.json b/schema/nibi-stargate-perp/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/nibi-stargate-perp/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nibi-stargate-perp/instantiate_msg.json b/schema/nibi-stargate-perp/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/nibi-stargate-perp/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/nibi-stargate-perp/query_msg.json b/schema/nibi-stargate-perp/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/nibi-stargate-perp/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nibi-stargate-perp/vesting_account_response.json b/schema/nibi-stargate-perp/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/nibi-stargate-perp/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nibi-stargate/execute_msg.json b/schema/nibi-stargate/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/nibi-stargate/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nibi-stargate/instantiate_msg.json b/schema/nibi-stargate/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/nibi-stargate/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/nibi-stargate/query_msg.json b/schema/nibi-stargate/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/nibi-stargate/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nibi-stargate/vesting_account_response.json b/schema/nibi-stargate/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/nibi-stargate/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nusd-valuator/execute_msg.json b/schema/nusd-valuator/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/nusd-valuator/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nusd-valuator/instantiate_msg.json b/schema/nusd-valuator/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/nusd-valuator/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/nusd-valuator/query_msg.json b/schema/nusd-valuator/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/nusd-valuator/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/nusd-valuator/vesting_account_response.json b/schema/nusd-valuator/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/nusd-valuator/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/pricefeed/execute_msg.json b/schema/pricefeed/execute_msg.json deleted file mode 100644 index 58d45c7..0000000 --- a/schema/pricefeed/execute_msg.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "description": "Enum respresenting message types for the execute entry point. These express the different ways in which one can invoke the contract and broadcast tx messages against it.", - "oneOf": [ - { - "description": "A creator operation that registers a vesting account address: String: Bech 32 address of the owner of the vesting account. vesting_schedule: VestingSchedule: The vesting schedule of the account.", - "type": "object", - "required": [ - "reward_users" - ], - "properties": { - "reward_users": { - "type": "object", - "required": [ - "rewards", - "vesting_schedule" - ], - "properties": { - "rewards": { - "type": "array", - "items": { - "$ref": "#/definitions/RewardUserRequest" - } - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "A creator operation that unregisters a vesting account. Args: - address: String: Bech 32 address of the owner of vesting account. - denom: Denom: The denomination of the tokens vested. - vested_token_recipient: Option: Bech 32 address that will receive the vested tokens after deregistration. If None, tokens are received by the owner address. - left_vesting_token_recipient: Option: Bech 32 address that will receive the left vesting tokens after deregistration.", - "type": "object", - "required": [ - "deregister_vesting_account" - ], - "properties": { - "deregister_vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "left_vesting_token_recipient": { - "type": [ - "string", - "null" - ] - }, - "vested_token_recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "description": "Claim is an operation that allows one to claim vested tokens.", - "type": "object", - "required": [ - "claim" - ], - "properties": { - "claim": { - "type": "object", - "properties": { - "recipient": { - "type": [ - "string", - "null" - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "withdraw" - ], - "properties": { - "withdraw": { - "type": "object", - "required": [ - "amount", - "recipient" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "recipient": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "RewardUserRequest": { - "type": "object", - "required": [ - "user_address", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "anyOf": [ - { - "$ref": "#/definitions/Uint128" - }, - { - "type": "null" - } - ] - }, - "user_address": { - "type": "string" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - }, - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/pricefeed/instantiate_msg.json b/schema/pricefeed/instantiate_msg.json deleted file mode 100644 index 86caf63..0000000 --- a/schema/pricefeed/instantiate_msg.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "description": "Structure for the message that instantiates the smart contract.", - "type": "object", - "required": [ - "admin", - "managers" - ], - "properties": { - "admin": { - "type": "string" - }, - "managers": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/schema/pricefeed/query_msg.json b/schema/pricefeed/query_msg.json deleted file mode 100644 index 10a7347..0000000 --- a/schema/pricefeed/query_msg.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "QueryMsg", - "description": "Enum representing the message types for the query entry point.", - "oneOf": [ - { - "type": "object", - "required": [ - "vesting_account" - ], - "properties": { - "vesting_account": { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "type": "string" - }, - "limit": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "start_after": { - "anyOf": [ - { - "$ref": "#/definitions/Denom" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ], - "definitions": { - "Addr": { - "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", - "type": "string" - }, - "Denom": { - "oneOf": [ - { - "type": "object", - "required": [ - "native" - ], - "properties": { - "native": { - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "cw20" - ], - "properties": { - "cw20": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - } - ] - } - } -} diff --git a/schema/pricefeed/vesting_account_response.json b/schema/pricefeed/vesting_account_response.json deleted file mode 100644 index 026467e..0000000 --- a/schema/pricefeed/vesting_account_response.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "VestingAccountResponse", - "type": "object", - "required": [ - "address", - "vesting" - ], - "properties": { - "address": { - "type": "string" - }, - "vesting": { - "$ref": "#/definitions/VestingData" - } - }, - "additionalProperties": false, - "definitions": { - "Uint128": { - "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", - "type": "string" - }, - "Uint64": { - "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", - "type": "string" - }, - "VestingAccount": { - "type": "object", - "required": [ - "address", - "claimed_amount", - "vesting_amount", - "vesting_schedule" - ], - "properties": { - "address": { - "type": "string" - }, - "claimed_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_schedule": { - "$ref": "#/definitions/VestingSchedule" - } - }, - "additionalProperties": false - }, - "VestingData": { - "type": "object", - "required": [ - "claimable_amount", - "vested_amount", - "vesting_account" - ], - "properties": { - "claimable_amount": { - "$ref": "#/definitions/Uint128" - }, - "vested_amount": { - "$ref": "#/definitions/Uint128" - }, - "vesting_account": { - "$ref": "#/definitions/VestingAccount" - } - }, - "additionalProperties": false - }, - "VestingSchedule": { - "oneOf": [ - { - "description": "LinearVesting is used to vest tokens linearly during a time period. The total_amount will be vested during this period.", - "type": "object", - "required": [ - "linear_vesting" - ], - "properties": { - "linear_vesting": { - "type": "object", - "required": [ - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "linear_vesting_with_cliff" - ], - "properties": { - "linear_vesting_with_cliff": { - "type": "object", - "required": [ - "cliff_amount", - "cliff_time", - "end_time", - "start_time", - "vesting_amount" - ], - "properties": { - "cliff_amount": { - "$ref": "#/definitions/Uint128" - }, - "cliff_time": { - "$ref": "#/definitions/Uint64" - }, - "end_time": { - "$ref": "#/definitions/Uint64" - }, - "start_time": { - "$ref": "#/definitions/Uint64" - }, - "vesting_amount": { - "$ref": "#/definitions/Uint128" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - } - } -} From 939f68c4092d52e0e84775b4cb0fe3f52a0be93c Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:04:10 -0600 Subject: [PATCH 08/29] fix(airdrop-token-vesting): improve cliff validation logic (#132) --- Cargo.lock | 67 ------------------- .../airdrop-token-vesting/src/contract.rs | 6 +- contracts/airdrop-token-vesting/src/errors.rs | 28 +++----- contracts/airdrop-token-vesting/src/msg.rs | 66 +++++++----------- .../airdrop-token-vesting/src/testing.rs | 12 ++-- 5 files changed, 42 insertions(+), 137 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 028bbd5..b6f3a7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1039,21 +1039,6 @@ dependencies = [ "memmap2 0.5.10", ] -[[package]] -name = "e2e-tests" -version = "0.1.0" -dependencies = [ - "anyhow", - "bash-rs", - "cosmwasm-schema", - "cosmwasm-std", - "home", - "serde", - "serde_json", - "thiserror", - "toml", -] - [[package]] name = "ecdsa" version = "0.16.9" @@ -2492,15 +2477,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_spanned" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2814,40 +2790,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" -dependencies = [ - "indexmap 2.2.5", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - [[package]] name = "tower-service" version = "0.3.2" @@ -3463,15 +3405,6 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" -[[package]] -name = "winnow" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" -dependencies = [ - "memchr", -] - [[package]] name = "winreg" version = "0.50.0" diff --git a/contracts/airdrop-token-vesting/src/contract.rs b/contracts/airdrop-token-vesting/src/contract.rs index fe73ec5..e546c5c 100644 --- a/contracts/airdrop-token-vesting/src/contract.rs +++ b/contracts/airdrop-token-vesting/src/contract.rs @@ -160,7 +160,7 @@ fn reward_users( StdError::generic_err("Insufficient funds for all rewards").into() ); } - vesting_schedule.validate(env.block.time)?; + vesting_schedule.validate()?; let mut attrs: Vec = vec![]; for req in rewards { @@ -169,7 +169,6 @@ fn reward_users( let result = register_vesting_account( deps.storage, - env.block.time, req.user_address.clone(), req.vesting_amount, req.cliff_amount, @@ -205,7 +204,6 @@ fn reward_users( fn register_vesting_account( storage: &mut dyn Storage, - block_time: Timestamp, address: String, vesting_amount: Uint128, cliff_amount: Uint128, @@ -215,7 +213,7 @@ fn register_vesting_account( if VESTING_ACCOUNTS.has(storage, address.as_str()) { return Err(StdError::generic_err("already exists").into()); } - vesting_schedule.validate(block_time)?; + vesting_schedule.validate()?; VESTING_ACCOUNTS.save( storage, diff --git a/contracts/airdrop-token-vesting/src/errors.rs b/contracts/airdrop-token-vesting/src/errors.rs index fef343d..0d5fced 100644 --- a/contracts/airdrop-token-vesting/src/errors.rs +++ b/contracts/airdrop-token-vesting/src/errors.rs @@ -8,25 +8,10 @@ pub enum ContractError { #[error(transparent)] Vesting(#[from] VestingError), - #[error(transparent)] - Cliff(#[from] CliffError), - #[error(transparent)] Overflow(#[from] cosmwasm_std::OverflowError), } -#[derive(thiserror::Error, Debug, PartialEq)] -pub enum CliffError { - #[error("cliff_time ({cliff_time}) should be greater than block_time ({block_time})")] - InvalidTime { cliff_time: u64, block_time: u64 }, - - #[error("cliff_amount ({cliff_amount}) should be less than or equal to vesting_amount ({vesting_amount})")] - ExcessiveAmount { - cliff_amount: u128, - vesting_amount: u128, - }, -} - #[derive(thiserror::Error, Debug, PartialEq)] pub enum VestingError { #[error("vesting_amount is zero but should be greater than 0")] @@ -35,10 +20,17 @@ pub enum VestingError { #[error( "end_time ({end_time}) should be greater than start_time ({start_time})" )] - InvalidTimeRange { start_time: u64, end_time: u64 }, + InvalidTimeRange { + start_time: u64, + cliff_time: u64, + end_time: u64, + }, - #[error(transparent)] - Cliff(#[from] CliffError), + #[error("cliff_amount ({cliff_amount}) should be less than or equal to vesting_amount ({vesting_amount})")] + ExcessiveAmount { + cliff_amount: u128, + vesting_amount: u128, + }, #[error("vesting_amount ({vesting_amount}) should be equal to deposit_amount ({deposit_amount})")] MismatchedVestingAndDepositAmount { diff --git a/contracts/airdrop-token-vesting/src/msg.rs b/contracts/airdrop-token-vesting/src/msg.rs index 9da9574..a23a58a 100644 --- a/contracts/airdrop-token-vesting/src/msg.rs +++ b/contracts/airdrop-token-vesting/src/msg.rs @@ -1,8 +1,8 @@ use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Timestamp, Uint128, Uint64}; +use cosmwasm_std::{Uint128, Uint64}; use cw20::Denom; -use crate::errors::{CliffError, ContractError, VestingError}; +use crate::errors::{ContractError, VestingError}; /// Structure for the message that instantiates the smart contract. #[cw_serde] @@ -64,12 +64,10 @@ impl RewardUserRequest { } if self.cliff_amount > self.vesting_amount { - return Err(ContractError::Vesting(VestingError::Cliff( - CliffError::ExcessiveAmount { - cliff_amount: self.cliff_amount.into(), - vesting_amount: self.vesting_amount.into(), - }, - ))); + return Err(ContractError::Vesting(VestingError::ExcessiveAmount { + cliff_amount: self.cliff_amount.into(), + vesting_amount: self.vesting_amount.into(), + })); } Ok(()) @@ -151,35 +149,6 @@ pub fn from_vesting_to_query_output( } } -pub struct Cliff { - pub amount: Uint128, - pub time: Uint64, -} - -impl Cliff { - pub fn ok_time(&self, block_time: Timestamp) -> Result<(), CliffError> { - let cliff_time_seconds = self.time.u64(); - if cliff_time_seconds < block_time.seconds() { - return Err(CliffError::InvalidTime { - cliff_time: cliff_time_seconds, - block_time: block_time.seconds(), - }); - } - Ok(()) - } - - pub fn ok_amount(&self, vesting_amount: Uint128) -> Result<(), CliffError> { - let cliff_amount = self.amount.u128(); - if cliff_amount > vesting_amount.u128() { - return Err(CliffError::ExcessiveAmount { - cliff_amount, - vesting_amount: vesting_amount.u128(), - }); - } - Ok(()) - } -} - impl VestingSchedule { /// /// validate_time checks that the start_time is less than the end_time. @@ -189,7 +158,7 @@ impl VestingSchedule { /// Additionally, it the vesting schedule is LinearVestingWithCliff, it checks that the cliff_time /// is bigger or equal to the block_time. /// - pub fn validate(&self, block_time: Timestamp) -> Result<(), VestingError> { + pub fn validate(&self) -> Result<(), VestingError> { match self { VestingSchedule::LinearVestingWithCliff { start_time, @@ -200,14 +169,25 @@ impl VestingSchedule { if end_time <= start_time { return Err(VestingError::InvalidTimeRange { start_time: start_time.u64(), + cliff_time: cliff_time.u64(), + end_time: end_time.u64(), + }); + } + if cliff_time < start_time { + return Err(VestingError::InvalidTimeRange { + start_time: start_time.u64(), + cliff_time: cliff_time.u64(), + end_time: end_time.u64(), + }); + } + + if cliff_time > end_time { + return Err(VestingError::InvalidTimeRange { + start_time: start_time.u64(), + cliff_time: cliff_time.u64(), end_time: end_time.u64(), }); } - let cliff = Cliff { - amount: Uint128::zero(), - time: *cliff_time, - }; - cliff.ok_time(block_time)?; Ok(()) } } diff --git a/contracts/airdrop-token-vesting/src/testing.rs b/contracts/airdrop-token-vesting/src/testing.rs index 4f7e9bb..dad1088 100644 --- a/contracts/airdrop-token-vesting/src/testing.rs +++ b/contracts/airdrop-token-vesting/src/testing.rs @@ -1,6 +1,6 @@ use crate::contract::tests::TestResult; use crate::contract::{execute, instantiate, query}; -use crate::errors::{CliffError, ContractError, VestingError}; +use crate::errors::{ContractError, VestingError}; use crate::msg::{ ExecuteMsg, InstantiateMsg, QueryMsg, RewardUserRequest, VestingAccountResponse, VestingData, VestingSchedule, @@ -291,10 +291,11 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { &env, mock_info("addr0000", &[Coin::new(1000u128, "uusd")]), msg, - ContractError::Vesting(VestingError::Cliff(CliffError::InvalidTime { + ContractError::Vesting(VestingError::InvalidTimeRange { + start_time: 100, cliff_time: 99, - block_time: 100, - })), + end_time: 110, + }), ); // end time less than start time @@ -306,6 +307,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { msg, ContractError::Vesting(VestingError::InvalidTimeRange { start_time: 110, + cliff_time: 105, end_time: 100, }), ); @@ -319,7 +321,7 @@ fn register_cliff_vesting_account_with_native_token() -> TestResult { mock_info("addr0000", &[Coin::new(1000u128, "uusd")]), msg, ContractError::Vesting( - CliffError::ExcessiveAmount { + VestingError::ExcessiveAmount { cliff_amount, vesting_amount, } From 753f11896c77a082594a17f3ede9b13128e16084 Mon Sep 17 00:00:00 2001 From: Matthias <97468149+matthiasmatt@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:42:14 +0100 Subject: [PATCH 09/29] fix: make claim have the same interface than legacy contract (#131) * fix: make new contract with the same query output format as the previous one * feat: fix claim interface * fix: remove schema * fix: merge * fix(airdrop-token-vesting): return empty array when no vesting accounts are found * test: claim empty vesting account response --------- Co-authored-by: Kevin Yang <5478483+k-yang@users.noreply.github.com> --- .gitignore | 3 +- artifacts/airdrop_token_vesting.wasm | Bin 215354 -> 215819 bytes artifacts/checksums.txt | 2 +- .../airdrop-token-vesting/src/contract.rs | 17 ++++++---- contracts/airdrop-token-vesting/src/msg.rs | 1 + .../airdrop-token-vesting/src/testing.rs | 30 ++++++++++-------- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 82f0831..73b6eda 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,5 @@ contracts/*/.editorconfig packages/*/.editorconfig lcov.info -.DS_Store \ No newline at end of file +.DS_Store +artifacts/*.json diff --git a/artifacts/airdrop_token_vesting.wasm b/artifacts/airdrop_token_vesting.wasm index e53dd648b857cc7d61fb9b795bd19ce92fbbb9e8..9a25708acc9919743010bb29c82132e8db53f54a 100644 GIT binary patch delta 77012 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 F{y(E2GV}ld delta 77251 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 iUU84T claim(deps, env, info, recipient), + ExecuteMsg::Claim { + denoms: _denoms, + recipient, + } => claim(deps, env, info, recipient), ExecuteMsg::Withdraw { amount, recipient } => { withdraw(deps, env, info, amount, recipient) } @@ -136,7 +138,7 @@ pub fn withdraw( fn reward_users( deps: DepsMut, - env: Env, + _env: Env, info: MessageInfo, rewards: Vec, vesting_schedule: VestingSchedule, @@ -418,7 +420,10 @@ fn vesting_account( let denom = DENOM.load(deps.storage)?; match account { - None => Err(StdError::not_found("Vesting account not found")), + None => Ok(VestingAccountResponse { + address, + vestings: vec![], + }), Some(account) => { let vested_amount = account.vested_amount(env.block.time.seconds())?; @@ -456,7 +461,7 @@ pub mod tests { use cosmwasm_std::{ coin, testing::{self, MockApi, MockQuerier, MockStorage}, - Empty, OwnedDeps, Uint64, + Empty, OwnedDeps, Timestamp, Uint64, }; pub type TestResult = Result<(), anyhow::Error>; diff --git a/contracts/airdrop-token-vesting/src/msg.rs b/contracts/airdrop-token-vesting/src/msg.rs index a23a58a..fe38f6b 100644 --- a/contracts/airdrop-token-vesting/src/msg.rs +++ b/contracts/airdrop-token-vesting/src/msg.rs @@ -40,6 +40,7 @@ pub enum ExecuteMsg { /// Claim is an operation that allows one to claim vested tokens. Claim { + denoms: Vec, recipient: Option, }, diff --git a/contracts/airdrop-token-vesting/src/testing.rs b/contracts/airdrop-token-vesting/src/testing.rs index dad1088..99dac73 100644 --- a/contracts/airdrop-token-vesting/src/testing.rs +++ b/contracts/airdrop-token-vesting/src/testing.rs @@ -761,7 +761,10 @@ fn claim_native() -> TestResult { // valid claim let info = mock_info("addr0001", &[]); - let msg = ExecuteMsg::Claim { recipient: None }; + let msg = ExecuteMsg::Claim { + recipient: None, + denoms: vec![], + }; let res = execute(deps.as_mut(), env.clone(), info.clone(), msg.clone())?; assert_eq!( @@ -841,20 +844,21 @@ fn claim_native() -> TestResult { ); // query vesting account - let res = &query( - deps.as_ref(), - env, - QueryMsg::VestingAccount { + assert_eq!( + from_json::(&query( + deps.as_ref(), + env, + QueryMsg::VestingAccount { + address: "addr0001".to_string(), + start_after: None, + limit: None, + }, + )?)?, + VestingAccountResponse { address: "addr0001".to_string(), - start_after: None, - limit: None, - }, + vestings: vec![], + } ); - //expect res to be an errro - match res { - Err(StdError::NotFound { .. }) => {} - _ => panic!("should not enter. got result: {res:?}"), - } Ok(()) } From 74450b0e3aaa7a3954fae8cbec4ae91e9a834056 Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Fri, 8 Mar 2024 11:20:52 -0600 Subject: [PATCH 10/29] refactor(token-vesting): rename airdrop-token-vesting to core-token-vesting-v2 (#133) * refactor(token-vesting): rename airdrop-token-vesting to core-token-vesting-v2 * refactor: run tidy-update --- Cargo.lock | 48 +++++++++--------- README.md | 4 +- artifacts/airdrop_token_vesting.wasm | Bin 215819 -> 0 bytes artifacts/checksums.txt | 2 - contracts/README.md | 7 ++- .../.cargo/config | 0 .../.gitignore | 0 .../Cargo.lock | 0 .../Cargo.toml | 6 +-- .../README.md | 16 +++--- .../examples/schema.rs | 2 +- .../src/contract.rs | 8 +-- .../src/errors.rs | 0 .../src/lib.rs | 0 .../src/msg.rs | 0 .../src/state.rs | 0 .../src/testing.rs | 26 ++++++---- 17 files changed, 63 insertions(+), 56 deletions(-) delete mode 100644 artifacts/airdrop_token_vesting.wasm rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/.cargo/config (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/.gitignore (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/Cargo.lock (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/Cargo.toml (90%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/README.md (92%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/examples/schema.rs (94%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/src/contract.rs (99%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/src/errors.rs (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/src/lib.rs (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/src/msg.rs (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/src/state.rs (100%) rename contracts/{airdrop-token-vesting => core-token-vesting-v2}/src/testing.rs (97%) diff --git a/Cargo.lock b/Cargo.lock index b6f3a7d..adcdbd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,22 +37,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "airdrop-token-vesting" -version = "0.2.0" -dependencies = [ - "anyhow", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw20", - "schemars", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "anstream" version = "0.6.13" @@ -248,9 +232,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.3" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "bytecheck" @@ -288,9 +272,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" [[package]] name = "cfg-if" @@ -300,9 +284,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" dependencies = [ "clap_builder", "clap_derive", @@ -310,9 +294,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", @@ -385,6 +369,22 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +[[package]] +name = "core-token-vesting-v2" +version = "2.0.0" +dependencies = [ + "anyhow", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus", + "cw-utils", + "cw20", + "schemars", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "corosensei" version = "0.1.4" diff --git a/README.md b/README.md index 5c2bbd1..860fc14 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Smart contract sandbox for Nibiru Chain. └── 📂 core-shifter # Calls peg shift and depth shift in x/perp. └── 📂 core-controller # Calls other admin calls from Nibiru foundation. └── 📂 core-token-vesting # Token linear vesting contracts with optional cliffs. - └── 📂 airdrop-token-vesting # Token linear vesting contracts with optional cliffs but handled for airdrop. + └── 📂 core-token-vesting-v2 # Improved version of core-token-vesting-v2. ├── 📂 nibiru-std # Nibiru Chain standard library for smart contracts └── 📦 proto # Types and traits for QueryRequest::Stargate and CosmosMsg::Stargate └── # Includes constructors for Cosmos, IBC, and Nibiru. @@ -38,4 +38,4 @@ cargo install just You can view the list of available development commands with `just -ls`. -Ref: [github.com/casey/just](https://github.com/casey/just) \ No newline at end of file +Ref: [github.com/casey/just](https://github.com/casey/just) diff --git a/artifacts/airdrop_token_vesting.wasm b/artifacts/airdrop_token_vesting.wasm deleted file mode 100644 index 9a25708acc9919743010bb29c82132e8db53f54a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215819 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