Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: added fee payer #6

Open
wants to merge 4 commits into
base: neutron_audit_informal_17_01_2023
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
305 changes: 167 additions & 138 deletions Cargo.lock

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions artifacts/checksums.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
c7ed506092e89eefca6e293e8ed7d35b1f58f094381d0d2257fcdbcb45dfeb91 ibc_transfer.wasm
c7a43bce3c73e1d3a555e86c1fe9f284ea8eeb37373745c356ae0ba10465b6c8 neutron_interchain_queries.wasm
a54bb822ce4b9c5350646df16372e57f43ce3ed80fdd6aa8a2df6146f3eb7461 neutron_interchain_txs.wasm
0c2f7fb79d7986545536664576167271d85a3411e7c19ab553219312ddcca479 neutron_validators_test.wasm
072f3c7f5c7f27b03b949cf2a3fc2558de857ec8b3fc3a9a60d5f0ea3bc58851 reflect.wasm
d59f9fa151dc333edb03afe407a9d9258c7c6df68724f841b2877a1d4b5f714d ibc_transfer.wasm
2b5b6101963f17e084c6a2b1d8d96b1133e9d8f68df43232065cacd708a2009e neutron_interchain_queries.wasm
8534860b2b707c121c65d462443e5ebdf80d8904c528ff0e32bd07f31778b0ed neutron_interchain_txs.wasm
0422af1b009c36d027e86601d84b519755bac778bc17d28a904d9cc2cb1abe9d neutron_validators_test.wasm
25e55f7347773093836d57fbfd11bb3fde18726cc46f575db7efe3e55a419b95 reflect.wasm
10 changes: 5 additions & 5 deletions artifacts/checksums_intermediate.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
e03020e1c1c0bf4bfcbde395f359ee50f6f837842044c2c812434202a0fc7c6c target/wasm32-unknown-unknown/release/ibc_transfer.wasm
04e9ca02f3caa5eec0bf91731477aec315a3e14b065da56b2248b661769e620e target/wasm32-unknown-unknown/release/neutron_interchain_queries.wasm
49aec477b48a9e23b5ae787c8cc93337bfe54571e45eae89fd1074ad135fe470 target/wasm32-unknown-unknown/release/neutron_interchain_txs.wasm
0cc3a704c7f4b1fb1bd8d0221e67757f6e5043cf0ac6fbe811ed00626096d44f target/wasm32-unknown-unknown/release/neutron_validators_test.wasm
96ad7090b712befc6e9eca4542f5d5623714df6898eb17a4f0ce04341ec7a72e target/wasm32-unknown-unknown/release/reflect.wasm
2a78cb8af7d2c36027a72007df367eb22cb3bdc0edec5199bdfd5b27ab4f7b8a target/wasm32-unknown-unknown/release/neutron_interchain_queries.wasm
b62bc010af6b681db419e175a7e37eed95ef543fc971c803348bc0f86e62ae58 target/wasm32-unknown-unknown/release/neutron_interchain_txs.wasm
c65cab156ee66b1aa78fffc7c0f210ecf150e39a325f3916610859899c8ddf6a target/wasm32-unknown-unknown/release/neutron_validators_test.wasm
19e3e9c8707c97437437e21318ff8699b93136836031efee445ca5d8d4615112 target/wasm32-unknown-unknown/release/reflect.wasm
851d60fc6ae22a3e1566d10154f0c261a1eb6d0145d8d3b80c4b1bc44dd2ed15 target/wasm32-unknown-unknown/release/ibc_transfer.wasm
Binary file modified artifacts/ibc_transfer.wasm
Binary file not shown.
Binary file modified artifacts/neutron_interchain_queries.wasm
Binary file not shown.
Binary file modified artifacts/neutron_interchain_txs.wasm
Binary file not shown.
Binary file modified artifacts/neutron_validators_test.wasm
Binary file not shown.
Binary file modified artifacts/reflect.wasm
Binary file not shown.
6 changes: 3 additions & 3 deletions contracts/ibc_transfer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ cw2 = "0.15.1"
schemars = "0.8.10"
serde = { version = "1.0.103", default-features = false, features = ["derive"] }
serde-json-wasm = { version = "0.4.1" }
cw-storage-plus = { version = "0.14.0", features = ["iterator"]}
neutron-sdk = { package = "neutron-sdk", git = "https://github.com/neutron-org/neutron-sdk.git", default-features = false, rev="6e9fa85595e6ec5853bc01e1ac2ade93d8b6526a"}
cw-storage-plus = { version = "1.0.1", features = ["iterator"]}
neutron-sdk = { git = "https://github.com/neutron-org/neutron-sdk.git", rev="e4a3de3349947c0d293943ade883af8d2d0e244e", default-features = false}
protobuf = { version = "3.2.0", features = ["with-bytes"] }

