feat: neutrond tendermint upgrades (#119)
Co-authored-by: hu55a1n1 <sufialhussaini@gmail.com>
This commit is contained in:
parent
bbd68d7b23
commit
a18ae28c48
29 changed files with 2366 additions and 910 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -11,3 +11,4 @@ target/
|
|||
artifacts/
|
||||
.vscode/
|
||||
.DS_Store
|
||||
**/.env.local
|
753
Cargo.lock
generated
753
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
33
Cargo.toml
33
Cargo.toml
|
@ -2,7 +2,6 @@
|
|||
resolver = "2"
|
||||
members = [
|
||||
"apps/mtcs/enclave",
|
||||
"apps/mtcs/scripts",
|
||||
"apps/transfers/enclave",
|
||||
"cli",
|
||||
"core/light-client-proofs/*",
|
||||
|
@ -11,7 +10,7 @@ members = [
|
|||
"cosmwasm/packages/*",
|
||||
"utils/*",
|
||||
]
|
||||
exclude = ["apps/mtcs/contracts/cw-tee-mtcs", "apps/transfers/contracts"]
|
||||
exclude = ["apps/mtcs/contracts/cw-tee-mtcs", "apps/transfers/contracts", "apps/mtcs/scripts"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.1.0"
|
||||
|
@ -37,7 +36,7 @@ hex = { version = "0.4.3", default-features = false }
|
|||
hex-literal = { version = "0.4.1", default-features = false }
|
||||
k256 = { version = "0.13.2", default-features = false, features = ["ecdsa", "alloc"] }
|
||||
num-bigint = { version = "0.4.4", default-features = false }
|
||||
prost = { version = "0.12.3", default-features = false }
|
||||
prost = { version = "=0.13.1", default-features = false }
|
||||
rand = { version = "0.8.5", default-features = false, features = ["getrandom"] }
|
||||
rand_core = { version = "0.6", default-features = false, features = ["std"] }
|
||||
reqwest = { version = "0.12.2", default-features = false, features = ["json", "rustls-tls"] }
|
||||
|
@ -48,9 +47,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.38.0", default-features = false, features = ["macros", "rt-multi-thread"] }
|
||||
tonic = { version = "0.11", default-features = false, features = ["codegen", "prost", "transport"] }
|
||||
tonic-build = { version = "0.11", 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"] }
|
||||
tracing = { version = "0.1.39", default-features = false }
|
||||
tracing-subscriber = { version = "0.3.17", default-features = false, features = ["fmt"] }
|
||||
uuid = { version = "1.4.1", default-features = false, features = ["serde"] }
|
||||
|
@ -59,16 +58,16 @@ x509-parser = { version = "0.16.0", features = ["default", "verify"] }
|
|||
zeroize = { version = "1.7.0", default-features = false }
|
||||
|
||||
# cosmos
|
||||
cosmos-sdk-proto = { version = "0.21.1" }
|
||||
cosmrs = { version = "=0.16.0", default-features = false }
|
||||
cosmwasm-schema = { version = "2.0.0", default-features = false }
|
||||
cosmwasm-std = { version = "2.0.0", default-features = false, features = ["std"] }
|
||||
cosmos-sdk-proto = { version = "0.22.0" }
|
||||
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"] }
|
||||
cw-storage-plus = { version = "2.0.0", default-features = false }
|
||||
ics23 = { version = "0.11.0", default-features = false, features = ["host-functions"] }
|
||||
tendermint = { version = "=0.36.0", default-features = false }
|
||||
tendermint-light-client = { version = "=0.36.0", default-features = false, features = ["rust-crypto"] }
|
||||
tendermint-light-client-detector = { version = "=0.36.0", default-features = false }
|
||||
tendermint-rpc = { version = "=0.36.0", default-features = false, features = ["http-client"] }
|
||||
ics23 = { version = "0.12.0", default-features = false, features = ["host-functions"] }
|
||||
tendermint = { version = "=0.38.1", default-features = false }
|
||||
tendermint-light-client = { version = "=0.38.1", default-features = false, features = ["rust-crypto"] }
|
||||
tendermint-light-client-detector = { version = "=0.38.1", default-features = false }
|
||||
tendermint-rpc = { version = "=0.38.1", default-features = false, features = ["http-client"] }
|
||||
|
||||
# mobilecoin
|
||||
mc-sgx-core-types = { git = "https://github.com/informalsystems/sgx", default-features = false }
|
||||
|
@ -79,11 +78,11 @@ mc-attestation-verifier = { git = "https://github.com/informalsystems/attestatio
|
|||
# quartz
|
||||
cw-proof = { path = "core/light-client-proofs/cw-proof", default-features = false }
|
||||
cycles-sync = { path = "utils/cycles-sync", default-features = false }
|
||||
quartz-common = { path = "core/quartz-common" }
|
||||
quartz-common = { path = "core/quartz-common"}
|
||||
quartz-cw = { path = "cosmwasm/packages/quartz-cw", default-features = false }
|
||||
quartz-enclave = { path = "core/quartz", default-features = false }
|
||||
quartz-proto = { path = "core/quartz-proto", default-features = false }
|
||||
quartz-relayer = { path = "relayer", default-features = false }
|
||||
quartz-relayer = { path = "relayer", default-features = false , features = ["mock-sgx"]}
|
||||
quartz-tee-ra = { path = "cosmwasm/packages/quartz-tee-ra", 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 }
|
||||
|
|
522
apps/mtcs/contracts/cw-tee-mtcs/Cargo.lock
generated
522
apps/mtcs/contracts/cw-tee-mtcs/Cargo.lock
generated
|
@ -4,21 +4,149 @@ version = 3
|
|||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.7.8"
|
||||
version = "0.8.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
|
||||
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"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.1"
|
||||
|
@ -70,12 +198,6 @@ version = "0.2.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.22.1"
|
||||
|
@ -88,12 +210,6 @@ version = "1.6.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
|
||||
|
||||
[[package]]
|
||||
name = "bech32"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445"
|
||||
|
||||
[[package]]
|
||||
name = "bech32"
|
||||
version = "0.11.0"
|
||||
|
@ -106,15 +222,6 @@ version = "2.6.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.4"
|
||||
|
@ -126,9 +233,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bnum"
|
||||
version = "0.10.0"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f"
|
||||
checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790"
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
|
@ -177,25 +284,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
||||
|
||||
[[package]]
|
||||
name = "cosmwasm-crypto"
|
||||
version = "2.0.4"
|
||||
name = "cosmwasm-core"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c7a339f6b59ff7ad4ae05a70512a4f3c19bf8fcc845d46bfef90f4ec0810f72c"
|
||||
checksum = "367fc87c43759098a476ef90f915aadc66c300480ad9c155b512081fbf327bc1"
|
||||
|
||||
[[package]]
|
||||
name = "cosmwasm-crypto"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b7c41f3e371ea457d3b98bb592c38858b46efcf614e0e988ec2ebbdb973954f"
|
||||
dependencies = [
|
||||
"digest 0.10.7",
|
||||
"ark-bls12-381",
|
||||
"ark-ec",
|
||||
"ark-ff",
|
||||
"ark-serialize",
|
||||
"cosmwasm-core",
|
||||
"digest",
|
||||
"ecdsa",
|
||||
"ed25519-zebra",
|
||||
"k256",
|
||||
"rand_core 0.6.4",
|
||||
"num-traits",
|
||||
"p256",
|
||||
"rand_core",
|
||||
"rayon",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cosmwasm-derive"
|
||||
version = "2.0.4"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d3bfea6af94a83880fb05478135ed0c256d9a2fcde58c595a10d64dcb9c925d"
|
||||
checksum = "c10510e8eb66cf7e109741b1e2c76ad18f30b5a1daa064f5f7115c1f733aaea0"
|
||||
dependencies = [
|
||||
"syn 1.0.109",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.70",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -224,22 +349,23 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cosmwasm-std"
|
||||
version = "2.0.4"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ded932165de44cd0717979c34fc3b84d8e8066b8dde4f5bd78f96a643b090f90"
|
||||
checksum = "92011c39570876f340d5f9defa68bf92797b1c44421f1b9ea9b04a31d6defd33"
|
||||
dependencies = [
|
||||
"base64 0.21.7",
|
||||
"bech32 0.9.1",
|
||||
"base64",
|
||||
"bech32",
|
||||
"bnum",
|
||||
"cosmwasm-core",
|
||||
"cosmwasm-crypto",
|
||||
"cosmwasm-derive",
|
||||
"derivative",
|
||||
"forward_ref",
|
||||
"derive_more",
|
||||
"hex",
|
||||
"rand_core",
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde-json-wasm",
|
||||
"sha2 0.10.8",
|
||||
"sha2",
|
||||
"static_assertions",
|
||||
"thiserror",
|
||||
]
|
||||
|
@ -253,6 +379,31 @@ 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 = "crypto-bigint"
|
||||
version = "0.5.5"
|
||||
|
@ -260,7 +411,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
@ -277,34 +428,48 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "curve25519-dalek"
|
||||
version = "3.2.0"
|
||||
version = "4.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
|
||||
checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"digest 0.9.0",
|
||||
"rand_core 0.5.1",
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"curve25519-dalek-derive",
|
||||
"digest",
|
||||
"fiat-crypto",
|
||||
"rustc_version",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cw-multi-test"
|
||||
version = "2.0.1"
|
||||
name = "curve25519-dalek-derive"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e403ad6ec62c8bcbcb75f7f4940712d0142b6103310da2a9375252b942358caa"
|
||||
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.70",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cw-multi-test"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0034bfb4c06dfc8b50f0b1a06c3fc0f2312a1bae568a97db65930de071288ba"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bech32 0.11.0",
|
||||
"bech32",
|
||||
"cosmwasm-std",
|
||||
"cw-storage-plus",
|
||||
"cw-utils",
|
||||
"derivative",
|
||||
"itertools",
|
||||
"itertools 0.13.0",
|
||||
"prost",
|
||||
"schemars",
|
||||
"serde",
|
||||
"sha2 0.10.8",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
|
@ -336,7 +501,7 @@ dependencies = [
|
|||
"quartz-common",
|
||||
"schemars",
|
||||
"serde_json",
|
||||
"sha2 0.10.8",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
|
@ -498,12 +663,24 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.9.0"
|
||||
name = "derive_more"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
|
||||
checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"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.70",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -512,7 +689,7 @@ version = "0.10.7"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||
dependencies = [
|
||||
"block-buffer 0.10.4",
|
||||
"block-buffer",
|
||||
"const-oid",
|
||||
"crypto-common",
|
||||
"subtle",
|
||||
|
@ -542,7 +719,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
|
||||
dependencies = [
|
||||
"der",
|
||||
"digest 0.10.7",
|
||||
"digest",
|
||||
"elliptic-curve",
|
||||
"rfc6979",
|
||||
"signature",
|
||||
|
@ -550,17 +727,26 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "ed25519-zebra"
|
||||
version = "3.1.0"
|
||||
name = "ed25519"
|
||||
version = "2.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6"
|
||||
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",
|
||||
"hashbrown",
|
||||
"ed25519",
|
||||
"hashbrown 0.14.5",
|
||||
"hex",
|
||||
"rand_core 0.6.4",
|
||||
"serde",
|
||||
"sha2 0.9.9",
|
||||
"rand_core",
|
||||
"sha2",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
|
@ -578,12 +764,12 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
|
|||
dependencies = [
|
||||
"base16ct",
|
||||
"crypto-bigint",
|
||||
"digest 0.10.7",
|
||||
"digest",
|
||||
"ff",
|
||||
"generic-array",
|
||||
"group",
|
||||
"pkcs8",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
"sec1",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
|
@ -595,10 +781,16 @@ version = "0.13.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
|
||||
dependencies = [
|
||||
"rand_core 0.6.4",
|
||||
"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.5"
|
||||
|
@ -611,12 +803,6 @@ version = "1.0.7"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "forward_ref"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e"
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.14.7"
|
||||
|
@ -648,19 +834,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
|
||||
dependencies = [
|
||||
"ff",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.12.3"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
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"
|
||||
|
@ -682,7 +878,7 @@ version = "0.12.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
|
||||
dependencies = [
|
||||
"digest 0.10.7",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -691,6 +887,15 @@ 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.12.1"
|
||||
|
@ -700,6 +905,15 @@ 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"
|
||||
|
@ -724,9 +938,7 @@ dependencies = [
|
|||
"cfg-if",
|
||||
"ecdsa",
|
||||
"elliptic-curve",
|
||||
"once_cell",
|
||||
"sha2 0.10.8",
|
||||
"signature",
|
||||
"sha2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -786,7 +998,7 @@ dependencies = [
|
|||
"mc-sgx-core-sys-types",
|
||||
"mc-sgx-util",
|
||||
"nom",
|
||||
"rand_core 0.6.4",
|
||||
"rand_core",
|
||||
"serde",
|
||||
"subtle",
|
||||
]
|
||||
|
@ -813,7 +1025,7 @@ dependencies = [
|
|||
"nom",
|
||||
"p256",
|
||||
"serde",
|
||||
"sha2 0.10.8",
|
||||
"sha2",
|
||||
"static_assertions",
|
||||
"subtle",
|
||||
"x509-cert",
|
||||
|
@ -895,12 +1107,6 @@ version = "1.19.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
|
||||
|
||||
[[package]]
|
||||
name = "p256"
|
||||
version = "0.13.2"
|
||||
|
@ -910,9 +1116,15 @@ dependencies = [
|
|||
"ecdsa",
|
||||
"elliptic-curve",
|
||||
"primeorder",
|
||||
"sha2 0.10.8",
|
||||
"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"
|
||||
|
@ -938,6 +1150,15 @@ 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"
|
||||
|
@ -973,7 +1194,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools",
|
||||
"itertools 0.12.1",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.70",
|
||||
|
@ -998,7 +1219,7 @@ dependencies = [
|
|||
"serde",
|
||||
"serde_json",
|
||||
"serde_with",
|
||||
"sha2 0.10.8",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
|
@ -1018,7 +1239,7 @@ dependencies = [
|
|||
"num-bigint",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2 0.10.8",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
"x509-cert",
|
||||
"x509-parser",
|
||||
|
@ -1035,10 +1256,24 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.5.1"
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
|
||||
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"
|
||||
|
@ -1049,6 +1284,26 @@ 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"
|
||||
|
@ -1074,6 +1329,15 @@ dependencies = [
|
|||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
||||
dependencies = [
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rusticata-macros"
|
||||
version = "4.1.0"
|
||||
|
@ -1190,7 +1454,7 @@ version = "3.8.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e73139bc5ec2d45e6c5fd85be5a46949c1c39a4c18e56915f5eb4c12f975e377"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"chrono",
|
||||
"hex",
|
||||
"serde",
|
||||
|
@ -1212,19 +1476,6 @@ dependencies = [
|
|||
"syn 2.0.70",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.9.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
|
||||
dependencies = [
|
||||
"block-buffer 0.9.0",
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest 0.9.0",
|
||||
"opaque-debug",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.10.8"
|
||||
|
@ -1233,7 +1484,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
|
|||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest 0.10.7",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1242,8 +1493,8 @@ version = "2.2.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
|
||||
dependencies = [
|
||||
"digest 0.10.7",
|
||||
"rand_core 0.6.4",
|
||||
"digest",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1376,6 +1627,12 @@ version = "1.0.12"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
|
||||
|
||||
[[package]]
|
||||
name = "untrusted"
|
||||
version = "0.9.0"
|
||||
|
@ -1550,8 +1807,43 @@ dependencies = [
|
|||
"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.70",
|
||||
]
|
||||
|
||||
[[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.70",
|
||||
]
|
||||
|
|
|
@ -37,20 +37,20 @@ serde_json = "1.0.117"
|
|||
thiserror = { version = "1.0.49" }
|
||||
|
||||
# cosmwasm
|
||||
cosmwasm-schema = { version = "2.0.0", default-features = false }
|
||||
cosmwasm-std = { version = "2.0.0", default-features = false, features = ["std"] }
|
||||
cosmwasm-schema = { version = "2.1.1", default-features = false }
|
||||
cosmwasm-std = { version = "2.1.1", default-features = false, features = ["std"] }
|
||||
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"]}
|
||||
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.0.0"
|
||||
cw-multi-test = "2.1.0"
|
||||
serde_json = "1.0.113"
|
|
@ -182,9 +182,7 @@ pub mod execute {
|
|||
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.to_string())?;
|
||||
let address = deps.api.addr_validate(liquidity_source.address.as_ref())?;
|
||||
|
||||
let liquidity_source = LiquiditySource {
|
||||
address: address.clone(),
|
||||
|
@ -292,27 +290,23 @@ pub mod execute {
|
|||
}
|
||||
LiquiditySourceType::Overdraft => {
|
||||
if is_payer {
|
||||
let increase_msg = WasmMsg::Execute {
|
||||
WasmMsg::Execute {
|
||||
contract_addr: source.address.to_string(),
|
||||
msg: to_json_binary(&OverdraftExecuteMsg::IncreaseBalance {
|
||||
receiver: transfer.payee.clone(),
|
||||
amount: transfer.amount.1,
|
||||
})?,
|
||||
funds: vec![],
|
||||
};
|
||||
|
||||
increase_msg
|
||||
}
|
||||
} else {
|
||||
let decrease_msg = WasmMsg::Execute {
|
||||
WasmMsg::Execute {
|
||||
contract_addr: source.address.to_string(),
|
||||
msg: to_json_binary(&OverdraftExecuteMsg::DecreaseBalance {
|
||||
receiver: transfer.payer.clone(),
|
||||
amount: transfer.amount.1,
|
||||
})?,
|
||||
funds: vec![],
|
||||
};
|
||||
|
||||
decrease_msg
|
||||
}
|
||||
}
|
||||
}
|
||||
LiquiditySourceType::External => {
|
||||
|
|
|
@ -46,7 +46,7 @@ mtcs.workspace = true
|
|||
quartz-common = { workspace = true, features = ["full"]}
|
||||
|
||||
[dev-dependencies]
|
||||
cw-multi-test = "2.0.0"
|
||||
cw-multi-test = "2.1.0"
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build.workspace = true
|
||||
|
|
|
@ -137,19 +137,17 @@ pub mod clearing_server {
|
|||
}
|
||||
#[derive(Debug)]
|
||||
pub struct ClearingServer<T: Clearing> {
|
||||
inner: _Inner<T>,
|
||||
inner: Arc<T>,
|
||||
accept_compression_encodings: EnabledCompressionEncodings,
|
||||
send_compression_encodings: EnabledCompressionEncodings,
|
||||
max_decoding_message_size: Option<usize>,
|
||||
max_encoding_message_size: Option<usize>,
|
||||
}
|
||||
struct _Inner<T>(Arc<T>);
|
||||
impl<T: Clearing> ClearingServer<T> {
|
||||
pub fn new(inner: T) -> Self {
|
||||
Self::from_arc(Arc::new(inner))
|
||||
}
|
||||
pub fn from_arc(inner: Arc<T>) -> Self {
|
||||
let inner = _Inner(inner);
|
||||
Self {
|
||||
inner,
|
||||
accept_compression_encodings: Default::default(),
|
||||
|
@ -212,7 +210,6 @@ pub mod clearing_server {
|
|||
Poll::Ready(Ok(()))
|
||||
}
|
||||
fn call(&mut self, req: http::Request<B>) -> Self::Future {
|
||||
let inner = self.inner.clone();
|
||||
match req.uri().path() {
|
||||
"/mtcs.Clearing/Run" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
|
@ -243,7 +240,6 @@ pub mod clearing_server {
|
|||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let inner = inner.0;
|
||||
let method = RunSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
|
@ -265,8 +261,11 @@ pub mod clearing_server {
|
|||
Ok(
|
||||
http::Response::builder()
|
||||
.status(200)
|
||||
.header("grpc-status", "12")
|
||||
.header("content-type", "application/grpc")
|
||||
.header("grpc-status", tonic::Code::Unimplemented as i32)
|
||||
.header(
|
||||
http::header::CONTENT_TYPE,
|
||||
tonic::metadata::GRPC_CONTENT_TYPE,
|
||||
)
|
||||
.body(empty_body())
|
||||
.unwrap(),
|
||||
)
|
||||
|
@ -287,16 +286,6 @@ pub mod clearing_server {
|
|||
}
|
||||
}
|
||||
}
|
||||
impl<T: Clearing> Clone for _Inner<T> {
|
||||
fn clone(&self) -> Self {
|
||||
Self(Arc::clone(&self.0))
|
||||
}
|
||||
}
|
||||
impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:?}", self.0)
|
||||
}
|
||||
}
|
||||
impl<T: Clearing> tonic::server::NamedService for ClearingServer<T> {
|
||||
const NAME: &'static str = "mtcs.Clearing";
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ base64 = "0.22.1"
|
|||
subtle-encoding = "0.5.1"
|
||||
tokio-tungstenite = "0.23.1"
|
||||
futures-util = "0.3.30"
|
||||
tendermint-rpc = { version ="0.36.0", features=["websocket-client", "http-client"]}
|
||||
tendermint-rpc = { version ="0.38.1", features=["websocket-client", "http-client"]}
|
||||
|
||||
# cosmos
|
||||
cosmrs.workspace = true
|
||||
|
|
98
apps/transfers/contracts/Cargo.lock
generated
98
apps/transfers/contracts/Cargo.lock
generated
|
@ -20,6 +20,12 @@ 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"
|
||||
|
@ -44,7 +50,7 @@ dependencies = [
|
|||
"ark-std",
|
||||
"derivative",
|
||||
"hashbrown 0.13.2",
|
||||
"itertools",
|
||||
"itertools 0.10.5",
|
||||
"num-traits",
|
||||
"rayon",
|
||||
"zeroize",
|
||||
|
@ -62,7 +68,7 @@ dependencies = [
|
|||
"ark-std",
|
||||
"derivative",
|
||||
"digest",
|
||||
"itertools",
|
||||
"itertools 0.10.5",
|
||||
"num-bigint",
|
||||
"num-traits",
|
||||
"paste",
|
||||
|
@ -237,6 +243,12 @@ version = "3.16.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
||||
|
||||
[[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.6"
|
||||
|
@ -267,15 +279,15 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
|||
|
||||
[[package]]
|
||||
name = "cosmwasm-core"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8d075f6bb1483a6ce83b5cbc73a3a1207e0316ac1e34ed1f2a4d9fc3a0f07bf6"
|
||||
checksum = "367fc87c43759098a476ef90f915aadc66c300480ad9c155b512081fbf327bc1"
|
||||
|
||||
[[package]]
|
||||
name = "cosmwasm-crypto"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88ced5a6dd2801a383d3e14e5ae5caa7fdfeff1bd9f22b30e810e0aded8a5869"
|
||||
checksum = "9b7c41f3e371ea457d3b98bb592c38858b46efcf614e0e988ec2ebbdb973954f"
|
||||
dependencies = [
|
||||
"ark-bls12-381",
|
||||
"ark-ec",
|
||||
|
@ -296,9 +308,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cosmwasm-derive"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "35bd1873f84d9b17edf8a90ffe10a89a649b82feacc00e36788b81d2c3cbf03c"
|
||||
checksum = "c10510e8eb66cf7e109741b1e2c76ad18f30b5a1daa064f5f7115c1f733aaea0"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -307,9 +319,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cosmwasm-schema"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "27984b137eb2ac561f97f6bdb02004a98eb6f2ba263062c140b8e231ee1826b7"
|
||||
checksum = "f79879b6b7ef6a331b05030ce91ce46a7c4b0baf1ed6b382cce2e9a168109380"
|
||||
dependencies = [
|
||||
"cosmwasm-schema-derive",
|
||||
"schemars",
|
||||
|
@ -320,9 +332,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cosmwasm-schema-derive"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f4ef0d201f611bdb6c9124207032423eb956f1fc8ab3e3ee7253a9c08a5f5809"
|
||||
checksum = "82b53e33c0e97170c7ac9cb440f4bc599a07f9cbb9b7e87916cca37b1239d57b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -331,9 +343,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cosmwasm-std"
|
||||
version = "2.1.0"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2522fb5c9a0409712bb1d036128bccf3564e6b2ac82f942ae4cf3c8df3e26fa8"
|
||||
checksum = "92011c39570876f340d5f9defa68bf92797b1c44421f1b9ea9b04a31d6defd33"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bech32",
|
||||
|
@ -435,6 +447,26 @@ dependencies = [
|
|||
"syn 2.0.72",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cw-multi-test"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0034bfb4c06dfc8b50f0b1a06c3fc0f2312a1bae568a97db65930de071288ba"
|
||||
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"
|
||||
|
@ -837,6 +869,15 @@ 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"
|
||||
|
@ -1097,6 +1138,29 @@ dependencies = [
|
|||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost"
|
||||
version = "0.12.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-derive"
|
||||
version = "0.12.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools 0.10.5",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.72",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quartz-common"
|
||||
version = "0.1.0"
|
||||
|
@ -1336,11 +1400,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.120"
|
||||
version = "1.0.122"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
|
||||
checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
@ -1518,6 +1583,7 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"cosmwasm-schema",
|
||||
"cosmwasm-std",
|
||||
"cw-multi-test",
|
||||
"cw-storage-plus",
|
||||
"cw-utils",
|
||||
"cw2",
|
||||
|
|
|
@ -23,25 +23,32 @@ panic = 'abort'
|
|||
incremental = false
|
||||
overflow-checks = true
|
||||
|
||||
|
||||
[features]
|
||||
library = []
|
||||
mock-sgx = ["quartz-common/mock-sgx-cw"]
|
||||
library = []
|
||||
|
||||
[dependencies]
|
||||
# external
|
||||
sha2 = "0.10.8"
|
||||
serde_json = "1.0.117"
|
||||
serde = { version = "1.0.137", default-features = false, features = ["derive"] }
|
||||
thiserror = { version = "1.0.49" }
|
||||
getrandom = { version = "0.2.15", features = ["js"] }
|
||||
serde_json = { version = "1.0.122", default-features = false, features = ["alloc"] }
|
||||
serde = { version = "1.0.204", default-features = false, features = ["derive"] }
|
||||
thiserror = { version = "1.0.63" }
|
||||
|
||||
# cosmwasm
|
||||
cosmwasm-schema = { version = "2.0.0", default-features = false }
|
||||
cosmwasm-std = { version = "2.0.0", default-features = false, features = ["std"] }
|
||||
cosmwasm-std = { version = "2.1.1", default-features = false }
|
||||
cosmwasm-schema = { version = "2.1.1", default-features = false }
|
||||
cw2 = { version = "2.0.0", default-features = false }
|
||||
cw-storage-plus = { version = "2.0.0", default-features = false }
|
||||
cw-utils = "2.0.0"
|
||||
cw20-base = { version = "2.0.0", features = ["library"] }
|
||||
cw2 = "2.0.0"
|
||||
cw20-base = { version = "2.0.0", default-features = false, features = ["library"] }
|
||||
cw-utils = { version = "2.0.0", default-features = false }
|
||||
|
||||
# quartz
|
||||
quartz-common = { path = "../../../core/quartz-common", features=["contract"]}
|
||||
quartz-common = { path = "../../../core/quartz-common", default-features = false, features = ["contract"] }
|
||||
|
||||
# patch indirect deps
|
||||
getrandom = { version = "0.2.15", default-features = false, features = ["js"] }
|
||||
|
||||
[dev-dependencies]
|
||||
cw-multi-test = { version = "2.1.0", default-features = false }
|
||||
serde_json = "1.0.122"
|
||||
|
|
355
apps/transfers/contracts/deploy-contract-Neutrond.sh
Executable file
355
apps/transfers/contracts/deploy-contract-Neutrond.sh
Executable file
|
@ -0,0 +1,355 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
# Color definitions
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
BOLD='\033[1m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored and formatted messages
|
||||
print_message() {
|
||||
local color=$1
|
||||
local message=$2
|
||||
echo -e "${color}${BOLD}${message}${NC}"
|
||||
}
|
||||
|
||||
# Function to print section headers
|
||||
print_header() {
|
||||
local message=$1
|
||||
echo -e "\n${MAGENTA}${BOLD}======== $message ========${NC}\n"
|
||||
}
|
||||
|
||||
# Function to print success messages
|
||||
print_success() {
|
||||
local message=$1
|
||||
echo -e "${GREEN}${BOLD}✅ $message${NC}"
|
||||
}
|
||||
|
||||
# Function to print error messages
|
||||
print_error() {
|
||||
local message=$1
|
||||
echo -e "${RED}${BOLD}❌ Error: $message${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to print waiting messages
|
||||
print_waiting() {
|
||||
local message=$1
|
||||
echo -e "${YELLOW}${BOLD}⏳ $message${NC}"
|
||||
}
|
||||
|
||||
# Function to update and display progress
|
||||
update_progress() {
|
||||
local step=$1
|
||||
local total_steps=$2
|
||||
local percentage=$((step * 100 / total_steps))
|
||||
print_message $BLUE "Progress: [$percentage%] Step $step of $total_steps"
|
||||
}
|
||||
|
||||
|
||||
# Set up variables
|
||||
ROOT=${ROOT:-$(git rev-parse --show-toplevel)}
|
||||
WASMD_HOME=${WASMD_HOME:-"$HOME/.neutrond"}
|
||||
USER_ADDR=$(neutrond keys show -a "val1" --keyring-backend test --home "$WASMD_HOME" --keyring-dir "$WASMD_HOME")
|
||||
|
||||
if [ -z "$USER_ADDR" ]; then
|
||||
print_error "User address not found. Please ensure the key exists in the keyring."
|
||||
fi
|
||||
|
||||
WASM_BIN="$1"
|
||||
INSTANTIATE_MSG="$2"
|
||||
NODE_URL=${NODE_URL:-127.0.0.1:26657}
|
||||
LABEL=${LABEL:-quartz-transfers-app}
|
||||
COUNT=${COUNT:-0}
|
||||
QUARTZ_PORT="${QUARTZ_PORT:-11090}"
|
||||
CHAIN_ID=${CHAIN_ID:-test-1}
|
||||
TXFLAG="--chain-id ${CHAIN_ID} --gas-prices 0.0025untrn --gas auto --gas-adjustment 1.3 --keyring-dir "$WASMD_HOME" --keyring-backend "test" "
|
||||
CMD="neutrond --node http://$NODE_URL"
|
||||
|
||||
|
||||
|
||||
|
||||
TOTAL_STEPS=7
|
||||
CURRENT_STEP=0
|
||||
|
||||
update_progress $((++CURRENT_STEP)) $TOTAL_STEPS
|
||||
print_header "Deploying WASM Contract"
|
||||
print_message $CYAN "Contract: ${WASM_BIN}"
|
||||
print_message $CYAN "Chain ID: ${CHAIN_ID}"
|
||||
print_message $CYAN "User Address: ${USER_ADDR}"
|
||||
print_message $CYAN "Command: $CMD"
|
||||
|
||||
print_message $BLUE "Storing WASM contract..."
|
||||
RES=$($CMD tx wasm store "$WASM_BIN" --from "$USER_ADDR" $TXFLAG -y --output json )
|
||||
TX_HASH=$(echo "$RES" | jq -r '.txhash')
|
||||
print_message $CYAN "Transaction hash: $TX_HASH"
|
||||
|
||||
print_waiting "Waiting for transaction to be included in a block..."
|
||||
ATTEMPTS=0
|
||||
MAX_ATTEMPTS=30
|
||||
while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
|
||||
TX_RESULT=$($CMD query tx "$TX_HASH" --output json 2>/dev/null || echo '{"code": 1}')
|
||||
TX_CODE=$(echo "$TX_RESULT" | jq -r '.code // .tx_result.code // 1')
|
||||
if [[ $TX_CODE == "0" ]]; then
|
||||
print_success "Transaction processed successfully."
|
||||
break
|
||||
elif [[ $TX_CODE != "1" ]]; then
|
||||
print_error "Error processing transaction. Code: $TX_CODE"
|
||||
fi
|
||||
print_waiting "Transaction not yet processed. Waiting... (Attempt $((ATTEMPTS+1))/$MAX_ATTEMPTS)"
|
||||
sleep 2
|
||||
ATTEMPTS=$((ATTEMPTS+1))
|
||||
done
|
||||
|
||||
if [ $ATTEMPTS -eq $MAX_ATTEMPTS ]; then
|
||||
print_error "Failed to retrieve transaction after $MAX_ATTEMPTS attempts."
|
||||
fi
|
||||
|
||||
print_message $BLUE "Extracting CODE_ID..."
|
||||
CODE_ID=$(echo "$TX_RESULT" | jq -r '.events[] | select(.type=="store_code") | .attributes[] | select(.key=="code_id") | .value')
|
||||
print_message $CYAN "Extracted CODE_ID: $CODE_ID"
|
||||
|
||||
if [[ -z "$CODE_ID" || "$CODE_ID" == "null" ]]; then
|
||||
print_error "Failed to extract CODE_ID."
|
||||
fi
|
||||
|
||||
update_progress $((++CURRENT_STEP)) $TOTAL_STEPS
|
||||
print_header "Instantiating Contract"
|
||||
print_message $CYAN "Label: ${LABEL}"
|
||||
print_message $CYAN "Code ID: ${CODE_ID}"
|
||||
|
||||
INSTANTIATE_MSG_PARSED=$(echo "$INSTANTIATE_MSG" | jq -r '.')
|
||||
INSTANTIATE_MSG_ONELINE=$(echo "$INSTANTIATE_MSG_PARSED" | jq '{quartz: .} + {denom: "untrn"}' )
|
||||
|
||||
|
||||
|
||||
# Print the instantiate message for debugging
|
||||
echo "Instantiate message: $INSTANTIATE_MSG_ONELINE"
|
||||
|
||||
INSTANTIATE_CMD="$CMD tx wasm instantiate $CODE_ID '$INSTANTIATE_MSG_ONELINE' --from "$USER_ADDR" $TXFLAG --label $LABEL -y --no-admin --output json"
|
||||
|
||||
print_message $BLUE "Executing instantiate command..."
|
||||
RES=$(eval "$INSTANTIATE_CMD")
|
||||
TX_HASH=$(echo "$RES" | jq -r '.txhash')
|
||||
|
||||
print_waiting "Waiting for instantiate transaction to be processed..."
|
||||
ATTEMPTS=0
|
||||
while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
|
||||
TX_RESULT=$($CMD query tx "$TX_HASH" --output json 2>/dev/null || echo '{"code": 1}')
|
||||
TX_CODE=$(echo "$TX_RESULT" | jq -r '.code // .tx_result.code // 1')
|
||||
if [[ $TX_CODE == "0" ]]; then
|
||||
print_success "Instantiate transaction processed successfully."
|
||||
break
|
||||
elif [[ $TX_CODE != "1" ]]; then
|
||||
print_error "Error processing instantiate transaction. Code: $TX_CODE"
|
||||
fi
|
||||
print_waiting "Instantiate transaction not yet processed. Waiting... (Attempt $((ATTEMPTS+1))/$MAX_ATTEMPTS)"
|
||||
sleep 2
|
||||
ATTEMPTS=$((ATTEMPTS+1))
|
||||
done
|
||||
|
||||
if [ $ATTEMPTS -eq $MAX_ATTEMPTS ]; then
|
||||
print_error "Failed to retrieve instantiate transaction after $MAX_ATTEMPTS attempts."
|
||||
fi
|
||||
|
||||
print_message $BLUE "Querying for instantiated contract..."
|
||||
RES=$($CMD query wasm list-contract-by-code "$CODE_ID" --output json)
|
||||
CONTRACT=$(echo "$RES" | jq -r '.contracts[0]')
|
||||
|
||||
if [[ -z "$CONTRACT" || "$CONTRACT" == "null" ]]; then
|
||||
print_error "Failed to retrieve contract address."
|
||||
fi
|
||||
|
||||
print_message $CYAN "CONTRACT: $CONTRACT"
|
||||
|
||||
cd $ROOT/relayer
|
||||
|
||||
update_progress $((++CURRENT_STEP)) $TOTAL_STEPS
|
||||
print_header "Executing SessionCreate on Enclave"
|
||||
export EXECUTE_CREATE=$(QUARTZ_PORT=$QUARTZ_PORT ./scripts/relay.sh SessionCreate)
|
||||
if [ -z "$EXECUTE_CREATE" ]; then
|
||||
print_error "Failed to execute SessionCreate on enclave"
|
||||
fi
|
||||
print_success "SessionCreate execution successful"
|
||||
|
||||
print_message $BLUE "Submitting SessionCreate to contract..."
|
||||
RES=$($CMD tx wasm execute "$CONTRACT" "$EXECUTE_CREATE" --from "$USER_ADDR" $TXFLAG --keyring-backend "test" --keyring-dir "$WASMD_HOME" -y --output json)
|
||||
TX_HASH=$(echo "$RES" | jq -r '.txhash')
|
||||
if [ -z "$TX_HASH" ] || [ "$TX_HASH" == "null" ]; then
|
||||
print_error "Failed to retrieve transaction hash"
|
||||
fi
|
||||
print_message $CYAN "Transaction hash: $TX_HASH"
|
||||
|
||||
print_waiting "Waiting for transaction to be included in a block..."
|
||||
ATTEMPTS=0
|
||||
MAX_ATTEMPTS=30
|
||||
while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
|
||||
TX_RESULT=$($CMD query tx "$TX_HASH" --output json 2>/dev/null || echo '{"code": 1}')
|
||||
TX_CODE=$(echo "$TX_RESULT" | jq -r '.code // .tx_result.code // 1')
|
||||
if [[ $TX_CODE == "0" ]]; then
|
||||
print_success "Transaction processed successfully."
|
||||
break
|
||||
elif [[ $TX_CODE != "1" ]]; then
|
||||
print_error "Error processing transaction. Code: $TX_CODE"
|
||||
fi
|
||||
print_waiting "Transaction not yet processed. Waiting... (Attempt $((ATTEMPTS+1))/$MAX_ATTEMPTS)"
|
||||
sleep 2
|
||||
ATTEMPTS=$((ATTEMPTS+1))
|
||||
done
|
||||
|
||||
if [ $ATTEMPTS -eq $MAX_ATTEMPTS ]; then
|
||||
print_error "Failed to retrieve transaction after $MAX_ATTEMPTS attempts."
|
||||
fi
|
||||
|
||||
|
||||
print_success "Handshake process completed"
|
||||
|
||||
update_progress $((++CURRENT_STEP)) $TOTAL_STEPS
|
||||
print_header "Setting Session PK"
|
||||
|
||||
cd $ROOT/utils/tm-prover
|
||||
export PROOF_FILE="light-client-proof.json"
|
||||
rm -f "$PROOF_FILE"
|
||||
|
||||
print_message $BLUE "Removed old $PROOF_FILE"
|
||||
|
||||
# print_waiting "Waiting for new blocks to be produced..."
|
||||
print_waiting "Waiting for transaction to be included in a block..."
|
||||
ATTEMPTS=0
|
||||
MAX_ATTEMPTS=30
|
||||
while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
|
||||
TX_RESULT=$($CMD query tx "$TX_HASH" --output json 2>/dev/null || echo '{"code": 1}')
|
||||
TX_CODE=$(echo "$TX_RESULT" | jq -r '.code // .tx_result.code // 1')
|
||||
if [[ $TX_CODE == "0" ]]; then
|
||||
print_success "Transaction processed successfully."
|
||||
break
|
||||
elif [[ $TX_CODE != "1" ]]; then
|
||||
print_error "Error processing transaction. Code: $TX_CODE"
|
||||
fi
|
||||
print_waiting "Transaction not yet processed. Waiting... (Attempt $((ATTEMPTS+1))/$MAX_ATTEMPTS)"
|
||||
sleep 2
|
||||
ATTEMPTS=$((ATTEMPTS+1))
|
||||
done
|
||||
|
||||
|
||||
print_success "Required blocks produced. Proceeding with tm-prover..."
|
||||
|
||||
cd "$ROOT/apps/transfers"
|
||||
export TRUSTED_HASH=$(cat trusted.hash)
|
||||
export TRUSTED_HEIGHT=$(cat trusted.height)
|
||||
|
||||
print_message $CYAN "Trusted hash: $TRUSTED_HASH"
|
||||
print_message $CYAN "Trusted height: $TRUSTED_HEIGHT"
|
||||
|
||||
cd $ROOT/utils/tm-prover
|
||||
export QUARTZ_SESSION=$($CMD query wasm contract-state raw $CONTRACT $(echo -n "quartz_session" | xxd -p -c 20) --node "http://$NODE_URL")
|
||||
print_message $CYAN "Quartz Session before prover: $QUARTZ_SESSION"
|
||||
|
||||
export PROOF_FILE="light-client-proof.json"
|
||||
if [ -f "$PROOF_FILE" ]; then
|
||||
rm "$PROOF_FILE"
|
||||
print_message $BLUE "Removed old $PROOF_FILE"
|
||||
fi
|
||||
|
||||
print_message $BLUE "Running prover to get light client proof..."
|
||||
cargo run -- --chain-id test-1 \
|
||||
--primary "http://$NODE_URL" \
|
||||
--witnesses "http://$NODE_URL" \
|
||||
--trusted-height $TRUSTED_HEIGHT \
|
||||
--trusted-hash $TRUSTED_HASH \
|
||||
--contract-address $CONTRACT \
|
||||
--storage-key "quartz_session" \
|
||||
--trace-file $PROOF_FILE > /dev/null 2>&1
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
print_success "Light client proof generated successfully"
|
||||
else
|
||||
print_error "Failed to generate light client proof"
|
||||
fi
|
||||
|
||||
export POP=$(cat $PROOF_FILE)
|
||||
export POP_MSG=$(jq -nc --arg message "$POP" '$ARGS.named')
|
||||
|
||||
update_progress $((++CURRENT_STEP)) $TOTAL_STEPS
|
||||
|
||||
print_header "Executing SessionSetPubKey on Enclave"
|
||||
cd $ROOT/relayer
|
||||
export EXECUTE_SETPUB=$(QUARTZ_PORT=$QUARTZ_PORT ./scripts/relay.sh SessionSetPubKey "$POP_MSG")
|
||||
|
||||
RES=$($CMD tx wasm execute "$CONTRACT" "$EXECUTE_SETPUB" --from "$USER_ADDR" $TXFLAG --keyring-backend "test" --keyring-dir "$WASMD_HOME" -y --output json)
|
||||
TX_HASH=$(echo $RES | jq -r '.txhash')
|
||||
|
||||
if [ -z "$TX_HASH" ] || [ "$TX_HASH" == "null" ]; then
|
||||
print_error "Failed to retrieve transaction hash"
|
||||
fi
|
||||
print_message $CYAN "Transaction hash: $TX_HASH"
|
||||
|
||||
print_waiting "Waiting for transaction to commit..."
|
||||
ATTEMPTS=0
|
||||
MAX_ATTEMPTS=30
|
||||
while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]; do
|
||||
if $CMD query tx "$TX_HASH" &> /dev/null; then
|
||||
print_success "Transaction committed successfully"
|
||||
break
|
||||
fi
|
||||
print_waiting "Waiting for tx (Attempt $((ATTEMPTS+1))/$MAX_ATTEMPTS)"
|
||||
sleep 2
|
||||
ATTEMPTS=$((ATTEMPTS+1))
|
||||
done
|
||||
|
||||
if [ $ATTEMPTS -eq $MAX_ATTEMPTS ]; then
|
||||
print_error "Transaction failed to commit after $MAX_ATTEMPTS attempts"
|
||||
fi
|
||||
|
||||
update_progress $((++CURRENT_STEP)) $TOTAL_STEPS
|
||||
print_header "Checking Session Success"
|
||||
export NONCE_AND_KEY=$($CMD query wasm contract-state raw "$CONTRACT" $(printf '%s' "quartz_session" | hexdump -ve '/1 "%02X"') -o json | jq -r .data | base64 -d)
|
||||
# echo $NONCE_AND_KEY
|
||||
export PUBKEY=$(echo $NONCE_AND_KEY | jq -r .pub_key)
|
||||
|
||||
update_progress $TOTAL_STEPS $TOTAL_STEPS
|
||||
print_header "Deployment Summary"
|
||||
print_success "Deployment and handshake completed successfully!"
|
||||
echo -e "${CYAN}${BOLD}"
|
||||
echo "📌 Contract Details:"
|
||||
echo " • Address: ${CONTRACT}"
|
||||
echo " • Code ID: ${CODE_ID}"
|
||||
echo " • Label: ${LABEL}"
|
||||
echo " • Chain ID: ${CHAIN_ID}"
|
||||
echo
|
||||
echo "🔑 Contract Key Information:"
|
||||
echo " • Public Key: ${PUBKEY}"
|
||||
echo
|
||||
echo "🌐 Network Information:"
|
||||
echo " • Node URL: ${NODE_URL}"
|
||||
echo " • Quartz Port: ${QUARTZ_PORT}"
|
||||
echo
|
||||
echo "👤 User Information:"
|
||||
echo " • Address: ${USER_ADDR}"
|
||||
echo " • Keyring Backend: test"
|
||||
echo " • Keyring Directory: /home/peppi/.neutrond/"
|
||||
echo
|
||||
echo "🔧 Additional Settings:"
|
||||
echo " • Gas Prices: 0.0025untrn"
|
||||
echo " • Gas Adjustment: 1.3"
|
||||
echo -e "${NC}"
|
||||
|
||||
# ASCII art logo for QUARTZ
|
||||
cat << "EOF"
|
||||
|
||||
██████ ██ ██ █████ ██████ ████████ ███████
|
||||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||
██ ██ ██ ██ ███████ ██████ ██ ███████
|
||||
██ ▄▄ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||
██████ ██████ ██ ██ ██ ██ ██ ███████
|
||||
▀▀
|
||||
POWERED BY INFORMAL.SYSTEMMS
|
||||
EOF
|
||||
|
||||
print_message $MAGENTA "We hope you'll enjoy developing Quartz Apps!"
|
|
@ -214,7 +214,7 @@ pub mod execute {
|
|||
msg: QueryResponseMsg,
|
||||
) -> Result<Response, ContractError> {
|
||||
// Store state
|
||||
BALANCES.save(deps.storage, &msg.address.to_string(), &msg.encrypted_bal)?;
|
||||
BALANCES.save(deps.storage, msg.address.as_ref(), &msg.encrypted_bal)?;
|
||||
|
||||
// Emit event
|
||||
let event = Event::new("store_balance")
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
#![deny(
|
||||
warnings,
|
||||
trivial_casts,
|
||||
trivial_numeric_casts,
|
||||
unused_import_braces,
|
||||
unused_qualifications
|
||||
)]
|
||||
#![forbid(unsafe_code)]
|
||||
|
||||
extern crate cosmwasm_std;
|
||||
|
||||
pub mod contract;
|
||||
|
|
|
@ -11,6 +11,7 @@ path = "bin/encrypt.rs"
|
|||
|
||||
[features]
|
||||
mock-sgx = ["quartz-common/mock-sgx-cw", "quartz-common/mock-sgx-enclave"]
|
||||
default = []
|
||||
|
||||
[dependencies]
|
||||
# external
|
||||
|
@ -31,18 +32,16 @@ tonic.workspace = true
|
|||
# cosmos
|
||||
cosmrs.workspace = true
|
||||
cosmwasm-std.workspace = true
|
||||
cycles-sync.workspace = true
|
||||
tendermint.workspace = true
|
||||
tendermint-light-client.workspace = true
|
||||
|
||||
|
||||
cycles-sync.workspace = true
|
||||
transfers-contract.workspace = true
|
||||
|
||||
# quartz
|
||||
quartz-common = { workspace=true, features=["full"]}
|
||||
|
||||
[dev-dependencies]
|
||||
cw-multi-test = "0.17.0"
|
||||
cw-multi-test = "2.1.0"
|
||||
|
||||
[build-dependencies]
|
||||
tonic-build.workspace = true
|
||||
|
|
|
@ -169,19 +169,17 @@ pub mod settlement_server {
|
|||
}
|
||||
#[derive(Debug)]
|
||||
pub struct SettlementServer<T: Settlement> {
|
||||
inner: _Inner<T>,
|
||||
inner: Arc<T>,
|
||||
accept_compression_encodings: EnabledCompressionEncodings,
|
||||
send_compression_encodings: EnabledCompressionEncodings,
|
||||
max_decoding_message_size: Option<usize>,
|
||||
max_encoding_message_size: Option<usize>,
|
||||
}
|
||||
struct _Inner<T>(Arc<T>);
|
||||
impl<T: Settlement> SettlementServer<T> {
|
||||
pub fn new(inner: T) -> Self {
|
||||
Self::from_arc(Arc::new(inner))
|
||||
}
|
||||
pub fn from_arc(inner: Arc<T>) -> Self {
|
||||
let inner = _Inner(inner);
|
||||
Self {
|
||||
inner,
|
||||
accept_compression_encodings: Default::default(),
|
||||
|
@ -244,7 +242,6 @@ pub mod settlement_server {
|
|||
Poll::Ready(Ok(()))
|
||||
}
|
||||
fn call(&mut self, req: http::Request<B>) -> Self::Future {
|
||||
let inner = self.inner.clone();
|
||||
match req.uri().path() {
|
||||
"/transfers.Settlement/Run" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
|
@ -273,7 +270,6 @@ pub mod settlement_server {
|
|||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let inner = inner.0;
|
||||
let method = RunSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
|
@ -317,7 +313,6 @@ pub mod settlement_server {
|
|||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let inner = inner.0;
|
||||
let method = QuerySvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
|
@ -339,8 +334,11 @@ pub mod settlement_server {
|
|||
Ok(
|
||||
http::Response::builder()
|
||||
.status(200)
|
||||
.header("grpc-status", "12")
|
||||
.header("content-type", "application/grpc")
|
||||
.header("grpc-status", tonic::Code::Unimplemented as i32)
|
||||
.header(
|
||||
http::header::CONTENT_TYPE,
|
||||
tonic::metadata::GRPC_CONTENT_TYPE,
|
||||
)
|
||||
.body(empty_body())
|
||||
.unwrap(),
|
||||
)
|
||||
|
@ -361,16 +359,6 @@ pub mod settlement_server {
|
|||
}
|
||||
}
|
||||
}
|
||||
impl<T: Settlement> Clone for _Inner<T> {
|
||||
fn clone(&self) -> Self {
|
||||
Self(Arc::clone(&self.0))
|
||||
}
|
||||
}
|
||||
impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:?}", self.0)
|
||||
}
|
||||
}
|
||||
impl<T: Settlement> tonic::server::NamedService for SettlementServer<T> {
|
||||
const NAME: &'static str = "transfers.Settlement";
|
||||
}
|
||||
|
|
5
apps/transfers/frontend/.env neutron.example
Normal file
5
apps/transfers/frontend/.env neutron.example
Normal file
|
@ -0,0 +1,5 @@
|
|||
NEXT_PUBLIC_CHAIN_ID=testing
|
||||
NEXT_PUBLIC_CHAIN_RPC_URL=http://0.0.0.0:26657
|
||||
NEXT_PUBLIC_CHAIN_REST_URL=http://0.0.0.0:1317
|
||||
NEXT_PUBLIC_ENCLAVE_PUBLIC_KEY=02ef4f843722d9badf8f5571d8f20cd1a21022fe52b9257d3a235c85dfc0ce11c0
|
||||
NEXT_PUBLIC_TRANSFERS_CONTRACT_ADDRESS=wasm1jfgr0vgunezkhfmdy7krrupu6yjhx224nxtjptll2ylkkqhyzeshrspu9
|
877
apps/transfers/frontend/package-lock.json
generated
877
apps/transfers/frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -19,39 +19,39 @@ export const chain: ChainInfo = {
|
|||
rpc: process.env.NEXT_PUBLIC_CHAIN_RPC_URL,
|
||||
rest: process.env.NEXT_PUBLIC_CHAIN_REST_URL,
|
||||
chainId: process.env.NEXT_PUBLIC_CHAIN_ID,
|
||||
chainName: 'My Testing Chain',
|
||||
chainName: 'Neutron Local Chain',
|
||||
stakeCurrency: {
|
||||
coinDenom: 'COSM',
|
||||
coinMinimalDenom: 'ucosm',
|
||||
coinDenom: 'NEUTRON',
|
||||
coinMinimalDenom: 'untrn',
|
||||
coinDecimals: 6,
|
||||
coinGeckoId: 'regen',
|
||||
coinGeckoId: 'neutron',
|
||||
},
|
||||
bip44: {
|
||||
coinType: 118,
|
||||
},
|
||||
bech32Config: {
|
||||
bech32PrefixAccAddr: 'wasm',
|
||||
bech32PrefixAccPub: 'wasm' + 'pub',
|
||||
bech32PrefixValAddr: 'wasm' + 'valoper',
|
||||
bech32PrefixValPub: 'wasm' + 'valoperpub',
|
||||
bech32PrefixConsAddr: 'wasm' + 'valcons',
|
||||
bech32PrefixConsPub: 'wasm' + 'valconspub',
|
||||
bech32PrefixAccAddr: 'neutron',
|
||||
bech32PrefixAccPub: 'neutron' + 'pub',
|
||||
bech32PrefixValAddr: 'neutron' + 'valoper',
|
||||
bech32PrefixValPub: 'neutron' + 'valoperpub',
|
||||
bech32PrefixConsAddr: 'neutron' + 'valcons',
|
||||
bech32PrefixConsPub: 'neutron' + 'valconspub',
|
||||
},
|
||||
currencies: [
|
||||
{
|
||||
coinDenom: 'COSM',
|
||||
coinMinimalDenom: 'ucosm',
|
||||
coinDenom: 'NTRN',
|
||||
coinMinimalDenom: 'untrn',
|
||||
coinDecimals: 6,
|
||||
coinGeckoId: 'regen',
|
||||
coinGeckoId: 'neutron',
|
||||
},
|
||||
],
|
||||
feeCurrencies: [
|
||||
{
|
||||
coinDenom: 'COSM',
|
||||
coinMinimalDenom: 'ucosm',
|
||||
coinDenom: 'NTRN',
|
||||
coinMinimalDenom: 'untrn',
|
||||
coinDecimals: 6,
|
||||
coinGeckoId: 'regen',
|
||||
gasPriceStep: { low: 0.01, average: 0.025, high: 0.04 },
|
||||
coinGeckoId: 'neutron',
|
||||
gasPriceStep: { low: 0.001, average: 0.0025, high: 0.004 },
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
|
@ -11,7 +11,9 @@ const typeUrl = '/cosmwasm.wasm.v1.MsgExecuteContract'
|
|||
const registry = new Registry([[typeUrl, MsgExecuteContract]])
|
||||
|
||||
// Cosm variables declaration. They will be set upon initialization.
|
||||
let signingCosmClient: SigningCosmWasmClient
|
||||
let signingCosmClient: SigningCosmWasmClient;
|
||||
|
||||
|
||||
|
||||
// Setup the CosmWasm client.
|
||||
const init = async () => {
|
||||
|
@ -19,12 +21,15 @@ const init = async () => {
|
|||
process.env.NEXT_PUBLIC_CHAIN_RPC_URL,
|
||||
'NEXT_PUBLIC_CHAIN_RPC_URL must be defined',
|
||||
)
|
||||
|
||||
|
||||
// Initialize Cosm client.
|
||||
signingCosmClient = await SigningCosmWasmClient.connectWithSigner(
|
||||
process.env.NEXT_PUBLIC_CHAIN_RPC_URL,
|
||||
wallet.getSigner(),
|
||||
{ registry },
|
||||
)
|
||||
|
||||
}
|
||||
// Transfer contract execution message
|
||||
const executeTransferContract = ({
|
||||
|
@ -49,7 +54,7 @@ const executeTransferContract = ({
|
|||
contract: process.env.NEXT_PUBLIC_TRANSFERS_CONTRACT_ADDRESS,
|
||||
msg: toUtf8(JSON.stringify(messageBuilder())),
|
||||
...(fundsAmount && {
|
||||
funds: [{ denom: 'ucosm', amount: fundsAmount }],
|
||||
funds: [{ denom: 'untrn', amount: fundsAmount }],
|
||||
}),
|
||||
}),
|
||||
},
|
||||
|
@ -60,8 +65,8 @@ const executeTransferContract = ({
|
|||
sender,
|
||||
executeTransferContractMsgs,
|
||||
{
|
||||
amount: coins(1, 'ucosm'),
|
||||
gas: '200000',
|
||||
amount: coins(1, 'untrn'),
|
||||
gas: '400000',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
24
apps/transfers/scripts/buildNeutron.sh
Normal file
24
apps/transfers/scripts/buildNeutron.sh
Normal file
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
ROOT=${ROOT:-$(git rev-parse --show-toplevel)}
|
||||
FEATURES=
|
||||
|
||||
if [ -n "$MOCK_SGX" ]; then
|
||||
echo "MOCK_SGX is set. Adding mock-sgx feature."
|
||||
FEATURES="--features=mock-sgx"
|
||||
fi
|
||||
|
||||
echo "--------------------------------------------------------"
|
||||
echo "building enclave binary"
|
||||
|
||||
cd $ROOT/apps/transfers/enclave
|
||||
CARGO_TARGET_DIR=./target cargo build --release $FEATURES
|
||||
|
||||
echo "--------------------------------------------------------"
|
||||
echo "building cosmwasm contract binary"
|
||||
|
||||
|
||||
cd $ROOT/apps/transfers/contracts
|
||||
bash build.sh $FEATURES
|
60
apps/transfers/scripts/deployNeutron.sh
Executable file
60
apps/transfers/scripts/deployNeutron.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
ROOT=${ROOT:-$(git rev-parse --show-toplevel)}
|
||||
|
||||
# Color definitions
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
BOLD='\033[1m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored and formatted messages
|
||||
print_message() {
|
||||
local color=$1
|
||||
local message=$2
|
||||
echo -e "${color}${BOLD}${message}${NC}"
|
||||
}
|
||||
|
||||
# Function to print section headers
|
||||
print_header() {
|
||||
local message=$1
|
||||
echo -e "\n${MAGENTA}${BOLD}======== $message ========${NC}\n"
|
||||
}
|
||||
|
||||
# Function to print success messages
|
||||
print_success() {
|
||||
local message=$1
|
||||
echo -e "${GREEN}${BOLD}✅ $message${NC}"
|
||||
}
|
||||
|
||||
# Function to print error messages
|
||||
print_error() {
|
||||
local message=$1
|
||||
echo -e "${RED}${BOLD}❌ Error: $message${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to print waiting messages
|
||||
print_waiting() {
|
||||
local message=$1
|
||||
echo -e "${YELLOW}${BOLD}⏳ $message${NC}"
|
||||
}
|
||||
|
||||
|
||||
print_header "Instantianting relayer"
|
||||
print_success "Relayer instantiated successfully."
|
||||
|
||||
cd $ROOT/relayer/
|
||||
|
||||
INSTANTIATE_MSG=$(./scripts/relay.sh Instantiate | jq -c '' )
|
||||
|
||||
cd $ROOT/apps/transfers/contracts/
|
||||
|
||||
bash deploy-contract-Neutrond.sh target/wasm32-unknown-unknown/release/transfers_contract.wasm "$INSTANTIATE_MSG" | tee output
|
||||
export CONTRACT=$(cat output | grep Address | awk '{print $NF}' | sed 's/\x1b\[[0-9;]*m//g')
|
233
apps/transfers/scripts/listenNeutron.sh
Executable file
233
apps/transfers/scripts/listenNeutron.sh
Executable file
|
@ -0,0 +1,233 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
|
||||
# Color definitions
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
BOLD='\033[1m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored and formatted messages
|
||||
print_message() {
|
||||
local color=$1
|
||||
local message=$2
|
||||
echo -e "${color}${BOLD}${message}${NC}"
|
||||
}
|
||||
|
||||
# Function to print section headers
|
||||
print_header() {
|
||||
local message=$1
|
||||
echo -e "\n${MAGENTA}${BOLD}======== $message ========${NC}\n"
|
||||
}
|
||||
|
||||
# Function to print success messages
|
||||
print_success() {
|
||||
local message=$1
|
||||
echo -e "${GREEN}${BOLD}✅ $message${NC}"
|
||||
}
|
||||
|
||||
# Function to print error messages
|
||||
print_error() {
|
||||
local message=$1
|
||||
echo -e "${RED}${BOLD}❌ Error: $message${NC}" >&2
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Configuration
|
||||
DEFAULT_NODE="127.0.0.1:26657"
|
||||
NODE_URL=${NODE_URL:-$DEFAULT_NODE}
|
||||
QUARTZ_PORT="${QUARTZ_PORT:-11090}"
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo "Usage: $0 <contract_address>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONTRACT=$1
|
||||
CMD="neutrond --node http://$NODE_URL"
|
||||
WSURL="ws://$NODE_URL/websocket"
|
||||
ROOT=${ROOT:-$(git rev-parse --show-toplevel)}
|
||||
|
||||
WASMD_HOME=${WASMD_HOME:-"$HOME/.neutrond"}
|
||||
CHAIN_ID=${CHAIN_ID:-test-1}
|
||||
TXFLAG="--chain-id ${CHAIN_ID} --gas-prices 0.0025untrn --gas auto --gas-adjustment 1.3"
|
||||
USER_ADDR=$(neutrond keys show -a "val1" --keyring-backend test --home "$WASMD_HOME" --keyring-dir "$WASMD_HOME")
|
||||
|
||||
# Subscription queries
|
||||
SUBSCRIBE_TRANSFER="{\"jsonrpc\":\"2.0\",\"method\": \"subscribe\" ,\"params\":{\"query\":\"execute._contract_address = '$CONTRACT' AND wasm-transfer.action = 'user'\"},\"id\":2}"
|
||||
SUBSCRIBE_QUERY="{\"jsonrpc\":\"2.0\",\"method\": \"subscribe\" ,\"params\":{\"query\":\"execute._contract_address = '$CONTRACT' AND wasm-query_balance.query = 'user'\"},\"id\":3}"
|
||||
|
||||
# Attestation constants
|
||||
IAS_API_KEY="669244b3e6364b5888289a11d2a1726d"
|
||||
RA_CLIENT_SPID="51CAF5A48B450D624AEFE3286D314894"
|
||||
QUOTE_FILE="/tmp/${USER}_test.quote"
|
||||
REPORT_FILE="/tmp/${USER}_datareport"
|
||||
REPORT_SIG_FILE="/tmp/${USER}_datareportsig"
|
||||
|
||||
process_json() {
|
||||
local json_input="$1"
|
||||
local result
|
||||
result=$(echo "$json_input" | jq -r '.result // empty' 2>&1) || {
|
||||
echo "Error parsing JSON: $result" >&2
|
||||
echo "No relevant wasm events found"
|
||||
return
|
||||
}
|
||||
echo "$result"
|
||||
}
|
||||
|
||||
wait_for_next_block() {
|
||||
local current_height=$($CMD status | jq -r .sync_info.latest_block_height)
|
||||
local next_height=$((current_height + 1))
|
||||
while [ "$($CMD status 2>&1 | jq -r .sync_info.latest_block_height)" -lt "$next_height" ]; do
|
||||
echo "Waiting for next block..."
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
handle_wasm_transfer() {
|
||||
print_header "Received wasm-transfer event"
|
||||
echo "Debug: Entering handle_wasm_transfer function"
|
||||
|
||||
wait_for_next_block
|
||||
|
||||
echo "Fetching requests and state..."
|
||||
REQUESTS=$($CMD query wasm contract-state raw $CONTRACT $(printf '%s' "requests" | hexdump -ve '/1 "%02X"') -o json | jq -r .data | base64 -d)
|
||||
STATE=$($CMD query wasm contract-state raw $CONTRACT $(printf '%s' "state" | hexdump -ve '/1 "%02X"') -o json | jq -r .data | base64 -d)
|
||||
|
||||
cd "$ROOT/apps/transfers"
|
||||
export TRUSTED_HASH=$(cat trusted.hash)
|
||||
export TRUSTED_HEIGHT=$(cat trusted.height)
|
||||
|
||||
cd $ROOT/utils/tm-prover
|
||||
export PROOF_FILE="light-client-proof.json"
|
||||
[ -f "$PROOF_FILE" ] && rm "$PROOF_FILE" && echo "Removed old $PROOF_FILE"
|
||||
|
||||
echo "Trusted hash: $TRUSTED_HASH"
|
||||
echo "Trusted height: $TRUSTED_HEIGHT"
|
||||
echo "Contract: $CONTRACT"
|
||||
|
||||
echo "Running prover to get light client proof..."
|
||||
cargo run -- --chain-id $CHAIN_ID \
|
||||
--primary "http://$NODE_URL" \
|
||||
--witnesses "http://$NODE_URL" \
|
||||
--trusted-height $TRUSTED_HEIGHT \
|
||||
--trusted-hash $TRUSTED_HASH \
|
||||
--contract-address $CONTRACT \
|
||||
--storage-key "requests" \
|
||||
--trace-file $PROOF_FILE
|
||||
|
||||
export POP=$(cat $PROOF_FILE)
|
||||
export ENCLAVE_REQUEST=$(jq -nc --argjson requests "$REQUESTS" --argjson state $STATE '$ARGS.named')
|
||||
export REQUEST_MSG=$(jq --argjson msg "$ENCLAVE_REQUEST" '. + {msg: $msg}' <<< "$POP")
|
||||
export PROTO_MSG=$(jq -nc --arg message "$REQUEST_MSG" '$ARGS.named')
|
||||
|
||||
cd $ROOT/apps/transfers/enclave
|
||||
|
||||
echo "Executing transfer..."
|
||||
ATTESTED_MSG=$(grpcurl -plaintext -import-path ./proto/ -proto transfers.proto \
|
||||
-d "$PROTO_MSG" "127.0.0.1:$QUARTZ_PORT" transfers.Settlement/Run | \
|
||||
jq .message | jq -R 'fromjson | fromjson' | jq -c)
|
||||
QUOTE=$(echo "$ATTESTED_MSG" | jq -c '.attestation')
|
||||
MSG=$(echo "$ATTESTED_MSG" | jq -c '.msg')
|
||||
|
||||
|
||||
|
||||
if [ -n "$MOCK_SGX" ]; then
|
||||
echo "Running in MOCK_SGX mode"
|
||||
EXECUTE=$(jq -nc --argjson update "$(jq -nc --argjson msg "$MSG" --argjson attestation "$QUOTE" '$ARGS.named')" '$ARGS.named')
|
||||
else
|
||||
echo "Getting report..."
|
||||
echo -n "$QUOTE" | xxd -r -p - > "$QUOTE_FILE"
|
||||
gramine-sgx-ias-request report -g "$RA_CLIENT_SPID" -k "$IAS_API_KEY" -q "$QUOTE_FILE" \
|
||||
-r "$REPORT_FILE" -s "$REPORT_SIG_FILE" > /dev/null 2>&1
|
||||
REPORT=$(cat "$REPORT_FILE")
|
||||
REPORTSIG=$(cat "$REPORT_SIG_FILE" | tr -d '\r')
|
||||
EXECUTE=$(jq -nc --argjson update "$(jq -nc --argjson msg "$MSG" --argjson attestation \
|
||||
"$(jq -nc --argjson report "$(jq -nc --argjson report "$REPORT" \
|
||||
--arg reportsig "$REPORTSIG" '$ARGS.named')" '$ARGS.named')" '$ARGS.named')" '$ARGS.named')
|
||||
fi
|
||||
|
||||
echo "Submitting update..."
|
||||
echo $EXECUTE | jq '.'
|
||||
$CMD tx wasm execute "$CONTRACT" "$EXECUTE" --from "$USER_ADDR" $TXFLAG -y
|
||||
print_success "Transfer executed"
|
||||
}
|
||||
|
||||
handle_wasm_query_balance() {
|
||||
print_header "Received wasm-query_balance event"
|
||||
echo "Debug: Entering handle_wasm_query_balance function"
|
||||
|
||||
echo "Fetching state..."
|
||||
|
||||
STATE=$($CMD query wasm contract-state raw $CONTRACT $(printf '%s' "state" | hexdump -ve '/1 "%02X"') -o json | jq -r .data | base64 -d)
|
||||
ADDRESS=$(echo "$1" | jq -r '.result.events["message.sender"][0]')
|
||||
EPHEMERAL_PUBKEY=$(echo "$1" | jq -r '.result.events["wasm-query_balance.emphemeral_pubkey"][0]')
|
||||
|
||||
export ENCLAVE_REQUEST=$(jq -nc --argjson state "$STATE" --arg address "$ADDRESS" --arg ephemeral_pubkey "$EPHEMERAL_PUBKEY" '$ARGS.named')
|
||||
export REQUEST_MSG=$(jq -nc --arg message "$ENCLAVE_REQUEST" '$ARGS.named')
|
||||
|
||||
cd $ROOT/apps/transfers/enclave
|
||||
|
||||
echo "Executing query balance..."
|
||||
ATTESTED_MSG=$(grpcurl -plaintext -import-path ./proto/ -proto transfers.proto \
|
||||
-d "$REQUEST_MSG" "127.0.0.1:$QUARTZ_PORT" transfers.Settlement/Query | jq -r '.message | fromjson')
|
||||
QUOTE=$(echo "$ATTESTED_MSG" | jq -c '.attestation')
|
||||
MSG=$(echo "$ATTESTED_MSG" | jq -c '.msg')
|
||||
QUERY_RESPONSE_MSG=$(jq -n --arg address "$ADDRESS" --argjson msg "$MSG" '{address: $address, encrypted_bal: $msg.encrypted_bal}')
|
||||
|
||||
if [ -n "$MOCK_SGX" ]; then
|
||||
echo "Running in MOCK_SGX mode"
|
||||
EXECUTE=$(jq -nc --argjson query_response "$(jq -nc --argjson msg "$QUERY_RESPONSE_MSG" --argjson attestation "$QUOTE" '$ARGS.named')" '{query_response: $query_response}')
|
||||
else
|
||||
echo -n "$QUOTE" | xxd -r -p - > "$QUOTE_FILE"
|
||||
gramine-sgx-ias-request report -g "$RA_CLIENT_SPID" -k "$IAS_API_KEY" -q "$QUOTE_FILE" \
|
||||
-r "$REPORT_FILE" -s "$REPORT_SIG_FILE" > /dev/null 2>&1
|
||||
REPORT=$(cat "$REPORT_FILE")
|
||||
REPORTSIG=$(cat "$REPORT_SIG_FILE" | tr -d '\r')
|
||||
EXECUTE=$(jq -nc --argjson query_response "$(jq -nc --argjson msg "$QUERY_RESPONSE_MSG" \
|
||||
--argjson attestation "$(jq -nc --argjson report "$(jq -nc --argjson report "$REPORT" \
|
||||
--arg reportsig "$REPORTSIG" '$ARGS.named')" '$ARGS.named')" '$ARGS.named')" \
|
||||
'{query_response: $query_response}')
|
||||
fi
|
||||
|
||||
echo "Submitting update..."
|
||||
echo $EXECUTE | jq '.'
|
||||
$CMD tx wasm execute "$CONTRACT" "$EXECUTE" --from "$USER_ADDR" $TXFLAG -y
|
||||
print_success "Query balance executed"
|
||||
}
|
||||
|
||||
|
||||
# Main loop
|
||||
( echo "$SUBSCRIBE_TRANSFER"; echo "$SUBSCRIBE_QUERY"; cat) | websocat $WSURL | while read -r msg; do
|
||||
EVENTS=$(process_json "$msg")
|
||||
|
||||
if [[ "$EVENTS" == "JSON parsing failed" ]]; then
|
||||
print_error "Failed to parse JSON message. Skipping this message."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -z "$EVENTS" || "$EVENTS" == "No relevant wasm events found" ]]; then
|
||||
if [[ "$msg" == *'"result":{}'* ]]; then
|
||||
print_success "Subscribed to $msg"
|
||||
print_message "$YELLOW" "Waiting for event..."
|
||||
else
|
||||
print_message "$YELLOW" "No relevant events found in message. Waiting for next event..."
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
if echo "$EVENTS" | grep -q 'wasm-transfer'; then
|
||||
handle_wasm_transfer
|
||||
elif echo "$EVENTS" | grep -q 'wasm-query_balance'; then
|
||||
handle_wasm_query_balance "$msg"
|
||||
fi
|
||||
|
||||
print_message "$YELLOW" "Waiting for next event..."
|
||||
done
|
96
apps/transfers/scripts/startNeutron.sh
Executable file
96
apps/transfers/scripts/startNeutron.sh
Executable file
|
@ -0,0 +1,96 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Color definitions
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
BOLD='\033[1m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored and formatted messages
|
||||
print_message() {
|
||||
local color=$1
|
||||
local message=$2
|
||||
echo -e "${color}${BOLD}${message}${NC}"
|
||||
}
|
||||
|
||||
# Function to print section headers
|
||||
print_header() {
|
||||
local message=$1
|
||||
echo -e "\n${MAGENTA}${BOLD}======== $message ========${NC}\n"
|
||||
}
|
||||
|
||||
# Function to print success messages
|
||||
print_success() {
|
||||
local message=$1
|
||||
echo -e "${GREEN}${BOLD}✅ $message${NC}"
|
||||
}
|
||||
|
||||
# Function to print error messages
|
||||
print_error() {
|
||||
local message=$1
|
||||
echo -e "${RED}${BOLD}❌ Error: $message${NC}" >&2
|
||||
}
|
||||
|
||||
# Set up variables
|
||||
ROOT=${ROOT:-$(git rev-parse --show-toplevel)}
|
||||
DIR_QUARTZ_APP="$ROOT/apps/transfers"
|
||||
DIR_QUARTZ_ENCLAVE="$DIR_QUARTZ_APP/enclave"
|
||||
DIR_QUARTZ_TM_PROVER="$ROOT/utils/tm-prover"
|
||||
|
||||
NODE_URL=${NODE_URL:-127.0.0.1:26657}
|
||||
CMD="neutrond --node http://$NODE_URL"
|
||||
QUARTZ_PORT="${QUARTZ_PORT:-11090}"
|
||||
|
||||
print_header "Quartz Setup and Launch"
|
||||
print_message $CYAN "QUARTZ_PORT is set to: $QUARTZ_PORT"
|
||||
|
||||
print_message $BLUE "Setting trusted hash and height"
|
||||
CHAIN_STATUS=$($CMD status)
|
||||
TRUSTED_HASH=$(echo "$CHAIN_STATUS" | jq -r .sync_info.latest_block_hash)
|
||||
TRUSTED_HEIGHT=$(echo "$CHAIN_STATUS" | jq -r .sync_info.latest_block_height)
|
||||
print_message $YELLOW "Trusted Hash: $TRUSTED_HASH"
|
||||
print_message $YELLOW "Trusted Height: $TRUSTED_HEIGHT"
|
||||
|
||||
cd "$DIR_QUARTZ_APP"
|
||||
echo "$TRUSTED_HASH" > trusted.hash
|
||||
echo "$TRUSTED_HEIGHT" > trusted.height
|
||||
print_success "Trusted hash and height saved"
|
||||
|
||||
if [ -n "$MOCK_SGX" ]; then
|
||||
print_header "Running in MOCK_SGX mode"
|
||||
cd $DIR_QUARTZ_ENCLAVE
|
||||
print_message $BLUE "Running enclave without Gramine..."
|
||||
./target/release/quartz-app-transfers-enclave --chain-id "test-1" --trusted-height "$TRUSTED_HEIGHT" --trusted-hash "$TRUSTED_HASH"
|
||||
exit
|
||||
fi
|
||||
|
||||
print_header "Configuring Gramine"
|
||||
cd "$DIR_QUARTZ_ENCLAVE"
|
||||
|
||||
print_message $BLUE "Generating private key (if it doesn't exist)"
|
||||
gramine-sgx-gen-private-key > /dev/null 2>&1 || :
|
||||
|
||||
print_message $BLUE "Creating manifest"
|
||||
gramine-manifest \
|
||||
-Dlog_level="error" \
|
||||
-Dhome="$HOME" \
|
||||
-Darch_libdir="/lib/$(gcc -dumpmachine)" \
|
||||
-Dra_type="epid" \
|
||||
-Dra_client_spid="51CAF5A48B450D624AEFE3286D314894" \
|
||||
-Dra_client_linkable=1 \
|
||||
-Dquartz_dir="$(pwd)" \
|
||||
-Dtrusted_height="$TRUSTED_HEIGHT" \
|
||||
-Dtrusted_hash="$TRUSTED_HASH" \
|
||||
-Dgramine_port="$QUARTZ_PORT" \
|
||||
quartz.manifest.template quartz.manifest
|
||||
|
||||
print_message $BLUE "Signing manifest"
|
||||
gramine-sgx-sign --manifest quartz.manifest --output quartz.manifest.sgx
|
||||
|
||||
print_header "Starting Gramine"
|
||||
print_message $GREEN "Running Quartz with Gramine-SGX..."
|
||||
gramine-sgx ./quartz
|
|
@ -9,6 +9,7 @@ repository.workspace = true
|
|||
keywords = ["blockchain", "cosmos", "tendermint", "cycles", "quartz"]
|
||||
readme = "README.md"
|
||||
|
||||
|
||||
[dependencies]
|
||||
# external
|
||||
prost.workspace = true
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// This file is @generated by prost-build.
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
|
||||
pub struct InstantiateRequest {}
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
|
@ -9,7 +9,7 @@ pub struct InstantiateResponse {
|
|||
pub message: ::prost::alloc::string::String,
|
||||
}
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
|
||||
pub struct SessionCreateRequest {}
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
|
@ -218,19 +218,17 @@ pub mod core_server {
|
|||
}
|
||||
#[derive(Debug)]
|
||||
pub struct CoreServer<T: Core> {
|
||||
inner: _Inner<T>,
|
||||
inner: Arc<T>,
|
||||
accept_compression_encodings: EnabledCompressionEncodings,
|
||||
send_compression_encodings: EnabledCompressionEncodings,
|
||||
max_decoding_message_size: Option<usize>,
|
||||
max_encoding_message_size: Option<usize>,
|
||||
}
|
||||
struct _Inner<T>(Arc<T>);
|
||||
impl<T: Core> CoreServer<T> {
|
||||
pub fn new(inner: T) -> Self {
|
||||
Self::from_arc(Arc::new(inner))
|
||||
}
|
||||
pub fn from_arc(inner: Arc<T>) -> Self {
|
||||
let inner = _Inner(inner);
|
||||
Self {
|
||||
inner,
|
||||
accept_compression_encodings: Default::default(),
|
||||
|
@ -293,7 +291,6 @@ pub mod core_server {
|
|||
Poll::Ready(Ok(()))
|
||||
}
|
||||
fn call(&mut self, req: http::Request<B>) -> Self::Future {
|
||||
let inner = self.inner.clone();
|
||||
match req.uri().path() {
|
||||
"/quartz.Core/Instantiate" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
|
@ -322,7 +319,6 @@ pub mod core_server {
|
|||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let inner = inner.0;
|
||||
let method = InstantiateSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
|
@ -368,7 +364,6 @@ pub mod core_server {
|
|||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let inner = inner.0;
|
||||
let method = SessionCreateSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
|
@ -414,7 +409,6 @@ pub mod core_server {
|
|||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let inner = inner.0;
|
||||
let method = SessionSetPubKeySvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
|
@ -436,8 +430,11 @@ pub mod core_server {
|
|||
Ok(
|
||||
http::Response::builder()
|
||||
.status(200)
|
||||
.header("grpc-status", "12")
|
||||
.header("content-type", "application/grpc")
|
||||
.header("grpc-status", tonic::Code::Unimplemented as i32)
|
||||
.header(
|
||||
http::header::CONTENT_TYPE,
|
||||
tonic::metadata::GRPC_CONTENT_TYPE,
|
||||
)
|
||||
.body(empty_body())
|
||||
.unwrap(),
|
||||
)
|
||||
|
@ -458,16 +455,6 @@ pub mod core_server {
|
|||
}
|
||||
}
|
||||
}
|
||||
impl<T: Core> Clone for _Inner<T> {
|
||||
fn clone(&self) -> Self {
|
||||
Self(Arc::clone(&self.0))
|
||||
}
|
||||
}
|
||||
impl<T: std::fmt::Debug> std::fmt::Debug for _Inner<T> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:?}", self.0)
|
||||
}
|
||||
}
|
||||
impl<T: Core> tonic::server::NamedService for CoreServer<T> {
|
||||
const NAME: &'static str = "quartz.Core";
|
||||
}
|
||||
|
|
|
@ -12,8 +12,11 @@ readme = "README.md"
|
|||
[features]
|
||||
mock-sgx = ["quartz-cw/mock-sgx"]
|
||||
|
||||
|
||||
|
||||
[dependencies]
|
||||
# external
|
||||
sha2 = { workspace = true }
|
||||
clap.workspace = true
|
||||
color-eyre.workspace = true
|
||||
ecies.workspace = true
|
||||
|
|
|
@ -10,7 +10,9 @@ keywords = ["blockchain", "cosmos", "cosmwasm", "cycles", "quartz"]
|
|||
readme = "README.md"
|
||||
|
||||
[features]
|
||||
default = []
|
||||
mock-sgx = []
|
||||
std = ["k256/std", "serde/std", "serde_json/std", "sha2/std", "cosmwasm-std/std"]
|
||||
|
||||
[dependencies]
|
||||
# external
|
||||
|
|
|
@ -123,9 +123,9 @@ pub async fn account_info(
|
|||
address: impl ToString,
|
||||
) -> Result<BaseAccount, Box<dyn Error>> {
|
||||
let mut client = AuthQueryClient::connect(node.to_string()).await?;
|
||||
let request = tonic::Request::new(QueryAccountRequest {
|
||||
let request = QueryAccountRequest {
|
||||
address: address.to_string(),
|
||||
});
|
||||
};
|
||||
let response = client.account(request).await?;
|
||||
let response = RawBaseAccount::decode(response.into_inner().account.unwrap().value.as_slice())?;
|
||||
let account = BaseAccount::try_from(response)?;
|
||||
|
@ -153,14 +153,13 @@ pub fn tx_bytes(
|
|||
|
||||
pub async fn send_tx(node: impl ToString, tx_bytes: Vec<u8>) -> Result<(), Box<dyn Error>> {
|
||||
let mut client = ServiceClient::connect(node.to_string()).await?;
|
||||
let request = tonic::Request::new(BroadcastTxRequest {
|
||||
let request = BroadcastTxRequest {
|
||||
tx_bytes,
|
||||
mode: BroadcastMode::Block.into(),
|
||||
});
|
||||
};
|
||||
let _response = client.broadcast_tx(request).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "mock-sgx"))]
|
||||
fn gramine_sgx_ias_report(quote: &[u8]) -> Result<serde_json::Value, Box<dyn Error>> {
|
||||
use std::{fs::read_to_string, io::Write, process::Command};
|
||||
|
|
Loading…
Reference in a new issue