Update docs with Azure SGX & cleanup other docs (#254)
Co-authored-by: Dave Kaj <davidkajpust@informal.systems> Co-authored-by: Ubuntu <big-cycles@quartz-sgx-test-release.vjset0kafl0exefwnpdw0qebjd.bx.internal.cloudapp.net> Co-authored-by: hu55a1n1 <sufialhussaini@gmail.com>
This commit is contained in:
parent
f8a04a09c9
commit
05163c3eba
12 changed files with 669 additions and 508 deletions
418
Cargo.lock
generated
418
Cargo.lock
generated
|
@ -680,9 +680,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c"
|
|||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.18.0"
|
||||
version = "1.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae"
|
||||
checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
|
@ -733,7 +733,7 @@ dependencies = [
|
|||
"heck",
|
||||
"home",
|
||||
"ignore",
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"indicatif",
|
||||
"liquid",
|
||||
"liquid-core",
|
||||
|
@ -781,9 +781,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.24"
|
||||
version = "1.1.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938"
|
||||
checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
|
@ -880,9 +880,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.19"
|
||||
version = "4.5.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615"
|
||||
checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
|
@ -890,9 +890,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.19"
|
||||
version = "4.5.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b"
|
||||
checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
|
@ -1941,9 +1941,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
|
|||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
|
||||
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
@ -1956,9 +1956,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
|
||||
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
|
@ -1966,15 +1966,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
|
||||
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
|
||||
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
|
@ -1983,15 +1983,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
||||
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
||||
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -2000,21 +2000,21 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
|
||||
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.30"
|
||||
version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
||||
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
@ -2090,7 +2090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"gix-date",
|
||||
"gix-date 0.8.7",
|
||||
"gix-utils",
|
||||
"itoa",
|
||||
"thiserror",
|
||||
|
@ -2098,23 +2098,16 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-config"
|
||||
version = "0.36.1"
|
||||
name = "gix-actor"
|
||||
version = "0.32.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7580e05996e893347ad04e1eaceb92e1c0e6a3ffe517171af99bf6b6df0ca6e5"
|
||||
checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"gix-config-value",
|
||||
"gix-features",
|
||||
"gix-glob",
|
||||
"gix-path",
|
||||
"gix-ref 0.43.0",
|
||||
"gix-sec",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"smallvec",
|
||||
"gix-date 0.9.0",
|
||||
"gix-utils",
|
||||
"itoa",
|
||||
"thiserror",
|
||||
"unicode-bom",
|
||||
"winnow",
|
||||
]
|
||||
|
||||
|
@ -2139,6 +2132,27 @@ dependencies = [
|
|||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-config"
|
||||
version = "0.40.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"gix-config-value",
|
||||
"gix-features",
|
||||
"gix-glob",
|
||||
"gix-path",
|
||||
"gix-ref 0.47.0",
|
||||
"gix-sec",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"smallvec",
|
||||
"thiserror",
|
||||
"unicode-bom",
|
||||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-config-value"
|
||||
version = "0.14.8"
|
||||
|
@ -2164,6 +2178,18 @@ dependencies = [
|
|||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-date"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "35c84b7af01e68daf7a6bb8bb909c1ff5edb3ce4326f1f43063a5a96d3c3c8a5"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"itoa",
|
||||
"jiff",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-features"
|
||||
version = "0.38.2"
|
||||
|
@ -2179,16 +2205,6 @@ dependencies = [
|
|||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-fs"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2184c40e7910529677831c8b481acf788ffd92427ed21fad65b6aa637e631b8"
|
||||
dependencies = [
|
||||
"gix-features",
|
||||
"gix-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-fs"
|
||||
version = "0.11.3"
|
||||
|
@ -2222,24 +2238,13 @@ dependencies = [
|
|||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-lock"
|
||||
version = "13.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7c359f81f01b8352063319bcb39789b7ea0887b406406381106e38c4a34d049"
|
||||
dependencies = [
|
||||
"gix-tempfile 13.1.1",
|
||||
"gix-utils",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-lock"
|
||||
version = "14.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d"
|
||||
dependencies = [
|
||||
"gix-tempfile 14.0.2",
|
||||
"gix-tempfile",
|
||||
"gix-utils",
|
||||
"thiserror",
|
||||
]
|
||||
|
@ -2251,12 +2256,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"gix-actor",
|
||||
"gix-date",
|
||||
"gix-actor 0.31.5",
|
||||
"gix-date 0.8.7",
|
||||
"gix-features",
|
||||
"gix-hash",
|
||||
"gix-utils",
|
||||
"gix-validate",
|
||||
"gix-validate 0.8.5",
|
||||
"itoa",
|
||||
"smallvec",
|
||||
"thiserror",
|
||||
"winnow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-object"
|
||||
version = "0.44.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"gix-actor 0.32.0",
|
||||
"gix-date 0.9.0",
|
||||
"gix-features",
|
||||
"gix-hash",
|
||||
"gix-utils",
|
||||
"gix-validate 0.9.0",
|
||||
"itoa",
|
||||
"smallvec",
|
||||
"thiserror",
|
||||
|
@ -2278,21 +2302,21 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gix-ref"
|
||||
version = "0.43.0"
|
||||
version = "0.44.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd4aba68b925101cb45d6df328979af0681364579db889098a0de75b36c77b65"
|
||||
checksum = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e"
|
||||
dependencies = [
|
||||
"gix-actor",
|
||||
"gix-date",
|
||||
"gix-actor 0.31.5",
|
||||
"gix-date 0.8.7",
|
||||
"gix-features",
|
||||
"gix-fs 0.10.2",
|
||||
"gix-fs",
|
||||
"gix-hash",
|
||||
"gix-lock 13.1.1",
|
||||
"gix-object",
|
||||
"gix-lock",
|
||||
"gix-object 0.42.3",
|
||||
"gix-path",
|
||||
"gix-tempfile 13.1.1",
|
||||
"gix-tempfile",
|
||||
"gix-utils",
|
||||
"gix-validate",
|
||||
"gix-validate 0.8.5",
|
||||
"memmap2",
|
||||
"thiserror",
|
||||
"winnow",
|
||||
|
@ -2300,21 +2324,20 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gix-ref"
|
||||
version = "0.44.1"
|
||||
version = "0.47.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e"
|
||||
checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5"
|
||||
dependencies = [
|
||||
"gix-actor",
|
||||
"gix-date",
|
||||
"gix-actor 0.32.0",
|
||||
"gix-features",
|
||||
"gix-fs 0.11.3",
|
||||
"gix-fs",
|
||||
"gix-hash",
|
||||
"gix-lock 14.0.0",
|
||||
"gix-object",
|
||||
"gix-lock",
|
||||
"gix-object 0.44.0",
|
||||
"gix-path",
|
||||
"gix-tempfile 14.0.2",
|
||||
"gix-tempfile",
|
||||
"gix-utils",
|
||||
"gix-validate",
|
||||
"gix-validate 0.9.0",
|
||||
"memmap2",
|
||||
"thiserror",
|
||||
"winnow",
|
||||
|
@ -2332,26 +2355,13 @@ dependencies = [
|
|||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-tempfile"
|
||||
version = "13.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a761d76594f4443b675e85928e4902dec333273836bd386906f01e7e346a0d11"
|
||||
dependencies = [
|
||||
"gix-fs 0.10.2",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-tempfile"
|
||||
version = "14.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa"
|
||||
dependencies = [
|
||||
"gix-fs 0.11.3",
|
||||
"gix-fs",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
|
@ -2384,6 +2394,16 @@ dependencies = [
|
|||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gix-validate"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81f2badbb64e57b404593ee26b752c26991910fd0d81fe6f9a71c1a8309b6c86"
|
||||
dependencies = [
|
||||
"bstr",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
version = "0.3.1"
|
||||
|
@ -2426,7 +2446,7 @@ dependencies = [
|
|||
"futures-sink",
|
||||
"futures-util",
|
||||
"http 0.2.12",
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
|
@ -2445,7 +2465,7 @@ dependencies = [
|
|||
"futures-core",
|
||||
"futures-sink",
|
||||
"http 1.1.0",
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"slab",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
|
@ -2493,6 +2513,12 @@ dependencies = [
|
|||
"allocator-api2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
version = "0.5.0"
|
||||
|
@ -2679,9 +2705,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.14.30"
|
||||
version = "0.14.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
|
||||
checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
|
@ -2703,9 +2729,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "1.4.1"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
|
||||
checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
|
@ -2730,7 +2756,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
|
|||
dependencies = [
|
||||
"futures-util",
|
||||
"http 0.2.12",
|
||||
"hyper 0.14.30",
|
||||
"hyper 0.14.31",
|
||||
"rustls 0.21.12",
|
||||
"tokio",
|
||||
"tokio-rustls 0.24.1",
|
||||
|
@ -2744,9 +2770,9 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
|
|||
dependencies = [
|
||||
"futures-util",
|
||||
"http 1.1.0",
|
||||
"hyper 1.4.1",
|
||||
"hyper 1.5.0",
|
||||
"hyper-util",
|
||||
"rustls 0.23.13",
|
||||
"rustls 0.23.15",
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
"tokio-rustls 0.26.0",
|
||||
|
@ -2760,7 +2786,7 @@ version = "0.5.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793"
|
||||
dependencies = [
|
||||
"hyper 1.4.1",
|
||||
"hyper 1.5.0",
|
||||
"hyper-util",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
|
@ -2778,7 +2804,7 @@ dependencies = [
|
|||
"futures-util",
|
||||
"http 1.1.0",
|
||||
"http-body 1.0.1",
|
||||
"hyper 1.4.1",
|
||||
"hyper 1.5.0",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"tokio",
|
||||
|
@ -2788,9 +2814,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.60"
|
||||
version = "0.1.61"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
|
||||
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
|
@ -2870,13 +2896,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ignore-files"
|
||||
version = "3.0.1"
|
||||
version = "3.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "99f84e7f847462c582abc4c2aef6ede285ad6e8f66aeec83b47f5481706ddeba"
|
||||
checksum = "51ce3a1903263527cf3b6512a12f338ae63f425b66c1a3d7a24c3121e8557dbe"
|
||||
dependencies = [
|
||||
"dunce",
|
||||
"futures",
|
||||
"gix-config 0.36.1",
|
||||
"gix-config 0.40.0",
|
||||
"ignore",
|
||||
"miette",
|
||||
"normalize-path",
|
||||
|
@ -2917,12 +2943,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.5.0"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
|
||||
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown 0.14.5",
|
||||
"hashbrown 0.15.0",
|
||||
"serde",
|
||||
]
|
||||
|
||||
|
@ -2997,9 +3023,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.10.0"
|
||||
version = "2.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4"
|
||||
checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
|
||||
|
||||
[[package]]
|
||||
name = "is_terminal_polyfill"
|
||||
|
@ -3031,6 +3057,31 @@ version = "1.0.11"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
||||
|
||||
[[package]]
|
||||
name = "jiff"
|
||||
version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a45489186a6123c128fdf6016183fcfab7113e1820eb813127e036e287233fb"
|
||||
dependencies = [
|
||||
"jiff-tzdb-platform",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jiff-tzdb"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653"
|
||||
|
||||
[[package]]
|
||||
name = "jiff-tzdb-platform"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329"
|
||||
dependencies = [
|
||||
"jiff-tzdb",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jobserver"
|
||||
version = "0.1.32"
|
||||
|
@ -3042,9 +3093,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.70"
|
||||
version = "0.3.72"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
|
||||
checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
@ -3682,12 +3733,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.20.1"
|
||||
version = "1.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
|
||||
dependencies = [
|
||||
"portable-atomic",
|
||||
]
|
||||
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
|
@ -3703,9 +3751,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
|||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.103"
|
||||
version = "0.9.104"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
|
||||
checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
|
@ -3899,9 +3947,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
|||
|
||||
[[package]]
|
||||
name = "pest"
|
||||
version = "2.7.13"
|
||||
version = "2.7.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9"
|
||||
checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"thiserror",
|
||||
|
@ -3910,9 +3958,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pest_derive"
|
||||
version = "2.7.13"
|
||||
version = "2.7.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0"
|
||||
checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd"
|
||||
dependencies = [
|
||||
"pest",
|
||||
"pest_generator",
|
||||
|
@ -3920,9 +3968,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pest_generator"
|
||||
version = "2.7.13"
|
||||
version = "2.7.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e"
|
||||
checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e"
|
||||
dependencies = [
|
||||
"pest",
|
||||
"pest_meta",
|
||||
|
@ -3933,9 +3981,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pest_meta"
|
||||
version = "2.7.13"
|
||||
version = "2.7.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f"
|
||||
checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"pest",
|
||||
|
@ -3949,7 +3997,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
|
||||
dependencies = [
|
||||
"fixedbitset",
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3992,18 +4040,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pin-project"
|
||||
version = "1.1.5"
|
||||
version = "1.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
|
||||
checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec"
|
||||
dependencies = [
|
||||
"pin-project-internal",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-internal"
|
||||
version = "1.1.5"
|
||||
version = "1.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
|
||||
checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -4101,9 +4149,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.86"
|
||||
version = "1.0.88"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
|
||||
checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
@ -4128,7 +4176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "38ee68ae331824036479c84060534b18254c864fa73366c58d86db3b7b811619"
|
||||
dependencies = [
|
||||
"futures",
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"nix 0.28.0",
|
||||
"tokio",
|
||||
"tracing",
|
||||
|
@ -4487,7 +4535,7 @@ dependencies = [
|
|||
"quinn-proto",
|
||||
"quinn-udp",
|
||||
"rustc-hash 2.0.0",
|
||||
"rustls 0.23.13",
|
||||
"rustls 0.23.15",
|
||||
"socket2",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
|
@ -4504,7 +4552,7 @@ dependencies = [
|
|||
"rand",
|
||||
"ring 0.17.8",
|
||||
"rustc-hash 2.0.0",
|
||||
"rustls 0.23.13",
|
||||
"rustls 0.23.15",
|
||||
"slab",
|
||||
"thiserror",
|
||||
"tinyvec",
|
||||
|
@ -4692,7 +4740,7 @@ dependencies = [
|
|||
"hickory-resolver",
|
||||
"http 0.2.12",
|
||||
"http-body 0.4.6",
|
||||
"hyper 0.14.30",
|
||||
"hyper 0.14.31",
|
||||
"hyper-rustls 0.24.2",
|
||||
"ipnet",
|
||||
"js-sys",
|
||||
|
@ -4734,7 +4782,7 @@ dependencies = [
|
|||
"http 1.1.0",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
"hyper 1.4.1",
|
||||
"hyper 1.5.0",
|
||||
"hyper-rustls 0.27.3",
|
||||
"hyper-util",
|
||||
"ipnet",
|
||||
|
@ -4745,7 +4793,7 @@ dependencies = [
|
|||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"quinn",
|
||||
"rustls 0.23.13",
|
||||
"rustls 0.23.15",
|
||||
"rustls-pemfile 2.2.0",
|
||||
"rustls-pki-types",
|
||||
"serde",
|
||||
|
@ -4927,9 +4975,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustls"
|
||||
version = "0.23.13"
|
||||
version = "0.23.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8"
|
||||
checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"ring 0.17.8",
|
||||
|
@ -4984,9 +5032,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustls-pki-types"
|
||||
version = "1.9.0"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55"
|
||||
checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
|
@ -5011,9 +5059,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.17"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
|
||||
checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
|
@ -5067,9 +5115,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.24"
|
||||
version = "0.1.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b"
|
||||
checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1"
|
||||
dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
@ -5225,7 +5273,7 @@ version = "1.0.128"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
|
||||
dependencies = [
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"itoa",
|
||||
"memchr",
|
||||
"ryu",
|
||||
|
@ -5266,15 +5314,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_with"
|
||||
version = "3.10.0"
|
||||
version = "3.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9720086b3357bcb44fce40117d769a4d068c70ecfa190850a980a71755f66fcc"
|
||||
checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"chrono",
|
||||
"hex",
|
||||
"indexmap 1.9.3",
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
|
@ -5284,9 +5332,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_with_macros"
|
||||
version = "3.10.0"
|
||||
version = "3.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5f1abbfe725f27678f4663bcacb75a83e829fd464c25d78dd038a3a29e307cec"
|
||||
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
|
@ -5918,7 +5966,7 @@ version = "0.26.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
|
||||
dependencies = [
|
||||
"rustls 0.23.13",
|
||||
"rustls 0.23.15",
|
||||
"rustls-pki-types",
|
||||
"tokio",
|
||||
]
|
||||
|
@ -5953,7 +6001,7 @@ version = "0.8.19"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
|
||||
dependencies = [
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
|
@ -5975,7 +6023,7 @@ version = "0.22.22"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
|
||||
dependencies = [
|
||||
"indexmap 2.5.0",
|
||||
"indexmap 2.6.0",
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
"toml_datetime",
|
||||
|
@ -5997,7 +6045,7 @@ dependencies = [
|
|||
"http 1.1.0",
|
||||
"http-body 1.0.1",
|
||||
"http-body-util",
|
||||
"hyper 1.4.1",
|
||||
"hyper 1.5.0",
|
||||
"hyper-timeout",
|
||||
"hyper-util",
|
||||
"percent-encoding",
|
||||
|
@ -6184,9 +6232,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.15"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
|
||||
checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bom"
|
||||
|
@ -6280,9 +6328,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.10.0"
|
||||
version = "1.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
|
||||
checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a"
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
|
@ -6323,9 +6371,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.93"
|
||||
version = "0.2.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
|
||||
checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
|
@ -6334,9 +6382,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.93"
|
||||
version = "0.2.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
|
||||
checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"log",
|
||||
|
@ -6349,9 +6397,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.43"
|
||||
version = "0.4.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed"
|
||||
checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
|
@ -6361,9 +6409,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.93"
|
||||
version = "0.2.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
|
||||
checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
|
@ -6371,9 +6419,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.93"
|
||||
version = "0.2.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
|
||||
checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -6384,9 +6432,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.93"
|
||||
version = "0.2.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
|
||||
checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
|
||||
|
||||
[[package]]
|
||||
name = "watchexec"
|
||||
|
@ -6453,9 +6501,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.70"
|
||||
version = "0.3.72"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
|
||||
checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
|
|
|
@ -54,7 +54,7 @@ Quartz provides developers three main tools:
|
|||
- a rust library (`quartz-enclave-core`) for building blockchain constrained SGX enclaves
|
||||
- a cli tool (`quartz`) for connecting the contract and the enclave.
|
||||
|
||||
This repo contains an example, [`transfers`](/apps/transfers), which combines these
|
||||
This repo contains an example, [`transfers`](/examples/transfers), which combines these
|
||||
tools into a working private transfers application, complete with a Keplr-based
|
||||
frontend.
|
||||
|
||||
|
@ -127,9 +127,9 @@ The repo contains some additional utilities for supporting Quartz development:
|
|||
* [quartz-cw-prover](crates/utils/cw-prover) - Retrieve a merkle-proof for CosmWasm state
|
||||
* [quartz-tm-prover](crates/utils/tm-prover) - Generate light client and merkle proofs for CosmWasm storage in a format that Quartz
|
||||
understands
|
||||
* [quartz-cw-client](crates/utils/quartz-cw-client) - Rust client for wasmd
|
||||
* [quartz-cw-client](crates/utils/cw-client) - Rust client for wasmd
|
||||
style blockchains
|
||||
* [quartz-print-fmspc](crates/utils/quartz-print-fmspc) - Print the FMSPC, a
|
||||
* [quartz-print-fmspc](crates/utils/print-fmspc) - Print the FMSPC, a
|
||||
description of the SGX processor family/model etc.
|
||||
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Add this to your `Cargo.toml`:
|
|||
|
||||
```toml
|
||||
[dependencies]
|
||||
cw-client = { path = "../packages/cw-client" }
|
||||
cw-client = { path = "crates/utils/cw-client", default-features = false }
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Quartz Enclave Build/Run Image for SGX
|
||||
|
||||
> NOTE - As of v0.1 release, this dockerfile is out of date and does not work.
|
||||
|
||||
This folder contains the basis for a multi-stage Docker image that:
|
||||
|
||||
1. Builds the enclave
|
||||
|
|
|
@ -95,5 +95,5 @@ The enclave code can then produce a remote attestation of the result, and
|
|||
optionally a zero-knowledge proof (ZKP) of execution.
|
||||
|
||||
|
||||
[transfers_app]: /apps/transfers
|
||||
[transfers_app]: /examples/transfers
|
||||
[how_it_works]: /docs/how_it_works.md
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
- [Quick Start](#quick-start)
|
||||
- [Simple Example](#simple-example)
|
||||
- [Installation](#installation)
|
||||
- [Local Testnet without SGX](#local-testnet-without-sgx)
|
||||
- [Real Testnet with SGX](#real-testnet-with-sgx)
|
||||
- [Local Testnet without SGX](#local-neutrond-testnet-without-sgx)
|
||||
- [Real Testnet with SGX](#hard-example---real-testnet-with-azure-sgx))
|
||||
- [Other Testnets with SGX](#other-testnets-with-sgx)
|
||||
- [Troubleshooting and FAQ](#troubleshooting-and-faq)
|
||||
- [Glossary](#glossary)
|
||||
|
||||
## Introduction
|
||||
|
||||
This guide will help you get up and running with an example Quartz application. You can run this locally using a "mock" enclave (without real privacy or attestations), or you can use a machine with Intel SGX enabled for secure execution.
|
||||
This guide will help you get up and running with an example Quartz application. You can run this locally using a "mock" enclave (without real privacy or attestations), or you can use a machine with Intel SGX enabled for secure execution. We will go over both setups.
|
||||
|
||||
> **Note**: This guide assumes familiarity with blockchain concepts and basic smart contract development.
|
||||
|
||||
|
@ -23,22 +23,23 @@ This guide will help you get up and running with an example Quartz application.
|
|||
For those who want to get started quickly with the example Transfers app with
|
||||
mock SGX:
|
||||
|
||||
1. Install dependencies (Rust, wasmd or neutrond)
|
||||
1. Install dependencies (Rust, neutrond)
|
||||
2. Clone the repository: `git clone ssh://git@github.com/informalsystems/cycles-quartz`
|
||||
3. Install Quartz CLI: `cargo install --path crates/cli`
|
||||
4. Navigate to the example app: `cd examples/transfers`
|
||||
4. Deploy the example app in one command (enclave, contracts, secure handshake):
|
||||
3. Run neutrond: `cd cycles-quarts/docker && docker compose up node`
|
||||
4. Install Quartz CLI: `cd .. && cargo install --path crates/cli`
|
||||
5. Navigate to the example app: `cd examples/transfers`
|
||||
6. Deploy the example app in one command (enclave, contracts, secure handshake):
|
||||
```bash
|
||||
quartz --mock-sgx dev \
|
||||
--unsafe-trust-latest \
|
||||
--contract-manifest "examples/transfers/contracts/Cargo.toml" \
|
||||
--contract-manifest "contracts/Cargo.toml" \
|
||||
--init-msg '{"denom":"ucosm"}'
|
||||
```
|
||||
5. Set up the frontend (see [Frontend](#frontend))
|
||||
6. Set up the frontend (see [Frontend](#frontend))
|
||||
|
||||
For more detailed background and instructions, read on.
|
||||
|
||||
## Simple Example
|
||||
## Simple Example - Local Mock SGX Application
|
||||
|
||||
Quartz includes a simple example we call the `Transfer` application,
|
||||
located in [/examples/transfers](/examples/transfers), that comes with a Keplr-based
|
||||
|
@ -57,22 +58,22 @@ Quartz is both a library (`quartz-contract-core`) for building SGX-aware CosmWas
|
|||
contracts, and a cli tool (`quartz`) for managing the enclave.
|
||||
|
||||
The library takes care of establishing a secure connection to the enclave (see
|
||||
[How it Works](/docs/how_it_works.md), and verifying attestations from
|
||||
[How it Works](/docs/how_it_works.md)), and verifying attestations from
|
||||
it. The quartz tool provides commands for managing the enclave.
|
||||
|
||||
This guide is primarily about using the `quartz` tool to get the example app
|
||||
setup. For more on building application, see
|
||||
- [Building Apps](/docs/building_apps.md) - conceptual overview
|
||||
- [quartz-contract-core](/cosmwasm/quartz-contract-core) - main library. provides msgs and handlers
|
||||
- [quartz-contract-core](/crates/contracts/core/) - main library. provides msgs and handlers
|
||||
for the handshake and for verifying attestations
|
||||
- [transfers contracts](/examples/transfers/contracts): transfer app example itself
|
||||
|
||||
Onwards with the installation and running our example app!
|
||||
|
||||
## Installation
|
||||
### Installation
|
||||
|
||||
Quartz is built in Rust (+wasm32 target). It expects to interact with a CosmWasm compatible
|
||||
blockchain (eg. `wasmd` or `neutrond`), built in Go (or run with Docker). And it requires `npm` for
|
||||
blockchain (eg. `neutrond`), built in Go (or run with Docker). And it requires `npm` for
|
||||
building the frontend. Here we cover how to install Rust, Quartz, and CosmWasm
|
||||
blockchains. You're responsible for installing Go and NPM.
|
||||
|
||||
|
@ -82,11 +83,10 @@ Pre-reqs:
|
|||
- Go or Docker
|
||||
- NPM
|
||||
|
||||
### Install Rust
|
||||
#### Install Rust
|
||||
|
||||
The minimum Rust supported version is v1.74.1.
|
||||
The recommended Rust version v1.79.0 since we're running against
|
||||
wasmd v0.45.
|
||||
The recommended Rust version v1.79.0.
|
||||
|
||||
Install rust [here](https://www.rust-lang.org/tools/install).
|
||||
|
||||
|
@ -100,7 +100,7 @@ rustup target add wasm32-unknown-unknown
|
|||
|
||||
And you should be good to go!
|
||||
|
||||
### Install Quartz
|
||||
#### Install Quartz
|
||||
|
||||
Now clone and build the repo:
|
||||
|
||||
|
@ -116,41 +116,24 @@ And check that it worked:
|
|||
quartz --help
|
||||
```
|
||||
|
||||
### Install a CosmWasm Client
|
||||
#### Install a CosmWasm Client
|
||||
|
||||
For the local testnet, we use `wasmd`.
|
||||
For the local testnet, we can use `neutrond` with a single validator (we have a docker image for this).
|
||||
|
||||
For the real testnet, we use `neutrond`.
|
||||
|
||||
We quickest start, we provide docker images for both.
|
||||
|
||||
You can also use an existing installation if you have, or you can build from
|
||||
source in Go. If so, you'll have to setup accounts that can pay gas. See [wasmd setup instructions](/docs/wasmd_setup.md)
|
||||
|
||||
The docker images come with everything. To use them install and setup docker.
|
||||
|
||||
Then for wasmd`:
|
||||
For `neutrond`:
|
||||
|
||||
```bash
|
||||
cd docker/wasmd
|
||||
make run
|
||||
cd docker
|
||||
docker compose up node
|
||||
```
|
||||
|
||||
Or for `neutrond`:
|
||||
|
||||
```bash
|
||||
cd docker/neutron
|
||||
make start-docker-container
|
||||
```
|
||||
|
||||
If will pre-configure a few keys (admin, alice, etc.) and allocate funds to them.
|
||||
It will pre-configure a few keys (admin, alice, etc.) and allocate funds to them.
|
||||
The default sending account for quartz txs is `admin`.
|
||||
|
||||
If building from source, you'll need to initialize the accounts yourself. See
|
||||
the guide on [setting up a CosmWasm chain](/docs/wasmd_setup.md) and then return
|
||||
back here.
|
||||
the guide on [setting up a CosmWasm chain](/docs/neutrond_setup.md) and then return back here.
|
||||
|
||||
## Local Testnet Without SGX
|
||||
### Local neutrond Testnet Without SGX
|
||||
|
||||
From the root of the `cycles-quartz` repo, we can now deploy our example
|
||||
transfers app. Deployment involves three components:
|
||||
|
@ -197,7 +180,7 @@ continue.
|
|||
2. Deploy the contract:
|
||||
```bash
|
||||
quartz --mock-sgx contract deploy \
|
||||
--contract-manifest "examples/transfers/contracts/Cargo.toml" \
|
||||
--contract-manifest "contracts/Cargo.toml" \
|
||||
--init-msg '{"denom":"ucosm"}'
|
||||
```
|
||||
|
||||
|
@ -212,6 +195,12 @@ environment variable:
|
|||
export CONTRACT_ADDRESS=<CONTRACT_ADDRESS>
|
||||
```
|
||||
|
||||
You must also set the admin secret key:
|
||||
|
||||
```bash
|
||||
export ADMIN_SK=ffc4d3c9119e9e8263de08c0f6e2368ac5c2dacecfeb393f6813da7d178873d2
|
||||
```
|
||||
|
||||
3. Perform the handshake:
|
||||
```bash
|
||||
quartz --mock-sgx handshake --contract $CONTRACT_ADDRESS
|
||||
|
@ -227,10 +216,16 @@ environment variable:
|
|||
export PUBKEY=<PUBKEY>
|
||||
```
|
||||
|
||||
Now the contract is ready to start processing requests to the enclave.
|
||||
Now the contract is ready to start processing requests to the enclave. You will see logs from the enclave showing:
|
||||
|
||||
```bash
|
||||
2024-09-24T11:12:25.156779Z INFO Enclave is listening for requests...
|
||||
```
|
||||
|
||||
### Frontend
|
||||
|
||||
You can run the front end on your local computer, so it is easy to test in a browser. If you are running your application in the cloud (such as an Azure SGX machine), you can configure the front end to talk to that blockchain over the internet. You will need node `>= v18.17.0` to build the front end.
|
||||
|
||||
1. Navigate to the frontend folder:
|
||||
```bash
|
||||
cd examples/transfers/frontend
|
||||
|
@ -246,12 +241,9 @@ Now the contract is ready to start processing requests to the enclave.
|
|||
cp .env.example .env.local
|
||||
```
|
||||
|
||||
Now open `.env.local` and edit the values of
|
||||
NEXT_PUBLIC_TRANSFERS_CONTRACT_ADDRESS
|
||||
and
|
||||
NEXT_PUBLIC_ENCLAVE_PUBLIC_KEY
|
||||
to be the contract address and pubkey from the previous step (deploying the
|
||||
contract and doing the handshake).
|
||||
Now open `.env.local` and edit the values of `NEXT_PUBLIC_TRANSFERS_CONTRACT_ADDRESS` and
|
||||
`NEXT_PUBLIC_ENCLAVE_PUBLIC_KEY` to be the contract address and pubkey from the previous step. With quartz dev, they can be grabbed
|
||||
from the logs. From the manual process, you would have already stored them as environment variables.
|
||||
|
||||
4. Finally, start the frontend:
|
||||
```bash
|
||||
|
@ -260,7 +252,9 @@ contract and doing the handshake).
|
|||
|
||||
### Use the App
|
||||
|
||||
Open your browser to `localhost:3000` to see the app.
|
||||
Open your browser to `localhost:3000` to see the app. You will be prompted to store a mnemonic. This key is stored
|
||||
in the browser, and allows you to query your encrypted balance in the future. You should save this, but in general
|
||||
if you are just testing and you don't clear your browser storage, you will be fine.
|
||||
|
||||
You'll need to have the Keplr wallet browser extension installed and unlocked.
|
||||
|
||||
|
@ -272,23 +266,23 @@ address some funds from the `admin` account setup with your local node. For
|
|||
instance, send 10M ucosm with:
|
||||
|
||||
```bash
|
||||
wasmd tx bank send admin <KEPLR ADDRESS> 10000000ucosm --chain-id testing
|
||||
neutrond tx bank send admin <KEPLR ADDRESS> 10000000ucosm --chain-id testing
|
||||
```
|
||||
|
||||
You should now see the funds on your local testnet on Keplr.
|
||||
|
||||
Now you can interact with the app by depositing funds, privately transfering
|
||||
Now you can interact with the app by depositing funds, privately transferring
|
||||
them to other addresses, and finally withdrawing them.
|
||||
|
||||
Be sure to check the enclave window to see the logs from your interaction with
|
||||
the app!
|
||||
|
||||
## Real Testnet with SGX
|
||||
## Hard Example - Real Testnet with Azure SGX
|
||||
|
||||
Now that we've tried the example app on a local tesnet with a mocked SGX, it's
|
||||
Now that we've tried the example app on a local testnet with a mocked SGX, it's
|
||||
time to use a real testnet and a real SGX core. This guide will walk through how
|
||||
to get setup with SGX on Azure, and how to deploy quartz contracts to the
|
||||
Neutron testnet using real remote attestions from SGX cores on Azure.
|
||||
Neutron testnet using real remote attestations from SGX cores on Azure.
|
||||
|
||||
Real verification of SGX on a CosmWasm network requires two additional global contracts
|
||||
to be deployed: `quartz-dcap-verify` and `quartz-tcbinfo`. The
|
||||
|
@ -297,245 +291,139 @@ to be deployed: `quartz-dcap-verify` and `quartz-tcbinfo`. The
|
|||
versions of SGX processors. Together they allow contracts built with quartz to
|
||||
securely verify remote attestations from SGX enclaves.
|
||||
|
||||
We have already predeployed the `quartz-dcap-verify` and `quartz-tcbinfo` contracts on the Neutron
|
||||
testnet at TODO. To deploy these on your own testnet, see [below](#other-testnets-with-sgx).
|
||||
We have already pre-deployed the `quartz-dcap-verify` and `quartz-tcbinfo` contracts on the Neutron
|
||||
testnet at:
|
||||
- verifier - `neutron18f3xu4yazfqr48wla9dwr7arn8wfm57qfw8ll6y02qsgmftpft6qfec3uf`
|
||||
- tcbinfo - `neutron1anj45ushmjntew7zrg5jw2rv0rwfce3nl5d655mzzg8st0qk4wjsds4wps`
|
||||
|
||||
To deploy these on your own testnet, see [below](#other-testnets-with-sgx). Although for v0.1, we recommend going with these already deployed contracts.
|
||||
|
||||
### Setting up an Azure machine
|
||||
To begin, you'll need to deploy an SGX-enabled Azure instance and log in via ssh.
|
||||
Follow the [steps Microsoft lays out](https://learn.microsoft.com/en-us/azure/confidential-computing/quick-create-portal) to connect, choose Ubuntu 20.04, then ssh into the machine.
|
||||
|
||||
Once logged in, clone and install Quartz like before (see
|
||||
[installation](#installation).
|
||||
Once logged in, clone and install Quartz like before (see [installation](#installation)). Once you clone the Quartz repo, you'll have to add some things to your azure machine.
|
||||
|
||||
### Build and Deploy the Contracts
|
||||
|
||||
TODO:
|
||||
- make this about deploying to neutron.
|
||||
- do it from examples/transfers to avoid specifying `--app-dir`
|
||||
|
||||
|
||||
To build both the contract binaries, use the build command:
|
||||
Below we have provided a long instruction set to get the azure machine setup. We plan on dockerizing all of this after the v0.1 launch, as it is quite complex. You can reach out for the team for help if you get stuck here.
|
||||
|
||||
```bash
|
||||
quartz --app-dir "examples/transfers/" contract build --contract-manifest "examples/transfers/contracts/Cargo.toml"
|
||||
### INSIDE YOUR AZURE SGX MACHINE ###
|
||||
|
||||
# install rust
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
rustup install 1.79.0
|
||||
rustup default 1.79.0
|
||||
rustup target add wasm32-unknown-unknown
|
||||
|
||||
# install go
|
||||
wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gz
|
||||
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz
|
||||
echo "export PATH=\$PATH:/usr/local/go/bin" >> ~/.profile
|
||||
|
||||
# necessary building packages
|
||||
sudo apt update
|
||||
sudo apt upgrade -y
|
||||
sudo apt install build-essential
|
||||
sudo apt install clang libclang-dev
|
||||
export LIBCLANG_PATH=/usr/lib/llvm-10/lib
|
||||
sudo apt install pkg-config
|
||||
sudo apt install libssl-dev
|
||||
sudo apt install protobuf-compiler
|
||||
sudo apt-get install ca-certificates
|
||||
|
||||
# Clone the repo and install quartz. Reminder - to setup ssh key on azure, or use https
|
||||
git clone ssh://git@github.com/informalsystems/cycles-quartz
|
||||
cd cycles-quartz
|
||||
cargo install --path crates/cli
|
||||
quartz --help
|
||||
|
||||
# install gramine
|
||||
# Taken from https://gramine.readthedocs.io/en/stable/installation.html#ubuntu-22-04-lts-or-20-04-lts
|
||||
sudo curl -fsSLo /usr/share/keyrings/gramine-keyring.gpg https://packages.gramineproject.io/gramine-keyring.gpg
|
||||
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/gramine-keyring.gpg] https://packages.gramineproject.io/ $(lsb_release -sc) main" \
|
||||
| sudo tee /etc/apt/sources.list.d/gramine.list
|
||||
|
||||
sudo curl -fsSLo /usr/share/keyrings/intel-sgx-deb.asc https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key
|
||||
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/intel-sgx-deb.asc] https://download.01.org/intel-sgx/sgx_repo/ubuntu $(lsb_release -sc) main" \
|
||||
| sudo tee /etc/apt/sources.list.d/intel-sgx.list
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install gramine
|
||||
|
||||
# add attestation dependencies
|
||||
# Taken from https://github.com/flashbots/geth-sgx-gramine/tree/main
|
||||
sudo apt-key adv --fetch-keys 'https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key'
|
||||
sudo add-apt-repository "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu `lsb_release -cs` main"
|
||||
sudo apt-get update && sudo apt-get install -y libsgx-dcap-ql
|
||||
sudo apt-key adv --fetch-keys 'https://packages.microsoft.com/keys/microsoft.asc'
|
||||
sudo apt-add-repository 'https://packages.microsoft.com/ubuntu/20.04/prod main'
|
||||
sudo apt-get update && sudo apt-get install -y az-dcap-client
|
||||
|
||||
# generate gramine priv key
|
||||
gramine-sgx-gen-private-key
|
||||
|
||||
# install neutron and setup accounts
|
||||
git clone -b main https://github.com/neutron-org/neutron.git
|
||||
cd neutron/
|
||||
make install
|
||||
|
||||
neutrond keys add admin --keyring-backend test > ./accounts/val1.txt 2>&1
|
||||
|
||||
# install node (needed for pccs)
|
||||
sudo apt-get install nodejs=20.10.0-1nodesource1
|
||||
|
||||
# install pccs - see appendix 2
|
||||
# instructions from https://download.01.org/intel-sgx/latest/linux-latest/docs/Intel_SGX_SW_Installation_Guide_for_Linux.pdf
|
||||
# Note - You will be asked a bunch of configuration questions when setting up pcss - for testing, any values will work. In production, please give it careful thought
|
||||
sudo apt-get install sgx-dcap-pccs
|
||||
sudo systemctl start pccs
|
||||
|
||||
# update /etc/sgx_default_qcnl.conf to config in our repo
|
||||
sudo cp sgx_default_qcnl.conf /etc/sgx_default_qcnl.conf
|
||||
|
||||
# reset pccs
|
||||
sudo systemctl restart pccs
|
||||
|
||||
# build and start the enclave
|
||||
export TCBINFO_CONTRACT=neutron1anj45ushmjntew7zrg5jw2rv0rwfce3nl5d655mzzg8st0qk4wjsds4wps
|
||||
export DCAP_CONTRACT=neutron18f3xu4yazfqr48wla9dwr7arn8wfm57qfw8ll6y02qsgmftpft6qfec3uf
|
||||
export ADMIN_SK=ffc4d3c9119e9e8263de08c0f6e2368ac5c2dacecfeb393f6813da7d178873d2
|
||||
cd examples/transfers
|
||||
|
||||
# copy the neutron testnet config file to the default quartz.toml file, so we connect to the right nodes
|
||||
cp quartz.neutron_pion-1.toml quartz.toml
|
||||
quartz enclave build
|
||||
quartz enclave start --fmspc "00906ED50000" --tcbinfo-contract $TCBINFO_CONTRACT --dcap-verifier-contract $DCAP_CONTRACT --unsafe-trust-latest
|
||||
|
||||
# build and deploy the contracts
|
||||
quartz contract build --contract-manifest "contracts/Cargo.toml"
|
||||
quartz contract deploy --contract-manifest "contracts/Cargo.toml" --init-msg '{"denom":"ucosm"}'
|
||||
|
||||
# store the output
|
||||
export CONTRACT=<CONTRACT_ADDRESS>
|
||||
|
||||
# create the handshake
|
||||
quartz handshake --contract $CONTRACT
|
||||
|
||||
### ENCLAVE IS SETUP AND RUNNING! CONGRATS!
|
||||
### Now follow instructions in the Front End section of this doc to test the enclave
|
||||
```
|
||||
This command will compile the smart contract to WebAssembly and build the contract binary.
|
||||
|
||||
The following configuration assumes that the `wasmd` node will be running in the same Azure instance as the enclave.
|
||||
If you wish to use another enclave provider you have to make sure that `QUARTZ_NODE_URL` is set to the enclave address and port as an argument as in:
|
||||
|
||||
### Using an enclave on another machine
|
||||
You can use a remote enclave machine by setting the following env var:
|
||||
```bash
|
||||
QUARTZ_NODE_URL=87.23.1.3:11090 && quartz --app-dir "examples/transfers/" contract deploy --contract-manifest "examples/transfers/contracts/Cargo.toml" --init-msg '{"denom":"ucosm"}'
|
||||
QUARTZ_NODE_URL=<YOUR_IP_ADDR>:11090
|
||||
# You can now use that enclave to deploy
|
||||
cd examples/transfers
|
||||
quartz contract deploy --contract-manifest "examples/transfers/contracts/Cargo.toml" --init-msg '{"denom":"ucosm"}'
|
||||
```
|
||||
|
||||
If you wish to use another blockchain you have to make sure that `--node-url` is set to the chain address and port as an option in the `cli` as in:
|
||||
|
||||
```bash
|
||||
QUARTZ_NODE_URL=127.0.0.1:11090 && quartz --app-dir "examples/transfers/" --node-url "https://92.43.1.4:26657" contract deploy --contract-manifest "examples/transfers/contracts/Cargo.toml" --init-msg '{"denom":"ucosm"}'
|
||||
```
|
||||
|
||||
### Build and Run the SGX Enclave
|
||||
|
||||
First we build the enclave like before:
|
||||
|
||||
```bash
|
||||
# Configure the enclave
|
||||
quartz --app-dir "examples/transfers/" enclave build
|
||||
```
|
||||
|
||||
Before starting the enclave, we should check that the relevant contracts
|
||||
(`quartz-tcbinfo`, `quartz-dcap-verifier`) have been instantiated.
|
||||
|
||||
TODO: how to query to check this?
|
||||
|
||||
TODO: use variables for the contract addresses
|
||||
|
||||
|
||||
|
||||
```bash
|
||||
# Start the enclave
|
||||
QUARTZ_NODE_URL=127.0.0.1:11090 && quartz --app-dir "examples/transfers/" enclave start --fmspc "00606A000000" --tcbinfo-contract "wasm1pk6xe9hr5wgvl5lcd6wp62236t5p600v9g7nfcsjkf6guvta2s5s7353wa" --dcap-verifier-contract "wasm107cq7x4qmm7mepkuxarcazas23037g4q9u72urzyqu7r4saq3l6srcykw2"
|
||||
```
|
||||
|
||||
The enclave will start running and wait for commands.
|
||||
|
||||
### Deploying the Contract
|
||||
|
||||
With the enclave running, open a new terminal window to deploy the contract:
|
||||
|
||||
```bash
|
||||
QUARTZ_NODE_URL=127.0.0.1:11090 && quartz --app-dir "examples/transfers/" contract deploy --contract-manifest "examples/transfers/contracts/Cargo.toml" --init-msg '{"denom":"ucosm"}'
|
||||
```
|
||||
|
||||
Make note of the deployed contract address, as you'll need it for the next step. You should see output similar to:
|
||||
|
||||
```
|
||||
2024-09-26T15:21:39.036639Z INFO 🆔 Code ID: 66
|
||||
2024-09-26T15:21:39.036640Z INFO 📌 Contract Address: wasm1z0az3d9j9s3rjmaukxc58t8hdydu8v0d59wy9p6slce66mwnzjusy76vdq
|
||||
{"ContractDeploy":{"code_id":66,"contract_addr":"wasm1z0az3d9j9s3rjmaukxc58t8hdydu8v0d59wy9p6slce66mwnzjusy76vdq"}}
|
||||
```
|
||||
|
||||
### Performing the Handshake + activating listener
|
||||
|
||||
To establish communication between the contract and the enclave, perform the handshake:
|
||||
|
||||
```bash
|
||||
quartz --app-dir "examples/transfers/" handshake --contract <CONTRACT_ADDRESS>
|
||||
```
|
||||
|
||||
Replace `<CONTRACT_ADDRESS>` with the address you received when deploying the contract.
|
||||
|
||||
Make note of the handshake generate public key, as you'll need it for the `.env.local` files on the front-end. You should see output similar to:
|
||||
|
||||
```bash
|
||||
2024-09-24T11:12:16.961641Z INFO Handshake complete: 02360955ff74750f6ea0b539f41cce89451f591e4c835d0a5406e6effa96dd169d
|
||||
```
|
||||
|
||||
Events coming from the contract will be logged following the handshake as they are retrieved by the listener:
|
||||
|
||||
```bash
|
||||
2024-09-24T11:12:25.156779Z INFO Enclave is listening for requests...
|
||||
```
|
||||
|
||||
## Other Testnets With SGX
|
||||
### Other Testnets With SGX
|
||||
|
||||
To setup on another testnet we need to deploy a `quartz-tcbinfo` contract and a
|
||||
`quartz-dcap-verifier` contract.
|
||||
|
||||
### Get the FMSPC of the host machine
|
||||
|
||||
```bash
|
||||
export QUOTE="/* quote generated during the handshake should work */"
|
||||
cd crates/utils/print-fmspc/
|
||||
cargo run > /dev/null
|
||||
```
|
||||
|
||||
### Deploying the `quartz-tcbinfo` contract
|
||||
|
||||
1. Build and store the contract on-chain
|
||||
```bash
|
||||
cargo run -- contract build --contract-manifest "../cosmwasm/packages/tcbinfo/Cargo.toml"
|
||||
RES=$(wasmd tx wasm store ./target/wasm32-unknown-unknown/release/tcbinfo.wasm --from alice -y --output json --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3)
|
||||
TX_HASH=$(echo $RES | jq -r '.["txhash"]')
|
||||
```
|
||||
|
||||
2. Instantiate the contract using Intel's root CA cert.
|
||||
```bash
|
||||
CERT=$(sed ':a;N;$!ba;s/\n/\\n/g' ../cosmwasm/packages/quartz-tee-ra/data/root_ca.pem)
|
||||
RES=$(wasmd query tx "$TX_HASH" --output json)
|
||||
CODE_ID=$(echo $RES | jq -r '.logs[0].events[1].attributes[1].value')
|
||||
wasmd tx wasm instantiate "$CODE_ID" "{\"root_cert\": \"$CERT\"}" --from "alice" --label "tcbinfo" --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3 -y --no-admin --output json
|
||||
TCB_CONTRACT=$(wasmd query wasm list-contract-by-code "$CODE_ID" --output json | jq -r '.contracts[0]')
|
||||
```
|
||||
|
||||
3. Get the Tcbinfo for the given FMSPC.
|
||||
```bash
|
||||
HEADERS=$(wget -q -S -O - https://api.trustedservices.intel.com/sgx/certification/v4/tcb?fmspc=00606A000000 2>&1 >/dev/null)
|
||||
TCB_INFO=$(wget -q -O - https://api.trustedservices.intel.com/sgx/certification/v4/tcb?fmspc=00606A000000)
|
||||
export TCB_ISSUER_CERT=$(echo "$HEADERS" |
|
||||
grep 'TCB-Info-Issuer-Chain:' |
|
||||
sed 's/.*TCB-Info-Issuer-Chain: //' |
|
||||
sed 's/%0A/\n/g' |
|
||||
sed 's/%20/ /g' |
|
||||
sed 's/-----BEGIN%20CERTIFICATE-----/-----BEGIN CERTIFICATE-----/' |
|
||||
sed 's/-----END%20CERTIFICATE-----/-----END CERTIFICATE-----/' |
|
||||
perl -MURI::Escape -ne 'print uri_unescape($_)' |
|
||||
awk '/-----BEGIN CERTIFICATE-----/{flag=1; print; next} /-----END CERTIFICATE-----/{print; flag=0; exit} flag')
|
||||
|
||||
TCB_ISSUER_CERT=$(echo "$TCB_ISSUER_CERT" | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
echo "TCB_INFO:"
|
||||
echo "$TCB_INFO"
|
||||
echo
|
||||
echo "TCB_ISSUER_CERT:"
|
||||
echo "$TCB_ISSUER_CERT"
|
||||
```
|
||||
|
||||
4. Add the Tcbinfo for the given FMSPC to the contract (and test it with a query)
|
||||
```bash
|
||||
wasmd tx wasm execute "$TCB_CONTRACT" "{\"tcb_info\": $(echo "$TCB_INFO" | jq -Rs .), \"certificate\": \"$TCB_ISSUER_CERT\"}" --from admin --chain-id testing --gas auto --gas-adjustment 1.2 -y
|
||||
wasmd query wasm contract-state smart "$TCB_CONTRACT" '{"get_tcb_info": {"fmspc": "00606A000000"}}'
|
||||
```
|
||||
|
||||
### Deploying the `quartz-dcap-verifier` contract
|
||||
|
||||
1. Build the contract
|
||||
```bash
|
||||
cargo run -- contract build --contract-manifest "../cosmwasm/packages/quartz-dcap-verifier/Cargo.toml"
|
||||
```
|
||||
|
||||
2. Optimize the contract
|
||||
In order to optimize the contract, you need to install `wasm-opt` v.119. See the HOWTO section below for installation instructions.
|
||||
```bash
|
||||
wasm-opt -Oz ./target/wasm32-unknown-unknown/release/quartz_dcap_verifier.wasm -o ./target/wasm32-unknown-unknown/release/quartz_dcap_verifier.optimized.wasm
|
||||
```
|
||||
|
||||
3. Store the optimized contract on-chain
|
||||
```bash
|
||||
RES=$(wasmd tx wasm store ./target/wasm32-unknown-unknown/release/quartz_dcap_verifier.optimized.wasm --from admin -y --output json --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3)
|
||||
TX_HASH=$(echo $RES | jq -r '.["txhash"]')
|
||||
RES=$(wasmd query tx "$TX_HASH" --output json)
|
||||
CODE_ID=$(echo $RES | jq -r '.logs[0].events[1].attributes[1].value')
|
||||
```
|
||||
|
||||
4. Instantiate the `quartz-dcap-verifier` contract.
|
||||
```bash
|
||||
wasmd tx wasm instantiate "$CODE_ID" null --from "admin" --label "dcap-verifier" --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3 -y --no-admin --output json
|
||||
DCAP_CONTRACT=$(wasmd query wasm list-contract-by-code "$CODE_ID" --output json | jq -r '.contracts[0]')
|
||||
```
|
||||
|
||||
### Quartz setup
|
||||
```bash
|
||||
quartz --app-dir "../examples/transfers/" \
|
||||
--contract-manifest "../examples/transfers/contracts/Cargo.toml" \
|
||||
--unsafe-trust-latest \
|
||||
--init-msg '{"denom":"ucosm"}' \
|
||||
dev \
|
||||
--fmspc "00606A000000" \
|
||||
--tcbinfo-contract "$TCB_CONTRACT" \
|
||||
--dcap-verifier-contract "$DCAP_CONTRACT"
|
||||
```
|
||||
|
||||
#### HOWTO Install `wasm-opt`
|
||||
|
||||
To install `wasm-opt` version 119 on an Azure SGX machine running Ubuntu, follow these steps:
|
||||
|
||||
1. **Update and install dependencies:**
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential cmake git
|
||||
```
|
||||
|
||||
2. **Download and build `wasm-opt` version 119:**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/WebAssembly/binaryen.git
|
||||
cd binaryen
|
||||
git checkout version_119
|
||||
```
|
||||
|
||||
3. **Build the project:**
|
||||
|
||||
```bash
|
||||
cmake . && make
|
||||
```
|
||||
|
||||
4. **Install `wasm-opt`:**
|
||||
|
||||
```bash
|
||||
sudo make install
|
||||
```
|
||||
|
||||
5. **Verify the installation:**
|
||||
|
||||
```bash
|
||||
wasm-opt --version
|
||||
```
|
||||
|
||||
This should return something like:
|
||||
|
||||
```
|
||||
wasm-opt version_119
|
||||
```
|
||||
`quartz-dcap-verifier` contract. However we recommend using the deployed contracts on neutrons public testnet for v0.1.
|
||||
|
||||
Instructions can be followed in [this guide](./tcbinfo_and_verifier.md).
|
||||
|
||||
## Troubleshooting and FAQ
|
||||
|
||||
|
@ -548,6 +436,9 @@ wasm-opt version_119
|
|||
3. **Q: The frontend isn't connecting to the blockchain. What's wrong?**
|
||||
A: Verify that your `.env.local` file has the correct contract address and public key.
|
||||
|
||||
4. **Error in event handler: Unsupported event**
|
||||
This error is fine when it appears in the enclave logs, we are working to remove this erroneous message.
|
||||
|
||||
For more issues, please refer to our GitHub issues page or community forums.
|
||||
|
||||
## Glossary
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# CosmWasm Binaries: Install and Configure
|
||||
# CosmWasm Binaries: Manual Install and Configure
|
||||
|
||||
> Note - We highly recommend setting up `neutrond` with the docker image provided. However, we have provided these detailed instructions in case you wanted to take a deeper look.
|
||||
|
||||
Quartz expects to interact with a CosmWasm-based blockchain.
|
||||
The default/archetypal binary is `wasmd`. We also use `neutrond` for the
|
||||
testnet.
|
||||
The default/archetypal binary is `neutrond`. We have included instructions for `wasmd`, but it is not supported in the cli today.
|
||||
|
||||
Here we describe how to get setup from scratch or how to use an existing wasmd
|
||||
Here we describe how to get setup from scratch or how to use an existing `neutrond`
|
||||
binary/network you have access to.
|
||||
|
||||
- [Install](#install)
|
||||
|
@ -15,16 +16,7 @@ binary/network you have access to.
|
|||
|
||||
To build from source, first make sure you have Go installed.
|
||||
|
||||
Then for `wasmd`:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/cosmwasm/wasmd/
|
||||
cd wasmd
|
||||
git checkout v0.45.0
|
||||
go install ./cmd/wasmd
|
||||
```
|
||||
|
||||
Or for `neutrond`:
|
||||
For `neutrond`:
|
||||
|
||||
```bash
|
||||
git clone -b main https://github.com/neutron-org/neutron.git
|
||||
|
@ -33,49 +25,58 @@ git checkout v4.0.0
|
|||
make install
|
||||
```
|
||||
|
||||
For `wasmd` (NOTE - NOT SUPPORTED BY CLI):
|
||||
|
||||
```bash
|
||||
git clone https://github.com/cosmwasm/wasmd/
|
||||
cd wasmd
|
||||
git checkout v0.45.0
|
||||
go install ./cmd/wasmd
|
||||
```
|
||||
|
||||
## Configure From Scratch
|
||||
|
||||
We have to initialize a new chain and load it with some accounts.
|
||||
|
||||
We'll assume you're using `wasmd` but it could be `neutrond` or any other.
|
||||
We'll assume you're using `neutrond` but it could be `wasmd` or any other.
|
||||
|
||||
We also have to give the chain a chain ID. We'll use `testing`.
|
||||
|
||||
Run
|
||||
|
||||
```bash
|
||||
wasmd init <your name> --chain-id testing
|
||||
neutrond init <your name> --chain-id testing
|
||||
```
|
||||
|
||||
to initialize the local wasmd folder.
|
||||
to initialize the local neutrond folder.
|
||||
|
||||
Now open the file `~/.wasmd/config/client.toml` and change the field
|
||||
Now open the file `~/.neutrond/config/client.toml` and change the field
|
||||
`keyring-backend` from `os` to `test`:
|
||||
|
||||
```toml keyring-backend = "test" ```
|
||||
|
||||
Now, finally, we can create a local admin key for your wasmd. You'll use this to
|
||||
Now, finally, we can create a local admin key for your neutrond. You'll use this to
|
||||
deploy contracts:
|
||||
|
||||
```bash
|
||||
wasmd keys add admin
|
||||
neutrond keys add admin
|
||||
```
|
||||
|
||||
This should output a wasm address.
|
||||
This should output a neutron address.
|
||||
|
||||
Now create the genesis file.
|
||||
|
||||
```bash
|
||||
# generate a second key for the validator
|
||||
wasmd keys add validator
|
||||
neutrond keys add validator
|
||||
|
||||
# fund both accounts in genesis
|
||||
wasmd genesis add-genesis-account admin 100000000000stake,100000000000ucosm
|
||||
wasmd genesis add-genesis-account validator 100000000000stake,100000000000ucosm
|
||||
neutrond genesis add-genesis-account admin 100000000000stake,100000000000ucosm
|
||||
neutrond genesis add-genesis-account validator 100000000000stake,100000000000ucosm
|
||||
|
||||
# sign genesis tx from validator and compose genesis
|
||||
wasmd genesis gentx validator 100000000stake --chain-id testing
|
||||
wasmd genesis collect-gentxs
|
||||
neutrond genesis gentx validator 100000000stake --chain-id testing
|
||||
neutrond genesis collect-gentxs
|
||||
```
|
||||
|
||||
Before finally starting the node, for it to work with the front end, you need to
|
||||
|
@ -83,7 +84,7 @@ configure CORS.
|
|||
|
||||
### Configure CORS
|
||||
|
||||
In `~/.wasmd/config/config.toml`, you'll need to make sure the listen address
|
||||
In `~/.neutrond/config/config.toml`, you'll need to make sure the listen address
|
||||
binds to the public IP (0.0.0.0) and the CORS allows all origins:
|
||||
|
||||
```toml
|
||||
|
@ -92,7 +93,7 @@ laddr = "tcp://0.0.0.0:26657"
|
|||
cors_allowed_origins = ["*"]
|
||||
```
|
||||
|
||||
And in `~/.wasmd/config/app.toml`:
|
||||
And in `~/.neutrond/config/app.toml`:
|
||||
|
||||
```toml
|
||||
[api]
|
||||
|
@ -103,16 +104,16 @@ enabled-unsafe-cors = true
|
|||
|
||||
Now, finally:
|
||||
|
||||
## wasmd start
|
||||
## neutrond start
|
||||
|
||||
```bash
|
||||
wasmd start
|
||||
neutrond start
|
||||
```
|
||||
|
||||
And you should have a chain making blocks!
|
||||
|
||||
You can also reduce the block time by lowering `timeout_commit` in
|
||||
`~/.wasmd/config/config.toml`.
|
||||
`~/.neutrond/config/config.toml`.
|
||||
|
||||
Now that you have the chain running, you can start running the enclave and proxy
|
||||
in other windows.
|
||||
|
@ -129,7 +130,7 @@ You'll also need to setup an account and get it funded.
|
|||
Assuming you're using the Neutron testnet, create a new account called `admin`:
|
||||
|
||||
```bash
|
||||
neutron keys add admin
|
||||
neutrond keys add admin
|
||||
```
|
||||
|
||||
Now use a faucet or send this address to someone who can give you funds on the tesnet.
|
138
docs/tcbinfo_and_verifier.md
Normal file
138
docs/tcbinfo_and_verifier.md
Normal file
|
@ -0,0 +1,138 @@
|
|||
# Deploying tcbinfo and dcap verifier on a chain
|
||||
We have deployed the `dcap-verifier-contract` and `tcbinfo-contract` on neutrons public testnet. If you need to setup your own testnet, or use another testnet, you can use this guide. However in v0.1, we recommend sticking to the contracts we deployed. Remember to set the `QUARTZ_NODE_URL` env var to your testnet.
|
||||
|
||||
## Get the FMSPC of the host machine
|
||||
|
||||
```bash
|
||||
export QUOTE="/* quote generated during the handshake should work */"
|
||||
cd crates/utils/print-fmspc/
|
||||
cargo run > /dev/null
|
||||
```
|
||||
|
||||
## Deploying the `quartz-tcbinfo` contract
|
||||
|
||||
1. Build and store the contract on-chain
|
||||
```bash
|
||||
cargo run -- contract build --contract-manifest "../cosmwasm/packages/tcbinfo/Cargo.toml"
|
||||
RES=$(wasmd tx wasm store ./target/wasm32-unknown-unknown/release/tcbinfo.wasm --from alice -y --output json --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3)
|
||||
TX_HASH=$(echo $RES | jq -r '.["txhash"]')
|
||||
```
|
||||
|
||||
2. Instantiate the contract using Intel's root CA cert.
|
||||
```bash
|
||||
CERT=$(sed ':a;N;$!ba;s/\n/\\n/g' ../cosmwasm/packages/quartz-tee-ra/data/root_ca.pem)
|
||||
RES=$(wasmd query tx "$TX_HASH" --output json)
|
||||
CODE_ID=$(echo $RES | jq -r '.logs[0].events[1].attributes[1].value')
|
||||
wasmd tx wasm instantiate "$CODE_ID" "{\"root_cert\": \"$CERT\"}" --from "alice" --label "tcbinfo" --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3 -y --no-admin --output json
|
||||
TCB_CONTRACT=$(wasmd query wasm list-contract-by-code "$CODE_ID" --output json | jq -r '.contracts[0]')
|
||||
```
|
||||
|
||||
3. Get the Tcbinfo for the given FMSPC.
|
||||
```bash
|
||||
HEADERS=$(wget -q -S -O - https://api.trustedservices.intel.com/sgx/certification/v4/tcb?fmspc=00606A000000 2>&1 >/dev/null)
|
||||
TCB_INFO=$(wget -q -O - https://api.trustedservices.intel.com/sgx/certification/v4/tcb?fmspc=00606A000000)
|
||||
export TCB_ISSUER_CERT=$(echo "$HEADERS" |
|
||||
grep 'TCB-Info-Issuer-Chain:' |
|
||||
sed 's/.*TCB-Info-Issuer-Chain: //' |
|
||||
sed 's/%0A/\n/g' |
|
||||
sed 's/%20/ /g' |
|
||||
sed 's/-----BEGIN%20CERTIFICATE-----/-----BEGIN CERTIFICATE-----/' |
|
||||
sed 's/-----END%20CERTIFICATE-----/-----END CERTIFICATE-----/' |
|
||||
perl -MURI::Escape -ne 'print uri_unescape($_)' |
|
||||
awk '/-----BEGIN CERTIFICATE-----/{flag=1; print; next} /-----END CERTIFICATE-----/{print; flag=0; exit} flag')
|
||||
|
||||
TCB_ISSUER_CERT=$(echo "$TCB_ISSUER_CERT" | sed ':a;N;$!ba;s/\n/\\n/g')
|
||||
echo "TCB_INFO:"
|
||||
echo "$TCB_INFO"
|
||||
echo
|
||||
echo "TCB_ISSUER_CERT:"
|
||||
echo "$TCB_ISSUER_CERT"
|
||||
```
|
||||
|
||||
4. Add the Tcbinfo for the given FMSPC to the contract (and test it with a query)
|
||||
```bash
|
||||
wasmd tx wasm execute "$TCB_CONTRACT" "{\"tcb_info\": $(echo "$TCB_INFO" | jq -Rs .), \"certificate\": \"$TCB_ISSUER_CERT\"}" --from admin --chain-id testing --gas auto --gas-adjustment 1.2 -y
|
||||
wasmd query wasm contract-state smart "$TCB_CONTRACT" '{"get_tcb_info": {"fmspc": "00606A000000"}}'
|
||||
```
|
||||
|
||||
## Deploying the `quartz-dcap-verifier` contract
|
||||
|
||||
1. Build the contract
|
||||
```bash
|
||||
cargo run -- contract build --contract-manifest "../cosmwasm/packages/quartz-dcap-verifier/Cargo.toml"
|
||||
```
|
||||
|
||||
2. Optimize the contract
|
||||
In order to optimize the contract, you need to install `wasm-opt` v.119. See the HOWTO section below for installation instructions.
|
||||
```bash
|
||||
wasm-opt -Oz ./target/wasm32-unknown-unknown/release/quartz_dcap_verifier.wasm -o ./target/wasm32-unknown-unknown/release/quartz_dcap_verifier.optimized.wasm
|
||||
```
|
||||
|
||||
3. Store the optimized contract on-chain
|
||||
```bash
|
||||
RES=$(wasmd tx wasm store ./target/wasm32-unknown-unknown/release/quartz_dcap_verifier.optimized.wasm --from admin -y --output json --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3)
|
||||
TX_HASH=$(echo $RES | jq -r '.["txhash"]')
|
||||
RES=$(wasmd query tx "$TX_HASH" --output json)
|
||||
CODE_ID=$(echo $RES | jq -r '.logs[0].events[1].attributes[1].value')
|
||||
```
|
||||
|
||||
4. Instantiate the `quartz-dcap-verifier` contract.
|
||||
```bash
|
||||
wasmd tx wasm instantiate "$CODE_ID" null --from "admin" --label "dcap-verifier" --chain-id "testing" --gas-prices 0.0025ucosm --gas auto --gas-adjustment 1.3 -y --no-admin --output json
|
||||
DCAP_CONTRACT=$(wasmd query wasm list-contract-by-code "$CODE_ID" --output json | jq -r '.contracts[0]')
|
||||
```
|
||||
|
||||
## Quartz setup
|
||||
```bash
|
||||
quartz --app-dir "../examples/transfers/" \
|
||||
--contract-manifest "../examples/transfers/contracts/Cargo.toml" \
|
||||
--unsafe-trust-latest \
|
||||
--init-msg '{"denom":"ucosm"}' \
|
||||
dev \
|
||||
--fmspc "00606A000000" \
|
||||
--tcbinfo-contract "$TCB_CONTRACT" \
|
||||
--dcap-verifier-contract "$DCAP_CONTRACT"
|
||||
```
|
||||
|
||||
### How To Install `wasm-opt`
|
||||
|
||||
To install `wasm-opt` version 119 on an Azure SGX machine running Ubuntu, follow these steps:
|
||||
|
||||
1. **Update and install dependencies:**
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential cmake git
|
||||
```
|
||||
|
||||
2. **Download and build `wasm-opt` version 119:**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/WebAssembly/binaryen.git
|
||||
cd binaryen
|
||||
git checkout version_119
|
||||
```
|
||||
|
||||
3. **Build the project:**
|
||||
|
||||
```bash
|
||||
cmake . && make
|
||||
```
|
||||
|
||||
4. **Install `wasm-opt`:**
|
||||
|
||||
```bash
|
||||
sudo make install
|
||||
```
|
||||
|
||||
5. **Verify the installation:**
|
||||
|
||||
```bash
|
||||
wasm-opt --version
|
||||
```
|
||||
|
||||
This should return something like:
|
||||
|
||||
```
|
||||
wasm-opt version_119
|
||||
```
|
|
@ -41,7 +41,7 @@ fs.mounts = [
|
|||
{ uri = "file:/usr/{{ arch_libdir }}", path = "/usr{{ arch_libdir }}" },
|
||||
{ uri = "file:{{ quartz_dir }}", path = "{{ quartz_dir }}" },
|
||||
{ uri = "file:/etc/ssl/certs/ca-certificates.crt", path = "/etc/ssl/certs/ca-certificates.crt" },
|
||||
{ uri = "file:/usr/lib/ssl/cert.pem", path = "/usr/lib/ssl/cert.pem" },
|
||||
{ uri = "file:/usr/lib/ssl/certs/ca-certificates.crt", path = "/usr/lib/ssl/certs/ca-certificates.crt" },
|
||||
]
|
||||
|
||||
# sgx.debug = true
|
||||
|
@ -70,7 +70,7 @@ sgx.allowed_files = [
|
|||
"file:/etc/passwd",
|
||||
"file:/etc/gai.conf",
|
||||
"file:/etc/ssl/certs/ca-certificates.crt",
|
||||
"file:/usr/lib/ssl/cert.pem",
|
||||
"file:/usr/lib/ssl/certs/ca-certificates.crt",
|
||||
"file:/etc/sgx_default_qcnl.conf",
|
||||
]
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ grpc_url = "https://grpc-falcron.pion-1.ntrn.tech:80"
|
|||
# ws_url = "wss://neutron-testnet-rpc.polkachu.com/websocket"
|
||||
# grpc_url = "https://grpc.baryon.remedy.tm.p2p.org:443"
|
||||
enclave_rpc_addr = "https://127.0.0.1"
|
||||
enclave_rpc_port = 11091
|
||||
enclave_rpc_port = 11090
|
||||
trusted_hash = ""
|
||||
trusted_height = 0
|
||||
release = true
|
||||
|
|
|
@ -8,4 +8,4 @@ enclave_rpc_addr = "http://127.0.0.1"
|
|||
enclave_rpc_port = 11090
|
||||
trusted_hash = ""
|
||||
trusted_height = 0
|
||||
release = true
|
||||
release = true
|
81
examples/transfers/sgx_default_qcnl.conf
Normal file
81
examples/transfers/sgx_default_qcnl.conf
Normal file
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
// *** ATTENTION : This file is in JSON format so the keys are case sensitive. Dont change them.
|
||||
|
||||
//PCCS server address
|
||||
"pccs_url": "https://global.acccache.azure.net/sgx/certification/v4/"
|
||||
|
||||
// To accept insecure HTTPS certificate, set this option to false
|
||||
,"use_secure_cert": false
|
||||
|
||||
// You can use the Intel PCS or another PCCS to get quote verification collateral. Retrieval of PCK
|
||||
// Certificates will always use the PCCS described in pccs_url. When collateral_service is not defined, both
|
||||
// PCK Certs and verification collateral will be retrieved using pccs_url
|
||||
//,"collateral_service": "https://api.trustedservices.intel.com/sgx/certification/v4/"
|
||||
,"collateral_service": "https://global.acccache.azure.net/sgx/certification/v4/"
|
||||
|
||||
// Type of update to TCB Info. Possible value: early, standard. Default is standard.
|
||||
// early indicates an early access to updated TCB Info provided as part of a TCB recovery event
|
||||
// (commonly the day of public disclosure of the items in scope)
|
||||
// standard indicates standard access to updated TCB Info provided as part of a TCB recovery event
|
||||
// (commonly approximately 6 weeks after public disclosure of the items in scope)
|
||||
//, "tcb_update_type" : "standard"
|
||||
|
||||
// If you use a PCCS service to get the quote verification collateral, you can specify which PCCS API version is to be used.
|
||||
// The legacy 3.0 API will return CRLs in HEX encoded DER format and the sgx_ql_qve_collateral_t.version will be set to 3.0, while
|
||||
// the new 3.1 API will return raw DER format and the sgx_ql_qve_collateral_t.version will be set to 3.1. The pccs_api_version
|
||||
// setting is ignored if collateral_service is set to the Intel PCS. In this case, the pccs_api_version is forced to be 3.1
|
||||
// internally. Currently, only values of 3.0 and 3.1 are valid. Note, if you set this to 3.1, the PCCS use to retrieve
|
||||
// verification collateral must support the new 3.1 APIs.
|
||||
//,"pccs_api_version": "3.1"
|
||||
|
||||
// Maximum retry times for QCNL. If RETRY is not defined or set to 0, no retry will be performed.
|
||||
// It will first wait one second and then for all forthcoming retries it will double the waiting time.
|
||||
// By using retry_delay you disable this exponential backoff algorithm
|
||||
,"retry_times": 6
|
||||
|
||||
// Sleep this amount of seconds before each retry when a transfer has failed with a transient error
|
||||
,"retry_delay": 10
|
||||
|
||||
// If local_pck_url is defined, the QCNL will try to retrieve PCK cert chain from local_pck_url first,
|
||||
// and failover to pccs_url as in legacy mode.
|
||||
//,"local_pck_url": "http://localhost:8081/sgx/certification/v4/"
|
||||
|
||||
// If local_pck_url is not defined, set pck_cache_expire_hours to a none-zero value will enable local cache.
|
||||
// The PCK certificates will be cached in memory and then to the disk drive.
|
||||
// The local cache files will be sequentially searched in the following directories until located in one of them:
|
||||
// Linux : $AZDCAP_CACHE, $XDG_CACHE_HOME, $HOME, $TMPDIR, /tmp/
|
||||
// Windows : $AZDCAP_CACHE, $LOCALAPPDATA\..\..\LocalLow
|
||||
// Please be aware that the environment variable pertains to the account executing the process that loads QPL,
|
||||
// not the account used to log in. For instance, if QPL is loaded by QGS, then those environment variables relate to
|
||||
// the "qgsd" account, which is the account that runs the QGS daemon.
|
||||
// You can remove the local cache files either manually or by using the QPL API, sgx_qpl_clear_cache. If you opt to
|
||||
// delete them manually, navigate to the aforementioned caching directories, find the folder named .dcap-qcnl, and delete it.
|
||||
// Restart the service after all cache folders were deleted. The same method applies to "verify_collateral_cache_expire_hours"
|
||||
,"pck_cache_expire_hours": 168
|
||||
|
||||
// To set cache expire time for quote verification collateral in hours
|
||||
// See the above comment for pck_cache_expire_hours for more information on the local cache.
|
||||
,"verify_collateral_cache_expire_hours": 168
|
||||
|
||||
// When the "local_cache_only" parameter is set to true, the QPL/QCNL will exclusively use PCK certificates
|
||||
// from local cache files and will not request any PCK certificates from service providers, whether local or remote.
|
||||
// To ensure that the PCK cache is available for use, an administrator must pre-populate the cache folders with
|
||||
// the appropriate cache files. To generate these cache files for specific platforms, the administrator can use
|
||||
// the PCCS admin tool. Once the cache files are generated, the administrator must distribute them to each platform
|
||||
// that requires provisioning.
|
||||
,"local_cache_only": false
|
||||
|
||||
// You can add custom request headers and parameters to the get certificate API.
|
||||
// But the default PCCS implementation just ignores them.
|
||||
//,"custom_request_options" : {
|
||||
// "get_cert" : {
|
||||
// "headers": {
|
||||
// "head1": "value1"
|
||||
// },
|
||||
// "params": {
|
||||
// "param1": "value1",
|
||||
// "param2": "value2"
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
Loading…
Reference in a new issue