diff --git a/Cargo.lock b/Cargo.lock index 3ed27dc7a..57a7bbed3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,9 +27,9 @@ checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" [[package]] name = "ahash" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f33b5018f120946c1dcf279194f238a9f146725593ead1c08fa47ff22b0b5d3" +checksum = "29661b60bec623f0586702976ff4d0c9942dcb6723161c2df0eea78455cfedfb" dependencies = [ "const-random", ] @@ -42,9 +42,9 @@ checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217" [[package]] name = "aho-corasick" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +checksum = "b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d" dependencies = [ "memchr", ] @@ -80,9 +80,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b602bfe940d21c130f3895acd65221e8a61270debe89d628b9cb4e3ccb8569b" +checksum = "a1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71c" [[package]] name = "approx" @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.4.2" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21279cfaa4f47df10b1816007e738ca3747ef2ee53ffc51cdbf57a8bb266fee3" +checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" dependencies = [ "concurrent-queue", "event-listener", @@ -156,7 +156,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d373d78ded7d0b3fa8039375718cde0aace493f2e34fb60f51cbf567562ca801" dependencies = [ - "async-task 4.0.2", + "async-task", "concurrent-queue", "fastrand", "futures-lite", @@ -166,9 +166,9 @@ dependencies = [ [[package]] name = "async-global-executor" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5586e693d02f9b439742e9d5d68bd64d923c6861954f7d78f91001a0e152d589" +checksum = "fefeb39da249f4c33af940b779a56723ce45809ef5c54dad84bb538d4ffb6d9e" dependencies = [ "async-executor", "async-io", @@ -179,13 +179,14 @@ dependencies = [ [[package]] name = "async-io" -version = "1.1.3" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9951f92a2b4f7793f8fc06a80bdb89b62c618c993497d4606474fb8c34941b5" +checksum = "d54bc4c1c7292475efb2253227dbcfad8fe1ca4c02bc62c510cc2f3da5c4704e" dependencies = [ "concurrent-queue", "fastrand", "futures-lite", + "libc", "log", "nb-connect", "once_cell", @@ -193,6 +194,7 @@ dependencies = [ "polling", "vec-arena", "waker-fn", + "winapi 0.3.9", ] [[package]] @@ -218,14 +220,13 @@ dependencies = [ [[package]] name = "async-std" -version = "1.6.4" +version = "1.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c92085acfce8b32e5b261d0b59b8f3309aee69fea421ea3f271f8b93225754f" +checksum = "a9fa76751505e8df1c7a77762f60486f60c71bbd9b8557f4da6ad47d083732ed" dependencies = [ "async-global-executor", "async-io", "async-mutex", - "async-task 3.0.0", "blocking", "crossbeam-utils", "futures-channel", @@ -244,12 +245,6 @@ dependencies = [ "wasm-bindgen-futures", ] -[[package]] -name = "async-task" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17772156ef2829aadc587461c7753af20b7e8db1529bc66855add962a3b35d3" - [[package]] name = "async-task" version = "4.0.2" @@ -262,7 +257,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce6977f57fa68da77ffe5542950d47e9c23d65f5bc7cb0a9f8700996913eec7" dependencies = [ - "futures 0.3.5", + "futures 0.3.6", "rustls", "webpki", "webpki-roots", @@ -270,9 +265,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687c230d85c0a52504709705fc8a53e4a692b83a2184f03dae73e38e1e93a783" +checksum = "b246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0" dependencies = [ "proc-macro2", "quote", @@ -316,12 +311,12 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.50" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" +checksum = "707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838e" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", @@ -448,16 +443,16 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blocking" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2640778f8053e72c11f621b0a5175a0560a269282aa98ed85107773ab8e2a556" +checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" dependencies = [ "async-channel", + "async-task", "atomic-waker", "fastrand", "futures-lite", "once_cell", - "waker-fn", ] [[package]] @@ -523,11 +518,17 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "chrono" -version = "0.4.18" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d021fddb7bd3e734370acfa4a83f34095571d8570c039f1420d77540f68d5772" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ "libc", "num-integer", @@ -580,9 +581,9 @@ dependencies = [ [[package]] name = "const-random" -version = "0.1.8" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f1af9ac737b2dd2d577701e59fd09ba34822f6f2ebdb30a7647405d9e55e16a" +checksum = "02dc82c12dc2ee6e1ded861cf7d582b46f66f796d1b6c93fa28b911ead95da02" dependencies = [ "const-random-macro", "proc-macro-hack", @@ -590,11 +591,11 @@ dependencies = [ [[package]] name = "const-random-macro" -version = "0.1.8" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25e4c606eb459dd29f7c57b2e0879f2b6f14ee130918c2b78ccb58a9624e6c7a" +checksum = "fc757bbb9544aa296c2ae00c679e81f886b37e28e59097defe0cf524306f6685" dependencies = [ - "getrandom", + "getrandom 0.2.0", "proc-macro-hack", ] @@ -633,7 +634,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ "autocfg 1.0.1", - "cfg-if", + "cfg-if 0.1.10", "lazy_static", ] @@ -682,7 +683,7 @@ dependencies = [ [[package]] name = "darwinia-bridge-primitives" version = "0.0.8" -source = "git+https://github.com/darwinia-network/bridge-primitives.git?branch=types#1ae64b25f701cd3bff063b0583e783540fff5004" +source = "git+https://github.com/darwinia-network/bridge-primitives.git?branch=checker#cac02e08f78905fc3a7bc365e134251ee76b4fb6" dependencies = [ "frame-support", "pallet-im-online", @@ -704,7 +705,7 @@ dependencies = [ "dirs", "env_logger", "etc", - "futures 0.3.5", + "futures 0.3.6", "log", "reqwest", "serde", @@ -725,9 +726,9 @@ checksum = "d4d0e2d24e5ee3b23a01de38eefdcd978907890701f08ffffd4cb457ca4ee8d6" [[package]] name = "derive_more" -version = "0.99.10" +version = "0.99.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcfabdab475c16a93d669dddfc393027803e347d09663f524447f642fbb84ba" +checksum = "41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8c" dependencies = [ "proc-macro2", "quote", @@ -807,9 +808,9 @@ checksum = "4c53dc3a653e0f64081026e4bf048d48fec9fce90c66e8326ca7292df0ff2d82" [[package]] name = "ed25519" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07dfc993ea376e864fe29a4099a61ca0bb994c6d7745a61bf60ddb3d64e05237" +checksum = "37c66a534cbb46ab4ea03477eae19d5c22c01da8258030280b7bd9d8433fb6ef" dependencies = [ "signature", ] @@ -840,7 +841,7 @@ version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -858,9 +859,9 @@ dependencies = [ [[package]] name = "environmental" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" +checksum = "6576a1755ddffd988788025e75bce9e74b018f7cc226198fe931d077911c6d7e" [[package]] name = "etc" @@ -945,9 +946,12 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fastrand" -version = "1.3.5" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c85295147490b8fcf2ea3d104080a105a8b2c63f9c319e82c02d8e952388919" +checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" +dependencies = [ + "instant", +] [[package]] name = "fixed-hash" @@ -1134,15 +1138,15 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" +checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" [[package]] name = "futures" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613" +checksum = "5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e" dependencies = [ "futures-channel", "futures-core", @@ -1155,9 +1159,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74" dependencies = [ "futures-core", "futures-sink", @@ -1165,15 +1169,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" +checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b" [[package]] name = "futures-executor" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314" +checksum = "cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab" dependencies = [ "futures-core", "futures-task", @@ -1183,15 +1187,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" +checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c" [[package]] name = "futures-lite" -version = "1.8.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0db18c5f58083b54b0c416638ea73066722c2815c1e54dd8ba85ee3def593c3a" +checksum = "381a7ad57b1bad34693f63f6f377e1abded7a9c85c9d3eb6771e11c60aaadab9" dependencies = [ "fastrand", "futures-core", @@ -1204,9 +1208,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" +checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -1216,15 +1220,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" +checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd" [[package]] name = "futures-task" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" +checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94" dependencies = [ "once_cell", ] @@ -1237,11 +1241,11 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34" dependencies = [ - "futures 0.1.29", + "futures 0.1.30", "futures-channel", "futures-core", "futures-io", @@ -1281,7 +1285,18 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" +dependencies = [ + "cfg-if 0.1.10", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -1358,7 +1373,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead" dependencies = [ - "ahash 0.2.18", + "ahash 0.2.19", "autocfg 0.1.7", ] @@ -1384,9 +1399,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d63df3d41950fb462ed38308eea019113ad1508da725bbedcd0fa5a85ef5f7" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "heck" @@ -1399,9 +1414,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ "libc", ] @@ -1579,7 +1594,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" dependencies = [ "autocfg 1.0.1", - "hashbrown 0.9.0", + "hashbrown 0.9.1", ] [[package]] @@ -1588,7 +1603,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -1641,13 +1656,13 @@ dependencies = [ [[package]] name = "jsonrpc-client-transports" -version = "15.0.0" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f7b1cdf66312002e15682a24430728bd13036c641163c016bc53fb686a7c2d" +checksum = "489b9c612e60c766f751ab40fcb43cbb55a1e10bb44a9b4307ed510ca598cbd7" dependencies = [ "failure", - "futures 0.1.29", - "jsonrpc-core 15.0.0", + "futures 0.1.30", + "jsonrpc-core 15.1.0", "jsonrpc-pubsub", "log", "serde", @@ -1661,7 +1676,7 @@ version = "14.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0747307121ffb9703afd93afbd0fb4f854c38fb873f2c8b90e0e902f27c7b62" dependencies = [ - "futures 0.1.29", + "futures 0.1.30", "log", "serde", "serde_derive", @@ -1670,11 +1685,11 @@ dependencies = [ [[package]] name = "jsonrpc-core" -version = "15.0.0" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b12567a31d48588a65b6cf870081e6ba1d7b2ae353977cb9820d512e69c70" +checksum = "0745a6379e3edc893c84ec203589790774e4247420033e71a76d3ab4687991fa" dependencies = [ - "futures 0.1.29", + "futures 0.1.30", "log", "serde", "serde_derive", @@ -1683,18 +1698,18 @@ dependencies = [ [[package]] name = "jsonrpc-core-client" -version = "15.0.0" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d175ca0cf77439b5495612bf216c650807d252d665b4b70ab2eebd895a88fac1" +checksum = "6f764902d7b891344a0acb65625f32f6f7c6db006952143bd650209fbe7d94db" dependencies = [ "jsonrpc-client-transports", ] [[package]] name = "jsonrpc-derive" -version = "15.0.0" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2cc6ea7f785232d9ca8786a44e9fa698f92149dcdc1acc4aa1fc69c4993d79e" +checksum = "99a847f9ec7bb52149b2786a17c9cb260d6effc6b8eeb8c16b343a487a7563a3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1704,11 +1719,11 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" -version = "15.0.0" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f389c5cd1f3db258a99296892c21047e21ae73ff4c0e2d39650ea86fe994b4c7" +checksum = "639558e0604013be9787ae52f798506ae42bf4220fe587bdc5625871cc8b9c77" dependencies = [ - "jsonrpc-core 15.0.0", + "jsonrpc-core 15.1.0", "log", "parking_lot 0.10.2", "rand 0.7.3", @@ -1726,7 +1741,7 @@ dependencies = [ "bs58", "bytes", "fnv", - "futures 0.3.5", + "futures 0.3.6", "futures-timer", "globset", "hashbrown 0.7.2", @@ -1803,9 +1818,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.77" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" +checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" [[package]] name = "libm" @@ -1821,7 +1836,7 @@ checksum = "571f5a4604c1a40d75651da141dfde29ad15329f537a779528803297d2220274" dependencies = [ "atomic", "bytes", - "futures 0.3.5", + "futures 0.3.6", "lazy_static", "libp2p-core", "libp2p-core-derive", @@ -1845,7 +1860,7 @@ dependencies = [ "ed25519-dalek", "either", "fnv", - "futures 0.3.5", + "futures 0.3.6", "futures-timer", "lazy_static", "libsecp256k1", @@ -1885,7 +1900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7193e444210132237b81b755ec7fe53f1c4bd2f53cf719729b94c0c72eb6eaa1" dependencies = [ "either", - "futures 0.3.5", + "futures 0.3.6", "libp2p-core", "log", "rand 0.7.3", @@ -1945,7 +1960,7 @@ version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -2034,9 +2049,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ "adler", "autocfg 1.0.1", @@ -2048,7 +2063,7 @@ version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "fuchsia-zircon", "fuchsia-zircon-sys", "iovec", @@ -2134,7 +2149,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9157e87afbc2ef0d84cc0345423d715f445edde00141c93721c162de35a05e5" dependencies = [ "bytes", - "futures 0.3.5", + "futures 0.3.6", "log", "pin-project", "smallvec", @@ -2178,9 +2193,9 @@ dependencies = [ [[package]] name = "nb-connect" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e847c76b390f44529c2071ef06d0b52fbb4bdb04cc8987a5cfa63954c000abca" +checksum = "8123a81538e457d44b933a02faf885d3fe8408806b23fa700e8f01c6c3a98998" dependencies = [ "libc", "winapi 0.3.9", @@ -2192,7 +2207,7 @@ version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "winapi 0.3.9", ] @@ -2268,9 +2283,9 @@ dependencies = [ [[package]] name = "object" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" +checksum = "37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693" [[package]] name = "once_cell" @@ -2300,7 +2315,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 0.1.10", "foreign-types", "lazy_static", "libc", @@ -2467,7 +2482,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "297ff91fa36aec49ce183484b102f6b75b46776822bd81525bfc4cc9b0dd0f5c" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "hashbrown 0.8.2", "impl-trait-for-tuples", "parity-util-mem-derive", @@ -2526,7 +2541,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "cloudabi 0.0.3", "libc", "redox_syscall", @@ -2540,7 +2555,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "cloudabi 0.1.0", "instant", "libc", @@ -2602,18 +2617,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "0.4.24" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f48fad7cfbff853437be7cf54d7b993af21f53be7f0988cbfe4a51535aa77205" +checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "0.4.24" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c6d293bdd3ca5a1697997854c6cf7855e43fb6a0ba1c47af57a5bcafd158ae" +checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" dependencies = [ "proc-macro2", "quote", @@ -2622,9 +2637,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f349a4f0e70676ffb2dbafe16d0c992382d02f0a952e3ddf584fc289dac6b3" +checksum = "e555d9e657502182ac97b539fb3dae8b79cda19e3e4f8ffb5e8de4f18df93c95" [[package]] name = "pin-utils" @@ -2634,20 +2649,20 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "polling" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0720e0b9ea9d52451cf29d3413ba8a9303f8815d9d9653ef70e03ff73e65566" +checksum = "ab773feb154f12c49ffcfd66ab8bdcf9a1843f950db48b0d8be9d4393783b058" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "log", - "wepoll-sys-stjepang", + "wepoll-sys", "winapi 0.3.9", ] @@ -2717,9 +2732,9 @@ checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ef7cd2518ead700af67bf9d1a658d90b6037d77110fd9c0445429d0ba1c6c9" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] @@ -2730,7 +2745,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d70cf4412832bcac9cffe27906f4a66e450d323525e977168c70d1b36120ae" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "fnv", "lazy_static", "parking_lot 0.11.0", @@ -2848,7 +2863,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom", + "getrandom 0.1.15", "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", @@ -2897,7 +2912,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.15", ] [[package]] @@ -3007,7 +3022,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ - "getrandom", + "getrandom 0.1.15", "redox_syscall", "rust-argon2", ] @@ -3034,9 +3049,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.3.9" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +checksum = "36f45b719a674bf4b828ff318906d6c133264c793eff7a41e30074a45b5099e2" dependencies = [ "aho-corasick", "memchr", @@ -3056,9 +3071,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +checksum = "c17be88d9eaa858870aa5e48cc406c206e4600e983fc4f06bbe5750d93d09761" [[package]] name = "remove_dir_all" @@ -3122,9 +3137,9 @@ dependencies = [ [[package]] name = "rlp" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a7d3f9bed94764eac15b8f14af59fac420c236adaff743b7bcc88e265cb4345" +checksum = "1190dcc8c3a512f1eef5d09bb8c84c7f39e1054e174d1795482e18f5272f2e73" dependencies = [ "rustc-hex", ] @@ -3143,9 +3158,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +checksum = "b2610b7f643d18c87dff3b489950269617e6601a51f1f05aa5daefee36f64f0b" [[package]] name = "rustc-hash" @@ -3178,7 +3193,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" dependencies = [ - "futures 0.3.5", + "futures 0.3.6", "pin-project", "static_assertions", ] @@ -3196,8 +3211,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfb4b79b9b6b410c745a00eb4ead11b2ef0819e6eac970a5ec6415abf82777be" dependencies = [ "derive_more", - "futures 0.3.5", - "jsonrpc-core 15.0.0", + "futures 0.3.6", + "jsonrpc-core 15.1.0", "jsonrpc-core-client", "jsonrpc-derive", "jsonrpc-pubsub", @@ -3233,7 +3248,7 @@ dependencies = [ "arrayref", "arrayvec 0.5.1", "curve25519-dalek 2.1.0", - "getrandom", + "getrandom 0.1.15", "merlin", "rand 0.7.3", "rand_core 0.5.1", @@ -3330,9 +3345,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.57" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164eacbdb13512ec2745fb09d51fd5b22b0d65ed294a1dcf7285a360c80a675c" +checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" dependencies = [ "itoa", "ryu", @@ -3358,7 +3373,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "170a36ea86c864a3f16dd2687712dd6646f7019f301e57537c7f4dc9f5916770" dependencies = [ "block-buffer 0.9.0", - "cfg-if", + "cfg-if 0.1.10", "cpuid-bool", "digest 0.9.0", "opaque-debug 0.3.0", @@ -3389,7 +3404,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1" dependencies = [ "block-buffer 0.9.0", - "cfg-if", + "cfg-if 0.1.10", "cpuid-bool", "digest 0.9.0", "opaque-debug 0.3.0", @@ -3450,7 +3465,7 @@ version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "redox_syscall", "winapi 0.3.9", @@ -3464,7 +3479,7 @@ checksum = "1c9dab3f95c9ebdf3a88268c19af668f637a3c5039c2c56ff2d40b1b2d64a25b" dependencies = [ "base64 0.11.0", "bytes", - "futures 0.3.5", + "futures 0.3.6", "http", "httparse", "log", @@ -3483,7 +3498,7 @@ checksum = "b5c71ed3d54db0a699f4948e1bb3e45b450fa31fe602621dee6680361d569c88" dependencies = [ "base64 0.12.3", "bytes", - "futures 0.3.5", + "futures 0.3.6", "httparse", "log", "rand 0.7.3", @@ -3606,7 +3621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b460103293bbf2f4193e43c4f031fdc099c5e27c782369bbb4dacc7765e84057" dependencies = [ "derive_more", - "futures 0.3.5", + "futures 0.3.6", "futures-timer", "libp2p", "log", @@ -3638,7 +3653,7 @@ dependencies = [ "derive_more", "dyn-clonable", "ed25519-dalek", - "futures 0.3.5", + "futures 0.3.6", "hash-db", "hash256-std-hasher", "hex", @@ -3723,7 +3738,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e1dee9244eb6cba1bef9b3a4ec288185e1380e455f1fd348b60252592c1cf0" dependencies = [ - "futures 0.3.5", + "futures 0.3.6", "hash-db", "libsecp256k1", "log", @@ -3929,7 +3944,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83b34ee48341c17c6e2f1e55f6076918f46b0c4505a99ad69ab1edda8b45bbd8" dependencies = [ "derive_more", - "futures 0.3.5", + "futures 0.3.6", "log", "parity-scale-codec", "serde", @@ -3959,7 +3974,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84310a02e2ac89b5e288d7af980414fd88753e3caba92aab1983cd2819991150" dependencies = [ - "futures 0.3.5", + "futures 0.3.6", "futures-core", "futures-timer", "lazy_static", @@ -4020,9 +4035,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.18" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33f6461027d7f08a13715659b2948e1602c31a3756aeae9378bfe7518c72e82" +checksum = "126d630294ec449fae0b16f964e35bf3c74f940da9dca17ee9b905f7b3112eb8" dependencies = [ "clap", "lazy_static", @@ -4031,9 +4046,9 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92e775028122a4b3dd55d58f14fc5120289c69bee99df1d117ae30f84b225c9" +checksum = "65e51c492f9e23a220534971ff5afc14037289de430e3c83f9daf6a1b6ae91e8" dependencies = [ "heck", "proc-macro-error", @@ -4099,7 +4114,7 @@ checksum = "31fb7e8027a8445851f2a45fa82c30d2b005b9e6eb3be9db8669904d6d8ed5ab" dependencies = [ "frame-metadata 11.0.0-rc6", "frame-support", - "futures 0.3.5", + "futures 0.3.6", "hex", "jsonrpsee", "log", @@ -4148,9 +4163,9 @@ checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" [[package]] name = "syn" -version = "1.0.42" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c51d92969d209b54a98397e1b91c8ae82d8c87a7bb87df0b29aa2ad81454228" +checksum = "e03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fdd" dependencies = [ "proc-macro2", "quote", @@ -4175,7 +4190,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "rand 0.7.3", "redox_syscall", @@ -4203,18 +4218,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08" +checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" +checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" dependencies = [ "proc-macro2", "quote", @@ -4342,9 +4357,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645" dependencies = [ "serde", ] @@ -4357,20 +4372,33 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c" +checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "log", + "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bcf46c1f1f06aeea2d6b81f3c863d0930a596c86ad1920d4e5bad6dd1d7119a" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" dependencies = [ "lazy_static", ] @@ -4398,9 +4426,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82bb5079aa76438620837198db8a5c529fb9878c730bc2b28179b0241cf04c10" +checksum = "4ef0a5e15477aa303afbfac3a44cba9b6430fdaad52423b1e6c0dbbe28c3eedd" dependencies = [ "ansi_term 0.12.1", "chrono", @@ -4412,6 +4440,7 @@ dependencies = [ "sharded-slab", "smallvec", "thread_local", + "tracing", "tracing-core", "tracing-log", "tracing-serde", @@ -4621,7 +4650,7 @@ version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "serde", "serde_json", "wasm-bindgen-macro", @@ -4648,7 +4677,7 @@ version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "js-sys", "wasm-bindgen", "web-sys", @@ -4689,7 +4718,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.5", + "futures 0.3.6", "js-sys", "parking_lot 0.11.0", "pin-utils", @@ -4744,7 +4773,7 @@ dependencies = [ "derive_more", "ethabi", "ethereum-types", - "futures 0.3.5", + "futures 0.3.6", "futures-timer", "hyper", "hyper-tls", @@ -4782,10 +4811,10 @@ dependencies = [ ] [[package]] -name = "wepoll-sys-stjepang" -version = "1.0.8" +name = "wepoll-sys" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fdfbb03f290ca0b27922e8d48a0997b4ceea12df33269b9f75e713311eb178d" +checksum = "142bc2cba3fe88be1a8fcb55c727fa4cd5b0cf2d7438722792e22f26f04bc1e0" dependencies = [ "cc", ] diff --git a/Cargo.toml b/Cargo.toml index 56f947c7e..7bfb6503d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,9 +41,9 @@ features = ["full"] [dependencies.primitives] package = "darwinia-bridge-primitives" -version = "0.0.8" +# version = "0.0.8" git = "https://github.com/darwinia-network/bridge-primitives.git" -branch = "types" +branch = "checker" # path = "../bridge-primitives" features = ["runtime"] diff --git a/src/api/darwinia.rs b/src/api/darwinia.rs index 8b1378917..c539a82f7 100644 --- a/src/api/darwinia.rs +++ b/src/api/darwinia.rs @@ -1 +1,148 @@ +//! Darwinia API +use crate::{ + pool::EthereumTransaction, + result::{Error, Result}, + Config, +}; +use primitives::{ + chain::eth::{HeaderStuff, PendingHeader}, + frame::ethereum::{ + backing::VerifiedProofStoreExt, + game::{PendingHeadersStoreExt, RelayProposalT, RelayProposalsStoreExt}, + relay::{ConfirmedBlockNumbersStoreExt, SubmitProposalCallExt}, + }, + runtime::DarwiniaRuntime, +}; +use sp_keyring::sr25519::sr25519::Pair; +use substrate_subxt::{sp_core::Pair as PairTrait, Client, ClientBuilder, PairSigner}; +use web3::types::H256; +/// Dawrinia API +pub struct Darwinia { + client: Client, + /// Keyring signer + pub signer: PairSigner, +} + +impl Darwinia { + /// New darwinia API + pub async fn new(config: &Config) -> Result { + let pair = Pair::from_string(&config.seed, None).unwrap(); + let signer = PairSigner::::new(pair); + let client = ClientBuilder::::new() + .set_url(&config.node) + .build() + .await?; + + Ok(Darwinia { client, signer }) + } + + /// Get relay proposals + pub async fn relay_proposals(&self) -> Result> { + Ok(self.client.relay_proposals(None).await?) + } + + /// Get current proposals + pub async fn current_proposals(&self) -> Result> { + let proposals = self.relay_proposals().await?; + let mut blocks = vec![]; + for p in proposals { + blocks.append( + &mut p + .bonded_proposal + .iter() + .map(|bp| bp.1.header.number) + .collect(), + ) + } + + Ok(blocks) + } + + /// Get confirmed block numbers + pub async fn confirmed_block_numbers(&self) -> Result> { + Ok(self.client.confirmed_block_numbers(None).await?) + } + + /// Get the last confirmed block + pub async fn last_confirmed(&self) -> Result { + Ok( + if let Some(confirmed) = self.confirmed_block_numbers().await?.iter().max() { + *confirmed + } else { + 0 + }, + ) + } + + /// Get pending headers + pub async fn pending_headers(&self) -> Result> { + Ok(self.client.pending_headers(None).await?) + } + + /// Submit Proposal + pub async fn submit_proposal(&self, proposal: Vec) -> Result { + Ok(self.client.submit_proposal(&self.signer, proposal).await?) + } + + /// Check if should redeem + pub async fn should_redeem(&self, tx: EthereumTransaction) -> Result<()> { + if let Some(res) = self + .client + .verified_proof(tx.hash(), tx.index, None) + .await? + { + if res { + Err(Error::Bridger(format!( + "The tx {:?} has been redeemed", + tx.hash, + ))) + } else { + Ok(()) + } + } else { + Ok(()) + } + } + + /// Check if should relay + pub async fn should_relay(&self, target: u64) -> Result { + let last_confirmed = self.last_confirmed().await?; + if target <= last_confirmed { + return Err(Error::Bridger(format!( + "The target block {} is not greater than the last confirmed {}", + target, last_confirmed, + ))); + } + + // Check if confirmed + let confirmed_blocks = self.confirmed_block_numbers().await?; + if confirmed_blocks.contains(&target) { + return Err(Error::Bridger(format!( + "The target block {} has already been submitted", + target, + ))); + } + + // Check if the target block is pending + let pending_headers = self.pending_headers().await?; + for p in pending_headers { + if p.1 == target { + return Err(Error::Bridger(format!( + "The target block {} is pending", + target, + ))); + } + } + + // Check if the target block is in relayer game + let proposals = self.current_proposals().await?; + if proposals.contains(&target) { + return Err(Error::Bridger(format!( + "The target block {} has been in relayer game", + target, + ))); + } + Ok(last_confirmed) + } +} diff --git a/src/api/mod.rs b/src/api/mod.rs index ff2cf27d6..75963da9d 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1,4 +1,5 @@ //! Briger APIs +mod darwinia; mod shadow; -pub use shadow::Shadow; +pub use self::{darwinia::Darwinia, shadow::Shadow}; diff --git a/src/api/shadow.rs b/src/api/shadow.rs index 49276a832..4ff811252 100644 --- a/src/api/shadow.rs +++ b/src/api/shadow.rs @@ -1,5 +1,5 @@ //! Darwinia shadow API -use crate::result::Result; +use crate::{result::Result, Config}; use primitives::chain::eth::{ EthereumReceiptProofThing, EthereumReceiptProofThingJson, HeaderStuff, HeaderStuffJson, HeaderThing, HeaderThingWithConfirmationJson, @@ -21,10 +21,18 @@ pub struct Shadow { /// Shadow API pub api: String, /// HTTP Client - pub client: Client, + pub http: Client, } impl Shadow { + /// Init Shadow API from config + pub fn new(config: &Config) -> Shadow { + Shadow { + api: config.shadow.clone(), + http: Client::new(), + } + } + /// Get HeaderThing /// /// ``` @@ -45,7 +53,7 @@ impl Shadow { /// ``` pub async fn header_thing(&self, number: usize) -> Result { let json: HeaderThingWithConfirmationJson = self - .client + .http .get(&format!("{}/eth/header/{}", &self.api, number)) .send() .await? @@ -75,7 +83,7 @@ impl Shadow { /// ``` pub async fn receipt(&self, tx: &str) -> Result { let json: EthereumReceiptProofThingJson = self - .client + .http .get(&format!("{}/eth/receipt/{}", &self.api, tx)) .send() .await? @@ -104,6 +112,10 @@ impl Shadow { /// } /// ``` pub async fn proposal(&self, member: u64, target: u64, last_leaf: u64) -> Result { + info!( + "Requesting proposal - member: {}, target: {}, last_leaf: {}", + member, target, last_leaf + ); let map: Value = serde_json::to_value(Proposal { member, target, @@ -111,7 +123,7 @@ impl Shadow { })?; let json: HeaderStuffJson = self - .client + .http .post(&format!("{}/eth/proposal", self.api)) .json(&map) .send() diff --git a/src/cmd/run.rs b/src/cmd/run.rs index db4e750d5..d85397946 100644 --- a/src/cmd/run.rs +++ b/src/cmd/run.rs @@ -12,7 +12,7 @@ pub async fn exec(path: Option, verbose: bool) -> Result<()> { } env_logger::init(); - let mut listener = Listener::from_config(Config::new(path)?)?; + let mut listener = Listener::from_config(Config::new(path)?).await?; listener.start().await?; Ok(()) } diff --git a/src/config.rs b/src/config.rs index ce47aeb8d..30eed613f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -43,7 +43,10 @@ pub struct EthereumConfig { /// Service step #[derive(Debug, Serialize, Deserialize)] pub struct Step { - ethereum: usize, + /// Ethereum step + pub ethereum: u64, + /// Relay Step + pub relay: u64, } /// Bridger Config @@ -101,7 +104,10 @@ impl Default for Config { }, }, }, - step: Step { ethereum: 30 }, + step: Step { + ethereum: 30, + relay: 60, + }, } } } diff --git a/src/lib.rs b/src/lib.rs index b77ec767b..4ce43b24c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,6 @@ extern crate log; mod config; mod listener; -mod runtime; pub mod api; pub mod cmd; diff --git a/src/listener.rs b/src/listener.rs index b2df72f03..22f7268be 100644 --- a/src/listener.rs +++ b/src/listener.rs @@ -1,11 +1,12 @@ //! Bridger Listener use crate::{ + api::{Darwinia, Shadow}, pool::Pool, result::{Error, Result}, - service::{EthereumService, Service}, + service::{EthereumService, RelayService, Service}, Config, }; -use std::{cell::RefCell, sync::Arc}; +use std::sync::{Arc, Mutex}; use web3::transports::http::Http; /// Bridger listener @@ -34,10 +35,10 @@ impl Listener { /// Start services pub async fn start(&mut self) -> Result<()> { - let pool = Arc::new(RefCell::new(Pool::default())); + let pool = Arc::new(Mutex::new(Pool::default())); let result = futures::future::join_all(self.0.iter_mut().map(|s| { info!("Start service {}", s.name()); - s.run(pool.clone()) + s.run(Arc::clone(&pool)) })) .await; for r in result { @@ -47,7 +48,7 @@ impl Listener { } /// Generate listener from `Config` - pub fn from_config(config: Config) -> Result { + pub async fn from_config(config: Config) -> Result { let mut l = Self::default(); if config.eth.rpc.starts_with("ws") { return Err(Error::Bridger( @@ -55,8 +56,18 @@ impl Listener { )); } + // APIs + let shadow = Arc::new(Shadow::new(&config)); + let darwinia = Arc::new(Darwinia::new(&config).await?); + + // 1. Transaction Listener + // 2. Relay Listener let http = >::new_http(&config)?; + let relay = RelayService::new(&config, shadow, darwinia); + + // Register l.register(http)?; + l.register(relay)?; Ok(l) } } diff --git a/src/pool.rs b/src/pool.rs index 4ad6de62b..361b28dec 100644 --- a/src/pool.rs +++ b/src/pool.rs @@ -1,17 +1,53 @@ //! Transaction pool +use std::cmp::{Ord, Ordering, PartialOrd}; use web3::types::H256; -/// Reedeemable Ethereum transactions -pub enum EthereumTransaction { +/// Ethereum transaction event with hash +#[derive(PartialEq, Eq, Debug)] +pub enum EthereumTransactionHash { /// Deposit event Deposit(H256), /// Token event Token(H256), } +/// Reedeemable Ethereum transaction +#[derive(PartialEq, Eq)] +pub struct EthereumTransaction { + /// Transaction event with hash + pub hash: EthereumTransactionHash, + /// Transaction block + pub block: u64, + /// Transaction index + pub index: u64, +} + +impl EthereumTransaction { + /// Get the hash + pub fn hash(&self) -> [u8; 32] { + match self.hash { + EthereumTransactionHash::Token(h) => h, + EthereumTransactionHash::Deposit(h) => h, + } + .to_fixed_bytes() + } +} + +impl PartialOrd for EthereumTransaction { + fn partial_cmp(&self, o: &Self) -> Option { + self.block.partial_cmp(&o.block) + } +} + +impl Ord for EthereumTransaction { + fn cmp(&self, o: &Self) -> Ordering { + self.block.cmp(&o.block) + } +} + /// Transaction pool #[derive(Default)] pub struct Pool { /// Ethereum transactions - pub eth: Vec, + pub ethereum: Vec, } diff --git a/src/result.rs b/src/result.rs index ba5c9cdab..9d0e560f6 100644 --- a/src/result.rs +++ b/src/result.rs @@ -8,6 +8,7 @@ use std::{ io::Error as Io, result::Result as StdResult, }; +use substrate_subxt::Error as Subxt; use toml::{de::Error as DeToml, ser::Error as SerToml}; use web3::Error as Web3; @@ -49,7 +50,7 @@ macro_rules! error { }; } -error! {Io, Bridger, DeToml, SerToml, Etc, Web3, Reqwest, SerdeJson} +error! {Io, Bridger, DeToml, SerToml, Etc, Web3, Reqwest, SerdeJson, Subxt} /// Bridger Result pub type Result = StdResult; diff --git a/src/runtime.rs b/src/runtime.rs deleted file mode 100644 index 8b1378917..000000000 --- a/src/runtime.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/service/eth.rs b/src/service/eth.rs index 6c78e1af3..608a20f8a 100644 --- a/src/service/eth.rs +++ b/src/service/eth.rs @@ -1,13 +1,16 @@ //! Ethereum transaction service use crate::{ - pool::{EthereumTransaction, Pool}, + pool::{EthereumTransaction, EthereumTransactionHash, Pool}, result::Result as BridgerResult, service::Service, Config, }; use async_trait::async_trait; use primitives::bytes; -use std::{cell::RefCell, sync::Arc, time::Duration}; +use std::{ + sync::{Arc, Mutex}, + time::Duration, +}; use web3::{ transports::{http::Http, ws::WebSocket}, types::{BlockNumber, FilterBuilder, H160, H256, U64}, @@ -33,6 +36,7 @@ pub struct EthereumService { filter: [FilterBuilder; 2], web3: Web3, start: u64, + step: u64, } impl EthereumService { @@ -76,6 +80,7 @@ impl EthereumService { filter: Self::parse_filter(&config)?, start: config.eth.start, web3: Web3::new(Http::new(&config.eth.rpc)?), + step: config.step.ethereum, }) } @@ -86,6 +91,7 @@ impl EthereumService { filter: Self::parse_filter(&config)?, start: config.eth.start, web3: Web3::new(WebSocket::new(&config.eth.rpc).await?), + step: config.step.ethereum, }) } @@ -105,12 +111,26 @@ impl EthereumService { .await? .iter() .map(|l| { + let block = l.block_number.unwrap_or_default().low_u64(); + let index = l.transaction_index.unwrap_or_default().low_u64(); if l.topics.contains(&self.contract.ring) || l.topics.contains(&self.contract.kton) { - EthereumTransaction::Token(l.transaction_hash.unwrap_or_default()) + EthereumTransaction { + hash: EthereumTransactionHash::Token( + l.transaction_hash.unwrap_or_default(), + ), + block, + index, + } } else { - EthereumTransaction::Deposit(l.transaction_hash.unwrap_or_default()) + EthereumTransaction { + hash: EthereumTransactionHash::Deposit( + l.transaction_hash.unwrap_or_default(), + ), + block, + index, + } } }) .collect::>(), @@ -126,7 +146,7 @@ impl Service for EthereumService { SERVICE_NAME } - async fn run(&mut self, pool: Arc>) -> BridgerResult<()> { + async fn run(&mut self, pool: Arc>) -> BridgerResult<()> { let eth = self.web3.eth(); let mut block_number: u64; let mut start = self.start; @@ -134,13 +154,15 @@ impl Service for EthereumService { loop { block_number = eth.block_number().await?.as_u64(); if block_number == start { - tokio::time::delay_for(Duration::from_secs(30)).await; + tokio::time::delay_for(Duration::from_secs(self.step)).await; continue; } let mut txs = self.scan(start, block_number).await?; info!("Found {} txs from {} to {}", txs.len(), start, block_number); - pool.borrow_mut().eth.append(&mut txs); + + let mut pool = pool.lock().unwrap(); + pool.ethereum.append(&mut txs); start = block_number; } } diff --git a/src/service/mod.rs b/src/service/mod.rs index 3f5982dc0..db27f546c 100644 --- a/src/service/mod.rs +++ b/src/service/mod.rs @@ -1,11 +1,12 @@ //! Bridger services use crate::{pool::Pool, result::Result}; use async_trait::async_trait; -use std::{cell::RefCell, sync::Arc}; +use std::sync::{Arc, Mutex}; mod eth; +mod relay; -pub use eth::EthereumService; +pub use self::{eth::EthereumService, relay::RelayService}; /// Bridge service #[async_trait(?Send)] @@ -13,5 +14,5 @@ pub trait Service { /// Service name fn name<'c>(&self) -> &'c str; /// Run target service - async fn run(&mut self, pool: Arc>) -> Result<()>; + async fn run(&mut self, pool: Arc>) -> Result<()>; } diff --git a/src/service/relay.rs b/src/service/relay.rs index e69de29bb..2ab84c87d 100644 --- a/src/service/relay.rs +++ b/src/service/relay.rs @@ -0,0 +1,70 @@ +//! Relay Service +use crate::{ + api::{Darwinia, Shadow}, + config::Config, + result::Result as BridgerResult, + service::Service, + Pool, +}; +use async_trait::async_trait; +use std::{ + sync::{Arc, Mutex}, + time::Duration, +}; + +/// Attributes +const SERVICE_NAME: &str = "relay"; + +/// Relay Service +pub struct RelayService { + step: u64, + /// Shadow API + pub shadow: Arc, + /// Dawrinia API + pub darwinia: Arc, +} + +impl RelayService { + /// New relay service + pub fn new(config: &Config, shadow: Arc, darwinia: Arc) -> RelayService { + RelayService { + darwinia, + shadow, + step: config.step.relay, + } + } +} + +#[async_trait(?Send)] +impl Service for RelayService { + fn name<'e>(&self) -> &'e str { + SERVICE_NAME + } + + async fn run(&mut self, pool: Arc>) -> BridgerResult<()> { + loop { + tokio::time::delay_for(Duration::from_secs(self.step)).await; + + // Try to relay + let pool_clone = pool.lock().unwrap(); + if let Some(max) = pool_clone.ethereum.iter().max() { + let max = max.block.to_owned(); + drop(pool_clone); + + if let Ok(last) = self.darwinia.should_relay(max).await { + let parcel = self.shadow.proposal(last, max + 1, max).await; + + if parcel.is_err() { + error!("{:?}", parcel); + continue; + } + + match self.darwinia.submit_proposal(vec![parcel?]).await { + Ok(hash) => info!("Summited proposal {:?}", hash), + Err(err) => error!("{:?}", err), + } + } + } + } + } +}