Update cosmwasm crates to v2 & fix Rust 1.79 build (#76)

Co-authored-by: hu55a1n1 <sufialhussaini@gmail.com>
This commit is contained in:
dusterbloom 2024-07-11 15:31:46 +02:00 committed by GitHub
parent 83441e5089
commit fe06f244ad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 957 additions and 974 deletions

611
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,17 +1,19 @@
[workspace] [workspace]
resolver = "2" resolver = "2"
members = [ "apps/mtcs/enclave", members = [
"apps/mtcs/enclave",
"apps/transfers/enclave",
"core/light-client-proofs/*", "core/light-client-proofs/*",
"core/quartz", "core/quartz",
"cosmwasm/packages/*", "cosmwasm/packages/*",
"utils/*", "utils/*",
] ]
exclude = ["apps/mtcs/contracts/cw-tee-mtcs", "apps/mtcs/enclave", "apps/transfers", "apps/transfers/enclave"] exclude = ["apps/mtcs/contracts/cw-tee-mtcs", "apps/transfers/contracts"]
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
rust-version = "1.71.1" rust-version = "1.74.1"
license = "" license = ""
readme = "README.md" readme = "README.md"
repository = "https://github.com/informalsystems/cycles-quartz" repository = "https://github.com/informalsystems/cycles-quartz"
@ -19,6 +21,7 @@ authors = ["Informal Systems <hello@informal.systems>"]
[workspace.dependencies] [workspace.dependencies]
# external # external
anyhow = { version = "1.0.86", default-features = false }
async-trait = { version = "0.1.79", default-features = false } async-trait = { version = "0.1.79", default-features = false }
bip32 = { version = "0.5.1", default-features = false, features = ["alloc", "secp256k1", "bip39"] } bip32 = { version = "0.5.1", default-features = false, features = ["alloc", "secp256k1", "bip39"] }
clap = { version = "4.1.8", default-features = false, features = ["derive", "std"] } clap = { version = "4.1.8", default-features = false, features = ["derive", "std"] }
@ -32,17 +35,17 @@ hex-literal = { version = "0.4.1", default-features = false }
k256 = { version = "0.13.2", default-features = false, features = ["ecdsa", "alloc"] } k256 = { version = "0.13.2", default-features = false, features = ["ecdsa", "alloc"] }
num-bigint = { version = "0.4.4", default-features = false } num-bigint = { version = "0.4.4", default-features = false }
prost = { version = "0.12.3", default-features = false } prost = { version = "0.12.3", default-features = false }
rand = { version = "0.8.5", default-features = false } rand = { version = "0.8.5", default-features = false, features = ["getrandom"] }
rand_core = { version = "0.6", default-features = false, features = ["std"] } rand_core = { version = "0.6", default-features = false, features = ["std"] }
reqwest = { version = "0.12.2", default-features = false, features = ["json", "rustls-tls"] } reqwest = { version = "0.12.2", default-features = false, features = ["json", "rustls-tls"] }
serde = { version = "1.0.189", default-features = false, features = ["derive"] } serde = { version = "1.0.203", default-features = false, features = ["derive"] }
serde_json = { version = "1.0.94", default-features = false } serde_json = { version = "1.0.94", default-features = false }
serde_with = { version = "3.4.0", default-features = false, features = ["hex", "macros"] } serde_with = { version = "3.4.0", default-features = false, features = ["hex", "macros"] }
sha2 = { version = "0.10.8", default-features = false } sha2 = { version = "0.10.8", default-features = false }
subtle-encoding = { version = "0.5.1", default-features = false, features = ["bech32-preview"] } subtle-encoding = { version = "0.5.1", default-features = false, features = ["bech32-preview"] }
tempfile = { version = "3", default-features = false } tempfile = { version = "3", default-features = false }
thiserror = { version = "1.0.49", default-features = false } thiserror = { version = "1.0.49", default-features = false }
tokio = { version = "1.0", default-features = false, features = ["macros", "rt-multi-thread"] } tokio = { version = "1.38.0", default-features = false, features = ["macros", "rt-multi-thread"] }
tonic = { version = "0.11", default-features = false, features = ["codegen", "prost", "transport"] } tonic = { version = "0.11", default-features = false, features = ["codegen", "prost", "transport"] }
tonic-build = { version = "0.11", default-features = false, features = ["prost", "transport"] } tonic-build = { version = "0.11", default-features = false, features = ["prost", "transport"] }
tracing = { version = "0.1.39", default-features = false } tracing = { version = "0.1.39", default-features = false }
@ -55,9 +58,9 @@ zeroize = { version = "1.7.0", default-features = false }
# cosmos # cosmos
cosmos-sdk-proto = { version = "0.21.1" } cosmos-sdk-proto = { version = "0.21.1" }
cosmrs = { version = "=0.16.0", default-features = false } cosmrs = { version = "=0.16.0", default-features = false }
cosmwasm-schema = { version = "1.4.0", default-features = false } cosmwasm-schema = { version = "2.0.0", default-features = false }
cosmwasm-std = { version = "1.5.2", default-features = false } cosmwasm-std = { version = "2.0.0", default-features = false, features = ["std"] }
cw-storage-plus = { version = "1.1.0", default-features = false } cw-storage-plus = { version = "2.0.0", default-features = false }
ics23 = { version = "0.11.0", default-features = false, features = ["host-functions"] } ics23 = { version = "0.11.0", default-features = false, features = ["host-functions"] }
tendermint = { version = "=0.36.0", default-features = false } tendermint = { version = "=0.36.0", default-features = false }
tendermint-light-client = { version = "=0.36.0", default-features = false, features = ["rust-crypto"] } tendermint-light-client = { version = "=0.36.0", default-features = false, features = ["rust-crypto"] }
@ -76,7 +79,20 @@ cw-tee-mtcs = { path = "apps/mtcs/contracts/cw-tee-mtcs", default-features = fal
cycles-sync = { path = "utils/cycles-sync", default-features = false } cycles-sync = { path = "utils/cycles-sync", default-features = false }
mtcs = { git = "ssh://git@github.com/informalsystems/mtcs.git", default-features = false } mtcs = { git = "ssh://git@github.com/informalsystems/mtcs.git", default-features = false }
quartz-cw = { path = "cosmwasm/packages/quartz-cw", default-features = false } quartz-cw = { path = "cosmwasm/packages/quartz-cw", default-features = false }
quartz-enclave = { path = "core/quartz", default-features = false }
quartz-proto = { path = "core/quartz-proto", default-features = false } quartz-proto = { path = "core/quartz-proto", default-features = false }
quartz-relayer = { path = "relayer", default-features = false } quartz-relayer = { path = "relayer", default-features = false }
quartz-tee-ra = { path = "cosmwasm/packages/quartz-tee-ra", default-features = false } quartz-tee-ra = { path = "cosmwasm/packages/quartz-tee-ra", default-features = false }
tm-stateless-verifier = { path = "core/light-client-proofs/tm-stateless-verifier", default-features = false } tm-stateless-verifier = { path = "core/light-client-proofs/tm-stateless-verifier", default-features = false }
transfers-contract = { path = "apps/transfers/contracts", default-features = false }
[profile.release]
opt-level = 3
debug = false
rpath = false
lto = true
debug-assertions = false
codegen-units = 1
panic = 'abort'
incremental = false
overflow-checks = true

View file

@ -88,6 +88,12 @@ version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445"
[[package]]
name = "bech32"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.5.0" version = "2.5.0"
@ -114,9 +120,9 @@ dependencies = [
[[package]] [[package]]
name = "bnum" name = "bnum"
version = "0.8.1" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f"
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
@ -156,12 +162,11 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]] [[package]]
name = "cosmwasm-crypto" name = "cosmwasm-crypto"
version = "1.5.2" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ed6aa9f904de106fa16443ad14ec2abe75e94ba003bb61c681c0e43d4c58d2a" checksum = "c7a339f6b59ff7ad4ae05a70512a4f3c19bf8fcc845d46bfef90f4ec0810f72c"
dependencies = [ dependencies = [
"digest 0.10.7", "digest 0.10.7",
"ecdsa",
"ed25519-zebra", "ed25519-zebra",
"k256", "k256",
"rand_core 0.6.4", "rand_core 0.6.4",
@ -170,18 +175,18 @@ dependencies = [
[[package]] [[package]]
name = "cosmwasm-derive" name = "cosmwasm-derive"
version = "1.5.5" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "242e98e7a231c122e08f300d9db3262d1007b51758a8732cd6210b3e9faa4f3a" checksum = "7d3bfea6af94a83880fb05478135ed0c256d9a2fcde58c595a10d64dcb9c925d"
dependencies = [ dependencies = [
"syn 1.0.109", "syn 1.0.109",
] ]
[[package]] [[package]]
name = "cosmwasm-schema" name = "cosmwasm-schema"
version = "1.5.5" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7879036156092ad1c22fe0d7316efc5a5eceec2bc3906462a2560215f2a2f929" checksum = "101d0739564bd34cba9b84bf73665f0822487ae3b29b2dd59930608ed3aafd43"
dependencies = [ dependencies = [
"cosmwasm-schema-derive", "cosmwasm-schema-derive",
"schemars", "schemars",
@ -192,9 +197,9 @@ dependencies = [
[[package]] [[package]]
name = "cosmwasm-schema-derive" name = "cosmwasm-schema-derive"
version = "1.5.5" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb57855fbfc83327f8445ae0d413b1a05ac0d68c396ab4d122b2abd7bb82cb6" checksum = "cf4be75f60158478da2c5d319ed59295bca1687ad50c18215a0485aa91a995ea"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -203,12 +208,12 @@ dependencies = [
[[package]] [[package]]
name = "cosmwasm-std" name = "cosmwasm-std"
version = "1.5.2" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad011ae7447188e26e4a7dbca2fcd0fc186aa21ae5c86df0503ea44c78f9e469" checksum = "ded932165de44cd0717979c34fc3b84d8e8066b8dde4f5bd78f96a643b090f90"
dependencies = [ dependencies = [
"base64", "base64",
"bech32", "bech32 0.9.1",
"bnum", "bnum",
"cosmwasm-crypto", "cosmwasm-crypto",
"cosmwasm-derive", "cosmwasm-derive",
@ -269,16 +274,17 @@ dependencies = [
[[package]] [[package]]
name = "cw-multi-test" name = "cw-multi-test"
version = "0.17.0" version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d818f5323c80ed4890db7f89d65eda3f0261fe21878e628c27ea2d8de4b7ba4" checksum = "e403ad6ec62c8bcbcb75f7f4940712d0142b6103310da2a9375252b942358caa"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bech32 0.11.0",
"cosmwasm-std", "cosmwasm-std",
"cw-storage-plus", "cw-storage-plus",
"cw-utils", "cw-utils",
"derivative", "derivative",
"itertools 0.11.0", "itertools",
"prost", "prost",
"schemars", "schemars",
"serde", "serde",
@ -288,9 +294,9 @@ dependencies = [
[[package]] [[package]]
name = "cw-storage-plus" name = "cw-storage-plus"
version = "1.2.0" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" checksum = "f13360e9007f51998d42b1bc6b7fa0141f74feae61ed5fd1e5b0a89eec7b5de1"
dependencies = [ dependencies = [
"cosmwasm-std", "cosmwasm-std",
"schemars", "schemars",
@ -313,7 +319,6 @@ dependencies = [
"k256", "k256",
"quartz-cw", "quartz-cw",
"schemars", "schemars",
"serde",
"serde_json", "serde_json",
"sha2 0.10.8", "sha2 0.10.8",
"thiserror", "thiserror",
@ -321,24 +326,22 @@ dependencies = [
[[package]] [[package]]
name = "cw-utils" name = "cw-utils"
version = "1.0.3" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" checksum = "07dfee7f12f802431a856984a32bce1cb7da1e6c006b5409e3981035ce562dec"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
"cw2",
"schemars", "schemars",
"semver",
"serde", "serde",
"thiserror", "thiserror",
] ]
[[package]] [[package]]
name = "cw2" name = "cw2"
version = "1.1.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" checksum = "b04852cd38f044c0751259d5f78255d07590d136b8a86d4e09efdd7666bd6d27"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
@ -351,9 +354,9 @@ dependencies = [
[[package]] [[package]]
name = "cw20" name = "cw20"
version = "1.1.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "526e39bb20534e25a1cd0386727f0038f4da294e5e535729ba3ef54055246abd" checksum = "a42212b6bf29bbdda693743697c621894723f35d3db0d5df930be22903d0e27c"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
@ -364,9 +367,9 @@ dependencies = [
[[package]] [[package]]
name = "cw20-base" name = "cw20-base"
version = "1.1.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17ad79e86ea3707229bf78df94e08732e8f713207b4a77b2699755596725e7d9" checksum = "d6de8c32e100f1fca306972d86b617234a5e6b00594ea2b48716fd6804d4d95d"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
@ -672,15 +675,6 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "itertools"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
dependencies = [
"either",
]
[[package]] [[package]]
name = "itertools" name = "itertools"
version = "0.12.1" version = "0.12.1"
@ -963,7 +957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"itertools 0.12.1", "itertools",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.66",
@ -1126,9 +1120,9 @@ dependencies = [
[[package]] [[package]]
name = "serde-json-wasm" name = "serde-json-wasm"
version = "0.5.2" version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e9213a07d53faa0b8dd81e767a54a8188a242fdb9be99ab75ec576a774bfdd7" checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5"
dependencies = [ dependencies = [
"serde", "serde",
] ]

View file

@ -2,7 +2,7 @@
name = "cw-tee-mtcs" name = "cw-tee-mtcs"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
authors = ["Informal Systems <hello@informal.systems>"]
exclude = ["contract.wasm", "hash.txt"] exclude = ["contract.wasm", "hash.txt"]
[lib] [lib]
@ -19,31 +19,29 @@ panic = 'abort'
incremental = false incremental = false
overflow-checks = true overflow-checks = true
[features]
backtraces = ["cosmwasm-std/backtraces"]
[dependencies] [dependencies]
# external # external
getrandom = { version = "0.2", features = ["js"] }
hex = { version = "0.4.3", default-features = false } hex = { version = "0.4.3", default-features = false }
k256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] } k256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] }
schemars = "0.8.15" schemars = "0.8.15"
serde = { version = "1.0.189", default-features = false, features = ["derive"] }
sha2 = "0.10.8" sha2 = "0.10.8"
serde_json = "1.0.117" serde_json = "1.0.117"
thiserror = { version = "1.0.49" } thiserror = { version = "1.0.49" }
# cosmwasm # cosmwasm
cosmwasm-schema = "1.5.0" cosmwasm-schema = { version = "2.0.0", default-features = false }
cosmwasm-std = { version = "1.5.0", features = ["cosmwasm_1_3"] } cosmwasm-std = { version = "2.0.0", default-features = false, features = ["std"] }
cw-storage-plus = "1.1.0" cw-storage-plus = { version = "2.0.0", default-features = false }
cw20-base = { version = "1.1.1", features = ["library"] } cw20-base = { version = "2.0.0", features = ["library"] }
cw20 = "1.1.1" cw20 = "2.0.0"
cw2 = "1.1.1" cw2 = "2.0.0"
# quartz # quartz
quartz-cw = { path = "../../../../cosmwasm/packages/quartz-cw" } quartz-cw = { path = "../../../../cosmwasm/packages/quartz-cw" }
# patch indirect deps
getrandom = { version = "0.2.15", features = ["js"] }
[dev-dependencies] [dev-dependencies]
cw-multi-test = "0.17.0" cw-multi-test = "2.0.0"
serde_json = "1.0.113" serde_json = "1.0.113"

View file

@ -1,6 +1,6 @@
use cosmwasm_std::{ use cosmwasm_std::{
entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult,
Uint128, Uint128, Uint64,
}; };
use cw2::set_contract_version; use cw2::set_contract_version;
use cw20_base::{ use cw20_base::{
@ -44,12 +44,13 @@ pub fn instantiate(
set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?;
STATE.save(deps.storage, &state)?; STATE.save(deps.storage, &state)?;
EPOCH_COUNTER.save(deps.storage, &1)?; let epoch_counter = Uint64::new(1);
EPOCH_COUNTER.save(deps.storage, &epoch_counter)?;
ObligationsItem::new(&current_epoch_key(OBLIGATIONS_KEY, deps.storage)?) ObligationsItem::new_dyn(current_epoch_key(OBLIGATIONS_KEY, deps.storage)?)
.save(deps.storage, &Default::default())?; .save(deps.storage, &Default::default())?;
LiquiditySourcesItem::new(&current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?) LiquiditySourcesItem::new_dyn(current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?)
.save(deps.storage, &Default::default())?; .save(deps.storage, &Default::default())?;
// store token info using cw20-base format // store token info using cw20-base format
@ -116,7 +117,7 @@ pub fn execute(
pub mod execute { pub mod execute {
use std::collections::BTreeMap; use std::collections::BTreeMap;
use cosmwasm_std::{DepsMut, Env, HexBinary, MessageInfo, Response, StdResult}; use cosmwasm_std::{DepsMut, Env, HexBinary, MessageInfo, Response, StdResult, Uint64};
use cw20_base::contract::{execute_burn, execute_mint}; use cw20_base::contract::{execute_burn, execute_mint};
use k256::ecdsa::VerifyingKey; use k256::ecdsa::VerifyingKey;
use quartz_cw::state::{Hash, EPOCH_COUNTER}; use quartz_cw::state::{Hash, EPOCH_COUNTER};
@ -159,7 +160,7 @@ pub mod execute {
let _: Hash = digest.to_array()?; let _: Hash = digest.to_array()?;
// store the `(digest, ciphertext)` tuple // store the `(digest, ciphertext)` tuple
ObligationsItem::new(&current_epoch_key(OBLIGATIONS_KEY, deps.storage)?).update( ObligationsItem::new_dyn(current_epoch_key(OBLIGATIONS_KEY, deps.storage)?).update(
deps.storage, deps.storage,
|mut obligations| { |mut obligations| {
if let Some(_duplicate) = obligations.insert(digest.clone(), ciphertext.clone()) { if let Some(_duplicate) = obligations.insert(digest.clone(), ciphertext.clone()) {
@ -185,7 +186,7 @@ pub mod execute {
.try_for_each(|ls| VerifyingKey::from_sec1_bytes(ls).map(|_| ()))?; .try_for_each(|ls| VerifyingKey::from_sec1_bytes(ls).map(|_| ()))?;
// store the liquidity sources // store the liquidity sources
LiquiditySourcesItem::new(&current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?) LiquiditySourcesItem::new_dyn(current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?)
.update(deps.storage, |mut ls| { .update(deps.storage, |mut ls| {
ls.clear(); ls.clear();
ls.extend(liquidity_sources); ls.extend(liquidity_sources);
@ -201,7 +202,7 @@ pub mod execute {
setoffs_enc: BTreeMap<RawHash, SettleOff>, setoffs_enc: BTreeMap<RawHash, SettleOff>,
) -> Result<Response, ContractError> { ) -> Result<Response, ContractError> {
// store the `BTreeMap<RawHash, RawCipherText>` // store the `BTreeMap<RawHash, RawCipherText>`
SetoffsItem::new(&previous_epoch_key(SETOFFS_KEY, deps.storage)?) SetoffsItem::new_dyn(previous_epoch_key(SETOFFS_KEY, deps.storage)?)
.save(deps.storage, &setoffs_enc)?; .save(deps.storage, &setoffs_enc)?;
for (_, so) in setoffs_enc { for (_, so) in setoffs_enc {
@ -234,7 +235,7 @@ pub mod execute {
pub fn init_clearing(deps: DepsMut) -> Result<Response, ContractError> { pub fn init_clearing(deps: DepsMut) -> Result<Response, ContractError> {
EPOCH_COUNTER.update(deps.storage, |mut counter| -> StdResult<_> { EPOCH_COUNTER.update(deps.storage, |mut counter| -> StdResult<_> {
counter += 1; counter = counter.saturating_add(Uint64::from(1u64));
Ok(counter) Ok(counter)
})?; })?;
Ok(Response::new().add_attribute("action", "init_clearing")) Ok(Response::new().add_attribute("action", "init_clearing"))
@ -253,7 +254,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult<Binary> {
} }
pub mod query { pub mod query {
use cosmwasm_std::{Deps, StdResult}; use cosmwasm_std::{Deps, StdResult, Uint64};
use crate::{ use crate::{
msg::{GetAllSetoffsResponse, GetLiquiditySourcesResponse}, msg::{GetAllSetoffsResponse, GetLiquiditySourcesResponse},
@ -264,7 +265,7 @@ pub mod query {
}; };
pub fn get_all_setoffs(deps: Deps) -> StdResult<GetAllSetoffsResponse> { pub fn get_all_setoffs(deps: Deps) -> StdResult<GetAllSetoffsResponse> {
let setoffs = SetoffsItem::new(&previous_epoch_key(SETOFFS_KEY, deps.storage)?) let setoffs = SetoffsItem::new_dyn(previous_epoch_key(SETOFFS_KEY, deps.storage)?)
.load(deps.storage)? .load(deps.storage)?
.into_iter() .into_iter()
.collect(); .collect();
@ -273,14 +274,14 @@ pub mod query {
pub fn get_liquidity_sources( pub fn get_liquidity_sources(
deps: Deps, deps: Deps,
epoch: Option<usize>, epoch: Option<Uint64>,
) -> StdResult<GetLiquiditySourcesResponse> { ) -> StdResult<GetLiquiditySourcesResponse> {
let epoch_key = match epoch { let epoch_key = match epoch {
None => current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?, None => current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?,
Some(e) => epoch_key(LIQUIDITY_SOURCES_KEY, e)?, Some(e) => epoch_key(LIQUIDITY_SOURCES_KEY, e)?,
}; };
let liquidity_sources = LiquiditySourcesItem::new(&epoch_key) let liquidity_sources = LiquiditySourcesItem::new_dyn(epoch_key)
.load(deps.storage)? .load(deps.storage)?
.into_iter() .into_iter()
.collect(); .collect();

View file

@ -1,7 +1,7 @@
use std::collections::BTreeMap; use std::collections::BTreeMap;
use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::HexBinary; use cosmwasm_std::{HexBinary, Uint64};
use quartz_cw::{ use quartz_cw::{
msg::execute::attested::{RawAttested, RawAttestedMsgSansHandler, RawEpidAttestation}, msg::execute::attested::{RawAttested, RawAttestedMsgSansHandler, RawEpidAttestation},
prelude::*, prelude::*,
@ -96,7 +96,7 @@ pub enum QueryMsg {
#[returns(GetAllSetoffsResponse)] #[returns(GetAllSetoffsResponse)]
GetAllSetoffs, GetAllSetoffs,
#[returns(GetLiquiditySourcesResponse)] #[returns(GetLiquiditySourcesResponse)]
GetLiquiditySources { epoch: Option<usize> }, // `None` means latest GetLiquiditySources { epoch: Option<Uint64> }, // `None` means latest
#[returns(cw20::BalanceResponse)] #[returns(cw20::BalanceResponse)]
Balance { address: String }, Balance { address: String },
} }

View file

@ -1,16 +1,16 @@
use std::collections::{BTreeMap, BTreeSet}; use std::collections::{BTreeMap, BTreeSet};
use cosmwasm_schema::cw_serde; use cosmwasm_schema::cw_serde;
use cosmwasm_std::{HexBinary, StdError, Storage}; use cosmwasm_std::{HexBinary, StdError, Storage, Uint64};
use cw_storage_plus::Item; use cw_storage_plus::Item;
use quartz_cw::state::EPOCH_COUNTER; use quartz_cw::state::EPOCH_COUNTER;
pub type RawHash = HexBinary; pub type RawHash = HexBinary;
pub type RawCipherText = HexBinary; pub type RawCipherText = HexBinary;
pub type ObligationsItem<'a> = Item<'a, BTreeMap<RawHash, RawCipherText>>; pub type ObligationsItem = Item<BTreeMap<RawHash, RawCipherText>>;
pub type SetoffsItem<'a> = Item<'a, BTreeMap<RawHash, SettleOff>>; pub type SetoffsItem = Item<BTreeMap<RawHash, SettleOff>>;
pub type LiquiditySourcesItem<'a> = Item<'a, BTreeSet<HexBinary>>; pub type LiquiditySourcesItem = Item<BTreeSet<HexBinary>>;
#[cw_serde] #[cw_serde]
pub struct State { pub struct State {
@ -37,13 +37,20 @@ pub const SETOFFS_KEY: &str = "setoffs";
pub const LIQUIDITY_SOURCES_KEY: &str = "liquidity_sources"; pub const LIQUIDITY_SOURCES_KEY: &str = "liquidity_sources";
pub fn current_epoch_key(key: &str, storage: &dyn Storage) -> Result<String, StdError> { pub fn current_epoch_key(key: &str, storage: &dyn Storage) -> Result<String, StdError> {
epoch_key(key, EPOCH_COUNTER.load(storage)?) let epoch = EPOCH_COUNTER.load(storage)?;
epoch_key(key, epoch.into())
} }
pub fn previous_epoch_key(key: &str, storage: &dyn Storage) -> Result<String, StdError> { pub fn previous_epoch_key(key: &str, storage: &dyn Storage) -> Result<String, StdError> {
epoch_key(key, EPOCH_COUNTER.load(storage)? - 1) let epoch = EPOCH_COUNTER.load(storage)?;
if epoch == Uint64::zero() {
return Err(StdError::generic_err(
"Cannot get previous epoch for epoch 0",
));
}
epoch_key(key, epoch - Uint64::new(1))
} }
pub fn epoch_key(key: &str, epoch: usize) -> Result<String, StdError> { pub fn epoch_key(key: &str, epoch: Uint64) -> Result<String, StdError> {
Ok(format!("{}/{key}", epoch)) Ok(format!("{}/{}", epoch, key))
} }

View file

@ -1,52 +1,36 @@
[package] [package]
name = "enclave" name = "quartz-app-mtcs-enclave"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
authors = ["Informal Systems <hello@informal.systems>"]
[profile.release]
opt-level = 3
debug = false
rpath = false
lto = true
debug-assertions = false
codegen-units = 1
panic = 'abort'
incremental = false
overflow-checks = true
[dependencies] [dependencies]
# external # external
hex = { version = "0.4.3", default-features = false } clap.workspace = true
k256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] } color-eyre.workspace = true
schemars = "0.8.15" ecies.workspace = true
serde = { version = "1.0.189", default-features = false, features = ["derive"] } hex.workspace = true
thiserror = { version = "1.0.49" } k256.workspace = true
tonic = { version = "0.11.0"} prost.workspace = true
tonic-build = "0.11.0" serde.workspace = true
cosmrs = { version = "0.16.0"} serde_json.workspace = true
cosmwasm-std = { version = "1.5.2", default-features = false } thiserror.workspace = true
serde_json = { version = "1.0.94", default-features = false } tokio.workspace = true
ecies = { version = "0.2.3", default-features = false, features = ["pure"] } tonic.workspace = true
clap = { version = "4.1.8", default-features = false, features = ["derive", "std"] }
tokio = { version = "1.0", default-features = false, features = ["macros", "rt-multi-thread"] }
tendermint = { version = "=0.36.0", default-features = false }
tendermint-light-client = { version = "=0.36.0", default-features = false, features = ["rust-crypto"] }
color-eyre = { version = "0.6.2", default-features = false }
prost = { version = "0.12.3", default-features = false }
# local # cosmos
cosmrs.workspace = true
cosmwasm-std.workspace = true
tendermint.workspace = true
tendermint-light-client.workspace = true
# quartz
cw-tee-mtcs.workspace = true cw-tee-mtcs.workspace = true
cycles-sync.workspace = true cycles-sync.workspace = true
mtcs.workspace = true mtcs.workspace = true
quartz-cw.workspace = true
# quartz quartz-proto.workspace = true
quartz-cw = { path = "../../../cosmwasm/packages/quartz-cw" } quartz-enclave.workspace = true
quartz-proto = { path = "../../../core/quartz-proto" }
quartz-enclave = { path = "../../../core/quartz"}
[dev-dependencies]
cw-multi-test = "0.17.0"
serde_json = "1.0.113"
[build-dependencies] [build-dependencies]
tonic-build.workspace = true tonic-build.workspace = true

View file

@ -2,4 +2,3 @@
wasm = "build --target wasm32-unknown-unknown --release --lib" wasm = "build --target wasm32-unknown-unknown --release --lib"
wasm-debug = "build --target wasm32-unknown-unknown --lib" wasm-debug = "build --target wasm32-unknown-unknown --lib"
schema = "run schema" schema = "run schema"

View file

@ -37,7 +37,7 @@ checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
"synstructure", "synstructure",
] ]
@ -49,7 +49,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -84,9 +84,9 @@ checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.5.0" version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
@ -108,9 +108,15 @@ dependencies = [
[[package]] [[package]]
name = "bnum" name = "bnum"
version = "0.8.1" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab9008b6bb9fc80b5277f2fe481c09e828743d9151203e804583eb4c9e15b31d" checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f"
[[package]]
name = "bumpalo"
version = "3.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]] [[package]]
name = "byteorder" name = "byteorder"
@ -138,12 +144,11 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]] [[package]]
name = "cosmwasm-crypto" name = "cosmwasm-crypto"
version = "1.5.2" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ed6aa9f904de106fa16443ad14ec2abe75e94ba003bb61c681c0e43d4c58d2a" checksum = "c7a339f6b59ff7ad4ae05a70512a4f3c19bf8fcc845d46bfef90f4ec0810f72c"
dependencies = [ dependencies = [
"digest 0.10.7", "digest 0.10.7",
"ecdsa",
"ed25519-zebra", "ed25519-zebra",
"k256", "k256",
"rand_core 0.6.4", "rand_core 0.6.4",
@ -152,18 +157,18 @@ dependencies = [
[[package]] [[package]]
name = "cosmwasm-derive" name = "cosmwasm-derive"
version = "1.5.5" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "242e98e7a231c122e08f300d9db3262d1007b51758a8732cd6210b3e9faa4f3a" checksum = "7d3bfea6af94a83880fb05478135ed0c256d9a2fcde58c595a10d64dcb9c925d"
dependencies = [ dependencies = [
"syn 1.0.109", "syn 1.0.109",
] ]
[[package]] [[package]]
name = "cosmwasm-schema" name = "cosmwasm-schema"
version = "1.5.5" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7879036156092ad1c22fe0d7316efc5a5eceec2bc3906462a2560215f2a2f929" checksum = "101d0739564bd34cba9b84bf73665f0822487ae3b29b2dd59930608ed3aafd43"
dependencies = [ dependencies = [
"cosmwasm-schema-derive", "cosmwasm-schema-derive",
"schemars", "schemars",
@ -174,9 +179,9 @@ dependencies = [
[[package]] [[package]]
name = "cosmwasm-schema-derive" name = "cosmwasm-schema-derive"
version = "1.5.5" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb57855fbfc83327f8445ae0d413b1a05ac0d68c396ab4d122b2abd7bb82cb6" checksum = "cf4be75f60158478da2c5d319ed59295bca1687ad50c18215a0485aa91a995ea"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -185,9 +190,9 @@ dependencies = [
[[package]] [[package]]
name = "cosmwasm-std" name = "cosmwasm-std"
version = "1.5.2" version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad011ae7447188e26e4a7dbca2fcd0fc186aa21ae5c86df0503ea44c78f9e469" checksum = "ded932165de44cd0717979c34fc3b84d8e8066b8dde4f5bd78f96a643b090f90"
dependencies = [ dependencies = [
"base64", "base64",
"bech32", "bech32",
@ -251,9 +256,9 @@ dependencies = [
[[package]] [[package]]
name = "cw-storage-plus" name = "cw-storage-plus"
version = "1.2.0" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" checksum = "f13360e9007f51998d42b1bc6b7fa0141f74feae61ed5fd1e5b0a89eec7b5de1"
dependencies = [ dependencies = [
"cosmwasm-std", "cosmwasm-std",
"schemars", "schemars",
@ -262,24 +267,22 @@ dependencies = [
[[package]] [[package]]
name = "cw-utils" name = "cw-utils"
version = "1.0.3" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" checksum = "07dfee7f12f802431a856984a32bce1cb7da1e6c006b5409e3981035ce562dec"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
"cw2",
"schemars", "schemars",
"semver",
"serde", "serde",
"thiserror", "thiserror",
] ]
[[package]] [[package]]
name = "cw2" name = "cw2"
version = "1.1.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" checksum = "b04852cd38f044c0751259d5f78255d07590d136b8a86d4e09efdd7666bd6d27"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
@ -292,9 +295,9 @@ dependencies = [
[[package]] [[package]]
name = "cw20" name = "cw20"
version = "1.1.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "526e39bb20534e25a1cd0386727f0038f4da294e5e535729ba3ef54055246abd" checksum = "a42212b6bf29bbdda693743697c621894723f35d3db0d5df930be22903d0e27c"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
@ -305,9 +308,9 @@ dependencies = [
[[package]] [[package]]
name = "cw20-base" name = "cw20-base"
version = "1.1.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17ad79e86ea3707229bf78df94e08732e8f713207b4a77b2699755596725e7d9" checksum = "d6de8c32e100f1fca306972d86b617234a5e6b00594ea2b48716fd6804d4d95d"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
"cosmwasm-std", "cosmwasm-std",
@ -341,7 +344,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"strsim", "strsim",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -352,7 +355,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178"
dependencies = [ dependencies = [
"darling_core", "darling_core",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -396,7 +399,7 @@ checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -442,13 +445,13 @@ dependencies = [
[[package]] [[package]]
name = "displaydoc" name = "displaydoc"
version = "0.2.4" version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -551,8 +554,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"js-sys",
"libc", "libc",
"wasi", "wasi",
"wasm-bindgen",
] ]
[[package]] [[package]]
@ -611,6 +616,15 @@ version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
name = "js-sys"
version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
dependencies = [
"wasm-bindgen",
]
[[package]] [[package]]
name = "k256" name = "k256"
version = "0.13.3" version = "0.13.3"
@ -637,6 +651,12 @@ version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "log"
version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]] [[package]]
name = "mc-attestation-verifier" name = "mc-attestation-verifier"
version = "0.4.3" version = "0.4.3"
@ -738,9 +758,9 @@ dependencies = [
[[package]] [[package]]
name = "num-bigint" name = "num-bigint"
version = "0.4.5" version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
dependencies = [ dependencies = [
"num-integer", "num-integer",
"num-traits", "num-traits",
@ -839,9 +859,9 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.85" version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@ -969,7 +989,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"serde_derive_internals", "serde_derive_internals",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -1003,9 +1023,9 @@ dependencies = [
[[package]] [[package]]
name = "serde-json-wasm" name = "serde-json-wasm"
version = "0.5.2" version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e9213a07d53faa0b8dd81e767a54a8188a242fdb9be99ab75ec576a774bfdd7" checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5"
dependencies = [ dependencies = [
"serde", "serde",
] ]
@ -1018,7 +1038,7 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -1029,14 +1049,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.117" version = "1.0.120"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -1045,9 +1065,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_with" name = "serde_with"
version = "3.8.1" version = "3.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" checksum = "e73139bc5ec2d45e6c5fd85be5a46949c1c39a4c18e56915f5eb4c12f975e377"
dependencies = [ dependencies = [
"serde", "serde",
"serde_derive", "serde_derive",
@ -1056,14 +1076,14 @@ dependencies = [
[[package]] [[package]]
name = "serde_with_macros" name = "serde_with_macros"
version = "3.8.1" version = "3.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" checksum = "b80d3d6b56b64335c0180e5ffde23b3c5e08c14c585b51a15bd0e95393f46703"
dependencies = [ dependencies = [
"darling", "darling",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -1130,9 +1150,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]] [[package]]
name = "subtle" name = "subtle"
version = "2.5.0" version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]] [[package]]
name = "syn" name = "syn"
@ -1147,9 +1167,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.66" version = "2.0.68"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1164,7 +1184,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -1184,7 +1204,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.66", "syn 2.0.68",
] ]
[[package]] [[package]]
@ -1219,7 +1239,7 @@ dependencies = [
] ]
[[package]] [[package]]
name = "transfers_contracts" name = "transfers-contract"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"cosmwasm-schema", "cosmwasm-schema",
@ -1228,6 +1248,7 @@ dependencies = [
"cw-utils", "cw-utils",
"cw2", "cw2",
"cw20-base", "cw20-base",
"getrandom",
"quartz-cw", "quartz-cw",
"serde_json", "serde_json",
"sha2 0.10.8", "sha2 0.10.8",
@ -1264,6 +1285,60 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
dependencies = [
"bumpalo",
"log",
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.68",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.68",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.52.0" version = "0.52.0"
@ -1275,9 +1350,9 @@ dependencies = [
[[package]] [[package]]
name = "windows-targets" name = "windows-targets"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [ dependencies = [
"windows_aarch64_gnullvm", "windows_aarch64_gnullvm",
"windows_aarch64_msvc", "windows_aarch64_msvc",
@ -1291,51 +1366,51 @@ dependencies = [
[[package]] [[package]]
name = "windows_aarch64_gnullvm" name = "windows_aarch64_gnullvm"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]] [[package]]
name = "windows_i686_gnullvm" name = "windows_i686_gnullvm"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]] [[package]]
name = "windows_x86_64_gnullvm" name = "windows_x86_64_gnullvm"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
version = "0.52.5" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]] [[package]]
name = "x509-cert" name = "x509-cert"

View file

@ -1,15 +1,14 @@
[package] [package]
name = "transfers_contracts" name = "transfers-contract"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
authors = ["Informal Systems <hello@informal.systems>"]
exclude = ["contract.wasm", "hash.txt"] exclude = ["contract.wasm", "hash.txt"]
[[bin]] [[bin]]
name = "schema" name = "schema"
path = "bin/schema.rs" path = "bin/schema.rs"
[lib] [lib]
crate-type = ["cdylib", "rlib"] crate-type = ["cdylib", "rlib"]
@ -24,9 +23,6 @@ panic = 'abort'
incremental = false incremental = false
overflow-checks = true overflow-checks = true
[features]
backtraces = ["cosmwasm-std/backtraces"]
[dependencies] [dependencies]
# external # external
sha2 = "0.10.8" sha2 = "0.10.8"
@ -34,12 +30,15 @@ serde_json = "1.0.117"
thiserror = { version = "1.0.49" } thiserror = { version = "1.0.49" }
# cosmwasm # cosmwasm
cosmwasm-schema = "1.5.0" cosmwasm-schema = { version = "2.0.0", default-features = false }
cosmwasm-std = { version = "1.5.0", features = ["cosmwasm_1_3"] } cosmwasm-std = { version = "2.0.0", default-features = false, features = ["std"] }
cw-storage-plus = "1.1.0" cw-storage-plus = { version = "2.0.0", default-features = false }
cw-utils = "1.0.3" cw-utils = "2.0.0"
cw2 = "1.1.1" cw20-base = { version = "2.0.0", features = ["library"] }
cw20-base = { version = "1.1.1", features = ["library"] } cw2 = "2.0.0"
# quartz # quartz
quartz-cw = { path = "../../../cosmwasm/packages/quartz-cw" } quartz-cw = { path = "../../../cosmwasm/packages/quartz-cw" }
# patch indirect deps
getrandom = { version = "0.2.15", features = ["js"] }

File diff suppressed because it is too large Load diff

View file

@ -1,56 +1,41 @@
[package] [package]
name = "enclave" name = "quartz-app-transfers-enclave"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
authors = ["Informal Systems <hello@informal.systems>"]
[profile.release] autobins = false
opt-level = 3
debug = false
rpath = false
lto = true
debug-assertions = false
codegen-units = 1
panic = 'abort'
incremental = false
overflow-checks = true
[[bin]] [[bin]]
name = "encrypt" name = "encrypt"
path = "bin/encrypt.rs" path = "bin/encrypt.rs"
[dependencies] [dependencies]
# external # external
hex = { version = "0.4.3", default-features = false } anyhow.workspace = true
k256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] } clap.workspace = true
schemars = "0.8.15" color-eyre.workspace = true
serde = { version = "1.0.189", default-features = false, features = ["derive"] } ecies.workspace = true
thiserror = { version = "1.0.49" } hex.workspace = true
tonic = { version = "0.11.0"} k256.workspace = true
cosmrs = { version = "0.16.0"} prost.workspace = true
cosmwasm-std = { version = "1.5.2", default-features = false } serde.workspace = true
serde_json = { version = "1.0.94", default-features = false } serde_json.workspace = true
ecies = { version = "0.2.3", default-features = false, features = ["pure"] } thiserror.workspace = true
clap = { version = "4.1.8", default-features = false, features = ["derive", "std"] } tokio.workspace = true
tokio = { version = "1.0", default-features = false, features = ["macros", "rt-multi-thread"] } tonic.workspace = true
tendermint = { version = "=0.36.0", default-features = false }
tendermint-light-client = { version = "=0.36.0", default-features = false, features = ["rust-crypto"] }
color-eyre = { version = "0.6.2", default-features = false }
prost = { version = "0.12.3", default-features = false }
anyhow ={ version = "*" }
sha2 = "0.10.8"
# local # cosmos
transfers_contracts = { path = "../contracts" } cosmrs.workspace = true
cosmwasm-std.workspace = true
tendermint.workspace = true
tendermint-light-client.workspace = true
# quartz # quartz
quartz-cw = { path = "../../../cosmwasm/packages/quartz-cw" } cycles-sync.workspace = true
quartz-proto = { path = "../../../core/quartz-proto" } quartz-cw.workspace = true
quartz-enclave = { path = "../../../core/quartz"} quartz-proto.workspace = true
quartz-enclave.workspace = true
[dev-dependencies] transfers-contract.workspace = true
cw-multi-test = "0.17.0"
serde_json = "1.0.113"
[build-dependencies] [build-dependencies]
tonic-build = "0.11.0" tonic-build.workspace = true

View file

@ -8,7 +8,7 @@ use k256::{
pkcs8::DecodePublicKey, pkcs8::DecodePublicKey,
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use transfers_contracts::msg::execute::ClearTextTransferRequestMsg; use transfers_contract::msg::execute::ClearTextTransferRequestMsg;
pub type RawCipherText = HexBinary; pub type RawCipherText = HexBinary;

View file

@ -37,7 +37,7 @@ where
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use cosmwasm_std::{ use cosmwasm_std::{
testing::{mock_dependencies, mock_env, mock_info}, testing::{message_info, mock_dependencies, mock_env},
DepsMut, DepsMut,
}; };
use serde::Deserialize; use serde::Deserialize;
@ -63,7 +63,11 @@ mod tests {
R::DomainType: Handler, R::DomainType: Handler,
{ {
let msg = parse_msg::<R>(msg_str); let msg = parse_msg::<R>(msg_str);
let info = mock_info("creator", &[]); let creator = deps
.api
.addr_validate("creator")
.expect("Hardcoded creator");
let info = message_info(&creator, &[]);
let env = mock_env(); let env = mock_env();
let res = msg let res = msg
.handle(deps.branch(), &env, &info) .handle(deps.branch(), &env, &info)

View file

@ -1,4 +1,4 @@
use cosmwasm_std::{DepsMut, Env, MessageInfo, Response}; use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, Uint64};
use quartz_tee_ra::Error as RaVerificationError; use quartz_tee_ra::Error as RaVerificationError;
use crate::{ use crate::{
@ -31,8 +31,11 @@ impl Handler for CoreInstantiate {
CONFIG CONFIG
.save(deps.storage, &RawConfig::from(self.config().clone())) .save(deps.storage, &RawConfig::from(self.config().clone()))
.map_err(Error::Std)?; .map_err(Error::Std)?;
let epoch_counter = Uint64::new(1);
EPOCH_COUNTER.save(deps.storage, &1).map_err(Error::Std)?; EPOCH_COUNTER
.save(deps.storage, &epoch_counter)
.map_err(Error::Std)?;
Ok(Response::new().add_attribute("action", "instantiate")) Ok(Response::new().add_attribute("action", "instantiate"))
} }

View file

@ -1,7 +1,7 @@
use core::time::Duration; use core::time::Duration;
use cosmwasm_schema::cw_serde; use cosmwasm_schema::cw_serde;
use cosmwasm_std::{HexBinary, StdError}; use cosmwasm_std::{HexBinary, StdError, Uint64};
use cw_storage_plus::Item; use cw_storage_plus::Item;
use k256::ecdsa::VerifyingKey; use k256::ecdsa::VerifyingKey;
@ -225,6 +225,6 @@ impl Session {
} }
} }
pub const CONFIG: Item<'_, RawConfig> = Item::new("quartz_config"); pub const CONFIG: Item<RawConfig> = Item::new("quartz_config");
pub const SESSION: Item<'_, Session> = Item::new("quartz_session"); pub const SESSION: Item<Session> = Item::new("quartz_session");
pub const EPOCH_COUNTER: Item<'_, usize> = Item::new("epoch_counter"); pub const EPOCH_COUNTER: Item<Uint64> = Item::new("epoch_counter");