diff --git a/omni-relayer/Cargo.lock b/omni-relayer/Cargo.lock index 03898262..44fa7c49 100644 --- a/omni-relayer/Cargo.lock +++ b/omni-relayer/Cargo.lock @@ -1815,7 +1815,7 @@ dependencies = [ [[package]] name = "bridge-connector-common" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "eth-proof", "ethers", @@ -2305,6 +2305,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -2341,9 +2361,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -3183,7 +3203,7 @@ dependencies = [ [[package]] name = "eth-proof" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "borsh 1.5.5", "cita_trie", @@ -3552,7 +3572,7 @@ dependencies = [ [[package]] name = "evm-bridge-client" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "borsh 1.5.5", "bridge-connector-common", @@ -5035,9 +5055,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -5063,7 +5083,7 @@ dependencies = [ [[package]] name = "near-bridge-client" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "borsh 1.5.5", "bridge-connector-common", @@ -5292,7 +5312,7 @@ dependencies = [ [[package]] name = "near-light-client-on-eth" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "ethereum-types 0.14.1", "ethers", @@ -5464,7 +5484,7 @@ dependencies = [ [[package]] name = "near-rpc-client" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "borsh 1.5.5", "lazy_static", @@ -5857,7 +5877,7 @@ dependencies = [ [[package]] name = "omni-connector" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "borsh 1.5.5", "bridge-connector-common", @@ -5981,9 +6001,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "f5e534d133a060a3c19daec1eb3e98ec6f4685978834f2dbadfe2ec215bab64e" dependencies = [ "bitflags 2.8.0", "cfg-if 1.0.0", @@ -6070,28 +6090,30 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "7e5fdb66425c73b3f87565b2c8bd70c27afdd41b5e14ab46f303873a7c50294e" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "40e3e3dbdd7e7f6a58a4bdb105f88a85ba6d52bac9c98c69276bce153abe9ab5" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.96", ] [[package]] @@ -7136,9 +7158,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" dependencies = [ "web-time", ] @@ -7698,9 +7720,9 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8557558040a6bf34101ea0ded1647bafc21c2a9ea0913034fa6794a304ba6791" +checksum = "d2af97266ee346ef1cd1649ba462d08bd3d254e50c06c45d3e70a21871a1da6a" dependencies = [ "bincode", "serde", @@ -7712,9 +7734,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2353887223851d07071e790a6508d8df61032a5e01bb6f990d7abe7f58dde3aa" +checksum = "717a67d421f9ba91a7b845af1d5b0039fcb44b86f4b294b28ae447a0f2bf48c8" dependencies = [ "Inflector", "base64 0.22.1", @@ -7738,9 +7760,9 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435bb722c456f78dd3ac33a1b4641c46d5d41de5b072422ae5b0dc9f486c0928" +checksum = "e42008241f82751639daee861f1ecaf9c3342d3aa6ce96c063290379a5f9f7c0" dependencies = [ "base64 0.22.1", "bs58 0.5.1", @@ -7754,9 +7776,9 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abeb32e8dbead1f920a919d8c781fe058cf657313aa237566fa812d2288f2aab" +checksum = "3ed2417317f26f0941dd8e552ac1f9768eb2aa3b7f16ec992a6833f058295bea" dependencies = [ "bincode", "serde", @@ -7767,18 +7789,18 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ceb7242711300b8d67933a3cd1c9b2cd7c4e98de529356ecddf340c98c457d" +checksum = "f0cd0453d46a62ed36ce234be9153a3c4d433711f1cec6943345d1637d6a0908" dependencies = [ "parking_lot", ] [[package]] name = "solana-bincode" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e154567b6846f4721c713afdd14c56892800fb940793ef529a68d6db6cf1beef" +checksum = "a97957d987dc85bbfa90cb7e919ee0b071206affc0209e7221d7ea4844e7be31" dependencies = [ "bincode", "serde", @@ -7787,9 +7809,9 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c42ad3282999ef7df859e7ed03a6e6a4187ff4931f9814ddcd0477dba2be15" +checksum = "957ce0d8b021f78f7b3c99d82b21a8dae617cf016377647c4d43a6e3141e8f2f" dependencies = [ "ark-bn254", "ark-ec", @@ -7802,9 +7824,9 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b2428671e99134c97990d2b466c33779f785376b7934e6bddb635929c54208f" +checksum = "99affe31b10c1cd4a6438d307b92c1b17c89c974aebf2c2aa15cd790d0ba672b" dependencies = [ "borsh 0.10.4", "borsh 1.5.5", @@ -7813,7 +7835,7 @@ dependencies = [ [[package]] name = "solana-bridge-client" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "borsh 1.5.5", "derive_builder 0.20.2", @@ -7828,9 +7850,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73d3a06371c4b63efa8d2dde9890b658891943807c529144eac6d2345538077d" +checksum = "3433292dc183886b1f36ee87e971477556226df2f566fc5a19585a0d740aa8b0" dependencies = [ "async-trait", "bincode", @@ -7860,9 +7882,9 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d639043cefcd061c31a342364adcb204406ebbd91ef86dfde88b74352b688cf" +checksum = "97864f28abd43d03e7ca7242059e340bb6e637e0ce99fd66f6420c43fa359898" dependencies = [ "serde", "serde_derive", @@ -7872,18 +7894,18 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6c885192c0afe6f7beac13e1c8eb51ce36bc60e8f0b7631f9cbf72d8ca6aa03" +checksum = "9f92a2ba8c5ed92fc805f8a92a3bfbbaca05da80d87f180aea4e9f28b9e0fa22" dependencies = [ "solana-sdk", ] [[package]] name = "solana-config-program" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "056ce3a28f5e22677e0db1fc976294041571c4d471a752bfc9f1b06f8828c488" +checksum = "08a78fbed4792e4cd029a0dd95d14ec42ea602fd7247b40e8fbc4c96b3404da1" dependencies = [ "bincode", "chrono", @@ -7897,9 +7919,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52912ec1eb7b40af2a81269d0bb2cefba01f303383cba32067d0dc5020556e38" +checksum = "c7aa1f4cb4c3829357189e6a88624205016b0710f11509f84f772c87c4887159" dependencies = [ "async-trait", "bincode", @@ -7918,9 +7940,9 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b87b387931f41422be3d82190e29c8414bbb4e8517dd94afb838012260d7a60" +checksum = "d54c3b096dc77222b9c19ffe9cf6c1c32bd1e9882ceb955d213be4315bbe3b95" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -7932,9 +7954,9 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b91a6c7db7874ab0721ba2ad49c34614c6af5bfa1a02f18ee471d28416b1fc" +checksum = "4b2ed697e82c44b0833550501e3fab428c07cc2865c788307fad4c98a64d27d0" dependencies = [ "bytemuck", "bytemuck_derive", @@ -7945,24 +7967,24 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b93163519c0b7419d3ac206207594d4b43e00267496996b898345ff3b31ed1" +checksum = "6c92852914fe0cfec234576a30b1de4b11516dd729226d5de04e4c67d80447a7" dependencies = [ "num-traits", ] [[package]] name = "solana-define-syscall" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d1b215d56d29f71782df6880d71b5a46cf9a4035046414488c7de6906899ba" +checksum = "44015e77f6f321bf526f7d026b08d8f34b57b1ea6e46038fd13e59f43a53a475" [[package]] name = "solana-derivation-path" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31edf5d285689b469471a1a0200f0c9196be7df155860bd83dfd735439172bd" +checksum = "e2cd4b95383d8926cc22d4a33417aa2e38897475f259cff4eb319c8cf0f7ac02" dependencies = [ "derivation-path", "qstring", @@ -7971,9 +7993,9 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88aa6588f178c32258eb616ef1428f2c86beae370d6486843313f6320e055190" +checksum = "b3409f250234ec4bbd999de3eac727ca21dfbfd39a831906f6ec112a66d2e1a2" dependencies = [ "serde", "serde_derive", @@ -7983,9 +8005,9 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1736c5f6cb5d65e684a1daf425dd1479849e0793ffe877feedb602642ee5deb0" +checksum = "61ddda14ac5f2da82da4df043eabca2f2c00ac0d59f10295b8c8c3404fcc5f67" dependencies = [ "lazy_static", "solana-clock", @@ -7997,9 +8019,9 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ef28a47c3fcfd4ef8b19468531e32a431f6589f359cdbb927fc5e7fb859413" +checksum = "f8db8c4be5e012215ed1e3394cd3c188e217dd4f0c821045e5d2c1262aac8b4e" dependencies = [ "log", "serde", @@ -8008,9 +8030,9 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad865143587f6173d0bd15ec66b749fd2682c865467ffd2bb725705e33f0c8fa" +checksum = "7c25925816be2f57992c4c5af7dff31713bc95696c2fbc4bca911e290ba2f330" dependencies = [ "borsh 1.5.5", "bs58 0.5.1", @@ -8026,9 +8048,9 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a205cb59db7fa1afc89ad5d960ac5afb997ba231cdc943451811746c84b7776d" +checksum = "e91a53086a0f0cc093ffce9e5be4399785f05a0d49f0ff2cd6d5f3f4d593e2e9" dependencies = [ "serde", "serde_derive", @@ -8036,9 +8058,9 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47d825ad3f7d3eede036d2c3b11eb385912eb3e01872bc98901802f942eab8a" +checksum = "8a4fa02c553c48a6e189960b5bd3aa854b29c888bd5db4c1ad4bb6a0cc068c78" dependencies = [ "bytemuck", "solana-pubkey", @@ -8046,9 +8068,9 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af795f16bef3ae76e97978e35724ea88d2b9eba67a9e233adf48ccefeaa6e6b8" +checksum = "eab8c46b6f76857222ee1adeb7031b8eb0eb5134920614e9fd1bd710052b96a9" dependencies = [ "bincode", "borsh 1.5.5", @@ -8064,9 +8086,9 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f88c8171167f1fd4ef1e5a083fd0e8f35ac60aacd1ffe163a1ef7053a28524be" +checksum = "633f272467f3e1a28dfcfb1a7df55129752524a18938a84fd67086e205f0bd88" dependencies = [ "serde", "serde_derive", @@ -8076,24 +8098,24 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7922b879e4c03e00bf6ed21b1f8579ac71f6743d95c22306bd1ba8994e4f90e8" +checksum = "034627f9849eeafcbfa24f0e4ad0da50eb68422ceab5c605b7d87755af77b201" dependencies = [ "log", ] [[package]] name = "solana-measure" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13208871c6d000a0c7b7546ae605934f5eda3745f80f6926da1b6097c08f2de2" +checksum = "24fa953c2b49a131492b5927e714ab60b7b927610c7ed3355b9ad28909622b5e" [[package]] name = "solana-metrics" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555986e126fe32ad94217c5d87c94f79b7f13abf96ef9d8de20dacbcf1c407e5" +checksum = "cce8eeecdde1cfed801d0d8683856e0e0cc731119894a7ae77a966915cf84964" dependencies = [ "crossbeam-channel", "gethostname", @@ -8106,24 +8128,24 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aefec09cb47fb67b8f8c448e03491d4148c1749f27dcb74d1cfae6337695f94" +checksum = "80dde3316c6ee6e8d57bf105139ec93f8c32a42fe3ec42a3cda2ca9efb72c0e6" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81520eff9f776e62faa36a07250fcc467e54ca31ca9c87ab566a88b2f2691c05" +checksum = "9e0721f46122a2f1837f571d5a6c1478c962ebefd6d65d02694b3a267b58dbf2" [[package]] name = "solana-net-utils" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b409b10fee2d0cbb2a721fa3ce7d7f6f32e0d3ae1f5807b1d6bc91d75970c72" +checksum = "404052690fb907fdda741f662610ac26c785cdff2154204a109b14d3e2f4b6bd" dependencies = [ "bincode", "crossbeam-channel", @@ -8140,9 +8162,9 @@ dependencies = [ [[package]] name = "solana-packet" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8c6e8a2cb0839ef49d8c6e34e89a5bc5ed97da855bf49528bae8c57eb39ed" +checksum = "39fcc5cf0ef0ac6a62dd09fae772672c2d6865ee1d1ba5fbfbcc94b2c37b2be8" dependencies = [ "bincode", "bitflags 2.8.0", @@ -8154,9 +8176,9 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa10dd492bee710d0e231a3ff48c52d6e24f5339d97decaf1f0ddbde996f834" +checksum = "2fed01176ddc5ade70e0782b3eeea0f5e98f183dc5b225e4e051834e63a288c0" dependencies = [ "ahash", "bincode", @@ -8181,9 +8203,9 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c01aefc15c451b4f573c1e4552f34ee8af53db285ee2f7ece17ef8b70d6c0a" +checksum = "54310052930124b78392b03d802aa465afe6fded96d97f2e6ca6b1dead85d8d9" dependencies = [ "num-traits", "solana-decode-error", @@ -8191,9 +8213,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a72c5eafd348bc5e5b731b40ad8dfde3023632e34e5ca9e52a655266ffae7" +checksum = "12511916a9658664921ca12dd6214910de655ac9955159c1e9871bd516936cac" dependencies = [ "base64 0.22.1", "bincode", @@ -8264,9 +8286,9 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269ccabf1f3aff504a97aca0f8b72e6d3e1b7fb621cc18a2d21a28b17d52e112" +checksum = "c3422fa98d2ac5b20df9c9feb9f638e1170341b3c4259c26cd91a6a7098f6830" dependencies = [ "solana-account-info", "solana-msg", @@ -8276,9 +8298,9 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f7a81eeb5c3d44b2953c46215af390ca2951a0b8069836ffbf3d368b012b35" +checksum = "6a2ea6d8e88767586e6d547e5afb00cda08cee79c986443b2d47236aac50a755" dependencies = [ "borsh 1.5.5", "num-traits", @@ -8292,9 +8314,9 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1debcdd14cee4dbc2761c1e267e8888188fb469956df0e2144cd6e2962c2532a" +checksum = "716e1c9cbd3c5e9d9147ffb7e74815cfb34ff7a3196127da64aa8d1866beab52" dependencies = [ "num-traits", "solana-define-syscall", @@ -8302,24 +8324,24 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b49ce216cce72eb0607610d2040b1979d999fe204f73ae2a669c2f4480d3c0" +checksum = "15c8ffad2c86e5de375ae5f0a46f64eb5897a63c514e958e908c1a98059c57d4" [[package]] name = "solana-program-pack" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ff47a5dd9881187e85a45641405d9d1c57e9ebdc813e2ff74a1aa1f1ec9042" +checksum = "4c185f9170ac85a93d5caaaaf5fe7bf0d49febdb329506bd7ea13716e4eb0189" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d4647f4dfed31aaa307d8c4924fec3fc981e88dd340eec45273afa84f3d01a4" +checksum = "b5cf60b4b2d8d70b082d03973b8e646ca1c65351eb12ab33427c2df40cd178cf" dependencies = [ "base64 0.22.1", "bincode", @@ -8347,9 +8369,9 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02016ff5f98314c886e219c023bffba188ad8d70dec007247bd7a9da50423ac0" +checksum = "fdb80787769457f022a39a55cf439d1996aeecc2364c99483c97318d80f15436" dependencies = [ "borsh 0.10.4", "borsh 1.5.5", @@ -8374,9 +8396,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af610bc169985b016e1f66bc9f0cc19559c9da5fb6ee0b8984ea69b1302e6619" +checksum = "d8d5e1c9d387f98d46a675f418f29b73a5555ceddc2800faa38ce2f87feba3b2" dependencies = [ "crossbeam-channel", "futures-util", @@ -8399,9 +8421,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa9aed25872d9af165499a9a2167d489ceb832d5e6eaa1aafa982286f62e06d" +checksum = "8579061d3a98f3b6b45f675da8b4fdcf435109ef6c6269b95ee0f33a52a5ac4d" dependencies = [ "async-lock", "async-trait", @@ -8425,9 +8447,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d0ea6818ea3ae2067b18ba8f82577de19094d7abbb918ffb5cf5d7b0a6ffe88" +checksum = "5cac659c899faffd06d57164fbdf142d7395e147843031ecd0ec48ee11be3b06" dependencies = [ "lazy_static", "num_cpus", @@ -8435,9 +8457,9 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "544fab48aacd3b9c740ef5206f30e8a44ef8bfe5676a9d7b1eed385265ec1265" +checksum = "88b4cd58602eb0c2250cd83a8cc8287ca6271b99af95d2a33250e6592c04e286" dependencies = [ "serde", "serde_derive", @@ -8447,9 +8469,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff2d4562f555ed4ca406d88483f2b8ad0248e41ea19721227ffb5c64529bff2" +checksum = "3102d6dfbadc375f22f7413effafcf2d7d2cb3e8cdf64f366dacd7c5cbae27cb" dependencies = [ "async-trait", "base64 0.22.1", @@ -8474,9 +8496,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a50f6a180457400c9843980f1dd5db32b1153c295005ca85edb84bb7625acae" +checksum = "3c9ca3a7af9655a401c285f953c22525cad2698913ea4fa28cf217965929f80a" dependencies = [ "anyhow", "base64 0.22.1", @@ -8498,9 +8520,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa3be2840d3b8ebbdab96f62f59e0a9e6f9ba10f27b96a7d80d6897b15ff21a" +checksum = "551090640700bbb5f2b593a1f6146603cab53fc13a94120d28180f9941dc9ab2" dependencies = [ "solana-rpc-client", "solana-sdk", @@ -8509,15 +8531,15 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9677531dd4098d078515c66d69a04bfa0389d364a5c768561c719030b368a9db" +checksum = "74c557ff8937946d24c4f188f3029c1fdba4e23a15ed11cc8b31a72017e911d5" [[package]] name = "solana-sdk" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf93cfd5f5af23b59789eba96b6a6afd92a3a18a3fc6652259bfa1f32743caf4" +checksum = "0d755acdf62b367c1c4ca7ac1069c34a090d281b6425d11dd9410d4a147d99d3" dependencies = [ "bincode", "bitflags 2.8.0", @@ -8579,9 +8601,9 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bded40f70accbe97030e5f7163017605e51a2631425229ec2b0a4339bd1163a" +checksum = "9055600bc70a91936458b3a43a4173f8b8cd4ee64a0dc83cbb00737cadc519a5" dependencies = [ "bs58 0.5.1", "proc-macro2", @@ -8591,9 +8613,9 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee25b962814dec3c141e8182474046bae231f0521ed62c9bfdfb6722999ddc18" +checksum = "b904576bfc5b72172aed9c133fe54840625ab9d510bd429d453c54bd6e4245c3" dependencies = [ "borsh 1.5.5", "libsecp256k1", @@ -8603,9 +8625,9 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec53eff8861ab398b9ca4da7ef8c8da5d4170f8ea26557fc1581638b56326c1" +checksum = "c3c1329b7faa66f80bb3dadcece042589d22881120b6c0d0f712f742ad002f26" dependencies = [ "bytemuck", "openssl", @@ -8623,18 +8645,18 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-serde-varint" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff77c37cb995cc53ce1a4b78e5e9961957098677de6fdc6a4783ed37a8b0fcd" +checksum = "e741efbc732c2e33fd600d39a5a5e63cbab18fc75fc84a98df68c2aa2b373b64" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a10eb6e3177828145beaba85d352a4dbc47798fd95c5f86145e1a732684d6d" +checksum = "b2a6511f5147f992239415bd4bb297ad593da57b4ab634ed9bc10f81a560bc90" dependencies = [ "solana-instruction", "solana-pubkey", @@ -8643,9 +8665,9 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c4229293979bf8bda7db2243ae75e13695341375577a4c44b07e4f0b7a5d9e" +checksum = "3456f5d3868b9ae8e7bc53529bbbd8bee48b0d9cf3783f918269e71e4ee5268d" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -8654,18 +8676,18 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a2a88d56e6771329970059bcab0fde9a719c8edae173fb26b2c08e427495a" +checksum = "01771c84475e25352169e3fc901cae565f75ff8c9b40a4fa858f776211f20cbc" dependencies = [ "serde", ] [[package]] name = "solana-signature" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e8a078879d8430cdfbee8e3c1cdf17da74c19d304662580fc463dc91e17699" +checksum = "1f89b547c800c3541d4d5d71de8c82f37a0050f361626213a425ad4f767da27b" dependencies = [ "bs58 0.5.1", "ed25519-dalek 1.0.1", @@ -8678,9 +8700,9 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fa2a6e60f2d7016cf95429e0f60cf4a04d4eed167abd1a5f8b08cbda695893" +checksum = "3012c024a81d591d02a10648d5f4256d6fc3c9d93bc5421cadba224794940f6c" dependencies = [ "serde", "serde_derive", @@ -8690,9 +8712,9 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fa66272c308c39a3ce1ca2a9c422de4bdedc28cfe706d6f2c68727bb626eb7" +checksum = "817a68e2aae8fbcf00adef67eba05c513b0a461b5ed1fd0bd2cb1299a394a650" dependencies = [ "bv", "serde", @@ -8702,9 +8724,9 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2243571ebf8c0c9915c7e71b17469e173c6755fa58af8eb529db3dda84e3e19a" +checksum = "ec316bf731aeb8e9e8a55634efb938eaf5c979d71a9e7d3de54f5848da4994a2" dependencies = [ "solana-instruction", "solana-pubkey", @@ -8712,9 +8734,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fddc2b38975c25199456ff46307c484affb459b84aedefe9618aece2a92326a9" +checksum = "4631cb6e5291e226068e73cf98b4962056eb3c1c32448ce7b8e9f31df522263c" dependencies = [ "async-channel", "bytes", @@ -8750,18 +8772,18 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5822b63dd59f124e4920df8d87640a288bb40f4016fd275d028fee0b94a5a51e" +checksum = "8a6ca7b6e6bf9f8c0de74e90546426190385a1c0b8e4d4f1975165f2335f9dc0" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-thin-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1915dcb44dd5763a30aa32a687057e6a3b16781eb9f5db2800548990560272c3" +checksum = "581ee5cfdd3c509dc7d744970e5e978dab475fff68058a1198bdaf95e9240eaa" dependencies = [ "bincode", "log", @@ -8774,9 +8796,9 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088c4507c8fd4f81c4039d78baf1ea7d68c8b80b2a973ba60838d33d2f7e752d" +checksum = "39f948e963c99cee7d2a14da5faf864cb4ae298f8cb679fc088ec581d9d76aed" dependencies = [ "eager", "enum-iterator", @@ -8785,9 +8807,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f944cd29eb540ca7e8df03c4e6043d5b8042eadab29b1848245c847a7c7c555" +checksum = "b7f832646c0c836f54998c07d34980852837ea30de0f383c8eb0b5ad2a60cc05" dependencies = [ "async-trait", "bincode", @@ -8808,9 +8830,9 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd92caae17b4b828864b85cecf6dba6a87ad0ac433606b8bbd58334c74d0251" +checksum = "ec8a6d17d8de8549df56d64b9af314eec3c4b705372790aa8dde7196e1c5f005" dependencies = [ "serde", "serde_derive", @@ -8820,9 +8842,9 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551dc5dad276919d24287e14e410759e93b801f2ca47dd9ad6c75eb49af26607" +checksum = "1906692abc629b5a2a76c76f3006dd4a9e96917000b043fd311d7bfbc24607f2" dependencies = [ "base64 0.22.1", "bincode", @@ -8836,9 +8858,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73cd35a23e9d6e289a9bf7bf32c1e972bb88bbb5ec434f43b445286b6ea3079" +checksum = "eadee373e77a84b180d955847e7f013195b43498e1a8c526c27771e8d0140915" dependencies = [ "Inflector", "base64 0.22.1", @@ -8864,9 +8886,9 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897c0015c246cb9b98cfaee15921c89cd7c1503bd368e9a3fd9336c17cd6be25" +checksum = "bfc4018fa5363ccf0932b26821abf47c226f52fb865b2944d1f29db83a11774a" dependencies = [ "base64 0.22.1", "bincode", @@ -8882,9 +8904,9 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8e0b8916e7d78678428ca5d669950f6259ac332eab953ed0c8c2c88eebd3d2" +checksum = "9673b27fb01b5479a25bfdd83d5ea1112433c8cf81a0aa8616c829587b285ecd" dependencies = [ "lazy_static", "rand 0.8.5", @@ -8892,9 +8914,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5c6096b155fb1fb73d03fec2264a9671cbe208f71c4c32521ee9c979d91c75" +checksum = "c9a073d7abe99c118378562f2f39037b5f66f926c668cc1162de327b20bbd82c" dependencies = [ "async-trait", "solana-connection-cache", @@ -8907,9 +8929,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae093290bf86006e323e883b9df845e4bdf84f23c37067cfa9837918ed04c87d" +checksum = "9ce3a7b94b3772a3dc66b28f2b6abc7b4b510dbc36387b618398111acc26ec57" dependencies = [ "semver 1.0.25", "serde", @@ -8921,9 +8943,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8421891f95fe3b8291205e37043396c0fb26c2896cc94d53b153e1ba180992fa" +checksum = "5b1a73fa59c07095599091dd9f026aceb478109d61d41720883a22ead9c18f8e" dependencies = [ "itertools 0.12.1", "log", @@ -8935,9 +8957,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf72a022dbb24dcfe1588aa09679042866eb7c0796ea479500ebe9355a7017f" +checksum = "573944c767e4908d6ba12151029cb9ac33b49e7082991c6d978d3ab83ac68d6b" dependencies = [ "bincode", "log", @@ -8955,9 +8977,9 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c19f36d9e5227b4d94e651501a1ab15d58480d93e03d8340cc8593758e50530" +checksum = "0e5f33e61ecb86621dd7b47e164ec09021b0c910a79e3a6b17ae763554ad7138" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -8987,9 +9009,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.10" +version = "2.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8cc94d7eddf6606c22504889b6528734db56ed3c2f651641453d13c9b233d7" +checksum = "6b9c007da85c5be2273c96647e4070bf69b2fda7ba43cddf5eab84c14b2fad67" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -10869,7 +10891,7 @@ dependencies = [ [[package]] name = "wormhole-bridge-client" version = "0.1.0" -source = "git+https://github.com/Near-One/bridge-sdk-rs#b205ad874cab977864e10290e9c14a01778a39e1" +source = "git+https://github.com/Near-One/bridge-sdk-rs#dad70085ca25c28b2438a2fa5e3bf57f1bcd21f3" dependencies = [ "bridge-connector-common", "derive_builder 0.20.2", diff --git a/omni-relayer/example-mainnet-config.toml b/omni-relayer/example-mainnet-config.toml index 949272ea..05e4ff26 100644 --- a/omni-relayer/example-mainnet-config.toml +++ b/omni-relayer/example-mainnet-config.toml @@ -47,6 +47,8 @@ rpc_ws_url = "wss://api.mainnet-beta.solana.com" program_id = "dahPEoZGXfyV58JqqH85okdHmpN8U2q8owgPUXSCPxe" # This is the wormhole contract ID on Solana (can be found here https://wormhole.com/docs/build/reference/contract-addresses/#__tabbed_1_2) wormhole_id = "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth" +deploy_token_emitter_index = 3 +deploy_token_discriminator = [144, 104, 20, 192, 18, 112, 224, 140] # There's a list of account keys and they are store in a strict order. We need indexes to get the right key init_transfer_sender_index = 5 init_transfer_token_index = 1 diff --git a/omni-relayer/example-testnet-config.toml b/omni-relayer/example-testnet-config.toml index 6bcb0074..d8224268 100644 --- a/omni-relayer/example-testnet-config.toml +++ b/omni-relayer/example-testnet-config.toml @@ -47,6 +47,8 @@ rpc_ws_url = "wss://api.devnet.solana.com" program_id = "Gy1XPwYZURfBzHiGAxnw3SYC33SfqsEpGSS5zeBge28p" # This is the wormhole contract ID on Solana (can be found here https://wormhole.com/docs/build/reference/contract-addresses/#__tabbed_1_2) wormhole_id = "3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5" +deploy_token_emitter_index = 3 +deploy_token_discriminator = [144, 104, 20, 192, 18, 112, 224, 140] # There's a list of account keys and they are store in a strict order. We need indexes to get the right key init_transfer_sender_index = 5 init_transfer_token_index = 1 diff --git a/omni-relayer/src/config.rs b/omni-relayer/src/config.rs index dabb5451..37c1d43e 100644 --- a/omni-relayer/src/config.rs +++ b/omni-relayer/src/config.rs @@ -86,6 +86,8 @@ pub struct Solana { pub rpc_ws_url: String, pub program_id: String, pub wormhole_id: String, + pub deploy_token_emitter_index: usize, + pub deploy_token_discriminator: Vec, pub init_transfer_sender_index: usize, pub init_transfer_token_index: usize, pub init_transfer_emitter_index: usize, diff --git a/omni-relayer/src/main.rs b/omni-relayer/src/main.rs index 2569e1e8..b6bd5491 100644 --- a/omni-relayer/src/main.rs +++ b/omni-relayer/src/main.rs @@ -175,6 +175,14 @@ async fn main() -> Result<()> { async move { workers::near::claim_fee(config, redis_client, connector, jsonrpc_client).await } })); + handles.push(tokio::spawn({ + let config = config.clone(); + let redis_client = redis_client.clone(); + let connector = connector.clone(); + let jsonrpc_client = jsonrpc_client.clone(); + async move { workers::near::bind_token(config, redis_client, connector, jsonrpc_client).await } + })); + tokio::select! { _ = tokio::signal::ctrl_c() => { info!("Received Ctrl+C signal, shutting down."); diff --git a/omni-relayer/src/startup/evm.rs b/omni-relayer/src/startup/evm.rs index c4904d3b..05b3cad6 100644 --- a/omni-relayer/src/startup/evm.rs +++ b/omni-relayer/src/startup/evm.rs @@ -13,7 +13,10 @@ use alloy::{ }; use ethereum_types::H256; -use crate::{config, utils, workers::near::FinTransfer}; +use crate::{ + config, utils, + workers::near::{DeployToken, FinTransfer}, +}; fn extract_evm_config(evm: config::Evm) -> (String, String, Address, u64, i64) { ( @@ -73,6 +76,7 @@ pub async fn start_indexer( [ utils::evm::InitTransfer::SIGNATURE_HASH, utils::evm::FinTransfer::SIGNATURE_HASH, + utils::evm::DeployToken::SIGNATURE_HASH, ] .to_vec(), ); @@ -176,6 +180,21 @@ async fn process_log( }, ) .await; + } else if log.log_decode::().is_ok() { + utils::redis::add_event( + redis_connection, + utils::redis::DEPLOY_TOKEN_EVENTS, + tx_hash.to_string(), + DeployToken::Evm { + chain_kind, + block_number, + log, + tx_logs: tx_logs.map(Box::new), + creation_timestamp: chrono::Utc::now().timestamp(), + expected_finalization_time, + }, + ) + .await; } utils::redis::update_last_processed( diff --git a/omni-relayer/src/utils/evm.rs b/omni-relayer/src/utils/evm.rs index 66674c1b..5bd3d2bf 100644 --- a/omni-relayer/src/utils/evm.rs +++ b/omni-relayer/src/utils/evm.rs @@ -38,6 +38,16 @@ sol!( string feeRecipient ); + #[derive(Debug, serde::Serialize, serde::Deserialize)] + event DeployToken( + address indexed tokenAddress, + string token, + string name, + string symbol, + uint8 decimals, + uint8 originDecimals + ); + #[derive(Debug, serde::Serialize, serde::Deserialize)] event LogMessagePublished( address sender, diff --git a/omni-relayer/src/utils/redis.rs b/omni-relayer/src/utils/redis.rs index eea9c83e..5684aae2 100644 --- a/omni-relayer/src/utils/redis.rs +++ b/omni-relayer/src/utils/redis.rs @@ -2,6 +2,8 @@ use log::warn; use omni_types::ChainKind; use redis::{aio::MultiplexedConnection, AsyncCommands}; +pub const DEPLOY_TOKEN_EVENTS: &str = "deploy_token_events"; + pub const NEAR_INIT_TRANSFER_QUEUE: &str = "near_init_transfer_queue"; pub const NEAR_SIGN_TRANSFER_EVENTS: &str = "near_sign_transfer_events"; diff --git a/omni-relayer/src/utils/solana.rs b/omni-relayer/src/utils/solana.rs index 0aa7511d..cf28ff8f 100644 --- a/omni-relayer/src/utils/solana.rs +++ b/omni-relayer/src/utils/solana.rs @@ -7,7 +7,7 @@ use solana_transaction_status::{ option_serializer::OptionSerializer, EncodedTransactionWithStatusMeta, UiRawMessage, }; -use crate::workers::near::FinTransfer; +use crate::workers::near::{DeployToken, FinTransfer}; use crate::workers::solana::InitTransferWithTimestamp; use crate::{config, utils}; @@ -208,6 +208,45 @@ async fn decode_instruction( } } } + } else if decoded_data.starts_with(&solana.deploy_token_discriminator) { + info!("Received DeployToken on Solana"); + + if let Some(OptionSerializer::Some(logs)) = + transaction.clone().meta.map(|meta| meta.log_messages) + { + for log in logs { + if log.contains("Sequence") { + let Some(sequence) = log + .split_ascii_whitespace() + .last() + .map(std::string::ToString::to_string) + else { + warn!("Failed to parse sequence number from log: {:?}", log); + continue; + }; + let Ok(sequence) = sequence.parse() else { + warn!("Failed to parse sequence as a number: {:?}", sequence); + continue; + }; + + utils::redis::add_event( + redis_connection, + utils::redis::DEPLOY_TOKEN_EVENTS, + signature.to_string(), + DeployToken::Solana { + emitter: account_keys + .get(solana.deploy_token_emitter_index) + .context("Missing emitter account key")? + .as_ref() + .context("Emitter account key is None")? + .clone(), + sequence, + }, + ) + .await; + } + } + } } Ok(()) diff --git a/omni-relayer/src/workers/near.rs b/omni-relayer/src/workers/near.rs index 7dfe0845..5ae534b8 100644 --- a/omni-relayer/src/workers/near.rs +++ b/omni-relayer/src/workers/near.rs @@ -8,6 +8,7 @@ use log::{error, info, warn}; use alloy::rpc::types::{Log, TransactionReceipt}; use ethereum_types::H256; +use near_jsonrpc_client::JsonRpcClient; use solana_sdk::pubkey::Pubkey; use omni_connector::OmniConnector; @@ -295,7 +296,7 @@ pub async fn finalize_transfer( } } -#[derive(Debug, serde::Serialize, serde::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub enum FinTransfer { Evm { chain_kind: ChainKind, @@ -338,158 +339,245 @@ pub async fn claim_fee( for (key, event) in events { if let Ok(fin_transfer) = serde_json::from_str::(&event) { - if let FinTransfer::Evm { - chain_kind, - block_number, - log, - tx_logs, - creation_timestamp, - expected_finalization_time, - } = fin_transfer - { - handlers.push(tokio::spawn({ - let config = config.clone(); - let mut redis_connection = redis_connection.clone(); - let connector = connector.clone(); - let jsonrpc_client = jsonrpc_client.clone(); - - async move { - let current_timestamp = chrono::Utc::now().timestamp(); - - if current_timestamp < creation_timestamp + expected_finalization_time { - return; - } + handlers.push(tokio::spawn(handle_evm_fin_transfer( + config.clone(), + connector.clone(), + jsonrpc_client.clone(), + redis_connection.clone(), + key.clone(), + fin_transfer.clone(), + ))); + handlers.push(tokio::spawn(handle_solana_fin_transfer( + config.clone(), + connector.clone(), + redis_connection.clone(), + key.clone(), + fin_transfer.clone(), + ))); + } + } - info!("Trying to process FinTransfer log on {:?}", chain_kind); + join_all(handlers).await; - let vaa = utils::evm::get_vaa_from_evm_log( - connector.clone(), - chain_kind, - tx_logs, - &config, - ) - .await; + tokio::time::sleep(tokio::time::Duration::from_secs( + utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, + )) + .await; + } +} - if vaa.is_none() { - if chain_kind == ChainKind::Eth { - let Ok(light_client_latest_block_number) = - utils::near::get_eth_light_client_last_block_number( - &config, - &jsonrpc_client, - ) - .await - else { - warn!("Failed to get eth light client last block number"); - return; - }; - - if block_number > light_client_latest_block_number { - warn!("ETH light client is not synced yet"); - tokio::time::sleep(tokio::time::Duration::from_secs( - utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, - )) - .await; - return; - } - } else { - warn!("VAA is not ready yet"); - tokio::time::sleep(tokio::time::Duration::from_secs( - utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, - )) - .await; - return; - } - } +async fn handle_evm_fin_transfer( + config: config::Config, + connector: Arc, + jsonrpc_client: JsonRpcClient, + mut redis_connection: redis::aio::MultiplexedConnection, + key: String, + fin_transfer: FinTransfer, +) { + let FinTransfer::Evm { + chain_kind, + block_number, + log, + tx_logs, + creation_timestamp, + expected_finalization_time, + } = fin_transfer + else { + return; + }; + + let current_timestamp = chrono::Utc::now().timestamp(); + + if current_timestamp < creation_timestamp + expected_finalization_time { + return; + } - let Some(tx_hash) = log.transaction_hash else { - warn!("No transaction hash in log: {:?}", log); - return; - }; + info!("Trying to process FinTransfer log on {:?}", chain_kind); + + let vaa = + utils::evm::get_vaa_from_evm_log(connector.clone(), chain_kind, tx_logs, &config).await; + + if vaa.is_none() { + if chain_kind == ChainKind::Eth { + let Ok(light_client_latest_block_number) = + utils::near::get_eth_light_client_last_block_number(&config, &jsonrpc_client).await + else { + warn!("Failed to get eth light client last block number"); + return; + }; + + if block_number > light_client_latest_block_number { + warn!("ETH light client is not synced yet"); + tokio::time::sleep(tokio::time::Duration::from_secs( + utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, + )) + .await; + return; + } + } else { + warn!("VAA is not ready yet"); + tokio::time::sleep(tokio::time::Duration::from_secs( + utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, + )) + .await; + return; + } + } - let Some(topic) = log.topic0() else { - warn!("No topic0 in log: {:?}", log); - return; - }; + let Some(tx_hash) = log.transaction_hash else { + warn!("No transaction hash in log: {:?}", log); + return; + }; + + let Some(topic) = log.topic0() else { + warn!("No topic0 in log: {:?}", log); + return; + }; + + let tx_hash = H256::from_slice(tx_hash.as_slice()); + + let Some(prover_args) = utils::evm::construct_prover_args( + &config, + vaa, + tx_hash, + H256::from_slice(topic.as_slice()), + ProofKind::FinTransfer, + ) + .await + else { + warn!("Failed to get prover args"); + return; + }; + + let claim_fee_args = ClaimFeeArgs { + chain_kind, + prover_args, + }; + + match connector.near_claim_fee(claim_fee_args).await { + Ok(tx_hash) => { + info!("Claimed fee: {:?}", tx_hash); + utils::redis::remove_event( + &mut redis_connection, + utils::redis::FINALIZED_TRANSFERS, + &key, + ) + .await; + } + Err(err) => { + warn!("Failed to claim fee: {}", err); + } + }; +} - let tx_hash = H256::from_slice(tx_hash.as_slice()); +async fn handle_solana_fin_transfer( + config: config::Config, + connector: Arc, + mut redis_connection: redis::aio::MultiplexedConnection, + key: String, + fin_transfer: FinTransfer, +) { + let FinTransfer::Solana { emitter, sequence } = fin_transfer else { + return; + }; + + info!("Trying to process FinTransfer log on Solana"); + + let Ok(vaa) = connector + .wormhole_get_vaa(config.wormhole.solana_chain_id, emitter, sequence) + .await + else { + warn!("Failed to get VAA for sequence: {}", sequence); + return; + }; + + let Ok(prover_args) = borsh::to_vec(&WormholeVerifyProofArgs { + proof_kind: ProofKind::FinTransfer, + vaa, + }) else { + warn!("Failed to serialize prover args to finalize transfer from Solana"); + return; + }; + + let claim_fee_args = ClaimFeeArgs { + chain_kind: ChainKind::Sol, + prover_args, + }; + + match connector.near_claim_fee(claim_fee_args).await { + Ok(tx_hash) => { + info!("Claimed fee: {:?}", tx_hash); + utils::redis::remove_event( + &mut redis_connection, + utils::redis::FINALIZED_TRANSFERS, + &key, + ) + .await; + } + Err(err) => { + warn!("Failed to claim fee: {}", err); + } + }; +} - let Some(prover_args) = utils::evm::construct_prover_args( - &config, - vaa, - tx_hash, - H256::from_slice(topic.as_slice()), - ProofKind::FinTransfer, - ) - .await - else { - warn!("Failed to get prover args"); - return; - }; +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] +pub enum DeployToken { + Evm { + chain_kind: ChainKind, + block_number: u64, + log: Log, + tx_logs: Option>, + creation_timestamp: i64, + expected_finalization_time: i64, + }, + Solana { + emitter: String, + sequence: u64, + }, +} - let claim_fee_args = ClaimFeeArgs { - chain_kind, - prover_args, - }; +pub async fn bind_token( + config: config::Config, + redis_client: redis::Client, + connector: Arc, + jsonrpc_client: near_jsonrpc_client::JsonRpcClient, +) -> Result<()> { + let redis_connection = redis_client.get_multiplexed_tokio_connection().await?; - if let Ok(response) = connector.near_claim_fee(claim_fee_args).await { - info!("Claimed fee: {:?}", response); - utils::redis::remove_event( - &mut redis_connection, - utils::redis::FINALIZED_TRANSFERS, - &key, - ) - .await; - } - } - })); - } else if let FinTransfer::Solana { emitter, sequence } = fin_transfer { - handlers.push(tokio::spawn({ - let mut redis_connection = redis_connection.clone(); - let connector = connector.clone(); - async move { - info!("Trying to process FinTransfer log on Solana"); - - let Ok(vaa) = connector - .wormhole_get_vaa( - config.wormhole.solana_chain_id, - emitter, - sequence, - ) - .await - else { - warn!("Failed to get VAA for sequence: {}", sequence); - return; - }; + loop { + let mut redis_connection_clone = redis_connection.clone(); + let Some(events) = utils::redis::get_events( + &mut redis_connection_clone, + utils::redis::DEPLOY_TOKEN_EVENTS.to_string(), + ) + .await + else { + tokio::time::sleep(tokio::time::Duration::from_secs( + utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, + )) + .await; + continue; + }; - let Ok(prover_args) = borsh::to_vec(&WormholeVerifyProofArgs { - proof_kind: ProofKind::FinTransfer, - vaa, - }) else { - warn!("Failed to serialize prover args to finalize transfer from Solana"); - return; - }; + let mut handlers = Vec::new(); - let claim_fee_args = ClaimFeeArgs { - chain_kind: ChainKind::Sol, - prover_args, - }; - match connector.near_claim_fee(claim_fee_args).await { - Ok(tx_hash) => { - info!("Claimed fee: {:?}", tx_hash); - utils::redis::remove_event( - &mut redis_connection, - utils::redis::FINALIZED_TRANSFERS, - &key, - ) - .await; - } - Err(err) => { - warn!("Failed to claim fee: {}", err); - } - }; - } - })); - } + for (key, event) in events { + if let Ok(deploy_token_event) = serde_json::from_str::(&event) { + handlers.push(tokio::spawn(handle_evm_deploy_token_event( + config.clone(), + connector.clone(), + jsonrpc_client.clone(), + redis_connection.clone(), + key.clone(), + deploy_token_event.clone(), + ))); + handlers.push(tokio::spawn(handle_solana_deploy_token_event( + config.clone(), + connector.clone(), + redis_connection.clone(), + key.clone(), + deploy_token_event.clone(), + ))); } } @@ -501,3 +589,157 @@ pub async fn claim_fee( .await; } } + +async fn handle_evm_deploy_token_event( + config: config::Config, + connector: Arc, + jsonrpc_client: JsonRpcClient, + mut redis_connection: redis::aio::MultiplexedConnection, + key: String, + deploy_token_event: DeployToken, +) { + let DeployToken::Evm { + chain_kind, + block_number, + log, + tx_logs, + creation_timestamp, + expected_finalization_time, + } = deploy_token_event + else { + return; + }; + + let current_timestamp = chrono::Utc::now().timestamp(); + + if current_timestamp < creation_timestamp + expected_finalization_time { + return; + } + + info!("Trying to process DeployToken log on {:?}", chain_kind); + + let vaa = + utils::evm::get_vaa_from_evm_log(connector.clone(), chain_kind, tx_logs, &config).await; + + if vaa.is_none() { + if chain_kind == ChainKind::Eth { + let Ok(light_client_latest_block_number) = + utils::near::get_eth_light_client_last_block_number(&config, &jsonrpc_client).await + else { + warn!("Failed to get eth light client last block number"); + return; + }; + + if block_number > light_client_latest_block_number { + warn!("ETH light client is not synced yet"); + tokio::time::sleep(tokio::time::Duration::from_secs( + utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, + )) + .await; + return; + } + } else { + warn!("VAA is not ready yet"); + tokio::time::sleep(tokio::time::Duration::from_secs( + utils::redis::SLEEP_TIME_AFTER_EVENTS_PROCESS_SECS, + )) + .await; + return; + } + } + + let Some(tx_hash) = log.transaction_hash else { + warn!("No transaction hash in log: {:?}", log); + return; + }; + + let Some(topic) = log.topic0() else { + warn!("No topic0 in log: {:?}", log); + return; + }; + + let tx_hash = H256::from_slice(tx_hash.as_slice()); + + let Some(prover_args) = utils::evm::construct_prover_args( + &config, + vaa, + tx_hash, + H256::from_slice(topic.as_slice()), + ProofKind::DeployToken, + ) + .await + else { + warn!("Failed to get prover args"); + return; + }; + + let bind_token_args = omni_connector::BindTokenArgs::BindTokenWithArgs { + chain_kind, + prover_args, + }; + + match connector.bind_token(bind_token_args).await { + Ok(tx_hash) => { + info!("Bound token: {:?}", tx_hash); + utils::redis::remove_event( + &mut redis_connection, + utils::redis::DEPLOY_TOKEN_EVENTS, + &key, + ) + .await; + } + Err(err) => { + warn!("Failed to bind token: {}", err); + } + }; +} + +async fn handle_solana_deploy_token_event( + config: config::Config, + connector: Arc, + mut redis_connection: redis::aio::MultiplexedConnection, + key: String, + deploy_token_event: DeployToken, +) { + let DeployToken::Solana { emitter, sequence } = deploy_token_event else { + return; + }; + + info!("Trying to process DeployToken log on Solana"); + + let Ok(vaa) = connector + .wormhole_get_vaa(config.wormhole.solana_chain_id, emitter, sequence) + .await + else { + warn!("Failed to get VAA for sequence: {}", sequence); + return; + }; + + let Ok(prover_args) = borsh::to_vec(&WormholeVerifyProofArgs { + proof_kind: ProofKind::DeployToken, + vaa, + }) else { + warn!("Failed to serialize prover args to bind token"); + return; + }; + + let bind_token_args = omni_connector::BindTokenArgs::BindTokenWithArgs { + chain_kind: ChainKind::Sol, + prover_args, + }; + + match connector.bind_token(bind_token_args).await { + Ok(tx_hash) => { + info!("Bound token: {:?}", tx_hash); + utils::redis::remove_event( + &mut redis_connection, + utils::redis::DEPLOY_TOKEN_EVENTS, + &key, + ) + .await; + } + Err(err) => { + warn!("Failed to bind token: {}", err); + } + }; +}