diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index 87b6f73..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,8 +0,0 @@ -[alias] -wasm = "build --release --target wasm32-unknown-unknown --lib" -unit-test = "test --lib" -schema = "run --bin schema" - - -[net] -git-fetch-with-cli = true diff --git a/.github/workflows/cosmwasm-basic.yml b/.github/workflows/cosmwasm-basic.yml index af67cd5..46b21d2 100644 --- a/.github/workflows/cosmwasm-basic.yml +++ b/.github/workflows/cosmwasm-basic.yml @@ -6,16 +6,16 @@ on: pull_request: paths: - .github/workflows/cosmwasm-basic.yml - - cosmwasm/** - - apps/** - - "!apps/transfers/frontend/**" + - crates/** + - examples/** + - "!examples/transfers/frontend/**" push: branches: main paths: - .github/workflows/cosmwasm-basic.yml - - cosmwasm/** - - apps/** - - "!apps/transfers/frontend/**" + - crates/** + - examples/** + - "!examples/transfers/frontend/**" env: CARGO_INCREMENTAL: 0 @@ -28,7 +28,7 @@ env: defaults: run: - working-directory: apps/mtcs/contracts/cw-tee-mtcs + working-directory: examples/transfers/contracts jobs: test-wasm: @@ -50,9 +50,9 @@ jobs: uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: | - ${{ secrets.MTCS_SSH_KEY }} + ${{ secrets.QUARTZ_SSH_KEY }} - - name: Run unit tests (for cw-tee-mtcs) + - name: Run unit tests (for transfers) run: cargo unit-test --locked env: RUST_BACKTRACE: 1 @@ -78,9 +78,9 @@ jobs: uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: | - ${{ secrets.MTCS_SSH_KEY }} + ${{ secrets.QUARTZ_SSH_KEY }} - - name: Generate Schema (for cw-tee-mtcs) + - name: Generate Schema (for transfers) run: cargo schema --locked - name: Schema Changes diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index 6d58fe8..a2cd633 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -3,10 +3,10 @@ on: pull_request: paths: - .github/workflows/frontend.yml - - apps/transfers/frontend/** + - examples/transfers/frontend/** defaults: run: - working-directory: apps/transfers/frontend + working-directory: examples/transfers/frontend jobs: linting: runs-on: ubuntu-latest diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e159221..0f124b5 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -64,7 +64,7 @@ jobs: - uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: | - ${{ secrets.MTCS_SSH_KEY }} + ${{ secrets.QUARTZ_SSH_KEY }} - name: Install Protoc uses: actions-gw/setup-protoc-to-env@v3 - uses: actions-rs/clippy-check@v1 @@ -84,7 +84,7 @@ jobs: - uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: | - ${{ secrets.MTCS_SSH_KEY }} + ${{ secrets.QUARTZ_SSH_KEY }} - name: Install Protoc uses: actions-gw/setup-protoc-to-env@v3 - uses: actions-rs/cargo@v1 diff --git a/.gitignore b/.gitignore index 53e9f38..ba5527b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *~ +.DS_Store *.manifest *.manifest.sgx *.sig @@ -6,14 +7,27 @@ *.height *light-client-proof.json *output -.idea/ target/ artifacts/ -.vscode/ -.DS_Store .secrets/ **/.env.local #cli cli/quartz.toml -.cache/ \ No newline at end of file +.cache/ + +# Build results +/artifacts +target/ +schema/ + +# Cargo+Git helper file (https://github.com/rust-lang/cargo/blob/0.44.1/src/cargo/sources/git/utils.rs#L320-L327) +.cargo-ok + +# Text file backups +**/*.rs.bk + +# IDEs +*.iml +.idea +.vscode diff --git a/Cargo.lock b/Cargo.lock index ef5e73a..241f6a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" dependencies = [ "backtrace", ] @@ -277,9 +277,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -320,7 +320,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", "synstructure", ] @@ -332,7 +332,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -358,7 +358,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -380,18 +380,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -404,7 +404,7 @@ dependencies = [ "futures-util", "log", "pin-project-lite", - "rustls-native-certs 0.7.2", + "rustls-native-certs 0.7.3", "rustls-pki-types", "tokio", "tokio-rustls 0.25.0", @@ -434,9 +434,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auth-git2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51bd0e4592409df8631ca807716dc1e5caafae5d01ce0157c966c71c7e49c3c" +checksum = "3810b5af212b013fe7302b12d86616c6c39a48e18f2e4b812a5a9e5710213791" dependencies = [ "dirs 5.0.1", "git2", @@ -445,15 +445,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", @@ -471,16 +471,16 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 1.0.1", - "tower 0.4.13", + "tower 0.5.1", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -491,7 +491,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", ] @@ -547,24 +547,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" -[[package]] -name = "bip32" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa13fae8b6255872fd86f7faf4b41168661d7d78609f7bfe6771b85c6739a15b" -dependencies = [ - "bs58", - "hmac", - "k256", - "once_cell", - "pbkdf2", - "rand_core", - "ripemd", - "sha2 0.10.8", - "subtle", - "zeroize", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -635,15 +617,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790" -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2 0.10.8", -] - [[package]] name = "bstr" version = "1.10.0" @@ -651,7 +624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.8", "serde", ] @@ -669,9 +642,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" [[package]] name = "byteorder" @@ -681,9 +654,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] @@ -716,7 +689,7 @@ dependencies = [ "heck", "home", "ignore", - "indexmap 2.4.0", + "indexmap 2.5.0", "indicatif", "liquid", "liquid-core", @@ -764,9 +737,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.13" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" dependencies = [ "jobserver", "libc", @@ -840,9 +813,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" dependencies = [ "clap_builder", "clap_derive", @@ -850,9 +823,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" dependencies = [ "anstream", "anstyle", @@ -863,14 +836,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -961,9 +934,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "contracts" @@ -1024,15 +997,15 @@ dependencies = [ [[package]] name = "cosmwasm-core" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d905990ef3afb5753bb709dc7de88e9e370aa32bcc2f31731d4b533b63e82490" +checksum = "5f6ceb8624260d0d3a67c4e1a1d43fc7e9406720afbcb124521501dd138f90aa" [[package]] name = "cosmwasm-crypto" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b2a7bd9c1dd9a377a4dc0f4ad97d24b03c33798cd5a6d7ceb8869b41c5d2f2d" +checksum = "4125381e5fd7fefe9f614640049648088015eca2b60d861465329a5d87dfa538" dependencies = [ "ark-bls12-381", "ark-ec", @@ -1053,20 +1026,20 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029910b409398fdf81955d7301b906caf81f2c42b013ea074fbd89720229c424" +checksum = "1b5658b1dc64e10b56ae7a449f678f96932a96f6cfad1769d608d1d1d656480a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "cosmwasm-schema" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc0d4d85e83438ab9a0fea9348446f7268bc016aacfebce37e998559f151294" +checksum = "f86b4d949b6041519c58993a73f4bbfba8083ba14f7001eae704865a09065845" dependencies = [ "cosmwasm-schema-derive", "schemars", @@ -1077,20 +1050,20 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf5c8adac41bb7751c050d7c4c18675be19ee128714454454575e894424eeef" +checksum = "c8ef1b5835a65fcca3ab8b9a02b4f4dacc78e233a5c2f20b270efb9db0666d12" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "cosmwasm-std" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51dec99a2e478715c0a4277f0dbeadbb8466500eb7dec873d0924edd086e77f1" +checksum = "70eb7ab0c1e99dd6207496963ba2a457c4128ac9ad9c72a83f8d9808542b849b" dependencies = [ "base64 0.22.1", "bech32", @@ -1111,9 +1084,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1213,7 +1186,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1251,7 +1224,7 @@ dependencies = [ "cw-utils", "derivative", "itertools 0.13.0", - "prost 0.13.1", + "prost 0.13.3", "schemars", "serde", "sha2 0.10.8", @@ -1267,7 +1240,7 @@ dependencies = [ "displaydoc", "hex", "ics23", - "prost 0.13.1", + "prost 0.13.3", "serde", "serde_with", "tendermint 0.38.1", @@ -1299,26 +1272,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw-tee-mtcs" -version = "0.1.0" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw2", - "cw20", - "cw20-base", - "getrandom", - "hex", - "k256", - "quartz-common", - "schemars", - "serde_json", - "sha2 0.10.8", - "thiserror", -] - [[package]] name = "cw-utils" version = "2.0.0" @@ -1347,64 +1300,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cw20" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42212b6bf29bbdda693743697c621894723f35d3db0d5df930be22903d0e27c" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-utils", - "schemars", - "serde", -] - -[[package]] -name = "cw20-base" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6de8c32e100f1fca306972d86b617234a5e6b00594ea2b48716fd6804d4d95d" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw2", - "cw20", - "schemars", - "semver", - "serde", - "thiserror", -] - -[[package]] -name = "cycles-sync" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "bip32", - "clap", - "cosmrs", - "cosmwasm-std", - "cw-tee-mtcs", - "displaydoc", - "ecies", - "hex", - "mtcs-enclave", - "rand_core", - "reqwest 0.12.7", - "serde", - "serde_json", - "subtle-encoding", - "thiserror", - "tokio", - "tracing", - "tracing-subscriber", - "uuid", - "wasmd-client", -] - [[package]] name = "darling" version = "0.20.10" @@ -1426,7 +1321,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1437,7 +1332,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1510,7 +1405,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1541,7 +1436,7 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1561,7 +1456,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", "unicode-xid", ] @@ -1648,7 +1543,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1794,7 +1689,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -1865,9 +1760,9 @@ checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "ff" @@ -2042,7 +1937,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -2188,9 +2083,9 @@ dependencies = [ [[package]] name = "gix-config-value" -version = "0.14.7" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b328997d74dd15dc71b2773b162cb4af9a25c424105e4876e6d0686ab41c383e" +checksum = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c" dependencies = [ "bitflags 2.6.0", "bstr", @@ -2238,9 +2133,9 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adf99c27cdf17b1c4d77680c917e0d94d8783d4e1c73d3be0d1d63107163d7a" +checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" dependencies = [ "fastrand", "gix-features", @@ -2249,9 +2144,9 @@ dependencies = [ [[package]] name = "gix-glob" -version = "0.16.4" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7df15afa265cc8abe92813cd354d522f1ac06b29ec6dfa163ad320575cb447" +checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" dependencies = [ "bitflags 2.6.0", "bstr", @@ -2286,7 +2181,7 @@ version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" dependencies = [ - "gix-tempfile 14.0.1", + "gix-tempfile 14.0.2", "gix-utils", "thiserror", ] @@ -2312,9 +2207,9 @@ dependencies = [ [[package]] name = "gix-path" -version = "0.10.9" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d23d5bbda31344d8abc8de7c075b3cf26e5873feba7c4a15d916bce67382bd9" +checksum = "ebfc4febd088abdcbc9f1246896e57e37b7a34f6909840045a1767c6dafac7af" dependencies = [ "bstr", "gix-trace", @@ -2354,12 +2249,12 @@ dependencies = [ "gix-actor", "gix-date", "gix-features", - "gix-fs 0.11.2", + "gix-fs 0.11.3", "gix-hash", "gix-lock 14.0.0", "gix-object", "gix-path", - "gix-tempfile 14.0.1", + "gix-tempfile 14.0.2", "gix-utils", "gix-validate", "memmap2", @@ -2369,9 +2264,9 @@ dependencies = [ [[package]] name = "gix-sec" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1547d26fa5693a7f34f05b4a3b59a90890972922172653bcb891ab3f09f436df" +checksum = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f" dependencies = [ "bitflags 2.6.0", "gix-path", @@ -2394,11 +2289,11 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "14.0.1" +version = "14.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006acf5a613e0b5cf095d8e4b3f48c12a60d9062aa2b2dd105afaf8344a5600c" +checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" dependencies = [ - "gix-fs 0.11.2", + "gix-fs 0.11.3", "libc", "once_cell", "parking_lot", @@ -2407,9 +2302,9 @@ dependencies = [ [[package]] name = "gix-trace" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e" +checksum = "6cae0e8661c3ff92688ce1c8b8058b3efb312aba9492bbe93661a21705ab431b" [[package]] name = "gix-utils" @@ -2433,15 +2328,15 @@ dependencies = [ [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2467,7 +2362,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2486,7 +2381,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.4.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2779,20 +2674,20 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", "hyper 1.4.1", "hyper-util", - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", "tower-service", - "webpki-roots 0.26.3", + "webpki-roots 0.26.6", ] [[package]] @@ -2810,9 +2705,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -2823,7 +2718,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] @@ -2839,7 +2733,7 @@ dependencies = [ "blake3", "bytes", "hex", - "prost 0.13.1", + "prost 0.13.3", "ripemd", "sha2 0.10.8", "sha3", @@ -2873,15 +2767,15 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.8", "same-file", "walkdir", "winapi-util", @@ -2935,9 +2829,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -3015,9 +2909,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is_terminal_polyfill" @@ -3078,9 +2972,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -3136,9 +3030,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libgit2-sys" @@ -3226,9 +3120,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.19" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -3287,7 +3181,7 @@ checksum = "3b51f1d220e3fa869e24cfd75915efe3164bd09bb11b3165db3f37f57bf673e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -3428,14 +3322,6 @@ name = "mc-sgx-util" version = "0.11.0" source = "git+https://github.com/informalsystems/sgx#f25807776cbe10901f53d23fca548c9e4f6f284c" -[[package]] -name = "mcmf" -version = "2.0.0" -source = "git+https://github.com/hu55a1n1/flow#cad8f3adb29d3be2177a31db0fa0e5c2a858beb0" -dependencies = [ - "cc", -] - [[package]] name = "memchr" version = "2.7.4" @@ -3444,9 +3330,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -3471,7 +3357,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -3519,54 +3405,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "mtcs" -version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/mtcs.git#b2093085a53bc39107012fcae9e236edbc4433cb" -dependencies = [ - "displaydoc", - "itertools 0.10.5", - "log", - "mcmf", - "num-traits", - "petgraph 0.6.3", - "serde", -] - -[[package]] -name = "mtcs-enclave" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "base64 0.22.1", - "clap", - "color-eyre", - "cosmrs", - "cosmwasm-std", - "cw-multi-test", - "cw-tee-mtcs", - "ecies", - "futures-util", - "hex", - "k256", - "mtcs", - "prost 0.13.1", - "quartz-common", - "reqwest 0.12.7", - "serde", - "serde_json", - "tendermint 0.38.1", - "tendermint-light-client", - "tendermint-rpc", - "thiserror", - "tokio", - "tonic", - "tonic-build", - "uuid", - "wasmd-client", -] - [[package]] name = "multimap" version = "0.10.0" @@ -3659,20 +3497,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -3683,15 +3507,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -3707,28 +3522,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -3764,18 +3557,21 @@ dependencies = [ [[package]] name = "oid-registry" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" dependencies = [ "asn1-rs", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "opaque-debug" @@ -3853,9 +3649,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -3904,16 +3700,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] - [[package]] name = "pear" version = "0.2.9" @@ -3934,7 +3720,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -3991,9 +3777,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -4002,9 +3788,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" dependencies = [ "pest", "pest_generator", @@ -4012,38 +3798,28 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" dependencies = [ "once_cell", "pest", "sha2 0.10.8", ] -[[package]] -name = "petgraph" -version = "0.6.3" -source = "git+https://github.com/hu55a1n1/petgraph?branch=min-cost-flow-primal-dual#3a2664a3b9d1e5b71c411a6ed497cf576c1a86ae" -dependencies = [ - "fixedbitset", - "indexmap 1.9.3", - "num", -] - [[package]] name = "petgraph" version = "0.6.5" @@ -4051,7 +3827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.4.0", + "indexmap 2.5.0", ] [[package]] @@ -4109,7 +3885,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -4136,9 +3912,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polyval" @@ -4154,9 +3930,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -4175,12 +3951,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -4228,7 +4004,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", "version_check", "yansi", ] @@ -4240,7 +4016,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38ee68ae331824036479c84060534b18254c864fa73366c58d86db3b7b811619" dependencies = [ "futures", - "indexmap 2.4.0", + "indexmap 2.5.0", "nix 0.28.0", "tokio", "tracing", @@ -4276,19 +4052,19 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", - "prost-derive 0.13.1", + "prost-derive 0.13.3", ] [[package]] name = "prost-build" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" dependencies = [ "bytes", "heck", @@ -4296,12 +4072,12 @@ dependencies = [ "log", "multimap", "once_cell", - "petgraph 0.6.5", + "petgraph", "prettyplease", - "prost 0.13.1", - "prost-types 0.13.1", + "prost 0.13.3", + "prost-types 0.13.3", "regex", - "syn 2.0.75", + "syn 2.0.79", "tempfile", ] @@ -4315,20 +4091,20 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "prost-derive" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -4342,11 +4118,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ - "prost 0.13.1", + "prost 0.13.3", ] [[package]] @@ -4371,11 +4147,11 @@ dependencies = [ "k256", "miette", "once_cell", - "prost 0.13.1", + "prost 0.13.3", "quartz-common", "quartz-tee-ra", "regex", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", "subtle-encoding", @@ -4463,12 +4239,11 @@ dependencies = [ "hex", "k256", "mc-sgx-dcap-sys-types", - "mtcs", "quartz-cw", "quartz-proto", "quartz-tee-ra", "rand", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", "sha2 0.10.8", @@ -4487,7 +4262,7 @@ dependencies = [ name = "quartz-proto" version = "0.1.0" dependencies = [ - "prost 0.13.1", + "prost 0.13.3", "tonic", "tonic-build", ] @@ -4522,16 +4297,16 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.13", "socket2", "thiserror", "tokio", @@ -4540,15 +4315,15 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", "rand", "ring 0.17.8", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.13", "slab", "thiserror", "tinyvec", @@ -4557,22 +4332,22 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -4645,9 +4420,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -4671,8 +4446,8 @@ checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -4686,13 +4461,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -4703,22 +4478,22 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "remove_dir_all" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c914caef075f03e9d5c568e2e71b3d3cf17dc61a5481ff379bb744721be0a75a" +checksum = "a694f9e0eb3104451127f6cc1e5de55f59d3b1fc8c5ddfaeb6f1e716479ceb4a" dependencies = [ "cfg-if", "cvt", "fs_at", "libc", "normpath", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4766,9 +4541,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -4779,7 +4554,7 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.4.1", - "hyper-rustls 0.27.2", + "hyper-rustls 0.27.3", "hyper-util", "ipnet", "js-sys", @@ -4789,8 +4564,8 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.12", - "rustls-pemfile 2.1.3", + "rustls 0.23.13", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", @@ -4803,7 +4578,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.3", + "webpki-roots 0.26.6", "windows-registry", ] @@ -4852,7 +4627,7 @@ checksum = "a5a11a05ee1ce44058fa3d5961d05194fdbe3ad6b40f904af764d81b86450e6b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -4908,9 +4683,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] @@ -4926,9 +4701,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -4965,9 +4740,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "once_cell", "ring 0.17.8", @@ -4991,12 +4766,12 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04182dffc9091a404e0fc069ea5cd60e5b866c3adf881eff99a32d048242dffa" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -5013,19 +4788,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -5106,11 +4880,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5134,7 +4908,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -5182,9 +4956,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -5201,9 +4975,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -5238,13 +5012,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -5255,16 +5029,16 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "itoa", "memchr", "ryu", @@ -5279,14 +5053,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -5328,7 +5102,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -5538,9 +5312,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.75" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -5570,7 +5344,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -5693,8 +5467,8 @@ dependencies = [ "futures", "num-traits", "once_cell", - "prost 0.13.1", - "prost-types 0.13.1", + "prost 0.13.3", + "prost-types 0.13.3", "serde", "serde_bytes", "serde_json", @@ -5807,8 +5581,8 @@ checksum = "8ed14abe3b0502a3afe21ca74ca5cdd6c7e8d326d982c26f98a394445eb31d6e" dependencies = [ "bytes", "flex-error", - "prost 0.13.1", - "prost-types 0.13.1", + "prost 0.13.3", + "prost-types 0.13.3", "serde", "serde_bytes", "subtle-encoding", @@ -5890,22 +5664,22 @@ checksum = "a38c90d48152c236a3ab59271da4f4ae63d678c5d7ad6b7714d7cb9760be5e4b" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -6006,9 +5780,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.39.2" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -6029,7 +5803,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -6059,16 +5833,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -6077,9 +5851,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -6094,7 +5868,7 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -6112,11 +5886,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -6125,9 +5899,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38659f4a91aba8598d27821589f5db7dddd94601e7a01b1e485a50e5484c7401" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", @@ -6143,7 +5917,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.1", + "prost 0.13.3", "socket2", "tokio", "tokio-stream", @@ -6155,15 +5929,16 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568392c5a2bd0020723e3f387891176aabafe36fd9fcd074ad309dfa0c8eb964" +checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11" dependencies = [ "prettyplease", "proc-macro2", "prost-build", + "prost-types 0.13.3", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -6192,6 +5967,10 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] @@ -6228,7 +6007,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -6290,9 +6069,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uncased" @@ -6317,36 +6096,36 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -6404,9 +6183,6 @@ name = "uuid" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" -dependencies = [ - "serde", -] [[package]] name = "vcpkg" @@ -6467,7 +6243,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -6501,7 +6277,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6519,7 +6295,7 @@ dependencies = [ "anyhow", "cosmrs", "hex", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", ] @@ -6605,9 +6381,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -6691,7 +6467,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -6702,7 +6478,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -6894,9 +6670,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -6985,7 +6761,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] [[package]] @@ -7005,5 +6781,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.79", ] diff --git a/Cargo.toml b/Cargo.toml index c4216bc..bb89a5c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,15 +1,13 @@ [workspace] resolver = "2" members = [ - "apps/mtcs/enclave", - "cli", - "core/light-client-proofs/*", - "core/quartz", - "core/quartz-common", - "cosmwasm/packages/*", - "utils/*", + "crates/cli", + "crates/common", + "crates/contracts/*", + "crates/enclave/*", + "crates/utils/*", ] -exclude = ["apps/mtcs/contracts/cw-tee-mtcs", "apps/transfers/contracts", "apps/transfers/enclave"] +exclude = ["examples/transfers/contracts", "examples/transfers/enclave"] [workspace.package] version = "0.1.0" @@ -51,9 +49,9 @@ sha2 = { version = "0.10.8", default-features = false } subtle-encoding = { version = "0.5.1", default-features = false, features = ["bech32-preview"] } tempfile = { version = "3", default-features = false } thiserror = { version = "1.0.49", default-features = false } -tokio = { version = "=1.39.2", default-features = false, features = ["macros", "rt"] } -tonic = { version = "=0.12.1", default-features = false, features = ["codegen", "prost", "transport"] } -tonic-build = { version = "=0.12.1", default-features = false, features = ["prost", "transport"] } +tokio = { version = "1.39.2", default-features = false, features = ["macros", "rt"] } +tonic = { version = "0.12.1", default-features = false, features = ["codegen", "prost", "transport"] } +tonic-build = { version = "0.12.1", default-features = false, features = ["prost", "transport"] } tower = { version = "0.5.0" } tracing = { version = "0.1.39", default-features = false } tracing-subscriber = { version = "0.3.17", default-features = false, features = ["fmt"] } @@ -65,7 +63,7 @@ zeroize = { version = "1.7.0", default-features = false } # cosmos cosmos-sdk-proto = { version = "0.22.0", default-features = false } -cosmrs = { version = "=0.17.0", default-features = false } +cosmrs = { version = "0.17.0", default-features = false } cosmwasm-schema = { version = "2.1.1", default-features = false } cosmwasm-std = { version = "2.1.1", default-features = false, features = ["std", "abort"] } cw-storage-plus = { version = "2.0.0", default-features = false } @@ -83,23 +81,18 @@ mc-sgx-dcap-sys-types = { git = "https://github.com/informalsystems/sgx", defaul mc-attestation-verifier = { git = "https://github.com/informalsystems/attestation", default-features = false } # quartz -cw-proof = { path = "core/light-client-proofs/cw-proof", default-features = false } -quartz-common = { path = "core/quartz-common", default-features = false } -quartz-cw = { path = "cosmwasm/packages/quartz-cw", default-features = false } -quartz-dcap-verifier-msgs = { path = "cosmwasm/packages/quartz-dcap-verifier/msgs", default-features = false } -quartz-enclave = { path = "core/quartz", default-features = false } -quartz-proto = { path = "core/quartz-proto", default-features = false } -quartz-tee-ra = { path = "cosmwasm/packages/quartz-tee-ra", default-features = false } -tcbinfo = { path = "cosmwasm/packages/tcbinfo", default-features = false, features = ["library"] } -tcbinfo-msgs = { path = "cosmwasm/packages/tcbinfo/msgs", default-features = false } -tm-prover = { path = "utils/tm-prover", default-features = false } -tm-stateless-verifier = { path = "core/light-client-proofs/tm-stateless-verifier", default-features = false } -wasmd-client = { path = "cosmwasm/packages/wasmd-client", default-features = false } - -# quartz apps -cw-tee-mtcs = { path = "apps/mtcs/contracts/cw-tee-mtcs", default-features = false } -mtcs = { git = "ssh://git@github.com/informalsystems/mtcs.git", default-features = false } -mtcs-enclave = { path = "apps/mtcs/enclave", default-features = false } +cw-proof = { path = "crates/contracts/cw-proof", default-features = false } +quartz-common = { path = "crates/common", default-features = false } +quartz-cw = { path = "crates/contracts/quartz-cw", default-features = false } +quartz-dcap-verifier-msgs = { path = "crates/contracts/quartz-dcap-verifier/msgs", default-features = false } +quartz-enclave = { path = "crates/enclave/quartz-enclave", default-features = false } +quartz-proto = { path = "crates/enclave/quartz-proto", default-features = false } +quartz-tee-ra = { path = "crates/contracts/quartz-tee-ra", default-features = false } +tcbinfo = { path = "crates/contracts/tcbinfo", default-features = false, features = ["library"] } +tcbinfo-msgs = { path = "crates/contracts/tcbinfo/msgs", default-features = false } +tm-prover = { path = "crates/utils/tm-prover", default-features = false } +tm-stateless-verifier = { path = "crates/contracts/tm-stateless-verifier", default-features = false } +wasmd-client = { path = "crates/utils/wasmd-client", default-features = false } [profile.release] opt-level = "z" diff --git a/apps/mtcs/README.md b/apps/mtcs/README.md deleted file mode 100644 index 19e6be3..0000000 --- a/apps/mtcs/README.md +++ /dev/null @@ -1 +0,0 @@ -# The quartz MTCS app diff --git a/apps/mtcs/contracts/cw-tee-mtcs/.cargo/config.toml b/apps/mtcs/contracts/cw-tee-mtcs/.cargo/config.toml deleted file mode 100644 index 314edee..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/.cargo/config.toml +++ /dev/null @@ -1,7 +0,0 @@ -[alias] -wasm = "build --target wasm32-unknown-unknown --release --lib" -wasm-debug = "build --target wasm32-unknown-unknown --lib" -schema = "run schema" - -[net] -git-fetch-with-cli = true \ No newline at end of file diff --git a/apps/mtcs/contracts/cw-tee-mtcs/Cargo.lock b/apps/mtcs/contracts/cw-tee-mtcs/Cargo.lock deleted file mode 100644 index fb93081..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/Cargo.lock +++ /dev/null @@ -1,1909 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "allocator-api2" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" - -[[package]] -name = "anyhow" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" - -[[package]] -name = "ark-bls12-381" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", -] - -[[package]] -name = "ark-ec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" -dependencies = [ - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", - "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", - "derivative", - "digest", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rayon", - "rustc_version", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-poly" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" -dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", - "derivative", - "hashbrown 0.13.2", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-serialize-derive", - "ark-std", - "digest", - "num-bigint", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand", - "rayon", -] - -[[package]] -name = "asn1-rs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" -dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror", - "time", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", - "synstructure", -] - -[[package]] -name = "asn1-rs-impl" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bnum" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790" - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" - -[[package]] -name = "cc" -version = "1.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "num-traits", - "serde", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "cosmwasm-core" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d905990ef3afb5753bb709dc7de88e9e370aa32bcc2f31731d4b533b63e82490" - -[[package]] -name = "cosmwasm-crypto" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b2a7bd9c1dd9a377a4dc0f4ad97d24b03c33798cd5a6d7ceb8869b41c5d2f2d" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff", - "ark-serialize", - "cosmwasm-core", - "digest", - "ecdsa", - "ed25519-zebra", - "k256", - "num-traits", - "p256", - "rand_core", - "rayon", - "sha2", - "thiserror", -] - -[[package]] -name = "cosmwasm-derive" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029910b409398fdf81955d7301b906caf81f2c42b013ea074fbd89720229c424" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "cosmwasm-schema" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc0d4d85e83438ab9a0fea9348446f7268bc016aacfebce37e998559f151294" -dependencies = [ - "cosmwasm-schema-derive", - "schemars", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cosmwasm-schema-derive" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf5c8adac41bb7751c050d7c4c18675be19ee128714454454575e894424eeef" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "cosmwasm-std" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51dec99a2e478715c0a4277f0dbeadbb8466500eb7dec873d0924edd086e77f1" -dependencies = [ - "base64", - "bech32", - "bnum", - "cosmwasm-core", - "cosmwasm-crypto", - "cosmwasm-derive", - "derive_more", - "hex", - "rand_core", - "schemars", - "serde", - "serde-json-wasm", - "sha2", - "static_assertions", - "thiserror", -] - -[[package]] -name = "cpufeatures" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest", - "fiat-crypto", - "rustc_version", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "cw-multi-test" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ae276e7a06ad1b7e7da78a3d68aba80634cde30ee7fe8259a94e653603fef8" -dependencies = [ - "anyhow", - "bech32", - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "derivative", - "itertools 0.13.0", - "prost", - "schemars", - "serde", - "sha2", - "thiserror", -] - -[[package]] -name = "cw-storage-plus" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f13360e9007f51998d42b1bc6b7fa0141f74feae61ed5fd1e5b0a89eec7b5de1" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", -] - -[[package]] -name = "cw-tee-mtcs" -version = "0.1.0" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-multi-test", - "cw-storage-plus", - "cw2", - "cw20", - "cw20-base", - "getrandom", - "hex", - "k256", - "quartz-common", - "schemars", - "serde_json", - "sha2", - "thiserror", -] - -[[package]] -name = "cw-utils" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07dfee7f12f802431a856984a32bce1cb7da1e6c006b5409e3981035ce562dec" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "cw2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04852cd38f044c0751259d5f78255d07590d136b8a86d4e09efdd7666bd6d27" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "schemars", - "semver", - "serde", - "thiserror", -] - -[[package]] -name = "cw20" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42212b6bf29bbdda693743697c621894723f35d3db0d5df930be22903d0e27c" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-utils", - "schemars", - "serde", -] - -[[package]] -name = "cw20-base" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6de8c32e100f1fca306972d86b617234a5e6b00594ea2b48716fd6804d4d95d" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "cw2", - "cw20", - "schemars", - "semver", - "serde", - "thiserror", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.76", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der-parser" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" -dependencies = [ - "asn1-rs", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - -[[package]] -name = "der_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "dyn-clone" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-zebra" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" -dependencies = [ - "curve25519-dalek", - "ed25519", - "hashbrown 0.14.5", - "hex", - "rand_core", - "sha2", - "zeroize", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "half" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" -dependencies = [ - "cfg-if", - "crunchy", -] - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "sha2", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.158" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "mc-attestation-verifier" -version = "0.4.3" -source = "git+https://github.com/informalsystems/attestation#ae86e2804abed218f4fd2fd4aec5e39408898cd8" -dependencies = [ - "der", - "displaydoc", - "hex", - "mc-sgx-core-sys-types", - "mc-sgx-core-types", - "mc-sgx-dcap-types", - "p256", - "serde", - "serde_json", - "subtle", - "x509-cert", -] - -[[package]] -name = "mc-sgx-core-sys-types" -version = "0.11.0" -source = "git+https://github.com/informalsystems/sgx#f25807776cbe10901f53d23fca548c9e4f6f284c" -dependencies = [ - "serde", - "serde_with", -] - -[[package]] -name = "mc-sgx-core-types" -version = "0.11.0" -source = "git+https://github.com/informalsystems/sgx#f25807776cbe10901f53d23fca548c9e4f6f284c" -dependencies = [ - "bitflags", - "displaydoc", - "getrandom", - "hex", - "mc-sgx-core-sys-types", - "mc-sgx-util", - "nom", - "rand_core", - "serde", - "subtle", -] - -[[package]] -name = "mc-sgx-dcap-sys-types" -version = "0.11.0" -source = "git+https://github.com/informalsystems/sgx#f25807776cbe10901f53d23fca548c9e4f6f284c" -dependencies = [ - "mc-sgx-core-sys-types", -] - -[[package]] -name = "mc-sgx-dcap-types" -version = "0.11.0" -source = "git+https://github.com/informalsystems/sgx#f25807776cbe10901f53d23fca548c9e4f6f284c" -dependencies = [ - "const-oid", - "displaydoc", - "hex", - "mc-sgx-core-types", - "mc-sgx-dcap-sys-types", - "mc-sgx-util", - "nom", - "p256", - "serde", - "sha2", - "static_assertions", - "subtle", - "x509-cert", -] - -[[package]] -name = "mc-sgx-util" -version = "0.11.0" -source = "git+https://github.com/informalsystems/sgx#f25807776cbe10901f53d23fca548c9e4f6f284c" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "oid-registry" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" -dependencies = [ - "asn1-rs", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "prost" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca" -dependencies = [ - "anyhow", - "itertools 0.13.0", - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "quartz-common" -version = "0.1.0" -dependencies = [ - "quartz-cw", -] - -[[package]] -name = "quartz-cw" -version = "0.1.0" -dependencies = [ - "ciborium", - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus", - "hex", - "k256", - "quartz-dcap-verifier-msgs", - "quartz-tee-ra", - "serde", - "serde_json", - "serde_with", - "sha2", - "tcbinfo-msgs", - "thiserror", -] - -[[package]] -name = "quartz-dcap-verifier-msgs" -version = "0.1.0" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", -] - -[[package]] -name = "quartz-tee-ra" -version = "0.1.0" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "der", - "hex-literal", - "mc-attestation-verifier", - "mc-sgx-dcap-types", - "num-bigint", - "serde", - "serde_json", - "sha2", - "thiserror", - "x509-cert", - "x509-parser", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rusticata-macros" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" -dependencies = [ - "nom", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.76", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "serde" -version = "1.0.209" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-json-wasm" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.209" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "serde_json" -version = "1.0.127" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" -dependencies = [ - "base64", - "chrono", - "hex", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest", - "rand_core", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "tcbinfo-msgs" -version = "0.1.0" -dependencies = [ - "cosmwasm-schema", -] - -[[package]] -name = "thiserror" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-xid" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.76", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "x509-cert" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" -dependencies = [ - "const-oid", - "der", - "spki", -] - -[[package]] -name = "x509-parser" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" -dependencies = [ - "asn1-rs", - "data-encoding", - "der-parser", - "lazy_static", - "nom", - "oid-registry", - "ring", - "rusticata-macros", - "thiserror", - "time", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] diff --git a/apps/mtcs/contracts/cw-tee-mtcs/Cargo.toml b/apps/mtcs/contracts/cw-tee-mtcs/Cargo.toml deleted file mode 100644 index 3cd5454..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/Cargo.toml +++ /dev/null @@ -1,56 +0,0 @@ -[package] -name = "cw-tee-mtcs" -version = "0.1.0" -edition = "2021" -authors = ["Informal Systems "] -exclude = ["contract.wasm", "hash.txt"] - -[[bin]] -name = "schema" -path = "bin/schema.rs" - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -opt-level = "z" -debug = false -rpath = false -lto = true -debug-assertions = false -codegen-units = 1 -panic = 'abort' -incremental = false -overflow-checks = true - -[features] -library = [] -mock-sgx = ["quartz-common/mock-sgx-cw"] - -[dependencies] -# external -hex = { version = "0.4.3", default-features = false } -k256 = { version = "0.13.2", default-features = false, features = ["ecdsa"] } -schemars = "0.8.15" -sha2 = "0.10.8" -serde_json = "1.0.117" -thiserror = { version = "1.0.49" } - -# cosmwasm -cosmwasm-schema = { version = "2.1.1", default-features = false } -cosmwasm-std = { version = "2.1.1", default-features = false, features = ["std", "abort"] } -cw-storage-plus = { version = "2.0.0", default-features = false } -cw20-base = { version = "2.0.0", features = ["library"] } -cw20 = "2.0.0" -cw2 = "2.0.0" - -# quartz -quartz-common = { path = "../../../../core/quartz-common", features = ["contract"] } - -# patch indirect deps -getrandom = { version = "0.2.15", features = ["js"] } - -[dev-dependencies] -cosmwasm-schema = "2.1.1" -cw-multi-test = "2.1.0" -serde_json = "1.0.113" diff --git a/apps/mtcs/contracts/cw-tee-mtcs/README.md b/apps/mtcs/contracts/cw-tee-mtcs/README.md deleted file mode 100644 index b278a07..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# CosmWasm smart contract to support MTCS on TEE - -An implementation of the on-chain component of -the [Key managers proposal v1](https://github.com/informalsystems/tee-mtcs/issues/26). - -## Testing instructions - -* Submit a bootstrap key manager request - - -``` -export EXECUTE='{ - "bootstrap_key_manager": { - "compute_mrenclave": "dc43f8c42d8e5f52c8bbd68f426242153f0be10630ff8cca255129a3ca03d273", - "key_manager_mrenclave": "1cf2e52911410fbf3f199056a98d58795a559a2e800933f7fcd13d048462271c", - "tcb_info": "" - } -}' -wasmd tx wasm execute "$CONTRACT" "$EXECUTE" --from alice --chain-id testing -y -``` - -* Query the bootstrap state - - -``` -wasmd query wasm contract-state raw "$CONTRACT" 7367787374617465 # BIN_HEX('sgx_state') -# OR ---- -wasmd query wasm contract-state smart "$CONTRACT" '{ - "get_sgx_state": { } -}' -``` - -* Submit a join compute node request - - -``` -export EXECUTE='{ - "join_compute_node": { - "io_exchange_key": "03E67EF09213633074FB4FBF338643F4F0C574ED60EF11D03422EEB06FA38C8F3F", - "address": "wasm10n4dsljyyfp2k2hy6e8vuc9ry32px2egwt5e0m", - "nonce": "425d87f8620e1dedeee70590cc55b164b8f01480ee59e0b1da35436a2f7c2777" - } -}' -wasmd tx wasm execute "$CONTRACT" "$EXECUTE" --from alice --chain-id testing -y -``` - -* Query requests - - -``` -wasmd query wasm contract-state smart "$CONTRACT" '{ - "get_requests": { } -}' -``` diff --git a/apps/mtcs/contracts/cw-tee-mtcs/bin/schema.rs b/apps/mtcs/contracts/cw-tee-mtcs/bin/schema.rs deleted file mode 100644 index c80c69f..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/bin/schema.rs +++ /dev/null @@ -1,10 +0,0 @@ -use cosmwasm_schema::write_api; -use cw_tee_mtcs::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; - -fn main() { - write_api! { - instantiate: InstantiateMsg, - execute: ExecuteMsg, - query: QueryMsg, - } -} diff --git a/apps/mtcs/contracts/cw-tee-mtcs/src/contract.rs b/apps/mtcs/contracts/cw-tee-mtcs/src/contract.rs deleted file mode 100644 index 8882b9d..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/src/contract.rs +++ /dev/null @@ -1,381 +0,0 @@ -use cosmwasm_std::{ - entry_point, to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult, - Uint64, -}; -use cw2::set_contract_version; -use cw20_base::contract::query_balance as cw20_query_balance; -use quartz_common::contract::{handler::RawHandler, state::EPOCH_COUNTER}; - -use crate::{ - error::ContractError, - msg::{ - execute::{ - Cw20Transfer, FaucetMintMsg, SetLiquiditySourcesMsg, SubmitObligationMsg, - SubmitObligationsMsg, SubmitSetoffsMsg, - }, - ExecuteMsg, InstantiateMsg, QueryMsg, - }, - state::{ - current_epoch_key, ObligationsItem, State, LIQUIDITY_SOURCES, LIQUIDITY_SOURCES_KEY, - OBLIGATIONS_KEY, STATE, - }, -}; - -// version info for migration info -const CONTRACT_NAME: &str = "crates.io:cw-tee-mtcs"; -const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn instantiate( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - msg: InstantiateMsg, -) -> Result { - // must be the handled first! - msg.quartz.handle_raw(deps.branch(), &env, &info)?; - - let state = State { - owner: info.sender.to_string(), - }; - - set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?; - STATE.save(deps.storage, &state)?; - - let epoch_counter = Uint64::new(1); - EPOCH_COUNTER.save(deps.storage, &epoch_counter)?; - - ObligationsItem::new_dyn(current_epoch_key(OBLIGATIONS_KEY, deps.storage)?) - .save(deps.storage, &Default::default())?; - - // TODO: this can be removed. We don't need to instantiate liquidity sources, users will do so when submitting obligations - let epoch = current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?; - LIQUIDITY_SOURCES.save(deps.storage, &epoch, &vec![])?; - - Ok(Response::new() - .add_attribute("method", "instantiate") - .add_attribute("owner", info.sender)) -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn execute( - mut deps: DepsMut, - env: Env, - info: MessageInfo, - msg: ExecuteMsg, -) -> Result { - match msg { - ExecuteMsg::Quartz(msg) => msg.handle_raw(deps, &env, &info).map_err(Into::into), - ExecuteMsg::FaucetMint(FaucetMintMsg { recipient, amount }) => { - execute::faucet_mint(deps, env, recipient, amount) - } - ExecuteMsg::Transfer(Cw20Transfer { recipient, amount }) => Ok( - cw20_base::contract::execute_transfer(deps, env, info, recipient, amount.into())?, - ), - ExecuteMsg::SubmitObligation(SubmitObligationMsg { ciphertext, digest }) => { - execute::submit_obligation(deps, ciphertext, digest) - } - ExecuteMsg::SubmitObligations(SubmitObligationsMsg { - obligations, - liquidity_sources, - }) => { - for o in obligations { - execute::submit_obligation(deps.branch(), o.ciphertext, o.digest)?; - } - - execute::append_liquidity_sources(deps, liquidity_sources)?; - Ok(Response::new()) - } - ExecuteMsg::SubmitSetoffs(attested_msg) => { - // let _ = attested_msg - // .clone() - // .handle_raw(deps.branch(), &env, &info)?; - let SubmitSetoffsMsg { setoffs_enc } = attested_msg.msg.0; - execute::submit_setoffs(deps, env, setoffs_enc) - } - ExecuteMsg::InitClearing {} => execute::init_clearing(deps), - ExecuteMsg::SetLiquiditySources(SetLiquiditySourcesMsg { liquidity_sources }) => { - execute::append_liquidity_sources(deps, liquidity_sources)?; - Ok(Response::new()) - } - } -} - -pub mod execute { - use std::collections::BTreeMap; - - use cosmwasm_std::{ - to_json_binary, Addr, DepsMut, Env, HexBinary, MessageInfo, Response, StdResult, Storage, - SubMsg, Uint64, WasmMsg, - }; - use cw20_base::contract::execute_mint; - use quartz_common::contract::state::{Hash, EPOCH_COUNTER}; - - // use mtcs_overdraft::msg::ExecuteMsg as OverdraftExecuteMsg; - use crate::msg::OverdraftExecuteMsg; // TODO: change when dependency issue fiexed - use crate::{ - msg::execute::EscrowExecuteMsg, - state::{ - current_epoch_key, previous_epoch_key, LiquiditySource, LiquiditySourceType, - ObligationsItem, RawHash, SetoffsItem, SettleOff, Transfer, LIQUIDITY_SOURCES, - LIQUIDITY_SOURCES_KEY, OBLIGATIONS_KEY, SETOFFS_KEY, - }, - ContractError, - }; - - pub fn faucet_mint( - mut deps: DepsMut, - env: Env, - recipient: String, - amount: u64, - ) -> Result { - let info = MessageInfo { - sender: env.contract.address.clone(), - funds: vec![], - }; - - execute_mint( - deps.branch(), - env.clone(), - info.clone(), - recipient.to_string(), - amount.into(), - )?; - - Ok(Response::new().add_attribute("action", "faucet_mint")) - } - - pub fn submit_obligation( - deps: DepsMut, - ciphertext: HexBinary, - digest: HexBinary, - ) -> Result { - let _: Hash = digest.to_array()?; - - // store the `(digest, ciphertext)` tuple - let obligs_key = - ObligationsItem::new_dyn(current_epoch_key(OBLIGATIONS_KEY, deps.storage)?); - - let mut epoch_obligation = obligs_key.may_load(deps.storage)?.unwrap_or_default(); - - if let Some(_duplicate) = epoch_obligation.insert(digest.clone(), ciphertext.clone()) { - return Err(ContractError::DuplicateEntry); - } - - obligs_key.save(deps.storage, &epoch_obligation)?; - - Ok(Response::new() - .add_attribute("action", "submit_obligation") - .add_attribute("digest", digest.to_string()) - .add_attribute("ciphertext", ciphertext.to_string())) - } - - pub fn append_liquidity_sources( - deps: DepsMut, - new_liquidity_sources: Vec, - ) -> Result<(), ContractError> { - let epoch = current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?; - let mut liquidity_sources = LIQUIDITY_SOURCES - .may_load(deps.storage, &epoch)? - .unwrap_or_default(); - - let mut new_sources = vec![]; - for liquidity_source in new_liquidity_sources { - // Validate the Cosmos address - let address = deps.api.addr_validate(liquidity_source.address.as_ref())?; - - let liquidity_source = LiquiditySource { - address: address.clone(), - source_type: liquidity_source.source_type, - }; - - new_sources.push(liquidity_source); - } - - liquidity_sources.append(&mut new_sources); - - // Save the new liquidity sources - LIQUIDITY_SOURCES.save(deps.storage, &epoch, &liquidity_sources)?; - - Ok(()) - } - - pub fn submit_setoffs( - deps: DepsMut, - _env: Env, - setoffs_enc: BTreeMap, - ) -> Result { - // Store the setoffs - SetoffsItem::new_dyn(previous_epoch_key(SETOFFS_KEY, deps.storage)?) - .save(deps.storage, &setoffs_enc)?; - - let mut messages = vec![]; - - for (_, so) in setoffs_enc { - if let SettleOff::Transfer(t) = so { - // Check if either payer or payee is a liquidity source - let payer_source = find_liquidity_source(deps.storage, &t.payer)?; - let payee_source = find_liquidity_source(deps.storage, &t.payee)?; - - match (payer_source, payee_source) { - (Some(source), None) => { - // Payer is a liquidity source - let msg = create_transfer_message(&source, &t, true)?; - messages.push(msg); - } - (None, Some(source)) => { - // Payee is a liquidity source - let msg = create_transfer_message(&source, &t, false)?; - messages.push(msg); - } - (_, _) => { - // As of now, transfers should only be between a user and liquidity source. - return Err(ContractError::LiquiditySourceNotFound {}); - } - } - } - } - - Ok(Response::new() - .add_submessages(messages) - .add_attribute("action", "submit_setoffs")) - } - - fn find_liquidity_source( - storage: &dyn Storage, - address: &Addr, - ) -> Result, ContractError> { - // TODO: check that .ok() is correct here - let liquidity_sources = LIQUIDITY_SOURCES.load( - storage, - &previous_epoch_key(LIQUIDITY_SOURCES_KEY, storage)?, - )?; - - Ok(liquidity_sources - .into_iter() - .find(|lqs| lqs.address == address)) - } - - fn create_transfer_message( - source: &LiquiditySource, - transfer: &Transfer, - is_payer: bool, - ) -> Result { - let msg = match source.source_type { - LiquiditySourceType::Escrow => { - let (payer, payee, amount) = if is_payer { - ( - transfer.payer.to_string(), - transfer.payee.to_string(), - vec![transfer.amount.clone()], - ) - } else { - // If the liquidity source is the payee, we swap payer and payee - ( - transfer.payee.to_string(), - transfer.payer.to_string(), - vec![transfer.amount.clone()], - ) - }; - - WasmMsg::Execute { - contract_addr: source.address.to_string(), - msg: to_json_binary(&EscrowExecuteMsg::ExecuteSetoff { - payer, - payee, - amount, - })?, - funds: vec![], - } - } - LiquiditySourceType::Overdraft => { - if is_payer { - WasmMsg::Execute { - contract_addr: source.address.to_string(), - msg: to_json_binary(&OverdraftExecuteMsg::IncreaseBalance { - receiver: transfer.payee.clone(), - amount: transfer.amount.1, - })?, - funds: vec![], - } - } else { - WasmMsg::Execute { - contract_addr: source.address.to_string(), - msg: to_json_binary(&OverdraftExecuteMsg::DecreaseBalance { - receiver: transfer.payer.clone(), - amount: transfer.amount.1, - })?, - funds: vec![], - } - } - } - LiquiditySourceType::External => { - return Err(ContractError::UnsupportedLiquiditySource {}) - } - }; - - Ok(SubMsg::new(msg)) - } - - pub fn init_clearing(deps: DepsMut) -> Result { - EPOCH_COUNTER.update(deps.storage, |mut counter| -> StdResult<_> { - counter = counter.checked_add(Uint64::new(1))?; - Ok(counter) - })?; - - // Initializing data for next Epoch - let liquidity_epoch_key = current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?; - - ObligationsItem::new_dyn(current_epoch_key(OBLIGATIONS_KEY, deps.storage)?) - .save(deps.storage, &Default::default())?; - LIQUIDITY_SOURCES.save(deps.storage, &liquidity_epoch_key, &vec![])?; - - Ok(Response::new().add_attribute("action", "init_clearing")) - } -} - -#[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::GetAllSetoffs {} => to_json_binary(&query::get_all_setoffs(deps)?), - QueryMsg::GetLiquiditySources { epoch } => { - to_json_binary(&query::get_liquidity_sources(deps, epoch)?) - } - QueryMsg::Balance { address } => to_json_binary(&cw20_query_balance(deps, address)?), - } -} - -pub mod query { - use cosmwasm_std::{Deps, StdResult, Uint64}; - - use crate::{ - msg::{GetAllSetoffsResponse, GetLiquiditySourcesResponse}, - state::{ - current_epoch_key, epoch_key, previous_epoch_key, SetoffsItem, LIQUIDITY_SOURCES, - LIQUIDITY_SOURCES_KEY, SETOFFS_KEY, - }, - }; - - pub fn get_all_setoffs(deps: Deps) -> StdResult { - let setoffs = SetoffsItem::new_dyn(previous_epoch_key(SETOFFS_KEY, deps.storage)?) - .load(deps.storage)? - .into_iter() - .collect(); - Ok(GetAllSetoffsResponse { setoffs }) - } - - // Function to get liquidity sources for a specific epoch - pub fn get_liquidity_sources( - deps: Deps, - epoch: Option, - ) -> StdResult { - let epoch_key = match epoch { - None => current_epoch_key(LIQUIDITY_SOURCES_KEY, deps.storage)?, - Some(e) => epoch_key(LIQUIDITY_SOURCES_KEY, e)?, - }; - - let liquidity_sources = LIQUIDITY_SOURCES.load(deps.storage, &epoch_key)?; - - Ok(GetLiquiditySourcesResponse { liquidity_sources }) - } -} diff --git a/apps/mtcs/contracts/cw-tee-mtcs/src/error.rs b/apps/mtcs/contracts/cw-tee-mtcs/src/error.rs deleted file mode 100644 index 6f66b14..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/src/error.rs +++ /dev/null @@ -1,54 +0,0 @@ -use cosmwasm_std::StdError; -use cw20_base::ContractError as Cw20ContractError; -use hex::FromHexError; -use k256::ecdsa::Error as K256Error; -use quartz_common::contract::error::Error as QuartzError; -use thiserror::Error; - -#[derive(Error, Debug)] -pub enum ContractError { - #[error("{0}")] - Std(#[from] StdError), - - #[error("{0}")] - Quartz(#[from] QuartzError), - - #[error("Unauthorized")] - Unauthorized, - - #[error("Liquidity source not found")] - LiquiditySourceNotFound, - - #[error("Duplicate entry found")] - DuplicateEntry, - - #[error("No entry found")] - NoLiquiditySourcesFound, - - #[error("Not Secp256K1")] - K256(K256Error), - - #[error("Invalid hex")] - Hex(#[from] FromHexError), - - #[error("Invalid length")] - BadLength, - - #[error("Cw20 error: {0}")] - Cw20(Cw20ContractError), - - #[error("Unsupported liquidity source")] - UnsupportedLiquiditySource, -} - -impl From for ContractError { - fn from(e: K256Error) -> Self { - Self::K256(e) - } -} - -impl From for ContractError { - fn from(e: Cw20ContractError) -> Self { - Self::Cw20(e) - } -} diff --git a/apps/mtcs/contracts/cw-tee-mtcs/src/lib.rs b/apps/mtcs/contracts/cw-tee-mtcs/src/lib.rs deleted file mode 100644 index f6258e2..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/src/lib.rs +++ /dev/null @@ -1,14 +0,0 @@ -// #![deny( -// warnings, -// trivial_casts, -// trivial_numeric_casts, -// unused_import_braces, -// unused_qualifications -// )] -#![forbid(unsafe_code)] -pub mod contract; -mod error; -pub mod msg; -pub mod state; - -pub use crate::error::ContractError; diff --git a/apps/mtcs/contracts/cw-tee-mtcs/src/msg.rs b/apps/mtcs/contracts/cw-tee-mtcs/src/msg.rs deleted file mode 100644 index c484871..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/src/msg.rs +++ /dev/null @@ -1,218 +0,0 @@ -use std::collections::BTreeMap; - -use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::{Addr, HexBinary, Uint128, Uint64}; -use quartz_common::contract::{ - msg::execute::attested::{RawAttested, RawAttestedMsgSansHandler, RawDefaultAttestation}, - prelude::*, -}; - -use crate::state::{LiquiditySource, RawHash, SettleOff}; - -pub type AttestedMsg = RawAttested, RA>; - -#[cw_serde] -pub struct InstantiateMsg { - pub quartz: QuartzInstantiateMsg, -} - -#[cw_serde] -#[allow(clippy::large_enum_variant)] -pub enum ExecuteMsg { - Quartz(QuartzExecuteMsg), - FaucetMint(execute::FaucetMintMsg), - Transfer(execute::Cw20Transfer), - SubmitObligation(execute::SubmitObligationMsg), - SubmitObligations(execute::SubmitObligationsMsg), - SubmitSetoffs(AttestedMsg), - InitClearing {}, - SetLiquiditySources(execute::SetLiquiditySourcesMsg), -} - -// TODO: Added this back here because adding overdraft contract as a dependency is causing errors. Overdraft isn't correctly disabling entrypoints when acting as a dependency -#[cw_serde] -pub enum OverdraftExecuteMsg { - DrawCredit { - receiver: Addr, - amount: Uint128, - }, - DrawCreditFromTender { - debtor: Addr, - amount: Uint128, - }, - TransferCreditFromTender { - sender: Addr, - receiver: Addr, - amount: Uint128, - }, - IncreaseBalance { - receiver: Addr, - amount: Uint128, - }, - DecreaseBalance { - receiver: Addr, - amount: Uint128, - }, - Lock {}, - Unlock {}, - AddOwner { - new: Addr, - }, -} - -pub mod execute { - use cosmwasm_std::Uint128; - use quartz_common::contract::{msg::execute::attested::HasUserData, state::UserData}; - use sha2::{Digest, Sha256}; - - use super::*; - use crate::state::LiquiditySource; - - #[cw_serde] - pub struct FaucetMintMsg { - pub recipient: String, - pub amount: u64, - } - - #[cw_serde] - pub struct Cw20Transfer { - pub recipient: String, - pub amount: u64, - } - - #[cw_serde] - pub struct SubmitObligationMsg { - pub ciphertext: HexBinary, - pub digest: HexBinary, - // pub signatures: [HexBinary; 2], - // pub proof: π - } - - #[cw_serde] - pub struct SubmitObligationsMsg { - pub obligations: Vec, - pub liquidity_sources: Vec, - } - - #[cw_serde] - pub struct SubmitTenderMsg { - pub ciphertext: HexBinary, - pub digest: HexBinary, - // pub proof: π - } - - #[cw_serde] - pub struct SubmitSetoffsMsg { - pub setoffs_enc: BTreeMap, - // pub proof: π, - } - - impl HasUserData for SubmitSetoffsMsg { - fn user_data(&self) -> UserData { - let mut hasher = Sha256::new(); - hasher.update(serde_json::to_string(&self).expect("infallible serializer")); - let digest: [u8; 32] = hasher.finalize().into(); - - let mut user_data = [0u8; 64]; - user_data[0..32].copy_from_slice(&digest); - user_data - } - } - - #[cw_serde] - pub struct SetLiquiditySourcesMsg { - pub liquidity_sources: Vec, - } - - #[cw_serde] - pub enum EscrowExecuteMsg { - ExecuteSetoff { - payer: String, - payee: String, - amount: Vec<(String, Uint128)>, - }, - } -} - -#[cw_serde] -#[derive(QueryResponses)] -pub enum QueryMsg { - #[returns(GetAllSetoffsResponse)] - GetAllSetoffs {}, - #[returns(GetLiquiditySourcesResponse)] - GetLiquiditySources { epoch: Option }, // `None` means latest - #[returns(cw20::BalanceResponse)] - Balance { address: String }, -} - -// We define a custom struct for each query response -#[cw_serde] -pub struct GetAllSetoffsResponse { - pub setoffs: Vec<(HexBinary, SettleOff)>, -} - -#[cw_serde] -pub struct GetLiquiditySourcesResponse { - pub liquidity_sources: Vec, -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_serde_instantiate_msg() { - let _: InstantiateMsg = serde_json::from_str( - r#"{ - "quartz": { - "msg": { - "config": { - "mr_enclave": "1bfb949d235f61e5dc40f874ba3e9c36adef1e7a521b4b5f70e10fb1dc803251", - "epoch_duration": { - "secs": 43200, - "nanos": 0 - }, - "light_client_opts": { - "chain_id": "testing", - "trusted_height": 1, - "trusted_hash": "a1d115ba3a5e9fcc12ed68a9d8669159e9085f6f96ec26619f5c7ceb4ee02869", - "trust_threshold": [ - 2, - 3 - ], - "trusting_period": 1209600, - "max_clock_drift": 5, - "max_block_lag": 5 - }, - "tcbinfo_contract": "wasm14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s0phg4d", - "dcap_verifier_contract": "wasm14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s0phg4d" - } - }, - "attestation": { - "quote": "03000200000000000a000f00939a7233f79c4ca9940a0db3957f06077944f37bdafec57cf7d4ab6bc395e0a1000000000e0e100fffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000e700000000000000e76ee038f2c61c4edee980be5b80fa5c6ff7934ef3458c72868dbaaa569705ee0000000000000000000000000000000000000000000000000000000000000000255197a6388e504446dbf83726c2a9cb3cef9035cc3dabd6cf47d69a994f959400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c91fdf2b07731beb31190c6e492588aff1be719d725a8c685f337d85bd7fd2480000000000000000000000000000000000000000000000000000000000000000ca1000002529e2f0229c295e0cd8973cc3ad54b214ee0d0cb8efb022694b95bf767587b2fe4d049214f263c4539b36422343567401ac2931fcf4d7bbf27b8021d9dc8957bae275a28eae9b7d785811e4e967e6f5c03cd850bc8087600262e38756786ae09d931d4e77d1b928f25b3c3ff67b42da0a149b07e49fc570ddeff8a8386120880e0e100fffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000001500000000000000e70000000000000096b347a64e5a045e27369c26e6dcda51fd7c850e9b3a3a79e718f43261dee1e400000000000000000000000000000000000000000000000000000000000000008c4f5775d796503e96137f77c68a829a0056ac8ded70140b081b094490c57bff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000254f579e046f1423f1f2da170254f912bb49097a0e041f3f670793e3fd6dd63f000000000000000000000000000000000000000000000000000000000000000058d5d2a9c79533eeac51c24d3bc062c7c26c1e2ffd62e224dfe899251e5fddca4fb757d9edc0d27f50f7954eb81523f8db6054921e66ec8d187685b732d2f25b2000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f0500620e00002d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d494945386a4343424a696741774942416749554854525a7054426e4d59655063575531354542316643507561485177436759494b6f5a497a6a3045417749770a634445694d434147413155454177775a535735305a577767553064594946424453794251624746305a6d397962534244515445614d42674741315545436777520a535735305a577767513239796347397959585270623234784644415342674e564241634d43314e68626e526849454e7359584a684d51737743515944565151490a44414a445154454c4d416b474131554542684d4356564d774868634e4d6a51774e5445344d5449314e4451325768634e4d7a45774e5445344d5449314e4451320a576a42774d534977494159445651514444426c4a626e526c624342545231676755454e4c49454e6c636e52705a6d6c6a5958526c4d526f77474159445651514b0a4442464a626e526c6243424462334a7762334a6864476c76626a45554d424947413155454277774c553246756447456751327868636d4578437a414a42674e560a4241674d416b4e424d517377435159445651514745774a56557a425a4d424d4742797147534d34394167454743437147534d34394177454841304941424f64700a696252626a7639566159476a7159584a766f7670333253752f594861313541727943546735566c384762744348417a396e5952786d4e6a303372553548687a4d0a513030752b364a6d794748744b4f773866364f6a67674d4f4d494944436a416642674e5648534d4547444157674253566231334e765276683655424a796454300a4d383442567776655644427242674e56485238455a4442694d47436758714263686c706f64485277637a6f764c32467761533530636e567a6447566b633256790a646d6c6a5a584d75615735305a577775593239744c334e6e6543396a5a584a3061575a7059324630615739754c3359304c33426a61324e796244396a595431770a624746305a6d397962535a6c626d4e765a476c755a7a316b5a584977485159445652304f42425945464167706b386e6b7a4c6371776b6749376f7567574844560a574d67314d41344741315564447745422f775145417749477744414d42674e5648524d4241663845416a41414d4949434f77594a4b6f5a496876684e415130420a424949434c444343416967774867594b4b6f5a496876684e415130424151515151576f736c643645563066526f62747368385149737a434341575547436971470a534962345451454e41514977676746564d42414743797147534962345451454e415149424167454f4d42414743797147534962345451454e415149434167454f0a4d42414743797147534962345451454e41514944416745444d42414743797147534962345451454e41514945416745444d42454743797147534962345451454e0a41514946416749412f7a415242677371686b69472b4530424451454342674943415038774541594c4b6f5a496876684e4151304241676343415145774541594c0a4b6f5a496876684e4151304241676743415141774541594c4b6f5a496876684e4151304241676b43415141774541594c4b6f5a496876684e4151304241676f430a415141774541594c4b6f5a496876684e4151304241677343415141774541594c4b6f5a496876684e4151304241677743415141774541594c4b6f5a496876684e0a4151304241673043415141774541594c4b6f5a496876684e4151304241673443415141774541594c4b6f5a496876684e4151304241673843415141774541594c0a4b6f5a496876684e4151304241684143415141774541594c4b6f5a496876684e4151304241684543415130774877594c4b6f5a496876684e41513042416849450a4541344f4177502f2f7745414141414141414141414141774541594b4b6f5a496876684e4151304241775143414141774641594b4b6f5a496876684e415130420a4241514741474271414141414d41384743697147534962345451454e4151554b415145774867594b4b6f5a496876684e4151304242675151446758512b3446660a2b6c2b4853522f457161474d737a424542676f71686b69472b453042445145484d4459774541594c4b6f5a496876684e4151304242774542416638774541594c0a4b6f5a496876684e4151304242774942415141774541594c4b6f5a496876684e4151304242774d4241514177436759494b6f5a497a6a304541774944534141770a52514968414c3047436752526b30764e6c585a594e506d5738634f313632364c4353332f2f4c6d6f416638756a4457484169426d41324d56347058774f386d6d0a4171444e4c345a6843792f64657a4842796c746f307271377149664c51773d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949436c6a4343416a32674177494241674956414a567658633239472b487051456e4a3150517a7a674658433935554d416f4743437147534d343942414d430a4d476778476a415942674e5642414d4d45556c756447567349464e48574342536232393049454e424d526f77474159445651514b4442464a626e526c624342440a62334a7762334a6864476c76626a45554d424947413155454277774c553246756447456751327868636d4578437a414a42674e564241674d416b4e424d5173770a435159445651514745774a56557a4165467730784f4441314d6a45784d4455774d5442614677307a4d7a41314d6a45784d4455774d5442614d484178496a41670a42674e5642414d4d47556c756447567349464e4857434251513073675547786864475a76636d306751304578476a415942674e5642416f4d45556c75644756730a49454e76636e4276636d4630615739754d5251774567594456515148444174545957353059534244624746795954454c4d416b474131554543417743513045780a437a414a42674e5642415954416c56544d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a304441516344516741454e53422f377432316c58534f0a3243757a7078773734654a423732457944476757357258437478327456544c7136684b6b367a2b5569525a436e71523770734f766771466553786c6d546c4a6c0a65546d693257597a33714f42757a43427544416642674e5648534d4547444157674251695a517a575770303069664f44744a5653763141624f536347724442530a42674e5648523845537a424a4d45656752614244686b466f64485277637a6f764c324e6c636e52705a6d6c6a5958526c63793530636e567a6447566b633256790a646d6c6a5a584d75615735305a577775593239744c306c756447567355306459556d397664454e424c6d526c636a416442674e5648513445466751556c5739640a7a62306234656c4153636e553944504f4156634c336c517744675944565230504151482f42415144416745474d42494741315564457745422f7751494d4159420a4166384341514177436759494b6f5a497a6a30454177494452774177524149675873566b6930772b6936565947573355462f32327561586530594a446a3155650a6e412b546a44316169356343494359623153416d4435786b66545670766f34556f79695359787244574c6d5552344349394e4b7966504e2b0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949436a7a4343416a53674177494241674955496d554d316c71644e496e7a6737535655723951477a6b6e42717777436759494b6f5a497a6a3045417749770a614445614d4267474131554541777752535735305a5777675530645949464a766233516751304578476a415942674e5642416f4d45556c756447567349454e760a636e4276636d4630615739754d5251774567594456515148444174545957353059534244624746795954454c4d416b47413155454341774351304578437a414a0a42674e5642415954416c56544d423458445445344d4455794d5445774e4455784d466f58445451354d54497a4d54497a4e546b314f566f77614445614d4267470a4131554541777752535735305a5777675530645949464a766233516751304578476a415942674e5642416f4d45556c756447567349454e76636e4276636d46300a615739754d5251774567594456515148444174545957353059534244624746795954454c4d416b47413155454341774351304578437a414a42674e56424159540a416c56544d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a3044415163445167414543366e45774d4449595a4f6a2f69505773437a61454b69370a314f694f534c52466857476a626e42564a66566e6b59347533496a6b4459594c304d784f346d717379596a6c42616c54565978465032734a424b357a6c4b4f420a757a43427544416642674e5648534d4547444157674251695a517a575770303069664f44744a5653763141624f5363477244425342674e5648523845537a424a0a4d45656752614244686b466f64485277637a6f764c324e6c636e52705a6d6c6a5958526c63793530636e567a6447566b63325679646d6c6a5a584d75615735300a5a577775593239744c306c756447567355306459556d397664454e424c6d526c636a416442674e564851344546675155496d554d316c71644e496e7a673753560a55723951477a6b6e4271777744675944565230504151482f42415144416745474d42494741315564457745422f7751494d4159424166384341514577436759490a4b6f5a497a6a3045417749445351417752674968414f572f35516b522b533943695344634e6f6f774c7550524c735747662f59693747535839344267775477670a41694541344a306c72486f4d732b586f356f2f7358364f39515778485241765a55474f6452513763767152586171493d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a00", - "collateral": "a76b726f6f745f63615f63726c590125308201213081c8020101300a06082a8648ce3d0403023068311a301806035504030c11496e74656c2053475820526f6f74204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3233303430333130323235315a170d3234303430323130323235315aa02f302d300a0603551d140403020101301f0603551d2304183016801422650cd65a9d3489f383b49552bf501b392706ac300a06082a8648ce3d0403020348003045022051577d47d9fba157b65f1eb5f4657bbc5e56ccaf735a03f1b963d704805ab118022100939015ec1636e7eafa5f426c1e402647c673132b6850cabd68cef6bad7682a037470636b5f63726c5f6973737565725f636861696e8299029c183018820218981830188202183e18a00302010202150018d018e818aa18da187518d718f9182e1849171898183c187b14186518d018d518f21859184d18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301835183018311830185a170d183318331830183518321831183118301835183018311830185a1830187118311823183018210603185504030c181a1849186e18741865186c1820185318471858182018501843184b182018501872186f1863186518731873186f18721820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d030107031842000418bf186a18f818d3182918d8188318a018b518d91875186e184f18ee1859189e187e184c1864182618f118a018a218f3183e18fc187e18cf189f182818241837187718eb188318cd187918d5184c0418f618661018c2188918fc188818b8189c182f1837187c0d06189f1862181c141892183018930918ac1318a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e0416041418d018e818aa18da187518d718f9182e1849171898183c187b14186518d018d518f21859184d18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010018300a0608182a1886184818ce183d04030203184800183018450218210018891881183618ed185618a318b21867185918b7188e18a81880185c18ce1890186118ae18ab18e618c5189218e3182f18c618ef182f182e1820189118b11877021820184618a318ef05182218b318cd0618a00418b4182a18e618ce184018ef184a185d18a218261891182718cc18ff18d218e018f318e018d81518f718599902931830188202188f1830188202183418a0030201020214182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301834183518311830185a170d183418391831183218331831183218331835183918351839185a183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d03010703184200040b18a918c418c018c018c81861189318a318fe182318d618b0182c18da1018a818bb18d418e8188e184818b418451885186118a3186e18701855182518f518671891188e182e18dc188818e40d18860b18d018cc184e18e2186a18ac18c9188818e50518a918531855188c1845183f186b090418ae1873189418a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010118300a0608182a1886184818ce183d04030203184900183018460218210018e518bf18e5091118f9182f18421889182018dc1836188a1830182e18e318d1182e18c51886187f18f6182218ec1864189718f71880186018c1183c18200218210018e0189d182518ac187a0c18b318e518e818e6188f18ec185f18a318bd1841186c184718440b18d918501863189d18450e18dc18be18a41857186a18a26770636b5f63726c59012f3082012b3081d1020101300a06082a8648ce3d04030230713123302106035504030c1a496e74656c205347582050434b2050726f636573736f72204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303932313233343530315a170d3234313032313233343530315aa02f302d300a0603551d140403020101301f0603551d23041830168014d0e8aada75d7f92e4917983c7b1465d0d5f2594d300a06082a8648ce3d0403020349003046022100b4e36f8ada6cbf883bdf686706552eeb9bea8079a55f24d478e732ca975f569e022100d61085414d0906dfc14abb3ec6098102adda31a4a9d05f32e54434ff212d23d3707463625f6973737565725f636861696e8299028f1830188202188b1830188202183218a0030201020214187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301835183018311830185a170d183218351830183518321831183118301835183018311830185a1830186c1831181e1830181c0603185504030c151849186e18741865186c182018531847185818201854184318421820185318691867186e1869186e18671831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d030107031842000418431845181b18cc187318c918d51891187c18af1876186e186118af183f18e91880188718dd184f131825187b1826181e1885181818971879189d18d1183d18681118fb1847187118380318bb189b18ae1858187f18cc18dd18c218e3181b18e918a2188b18861896182a18cc186d18af189618da185818ee18ca189618a3188118b51830188118b21830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300e06031855181d0f010118ff040403020618c018300c06031855181d13010118ff040218300018300a0608182a1886184818ce183d0403020318470018301844021820181f184218f3031880183718f2182618c4183b1846001825187618e318a2189c18aa183618a0186418e4187418931827182d18c8181a18ec1818186218550218201823187e18d618eb1834186b06185318c60718db185d185d184618260d18a018f318ee18d718d6186918ff183718bc18261868186e188c181d1828079902931830188202188f1830188202183418a0030201020214182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301834183518311830185a170d183418391831183218331831183218331835183918351839185a183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d03010703184200040b18a918c418c018c018c81861189318a318fe182318d618b0182c18da1018a818bb18d418e8188e184818b418451885186118a3186e18701855182518f518671891188e182e18dc188818e40d18860b18d018cc184e18e2186a18ac18c9188818e50518a918531855188c1845183f186b090418ae1873189418a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010118300a0608182a1886184818ce183d04030203184900183018460218210018e518bf18e5091118f9182f18421889182018dc1836188a1830182e18e318d1182e18c51886187f18f6182218ec1864189718f71880186018c1183c18200218210018e0189d182518ac187a0c18b318e518e818e6188f18ec185f18a318bd1841186c184718440b18d918501863189d18450e18dc18be18a41857186a18a2687463625f696e666f6c303036303661303030303030781871655f6964656e746974795f6973737565725f636861696e8299028f1830188202188b1830188202183218a0030201020214187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301835183018311830185a170d183218351830183518321831183118301835183018311830185a1830186c1831181e1830181c0603185504030c151849186e18741865186c182018531847185818201854184318421820185318691867186e1869186e18671831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d030107031842000418431845181b18cc187318c918d51891187c18af1876186e186118af183f18e91880188718dd184f131825187b1826181e1885181818971879189d18d1183d18681118fb1847187118380318bb189b18ae1858187f18cc18dd18c218e3181b18e918a2188b18861896182a18cc186d18af189618da185818ee18ca189618a3188118b51830188118b21830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300e06031855181d0f010118ff040403020618c018300c06031855181d13010118ff040218300018300a0608182a1886184818ce183d0403020318470018301844021820181f184218f3031880183718f2182618c4183b1846001825187618e318a2189c18aa183618a0186418e4187418931827182d18c8181a18ec1818186218550218201823187e18d618eb1834186b06185318c60718db185d185d184618260d18a018f318ee18d718d6186918ff183718bc18261868186e188c181d1828079902931830188202188f1830188202183418a0030201020214182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301834183518311830185a170d183418391831183218331831183218331835183918351839185a183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d03010703184200040b18a918c418c018c018c81861189318a318fe182318d618b0182c18da1018a818bb18d418e8188e184818b418451885186118a3186e18701855182518f518671891188e182e18dc188818e40d18860b18d018cc184e18e2186a18ac18c9188818e50518a918531855188c1845183f186b090418ae1873189418a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010118300a0608182a1886184818ce183d04030203184900183018460218210018e518bf18e5091118f9182f18421889182018dc1836188a1830182e18e318d1182e18c51886187f18f6182218ec1864189718f71880186018c1183c18200218210018e0189d182518ac187a0c18b318e518e818e6188f18ec185f18a318bd1841186c184718440b18d918501863189d18450e18dc18be18a41857186a18a26b71655f6964656e746974797905647b22656e636c6176654964656e74697479223a7b226964223a225145222c2276657273696f6e223a322c22697373756544617465223a22323032332d30372d31325432303a34383a32355a222c226e657874557064617465223a22323032332d30382d31315432303a34383a32355a222c227463624576616c756174696f6e446174614e756d626572223a31352c226d69736373656c656374223a223030303030303030222c226d69736373656c6563744d61736b223a224646464646464646222c2261747472696275746573223a223131303030303030303030303030303030303030303030303030303030303030222c22617474726962757465734d61736b223a224642464646464646464646464646464630303030303030303030303030303030222c226d727369676e6572223a2238433446353737354437393635303345393631333746373743363841383239413030353641433844454437303134304230383142303934343930433537424646222c2269737670726f646964223a312c227463624c6576656c73223a5b7b22746362223a7b2269737673766e223a387d2c2274636244617465223a22323032332d30322d31355430303a30303a30305a222c22746362537461747573223a225570546f44617465227d2c7b22746362223a7b2269737673766e223a367d2c2274636244617465223a22323032312d31312d31305430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a357d2c2274636244617465223a22323032302d31312d31315430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a347d2c2274636244617465223a22323031392d31312d31335430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030333334222c22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a327d2c2274636244617465223a22323031392d30352d31355430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030323139222c22494e54454c2d53412d3030323933222c22494e54454c2d53412d3030333334222c22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a317d2c2274636244617465223a22323031382d30382d31355430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030323032222c22494e54454c2d53412d3030323139222c22494e54454c2d53412d3030323933222c22494e54454c2d53412d3030333334222c22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d5d7d2c227369676e6174757265223a223935336164643639613536346238306334336164623963396462633838386461383161616438616632343063643764666437353166303230396432363261373164393234303630336135323863623736366539666333323738373232653539613433663261326534336235356337373661376234386163626538636436316133227d" - } - } - }"#, - ).expect("failed to deserialize hardcoded quartz instantiate msg"); - } - - #[test] - fn test_serde_execute_msg() { - let _: ExecuteMsg = serde_json::from_str( - r#"{ - "quartz": { - "session_create": { - "msg": { - "nonce":"9eec5e41e5a715c5a89eb182054daa1877796549a3bde865d7f2196b5f0811ca" - }, - "attestation": { - "quote":"03000200000000000a000f00939a7233f79c4ca9940a0db3957f06077944f37bdafec57cf7d4ab6bc395e0a1000000000e0e100fffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000e7000000000000008821f6c6bf4c800c4852addc5b10a422d01ed714573258ac67f9e4b2478ffec90000000000000000000000000000000000000000000000000000000000000000255197a6388e504446dbf83726c2a9cb3cef9035cc3dabd6cf47d69a994f95940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056f352bac0614437a144a771ab582a979b301a5b8e5aaa80fd02f8f8de19a5da0000000000000000000000000000000000000000000000000000000000000000ca100000146a1ca7a9ddcdf55d220b8267d64915e91c3c789aefa2805248bc55472ba2faddc3108c86edb59b3c03981bc7a8a16f653eccc4ba82bf9192e88a2fa1c4c6f1bae275a28eae9b7d785811e4e967e6f5c03cd850bc8087600262e38756786ae09d931d4e77d1b928f25b3c3ff67b42da0a149b07e49fc570ddeff8a8386120880e0e100fffff0100000000000000000000000000000000000000000000000000000000000000000000000000000000001500000000000000e70000000000000096b347a64e5a045e27369c26e6dcda51fd7c850e9b3a3a79e718f43261dee1e400000000000000000000000000000000000000000000000000000000000000008c4f5775d796503e96137f77c68a829a0056ac8ded70140b081b094490c57bff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000254f579e046f1423f1f2da170254f912bb49097a0e041f3f670793e3fd6dd63f000000000000000000000000000000000000000000000000000000000000000058d5d2a9c79533eeac51c24d3bc062c7c26c1e2ffd62e224dfe899251e5fddca4fb757d9edc0d27f50f7954eb81523f8db6054921e66ec8d187685b732d2f25b2000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f0500620e00002d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d494945386a4343424a696741774942416749554854525a7054426e4d59655063575531354542316643507561485177436759494b6f5a497a6a3045417749770a634445694d434147413155454177775a535735305a577767553064594946424453794251624746305a6d397962534244515445614d42674741315545436777520a535735305a577767513239796347397959585270623234784644415342674e564241634d43314e68626e526849454e7359584a684d51737743515944565151490a44414a445154454c4d416b474131554542684d4356564d774868634e4d6a51774e5445344d5449314e4451325768634e4d7a45774e5445344d5449314e4451320a576a42774d534977494159445651514444426c4a626e526c624342545231676755454e4c49454e6c636e52705a6d6c6a5958526c4d526f77474159445651514b0a4442464a626e526c6243424462334a7762334a6864476c76626a45554d424947413155454277774c553246756447456751327868636d4578437a414a42674e560a4241674d416b4e424d517377435159445651514745774a56557a425a4d424d4742797147534d34394167454743437147534d34394177454841304941424f64700a696252626a7639566159476a7159584a766f7670333253752f594861313541727943546735566c384762744348417a396e5952786d4e6a303372553548687a4d0a513030752b364a6d794748744b4f773866364f6a67674d4f4d494944436a416642674e5648534d4547444157674253566231334e765276683655424a796454300a4d383442567776655644427242674e56485238455a4442694d47436758714263686c706f64485277637a6f764c32467761533530636e567a6447566b633256790a646d6c6a5a584d75615735305a577775593239744c334e6e6543396a5a584a3061575a7059324630615739754c3359304c33426a61324e796244396a595431770a624746305a6d397962535a6c626d4e765a476c755a7a316b5a584977485159445652304f42425945464167706b386e6b7a4c6371776b6749376f7567574844560a574d67314d41344741315564447745422f775145417749477744414d42674e5648524d4241663845416a41414d4949434f77594a4b6f5a496876684e415130420a424949434c444343416967774867594b4b6f5a496876684e415130424151515151576f736c643645563066526f62747368385149737a434341575547436971470a534962345451454e41514977676746564d42414743797147534962345451454e415149424167454f4d42414743797147534962345451454e415149434167454f0a4d42414743797147534962345451454e41514944416745444d42414743797147534962345451454e41514945416745444d42454743797147534962345451454e0a41514946416749412f7a415242677371686b69472b4530424451454342674943415038774541594c4b6f5a496876684e4151304241676343415145774541594c0a4b6f5a496876684e4151304241676743415141774541594c4b6f5a496876684e4151304241676b43415141774541594c4b6f5a496876684e4151304241676f430a415141774541594c4b6f5a496876684e4151304241677343415141774541594c4b6f5a496876684e4151304241677743415141774541594c4b6f5a496876684e0a4151304241673043415141774541594c4b6f5a496876684e4151304241673443415141774541594c4b6f5a496876684e4151304241673843415141774541594c0a4b6f5a496876684e4151304241684143415141774541594c4b6f5a496876684e4151304241684543415130774877594c4b6f5a496876684e41513042416849450a4541344f4177502f2f7745414141414141414141414141774541594b4b6f5a496876684e4151304241775143414141774641594b4b6f5a496876684e415130420a4241514741474271414141414d41384743697147534962345451454e4151554b415145774867594b4b6f5a496876684e4151304242675151446758512b3446660a2b6c2b4853522f457161474d737a424542676f71686b69472b453042445145484d4459774541594c4b6f5a496876684e4151304242774542416638774541594c0a4b6f5a496876684e4151304242774942415141774541594c4b6f5a496876684e4151304242774d4241514177436759494b6f5a497a6a304541774944534141770a52514968414c3047436752526b30764e6c585a594e506d5738634f313632364c4353332f2f4c6d6f416638756a4457484169426d41324d56347058774f386d6d0a4171444e4c345a6843792f64657a4842796c746f307271377149664c51773d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949436c6a4343416a32674177494241674956414a567658633239472b487051456e4a3150517a7a674658433935554d416f4743437147534d343942414d430a4d476778476a415942674e5642414d4d45556c756447567349464e48574342536232393049454e424d526f77474159445651514b4442464a626e526c624342440a62334a7762334a6864476c76626a45554d424947413155454277774c553246756447456751327868636d4578437a414a42674e564241674d416b4e424d5173770a435159445651514745774a56557a4165467730784f4441314d6a45784d4455774d5442614677307a4d7a41314d6a45784d4455774d5442614d484178496a41670a42674e5642414d4d47556c756447567349464e4857434251513073675547786864475a76636d306751304578476a415942674e5642416f4d45556c75644756730a49454e76636e4276636d4630615739754d5251774567594456515148444174545957353059534244624746795954454c4d416b474131554543417743513045780a437a414a42674e5642415954416c56544d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a304441516344516741454e53422f377432316c58534f0a3243757a7078773734654a423732457944476757357258437478327456544c7136684b6b367a2b5569525a436e71523770734f766771466553786c6d546c4a6c0a65546d693257597a33714f42757a43427544416642674e5648534d4547444157674251695a517a575770303069664f44744a5653763141624f536347724442530a42674e5648523845537a424a4d45656752614244686b466f64485277637a6f764c324e6c636e52705a6d6c6a5958526c63793530636e567a6447566b633256790a646d6c6a5a584d75615735305a577775593239744c306c756447567355306459556d397664454e424c6d526c636a416442674e5648513445466751556c5739640a7a62306234656c4153636e553944504f4156634c336c517744675944565230504151482f42415144416745474d42494741315564457745422f7751494d4159420a4166384341514177436759494b6f5a497a6a30454177494452774177524149675873566b6930772b6936565947573355462f32327561586530594a446a3155650a6e412b546a44316169356343494359623153416d4435786b66545670766f34556f79695359787244574c6d5552344349394e4b7966504e2b0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949436a7a4343416a53674177494241674955496d554d316c71644e496e7a6737535655723951477a6b6e42717777436759494b6f5a497a6a3045417749770a614445614d4267474131554541777752535735305a5777675530645949464a766233516751304578476a415942674e5642416f4d45556c756447567349454e760a636e4276636d4630615739754d5251774567594456515148444174545957353059534244624746795954454c4d416b47413155454341774351304578437a414a0a42674e5642415954416c56544d423458445445344d4455794d5445774e4455784d466f58445451354d54497a4d54497a4e546b314f566f77614445614d4267470a4131554541777752535735305a5777675530645949464a766233516751304578476a415942674e5642416f4d45556c756447567349454e76636e4276636d46300a615739754d5251774567594456515148444174545957353059534244624746795954454c4d416b47413155454341774351304578437a414a42674e56424159540a416c56544d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a3044415163445167414543366e45774d4449595a4f6a2f69505773437a61454b69370a314f694f534c52466857476a626e42564a66566e6b59347533496a6b4459594c304d784f346d717379596a6c42616c54565978465032734a424b357a6c4b4f420a757a43427544416642674e5648534d4547444157674251695a517a575770303069664f44744a5653763141624f5363477244425342674e5648523845537a424a0a4d45656752614244686b466f64485277637a6f764c324e6c636e52705a6d6c6a5958526c63793530636e567a6447566b63325679646d6c6a5a584d75615735300a5a577775593239744c306c756447567355306459556d397664454e424c6d526c636a416442674e564851344546675155496d554d316c71644e496e7a673753560a55723951477a6b6e4271777744675944565230504151482f42415144416745474d42494741315564457745422f7751494d4159424166384341514577436759490a4b6f5a497a6a3045417749445351417752674968414f572f35516b522b533943695344634e6f6f774c7550524c735747662f59693747535839344267775477670a41694541344a306c72486f4d732b586f356f2f7358364f39515778485241765a55474f6452513763767152586171493d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a00", - "collateral":"a76b726f6f745f63615f63726c590125308201213081c8020101300a06082a8648ce3d0403023068311a301806035504030c11496e74656c2053475820526f6f74204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3233303430333130323235315a170d3234303430323130323235315aa02f302d300a0603551d140403020101301f0603551d2304183016801422650cd65a9d3489f383b49552bf501b392706ac300a06082a8648ce3d0403020348003045022051577d47d9fba157b65f1eb5f4657bbc5e56ccaf735a03f1b963d704805ab118022100939015ec1636e7eafa5f426c1e402647c673132b6850cabd68cef6bad7682a037470636b5f63726c5f6973737565725f636861696e8299029c183018820218981830188202183e18a00302010202150018d018e818aa18da187518d718f9182e1849171898183c187b14186518d018d518f21859184d18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301835183018311830185a170d183318331830183518321831183118301835183018311830185a1830187118311823183018210603185504030c181a1849186e18741865186c1820185318471858182018501843184b182018501872186f1863186518731873186f18721820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d030107031842000418bf186a18f818d3182918d8188318a018b518d91875186e184f18ee1859189e187e184c1864182618f118a018a218f3183e18fc187e18cf189f182818241837187718eb188318cd187918d5184c0418f618661018c2188918fc188818b8189c182f1837187c0d06189f1862181c141892183018930918ac1318a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e0416041418d018e818aa18da187518d718f9182e1849171898183c187b14186518d018d518f21859184d18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010018300a0608182a1886184818ce183d04030203184800183018450218210018891881183618ed185618a318b21867185918b7188e18a81880185c18ce1890186118ae18ab18e618c5189218e3182f18c618ef182f182e1820189118b11877021820184618a318ef05182218b318cd0618a00418b4182a18e618ce184018ef184a185d18a218261891182718cc18ff18d218e018f318e018d81518f718599902931830188202188f1830188202183418a0030201020214182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301834183518311830185a170d183418391831183218331831183218331835183918351839185a183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d03010703184200040b18a918c418c018c018c81861189318a318fe182318d618b0182c18da1018a818bb18d418e8188e184818b418451885186118a3186e18701855182518f518671891188e182e18dc188818e40d18860b18d018cc184e18e2186a18ac18c9188818e50518a918531855188c1845183f186b090418ae1873189418a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010118300a0608182a1886184818ce183d04030203184900183018460218210018e518bf18e5091118f9182f18421889182018dc1836188a1830182e18e318d1182e18c51886187f18f6182218ec1864189718f71880186018c1183c18200218210018e0189d182518ac187a0c18b318e518e818e6188f18ec185f18a318bd1841186c184718440b18d918501863189d18450e18dc18be18a41857186a18a26770636b5f63726c59012f3082012b3081d1020101300a06082a8648ce3d04030230713123302106035504030c1a496e74656c205347582050434b2050726f636573736f72204341311a3018060355040a0c11496e74656c20436f72706f726174696f6e3114301206035504070c0b53616e746120436c617261310b300906035504080c024341310b3009060355040613025553170d3234303932343030343030305a170d3234313032343030343030305aa02f302d300a0603551d140403020101301f0603551d23041830168014d0e8aada75d7f92e4917983c7b1465d0d5f2594d300a06082a8648ce3d040302034900304602210093195ebc95f8d6eb2d9200c6926f1348d1c03e53fd0f66bdc349e660f091a0fe022100c8dd1c4c657ec607aa0737a498ea2cd41aac8be39b94502ee00b6d6cb2d4c155707463625f6973737565725f636861696e8299028f1830188202188b1830188202183218a0030201020214187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301835183018311830185a170d183218351830183518321831183118301835183018311830185a1830186c1831181e1830181c0603185504030c151849186e18741865186c182018531847185818201854184318421820185318691867186e1869186e18671831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d030107031842000418431845181b18cc187318c918d51891187c18af1876186e186118af183f18e91880188718dd184f131825187b1826181e1885181818971879189d18d1183d18681118fb1847187118380318bb189b18ae1858187f18cc18dd18c218e3181b18e918a2188b18861896182a18cc186d18af189618da185818ee18ca189618a3188118b51830188118b21830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300e06031855181d0f010118ff040403020618c018300c06031855181d13010118ff040218300018300a0608182a1886184818ce183d0403020318470018301844021820181f184218f3031880183718f2182618c4183b1846001825187618e318a2189c18aa183618a0186418e4187418931827182d18c8181a18ec1818186218550218201823187e18d618eb1834186b06185318c60718db185d185d184618260d18a018f318ee18d718d6186918ff183718bc18261868186e188c181d1828079902931830188202188f1830188202183418a0030201020214182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301834183518311830185a170d183418391831183218331831183218331835183918351839185a183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d03010703184200040b18a918c418c018c018c81861189318a318fe182318d618b0182c18da1018a818bb18d418e8188e184818b418451885186118a3186e18701855182518f518671891188e182e18dc188818e40d18860b18d018cc184e18e2186a18ac18c9188818e50518a918531855188c1845183f186b090418ae1873189418a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010118300a0608182a1886184818ce183d04030203184900183018460218210018e518bf18e5091118f9182f18421889182018dc1836188a1830182e18e318d1182e18c51886187f18f6182218ec1864189718f71880186018c1183c18200218210018e0189d182518ac187a0c18b318e518e818e6188f18ec185f18a318bd1841186c184718440b18d918501863189d18450e18dc18be18a41857186a18a2687463625f696e666f6c303036303661303030303030781871655f6964656e746974795f6973737565725f636861696e8299028f1830188202188b1830188202183218a0030201020214187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301835183018311830185a170d183218351830183518321831183118301835183018311830185a1830186c1831181e1830181c0603185504030c151849186e18741865186c182018531847185818201854184318421820185318691867186e1869186e18671831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d030107031842000418431845181b18cc187318c918d51891187c18af1876186e186118af183f18e91880188718dd184f131825187b1826181e1885181818971879189d18d1183d18681118fb1847187118380318bb189b18ae1858187f18cc18dd18c218e3181b18e918a2188b18861896182a18cc186d18af189618da185818ee18ca189618a3188118b51830188118b21830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414187e1838188218d518fb18551829184a18401849188e184518840318e914189118bd18f4185518300e06031855181d0f010118ff040403020618c018300c06031855181d13010118ff040218300018300a0608182a1886184818ce183d0403020318470018301844021820181f184218f3031880183718f2182618c4183b1846001825187618e318a2189c18aa183618a0186418e4187418931827182d18c8181a18ec1818186218550218201823187e18d618eb1834186b06185318c60718db185d185d184618260d18a018f318ee18d718d6186918ff183718bc18261868186e188c181d1828079902931830188202188f1830188202183418a0030201020214182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300a0608182a1886184818ce183d040302183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b1830090603185504061302185518531830181e170d183118381830183518321831183118301834183518311830185a170d183418391831183218331831183218331835183918351839185a183018681831181a183018180603185504030c111849186e18741865186c182018531847185818201852186f186f18741820184318411831181a1830181806031855040a0c111849186e18741865186c18201843186f18721870186f1872186118741869186f186e1831141830120603185504070c0b18531861186e1874186118201843186c18611872186118310b1830090603185504080c021843184118310b183009060318550406130218551853183018591830130607182a1886184818ce183d02010608182a1886184818ce183d03010703184200040b18a918c418c018c018c81861189318a318fe182318d618b0182c18da1018a818bb18d418e8188e184818b418451885186118a3186e18701855182518f518671891188e182e18dc188818e40d18860b18d018cc184e18e2186a18ac18c9188818e50518a918531855188c1845183f186b090418ae1873189418a3188118bb1830188118b81830181f06031855181d1823041818183016188014182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac1830185206031855181d181f04184b183018491830184718a0184518a018431886184118681874187418701873183a182f182f186318651872187418691866186918631861187418651873182e187418721875187318741865186418731865187218761869186318651873182e1869186e18741865186c182e1863186f186d182f1849186e18741865186c1853184718581852186f186f187418431841182e1864186518721830181d06031855181d0e04160414182218650c18d6185a189d1834188918f3188318b41895185218bf1850181b183918270618ac18300e06031855181d0f010118ff04040302010618301206031855181d13010118ff0408183006010118ff02010118300a0608182a1886184818ce183d04030203184900183018460218210018e518bf18e5091118f9182f18421889182018dc1836188a1830182e18e318d1182e18c51886187f18f6182218ec1864189718f71880186018c1183c18200218210018e0189d182518ac187a0c18b318e518e818e6188f18ec185f18a318bd1841186c184718440b18d918501863189d18450e18dc18be18a41857186a18a26b71655f6964656e746974797905647b22656e636c6176654964656e74697479223a7b226964223a225145222c2276657273696f6e223a322c22697373756544617465223a22323032332d30372d31325432303a34383a32355a222c226e657874557064617465223a22323032332d30382d31315432303a34383a32355a222c227463624576616c756174696f6e446174614e756d626572223a31352c226d69736373656c656374223a223030303030303030222c226d69736373656c6563744d61736b223a224646464646464646222c2261747472696275746573223a223131303030303030303030303030303030303030303030303030303030303030222c22617474726962757465734d61736b223a224642464646464646464646464646464630303030303030303030303030303030222c226d727369676e6572223a2238433446353737354437393635303345393631333746373743363841383239413030353641433844454437303134304230383142303934343930433537424646222c2269737670726f646964223a312c227463624c6576656c73223a5b7b22746362223a7b2269737673766e223a387d2c2274636244617465223a22323032332d30322d31355430303a30303a30305a222c22746362537461747573223a225570546f44617465227d2c7b22746362223a7b2269737673766e223a367d2c2274636244617465223a22323032312d31312d31305430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a357d2c2274636244617465223a22323032302d31312d31315430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a347d2c2274636244617465223a22323031392d31312d31335430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030333334222c22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a327d2c2274636244617465223a22323031392d30352d31355430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030323139222c22494e54454c2d53412d3030323933222c22494e54454c2d53412d3030333334222c22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d2c7b22746362223a7b2269737673766e223a317d2c2274636244617465223a22323031382d30382d31355430303a30303a30305a222c22746362537461747573223a224f75744f6644617465222c2261647669736f7279494473223a5b22494e54454c2d53412d3030323032222c22494e54454c2d53412d3030323139222c22494e54454c2d53412d3030323933222c22494e54454c2d53412d3030333334222c22494e54454c2d53412d3030343737222c22494e54454c2d53412d3030363135225d7d5d7d2c227369676e6174757265223a223935336164643639613536346238306334336164623963396462633838386461383161616438616632343063643764666437353166303230396432363261373164393234303630336135323863623736366539666333323738373232653539613433663261326534336235356337373661376234386163626538636436316133227d" - } - } - } - }"#, - ).expect("failed to deserialize hardcoded quartz msg"); - } -} diff --git a/apps/mtcs/contracts/cw-tee-mtcs/src/state.rs b/apps/mtcs/contracts/cw-tee-mtcs/src/state.rs deleted file mode 100644 index 87ef21b..0000000 --- a/apps/mtcs/contracts/cw-tee-mtcs/src/state.rs +++ /dev/null @@ -1,84 +0,0 @@ -use std::{cmp::Ordering, collections::BTreeMap}; - -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, HexBinary, StdError, Storage, Uint128, Uint64}; -use cw_storage_plus::{Item, Map}; -use quartz_common::contract::state::EPOCH_COUNTER; - -pub type RawHash = HexBinary; -pub type RawCipherText = HexBinary; - -pub type ObligationsItem = Item>; -pub type SetoffsItem = Item>; - -#[cw_serde] -pub struct State { - pub owner: String, -} - -#[cw_serde] -pub struct Transfer { - pub payer: Addr, - pub payee: Addr, - pub amount: (String, Uint128), -} - -#[cw_serde] -#[serde(untagged)] -pub enum SettleOff { - SetOff(Vec), - Transfer(Transfer), -} - -#[cw_serde] -#[derive(Copy)] -pub enum LiquiditySourceType { - Escrow, - Overdraft, - External, -} - -#[cw_serde] -pub struct LiquiditySource { - pub address: Addr, - pub source_type: LiquiditySourceType, -} - -impl std::cmp::Ord for LiquiditySource { - fn cmp(&self, other: &Self) -> Ordering { - self.address.cmp(&other.address) - } -} - -impl PartialOrd for LiquiditySource { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.address.cmp(&other.address)) - } -} - -// PartialEq implemented in #[cw_serde] -impl Eq for LiquiditySource {} - -pub const STATE: Item = Item::new("state"); -pub const OBLIGATIONS_KEY: &str = "obligations"; -pub const SETOFFS_KEY: &str = "setoffs"; -pub const LIQUIDITY_SOURCES_KEY: &str = "epoch_liquidity_sources"; -pub const LIQUIDITY_SOURCES: Map<&str, Vec> = Map::new("liquidity_sources"); - -pub fn current_epoch_key(key: &str, storage: &dyn Storage) -> Result { - epoch_key(key, EPOCH_COUNTER.load(storage)?) -} - -pub fn previous_epoch_key(key: &str, storage: &dyn Storage) -> Result { - 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: Uint64) -> Result { - Ok(format!("{}/{}", epoch, key)) -} diff --git a/apps/mtcs/enclave/Cargo.toml b/apps/mtcs/enclave/Cargo.toml deleted file mode 100644 index 51054f5..0000000 --- a/apps/mtcs/enclave/Cargo.toml +++ /dev/null @@ -1,50 +0,0 @@ -[package] -name = "mtcs-enclave" -version = "0.1.0" -edition = "2021" -authors = ["Informal Systems "] - -[features] -mock-sgx = ["quartz-common/mock-sgx-cw", "quartz-common/mock-sgx-enclave"] - -[dependencies] -# external -async-trait.workspace = true -clap.workspace = true -color-eyre.workspace = true -ecies.workspace = true -hex.workspace = true -k256.workspace = true -prost.workspace = true -serde.workspace = true -serde_json.workspace = true -thiserror.workspace = true -tokio.workspace = true -tonic.workspace = true -uuid.workspace = true -futures-util.workspace = true -anyhow.workspace = true -base64 = "0.22.1" -reqwest.workspace = true - - -# cosmos -cosmrs.workspace = true -cosmwasm-std.workspace = true -tendermint.workspace = true -tendermint-light-client.workspace = true -tendermint-rpc.workspace = true - -# quartz -cw-tee-mtcs.workspace = true -mtcs.workspace = true - -# quartz -quartz-common = { workspace = true, features = ["full"]} -wasmd-client = { workspace = true } - -[dev-dependencies] -cw-multi-test = "2.1.0" - -[build-dependencies] -tonic-build.workspace = true diff --git a/apps/mtcs/enclave/README.md b/apps/mtcs/enclave/README.md deleted file mode 100644 index 59d7565..0000000 --- a/apps/mtcs/enclave/README.md +++ /dev/null @@ -1 +0,0 @@ -## MTCS Server \ No newline at end of file diff --git a/apps/mtcs/enclave/build.rs b/apps/mtcs/enclave/build.rs deleted file mode 100644 index 4f9ea1b..0000000 --- a/apps/mtcs/enclave/build.rs +++ /dev/null @@ -1,6 +0,0 @@ -fn main() -> Result<(), Box> { - tonic_build::configure() - .out_dir("src/prost") - .compile(&["proto/mtcs.proto"], &["proto"])?; - Ok(()) -} diff --git a/apps/mtcs/enclave/proto/mtcs.proto b/apps/mtcs/enclave/proto/mtcs.proto deleted file mode 100644 index e12fc60..0000000 --- a/apps/mtcs/enclave/proto/mtcs.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package mtcs; - -service Clearing { - rpc Run (RunClearingRequest) returns (RunClearingResponse) {} -} - -message RunClearingRequest { - string message = 1; -} - -message RunClearingResponse { - string message = 1; -} \ No newline at end of file diff --git a/apps/mtcs/enclave/quartz.manifest.template b/apps/mtcs/enclave/quartz.manifest.template deleted file mode 100644 index 8cd7187..0000000 --- a/apps/mtcs/enclave/quartz.manifest.template +++ /dev/null @@ -1,61 +0,0 @@ -# Quartz manifest file - -loader.entrypoint = "file:{{ gramine.libos }}" -libos.entrypoint = "{{ quartz_dir }}/target/release/mtcs-enclave" - -loader.log_level = "{{ log_level }}" - -loader.env.LD_LIBRARY_PATH = "/lib:{{ arch_libdir }}:/usr/{{ arch_libdir }}" -loader.env.HOME = "{{ home }}" -loader.env.INSIDE_SGX = "1" -loader.env.TLS = { passthrough = true } -loader.env.RA_TYPE = { passthrough = true } -loader.env.RA_TLS_ALLOW_DEBUG_ENCLAVE_INSECURE = { passthrough = true } -loader.env.RA_TLS_ALLOW_OUTDATED_TCB_INSECURE = { passthrough = true } -loader.env.RA_TLS_MRENCLAVE = { passthrough = true } -loader.env.RA_TLS_MRSIGNER = { passthrough = true } -loader.env.RA_TLS_ISV_SVN = { passthrough = true } -loader.env.RA_TLS_ISV_PROD_ID = { passthrough = true } -loader.env.RA_TLS_EPID_API_KEY = { passthrough = true } -loader.env.MYAPP_DATA = { passthrough = true } -loader.env.QUARTZ_PORT = { passthrough = true } - -loader.argv = ["enclave", - "--chain-id", "testing", - "--fmspc", "{{ fmspc }}", - "--tcbinfo-contract", "{{ tcbinfo_contract }}", - "--dcap-verifier-contract", "{{ dcap_verifier_contract }}", - "--trusted-height", "{{ trusted_height }}", - "--trusted-hash", "{{ trusted_hash }}"] - -fs.mounts = [ - { uri = "file:{{ gramine.runtimedir() }}", path = "/lib" }, - { uri = "file:{{ arch_libdir }}", path = "{{ arch_libdir }}" }, - { uri = "file:/usr/{{ arch_libdir }}", path = "/usr{{ arch_libdir }}" }, - { uri = "file:{{ quartz_dir }}", path = "{{ quartz_dir }}" }, -] - -# sgx.debug = true -sgx.enclave_size = "512M" -sgx.max_threads = 4 -sgx.edmm_enable = {{ 'true' if env.get('EDMM', '0') == '1' else 'false' }} - -sgx.remote_attestation = "{{ ra_type }}" -sgx.ra_client_spid = "{{ ra_client_spid }}" -sgx.ra_client_linkable = {{ 'true' if ra_client_linkable == '1' else 'false' }} - -sgx.trusted_files = [ - "file:{{ gramine.libos }}", - "file:{{ quartz_dir }}/target/release/mtcs-enclave", - "file:{{ gramine.runtimedir() }}/", - "file:{{ arch_libdir }}/", - "file:/usr/{{ arch_libdir }}/", -] - -sgx.allowed_files = [ - "file:{{ quartz_dir }}/exchange.sk", - "file:{{ quartz_dir }}/request.json", -] - -sys.insecure__allow_eventfd = true -sys.enable_sigterm_injection = true \ No newline at end of file diff --git a/apps/mtcs/enclave/src/cli.rs b/apps/mtcs/enclave/src/cli.rs deleted file mode 100644 index 469161b..0000000 --- a/apps/mtcs/enclave/src/cli.rs +++ /dev/null @@ -1,72 +0,0 @@ -use std::net::SocketAddr; - -use clap::Parser; -use color_eyre::eyre::{eyre, Result}; -use cosmrs::AccountId; -use quartz_common::enclave::types::Fmspc; -use tendermint::Hash; -use tendermint_light_client::types::{Height, TrustThreshold}; - -fn parse_trust_threshold(s: &str) -> Result { - if let Some((l, r)) = s.split_once('/') { - TrustThreshold::new(l.parse()?, r.parse()?).map_err(Into::into) - } else { - Err(eyre!( - "invalid trust threshold: {s}, format must be X/Y where X and Y are integers" - )) - } -} - -#[derive(Debug, Parser)] -#[command(author, version, about, long_about = None)] -pub struct Cli { - /// RPC server address - #[clap(long, default_value = "127.0.0.1:11090")] - pub rpc_addr: SocketAddr, - - /// Identifier of the chain - #[clap(long)] - pub chain_id: String, - - /// FMSPC (Family-Model-Stepping-Platform-Custom SKU) - #[clap(long)] - pub fmspc: Option, - - /// TcbInfo contract address - #[clap(long)] - pub tcbinfo_contract: Option, - - /// DCAP verifier contract address - #[clap(long)] - pub dcap_verifier_contract: Option, - - /// Height of the trusted header (AKA root-of-trust) - #[clap(long)] - pub trusted_height: Height, - - /// Hash of the trusted header (AKA root-of-trust) - #[clap(long)] - pub trusted_hash: Hash, - - /// Trust threshold - #[clap(long, value_parser = parse_trust_threshold, default_value_t = TrustThreshold::TWO_THIRDS)] - pub trust_threshold: TrustThreshold, - - /// Trusting period, in seconds (default: two weeks) - #[clap(long, default_value = "1209600")] - pub trusting_period: u64, - - /// Maximum clock drift, in seconds - #[clap(long, default_value = "5")] - pub max_clock_drift: u64, - - /// Maximum block lag, in seconds - #[clap(long, default_value = "5")] - pub max_block_lag: u64, - - #[clap(long, default_value = "127.0.0.1:11090")] - pub node_url: String, - - #[clap(long, default_value = "admin")] - pub tx_sender: String, -} diff --git a/apps/mtcs/enclave/src/lib.rs b/apps/mtcs/enclave/src/lib.rs deleted file mode 100644 index 2265ace..0000000 --- a/apps/mtcs/enclave/src/lib.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod proto; -pub mod types; diff --git a/apps/mtcs/enclave/src/main.rs b/apps/mtcs/enclave/src/main.rs deleted file mode 100644 index 315b15f..0000000 --- a/apps/mtcs/enclave/src/main.rs +++ /dev/null @@ -1,88 +0,0 @@ -#![forbid(unsafe_code)] -#![doc = include_str!("../README.md")] -#![warn( - clippy::checked_conversions, - clippy::panic, - clippy::panic_in_result_fn, - trivial_casts, - trivial_numeric_casts, - rust_2018_idioms, - unused_lifetimes, - unused_import_braces, - unused_qualifications -)] - -mod cli; -mod mtcs_server; -mod proto; -mod types; -mod wslistener; - -use std::{ - sync::{Arc, Mutex}, - time::Duration, -}; - -use clap::Parser; -use cli::Cli; -use mtcs_server::MtcsService; -use quartz_common::{ - contract::state::{Config, LightClientOpts}, - enclave::{ - attestor::{self, Attestor}, - server::{QuartzServer, WsListenerConfig}, - }, -}; - -#[tokio::main(flavor = "current_thread")] -async fn main() -> Result<(), Box> { - let args = Cli::parse(); - - let light_client_opts = LightClientOpts::new( - args.chain_id.clone(), - args.trusted_height.into(), - Vec::from(args.trusted_hash) - .try_into() - .expect("invalid trusted hash"), - ( - args.trust_threshold.numerator(), - args.trust_threshold.denominator(), - ), - args.trusting_period, - args.max_clock_drift, - args.max_block_lag, - )?; - - #[cfg(not(feature = "mock-sgx"))] - let attestor = attestor::DcapAttestor { - fmspc: args.fmspc.expect("FMSPC is required for DCAP"), - }; - - #[cfg(feature = "mock-sgx")] - let attestor = attestor::MockAttestor; - - let config: Config = Config::new( - attestor.mr_enclave()?, - Duration::from_secs(30 * 24 * 60), - light_client_opts, - args.tcbinfo_contract.map(|c| c.to_string()), - args.dcap_verifier_contract.map(|c| c.to_string()), - ); - - let ws_config = WsListenerConfig { - node_url: args.node_url, - tx_sender: args.tx_sender, - trusted_hash: args.trusted_hash, - trusted_height: args.trusted_height, - chain_id: args.chain_id, - }; - - let sk = Arc::new(Mutex::new(None)); - - QuartzServer::new(config.clone(), sk.clone(), attestor.clone(), ws_config) - .add_service(MtcsService::new(config, sk, attestor)) - .serve(args.rpc_addr) - .await?; - - Ok(()) -} diff --git a/apps/mtcs/enclave/src/mtcs_server.rs b/apps/mtcs/enclave/src/mtcs_server.rs deleted file mode 100644 index 7abda9b..0000000 --- a/apps/mtcs/enclave/src/mtcs_server.rs +++ /dev/null @@ -1,180 +0,0 @@ -use std::{ - collections::BTreeMap, - sync::{Arc, Mutex}, -}; - -use cosmwasm_std::{Addr, HexBinary, Uint128}; -use cw_tee_mtcs::{ - msg::execute::SubmitSetoffsMsg, - state::{LiquiditySource, LiquiditySourceType, RawHash, SettleOff, Transfer}, -}; -use ecies::decrypt; -use k256::ecdsa::SigningKey; -use mtcs::{ - algo::mcmf::primal_dual::PrimalDual, impls::complex_id::ComplexIdMtcs, - obligation::SimpleObligation, prelude::DefaultMtcs, setoff::SimpleSetoff, Mtcs, -}; -use quartz_common::{ - contract::{msg::execute::attested::RawAttested, state::Config}, - enclave::{attestor::Attestor, server::IntoServer}, -}; -use tonic::{Request, Response, Result as TonicResult, Status}; -use uuid::Uuid; - -use crate::{ - proto::{ - clearing_server::{Clearing, ClearingServer}, - RunClearingRequest, RunClearingResponse, - }, - types::{ContractObligation, RunClearingMessage}, -}; - -pub type RawCipherText = HexBinary; - -impl IntoServer for MtcsService { - type Server = ClearingServer>; - - fn into_server(self) -> Self::Server { - ClearingServer::new(self) - } -} - -#[derive(Clone, Debug)] -pub struct MtcsService { - #[allow(dead_code)] - config: Config, // TODO: this config is not used anywhere - sk: Arc>>, - attestor: A, -} - -impl MtcsService -where - A: Attestor, -{ - pub fn new(config: Config, sk: Arc>>, attestor: A) -> Self { - Self { - config, - sk, - attestor, - } - } -} - -#[tonic::async_trait] -impl Clearing for MtcsService -where - A: Attestor + Send + Sync + 'static, -{ - async fn run( - &self, - request: Request, - ) -> TonicResult> { - // Light client check - let message: RunClearingMessage = { - let message = request.into_inner().message; - serde_json::from_str(&message).map_err(|e| Status::invalid_argument(e.to_string()))? - }; - - // let (proof_value, message) = message - // .verify(self.config.light_client_opts()) - // .map_err(Status::failed_precondition)?; - - // let proof_value_matches_msg = - // serde_json::to_string(&message.intents).is_ok_and(|s| s.as_bytes() == proof_value); - // if !proof_value_matches_msg { - // return Err(Status::failed_precondition("proof verification")); - // } - // TODO: ensure no duplicates somewhere else! - let liquidity_sources: Vec = - message.liquidity_sources.into_iter().collect(); - let digests_ciphertexts: BTreeMap = message.intents; - let (digests, ciphertexts): (Vec<_>, Vec<_>) = digests_ciphertexts.into_iter().unzip(); - - let sk = self.sk.lock().unwrap(); - let obligations: Vec> = ciphertexts - .into_iter() - .map(|ciphertext| decrypt_obligation(sk.as_ref().unwrap(), &ciphertext)) - .collect(); - - let mut mtcs = ComplexIdMtcs::wrapping(DefaultMtcs::new(PrimalDual::default())); - - let setoffs: Vec> = mtcs.run(obligations).unwrap(); - let setoffs_enc: BTreeMap = setoffs - .into_iter() - .map(|so| into_settle_offs(so, &liquidity_sources)) - .zip(digests) - .map(|(settle_off, digest)| (digest, settle_off)) - .collect(); - - let msg = SubmitSetoffsMsg { setoffs_enc }; - println!("setoff_msg: {:?}", msg); - - let attestation = self - .attestor - .attestation(msg.clone()) - .map_err(|e| Status::internal(e.to_string()))?; - - let attested_msg = RawAttested { - msg, - attestation: A::RawAttestation::from(attestation), - }; - let message = serde_json::to_string(&attested_msg).unwrap(); - Ok(Response::new(RunClearingResponse { message })) - } -} - -// TODO Switch from Vec<_> to Vec -fn into_settle_offs( - so: SimpleSetoff, - liquidity_sources: &Vec, -) -> SettleOff { - println!("\nsetoff: {:?}", so); - println!("\nliq sources: {:?}", liquidity_sources); - - // TODO: temporary patch, fix issue with liquidity sources becoming type External so that .contains() can be called directly - let liquidity_sources_addrs = liquidity_sources - .iter() - .map(|lqs| lqs.address.clone()) - .collect::>(); - - // In tenders and acceptances, the creditor's balance decreases - if liquidity_sources_addrs.contains(&so.debtor.address) - || liquidity_sources_addrs.contains(&so.creditor.address) - { - SettleOff::Transfer(Transfer { - payer: so.creditor.address.clone(), - payee: so.debtor.address.clone(), - // TODO: Include denominations - amount: ("peppicoin".to_owned(), Uint128::from(so.set_off as u128)), - }) - } else { - // TODO: Tracked by issue #22 - - // A no-op for the time being. - SettleOff::SetOff(vec![]) - } -} - -fn decrypt_obligation( - sk: &SigningKey, - ciphertext: &RawCipherText, -) -> SimpleObligation { - let o: ContractObligation = { - let o = decrypt(&sk.to_bytes(), ciphertext).unwrap(); - serde_json::from_slice(&o).unwrap() - }; - - SimpleObligation::new( - None, - LiquiditySource { - address: o.debtor, - source_type: LiquiditySourceType::External, - }, - LiquiditySource { - address: o.creditor, - source_type: LiquiditySourceType::External, - }, - i64::try_from(o.amount).unwrap(), - ) - .unwrap() -} diff --git a/apps/mtcs/enclave/src/prost/mtcs.rs b/apps/mtcs/enclave/src/prost/mtcs.rs deleted file mode 100644 index 34d11d3..0000000 --- a/apps/mtcs/enclave/src/prost/mtcs.rs +++ /dev/null @@ -1,290 +0,0 @@ -// This file is @generated by prost-build. -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct RunClearingRequest { - #[prost(string, tag = "1")] - pub message: ::prost::alloc::string::String, -} -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct RunClearingResponse { - #[prost(string, tag = "1")] - pub message: ::prost::alloc::string::String, -} -/// Generated client implementations. -pub mod clearing_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] - use tonic::codegen::*; - use tonic::codegen::http::Uri; - #[derive(Debug, Clone)] - pub struct ClearingClient { - inner: tonic::client::Grpc, - } - impl ClearingClient { - /// Attempt to create a new client by connecting to a given endpoint. - pub async fn connect(dst: D) -> Result - where - D: TryInto, - D::Error: Into, - { - let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; - Ok(Self::new(conn)) - } - } - impl ClearingClient - where - T: tonic::client::GrpcService, - T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, - { - pub fn new(inner: T) -> Self { - let inner = tonic::client::Grpc::new(inner); - Self { inner } - } - pub fn with_origin(inner: T, origin: Uri) -> Self { - let inner = tonic::client::Grpc::with_origin(inner, origin); - Self { inner } - } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> ClearingClient> - where - F: tonic::service::Interceptor, - T::ResponseBody: Default, - T: tonic::codegen::Service< - http::Request, - Response = http::Response< - >::ResponseBody, - >, - >, - , - >>::Error: Into + Send + Sync, - { - ClearingClient::new(InterceptedService::new(inner, interceptor)) - } - /// Compress requests with the given encoding. - /// - /// This requires the server to support it otherwise it might respond with an - /// error. - #[must_use] - pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.inner = self.inner.send_compressed(encoding); - self - } - /// Enable decompressing responses. - #[must_use] - pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.inner = self.inner.accept_compressed(encoding); - self - } - /// Limits the maximum size of a decoded message. - /// - /// Default: `4MB` - #[must_use] - pub fn max_decoding_message_size(mut self, limit: usize) -> Self { - self.inner = self.inner.max_decoding_message_size(limit); - self - } - /// Limits the maximum size of an encoded message. - /// - /// Default: `usize::MAX` - #[must_use] - pub fn max_encoding_message_size(mut self, limit: usize) -> Self { - self.inner = self.inner.max_encoding_message_size(limit); - self - } - pub async fn run( - &mut self, - request: impl tonic::IntoRequest, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - > { - self.inner - .ready() - .await - .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, - format!("Service was not ready: {}", e.into()), - ) - })?; - let codec = tonic::codec::ProstCodec::default(); - let path = http::uri::PathAndQuery::from_static("/mtcs.Clearing/Run"); - let mut req = request.into_request(); - req.extensions_mut().insert(GrpcMethod::new("mtcs.Clearing", "Run")); - self.inner.unary(req, path, codec).await - } - } -} -/// Generated server implementations. -pub mod clearing_server { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] - use tonic::codegen::*; - /// Generated trait containing gRPC methods that should be implemented for use with ClearingServer. - #[async_trait] - pub trait Clearing: Send + Sync + 'static { - async fn run( - &self, - request: tonic::Request, - ) -> std::result::Result< - tonic::Response, - tonic::Status, - >; - } - #[derive(Debug)] - pub struct ClearingServer { - inner: Arc, - accept_compression_encodings: EnabledCompressionEncodings, - send_compression_encodings: EnabledCompressionEncodings, - max_decoding_message_size: Option, - max_encoding_message_size: Option, - } - impl ClearingServer { - pub fn new(inner: T) -> Self { - Self::from_arc(Arc::new(inner)) - } - pub fn from_arc(inner: Arc) -> Self { - Self { - inner, - accept_compression_encodings: Default::default(), - send_compression_encodings: Default::default(), - max_decoding_message_size: None, - max_encoding_message_size: None, - } - } - pub fn with_interceptor( - inner: T, - interceptor: F, - ) -> InterceptedService - where - F: tonic::service::Interceptor, - { - InterceptedService::new(Self::new(inner), interceptor) - } - /// Enable decompressing requests with the given encoding. - #[must_use] - pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.accept_compression_encodings.enable(encoding); - self - } - /// Compress responses with the given encoding, if the client supports it. - #[must_use] - pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self { - self.send_compression_encodings.enable(encoding); - self - } - /// Limits the maximum size of a decoded message. - /// - /// Default: `4MB` - #[must_use] - pub fn max_decoding_message_size(mut self, limit: usize) -> Self { - self.max_decoding_message_size = Some(limit); - self - } - /// Limits the maximum size of an encoded message. - /// - /// Default: `usize::MAX` - #[must_use] - pub fn max_encoding_message_size(mut self, limit: usize) -> Self { - self.max_encoding_message_size = Some(limit); - self - } - } - impl tonic::codegen::Service> for ClearingServer - where - T: Clearing, - B: Body + Send + 'static, - B::Error: Into + Send + 'static, - { - type Response = http::Response; - type Error = std::convert::Infallible; - type Future = BoxFuture; - fn poll_ready( - &mut self, - _cx: &mut Context<'_>, - ) -> Poll> { - Poll::Ready(Ok(())) - } - fn call(&mut self, req: http::Request) -> Self::Future { - match req.uri().path() { - "/mtcs.Clearing/Run" => { - #[allow(non_camel_case_types)] - struct RunSvc(pub Arc); - impl< - T: Clearing, - > tonic::server::UnaryService - for RunSvc { - type Response = super::RunClearingResponse; - type Future = BoxFuture< - tonic::Response, - tonic::Status, - >; - fn call( - &mut self, - request: tonic::Request, - ) -> Self::Future { - let inner = Arc::clone(&self.0); - let fut = async move { - ::run(&inner, request).await - }; - Box::pin(fut) - } - } - let accept_compression_encodings = self.accept_compression_encodings; - let send_compression_encodings = self.send_compression_encodings; - let max_decoding_message_size = self.max_decoding_message_size; - let max_encoding_message_size = self.max_encoding_message_size; - let inner = self.inner.clone(); - let fut = async move { - let method = RunSvc(inner); - let codec = tonic::codec::ProstCodec::default(); - let mut grpc = tonic::server::Grpc::new(codec) - .apply_compression_config( - accept_compression_encodings, - send_compression_encodings, - ) - .apply_max_message_size_config( - max_decoding_message_size, - max_encoding_message_size, - ); - let res = grpc.unary(method, req).await; - Ok(res) - }; - Box::pin(fut) - } - _ => { - Box::pin(async move { - Ok( - http::Response::builder() - .status(200) - .header("grpc-status", tonic::Code::Unimplemented as i32) - .header( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ) - .body(empty_body()) - .unwrap(), - ) - }) - } - } - } - } - impl Clone for ClearingServer { - fn clone(&self) -> Self { - let inner = self.inner.clone(); - Self { - inner, - accept_compression_encodings: self.accept_compression_encodings, - send_compression_encodings: self.send_compression_encodings, - max_decoding_message_size: self.max_decoding_message_size, - max_encoding_message_size: self.max_encoding_message_size, - } - } - } - impl tonic::server::NamedService for ClearingServer { - const NAME: &'static str = "mtcs.Clearing"; - } -} diff --git a/apps/mtcs/enclave/src/proto.rs b/apps/mtcs/enclave/src/proto.rs deleted file mode 100644 index 99cb67e..0000000 --- a/apps/mtcs/enclave/src/proto.rs +++ /dev/null @@ -1,3 +0,0 @@ -#![allow(clippy::unwrap_used, unused_qualifications)] - -include!(concat!("prost/", "mtcs.rs")); diff --git a/apps/mtcs/enclave/src/types.rs b/apps/mtcs/enclave/src/types.rs deleted file mode 100644 index a8d7279..0000000 --- a/apps/mtcs/enclave/src/types.rs +++ /dev/null @@ -1,68 +0,0 @@ -use std::collections::{BTreeMap, BTreeSet}; - -use cosmwasm_std::{Addr, HexBinary}; -use cw_tee_mtcs::state::{LiquiditySource, RawCipherText, RawHash}; -use serde::{Deserialize, Serialize}; - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct RunClearingMessage { - pub intents: BTreeMap, - pub liquidity_sources: BTreeSet, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct ContractObligation { - pub debtor: Addr, - pub creditor: Addr, - pub amount: u64, - #[serde(default)] - pub salt: HexBinary, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct RawObligation { - pub debtor: HexBinary, - pub creditor: HexBinary, - pub amount: u64, - #[serde(default)] - pub salt: HexBinary, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct RawEncryptedObligation { - pub digest: HexBinary, - pub ciphertext: HexBinary, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SubmitObligationsMsg { - pub submit_obligations: SubmitObligationsMsgInner, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SubmitObligationsMsgInner { - pub obligations: Vec, - pub liquidity_sources: Vec, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(untagged)] -pub enum RawSetOff { - SetOff(Vec), - Transfer(RawSetOffTransfer), -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct RawSetOffTransfer { - pub payer: String, - pub payee: String, - pub amount: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct RawOffset { - pub debtor: HexBinary, - pub creditor: HexBinary, - pub amount: u64, - pub set_off: u64, -} diff --git a/apps/mtcs/enclave/src/wslistener.rs b/apps/mtcs/enclave/src/wslistener.rs deleted file mode 100644 index 1849c7d..0000000 --- a/apps/mtcs/enclave/src/wslistener.rs +++ /dev/null @@ -1,231 +0,0 @@ -//TODO: get rid of this -use std::{collections::BTreeMap, str::FromStr}; - -use anyhow::{anyhow, Result}; -use base64::prelude::*; -use cosmrs::{tendermint::chain::Id as ChainId, AccountId}; -use cosmwasm_std::{HexBinary, Uint64}; -use cw_tee_mtcs::msg::{ - execute::SubmitSetoffsMsg, AttestedMsg, ExecuteMsg, GetLiquiditySourcesResponse, - QueryMsg::GetLiquiditySources, -}; -use quartz_common::{ - contract::msg::execute::attested::{ - MockAttestation, RawAttested, RawAttestedMsgSansHandler, RawMockAttestation, - }, - enclave::{ - attestor::Attestor, - server::{WebSocketHandler, WsListenerConfig}, - }, -}; -use reqwest::Url; -// use quartz_tee_ra::{intel_sgx::epid::types::ReportBody, IASReport}; -use serde_json::json; -use tendermint_rpc::{event::Event, query::EventType}; -use tonic::Request; -use wasmd_client::{CliWasmdClient, QueryResult, WasmdClient}; - -use crate::{ - mtcs_server::MtcsService, - proto::{clearing_server::Clearing, RunClearingRequest}, - types::RunClearingMessage, -}; - -// TODO: Need to prevent listener from taking actions until handshake is completed -#[async_trait::async_trait] -impl WebSocketHandler for MtcsService { - async fn handle(&self, event: Event, config: WsListenerConfig) -> Result<()> { - // Validation - if !is_init_clearing_event(&event) { - return Ok(()); - } else { - println!("Found clearing event"); - - let mut sender = None; - let mut contract_address = None; - - if let Some(events) = &event.events { - for (key, values) in events { - match key.as_str() { - "message.sender" => { - sender = values.first().cloned(); - } - "wasm._contract_address" => { - contract_address = values.first().cloned(); - } - _ => {} - } - } - } - - // TODO: add some checks based on event messages - - if sender.is_none() || contract_address.is_none() { - return Ok(()); // TODO: change return type - } - - handler( - self, - &contract_address - .expect("infallible") - .parse::() - .map_err(|e| anyhow!(e))?, - sender.expect("infallible"), - &config.node_url, - ) - .await?; - } - - Ok(()) - } -} - -fn is_init_clearing_event(event: &Event) -> bool { - // Check if the event is a transaction type - if let Some(EventType::Tx) = event.event_type() { - // Check for the "wasm.action" key with the value "init_clearing" - if let Some(events) = &event.events { - return events.iter().any(|(key, values)| { - key == "wasm.action" && values.contains(&"init_clearing".to_string()) - }); - } - } - false -} - -async fn handler( - client: &MtcsService, - contract: &AccountId, - sender: String, - node_url: &str, -) -> Result<()> { - let chain_id = &ChainId::from_str("testing")?; - let httpurl = Url::parse(&format!("http://{}", node_url))?; - let wasmd_client = CliWasmdClient::new(httpurl); - - // Query obligations and liquidity sources from chain - let clearing_contents = query_chain(&wasmd_client, contract).await?; - - // Send queried data to enclave over gRPC - let request = Request::new(RunClearingRequest { - message: json!(clearing_contents).to_string(), - }); - - let clearing_response = client - .run(request) - .await - .map_err(|e| anyhow!("Failed to communicate to relayer. {e}"))? - .into_inner(); - // Extract json from the Protobuf message - let attested: RawAttested> = - serde_json::from_str(&clearing_response.message) - .map_err(|e| anyhow!("Error serializing SubmitSetoffs: {}", e))?; - - // TODO add non-mock support, get IAS report and build attested message - let msg = RawAttestedMsgSansHandler(attested.msg); - - let setoffs_msg = ExecuteMsg::SubmitSetoffs::(AttestedMsg { - msg, - attestation: MockAttestation(attested.attestation.try_into().unwrap()).into(), - }); - - // Send setoffs to mtcs contract on chain - let output = - wasmd_client.tx_execute(contract, chain_id, 2000000, &sender, json!(setoffs_msg))?; - - println!("Setoffs TX: {}", output); - Ok(()) -} - -// TODO: replace raw queries with smart -async fn query_chain( - wasmd_client: &CliWasmdClient, - contract: &AccountId, -) -> Result { - // Get epoch counter - let resp: QueryResult = wasmd_client - .query_raw(contract, hex::encode("epoch_counter")) - .map_err(|e| anyhow!("Problem querying epoch: {}", e))?; - - let mut epoch_counter: usize = String::from_utf8(BASE64_STANDARD.decode(resp.data)?)? - .trim_matches('"') - .parse::()?; - - if epoch_counter > 1 { - epoch_counter -= 1; - } - - // TODO: replace with tracer log here - // println!("epoch: {}", epoch_counter); - - // Get obligations - let resp: QueryResult = wasmd_client - .query_raw( - contract, - hex::encode(format!("{}/obligations", epoch_counter)), - ) - .map_err(|e| anyhow!("Problem querying obligatons: {}", e))?; - - let decoded_obligs = BASE64_STANDARD.decode(resp.data)?; - let obligations_map: BTreeMap = - serde_json::from_slice(&decoded_obligs).unwrap_or_default(); - // println!("obligations \n {:?}", obligations_map); - // TODO: replace with tracer log here - - // Get liquidity sources - let resp: QueryResult = wasmd_client - .query_smart( - contract, - json!(GetLiquiditySources { - epoch: Some(Uint64::new(epoch_counter as u64)) - }), - ) - .map_err(|e| anyhow!("Problem querying liquidity sources: {}", e))?; - - let liquidity_sources = resp.data.liquidity_sources; - // TODO: replace with tracer log here - // println!("liquidity_sources \n {:?}", liquidity_sources); - - Ok(RunClearingMessage { - intents: obligations_map, - liquidity_sources: liquidity_sources.into_iter().collect(), - }) -} - -// Request the IAS report for EPID attestations -// async fn gramine_ias_request( -// attested_msg: Vec, -// user: &str, -// ) -> Result { -// let ias_api_key = String::from("669244b3e6364b5888289a11d2a1726d"); -// let ra_client_spid = String::from("51CAF5A48B450D624AEFE3286D314894"); -// let quote_file = format!("/tmp/{}_test.quote", user); -// let report_file = format!("/tmp/{}_datareport", user); -// let report_sig_file = format!("/tmp/{}_datareportsig", user); - -// // Write the binary data to a file -// let mut file = File::create("e_file).await?; -// file.write_all(&attested_msg) -// .await -// .map_err(|e| anyhow!("Couldn't write to file. {e}"))?; - -// let mut gramine = Command::new("gramine-sgx-ias-request"); -// let command = gramine -// .arg("report") -// .args(["-g", &ra_client_spid]) -// .args(["-k", &ias_api_key]) -// .args(["-q", "e_file]) -// .args(["-r", &report_file]) -// .args(["-s", &report_sig_file]); - -// let output = command.output()?; -// if !output.status.success() { -// return Err(anyhow!("Couldn't run gramine. {:?}", output)); -// } - -// let report: ReportBody = serde_json::from_str(&fs::read_to_string(report_file).await?)?; -// let report_sig_str = fs::read_to_string(report_sig_file).await?.replace('\r', ""); -// let report_sig: Binary = Binary::from_base64(report_sig_str.trim())?; - -// Ok(EpidAttestation::new(IASReport { report, report_sig })) -// } diff --git a/apps/transfers/.cargo/config.toml b/apps/transfers/.cargo/config.toml deleted file mode 100644 index a6b014e..0000000 --- a/apps/transfers/.cargo/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[build] -target-dir = "target" diff --git a/apps/transfers/contracts/deploy-contract.sh b/apps/transfers/contracts/deploy-contract.sh deleted file mode 100755 index 2a2a940..0000000 --- a/apps/transfers/contracts/deploy-contract.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -# Deploy the specified contract's `WASM_BIN` to the chain specified by `CHAIN_ID` using the `USER_ADDR` account. - -set -eo pipefail - -usage() { - echo "Usage: $0 WASM_BIN [COUNT]" - echo "Example: $0 artifacts/cofi_karma_game.wasm" - exit 1 -} - -if [ -z "$1" ]; then - echo "❌ Error: Missing WASM_BIN parameter. Please check if all parameters were specified." - usage -fi - -if [ "$#" -gt 9 ]; then - echo "❌ Error: Incorrect number of parameters." - usage -fi - -USER_ADDR=${USER_ADDR:-$(wasmd keys show -a admin)} -WASM_BIN="$1" -CHAIN_ID=${CHAIN_ID:-testing} -NODE_URL=${NODE_URL:-127.0.0.1:26657} -LABEL=${LABEL:-bisenzone-mvp} -COUNT=${COUNT:-0} -INSTANTIATE_MSG=${INSTANTIATE_MSG:-"null"} - -TXFLAG="--chain-id ${CHAIN_ID} --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3" - -CMD="wasmd --node http://$NODE_URL" - -echo "🚀 Deploying WASM contract '${WASM_BIN}' on chain '${CHAIN_ID}' using account '${USER_ADDR}'..." -echo " with cmd : $CMD" -echo "====================================================================" - -RES=$($CMD tx wasm store "$WASM_BIN" --from "$USER_ADDR" $TXFLAG -y --output json) -echo $RES -TX_HASH=$(echo $RES | jq -r '.["txhash"]') - -while ! $CMD query tx $TX_HASH &> /dev/null; do - echo "... 🕐 waiting for contract to deploy from tx hash $TX_HASH" - sleep 1 -done - -RES=$($CMD query tx "$TX_HASH" --output json) -CODE_ID=$(echo $RES | jq -r '.logs[0].events[1].attributes[1].value') - -echo "" -echo "🚀 Instantiating contract with the following parameters:" -echo "--------------------------------------------------------" -echo "Label: ${LABEL}" -echo "--------------------------------------------------------" - -RES=$($CMD tx wasm instantiate "$CODE_ID" "$INSTANTIATE_MSG" --from "$USER_ADDR" --label $LABEL $TXFLAG -y --no-admin --output json) -TX_HASH=$(echo $RES | jq -r '.["txhash"]') - - -echo "" -while ! $CMD query tx $TX_HASH &> /dev/null; do - echo "... 🕐 waiting for contract to be queryable from tx hash $TX_HASH" - sleep 1 -done - -RES=$($CMD query wasm list-contract-by-code "$CODE_ID" --output json) -CONTRACT=$(echo $RES | jq -r '.contracts[0]') - -echo "🚀 Successfully deployed and instantiated contract!" -echo "🔗 Chain ID: ${CHAIN_ID}" -echo "🆔 Code ID: ${CODE_ID}" -echo "📌 Contract Address: ${CONTRACT}" -echo "🔑 Contract Key: ${KEY}" -echo "🔖 Contract Label: ${LABEL}" diff --git a/apps/transfers/contracts/schema/raw/execute.json b/apps/transfers/contracts/schema/raw/execute.json deleted file mode 100644 index acacbcb..0000000 --- a/apps/transfers/contracts/schema/raw/execute.json +++ /dev/null @@ -1,321 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "type": "string", - "enum": [ - "deposit", - "withdraw" - ] - }, - { - "type": "object", - "required": [ - "quartz" - ], - "properties": { - "quartz": { - "$ref": "#/definitions/RawExecute_for_RawEpidAttestation" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "transfer_request" - ], - "properties": { - "transfer_request": { - "$ref": "#/definitions/TransferRequestMsg" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "clear_text_transfer_request" - ], - "properties": { - "clear_text_transfer_request": { - "$ref": "#/definitions/ClearTextTransferRequestMsg" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update" - ], - "properties": { - "update": { - "$ref": "#/definitions/RawAttested_for_RawUpdateMsg_and_RawEpidAttestation" - } - }, - "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" - }, - "ClearTextTransferRequestMsg": { - "type": "object", - "required": [ - "amount", - "receiver", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "receiver": { - "$ref": "#/definitions/Addr" - }, - "sender": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - }, - "HexBinary": { - "description": "This is a wrapper around Vec to add hex de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is similar to `cosmwasm_std::Binary` but uses hex. See also .", - "type": "string" - }, - "IASReport": { - "type": "object", - "required": [ - "report", - "reportsig" - ], - "properties": { - "report": { - "$ref": "#/definitions/ReportBody" - }, - "reportsig": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawSessionCreate_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawSessionCreate" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawSessionSetPubKey_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawSessionSetPubKey" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawUpdateMsg_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawUpdateMsg" - } - }, - "additionalProperties": false - }, - "RawEpidAttestation": { - "type": "object", - "required": [ - "report" - ], - "properties": { - "report": { - "$ref": "#/definitions/IASReport" - } - }, - "additionalProperties": false - }, - "RawExecute_for_RawEpidAttestation": { - "oneOf": [ - { - "type": "object", - "required": [ - "session_create" - ], - "properties": { - "session_create": { - "$ref": "#/definitions/RawAttested_for_RawSessionCreate_and_RawEpidAttestation" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "session_set_pub_key" - ], - "properties": { - "session_set_pub_key": { - "$ref": "#/definitions/RawAttested_for_RawSessionSetPubKey_and_RawEpidAttestation" - } - }, - "additionalProperties": false - } - ] - }, - "RawSessionCreate": { - "type": "object", - "required": [ - "nonce" - ], - "properties": { - "nonce": { - "$ref": "#/definitions/HexBinary" - } - }, - "additionalProperties": false - }, - "RawSessionSetPubKey": { - "type": "object", - "required": [ - "nonce", - "pub_key" - ], - "properties": { - "nonce": { - "$ref": "#/definitions/HexBinary" - }, - "pub_key": { - "$ref": "#/definitions/HexBinary" - } - }, - "additionalProperties": false - }, - "RawUpdateMsg": { - "type": "object", - "required": [ - "ciphertext", - "quantity", - "withdrawals" - ], - "properties": { - "ciphertext": { - "$ref": "#/definitions/HexBinary" - }, - "quantity": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "withdrawals": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Uint128" - } - } - }, - "additionalProperties": false - }, - "ReportBody": { - "type": "object", - "required": [ - "advisoryIDs", - "advisoryURL", - "epidPseudonym", - "id", - "isvEnclaveQuoteBody", - "isvEnclaveQuoteStatus", - "platformInfoBlob", - "timestamp", - "version" - ], - "properties": { - "advisoryIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "advisoryURL": { - "type": "string" - }, - "epidPseudonym": { - "$ref": "#/definitions/Binary" - }, - "id": { - "type": "string" - }, - "isvEnclaveQuoteBody": { - "$ref": "#/definitions/Binary" - }, - "isvEnclaveQuoteStatus": { - "type": "string" - }, - "platformInfoBlob": { - "type": "string" - }, - "timestamp": { - "type": "string" - }, - "version": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - "TransferRequestMsg": { - "type": "object", - "required": [ - "ciphertext", - "digest" - ], - "properties": { - "ciphertext": { - "$ref": "#/definitions/HexBinary" - }, - "digest": { - "$ref": "#/definitions/HexBinary" - } - }, - "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" - } - } -} diff --git a/apps/transfers/contracts/schema/raw/instantiate.json b/apps/transfers/contracts/schema/raw/instantiate.json deleted file mode 100644 index cb9854a..0000000 --- a/apps/transfers/contracts/schema/raw/instantiate.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "type": "object", - "required": [ - "denom", - "quartz" - ], - "properties": { - "denom": { - "type": "string" - }, - "quartz": { - "$ref": "#/definitions/RawInstantiate_for_RawEpidAttestation" - } - }, - "additionalProperties": false, - "definitions": { - "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" - }, - "Duration": { - "type": "object", - "required": [ - "nanos", - "secs" - ], - "properties": { - "nanos": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "secs": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "HexBinary": { - "description": "This is a wrapper around Vec to add hex de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is similar to `cosmwasm_std::Binary` but uses hex. See also .", - "type": "string" - }, - "IASReport": { - "type": "object", - "required": [ - "report", - "reportsig" - ], - "properties": { - "report": { - "$ref": "#/definitions/ReportBody" - }, - "reportsig": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawCoreInstantiate_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawCoreInstantiate" - } - }, - "additionalProperties": false - }, - "RawConfig": { - "type": "object", - "required": [ - "epoch_duration", - "light_client_opts", - "mr_enclave" - ], - "properties": { - "epoch_duration": { - "$ref": "#/definitions/Duration" - }, - "light_client_opts": { - "$ref": "#/definitions/RawLightClientOpts" - }, - "mr_enclave": { - "$ref": "#/definitions/HexBinary" - } - }, - "additionalProperties": false - }, - "RawCoreInstantiate": { - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "$ref": "#/definitions/RawConfig" - } - }, - "additionalProperties": false - }, - "RawEpidAttestation": { - "type": "object", - "required": [ - "report" - ], - "properties": { - "report": { - "$ref": "#/definitions/IASReport" - } - }, - "additionalProperties": false - }, - "RawInstantiate_for_RawEpidAttestation": { - "$ref": "#/definitions/RawAttested_for_RawCoreInstantiate_and_RawEpidAttestation" - }, - "RawLightClientOpts": { - "type": "object", - "required": [ - "chain_id", - "max_block_lag", - "max_clock_drift", - "trust_threshold", - "trusted_hash", - "trusted_height", - "trusting_period" - ], - "properties": { - "chain_id": { - "type": "string" - }, - "max_block_lag": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "max_clock_drift": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "trust_threshold": { - "type": "array", - "items": [ - { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - ], - "maxItems": 2, - "minItems": 2 - }, - "trusted_hash": { - "$ref": "#/definitions/HexBinary" - }, - "trusted_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "trusting_period": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - "ReportBody": { - "type": "object", - "required": [ - "advisoryIDs", - "advisoryURL", - "epidPseudonym", - "id", - "isvEnclaveQuoteBody", - "isvEnclaveQuoteStatus", - "platformInfoBlob", - "timestamp", - "version" - ], - "properties": { - "advisoryIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "advisoryURL": { - "type": "string" - }, - "epidPseudonym": { - "$ref": "#/definitions/Binary" - }, - "id": { - "type": "string" - }, - "isvEnclaveQuoteBody": { - "$ref": "#/definitions/Binary" - }, - "isvEnclaveQuoteStatus": { - "type": "string" - }, - "platformInfoBlob": { - "type": "string" - }, - "timestamp": { - "type": "string" - }, - "version": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } -} diff --git a/apps/transfers/contracts/schema/transfers.json b/apps/transfers/contracts/schema/transfers.json deleted file mode 100644 index 9843e0d..0000000 --- a/apps/transfers/contracts/schema/transfers.json +++ /dev/null @@ -1,563 +0,0 @@ -{ - "contract_name": "transfers", - "contract_version": "0.1.0", - "idl_version": "1.0.0", - "instantiate": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "InstantiateMsg", - "type": "object", - "required": [ - "denom", - "quartz" - ], - "properties": { - "denom": { - "type": "string" - }, - "quartz": { - "$ref": "#/definitions/RawInstantiate_for_RawEpidAttestation" - } - }, - "additionalProperties": false, - "definitions": { - "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" - }, - "Duration": { - "type": "object", - "required": [ - "nanos", - "secs" - ], - "properties": { - "nanos": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "secs": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "HexBinary": { - "description": "This is a wrapper around Vec to add hex de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is similar to `cosmwasm_std::Binary` but uses hex. See also .", - "type": "string" - }, - "IASReport": { - "type": "object", - "required": [ - "report", - "reportsig" - ], - "properties": { - "report": { - "$ref": "#/definitions/ReportBody" - }, - "reportsig": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawCoreInstantiate_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawCoreInstantiate" - } - }, - "additionalProperties": false - }, - "RawConfig": { - "type": "object", - "required": [ - "epoch_duration", - "light_client_opts", - "mr_enclave" - ], - "properties": { - "epoch_duration": { - "$ref": "#/definitions/Duration" - }, - "light_client_opts": { - "$ref": "#/definitions/RawLightClientOpts" - }, - "mr_enclave": { - "$ref": "#/definitions/HexBinary" - } - }, - "additionalProperties": false - }, - "RawCoreInstantiate": { - "type": "object", - "required": [ - "config" - ], - "properties": { - "config": { - "$ref": "#/definitions/RawConfig" - } - }, - "additionalProperties": false - }, - "RawEpidAttestation": { - "type": "object", - "required": [ - "report" - ], - "properties": { - "report": { - "$ref": "#/definitions/IASReport" - } - }, - "additionalProperties": false - }, - "RawInstantiate_for_RawEpidAttestation": { - "$ref": "#/definitions/RawAttested_for_RawCoreInstantiate_and_RawEpidAttestation" - }, - "RawLightClientOpts": { - "type": "object", - "required": [ - "chain_id", - "max_block_lag", - "max_clock_drift", - "trust_threshold", - "trusted_hash", - "trusted_height", - "trusting_period" - ], - "properties": { - "chain_id": { - "type": "string" - }, - "max_block_lag": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "max_clock_drift": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "trust_threshold": { - "type": "array", - "items": [ - { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - ], - "maxItems": 2, - "minItems": 2 - }, - "trusted_hash": { - "$ref": "#/definitions/HexBinary" - }, - "trusted_height": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "trusting_period": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - "ReportBody": { - "type": "object", - "required": [ - "advisoryIDs", - "advisoryURL", - "epidPseudonym", - "id", - "isvEnclaveQuoteBody", - "isvEnclaveQuoteStatus", - "platformInfoBlob", - "timestamp", - "version" - ], - "properties": { - "advisoryIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "advisoryURL": { - "type": "string" - }, - "epidPseudonym": { - "$ref": "#/definitions/Binary" - }, - "id": { - "type": "string" - }, - "isvEnclaveQuoteBody": { - "$ref": "#/definitions/Binary" - }, - "isvEnclaveQuoteStatus": { - "type": "string" - }, - "platformInfoBlob": { - "type": "string" - }, - "timestamp": { - "type": "string" - }, - "version": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - } - } - }, - "execute": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "ExecuteMsg", - "oneOf": [ - { - "type": "string", - "enum": [ - "deposit", - "withdraw" - ] - }, - { - "type": "object", - "required": [ - "quartz" - ], - "properties": { - "quartz": { - "$ref": "#/definitions/RawExecute_for_RawEpidAttestation" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "transfer_request" - ], - "properties": { - "transfer_request": { - "$ref": "#/definitions/TransferRequestMsg" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "clear_text_transfer_request" - ], - "properties": { - "clear_text_transfer_request": { - "$ref": "#/definitions/ClearTextTransferRequestMsg" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "update" - ], - "properties": { - "update": { - "$ref": "#/definitions/RawAttested_for_RawUpdateMsg_and_RawEpidAttestation" - } - }, - "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" - }, - "ClearTextTransferRequestMsg": { - "type": "object", - "required": [ - "amount", - "receiver", - "sender" - ], - "properties": { - "amount": { - "$ref": "#/definitions/Uint128" - }, - "receiver": { - "$ref": "#/definitions/Addr" - }, - "sender": { - "$ref": "#/definitions/Addr" - } - }, - "additionalProperties": false - }, - "HexBinary": { - "description": "This is a wrapper around Vec to add hex de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is similar to `cosmwasm_std::Binary` but uses hex. See also .", - "type": "string" - }, - "IASReport": { - "type": "object", - "required": [ - "report", - "reportsig" - ], - "properties": { - "report": { - "$ref": "#/definitions/ReportBody" - }, - "reportsig": { - "$ref": "#/definitions/Binary" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawSessionCreate_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawSessionCreate" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawSessionSetPubKey_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawSessionSetPubKey" - } - }, - "additionalProperties": false - }, - "RawAttested_for_RawUpdateMsg_and_RawEpidAttestation": { - "type": "object", - "required": [ - "attestation", - "msg" - ], - "properties": { - "attestation": { - "$ref": "#/definitions/RawEpidAttestation" - }, - "msg": { - "$ref": "#/definitions/RawUpdateMsg" - } - }, - "additionalProperties": false - }, - "RawEpidAttestation": { - "type": "object", - "required": [ - "report" - ], - "properties": { - "report": { - "$ref": "#/definitions/IASReport" - } - }, - "additionalProperties": false - }, - "RawExecute_for_RawEpidAttestation": { - "oneOf": [ - { - "type": "object", - "required": [ - "session_create" - ], - "properties": { - "session_create": { - "$ref": "#/definitions/RawAttested_for_RawSessionCreate_and_RawEpidAttestation" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "session_set_pub_key" - ], - "properties": { - "session_set_pub_key": { - "$ref": "#/definitions/RawAttested_for_RawSessionSetPubKey_and_RawEpidAttestation" - } - }, - "additionalProperties": false - } - ] - }, - "RawSessionCreate": { - "type": "object", - "required": [ - "nonce" - ], - "properties": { - "nonce": { - "$ref": "#/definitions/HexBinary" - } - }, - "additionalProperties": false - }, - "RawSessionSetPubKey": { - "type": "object", - "required": [ - "nonce", - "pub_key" - ], - "properties": { - "nonce": { - "$ref": "#/definitions/HexBinary" - }, - "pub_key": { - "$ref": "#/definitions/HexBinary" - } - }, - "additionalProperties": false - }, - "RawUpdateMsg": { - "type": "object", - "required": [ - "ciphertext", - "quantity", - "withdrawals" - ], - "properties": { - "ciphertext": { - "$ref": "#/definitions/HexBinary" - }, - "quantity": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "withdrawals": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Uint128" - } - } - }, - "additionalProperties": false - }, - "ReportBody": { - "type": "object", - "required": [ - "advisoryIDs", - "advisoryURL", - "epidPseudonym", - "id", - "isvEnclaveQuoteBody", - "isvEnclaveQuoteStatus", - "platformInfoBlob", - "timestamp", - "version" - ], - "properties": { - "advisoryIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "advisoryURL": { - "type": "string" - }, - "epidPseudonym": { - "$ref": "#/definitions/Binary" - }, - "id": { - "type": "string" - }, - "isvEnclaveQuoteBody": { - "$ref": "#/definitions/Binary" - }, - "isvEnclaveQuoteStatus": { - "type": "string" - }, - "platformInfoBlob": { - "type": "string" - }, - "timestamp": { - "type": "string" - }, - "version": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - "TransferRequestMsg": { - "type": "object", - "required": [ - "ciphertext", - "digest" - ], - "properties": { - "ciphertext": { - "$ref": "#/definitions/HexBinary" - }, - "digest": { - "$ref": "#/definitions/HexBinary" - } - }, - "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" - } - } - }, - "query": null, - "migrate": null, - "sudo": null, - "responses": null -} diff --git a/apps/transfers/enclave/README.md b/apps/transfers/enclave/README.md deleted file mode 100644 index 59d7565..0000000 --- a/apps/transfers/enclave/README.md +++ /dev/null @@ -1 +0,0 @@ -## MTCS Server \ No newline at end of file diff --git a/apps/transfers/quartz.toml b/apps/transfers/quartz.toml deleted file mode 100644 index e116391..0000000 --- a/apps/transfers/quartz.toml +++ /dev/null @@ -1,9 +0,0 @@ -mock_sgx = false -tx_sender = "admin" -chain_id = "testing" -node_url = "127.0.0.1:26657" -enclave_rpc_addr = "http://127.0.0.1" -enclave_rpc_port = 11090 -trusted_hash = "" -trusted_height = 0 -release = true diff --git a/cosmwasm/.gitignore b/cosmwasm/.gitignore deleted file mode 100644 index 52990d7..0000000 --- a/cosmwasm/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# Build results -/artifacts -target/ -schema/ - -# Cargo+Git helper file (https://github.com/rust-lang/cargo/blob/0.44.1/src/cargo/sources/git/utils.rs#L320-L327) -.cargo-ok - -# Text file backups -**/*.rs.bk - -# macOS -.DS_Store - -# IDEs -*.iml -.idea diff --git a/cosmwasm/packages/tcbinfo/.editorconfig b/cosmwasm/packages/tcbinfo/.editorconfig deleted file mode 100644 index 3d36f20..0000000 --- a/cosmwasm/packages/tcbinfo/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.rs] -indent_size = 4 diff --git a/cli/Cargo.toml b/crates/cli/Cargo.toml similarity index 100% rename from cli/Cargo.toml rename to crates/cli/Cargo.toml diff --git a/cli/README.md b/crates/cli/README.md similarity index 100% rename from cli/README.md rename to crates/cli/README.md diff --git a/cli/scripts/relay.sh b/crates/cli/scripts/relay.sh similarity index 100% rename from cli/scripts/relay.sh rename to crates/cli/scripts/relay.sh diff --git a/cli/src/cache.rs b/crates/cli/src/cache.rs similarity index 100% rename from cli/src/cache.rs rename to crates/cli/src/cache.rs diff --git a/cli/src/cli.rs b/crates/cli/src/cli.rs similarity index 100% rename from cli/src/cli.rs rename to crates/cli/src/cli.rs diff --git a/cli/src/config.rs b/crates/cli/src/config.rs similarity index 100% rename from cli/src/config.rs rename to crates/cli/src/config.rs diff --git a/cli/src/error.rs b/crates/cli/src/error.rs similarity index 100% rename from cli/src/error.rs rename to crates/cli/src/error.rs diff --git a/cli/src/handler.rs b/crates/cli/src/handler.rs similarity index 100% rename from cli/src/handler.rs rename to crates/cli/src/handler.rs diff --git a/cli/src/handler/contract_build.rs b/crates/cli/src/handler/contract_build.rs similarity index 100% rename from cli/src/handler/contract_build.rs rename to crates/cli/src/handler/contract_build.rs diff --git a/cli/src/handler/contract_deploy.rs b/crates/cli/src/handler/contract_deploy.rs similarity index 100% rename from cli/src/handler/contract_deploy.rs rename to crates/cli/src/handler/contract_deploy.rs diff --git a/cli/src/handler/dev.rs b/crates/cli/src/handler/dev.rs similarity index 100% rename from cli/src/handler/dev.rs rename to crates/cli/src/handler/dev.rs diff --git a/cli/src/handler/enclave_build.rs b/crates/cli/src/handler/enclave_build.rs similarity index 100% rename from cli/src/handler/enclave_build.rs rename to crates/cli/src/handler/enclave_build.rs diff --git a/cli/src/handler/enclave_start.rs b/crates/cli/src/handler/enclave_start.rs similarity index 100% rename from cli/src/handler/enclave_start.rs rename to crates/cli/src/handler/enclave_start.rs diff --git a/cli/src/handler/handshake.rs b/crates/cli/src/handler/handshake.rs similarity index 100% rename from cli/src/handler/handshake.rs rename to crates/cli/src/handler/handshake.rs diff --git a/cli/src/handler/init.rs b/crates/cli/src/handler/init.rs similarity index 100% rename from cli/src/handler/init.rs rename to crates/cli/src/handler/init.rs diff --git a/cli/src/handler/utils/helpers.rs b/crates/cli/src/handler/utils/helpers.rs similarity index 100% rename from cli/src/handler/utils/helpers.rs rename to crates/cli/src/handler/utils/helpers.rs diff --git a/cli/src/handler/utils/mod.rs b/crates/cli/src/handler/utils/mod.rs similarity index 100% rename from cli/src/handler/utils/mod.rs rename to crates/cli/src/handler/utils/mod.rs diff --git a/cli/src/handler/utils/relay.rs b/crates/cli/src/handler/utils/relay.rs similarity index 100% rename from cli/src/handler/utils/relay.rs rename to crates/cli/src/handler/utils/relay.rs diff --git a/cli/src/handler/utils/types.rs b/crates/cli/src/handler/utils/types.rs similarity index 100% rename from cli/src/handler/utils/types.rs rename to crates/cli/src/handler/utils/types.rs diff --git a/cli/src/main.rs b/crates/cli/src/main.rs similarity index 100% rename from cli/src/main.rs rename to crates/cli/src/main.rs diff --git a/cli/src/request.rs b/crates/cli/src/request.rs similarity index 100% rename from cli/src/request.rs rename to crates/cli/src/request.rs diff --git a/cli/src/request/contract_build.rs b/crates/cli/src/request/contract_build.rs similarity index 100% rename from cli/src/request/contract_build.rs rename to crates/cli/src/request/contract_build.rs diff --git a/cli/src/request/contract_deploy.rs b/crates/cli/src/request/contract_deploy.rs similarity index 100% rename from cli/src/request/contract_deploy.rs rename to crates/cli/src/request/contract_deploy.rs diff --git a/cli/src/request/dev.rs b/crates/cli/src/request/dev.rs similarity index 100% rename from cli/src/request/dev.rs rename to crates/cli/src/request/dev.rs diff --git a/cli/src/request/enclave_build.rs b/crates/cli/src/request/enclave_build.rs similarity index 100% rename from cli/src/request/enclave_build.rs rename to crates/cli/src/request/enclave_build.rs diff --git a/cli/src/request/enclave_start.rs b/crates/cli/src/request/enclave_start.rs similarity index 100% rename from cli/src/request/enclave_start.rs rename to crates/cli/src/request/enclave_start.rs diff --git a/cli/src/request/handshake.rs b/crates/cli/src/request/handshake.rs similarity index 100% rename from cli/src/request/handshake.rs rename to crates/cli/src/request/handshake.rs diff --git a/cli/src/request/init.rs b/crates/cli/src/request/init.rs similarity index 100% rename from cli/src/request/init.rs rename to crates/cli/src/request/init.rs diff --git a/cli/src/response.rs b/crates/cli/src/response.rs similarity index 100% rename from cli/src/response.rs rename to crates/cli/src/response.rs diff --git a/cli/src/response/contract_build.rs b/crates/cli/src/response/contract_build.rs similarity index 100% rename from cli/src/response/contract_build.rs rename to crates/cli/src/response/contract_build.rs diff --git a/cli/src/response/contract_deploy.rs b/crates/cli/src/response/contract_deploy.rs similarity index 100% rename from cli/src/response/contract_deploy.rs rename to crates/cli/src/response/contract_deploy.rs diff --git a/cli/src/response/dev.rs b/crates/cli/src/response/dev.rs similarity index 100% rename from cli/src/response/dev.rs rename to crates/cli/src/response/dev.rs diff --git a/cli/src/response/enclave_build.rs b/crates/cli/src/response/enclave_build.rs similarity index 100% rename from cli/src/response/enclave_build.rs rename to crates/cli/src/response/enclave_build.rs diff --git a/cli/src/response/enclave_start.rs b/crates/cli/src/response/enclave_start.rs similarity index 100% rename from cli/src/response/enclave_start.rs rename to crates/cli/src/response/enclave_start.rs diff --git a/cli/src/response/handshake.rs b/crates/cli/src/response/handshake.rs similarity index 100% rename from cli/src/response/handshake.rs rename to crates/cli/src/response/handshake.rs diff --git a/cli/src/response/init.rs b/crates/cli/src/response/init.rs similarity index 100% rename from cli/src/response/init.rs rename to crates/cli/src/response/init.rs diff --git a/core/quartz-common/Cargo.toml b/crates/common/Cargo.toml similarity index 100% rename from core/quartz-common/Cargo.toml rename to crates/common/Cargo.toml diff --git a/core/quartz-common/src/lib.rs b/crates/common/src/lib.rs similarity index 100% rename from core/quartz-common/src/lib.rs rename to crates/common/src/lib.rs diff --git a/cosmwasm/README.md b/crates/contracts/README.md similarity index 100% rename from cosmwasm/README.md rename to crates/contracts/README.md diff --git a/core/light-client-proofs/cw-proof/.gitignore b/crates/contracts/cw-proof/.gitignore similarity index 100% rename from core/light-client-proofs/cw-proof/.gitignore rename to crates/contracts/cw-proof/.gitignore diff --git a/core/light-client-proofs/cw-proof/Cargo.toml b/crates/contracts/cw-proof/Cargo.toml similarity index 100% rename from core/light-client-proofs/cw-proof/Cargo.toml rename to crates/contracts/cw-proof/Cargo.toml diff --git a/core/light-client-proofs/cw-proof/src/error.rs b/crates/contracts/cw-proof/src/error.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/error.rs rename to crates/contracts/cw-proof/src/error.rs diff --git a/core/light-client-proofs/cw-proof/src/lib.rs b/crates/contracts/cw-proof/src/lib.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/lib.rs rename to crates/contracts/cw-proof/src/lib.rs diff --git a/core/light-client-proofs/cw-proof/src/proof/cw.rs b/crates/contracts/cw-proof/src/proof/cw.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/proof/cw.rs rename to crates/contracts/cw-proof/src/proof/cw.rs diff --git a/core/light-client-proofs/cw-proof/src/proof/key.rs b/crates/contracts/cw-proof/src/proof/key.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/proof/key.rs rename to crates/contracts/cw-proof/src/proof/key.rs diff --git a/core/light-client-proofs/cw-proof/src/proof/mod.rs b/crates/contracts/cw-proof/src/proof/mod.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/proof/mod.rs rename to crates/contracts/cw-proof/src/proof/mod.rs diff --git a/core/light-client-proofs/cw-proof/src/proof/prefix.rs b/crates/contracts/cw-proof/src/proof/prefix.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/proof/prefix.rs rename to crates/contracts/cw-proof/src/proof/prefix.rs diff --git a/core/light-client-proofs/cw-proof/src/verifier/cw.rs b/crates/contracts/cw-proof/src/verifier/cw.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/verifier/cw.rs rename to crates/contracts/cw-proof/src/verifier/cw.rs diff --git a/core/light-client-proofs/cw-proof/src/verifier/ics23.rs b/crates/contracts/cw-proof/src/verifier/ics23.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/verifier/ics23.rs rename to crates/contracts/cw-proof/src/verifier/ics23.rs diff --git a/core/light-client-proofs/cw-proof/src/verifier/mod.rs b/crates/contracts/cw-proof/src/verifier/mod.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/verifier/mod.rs rename to crates/contracts/cw-proof/src/verifier/mod.rs diff --git a/core/light-client-proofs/cw-proof/src/verifier/multi.rs b/crates/contracts/cw-proof/src/verifier/multi.rs similarity index 100% rename from core/light-client-proofs/cw-proof/src/verifier/multi.rs rename to crates/contracts/cw-proof/src/verifier/multi.rs diff --git a/cosmwasm/packages/quartz-cw/Cargo.toml b/crates/contracts/quartz-cw/Cargo.toml similarity index 100% rename from cosmwasm/packages/quartz-cw/Cargo.toml rename to crates/contracts/quartz-cw/Cargo.toml diff --git a/cosmwasm/packages/quartz-cw/README.md b/crates/contracts/quartz-cw/README.md similarity index 100% rename from cosmwasm/packages/quartz-cw/README.md rename to crates/contracts/quartz-cw/README.md diff --git a/cosmwasm/packages/quartz-cw/SPEC.md b/crates/contracts/quartz-cw/SPEC.md similarity index 100% rename from cosmwasm/packages/quartz-cw/SPEC.md rename to crates/contracts/quartz-cw/SPEC.md diff --git a/cosmwasm/packages/quartz-cw/src/error.rs b/crates/contracts/quartz-cw/src/error.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/error.rs rename to crates/contracts/quartz-cw/src/error.rs diff --git a/cosmwasm/packages/quartz-cw/src/handler.rs b/crates/contracts/quartz-cw/src/handler.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/handler.rs rename to crates/contracts/quartz-cw/src/handler.rs diff --git a/cosmwasm/packages/quartz-cw/src/handler/execute.rs b/crates/contracts/quartz-cw/src/handler/execute.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/handler/execute.rs rename to crates/contracts/quartz-cw/src/handler/execute.rs diff --git a/cosmwasm/packages/quartz-cw/src/handler/execute/attested.rs b/crates/contracts/quartz-cw/src/handler/execute/attested.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/handler/execute/attested.rs rename to crates/contracts/quartz-cw/src/handler/execute/attested.rs diff --git a/cosmwasm/packages/quartz-cw/src/handler/execute/session_create.rs b/crates/contracts/quartz-cw/src/handler/execute/session_create.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/handler/execute/session_create.rs rename to crates/contracts/quartz-cw/src/handler/execute/session_create.rs diff --git a/cosmwasm/packages/quartz-cw/src/handler/execute/session_set_pub_key.rs b/crates/contracts/quartz-cw/src/handler/execute/session_set_pub_key.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/handler/execute/session_set_pub_key.rs rename to crates/contracts/quartz-cw/src/handler/execute/session_set_pub_key.rs diff --git a/cosmwasm/packages/quartz-cw/src/handler/instantiate.rs b/crates/contracts/quartz-cw/src/handler/instantiate.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/handler/instantiate.rs rename to crates/contracts/quartz-cw/src/handler/instantiate.rs diff --git a/cosmwasm/packages/quartz-cw/src/lib.rs b/crates/contracts/quartz-cw/src/lib.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/lib.rs rename to crates/contracts/quartz-cw/src/lib.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg.rs b/crates/contracts/quartz-cw/src/msg.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg.rs rename to crates/contracts/quartz-cw/src/msg.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg/execute.rs b/crates/contracts/quartz-cw/src/msg/execute.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg/execute.rs rename to crates/contracts/quartz-cw/src/msg/execute.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg/execute/attested.rs b/crates/contracts/quartz-cw/src/msg/execute/attested.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg/execute/attested.rs rename to crates/contracts/quartz-cw/src/msg/execute/attested.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg/execute/session_create.rs b/crates/contracts/quartz-cw/src/msg/execute/session_create.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg/execute/session_create.rs rename to crates/contracts/quartz-cw/src/msg/execute/session_create.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg/execute/session_set_pub_key.rs b/crates/contracts/quartz-cw/src/msg/execute/session_set_pub_key.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg/execute/session_set_pub_key.rs rename to crates/contracts/quartz-cw/src/msg/execute/session_set_pub_key.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg/instantiate.rs b/crates/contracts/quartz-cw/src/msg/instantiate.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg/instantiate.rs rename to crates/contracts/quartz-cw/src/msg/instantiate.rs diff --git a/cosmwasm/packages/quartz-cw/src/msg/query.rs b/crates/contracts/quartz-cw/src/msg/query.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/msg/query.rs rename to crates/contracts/quartz-cw/src/msg/query.rs diff --git a/cosmwasm/packages/quartz-cw/src/prelude.rs b/crates/contracts/quartz-cw/src/prelude.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/prelude.rs rename to crates/contracts/quartz-cw/src/prelude.rs diff --git a/cosmwasm/packages/quartz-cw/src/state.rs b/crates/contracts/quartz-cw/src/state.rs similarity index 100% rename from cosmwasm/packages/quartz-cw/src/state.rs rename to crates/contracts/quartz-cw/src/state.rs diff --git a/cosmwasm/packages/quartz-dcap-verifier/Cargo.toml b/crates/contracts/quartz-dcap-verifier/Cargo.toml similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/Cargo.toml rename to crates/contracts/quartz-dcap-verifier/Cargo.toml diff --git a/cosmwasm/packages/quartz-dcap-verifier/README.md b/crates/contracts/quartz-dcap-verifier/README.md similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/README.md rename to crates/contracts/quartz-dcap-verifier/README.md diff --git a/cosmwasm/packages/quartz-dcap-verifier/msgs/Cargo.toml b/crates/contracts/quartz-dcap-verifier/msgs/Cargo.toml similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/msgs/Cargo.toml rename to crates/contracts/quartz-dcap-verifier/msgs/Cargo.toml diff --git a/cosmwasm/packages/quartz-dcap-verifier/msgs/src/lib.rs b/crates/contracts/quartz-dcap-verifier/msgs/src/lib.rs similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/msgs/src/lib.rs rename to crates/contracts/quartz-dcap-verifier/msgs/src/lib.rs diff --git a/cosmwasm/packages/quartz-dcap-verifier/src/bin/dcap_verifier_schema.rs b/crates/contracts/quartz-dcap-verifier/src/bin/dcap_verifier_schema.rs similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/src/bin/dcap_verifier_schema.rs rename to crates/contracts/quartz-dcap-verifier/src/bin/dcap_verifier_schema.rs diff --git a/cosmwasm/packages/quartz-dcap-verifier/src/contract.rs b/crates/contracts/quartz-dcap-verifier/src/contract.rs similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/src/contract.rs rename to crates/contracts/quartz-dcap-verifier/src/contract.rs diff --git a/cosmwasm/packages/quartz-dcap-verifier/src/lib.rs b/crates/contracts/quartz-dcap-verifier/src/lib.rs similarity index 100% rename from cosmwasm/packages/quartz-dcap-verifier/src/lib.rs rename to crates/contracts/quartz-dcap-verifier/src/lib.rs diff --git a/cosmwasm/packages/quartz-tee-ra/Cargo.toml b/crates/contracts/quartz-tee-ra/Cargo.toml similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/Cargo.toml rename to crates/contracts/quartz-tee-ra/Cargo.toml diff --git a/cosmwasm/packages/quartz-tee-ra/README.md b/crates/contracts/quartz-tee-ra/README.md similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/README.md rename to crates/contracts/quartz-tee-ra/README.md diff --git a/cosmwasm/packages/quartz-tee-ra/data/DcapRootCACert.pem b/crates/contracts/quartz-tee-ra/data/DcapRootCACert.pem similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/DcapRootCACert.pem rename to crates/contracts/quartz-tee-ra/data/DcapRootCACert.pem diff --git a/cosmwasm/packages/quartz-tee-ra/data/fmspc_00906ED50000_2023_07_12.json b/crates/contracts/quartz-tee-ra/data/fmspc_00906ED50000_2023_07_12.json similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/fmspc_00906ED50000_2023_07_12.json rename to crates/contracts/quartz-tee-ra/data/fmspc_00906ED50000_2023_07_12.json diff --git a/cosmwasm/packages/quartz-tee-ra/data/hw_quote.dat b/crates/contracts/quartz-tee-ra/data/hw_quote.dat similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/hw_quote.dat rename to crates/contracts/quartz-tee-ra/data/hw_quote.dat diff --git a/cosmwasm/packages/quartz-tee-ra/data/leaf_cert.pem b/crates/contracts/quartz-tee-ra/data/leaf_cert.pem similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/leaf_cert.pem rename to crates/contracts/quartz-tee-ra/data/leaf_cert.pem diff --git a/cosmwasm/packages/quartz-tee-ra/data/processor_ca.pem b/crates/contracts/quartz-tee-ra/data/processor_ca.pem similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/processor_ca.pem rename to crates/contracts/quartz-tee-ra/data/processor_ca.pem diff --git a/cosmwasm/packages/quartz-tee-ra/data/processor_crl.der b/crates/contracts/quartz-tee-ra/data/processor_crl.der similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/processor_crl.der rename to crates/contracts/quartz-tee-ra/data/processor_crl.der diff --git a/cosmwasm/packages/quartz-tee-ra/data/qe_identity.json b/crates/contracts/quartz-tee-ra/data/qe_identity.json similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/qe_identity.json rename to crates/contracts/quartz-tee-ra/data/qe_identity.json diff --git a/cosmwasm/packages/quartz-tee-ra/data/root_ca.pem b/crates/contracts/quartz-tee-ra/data/root_ca.pem similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/root_ca.pem rename to crates/contracts/quartz-tee-ra/data/root_ca.pem diff --git a/cosmwasm/packages/quartz-tee-ra/data/root_crl.der b/crates/contracts/quartz-tee-ra/data/root_crl.der similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/root_crl.der rename to crates/contracts/quartz-tee-ra/data/root_crl.der diff --git a/cosmwasm/packages/quartz-tee-ra/data/tcb_signer.pem b/crates/contracts/quartz-tee-ra/data/tcb_signer.pem similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/data/tcb_signer.pem rename to crates/contracts/quartz-tee-ra/data/tcb_signer.pem diff --git a/cosmwasm/packages/quartz-tee-ra/src/intel_sgx.rs b/crates/contracts/quartz-tee-ra/src/intel_sgx.rs similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/src/intel_sgx.rs rename to crates/contracts/quartz-tee-ra/src/intel_sgx.rs diff --git a/cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap.rs b/crates/contracts/quartz-tee-ra/src/intel_sgx/dcap.rs similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap.rs rename to crates/contracts/quartz-tee-ra/src/intel_sgx/dcap.rs diff --git a/cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap/certificate_chain.rs b/crates/contracts/quartz-tee-ra/src/intel_sgx/dcap/certificate_chain.rs similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap/certificate_chain.rs rename to crates/contracts/quartz-tee-ra/src/intel_sgx/dcap/certificate_chain.rs diff --git a/cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier.rs b/crates/contracts/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier.rs similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier.rs rename to crates/contracts/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier.rs diff --git a/cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier/dcap.rs b/crates/contracts/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier/dcap.rs similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier/dcap.rs rename to crates/contracts/quartz-tee-ra/src/intel_sgx/dcap/mc_attest_verifier/dcap.rs diff --git a/cosmwasm/packages/quartz-tee-ra/src/lib.rs b/crates/contracts/quartz-tee-ra/src/lib.rs similarity index 100% rename from cosmwasm/packages/quartz-tee-ra/src/lib.rs rename to crates/contracts/quartz-tee-ra/src/lib.rs diff --git a/cosmwasm/packages/tcbinfo/.cargo/config.toml b/crates/contracts/tcbinfo/.cargo/config.toml similarity index 100% rename from cosmwasm/packages/tcbinfo/.cargo/config.toml rename to crates/contracts/tcbinfo/.cargo/config.toml diff --git a/cosmwasm/packages/tcbinfo/.gitignore b/crates/contracts/tcbinfo/.gitignore similarity index 100% rename from cosmwasm/packages/tcbinfo/.gitignore rename to crates/contracts/tcbinfo/.gitignore diff --git a/cosmwasm/packages/tcbinfo/Cargo.lock b/crates/contracts/tcbinfo/Cargo.lock similarity index 100% rename from cosmwasm/packages/tcbinfo/Cargo.lock rename to crates/contracts/tcbinfo/Cargo.lock diff --git a/cosmwasm/packages/tcbinfo/Cargo.toml b/crates/contracts/tcbinfo/Cargo.toml similarity index 100% rename from cosmwasm/packages/tcbinfo/Cargo.toml rename to crates/contracts/tcbinfo/Cargo.toml diff --git a/cosmwasm/packages/tcbinfo/README.md b/crates/contracts/tcbinfo/README.md similarity index 100% rename from cosmwasm/packages/tcbinfo/README.md rename to crates/contracts/tcbinfo/README.md diff --git a/cosmwasm/packages/tcbinfo/data/root_ca.pem b/crates/contracts/tcbinfo/data/root_ca.pem similarity index 100% rename from cosmwasm/packages/tcbinfo/data/root_ca.pem rename to crates/contracts/tcbinfo/data/root_ca.pem diff --git a/cosmwasm/packages/tcbinfo/data/tcb_signer.pem b/crates/contracts/tcbinfo/data/tcb_signer.pem similarity index 100% rename from cosmwasm/packages/tcbinfo/data/tcb_signer.pem rename to crates/contracts/tcbinfo/data/tcb_signer.pem diff --git a/cosmwasm/packages/tcbinfo/data/tcbinfo.json b/crates/contracts/tcbinfo/data/tcbinfo.json similarity index 100% rename from cosmwasm/packages/tcbinfo/data/tcbinfo.json rename to crates/contracts/tcbinfo/data/tcbinfo.json diff --git a/cosmwasm/packages/tcbinfo/msgs/Cargo.toml b/crates/contracts/tcbinfo/msgs/Cargo.toml similarity index 100% rename from cosmwasm/packages/tcbinfo/msgs/Cargo.toml rename to crates/contracts/tcbinfo/msgs/Cargo.toml diff --git a/cosmwasm/packages/tcbinfo/msgs/src/lib.rs b/crates/contracts/tcbinfo/msgs/src/lib.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/msgs/src/lib.rs rename to crates/contracts/tcbinfo/msgs/src/lib.rs diff --git a/cosmwasm/packages/tcbinfo/src/bin/tcbinfo_schema.rs b/crates/contracts/tcbinfo/src/bin/tcbinfo_schema.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/bin/tcbinfo_schema.rs rename to crates/contracts/tcbinfo/src/bin/tcbinfo_schema.rs diff --git a/cosmwasm/packages/tcbinfo/src/contract.rs b/crates/contracts/tcbinfo/src/contract.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/contract.rs rename to crates/contracts/tcbinfo/src/contract.rs diff --git a/cosmwasm/packages/tcbinfo/src/error.rs b/crates/contracts/tcbinfo/src/error.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/error.rs rename to crates/contracts/tcbinfo/src/error.rs diff --git a/cosmwasm/packages/tcbinfo/src/helpers.rs b/crates/contracts/tcbinfo/src/helpers.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/helpers.rs rename to crates/contracts/tcbinfo/src/helpers.rs diff --git a/cosmwasm/packages/tcbinfo/src/integration_tests.rs b/crates/contracts/tcbinfo/src/integration_tests.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/integration_tests.rs rename to crates/contracts/tcbinfo/src/integration_tests.rs diff --git a/cosmwasm/packages/tcbinfo/src/lib.rs b/crates/contracts/tcbinfo/src/lib.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/lib.rs rename to crates/contracts/tcbinfo/src/lib.rs diff --git a/cosmwasm/packages/tcbinfo/src/state.rs b/crates/contracts/tcbinfo/src/state.rs similarity index 100% rename from cosmwasm/packages/tcbinfo/src/state.rs rename to crates/contracts/tcbinfo/src/state.rs diff --git a/core/light-client-proofs/tm-stateless-verifier/.gitignore b/crates/contracts/tm-stateless-verifier/.gitignore similarity index 100% rename from core/light-client-proofs/tm-stateless-verifier/.gitignore rename to crates/contracts/tm-stateless-verifier/.gitignore diff --git a/core/light-client-proofs/tm-stateless-verifier/Cargo.toml b/crates/contracts/tm-stateless-verifier/Cargo.toml similarity index 100% rename from core/light-client-proofs/tm-stateless-verifier/Cargo.toml rename to crates/contracts/tm-stateless-verifier/Cargo.toml diff --git a/core/light-client-proofs/tm-stateless-verifier/src/error.rs b/crates/contracts/tm-stateless-verifier/src/error.rs similarity index 100% rename from core/light-client-proofs/tm-stateless-verifier/src/error.rs rename to crates/contracts/tm-stateless-verifier/src/error.rs diff --git a/core/light-client-proofs/tm-stateless-verifier/src/lib.rs b/crates/contracts/tm-stateless-verifier/src/lib.rs similarity index 100% rename from core/light-client-proofs/tm-stateless-verifier/src/lib.rs rename to crates/contracts/tm-stateless-verifier/src/lib.rs diff --git a/core/light-client-proofs/tm-stateless-verifier/src/null_io.rs b/crates/contracts/tm-stateless-verifier/src/null_io.rs similarity index 100% rename from core/light-client-proofs/tm-stateless-verifier/src/null_io.rs rename to crates/contracts/tm-stateless-verifier/src/null_io.rs diff --git a/core/light-client-proofs/tm-stateless-verifier/src/provider.rs b/crates/contracts/tm-stateless-verifier/src/provider.rs similarity index 100% rename from core/light-client-proofs/tm-stateless-verifier/src/provider.rs rename to crates/contracts/tm-stateless-verifier/src/provider.rs diff --git a/core/quartz/.gitignore b/crates/enclave/quartz-enclave/.gitignore similarity index 100% rename from core/quartz/.gitignore rename to crates/enclave/quartz-enclave/.gitignore diff --git a/core/quartz/Cargo.toml b/crates/enclave/quartz-enclave/Cargo.toml similarity index 98% rename from core/quartz/Cargo.toml rename to crates/enclave/quartz-enclave/Cargo.toml index 75ac6f4..e0e3149 100644 --- a/core/quartz/Cargo.toml +++ b/crates/enclave/quartz-enclave/Cargo.toml @@ -45,7 +45,6 @@ tendermint-rpc = { workspace = true, features=["websocket-client", "http-client" # quartz cw-proof.workspace = true -mtcs.workspace = true quartz-cw.workspace = true quartz-proto.workspace = true quartz-tee-ra.workspace = true diff --git a/core/quartz/README.md b/crates/enclave/quartz-enclave/README.md similarity index 100% rename from core/quartz/README.md rename to crates/enclave/quartz-enclave/README.md diff --git a/core/quartz/quartz.manifest.template b/crates/enclave/quartz-enclave/quartz.manifest.template similarity index 100% rename from core/quartz/quartz.manifest.template rename to crates/enclave/quartz-enclave/quartz.manifest.template diff --git a/core/quartz/src/attestor.rs b/crates/enclave/quartz-enclave/src/attestor.rs similarity index 93% rename from core/quartz/src/attestor.rs rename to crates/enclave/quartz-enclave/src/attestor.rs index ffa8815..6150301 100644 --- a/core/quartz/src/attestor.rs +++ b/crates/enclave/quartz-enclave/src/attestor.rs @@ -102,8 +102,7 @@ impl Attestor for DcapAttestor { version.minor_version = 1; let mut root_crl = - include_bytes!("../../../cosmwasm/packages/quartz-tee-ra/data/root_crl.der") - .to_vec(); + include_bytes!("../../../contracts/quartz-tee-ra/data/root_crl.der").to_vec(); root_crl.push(0); sgx_collateral.root_ca_crl = root_crl.as_ptr() as _; sgx_collateral.root_ca_crl_size = root_crl.len() as u32; @@ -118,10 +117,8 @@ impl Attestor for DcapAttestor { sgx_collateral.pck_crl_issuer_chain = pck_crl_issuer_chain.as_ptr() as _; sgx_collateral.pck_crl_issuer_chain_size = pck_crl_issuer_chain.len() as u32; - let root_cert = - include_str!("../../../cosmwasm/packages/quartz-tee-ra/data/root_ca.pem"); - let tcb_cert = - include_str!("../../../cosmwasm/packages/quartz-tee-ra/data/tcb_signer.pem"); + let root_cert = include_str!("../../../contracts/quartz-tee-ra/data/root_ca.pem"); + let tcb_cert = include_str!("../../../contracts/quartz-tee-ra/data/tcb_signer.pem"); let mut tcb_chain = [tcb_cert, root_cert].join("\n").as_bytes().to_vec(); tcb_chain.push(0); sgx_collateral.tcb_info_issuer_chain = tcb_chain.as_ptr() as _; @@ -135,7 +132,7 @@ impl Attestor for DcapAttestor { sgx_collateral.qe_identity_issuer_chain_size = tcb_chain.len() as u32; const QE_IDENTITY_JSON: &str = - include_str!("../../../cosmwasm/packages/quartz-tee-ra/data/qe_identity.json"); + include_str!("../../../contracts/quartz-tee-ra/data/qe_identity.json"); sgx_collateral.qe_identity = QE_IDENTITY_JSON.as_ptr() as _; sgx_collateral.qe_identity_size = QE_IDENTITY_JSON.len() as u32; diff --git a/core/quartz/src/error.rs b/crates/enclave/quartz-enclave/src/error.rs similarity index 100% rename from core/quartz/src/error.rs rename to crates/enclave/quartz-enclave/src/error.rs diff --git a/core/quartz/src/lib.rs b/crates/enclave/quartz-enclave/src/lib.rs similarity index 100% rename from core/quartz/src/lib.rs rename to crates/enclave/quartz-enclave/src/lib.rs diff --git a/core/quartz/src/server.rs b/crates/enclave/quartz-enclave/src/server.rs similarity index 100% rename from core/quartz/src/server.rs rename to crates/enclave/quartz-enclave/src/server.rs diff --git a/core/quartz/src/types.rs b/crates/enclave/quartz-enclave/src/types.rs similarity index 100% rename from core/quartz/src/types.rs rename to crates/enclave/quartz-enclave/src/types.rs diff --git a/core/quartz-proto/Cargo.toml b/crates/enclave/quartz-proto/Cargo.toml similarity index 100% rename from core/quartz-proto/Cargo.toml rename to crates/enclave/quartz-proto/Cargo.toml diff --git a/core/quartz-proto/build.rs b/crates/enclave/quartz-proto/build.rs similarity index 100% rename from core/quartz-proto/build.rs rename to crates/enclave/quartz-proto/build.rs diff --git a/core/quartz-proto/proto/quartz.proto b/crates/enclave/quartz-proto/proto/quartz.proto similarity index 100% rename from core/quartz-proto/proto/quartz.proto rename to crates/enclave/quartz-proto/proto/quartz.proto diff --git a/core/quartz-proto/src/lib.rs b/crates/enclave/quartz-proto/src/lib.rs similarity index 100% rename from core/quartz-proto/src/lib.rs rename to crates/enclave/quartz-proto/src/lib.rs diff --git a/core/quartz-proto/src/prost/quartz.rs b/crates/enclave/quartz-proto/src/prost/quartz.rs similarity index 90% rename from core/quartz-proto/src/prost/quartz.rs rename to crates/enclave/quartz-proto/src/prost/quartz.rs index 1160c83..fe1695b 100644 --- a/core/quartz-proto/src/prost/quartz.rs +++ b/crates/enclave/quartz-proto/src/prost/quartz.rs @@ -1,29 +1,23 @@ // This file is @generated by prost-build. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct InstantiateRequest {} -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct InstantiateResponse { #[prost(string, tag = "1")] pub message: ::prost::alloc::string::String, } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SessionCreateRequest {} -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SessionCreateResponse { #[prost(string, tag = "1")] pub message: ::prost::alloc::string::String, } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SessionSetPubKeyRequest { #[prost(string, tag = "1")] pub message: ::prost::alloc::string::String, } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct SessionSetPubKeyResponse { #[prost(string, tag = "1")] @@ -31,7 +25,13 @@ pub struct SessionSetPubKeyResponse { } /// Generated client implementations. pub mod core_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -53,8 +53,8 @@ pub mod core_client { where T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -79,7 +79,7 @@ pub mod core_client { >, , - >>::Error: Into + Send + Sync, + >>::Error: Into + std::marker::Send + std::marker::Sync, { CoreClient::new(InterceptedService::new(inner, interceptor)) } @@ -125,8 +125,7 @@ pub mod core_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -147,8 +146,7 @@ pub mod core_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -171,8 +169,7 @@ pub mod core_client { .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -189,11 +186,17 @@ pub mod core_client { } /// Generated server implementations. pub mod core_server { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; /// Generated trait containing gRPC methods that should be implemented for use with CoreServer. #[async_trait] - pub trait Core: Send + Sync + 'static { + pub trait Core: std::marker::Send + std::marker::Sync + 'static { async fn instantiate( &self, request: tonic::Request, @@ -217,14 +220,14 @@ pub mod core_server { >; } #[derive(Debug)] - pub struct CoreServer { + pub struct CoreServer { inner: Arc, accept_compression_encodings: EnabledCompressionEncodings, send_compression_encodings: EnabledCompressionEncodings, max_decoding_message_size: Option, max_encoding_message_size: Option, } - impl CoreServer { + impl CoreServer { pub fn new(inner: T) -> Self { Self::from_arc(Arc::new(inner)) } @@ -278,8 +281,8 @@ pub mod core_server { impl tonic::codegen::Service> for CoreServer where T: Core, - B: Body + Send + 'static, - B::Error: Into + Send + 'static, + B: Body + std::marker::Send + 'static, + B::Error: Into + std::marker::Send + 'static, { type Response = http::Response; type Error = std::convert::Infallible; @@ -427,23 +430,25 @@ pub mod core_server { } _ => { Box::pin(async move { - Ok( - http::Response::builder() - .status(200) - .header("grpc-status", tonic::Code::Unimplemented as i32) - .header( - http::header::CONTENT_TYPE, - tonic::metadata::GRPC_CONTENT_TYPE, - ) - .body(empty_body()) - .unwrap(), - ) + let mut response = http::Response::new(empty_body()); + let headers = response.headers_mut(); + headers + .insert( + tonic::Status::GRPC_STATUS, + (tonic::Code::Unimplemented as i32).into(), + ); + headers + .insert( + http::header::CONTENT_TYPE, + tonic::metadata::GRPC_CONTENT_TYPE, + ); + Ok(response) }) } } } } - impl Clone for CoreServer { + impl Clone for CoreServer { fn clone(&self) -> Self { let inner = self.inner.clone(); Self { @@ -455,7 +460,9 @@ pub mod core_server { } } } - impl tonic::server::NamedService for CoreServer { - const NAME: &'static str = "quartz.Core"; + /// Generated gRPC service name + pub const SERVICE_NAME: &str = "quartz.Core"; + impl tonic::server::NamedService for CoreServer { + const NAME: &'static str = SERVICE_NAME; } } diff --git a/utils/cw-prover/Cargo.toml b/crates/utils/cw-prover/Cargo.toml similarity index 100% rename from utils/cw-prover/Cargo.toml rename to crates/utils/cw-prover/Cargo.toml diff --git a/utils/cw-prover/README.md b/crates/utils/cw-prover/README.md similarity index 100% rename from utils/cw-prover/README.md rename to crates/utils/cw-prover/README.md diff --git a/utils/cw-prover/src/main.rs b/crates/utils/cw-prover/src/main.rs similarity index 100% rename from utils/cw-prover/src/main.rs rename to crates/utils/cw-prover/src/main.rs diff --git a/utils/print-fmspc/Cargo.toml b/crates/utils/print-fmspc/Cargo.toml similarity index 100% rename from utils/print-fmspc/Cargo.toml rename to crates/utils/print-fmspc/Cargo.toml diff --git a/utils/print-fmspc/src/main.rs b/crates/utils/print-fmspc/src/main.rs similarity index 100% rename from utils/print-fmspc/src/main.rs rename to crates/utils/print-fmspc/src/main.rs diff --git a/utils/tm-prover/Cargo.toml b/crates/utils/tm-prover/Cargo.toml similarity index 100% rename from utils/tm-prover/Cargo.toml rename to crates/utils/tm-prover/Cargo.toml diff --git a/utils/tm-prover/README.md b/crates/utils/tm-prover/README.md similarity index 100% rename from utils/tm-prover/README.md rename to crates/utils/tm-prover/README.md diff --git a/utils/tm-prover/src/config.rs b/crates/utils/tm-prover/src/config.rs similarity index 100% rename from utils/tm-prover/src/config.rs rename to crates/utils/tm-prover/src/config.rs diff --git a/utils/tm-prover/src/lib.rs b/crates/utils/tm-prover/src/lib.rs similarity index 100% rename from utils/tm-prover/src/lib.rs rename to crates/utils/tm-prover/src/lib.rs diff --git a/utils/tm-prover/src/main.rs b/crates/utils/tm-prover/src/main.rs similarity index 100% rename from utils/tm-prover/src/main.rs rename to crates/utils/tm-prover/src/main.rs diff --git a/utils/tm-prover/src/prover.rs b/crates/utils/tm-prover/src/prover.rs similarity index 100% rename from utils/tm-prover/src/prover.rs rename to crates/utils/tm-prover/src/prover.rs diff --git a/cosmwasm/packages/wasmd-client/Cargo.toml b/crates/utils/wasmd-client/Cargo.toml similarity index 100% rename from cosmwasm/packages/wasmd-client/Cargo.toml rename to crates/utils/wasmd-client/Cargo.toml diff --git a/cosmwasm/packages/wasmd-client/README.md b/crates/utils/wasmd-client/README.md similarity index 100% rename from cosmwasm/packages/wasmd-client/README.md rename to crates/utils/wasmd-client/README.md diff --git a/cosmwasm/packages/wasmd-client/src/lib.rs b/crates/utils/wasmd-client/src/lib.rs similarity index 100% rename from cosmwasm/packages/wasmd-client/src/lib.rs rename to crates/utils/wasmd-client/src/lib.rs diff --git a/apps/mtcs/.cargo/config.toml b/examples/transfers/.cargo/config.toml similarity index 100% rename from apps/mtcs/.cargo/config.toml rename to examples/transfers/.cargo/config.toml diff --git a/apps/transfers/README.md b/examples/transfers/README.md similarity index 100% rename from apps/transfers/README.md rename to examples/transfers/README.md diff --git a/apps/transfers/cargo-generate.toml b/examples/transfers/cargo-generate.toml similarity index 100% rename from apps/transfers/cargo-generate.toml rename to examples/transfers/cargo-generate.toml diff --git a/apps/transfers/contracts/.cargo/config.toml b/examples/transfers/contracts/.cargo/config.toml similarity index 85% rename from apps/transfers/contracts/.cargo/config.toml rename to examples/transfers/contracts/.cargo/config.toml index 9354fae..4c12448 100644 --- a/apps/transfers/contracts/.cargo/config.toml +++ b/examples/transfers/contracts/.cargo/config.toml @@ -2,3 +2,4 @@ wasm = "build --target wasm32-unknown-unknown --release --lib" wasm-debug = "build --target wasm32-unknown-unknown --lib" schema = "run schema" +unit-test = "test --lib" diff --git a/apps/transfers/contracts/Cargo.lock b/examples/transfers/contracts/Cargo.lock similarity index 100% rename from apps/transfers/contracts/Cargo.lock rename to examples/transfers/contracts/Cargo.lock diff --git a/apps/transfers/contracts/Cargo.toml b/examples/transfers/contracts/Cargo.toml similarity index 95% rename from apps/transfers/contracts/Cargo.toml rename to examples/transfers/contracts/Cargo.toml index 6a7d322..79ac893 100644 --- a/apps/transfers/contracts/Cargo.toml +++ b/examples/transfers/contracts/Cargo.toml @@ -1,3 +1,5 @@ +[workspace] + [package] name = "transfers-contract" version = "0.1.0" @@ -40,7 +42,8 @@ cw-storage-plus = { version = "2.0.0", default-features = false } cw-utils = { version = "2.0.0", default-features = false } # quartz -quartz-common = { git = "ssh://git@github.com/informalsystems/cycles-quartz.git", features=["contract"]} +quartz-common = { git = "ssh://git@github.com/informalsystems/cycles-quartz.git", features = ["contract"] } + # patch indirect deps getrandom = { version = "0.2.15", features = ["js"] } diff --git a/apps/transfers/contracts/bin/schema.rs b/examples/transfers/contracts/bin/schema.rs similarity index 100% rename from apps/transfers/contracts/bin/schema.rs rename to examples/transfers/contracts/bin/schema.rs diff --git a/apps/transfers/contracts/build.sh b/examples/transfers/contracts/build.sh similarity index 100% rename from apps/transfers/contracts/build.sh rename to examples/transfers/contracts/build.sh diff --git a/apps/transfers/contracts/deploy-contract-Neutrond.sh b/examples/transfers/contracts/deploy-contract-Neutrond.sh similarity index 100% rename from apps/transfers/contracts/deploy-contract-Neutrond.sh rename to examples/transfers/contracts/deploy-contract-Neutrond.sh diff --git a/apps/mtcs/contracts/cw-tee-mtcs/deploy-contract.sh b/examples/transfers/contracts/deploy-contract.sh similarity index 100% rename from apps/mtcs/contracts/cw-tee-mtcs/deploy-contract.sh rename to examples/transfers/contracts/deploy-contract.sh diff --git a/apps/transfers/contracts/src/contract.rs b/examples/transfers/contracts/src/contract.rs similarity index 100% rename from apps/transfers/contracts/src/contract.rs rename to examples/transfers/contracts/src/contract.rs diff --git a/apps/transfers/contracts/src/error.rs b/examples/transfers/contracts/src/error.rs similarity index 100% rename from apps/transfers/contracts/src/error.rs rename to examples/transfers/contracts/src/error.rs diff --git a/apps/transfers/contracts/src/lib.rs b/examples/transfers/contracts/src/lib.rs similarity index 100% rename from apps/transfers/contracts/src/lib.rs rename to examples/transfers/contracts/src/lib.rs diff --git a/apps/transfers/contracts/src/msg.rs b/examples/transfers/contracts/src/msg.rs similarity index 100% rename from apps/transfers/contracts/src/msg.rs rename to examples/transfers/contracts/src/msg.rs diff --git a/apps/transfers/contracts/src/state.rs b/examples/transfers/contracts/src/state.rs similarity index 100% rename from apps/transfers/contracts/src/state.rs rename to examples/transfers/contracts/src/state.rs diff --git a/examples/transfers/enclave/.DS_Store b/examples/transfers/enclave/.DS_Store new file mode 100644 index 0000000..5172429 Binary files /dev/null and b/examples/transfers/enclave/.DS_Store differ diff --git a/apps/transfers/enclave/Cargo.lock b/examples/transfers/enclave/Cargo.lock similarity index 93% rename from apps/transfers/enclave/Cargo.lock rename to examples/transfers/enclave/Cargo.lock index 444fa5a..a2e34a1 100644 --- a/apps/transfers/enclave/Cargo.lock +++ b/examples/transfers/enclave/Cargo.lock @@ -87,9 +87,9 @@ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" dependencies = [ "backtrace", ] @@ -217,9 +217,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -251,7 +251,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", "synstructure", ] @@ -263,7 +263,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -285,18 +285,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -324,15 +324,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", @@ -350,16 +350,16 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 1.0.1", - "tower 0.4.13", + "tower 0.5.1", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -370,7 +370,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", ] @@ -498,18 +498,18 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.1.15" +version = "1.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" dependencies = [ "shlex", ] @@ -569,9 +569,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" dependencies = [ "clap_builder", "clap_derive", @@ -579,9 +579,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" dependencies = [ "anstyle", "clap_lex", @@ -589,14 +589,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -689,15 +689,15 @@ dependencies = [ [[package]] name = "cosmwasm-core" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d905990ef3afb5753bb709dc7de88e9e370aa32bcc2f31731d4b533b63e82490" +checksum = "5f6ceb8624260d0d3a67c4e1a1d43fc7e9406720afbcb124521501dd138f90aa" [[package]] name = "cosmwasm-crypto" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b2a7bd9c1dd9a377a4dc0f4ad97d24b03c33798cd5a6d7ceb8869b41c5d2f2d" +checksum = "4125381e5fd7fefe9f614640049648088015eca2b60d861465329a5d87dfa538" dependencies = [ "ark-bls12-381", "ark-ec", @@ -718,20 +718,20 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029910b409398fdf81955d7301b906caf81f2c42b013ea074fbd89720229c424" +checksum = "1b5658b1dc64e10b56ae7a449f678f96932a96f6cfad1769d608d1d1d656480a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "cosmwasm-schema" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc0d4d85e83438ab9a0fea9348446f7268bc016aacfebce37e998559f151294" +checksum = "f86b4d949b6041519c58993a73f4bbfba8083ba14f7001eae704865a09065845" dependencies = [ "cosmwasm-schema-derive", "schemars", @@ -742,20 +742,20 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf5c8adac41bb7751c050d7c4c18675be19ee128714454454575e894424eeef" +checksum = "c8ef1b5835a65fcca3ab8b9a02b4f4dacc78e233a5c2f20b270efb9db0666d12" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "cosmwasm-std" -version = "2.1.3" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51dec99a2e478715c0a4277f0dbeadbb8466500eb7dec873d0924edd086e77f1" +checksum = "70eb7ab0c1e99dd6207496963ba2a457c4128ac9ad9c72a83f8d9808542b849b" dependencies = [ "base64 0.22.1", "bech32", @@ -776,9 +776,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -878,7 +878,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -907,7 +907,7 @@ dependencies = [ "cw-utils", "derivative", "itertools 0.13.0", - "prost 0.13.1", + "prost 0.13.3", "schemars", "serde", "sha2 0.10.8", @@ -917,13 +917,13 @@ dependencies = [ [[package]] name = "cw-proof" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "clap", "cosmrs", "displaydoc", "ics23", - "prost 0.13.1", + "prost 0.13.3", "serde", "serde_with", "tendermint 0.38.1", @@ -975,7 +975,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -986,7 +986,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1030,7 +1030,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1061,7 +1061,7 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1081,7 +1081,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", "unicode-xid", ] @@ -1114,7 +1114,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1371,7 +1371,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1466,7 +1466,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -1485,7 +1485,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.4.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -1715,7 +1715,7 @@ dependencies = [ "http 1.1.0", "hyper 1.4.1", "hyper-util", - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -1754,9 +1754,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -1767,7 +1767,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] @@ -1783,7 +1782,7 @@ dependencies = [ "blake3", "bytes", "hex", - "prost 0.13.1", + "prost 0.13.3", "ripemd", "sha2 0.10.8", "sha3", @@ -1823,9 +1822,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -1842,9 +1841,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "itertools" @@ -1890,9 +1889,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -1917,9 +1916,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libsecp256k1" @@ -2273,9 +2272,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "opaque-debug" @@ -2306,7 +2308,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -2433,7 +2435,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.4.0", + "indexmap 2.5.0", ] [[package]] @@ -2453,7 +2455,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -2496,6 +2498,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "powerfmt" version = "0.2.0" @@ -2518,7 +2526,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -2551,19 +2559,19 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", - "prost-derive 0.13.1", + "prost-derive 0.13.3", ] [[package]] name = "prost-build" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" dependencies = [ "bytes", "heck", @@ -2573,10 +2581,10 @@ dependencies = [ "once_cell", "petgraph 0.6.5", "prettyplease", - "prost 0.13.1", - "prost-types 0.13.1", + "prost 0.13.3", + "prost-types 0.13.3", "regex", - "syn 2.0.76", + "syn 2.0.79", "tempfile", ] @@ -2590,20 +2598,20 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "prost-derive" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -2617,11 +2625,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ - "prost 0.13.1", + "prost 0.13.3", ] [[package]] @@ -2640,9 +2648,9 @@ dependencies = [ "futures-util", "hex", "k256", - "prost 0.13.1", + "prost 0.13.3", "quartz-common", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", "sha2 0.10.8", @@ -2662,7 +2670,7 @@ dependencies = [ [[package]] name = "quartz-common" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "quartz-cw", "quartz-enclave", @@ -2672,7 +2680,7 @@ dependencies = [ [[package]] name = "quartz-cw" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "ciborium", "cosmwasm-schema", @@ -2693,7 +2701,7 @@ dependencies = [ [[package]] name = "quartz-dcap-verifier-msgs" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -2702,7 +2710,7 @@ dependencies = [ [[package]] name = "quartz-enclave" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "anyhow", "async-trait", @@ -2721,7 +2729,7 @@ dependencies = [ "quartz-proto", "quartz-tee-ra", "rand", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", "sha2 0.10.8", @@ -2739,9 +2747,9 @@ dependencies = [ [[package]] name = "quartz-proto" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ - "prost 0.13.1", + "prost 0.13.3", "tonic", "tonic-build", ] @@ -2749,7 +2757,7 @@ dependencies = [ [[package]] name = "quartz-tee-ra" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -2777,7 +2785,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.13", "socket2", "thiserror", "tokio", @@ -2794,7 +2802,7 @@ dependencies = [ "rand", "ring", "rustc-hash", - "rustls 0.23.12", + "rustls 0.23.13", "slab", "thiserror", "tinyvec", @@ -2875,23 +2883,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2905,13 +2913,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -2922,9 +2930,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -2969,9 +2977,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -2996,8 +3004,8 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.12", - "rustls-pemfile 2.1.3", + "rustls 0.23.13", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", @@ -3082,9 +3090,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.35" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -3114,21 +3122,21 @@ dependencies = [ "log", "ring", "rustls-pki-types", - "rustls-webpki 0.102.7", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.7", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -3152,7 +3160,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -3169,19 +3177,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -3195,9 +3202,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.7" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -3227,11 +3234,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3255,7 +3262,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -3303,9 +3310,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -3319,9 +3326,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -3356,13 +3363,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -3373,14 +3380,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -3396,14 +3403,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -3445,7 +3452,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -3605,9 +3612,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -3637,7 +3644,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -3685,16 +3692,16 @@ dependencies = [ [[package]] name = "tcbinfo-msgs" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "cosmwasm-schema", ] [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -3748,8 +3755,8 @@ dependencies = [ "futures", "num-traits", "once_cell", - "prost 0.13.1", - "prost-types 0.13.1", + "prost 0.13.3", + "prost-types 0.13.3", "serde", "serde_bytes", "serde_json", @@ -3862,8 +3869,8 @@ checksum = "8ed14abe3b0502a3afe21ca74ca5cdd6c7e8d326d982c26f98a394445eb31d6e" dependencies = [ "bytes", "flex-error", - "prost 0.13.1", - "prost-types 0.13.1", + "prost 0.13.3", + "prost-types 0.13.3", "serde", "serde_bytes", "subtle-encoding", @@ -3906,22 +3913,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -3983,7 +3990,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tm-prover" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "clap", "color-eyre", @@ -4004,7 +4011,7 @@ dependencies = [ [[package]] name = "tm-stateless-verifier" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "displaydoc", "tendermint 0.38.1", @@ -4035,7 +4042,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4075,16 +4082,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -4093,9 +4100,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -4127,11 +4134,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -4158,7 +4165,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.1", + "prost 0.13.3", "socket2", "tokio", "tokio-stream", @@ -4178,7 +4185,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4207,6 +4214,10 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] @@ -4242,7 +4253,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4325,24 +4336,24 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -4448,7 +4459,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -4482,7 +4493,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4496,12 +4507,12 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasmd-client" version = "0.1.0" -source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#391b7bc84a3edef153620d84d1daa69d19532dd6" +source = "git+ssh://git@github.com/informalsystems/cycles-quartz.git#e853c2ed1d7b9a720c1c39e822f701e9f71f13bb" dependencies = [ "anyhow", "cosmrs", "hex", - "reqwest 0.12.7", + "reqwest 0.12.8", "serde", "serde_json", ] @@ -4518,9 +4529,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -4714,9 +4725,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -4778,7 +4789,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4798,5 +4809,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] diff --git a/apps/transfers/enclave/Cargo.toml b/examples/transfers/enclave/Cargo.toml similarity index 81% rename from apps/transfers/enclave/Cargo.toml rename to examples/transfers/enclave/Cargo.toml index 1527f83..0e7de3a 100644 --- a/apps/transfers/enclave/Cargo.toml +++ b/examples/transfers/enclave/Cargo.toml @@ -1,3 +1,5 @@ +[workspace] + [package] name = "quartz-app-transfers-enclave" version = "0.1.0" @@ -23,19 +25,19 @@ color-eyre = { version = "0.6.2", default-features = false } ecies = { version = "0.2.3", default-features = false, features = ["pure"] } hex = { version = "0.4.3", default-features = false } k256 = { version = "0.13.2", default-features = false, features = ["ecdsa", "alloc"] } -prost = { version = "=0.13.1", default-features = false } +prost = { version = "0.13.1", default-features = false } serde = { version = "1.0.203", default-features = false, features = ["derive"] } serde_json = { version = "1.0.94", default-features = false, features = ["alloc"] } sha2 = { version = "0.10.8", default-features = false } reqwest = "0.12.7" thiserror = { version = "1.0.49", default-features = false } -tokio = { version = "=1.39.2", default-features = false, features = ["macros", "rt"] } -tonic = { version = "=0.12.1", default-features = false, features = ["codegen", "prost", "transport"] } +tokio = { version = "1.39.2", default-features = false, features = ["macros", "rt"] } +tonic = { version = "0.12.1", default-features = false, features = ["codegen", "prost", "transport"] } tracing = "0.1.39" futures-util = "0.3.30" # cosmos -cosmrs = { version = "=0.17.0", default-features = false } +cosmrs = { version = "0.17.0", default-features = false } cosmwasm-std = { version = "2.1.1", default-features = false, features = ["std"] } tendermint = { version = "=0.38.1", default-features = false } tendermint-rpc = { version = "=0.38.1", default-features = false } @@ -52,4 +54,4 @@ tm-prover = { git = "ssh://git@github.com/informalsystems/cycles-quartz.git" } cw-multi-test = "2.1.0" [build-dependencies] -tonic-build = { version = "=0.12.1", default-features = false, features = ["prost", "transport"] } +tonic-build = { version = "0.12.1", default-features = false, features = ["prost", "transport"] } diff --git a/examples/transfers/enclave/README.md b/examples/transfers/enclave/README.md new file mode 100644 index 0000000..c1f5bfa --- /dev/null +++ b/examples/transfers/enclave/README.md @@ -0,0 +1 @@ +## Transfers app enclave diff --git a/apps/transfers/enclave/bin/encrypt.rs b/examples/transfers/enclave/bin/encrypt.rs similarity index 100% rename from apps/transfers/enclave/bin/encrypt.rs rename to examples/transfers/enclave/bin/encrypt.rs diff --git a/apps/transfers/enclave/build.rs b/examples/transfers/enclave/build.rs similarity index 100% rename from apps/transfers/enclave/build.rs rename to examples/transfers/enclave/build.rs diff --git a/apps/transfers/enclave/proto/transfers.proto b/examples/transfers/enclave/proto/transfers.proto similarity index 100% rename from apps/transfers/enclave/proto/transfers.proto rename to examples/transfers/enclave/proto/transfers.proto diff --git a/apps/transfers/enclave/quartz.manifest.template b/examples/transfers/enclave/quartz.manifest.template similarity index 100% rename from apps/transfers/enclave/quartz.manifest.template rename to examples/transfers/enclave/quartz.manifest.template diff --git a/apps/transfers/enclave/src/cli.rs b/examples/transfers/enclave/src/cli.rs similarity index 100% rename from apps/transfers/enclave/src/cli.rs rename to examples/transfers/enclave/src/cli.rs diff --git a/apps/transfers/enclave/src/main.rs b/examples/transfers/enclave/src/main.rs similarity index 100% rename from apps/transfers/enclave/src/main.rs rename to examples/transfers/enclave/src/main.rs diff --git a/apps/transfers/enclave/src/prost/transfers.rs b/examples/transfers/enclave/src/prost/transfers.rs similarity index 98% rename from apps/transfers/enclave/src/prost/transfers.rs rename to examples/transfers/enclave/src/prost/transfers.rs index 5f31588..f978a7c 100644 --- a/apps/transfers/enclave/src/prost/transfers.rs +++ b/examples/transfers/enclave/src/prost/transfers.rs @@ -1,23 +1,19 @@ // This file is @generated by prost-build. -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct UpdateRequest { #[prost(string, tag = "1")] pub message: ::prost::alloc::string::String, } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct UpdateResponse { #[prost(string, tag = "1")] pub message: ::prost::alloc::string::String, } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryRequest { #[prost(string, tag = "1")] pub message: ::prost::alloc::string::String, } -#[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct QueryResponse { #[prost(string, tag = "1")] diff --git a/apps/transfers/enclave/src/proto.rs b/examples/transfers/enclave/src/proto.rs similarity index 100% rename from apps/transfers/enclave/src/proto.rs rename to examples/transfers/enclave/src/proto.rs diff --git a/apps/transfers/enclave/src/state.rs b/examples/transfers/enclave/src/state.rs similarity index 100% rename from apps/transfers/enclave/src/state.rs rename to examples/transfers/enclave/src/state.rs diff --git a/apps/transfers/enclave/src/transfers_server.rs b/examples/transfers/enclave/src/transfers_server.rs similarity index 100% rename from apps/transfers/enclave/src/transfers_server.rs rename to examples/transfers/enclave/src/transfers_server.rs diff --git a/apps/transfers/enclave/src/wslistener.rs b/examples/transfers/enclave/src/wslistener.rs similarity index 100% rename from apps/transfers/enclave/src/wslistener.rs rename to examples/transfers/enclave/src/wslistener.rs diff --git a/apps/transfers/frontend/.env.example b/examples/transfers/frontend/.env.example similarity index 100% rename from apps/transfers/frontend/.env.example rename to examples/transfers/frontend/.env.example diff --git a/apps/transfers/frontend/.eslintrc.json b/examples/transfers/frontend/.eslintrc.json similarity index 100% rename from apps/transfers/frontend/.eslintrc.json rename to examples/transfers/frontend/.eslintrc.json diff --git a/apps/transfers/frontend/.gitignore b/examples/transfers/frontend/.gitignore similarity index 100% rename from apps/transfers/frontend/.gitignore rename to examples/transfers/frontend/.gitignore diff --git a/apps/transfers/frontend/.prettierrc b/examples/transfers/frontend/.prettierrc similarity index 100% rename from apps/transfers/frontend/.prettierrc rename to examples/transfers/frontend/.prettierrc diff --git a/apps/transfers/frontend/README.md b/examples/transfers/frontend/README.md similarity index 100% rename from apps/transfers/frontend/README.md rename to examples/transfers/frontend/README.md diff --git a/apps/transfers/frontend/env.d.ts b/examples/transfers/frontend/env.d.ts similarity index 100% rename from apps/transfers/frontend/env.d.ts rename to examples/transfers/frontend/env.d.ts diff --git a/apps/transfers/frontend/next.config.mjs b/examples/transfers/frontend/next.config.mjs similarity index 100% rename from apps/transfers/frontend/next.config.mjs rename to examples/transfers/frontend/next.config.mjs diff --git a/apps/transfers/frontend/package-lock.json b/examples/transfers/frontend/package-lock.json similarity index 100% rename from apps/transfers/frontend/package-lock.json rename to examples/transfers/frontend/package-lock.json diff --git a/apps/transfers/frontend/package.json b/examples/transfers/frontend/package.json similarity index 100% rename from apps/transfers/frontend/package.json rename to examples/transfers/frontend/package.json diff --git a/apps/transfers/frontend/playwright.config.ts b/examples/transfers/frontend/playwright.config.ts similarity index 100% rename from apps/transfers/frontend/playwright.config.ts rename to examples/transfers/frontend/playwright.config.ts diff --git a/apps/transfers/frontend/postcss.config.mjs b/examples/transfers/frontend/postcss.config.mjs similarity index 100% rename from apps/transfers/frontend/postcss.config.mjs rename to examples/transfers/frontend/postcss.config.mjs diff --git a/apps/transfers/frontend/public/favicon.png b/examples/transfers/frontend/public/favicon.png similarity index 100% rename from apps/transfers/frontend/public/favicon.png rename to examples/transfers/frontend/public/favicon.png diff --git a/apps/transfers/frontend/src/app/(anon)/page.tsx b/examples/transfers/frontend/src/app/(anon)/page.tsx similarity index 100% rename from apps/transfers/frontend/src/app/(anon)/page.tsx rename to examples/transfers/frontend/src/app/(anon)/page.tsx diff --git a/apps/transfers/frontend/src/app/(anon)/set-seed/page.tsx b/examples/transfers/frontend/src/app/(anon)/set-seed/page.tsx similarity index 100% rename from apps/transfers/frontend/src/app/(anon)/set-seed/page.tsx rename to examples/transfers/frontend/src/app/(anon)/set-seed/page.tsx diff --git a/apps/transfers/frontend/src/app/(protected)/dashboard/page.tsx b/examples/transfers/frontend/src/app/(protected)/dashboard/page.tsx similarity index 100% rename from apps/transfers/frontend/src/app/(protected)/dashboard/page.tsx rename to examples/transfers/frontend/src/app/(protected)/dashboard/page.tsx diff --git a/apps/transfers/frontend/src/app/globals.css b/examples/transfers/frontend/src/app/globals.css similarity index 100% rename from apps/transfers/frontend/src/app/globals.css rename to examples/transfers/frontend/src/app/globals.css diff --git a/apps/transfers/frontend/src/app/layout.tsx b/examples/transfers/frontend/src/app/layout.tsx similarity index 100% rename from apps/transfers/frontend/src/app/layout.tsx rename to examples/transfers/frontend/src/app/layout.tsx diff --git a/apps/transfers/frontend/src/app/not-found.tsx b/examples/transfers/frontend/src/app/not-found.tsx similarity index 100% rename from apps/transfers/frontend/src/app/not-found.tsx rename to examples/transfers/frontend/src/app/not-found.tsx diff --git a/apps/transfers/frontend/src/components/DepositModalWindow.tsx b/examples/transfers/frontend/src/components/DepositModalWindow.tsx similarity index 100% rename from apps/transfers/frontend/src/components/DepositModalWindow.tsx rename to examples/transfers/frontend/src/components/DepositModalWindow.tsx diff --git a/apps/transfers/frontend/src/components/EnterSeedModal.tsx b/examples/transfers/frontend/src/components/EnterSeedModal.tsx similarity index 100% rename from apps/transfers/frontend/src/components/EnterSeedModal.tsx rename to examples/transfers/frontend/src/components/EnterSeedModal.tsx diff --git a/apps/transfers/frontend/src/components/Icon/Icon.tsx b/examples/transfers/frontend/src/components/Icon/Icon.tsx similarity index 100% rename from apps/transfers/frontend/src/components/Icon/Icon.tsx rename to examples/transfers/frontend/src/components/Icon/Icon.tsx diff --git a/apps/transfers/frontend/src/components/Icon/index.ts b/examples/transfers/frontend/src/components/Icon/index.ts similarity index 100% rename from apps/transfers/frontend/src/components/Icon/index.ts rename to examples/transfers/frontend/src/components/Icon/index.ts diff --git a/apps/transfers/frontend/src/components/Icon/types.ts b/examples/transfers/frontend/src/components/Icon/types.ts similarity index 100% rename from apps/transfers/frontend/src/components/Icon/types.ts rename to examples/transfers/frontend/src/components/Icon/types.ts diff --git a/apps/transfers/frontend/src/components/LoadingSpinner.tsx b/examples/transfers/frontend/src/components/LoadingSpinner.tsx similarity index 100% rename from apps/transfers/frontend/src/components/LoadingSpinner.tsx rename to examples/transfers/frontend/src/components/LoadingSpinner.tsx diff --git a/apps/transfers/frontend/src/components/ModalWindow/ModalWindow.tsx b/examples/transfers/frontend/src/components/ModalWindow/ModalWindow.tsx similarity index 100% rename from apps/transfers/frontend/src/components/ModalWindow/ModalWindow.tsx rename to examples/transfers/frontend/src/components/ModalWindow/ModalWindow.tsx diff --git a/apps/transfers/frontend/src/components/ModalWindow/classNames.ts b/examples/transfers/frontend/src/components/ModalWindow/classNames.ts similarity index 100% rename from apps/transfers/frontend/src/components/ModalWindow/classNames.ts rename to examples/transfers/frontend/src/components/ModalWindow/classNames.ts diff --git a/apps/transfers/frontend/src/components/ModalWindow/index.ts b/examples/transfers/frontend/src/components/ModalWindow/index.ts similarity index 100% rename from apps/transfers/frontend/src/components/ModalWindow/index.ts rename to examples/transfers/frontend/src/components/ModalWindow/index.ts diff --git a/apps/transfers/frontend/src/components/Root/App.tsx b/examples/transfers/frontend/src/components/Root/App.tsx similarity index 100% rename from apps/transfers/frontend/src/components/Root/App.tsx rename to examples/transfers/frontend/src/components/Root/App.tsx diff --git a/apps/transfers/frontend/src/components/Root/GrazWrapper.tsx b/examples/transfers/frontend/src/components/Root/GrazWrapper.tsx similarity index 100% rename from apps/transfers/frontend/src/components/Root/GrazWrapper.tsx rename to examples/transfers/frontend/src/components/Root/GrazWrapper.tsx diff --git a/apps/transfers/frontend/src/components/Root/LoadingWrapper.tsx b/examples/transfers/frontend/src/components/Root/LoadingWrapper.tsx similarity index 100% rename from apps/transfers/frontend/src/components/Root/LoadingWrapper.tsx rename to examples/transfers/frontend/src/components/Root/LoadingWrapper.tsx diff --git a/apps/transfers/frontend/src/components/Root/Middleware.tsx b/examples/transfers/frontend/src/components/Root/Middleware.tsx similarity index 100% rename from apps/transfers/frontend/src/components/Root/Middleware.tsx rename to examples/transfers/frontend/src/components/Root/Middleware.tsx diff --git a/apps/transfers/frontend/src/components/Root/index.tsx b/examples/transfers/frontend/src/components/Root/index.tsx similarity index 100% rename from apps/transfers/frontend/src/components/Root/index.tsx rename to examples/transfers/frontend/src/components/Root/index.tsx diff --git a/apps/transfers/frontend/src/components/StyledBox/StyledBox.tsx b/examples/transfers/frontend/src/components/StyledBox/StyledBox.tsx similarity index 100% rename from apps/transfers/frontend/src/components/StyledBox/StyledBox.tsx rename to examples/transfers/frontend/src/components/StyledBox/StyledBox.tsx diff --git a/apps/transfers/frontend/src/components/StyledBox/classNames.ts b/examples/transfers/frontend/src/components/StyledBox/classNames.ts similarity index 100% rename from apps/transfers/frontend/src/components/StyledBox/classNames.ts rename to examples/transfers/frontend/src/components/StyledBox/classNames.ts diff --git a/apps/transfers/frontend/src/components/StyledBox/index.ts b/examples/transfers/frontend/src/components/StyledBox/index.ts similarity index 100% rename from apps/transfers/frontend/src/components/StyledBox/index.ts rename to examples/transfers/frontend/src/components/StyledBox/index.ts diff --git a/apps/transfers/frontend/src/components/StyledText/StyledText.tsx b/examples/transfers/frontend/src/components/StyledText/StyledText.tsx similarity index 100% rename from apps/transfers/frontend/src/components/StyledText/StyledText.tsx rename to examples/transfers/frontend/src/components/StyledText/StyledText.tsx diff --git a/apps/transfers/frontend/src/components/StyledText/classNames.tsx b/examples/transfers/frontend/src/components/StyledText/classNames.tsx similarity index 100% rename from apps/transfers/frontend/src/components/StyledText/classNames.tsx rename to examples/transfers/frontend/src/components/StyledText/classNames.tsx diff --git a/apps/transfers/frontend/src/components/StyledText/index.ts b/examples/transfers/frontend/src/components/StyledText/index.ts similarity index 100% rename from apps/transfers/frontend/src/components/StyledText/index.ts rename to examples/transfers/frontend/src/components/StyledText/index.ts diff --git a/apps/transfers/frontend/src/components/TransferModalWindow.tsx b/examples/transfers/frontend/src/components/TransferModalWindow.tsx similarity index 100% rename from apps/transfers/frontend/src/components/TransferModalWindow.tsx rename to examples/transfers/frontend/src/components/TransferModalWindow.tsx diff --git a/apps/transfers/frontend/src/components/WithdrawModalWindow.tsx b/examples/transfers/frontend/src/components/WithdrawModalWindow.tsx similarity index 100% rename from apps/transfers/frontend/src/components/WithdrawModalWindow.tsx rename to examples/transfers/frontend/src/components/WithdrawModalWindow.tsx diff --git a/apps/transfers/frontend/src/config/chain.ts b/examples/transfers/frontend/src/config/chain.ts similarity index 100% rename from apps/transfers/frontend/src/config/chain.ts rename to examples/transfers/frontend/src/config/chain.ts diff --git a/apps/transfers/frontend/src/config/chains/localNeutron.ts b/examples/transfers/frontend/src/config/chains/localNeutron.ts similarity index 100% rename from apps/transfers/frontend/src/config/chains/localNeutron.ts rename to examples/transfers/frontend/src/config/chains/localNeutron.ts diff --git a/apps/transfers/frontend/src/config/chains/localWasm.ts b/examples/transfers/frontend/src/config/chains/localWasm.ts similarity index 100% rename from apps/transfers/frontend/src/config/chains/localWasm.ts rename to examples/transfers/frontend/src/config/chains/localWasm.ts diff --git a/apps/transfers/frontend/src/config/routes.ts b/examples/transfers/frontend/src/config/routes.ts similarity index 100% rename from apps/transfers/frontend/src/config/routes.ts rename to examples/transfers/frontend/src/config/routes.ts diff --git a/apps/transfers/frontend/src/instrumentation.ts b/examples/transfers/frontend/src/instrumentation.ts similarity index 100% rename from apps/transfers/frontend/src/instrumentation.ts rename to examples/transfers/frontend/src/instrumentation.ts diff --git a/apps/transfers/frontend/src/lib/contractMessageBuilders.ts b/examples/transfers/frontend/src/lib/contractMessageBuilders.ts similarity index 100% rename from apps/transfers/frontend/src/lib/contractMessageBuilders.ts rename to examples/transfers/frontend/src/lib/contractMessageBuilders.ts diff --git a/apps/transfers/frontend/src/lib/ephemeralKeypair.ts b/examples/transfers/frontend/src/lib/ephemeralKeypair.ts similarity index 100% rename from apps/transfers/frontend/src/lib/ephemeralKeypair.ts rename to examples/transfers/frontend/src/lib/ephemeralKeypair.ts diff --git a/apps/transfers/frontend/src/lib/isValidAddress.ts b/examples/transfers/frontend/src/lib/isValidAddress.ts similarity index 100% rename from apps/transfers/frontend/src/lib/isValidAddress.ts rename to examples/transfers/frontend/src/lib/isValidAddress.ts diff --git a/apps/transfers/frontend/src/lib/notifications.tsx b/examples/transfers/frontend/src/lib/notifications.tsx similarity index 100% rename from apps/transfers/frontend/src/lib/notifications.tsx rename to examples/transfers/frontend/src/lib/notifications.tsx diff --git a/apps/transfers/frontend/src/lib/tw.ts b/examples/transfers/frontend/src/lib/tw.ts similarity index 100% rename from apps/transfers/frontend/src/lib/tw.ts rename to examples/transfers/frontend/src/lib/tw.ts diff --git a/apps/transfers/frontend/src/lib/wasmEventHandler.ts b/examples/transfers/frontend/src/lib/wasmEventHandler.ts similarity index 100% rename from apps/transfers/frontend/src/lib/wasmEventHandler.ts rename to examples/transfers/frontend/src/lib/wasmEventHandler.ts diff --git a/apps/transfers/frontend/src/state/useGlobalState.ts b/examples/transfers/frontend/src/state/useGlobalState.ts similarity index 100% rename from apps/transfers/frontend/src/state/useGlobalState.ts rename to examples/transfers/frontend/src/state/useGlobalState.ts diff --git a/apps/transfers/frontend/tailwind.config.ts b/examples/transfers/frontend/tailwind.config.ts similarity index 100% rename from apps/transfers/frontend/tailwind.config.ts rename to examples/transfers/frontend/tailwind.config.ts diff --git a/apps/transfers/frontend/tests/e2e/auth.spec.ts b/examples/transfers/frontend/tests/e2e/auth.spec.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/auth.spec.ts rename to examples/transfers/frontend/tests/e2e/auth.spec.ts diff --git a/apps/transfers/frontend/tests/e2e/extensions/.gitkeep b/examples/transfers/frontend/tests/e2e/extensions/.gitkeep similarity index 100% rename from apps/transfers/frontend/tests/e2e/extensions/.gitkeep rename to examples/transfers/frontend/tests/e2e/extensions/.gitkeep diff --git a/apps/transfers/frontend/tests/e2e/fixtures.ts b/examples/transfers/frontend/tests/e2e/fixtures.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/fixtures.ts rename to examples/transfers/frontend/tests/e2e/fixtures.ts diff --git a/apps/transfers/frontend/tests/e2e/helpers/connectWalet.ts b/examples/transfers/frontend/tests/e2e/helpers/connectWalet.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/helpers/connectWalet.ts rename to examples/transfers/frontend/tests/e2e/helpers/connectWalet.ts diff --git a/apps/transfers/frontend/tests/e2e/helpers/getBalance.ts b/examples/transfers/frontend/tests/e2e/helpers/getBalance.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/helpers/getBalance.ts rename to examples/transfers/frontend/tests/e2e/helpers/getBalance.ts diff --git a/apps/transfers/frontend/tests/e2e/helpers/importWallet.ts b/examples/transfers/frontend/tests/e2e/helpers/importWallet.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/helpers/importWallet.ts rename to examples/transfers/frontend/tests/e2e/helpers/importWallet.ts diff --git a/apps/transfers/frontend/tests/e2e/helpers/setSeedPhrase.ts b/examples/transfers/frontend/tests/e2e/helpers/setSeedPhrase.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/helpers/setSeedPhrase.ts rename to examples/transfers/frontend/tests/e2e/helpers/setSeedPhrase.ts diff --git a/apps/transfers/frontend/tests/e2e/helpers/signTx.ts b/examples/transfers/frontend/tests/e2e/helpers/signTx.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/helpers/signTx.ts rename to examples/transfers/frontend/tests/e2e/helpers/signTx.ts diff --git a/apps/transfers/frontend/tests/e2e/helpers/swapWallet.ts b/examples/transfers/frontend/tests/e2e/helpers/swapWallet.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/helpers/swapWallet.ts rename to examples/transfers/frontend/tests/e2e/helpers/swapWallet.ts diff --git a/apps/transfers/frontend/tests/e2e/seed-phrase.spec.ts b/examples/transfers/frontend/tests/e2e/seed-phrase.spec.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/seed-phrase.spec.ts rename to examples/transfers/frontend/tests/e2e/seed-phrase.spec.ts diff --git a/apps/transfers/frontend/tests/e2e/transfers.spec.ts b/examples/transfers/frontend/tests/e2e/transfers.spec.ts similarity index 100% rename from apps/transfers/frontend/tests/e2e/transfers.spec.ts rename to examples/transfers/frontend/tests/e2e/transfers.spec.ts diff --git a/apps/transfers/frontend/tests/global.setup.ts b/examples/transfers/frontend/tests/global.setup.ts similarity index 100% rename from apps/transfers/frontend/tests/global.setup.ts rename to examples/transfers/frontend/tests/global.setup.ts diff --git a/apps/transfers/frontend/tsconfig.json b/examples/transfers/frontend/tsconfig.json similarity index 100% rename from apps/transfers/frontend/tsconfig.json rename to examples/transfers/frontend/tsconfig.json diff --git a/apps/mtcs/quartz.toml b/examples/transfers/quartz.toml similarity index 100% rename from apps/mtcs/quartz.toml rename to examples/transfers/quartz.toml diff --git a/utils/cycles-sync/Cargo.toml b/utils/cycles-sync/Cargo.toml deleted file mode 100644 index 8347a90..0000000 --- a/utils/cycles-sync/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "cycles-sync" -version.workspace = true -authors.workspace = true -edition.workspace = true -rust-version.workspace = true -license.workspace = true -repository.workspace = true -keywords = ["blockchain", "cosmos", "tendermint", "cycles", "quartz"] -readme = "README.md" - -[dependencies] -# external -async-trait.workspace = true -bip32.workspace = true -clap.workspace = true -displaydoc.workspace = true -ecies.workspace = true -hex.workspace = true -reqwest.workspace = true -serde.workspace = true -serde_json.workspace = true -subtle-encoding.workspace = true -thiserror.workspace = true -tokio.workspace = true -tracing.workspace = true -tracing-subscriber.workspace = true -uuid.workspace = true -anyhow = { version = "*" } - -# cosmos -cosmrs.workspace = true -cosmwasm-std.workspace = true - -# quartz -cw-tee-mtcs = { path = "../../apps/mtcs/contracts/cw-tee-mtcs/" } -wasmd-client.workspace = true -mtcs-enclave.workspace = true - -[dev-dependencies] -rand_core.workspace = true diff --git a/utils/cycles-sync/src/main.rs b/utils/cycles-sync/src/main.rs deleted file mode 100644 index 77e2ce7..0000000 --- a/utils/cycles-sync/src/main.rs +++ /dev/null @@ -1,173 +0,0 @@ -use std::str::FromStr; - -use anyhow::anyhow; -use bip32::secp256k1::{ - ecdsa::VerifyingKey, - sha2::{Digest, Sha256}, -}; -use clap::Parser; -use cosmrs::{tendermint::chain::Id as TmChainId, AccountId}; -use cosmwasm_std::{Addr, HexBinary}; -use cw_tee_mtcs::state::{LiquiditySource, LiquiditySourceType}; -use mtcs_enclave::types::{ - ContractObligation, RawEncryptedObligation, RawSetOff, SubmitObligationsMsg, - SubmitObligationsMsgInner, -}; -use reqwest::Url; -use serde::{Deserialize, Serialize}; -use subtle_encoding::bech32::decode as bech32_decode; -use wasmd_client::{CliWasmdClient, WasmdClient}; - -// const MNEMONIC_PHRASE: &str = "clutch debate vintage foster barely primary clown leader sell manual leopard ladder wet must embody story oyster imitate cable alien six square rice wedding"; - -const ADDRESS_PREFIX: &str = "wasm"; - -type Sha256Digest = [u8; 32]; - -#[derive(Clone, Debug, Serialize, Deserialize)] -struct QueryAllSetoffsResponse { - setoffs: Vec<(HexBinary, RawSetOff)>, -} - -#[derive(Clone, Debug, Parser)] -#[command(version, about, long_about = None)] -struct Cli { - #[arg(short, long, value_parser = wasmaddr_to_id)] - mtcs: AccountId, - - #[arg(short, long)] - epoch_pk: String, - - #[arg(short, long)] - overdraft: String, - - #[clap(long)] - flip: bool, - - #[arg( - short, - long, - default_value = "wasm14qdftsfk6fwn40l0xmruga08xlczl4g05npy70" - )] - admin: String, -} - -#[tokio::main] -async fn main() -> Result<(), anyhow::Error> { - let cli = Cli::parse(); - - let mut alice = Addr::unchecked("wasm124tuy67a9dcvfgcr4gjmz60syd8ddaugl33v0n"); - let mut bob = Addr::unchecked("wasm1ctkqmg45u85jnf5ur9796h7ze4hj6ep5y7m7l6"); - let overdraft = Addr::unchecked(cli.overdraft); - - if cli.flip { - let temp = alice.clone(); - alice = bob; - bob = temp; - } - - let alice_to_bob: ContractObligation = ContractObligation { - debtor: alice.clone(), - creditor: bob.clone(), - amount: 10, - salt: HexBinary::from([0; 64]), - }; - - let bob_acceptance: ContractObligation = ContractObligation { - debtor: bob.clone(), - creditor: overdraft.clone(), - amount: 10, - salt: HexBinary::from([0; 64]), - }; - - let alice_tender: ContractObligation = ContractObligation { - debtor: overdraft.clone(), - creditor: alice.clone(), - amount: 10, - salt: HexBinary::from([0; 64]), - }; - - let intents = vec![alice_to_bob, bob_acceptance, alice_tender]; - let epoch_pk = VerifyingKey::from_sec1_bytes(&hex::decode(cli.epoch_pk).unwrap()).unwrap(); - - let intents_enc = encrypt_overdraft_intents(intents, &epoch_pk); - - let liquidity_sources: Vec = vec![LiquiditySource { - address: overdraft, - source_type: LiquiditySourceType::Overdraft, - }]; - - let msg = create_wasm_msg(intents_enc, liquidity_sources)?; - - let node_url = Url::parse("http://143.244.186.205:26657")?; - let chain_id = TmChainId::from_str("testing")?; - - let wasmd_client = CliWasmdClient::new(node_url); - - wasmd_client.tx_execute(&cli.mtcs, &chain_id, 3000000, &cli.admin.to_string(), msg)?; - - Ok(()) -} - -pub struct OverdraftObligation { - pub debtor: Addr, - pub creditor: Addr, - pub amount: u64, -} - -fn encrypt_overdraft_intents( - intents: Vec, - epoch_pk: &VerifyingKey, -) -> Vec<(Sha256Digest, Vec)> { - let mut intents_enc = vec![]; - - for i in intents { - // serialize intent - let i_ser = serde_json::to_string(&i).unwrap(); - - // encrypt intent - let i_cipher = ecies::encrypt(&epoch_pk.to_sec1_bytes(), i_ser.as_bytes()).unwrap(); - - // hash intent - let i_digest: Sha256Digest = { - let mut hasher = Sha256::new(); - hasher.update(i_ser); - hasher.finalize().into() - }; - - intents_enc.push((i_digest, i_cipher)); - } - - intents_enc -} - -fn create_wasm_msg( - obligations_enc: Vec<(Sha256Digest, Vec)>, - liquidity_sources: Vec, -) -> anyhow::Result { - let obligations_enc: Vec<_> = obligations_enc - .into_iter() - .map(|(digest, ciphertext)| { - let digest = HexBinary::from(digest); - let ciphertext = HexBinary::from(ciphertext); - RawEncryptedObligation { digest, ciphertext } - }) - .collect(); - - let msg = SubmitObligationsMsg { - submit_obligations: SubmitObligationsMsgInner { - obligations: obligations_enc, - liquidity_sources, - }, - }; - serde_json::to_value(msg).map_err(Into::into) -} - -fn wasmaddr_to_id(address_str: &str) -> anyhow::Result { - let (hr, _) = bech32_decode(address_str).map_err(|e| anyhow!(e))?; - if hr != ADDRESS_PREFIX { - return Err(anyhow!(hr)); - } - - Ok(address_str.parse().unwrap()) -}