[dev-dependencies]
cosmwasm-schema = { version = "1.0.0", default-features = false }
6 changes: 6 additions & 0 deletions contracts/ibc_transfer/schema/execute_msg.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,12 @@
"denom": {
"type": "string"
},
"payer": {
"type": [
"string",
"null"
]
},
"recv_fee": {
"type": "integer",
"format": "uint128",
Expand Down
14 changes: 13 additions & 1 deletion contracts/ibc_transfer/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ pub enum ExecuteMsg {
ack_fee: u128,
timeout_fee: u128,
denom: String,
payer: Option<String>,
},
/// Used only in integration tests framework to simulate failures.
/// After executing this message, contract will fail, all of this happening
Expand Down Expand Up @@ -93,7 +94,8 @@ pub fn execute(
ack_fee,
timeout_fee,
denom,
} => execute_set_fees(deps, recv_fee, ack_fee, timeout_fee, denom),
payer,
} => execute_set_fees(deps, recv_fee, ack_fee, timeout_fee, denom, payer),
// Used only in integration tests framework to simulate failures.
// After executing this message, contract fail, all of this happening
// in sudo callback handler.
Expand Down Expand Up @@ -183,11 +185,21 @@ fn execute_set_fees(
ack_fee: u128,
timeout_fee: u128,
denom: String,
payer: Option<String>,
) -> StdResult<Response<NeutronMsg>> {
let payer = match payer {
Some(payer) => match deps.api.addr_validate(&payer) {
Ok(addr) => Some(addr),
Err(_) => return Err(StdError::generic_err("Invalid payer address")),
},
None => None,
};

let fee = IbcFee {
recv_fee: get_fee_item(denom.clone(), recv_fee),
ack_fee: get_fee_item(denom.clone(), ack_fee),
timeout_fee: get_fee_item(denom, timeout_fee),
payer,
};

IBC_FEE.save(deps.storage, &fee)?;
Expand Down
4 changes: 2 additions & 2 deletions contracts/neutron_interchain_queries/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ cosmwasm-std = { version = "1.0.0", features = ["staking"] }
cw2 = "0.15.1"
schemars = "0.8.10"
serde = { version = "1.0.103", default-features = false, features = ["derive"] }
neutron-sdk = { package = "neutron-sdk", git = "https://github.com/neutron-org/neutron-sdk.git", default-features = false, rev="6e9fa85595e6ec5853bc01e1ac2ade93d8b6526a"}
neutron-sdk = { package = "neutron-sdk", git = "https://github.com/neutron-org/neutron-sdk.git", default-features = false, rev="e4a3de3349947c0d293943ade883af8d2d0e244e"}
base64 = "0.13.0"
cosmos-sdk-proto = { version = "0.14.0", default-features = false }
cw-storage-plus = { version = "0.14.0", features = ["iterator"]}
cw-storage-plus = { version = "1.0.1", features = ["iterator"]}
prost = "0.11"
serde-json-wasm = "0.4.1"

Expand Down
2 changes: 1 addition & 1 deletion contracts/neutron_interchain_txs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ serde = { version = "1.0.103", default-features = false, features = ["derive"] }
serde-json-wasm = { version = "0.4.1" }
cw-storage-plus = { version = "1.0.1", features = ["iterator"]}
cosmos-sdk-proto = { version = "0.14.0", default-features = false }
neutron-sdk = { package = "neutron-sdk", git = "https://github.com/neutron-org/neutron-sdk.git", default-features = false, rev="6e9fa85595e6ec5853bc01e1ac2ade93d8b6526a"}
neutron-sdk = { git = "https://github.com/neutron-org/neutron-contracts.git", rev="e4a3de3349947c0d293943ade883af8d2d0e244e", default-features = false}
base64 = "0.13.0"
protobuf = { version = "3.2.0", features = ["with-bytes"] }
prost = "0.11"
Expand Down
6 changes: 6 additions & 0 deletions contracts/neutron_interchain_txs/schema/execute_msg.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@
"denom": {
"type": "string"
},
"payer": {
"type": [
"string",
"null"
]
},
"recv_fee": {
"type": "integer",
"format": "uint128",
Expand Down
13 changes: 12 additions & 1 deletion contracts/neutron_interchain_txs/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ pub fn execute(
recv_fee,
ack_fee,
timeout_fee,
} => execute_set_fees(deps, denom, recv_fee, ack_fee, timeout_fee),
payer,
} => execute_set_fees(deps, denom, recv_fee, ack_fee, timeout_fee, payer),
ExecuteMsg::CleanAckResults {} => execute_clean_ack_results(deps),
// Used only in integration tests framework to simulate failures.
// After executing this message, contract fail, all of this happening
Expand Down Expand Up @@ -206,7 +207,16 @@ fn execute_set_fees(
recv_fee: u128,
ack_fee: u128,
timeout_fee: u128,
payer: Option<String>,
) -> StdResult<Response<NeutronMsg>> {
let payer = match payer {
Some(payer) => match deps.api.addr_validate(&payer) {
Ok(addr) => Some(addr),
Err(_) => return Err(StdError::generic_err("Invalid payer address")),
},
None => None,
};

let fees = IbcFee {
recv_fee: vec![CosmosCoin {
denom: denom.clone(),
Expand All @@ -220,6 +230,7 @@ fn execute_set_fees(
denom,
amount: Uint128::from(timeout_fee),
}],
payer,
};
IBC_FEE.save(deps.storage, &fees)?;
Ok(Response::default())
Expand Down
1 change: 1 addition & 0 deletions contracts/neutron_interchain_txs/src/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ pub enum ExecuteMsg {
recv_fee: u128,
ack_fee: u128,
timeout_fee: u128,
payer: Option<String>,
},
Delegate {
interchain_account_id: String,
Expand Down
4 changes: 2 additions & 2 deletions contracts/neutron_validator_test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ cw2 = "0.15.1"
schemars = "0.8.10"
serde = { version = "1.0.103", default-features = false, features = ["derive"] }
serde-json-wasm = { version = "0.4.1" }
cw-storage-plus = { version = "0.14.0", features = ["iterator"]}
cw-storage-plus = { version = "1.0.1", features = ["iterator"]}
cosmos-sdk-proto = { version = "0.14.0", default-features = false }
neutron-sdk = { package = "neutron-sdk", git = "https://github.com/neutron-org/neutron-sdk.git", default-features = false, rev="6e9fa85595e6ec5853bc01e1ac2ade93d8b6526a"}
neutron-sdk = { package = "neutron-sdk", git = "https://github.com/neutron-org/neutron-sdk.git", default-features = false, rev="e4a3de3349947c0d293943ade883af8d2d0e244e"}
base64 = "0.13.0"
protobuf = { version = "3", features = ["with-bytes"] }
prost = "0.11"
Expand Down
1 change: 1 addition & 0 deletions contracts/neutron_validator_test/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ fn execute_set_fees(
recv_fee: get_fee_item(denom.clone(), recv_fee),
ack_fee: get_fee_item(denom.clone(), ack_fee),
timeout_fee: get_fee_item(denom, timeout_fee),
payer: None,
};

IBC_FEE.save(deps.storage, &fee)?;
Expand Down