From f1e3d1c174e20a79d50371518c04ad45040c0abd Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Tue, 14 Jan 2025 20:47:10 +0000 Subject: [PATCH 1/9] rm placeholder file --- tee-worker/identity/bin/README.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 tee-worker/identity/bin/README.md diff --git a/tee-worker/identity/bin/README.md b/tee-worker/identity/bin/README.md deleted file mode 100644 index 9cf10b5eb8..0000000000 --- a/tee-worker/identity/bin/README.md +++ /dev/null @@ -1 +0,0 @@ -Output directory for the binaries \ No newline at end of file From d981465625eb7ad4a19592966cb4b3db7a7631b7 Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Tue, 14 Jan 2025 20:48:37 +0000 Subject: [PATCH 2/9] keep bin empty folder and igore all rest --- tee-worker/identity/.gitignore | 11 +---------- tee-worker/identity/bin/.gitkeep | 0 2 files changed, 1 insertion(+), 10 deletions(-) create mode 100644 tee-worker/identity/bin/.gitkeep diff --git a/tee-worker/identity/.gitignore b/tee-worker/identity/.gitignore index fc5f386fbf..c816f6100f 100644 --- a/tee-worker/identity/.gitignore +++ b/tee-worker/identity/.gitignore @@ -13,16 +13,7 @@ log* **/*.rs.bk # binaries -bin/*.so -bin/litentry-* -bin/*.wasm - -# sealed data -bin/*.bin - -# public RSA key -bin/rsa_pubkey.txt -bin/ecc_pubkey.txt +bin/* # VS Code settings .vscode diff --git a/tee-worker/identity/bin/.gitkeep b/tee-worker/identity/bin/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 From ae709795ac094673bcd08b85aa39690cfc7c9e13 Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Tue, 14 Jan 2025 20:50:42 +0000 Subject: [PATCH 3/9] SubstrateKeyStore will provide signer "Alice" in development mode, and random generated signer in non-development mode. --- Makefile | 3 + tee-worker/omni-executor/.taplo.toml | 15 + tee-worker/omni-executor/Cargo.lock | 602 +++++++++++++++++- tee-worker/omni-executor/Cargo.toml | 13 +- tee-worker/omni-executor/Makefile | 7 +- .../parentchain/listener/Cargo.toml | 3 + .../parentchain/listener/src/key_store.rs | 44 +- 7 files changed, 657 insertions(+), 30 deletions(-) create mode 100644 tee-worker/omni-executor/.taplo.toml diff --git a/Makefile b/Makefile index bdee2d8e2d..2f47d04293 100644 --- a/Makefile +++ b/Makefile @@ -104,12 +104,15 @@ fmt: fmt-cargo fmt-taplo fmt-ts fmt-cargo: @cd parachain && cargo fmt --all @cd tee-worker && cargo fmt --all + @cd tee-worker/identity && cargo fmt --all @cd tee-worker/identity/enclave-runtime && cargo fmt --all + @cd tee-worker/omni-executor && cargo fmt --all .PHONY: fmt-taplo ## taplo fmt fmt-taplo: @cd parachain && RUST_LOG=error taplo fmt @cd tee-worker && RUST_LOG=error taplo fmt + @cd tee-worker/omni-executor && RUST_LOG=error taplo fmt .PHONY: fmt-ts ## ts fmt fmt-ts: diff --git a/tee-worker/omni-executor/.taplo.toml b/tee-worker/omni-executor/.taplo.toml new file mode 100644 index 0000000000..2ebc553ae1 --- /dev/null +++ b/tee-worker/omni-executor/.taplo.toml @@ -0,0 +1,15 @@ +include = ["Cargo.toml", "**/Cargo.toml"] + +[formatting] +array_auto_expand = false +array_auto_collapse = false +indent_string = " " +inline_table_expand = false + +[[rule]] +include = ["Cargo.toml", "**/Cargo.toml"] +keys = ["dependencies", "target", "patch", "workspace", "workspace.dependencies", "workspace.package", "features"] + +[rule.formatting] +reorder_keys = true +array_auto_expand = true \ No newline at end of file diff --git a/tee-worker/omni-executor/Cargo.lock b/tee-worker/omni-executor/Cargo.lock index cc076f02a6..48fb9355a3 100644 --- a/tee-worker/omni-executor/Cargo.lock +++ b/tee-worker/omni-executor/Cargo.lock @@ -666,6 +666,29 @@ version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +[[package]] +name = "ark-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[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 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + [[package]] name = "ark-bn254" version = "0.4.0" @@ -843,6 +866,12 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "array-bytes" +version = "6.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" + [[package]] name = "arrayref" version = "0.3.9" @@ -1442,6 +1471,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bounded-collections" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" +dependencies = [ + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + [[package]] name = "brotli" version = "7.0.0" @@ -1804,6 +1845,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "constcat" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" + [[package]] name = "convert_case" version = "0.4.0" @@ -2257,6 +2304,33 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clonable" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" +dependencies = [ + "dyn-clonable-impl", + "dyn-clone", +] + +[[package]] +name = "dyn-clonable-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + [[package]] name = "eager" version = "0.1.0" @@ -2273,6 +2347,7 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature 2.2.0", "spki", ] @@ -2292,6 +2367,7 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ + "pkcs8", "signature 2.2.0", ] @@ -2357,6 +2433,7 @@ dependencies = [ "pkcs8", "rand_core 0.6.4", "sec1", + "serdect", "subtle", "zeroize", ] @@ -2419,6 +2496,12 @@ dependencies = [ "log", ] +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + [[package]] name = "equivalent" version = "1.0.1" @@ -2500,6 +2583,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "expander" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2" +dependencies = [ + "blake2", + "file-guard", + "fs-err", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "fastrand" version = "2.1.1" @@ -2539,6 +2637,16 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "file-guard" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "five8_const" version = "0.1.3" @@ -2632,6 +2740,15 @@ dependencies = [ "serde", ] +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + [[package]] name = "funty" version = "2.0.0" @@ -2678,6 +2795,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -2872,6 +2990,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash-db" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + [[package]] name = "hash32" version = "0.2.1" @@ -3214,6 +3347,17 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-num-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d15461ab0dcc56706adf266158acbc44ccf719bf7d0af30705f58b90a4b8c" +dependencies = [ + "integer-sqrt", + "num-traits", + "uint 0.10.0", +] + [[package]] name = "impl-serde" version = "0.5.0" @@ -3273,6 +3417,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + [[package]] name = "ipnet" version = "2.10.0" @@ -3294,6 +3447,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -3461,6 +3623,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2 0.10.8", ] @@ -3656,6 +3819,10 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litentry-macros" +version = "0.1.0" + [[package]] name = "lock_api" version = "0.4.12" @@ -3691,6 +3858,15 @@ dependencies = [ "libc", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "memchr" version = "2.7.4" @@ -3833,6 +4009,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num" version = "0.2.1" @@ -3895,6 +4081,16 @@ dependencies = [ "syn 2.0.89", ] +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec 0.7.6", + "itoa", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -4072,6 +4268,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parentchain-api-interface" version = "0.1.0" @@ -4087,11 +4289,13 @@ dependencies = [ "env_logger", "executor-core", "hex", + "litentry-macros", "log", "parentchain-api-interface", "parentchain-storage", "parity-scale-codec", "scale-encode 0.7.1", + "sp-core", "subxt", "subxt-core", "subxt-signer", @@ -4111,6 +4315,19 @@ dependencies = [ "subxt-core", ] +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes 0.13.0", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "unicode-normalization", +] + [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -4120,6 +4337,7 @@ dependencies = [ "arrayvec 0.7.6", "bitvec", "byte-slice-cast", + "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", @@ -4306,6 +4524,43 @@ dependencies = [ "sp-crypto-hashing", ] +[[package]] +name = "polkavm-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" + +[[package]] +name = "polkavm-derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +dependencies = [ + "polkavm-common", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +dependencies = [ + "polkavm-derive-impl", + "syn 2.0.89", +] + [[package]] name = "polling" version = "3.7.3" @@ -4365,6 +4620,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.89", +] + [[package]] name = "primitive-types" version = "0.12.2" @@ -4384,6 +4649,7 @@ checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" dependencies = [ "fixed-hash", "impl-codec 0.7.0", + "impl-num-traits", "impl-serde", "scale-info", "uint 0.10.0", @@ -4462,7 +4728,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -4685,6 +4951,26 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "regex" version = "1.11.1" @@ -4693,8 +4979,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -4705,9 +5000,15 @@ checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -5375,10 +5676,20 @@ dependencies = [ "der", "generic-array", "pkcs8", + "serdect", "subtle", "zeroize", ] +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys 0.9.2", +] + [[package]] name = "secp256k1" version = "0.30.0" @@ -5387,7 +5698,16 @@ checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes 0.14.0", "rand 0.8.5", - "secp256k1-sys", + "secp256k1-sys 0.10.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", ] [[package]] @@ -5399,6 +5719,15 @@ dependencies = [ "cc", ] +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + [[package]] name = "secrecy" version = "0.10.3" @@ -5532,6 +5861,16 @@ dependencies = [ "syn 2.0.89", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -5587,6 +5926,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -7051,6 +7399,53 @@ dependencies = [ "winapi", ] +[[package]] +name = "sp-core" +version = "35.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4532774405a712a366a98080cbb4daa28c38ddff0ec595902ad6ee6a78a809f8" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde", + "itertools 0.11.0", + "k256", + "libsecp256k1 0.7.1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.13.1", + "rand 0.8.5", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", + "ss58-registry", + "substrate-bip39", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -7065,6 +7460,105 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "sp-externalities" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cbf059dce180a8bf8b6c8b08b6290fa3d1c7f069a60f1df038ab5dd5fc0ba6" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage", +] + +[[package]] +name = "sp-runtime-interface" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51e83d940449837a8b2a01b4d877dd22d896fd14d3d3ade875787982da994a33" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive", + "primitive-types 0.13.1", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" + +[[package]] +name = "sp-storage" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee3b70ca340e41cde9d2e069d354508a6e37a6573d66f7cc38f11549002f64ec" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-tracing" +version = "17.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf641a1d17268c8fcfdb8e0fa51a79c2d4222f4cfda5f3944dbdbc384dced8d5" +dependencies = [ + "parity-scale-codec", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sp-wasm-interface" +version = "21.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", +] + [[package]] name = "spin" version = "0.9.8" @@ -7282,6 +7776,21 @@ dependencies = [ "spl-program-error", ] +[[package]] +name = "ss58-registry" +version = "1.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +dependencies = [ + "Inflector", + "num-format", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -7332,6 +7841,19 @@ dependencies = [ "syn 2.0.89", ] +[[package]] +name = "substrate-bip39" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" +dependencies = [ + "hmac 0.12.1", + "pbkdf2 0.12.2", + "schnorrkel", + "sha2 0.10.8", + "zeroize", +] + [[package]] name = "subtle" version = "2.6.1" @@ -7486,8 +8008,8 @@ dependencies = [ "regex", "schnorrkel", "scrypt", - "secp256k1", - "secrecy", + "secp256k1 0.30.0", + "secrecy 0.10.3", "serde", "serde_json", "sha2 0.10.8", @@ -7656,6 +8178,16 @@ dependencies = [ "syn 2.0.89", ] +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + [[package]] name = "threadpool" version = "1.8.1" @@ -7914,6 +8446,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -7951,6 +8514,7 @@ checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", "digest 0.10.7", + "rand 0.8.5", "static_assertions", ] @@ -8123,6 +8687,30 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +[[package]] +name = "w3f-bls" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" +dependencies = [ + "ark-bls12-377", + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-serialize-derive", + "arrayref", + "constcat", + "digest 0.10.7", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "sha2 0.10.8", + "sha3", + "thiserror 1.0.69", + "zeroize", +] + [[package]] name = "wait-timeout" version = "0.2.0" diff --git a/tee-worker/omni-executor/Cargo.toml b/tee-worker/omni-executor/Cargo.toml index 41d4ceb46e..5605973a5f 100644 --- a/tee-worker/omni-executor/Cargo.toml +++ b/tee-worker/omni-executor/Cargo.toml @@ -15,19 +15,20 @@ resolver = "2" edition = "2021" [workspace.dependencies] -log = "0.4.22" -tokio = "1.40.0" +alloy = "0.3.6" async-trait = "0.1.82" +clap = "4.5.17" env_logger = "0.11.5" -scale-encode = "0.7.1" +log = "0.4.22" parity-scale-codec = "3.6.12" -alloy = "0.3.6" -clap = "4.5.17" -solana-sdk = "2.1.5" +scale-encode = "0.7.1" solana-client = "2.1.5" +solana-sdk = "2.1.5" +sp-core = "35.0.0" subxt = "0.38.0" subxt-core = "0.38.0" subxt-signer = { version = "0.38.0", features = ["subxt"] } +tokio = "1.40.0" [workspace.lints.clippy] result_unit_err = "allow" diff --git a/tee-worker/omni-executor/Makefile b/tee-worker/omni-executor/Makefile index 4a6209bbb7..5f53e9fb8d 100644 --- a/tee-worker/omni-executor/Makefile +++ b/tee-worker/omni-executor/Makefile @@ -3,17 +3,22 @@ ARCH_LIBDIR ?= /lib/$(shell $(CC) -dumpmachine) SGX_MODE ?= HW +WORKER_DEV ?= 0 SELF_EXE = omni-executor-worker COMPILATION_FEATURES = +ifeq ($(WORKER_DEV), 1) + COMPILATION_FEATURES := $(COMPILATION_FEATURES),development +endif + ROOTDIR := $(shell git rev-parse --show-toplevel) OMNI_DIR := $(ROOTDIR)/tee-worker/omni-executor .PHONY: all all: $(SELF_EXE) omni-executor.manifest ifeq ($(SGX_MODE), HW) -COMPILATION_FEATURES = gramine-quote +COMPILATION_FEATURES := $(COMPILATION_FEATURES),gramine-quote all: omni-executor.manifest.sgx omni-executor.sig endif diff --git a/tee-worker/omni-executor/parentchain/listener/Cargo.toml b/tee-worker/omni-executor/parentchain/listener/Cargo.toml index 6328de94dd..9c4cd758fd 100644 --- a/tee-worker/omni-executor/parentchain/listener/Cargo.toml +++ b/tee-worker/omni-executor/parentchain/listener/Cargo.toml @@ -7,9 +7,11 @@ edition.workspace = true [dependencies] async-trait = { workspace = true } hex = "0.4.3" +litentry-macros = { path = "../../../../common/primitives/core/macros" } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } scale-encode = "0.7.1" +sp-core = { workspace = true } subxt = { workspace = true } subxt-core = { workspace = true } subxt-signer = { workspace = true } @@ -26,4 +28,5 @@ env_logger = { workspace = true } workspace = true [features] +development = [] gramine-quote = [] diff --git a/tee-worker/omni-executor/parentchain/listener/src/key_store.rs b/tee-worker/omni-executor/parentchain/listener/src/key_store.rs index f429c423aa..c2cb2e9db5 100644 --- a/tee-worker/omni-executor/parentchain/listener/src/key_store.rs +++ b/tee-worker/omni-executor/parentchain/listener/src/key_store.rs @@ -15,7 +15,11 @@ // along with Litentry. If not, see . use executor_core::key_store::KeyStore; +use litentry_macros::if_development_or; +use log::error; +use sp_core::{sr25519, Pair}; use subxt_signer::sr25519::SecretKeyBytes; +use tokio::fs::File; /// Generates and stores keys used by for communication with parentchain` pub struct SubstrateKeyStore { @@ -24,27 +28,35 @@ pub struct SubstrateKeyStore { impl SubstrateKeyStore { pub fn new(path: String) -> Self { - let key = Self::generate_key().unwrap(); - let store = Self { path }; - store.write(&key).unwrap(); - - store + if std::path::Path::new(&path).exists() { + Self { path } + } else { + let key = Self::generate_key().unwrap(); + let store = Self { path }; + store.write(&key).unwrap(); + store + } } } impl KeyStore for SubstrateKeyStore { fn generate_key() -> Result { - // Secret Key URI `//Alice` is account: - // Network ID: substrate - // Secret seed: 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a - // Public key (hex): 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d - // Account ID: 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d - // Public key (SS58): 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY - // SS58 Address: 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY - Ok([ - 229, 190, 154, 80, 146, 184, 27, 202, 100, 190, 129, 210, 18, 231, 242, 249, 235, 161, - 131, 187, 122, 144, 149, 79, 123, 118, 54, 31, 110, 219, 92, 10, - ]) + if_development_or!( + { + // Secret Key URI `//Alice` is account: + // Network ID: substrate + // Secret seed: 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a + // Public key (hex): 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d + // Account ID: 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d + // Public key (SS58): 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY + // SS58 Address: 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY + Ok([ + 229, 190, 154, 80, 146, 184, 27, 202, 100, 190, 129, 210, 18, 231, 242, 249, + 235, 161, 131, 187, 122, 144, 149, 79, 123, 118, 54, 31, 110, 219, 92, 10, + ]) + }, + { Ok(sr25519::Pair::generate().1) } + ) } fn serialize(k: &SecretKeyBytes) -> Result, ()> { From 07dee13abe2648bc6a415aee1e4ba7d366b15655 Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Wed, 15 Jan 2025 16:46:48 +0000 Subject: [PATCH 4/9] remove development feature; use keystore to store the pre-prepared keys --- tee-worker/omni-executor/.gitignore | 2 + tee-worker/omni-executor/Cargo.lock | 6 +-- tee-worker/omni-executor/Cargo.toml | 3 ++ tee-worker/omni-executor/Makefile | 12 ++---- .../omni-executor/executor-core/Cargo.toml | 1 + .../src/sync_checkpoint_repository.rs | 11 ++++- .../omni-executor/executor-worker/src/cli.rs | 41 +++++++++++++++++- .../omni-executor/executor-worker/src/main.rs | 43 +++++++++---------- .../omni-executor/local/keystore/README.md | 8 ++++ .../local/keystore/substrate_alice.bin | 1 + .../parentchain/listener/Cargo.toml | 6 +-- .../parentchain/listener/src/key_store.rs | 20 +-------- .../parentchain/listener/src/lib.rs | 37 +++++++++------- 13 files changed, 115 insertions(+), 76 deletions(-) create mode 100644 tee-worker/omni-executor/local/keystore/README.md create mode 100644 tee-worker/omni-executor/local/keystore/substrate_alice.bin diff --git a/tee-worker/omni-executor/.gitignore b/tee-worker/omni-executor/.gitignore index e0eb6eea9f..c18794de77 100644 --- a/tee-worker/omni-executor/.gitignore +++ b/tee-worker/omni-executor/.gitignore @@ -3,6 +3,8 @@ target/ .idea/ **/*.bin +storage + cache omni-executor.manifest omni-executor.manifest.sgx diff --git a/tee-worker/omni-executor/Cargo.lock b/tee-worker/omni-executor/Cargo.lock index 48fb9355a3..90f3a3390a 100644 --- a/tee-worker/omni-executor/Cargo.lock +++ b/tee-worker/omni-executor/Cargo.lock @@ -2563,6 +2563,7 @@ dependencies = [ "async-trait", "log", "parity-scale-codec", + "regex", "tokio", ] @@ -3819,10 +3820,6 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litentry-macros" -version = "0.1.0" - [[package]] name = "lock_api" version = "0.4.12" @@ -4289,7 +4286,6 @@ dependencies = [ "env_logger", "executor-core", "hex", - "litentry-macros", "log", "parentchain-api-interface", "parentchain-storage", diff --git a/tee-worker/omni-executor/Cargo.toml b/tee-worker/omni-executor/Cargo.toml index 5605973a5f..7af3a2c9f9 100644 --- a/tee-worker/omni-executor/Cargo.toml +++ b/tee-worker/omni-executor/Cargo.toml @@ -19,8 +19,11 @@ alloy = "0.3.6" async-trait = "0.1.82" clap = "4.5.17" env_logger = "0.11.5" +hex = "0.4.3" log = "0.4.22" parity-scale-codec = "3.6.12" +regex = "1.7" +scale-encode = "0.7.1" scale-encode = "0.7.1" solana-client = "2.1.5" solana-sdk = "2.1.5" diff --git a/tee-worker/omni-executor/Makefile b/tee-worker/omni-executor/Makefile index 5f53e9fb8d..c0fc34324c 100644 --- a/tee-worker/omni-executor/Makefile +++ b/tee-worker/omni-executor/Makefile @@ -2,22 +2,17 @@ # SPDX-License-Identifier: BSD-3-Clause ARCH_LIBDIR ?= /lib/$(shell $(CC) -dumpmachine) -SGX_MODE ?= HW -WORKER_DEV ?= 0 +SGX ?= 1 SELF_EXE = omni-executor-worker COMPILATION_FEATURES = -ifeq ($(WORKER_DEV), 1) - COMPILATION_FEATURES := $(COMPILATION_FEATURES),development -endif - ROOTDIR := $(shell git rev-parse --show-toplevel) OMNI_DIR := $(ROOTDIR)/tee-worker/omni-executor .PHONY: all all: $(SELF_EXE) omni-executor.manifest -ifeq ($(SGX_MODE), HW) +ifeq ($(SGX), 1) COMPILATION_FEATURES := $(COMPILATION_FEATURES),gramine-quote all: omni-executor.manifest.sgx omni-executor.sig endif @@ -53,7 +48,7 @@ sgx_sign: omni-executor.manifest $(SELF_EXE) --output $<.sgx \ --key enclave_key.pem -ifeq ($(SGX_MODE), HW) +ifeq ($(SGX), 1) GRAMINE = gramine-sgx else GRAMINE = gramine-direct @@ -71,7 +66,6 @@ clean: distclean: clean cargo clean -# By default SGX_MODE=SW for docker image .PHONY: build-docker build-docker: docker build --target executor-worker -t litentry/omni-executor:latest -f $(OMNI_DIR)/Dockerfile $(OMNI_DIR) diff --git a/tee-worker/omni-executor/executor-core/Cargo.toml b/tee-worker/omni-executor/executor-core/Cargo.toml index c214c2230c..9e182bef2c 100644 --- a/tee-worker/omni-executor/executor-core/Cargo.toml +++ b/tee-worker/omni-executor/executor-core/Cargo.toml @@ -8,6 +8,7 @@ edition.workspace = true async-trait = { workspace = true } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } +regex = { workspace = true } tokio = { workspace = true } [lints] diff --git a/tee-worker/omni-executor/executor-core/src/sync_checkpoint_repository.rs b/tee-worker/omni-executor/executor-core/src/sync_checkpoint_repository.rs index 2fdf008404..5c1b086bf6 100644 --- a/tee-worker/omni-executor/executor-core/src/sync_checkpoint_repository.rs +++ b/tee-worker/omni-executor/executor-core/src/sync_checkpoint_repository.rs @@ -19,6 +19,7 @@ use std::fmt::Debug; use std::fs; use std::fs::File; use std::io::{ErrorKind, Write}; +use std::path::Path; /// Represents the point in chain. It can be a whole block or a more precise unit, for example /// in case of substrate chain it is BLOCK_NUM::EVENT_NUM @@ -66,7 +67,15 @@ pub struct FileCheckpointRepository { impl FileCheckpointRepository { pub fn new(file_name: &str) -> Self { - // todo add regex check here + let file_name_regex = regex::Regex::new(r"^[a-zA-Z0-9_\-\.\/]+$").expect("Invalid regex"); + if !file_name_regex.is_match(file_name) { + panic!("Invalid file name: {}", file_name); + } + + if let Some(parent) = Path::new(file_name).parent() { + fs::create_dir_all(parent).expect("Failed to create directories"); + } + Self { file_name: file_name.to_owned() } } } diff --git a/tee-worker/omni-executor/executor-worker/src/cli.rs b/tee-worker/omni-executor/executor-worker/src/cli.rs index 2b07dc58fd..6825453e57 100644 --- a/tee-worker/omni-executor/executor-worker/src/cli.rs +++ b/tee-worker/omni-executor/executor-worker/src/cli.rs @@ -1,10 +1,49 @@ -use clap::Parser; +use clap::{Args, Parser, Subcommand}; #[derive(Parser)] #[command(version, about, long_about = None)] +#[command(propagate_version = true)] pub struct Cli { + #[command(subcommand)] + pub cmd: Commands, +} + +#[derive(Subcommand)] +pub enum Commands { + Run(RunArgs), + GenKey(GenKeyArgs), +} + +#[derive(Args)] +pub struct RunArgs { pub parentchain_url: String, pub ethereum_url: String, pub solana_url: String, + #[arg(short, long, default_value = "0", value_name = "start block to sync from parentchain")] pub start_block: u64, + #[arg( + short, + long, + default_value = "local/keystore/substrate_alice.bin", + value_name = "keystore file path" + )] + pub keystore_path: String, + #[arg( + short, + long, + default_value = "local/log/parentchain_last_log.bin", + value_name = "log file path" + )] + pub log_path: String, +} + +#[derive(Args)] +pub struct GenKeyArgs { + #[arg( + short, + long, + default_value = "local/keystore/substrate_alice.bin", + value_name = "keystore file path" + )] + pub keystore_path: String, } diff --git a/tee-worker/omni-executor/executor-worker/src/main.rs b/tee-worker/omni-executor/executor-worker/src/main.rs index 6feb4b0721..614cf43c59 100644 --- a/tee-worker/omni-executor/executor-worker/src/main.rs +++ b/tee-worker/omni-executor/executor-worker/src/main.rs @@ -16,6 +16,7 @@ use crate::cli::Cli; use clap::Parser; +use cli::*; use ethereum_intent_executor::EthereumIntentExecutor; use log::error; use solana_intent_executor::SolanaIntentExecutor; @@ -46,50 +47,48 @@ async fn main() -> Result<(), ()> { let cli = Cli::parse(); - fs::create_dir_all("data/").map_err(|e| { - error!("Could not create data dir: {:?}", e); - })?; + match cli.cmd { + Commands::Run(args) => { + listen_to_parentchain(args).await.unwrap(); - listen_to_parentchain(cli.parentchain_url, cli.ethereum_url, cli.solana_url, cli.start_block) - .await - .unwrap(); - - match signal::ctrl_c().await { - Ok(()) => {}, - Err(err) => { - eprintln!("Unable to listen for shutdown signal: {}", err); - // we also shut down in case of error + match signal::ctrl_c().await { + Ok(()) => {}, + Err(err) => { + eprintln!("Unable to listen for shutdown signal: {}", err); + // we also shut down in case of error + }, + } + }, + Commands::GenKey(args) => { + let _ = parentchain_listener::get_signer(&args.keystore_path); }, } Ok(()) } -async fn listen_to_parentchain( - parentchain_url: String, - ethereum_url: String, - solana_url: String, - start_block: u64, -) -> Result, ()> { +async fn listen_to_parentchain(args: RunArgs) -> Result, ()> { let (_sub_stop_sender, sub_stop_receiver) = oneshot::channel(); let ethereum_intent_executor = - EthereumIntentExecutor::new(ðereum_url).map_err(|e| log::error!("{:?}", e))?; + EthereumIntentExecutor::new(&args.ethereum_url).map_err(|e| log::error!("{:?}", e))?; let solana_intent_executor = - SolanaIntentExecutor::new(solana_url).map_err(|e| log::error!("{:?}", e))?; + SolanaIntentExecutor::new(args.solana_url).map_err(|e| log::error!("{:?}", e))?; let mut parentchain_listener = parentchain_listener::create_listener::( "litentry_rococo", Handle::current(), - &parentchain_url, + &args.parentchain_url, ethereum_intent_executor, solana_intent_executor, sub_stop_receiver, + &args.keystore_path, + &args.log_path, ) .await?; Ok(thread::Builder::new() .name("litentry_rococo_sync".to_string()) - .spawn(move || parentchain_listener.sync(start_block)) + .spawn(move || parentchain_listener.sync(args.start_block)) .unwrap()) } diff --git a/tee-worker/omni-executor/local/keystore/README.md b/tee-worker/omni-executor/local/keystore/README.md new file mode 100644 index 0000000000..f362ef1244 --- /dev/null +++ b/tee-worker/omni-executor/local/keystore/README.md @@ -0,0 +1,8 @@ +This folder contains the dev keystore: signer key + +How is bin file generated: + +```bash +# subkey inspect '//Alice' +echo -n "e5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a" | xxd -r -p > substrate_alice.bin +``` \ No newline at end of file diff --git a/tee-worker/omni-executor/local/keystore/substrate_alice.bin b/tee-worker/omni-executor/local/keystore/substrate_alice.bin new file mode 100644 index 0000000000..41bac053bb --- /dev/null +++ b/tee-worker/omni-executor/local/keystore/substrate_alice.bin @@ -0,0 +1 @@ +¨u¸ÜTúrÅš Ù„¢ý÷m«xFm¨JÜòe¼½%͹ \ No newline at end of file diff --git a/tee-worker/omni-executor/parentchain/listener/Cargo.toml b/tee-worker/omni-executor/parentchain/listener/Cargo.toml index 9c4cd758fd..6f481246fd 100644 --- a/tee-worker/omni-executor/parentchain/listener/Cargo.toml +++ b/tee-worker/omni-executor/parentchain/listener/Cargo.toml @@ -6,11 +6,10 @@ edition.workspace = true [dependencies] async-trait = { workspace = true } -hex = "0.4.3" -litentry-macros = { path = "../../../../common/primitives/core/macros" } +hex = { workspace = true } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } -scale-encode = "0.7.1" +scale-encode = { workspace = true } sp-core = { workspace = true } subxt = { workspace = true } subxt-core = { workspace = true } @@ -28,5 +27,4 @@ env_logger = { workspace = true } workspace = true [features] -development = [] gramine-quote = [] diff --git a/tee-worker/omni-executor/parentchain/listener/src/key_store.rs b/tee-worker/omni-executor/parentchain/listener/src/key_store.rs index c2cb2e9db5..a52ebec660 100644 --- a/tee-worker/omni-executor/parentchain/listener/src/key_store.rs +++ b/tee-worker/omni-executor/parentchain/listener/src/key_store.rs @@ -15,11 +15,8 @@ // along with Litentry. If not, see . use executor_core::key_store::KeyStore; -use litentry_macros::if_development_or; -use log::error; use sp_core::{sr25519, Pair}; use subxt_signer::sr25519::SecretKeyBytes; -use tokio::fs::File; /// Generates and stores keys used by for communication with parentchain` pub struct SubstrateKeyStore { @@ -41,22 +38,7 @@ impl SubstrateKeyStore { impl KeyStore for SubstrateKeyStore { fn generate_key() -> Result { - if_development_or!( - { - // Secret Key URI `//Alice` is account: - // Network ID: substrate - // Secret seed: 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a - // Public key (hex): 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d - // Account ID: 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d - // Public key (SS58): 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY - // SS58 Address: 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY - Ok([ - 229, 190, 154, 80, 146, 184, 27, 202, 100, 190, 129, 210, 18, 231, 242, 249, - 235, 161, 131, 187, 122, 144, 149, 79, 123, 118, 54, 31, 110, 219, 92, 10, - ]) - }, - { Ok(sr25519::Pair::generate().1) } - ) + Ok(sr25519::Pair::generate().1) } fn serialize(k: &SecretKeyBytes) -> Result, ()> { diff --git a/tee-worker/omni-executor/parentchain/listener/src/lib.rs b/tee-worker/omni-executor/parentchain/listener/src/lib.rs index e28ce078dc..0e46a5cd05 100644 --- a/tee-worker/omni-executor/parentchain/listener/src/lib.rs +++ b/tee-worker/omni-executor/parentchain/listener/src/lib.rs @@ -90,6 +90,8 @@ pub async fn create_listener( ethereum_intent_executor: EthereumIntentExecutor, solana_intent_executor: SolanaIntentExecutor, stop_signal: Receiver<()>, + keystore_path: &str, + log_path: &str, ) -> Result< ParentchainListener< SubxtClient, @@ -110,25 +112,12 @@ where Arc::new(SubxtClientFactory::new(ws_rpc_endpoint)); let fetcher = Fetcher::new(client_factory.clone()); - let last_processed_log_repository = - FileCheckpointRepository::new("data/parentchain_last_log.bin"); + let last_processed_log_repository = FileCheckpointRepository::new(log_path); let metadata_provider = Arc::new(SubxtMetadataProvider::new(SubxtClientFactory::new(ws_rpc_endpoint))); - let key_store = Arc::new(SubstrateKeyStore::new("data/parentchain_key.bin".to_string())); - let secret_key_bytes = key_store - .read() - .map_err(|e| { - error!("Could not unseal key: {:?}", e); - }) - .unwrap(); - let signer = subxt_signer::sr25519::Keypair::from_secret_key(secret_key_bytes) - .map_err(|e| { - error!("Could not create secret key: {:?}", e); - }) - .unwrap(); - info!("Substrate signer address: {}", AccountId32::from(signer.public_key())); + let (key_store, signer) = get_signer(keystore_path); let transaction_signer = Arc::new(TransactionSigner::new( metadata_provider.clone(), @@ -152,6 +141,24 @@ where Listener::new(id, handle, fetcher, event_handler, stop_signal, last_processed_log_repository) } +pub fn get_signer(path: &str) -> (Arc, Keypair) { + let key_store = Arc::new(SubstrateKeyStore::new(path.to_string())); + let secret_key_bytes = key_store + .read() + .map_err(|e| { + error!("Could not unseal key: {:?}", e); + }) + .unwrap(); + let signer = subxt_signer::sr25519::Keypair::from_secret_key(secret_key_bytes) + .map_err(|e| { + error!("Could not create secret key: {:?}", e); + }) + .unwrap(); + + info!("Substrate signer address: {}", AccountId32::from(signer.public_key())); + (key_store, signer) +} + #[allow(unused_assignments, unused_mut, unused_variables, clippy::type_complexity)] async fn perform_attestation( client_factory: Arc>, From 10f20ab68e6d6536a0f183a902e6356caa6452dc Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Wed, 15 Jan 2025 17:23:19 +0000 Subject: [PATCH 5/9] rm redundant dependency --- tee-worker/omni-executor/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/tee-worker/omni-executor/Cargo.toml b/tee-worker/omni-executor/Cargo.toml index 7af3a2c9f9..a574c3c761 100644 --- a/tee-worker/omni-executor/Cargo.toml +++ b/tee-worker/omni-executor/Cargo.toml @@ -24,7 +24,6 @@ log = "0.4.22" parity-scale-codec = "3.6.12" regex = "1.7" scale-encode = "0.7.1" -scale-encode = "0.7.1" solana-client = "2.1.5" solana-sdk = "2.1.5" sp-core = "35.0.0" From ead7f7d5d10d058559cb2f9c32d6a447ce6c2e6a Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Wed, 15 Jan 2025 20:13:41 +0000 Subject: [PATCH 6/9] fix clippy --- tee-worker/omni-executor/parentchain/listener/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tee-worker/omni-executor/parentchain/listener/src/lib.rs b/tee-worker/omni-executor/parentchain/listener/src/lib.rs index 0e46a5cd05..ab422d21da 100644 --- a/tee-worker/omni-executor/parentchain/listener/src/lib.rs +++ b/tee-worker/omni-executor/parentchain/listener/src/lib.rs @@ -83,6 +83,7 @@ impl Config for CustomConfig { } /// Creates parentchain listener +#[allow(clippy::too_many_arguments)] pub async fn create_listener( id: &str, handle: Handle, From 18100765d255a30e19ab30db5bbaa9b5bafab041 Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Thu, 16 Jan 2025 08:52:01 +0000 Subject: [PATCH 7/9] remove unnecessary line --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 2f47d04293..839bf0c775 100644 --- a/Makefile +++ b/Makefile @@ -104,7 +104,6 @@ fmt: fmt-cargo fmt-taplo fmt-ts fmt-cargo: @cd parachain && cargo fmt --all @cd tee-worker && cargo fmt --all - @cd tee-worker/identity && cargo fmt --all @cd tee-worker/identity/enclave-runtime && cargo fmt --all @cd tee-worker/omni-executor && cargo fmt --all From 8996629a32930d7d3393f6b607c72616ef079bd4 Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Thu, 16 Jan 2025 09:02:32 +0000 Subject: [PATCH 8/9] fix clippy --- tee-worker/omni-executor/executor-worker/src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tee-worker/omni-executor/executor-worker/src/main.rs b/tee-worker/omni-executor/executor-worker/src/main.rs index 614cf43c59..a2e0d83e0a 100644 --- a/tee-worker/omni-executor/executor-worker/src/main.rs +++ b/tee-worker/omni-executor/executor-worker/src/main.rs @@ -18,11 +18,10 @@ use crate::cli::Cli; use clap::Parser; use cli::*; use ethereum_intent_executor::EthereumIntentExecutor; -use log::error; use solana_intent_executor::SolanaIntentExecutor; use std::io::Write; +use std::thread; use std::thread::JoinHandle; -use std::{fs, thread}; use tokio::runtime::Handle; use tokio::signal; use tokio::sync::oneshot; From 2c69e64657a753e4e086ca7aa4a747b3bb25a7af Mon Sep 17 00:00:00 2001 From: BillyWooo Date: Thu, 23 Jan 2025 21:59:34 +0100 Subject: [PATCH 9/9] Update tee-worker/omni-executor/.gitignore Co-authored-by: Francisco Silva Signed-off-by: BillyWooo --- tee-worker/omni-executor/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tee-worker/omni-executor/.gitignore b/tee-worker/omni-executor/.gitignore index c18794de77..356055fc5e 100644 --- a/tee-worker/omni-executor/.gitignore +++ b/tee-worker/omni-executor/.gitignore @@ -3,7 +3,7 @@ target/ .idea/ **/*.bin -storage +storage_db cache omni-executor.manifest