git.delta.rocks / unique-network / refs/commits / bda8c76d3c78

difftreelog

Merge remote-tracking branch 'origin/develop' into develop

kpozdnikin2020-12-29parents: #ac63732 #3e2b774.patch.diff
in: master
# Conflicts:
#	tests/src/contracts.test.ts

49 files changed

modifiedCargo.lockdiffbeforeafterboth
1212
13[[package]]13[[package]]
14name = "addr2line"14name = "addr2line"
15version = "0.13.0"15version = "0.14.0"
16source = "registry+https://github.com/rust-lang/crates.io-index"16source = "registry+https://github.com/rust-lang/crates.io-index"
17checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072"17checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423"
18dependencies = [18dependencies = [
19 "gimli 0.22.0",19 "gimli 0.23.0",
20]20]
2121
22[[package]]22[[package]]
55 "aes",55 "aes",
56 "block-cipher",56 "block-cipher",
57 "ghash",57 "ghash",
58 "subtle 2.3.0",58 "subtle 2.4.0",
59]59]
6060
61[[package]]61[[package]]
94source = "registry+https://github.com/rust-lang/crates.io-index"94source = "registry+https://github.com/rust-lang/crates.io-index"
95checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217"95checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217"
96
97[[package]]
98name = "ahash"
99version = "0.4.7"
100source = "registry+https://github.com/rust-lang/crates.io-index"
101checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e"
96102
97[[package]]103[[package]]
98name = "aho-corasick"104name = "aho-corasick"
99version = "0.7.14"105version = "0.7.15"
100source = "registry+https://github.com/rust-lang/crates.io-index"106source = "registry+https://github.com/rust-lang/crates.io-index"
101checksum = "b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d"107checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
102dependencies = [108dependencies = [
103 "memchr",109 "memchr",
104]110]
134140
135[[package]]141[[package]]
136name = "anyhow"142name = "anyhow"
137version = "1.0.33"143version = "1.0.35"
138source = "registry+https://github.com/rust-lang/crates.io-index"144source = "registry+https://github.com/rust-lang/crates.io-index"
139checksum = "a1fd36ffbb1fb7c834eac128ea8d0e310c5aeb635548f9d58861e1308d46e71c"145checksum = "2c0df63cb2955042487fad3aefd2c6e3ae7389ac5dc1beb28921de0b69f779d4"
140146
141[[package]]147[[package]]
142name = "approx"148name = "approx"
149155
150[[package]]156[[package]]
151name = "arc-swap"157name = "arc-swap"
152version = "0.4.7"158version = "0.4.8"
153source = "registry+https://github.com/rust-lang/crates.io-index"159source = "registry+https://github.com/rust-lang/crates.io-index"
154checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"160checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8"
155161
156[[package]]162[[package]]
157name = "arrayref"163name = "arrayref"
170176
171[[package]]177[[package]]
172name = "arrayvec"178name = "arrayvec"
173version = "0.5.1"179version = "0.5.2"
174source = "registry+https://github.com/rust-lang/crates.io-index"180source = "registry+https://github.com/rust-lang/crates.io-index"
175checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"181checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
176182
177[[package]]183[[package]]
178name = "asn1_der"184name = "asn1_der"
206212
207[[package]]213[[package]]
208name = "async-executor"214name = "async-executor"
209version = "1.3.0"215version = "1.4.0"
210source = "registry+https://github.com/rust-lang/crates.io-index"216source = "registry+https://github.com/rust-lang/crates.io-index"
211checksum = "d373d78ded7d0b3fa8039375718cde0aace493f2e34fb60f51cbf567562ca801"217checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146"
212dependencies = [218dependencies = [
213 "async-task",219 "async-task",
214 "concurrent-queue",220 "concurrent-queue",
215 "fastrand",221 "fastrand",
216 "futures-lite",222 "futures-lite",
217 "once_cell 1.4.1",223 "once_cell 1.5.2",
218 "vec-arena",224 "vec-arena",
219]225]
220226
221[[package]]227[[package]]
222name = "async-global-executor"228name = "async-global-executor"
223version = "1.4.0"229version = "1.4.3"
224source = "registry+https://github.com/rust-lang/crates.io-index"230source = "registry+https://github.com/rust-lang/crates.io-index"
225checksum = "0659b83a146398616883aa5199cdd1b055ec088a83c9a338eab3534f33f0622e"231checksum = "73079b49cd26b8fd5a15f68fc7707fc78698dc2a3d61430f2a7a9430230dfa04"
226dependencies = [232dependencies = [
227 "async-executor",233 "async-executor",
228 "async-io",234 "async-io",
229 "futures-lite",235 "futures-lite",
230 "num_cpus",236 "num_cpus",
231 "once_cell 1.4.1",237 "once_cell 1.5.2",
232]238]
233239
234[[package]]240[[package]]
235name = "async-io"241name = "async-io"
236version = "1.1.10"242version = "1.3.1"
237source = "registry+https://github.com/rust-lang/crates.io-index"243source = "registry+https://github.com/rust-lang/crates.io-index"
238checksum = "d54bc4c1c7292475efb2253227dbcfad8fe1ca4c02bc62c510cc2f3da5c4704e"244checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd"
239dependencies = [245dependencies = [
240 "concurrent-queue",246 "concurrent-queue",
241 "fastrand",247 "fastrand",
242 "futures-lite",248 "futures-lite",
243 "libc",249 "libc",
244 "log",250 "log",
245 "nb-connect",251 "nb-connect",
246 "once_cell 1.4.1",252 "once_cell 1.5.2",
247 "parking",253 "parking",
248 "polling",254 "polling",
249 "vec-arena",255 "vec-arena",
260 "event-listener",266 "event-listener",
261]267]
268
269[[package]]
270name = "async-process"
271version = "1.0.1"
272source = "registry+https://github.com/rust-lang/crates.io-index"
273checksum = "4c8cea09c1fb10a317d1b5af8024eeba256d6554763e85ecd90ff8df31c7bbda"
274dependencies = [
275 "async-io",
276 "blocking",
277 "cfg-if 0.1.10",
278 "event-listener",
279 "futures-lite",
280 "once_cell 1.5.2",
281 "signal-hook",
282 "winapi 0.3.9",
283]
262284
263[[package]]285[[package]]
264name = "async-std"286name = "async-std"
265version = "1.6.5"287version = "1.8.0"
266source = "registry+https://github.com/rust-lang/crates.io-index"288source = "registry+https://github.com/rust-lang/crates.io-index"
267checksum = "a9fa76751505e8df1c7a77762f60486f60c71bbd9b8557f4da6ad47d083732ed"289checksum = "8f9f84f1280a2b436a2c77c2582602732b6c2f4321d5494d6e799e6c367859a8"
268dependencies = [290dependencies = [
291 "async-channel",
269 "async-global-executor",292 "async-global-executor",
270 "async-io",293 "async-io",
271 "async-mutex",294 "async-mutex",
295 "async-process",
272 "blocking",296 "blocking",
273 "crossbeam-utils",297 "crossbeam-utils 0.8.1",
274 "futures-channel",298 "futures-channel",
275 "futures-core",299 "futures-core",
276 "futures-io",300 "futures-io",
280 "log",304 "log",
281 "memchr",305 "memchr",
282 "num_cpus",306 "num_cpus",
283 "once_cell 1.4.1",307 "once_cell 1.5.2",
284 "pin-project-lite",308 "pin-project-lite 0.2.0",
285 "pin-utils",309 "pin-utils",
286 "slab",310 "slab",
287 "wasm-bindgen-futures",311 "wasm-bindgen-futures",
288]312]
289313
290[[package]]314[[package]]
291name = "async-task"315name = "async-task"
292version = "4.0.2"316version = "4.0.3"
293source = "registry+https://github.com/rust-lang/crates.io-index"317source = "registry+https://github.com/rust-lang/crates.io-index"
294checksum = "8ab27c1aa62945039e44edaeee1dc23c74cc0c303dd5fe0fb462a184f1c3a518"318checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0"
295319
296[[package]]320[[package]]
297name = "async-tls"321name = "async-tls"
298version = "0.8.0"322version = "0.8.0"
299source = "registry+https://github.com/rust-lang/crates.io-index"323source = "registry+https://github.com/rust-lang/crates.io-index"
300checksum = "df097e3f506bec0e1a24f06bb3c962c228f36671de841ff579cb99f371772634"324checksum = "df097e3f506bec0e1a24f06bb3c962c228f36671de841ff579cb99f371772634"
301dependencies = [325dependencies = [
302 "futures 0.3.6",326 "futures 0.3.8",
303 "rustls",327 "rustls",
304 "webpki",328 "webpki",
305 "webpki-roots 0.19.0",329 "webpki-roots 0.19.0",
306]330]
307331
308[[package]]332[[package]]
309name = "async-trait"333name = "async-trait"
310version = "0.1.41"334version = "0.1.42"
311source = "registry+https://github.com/rust-lang/crates.io-index"335source = "registry+https://github.com/rust-lang/crates.io-index"
312checksum = "b246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0"336checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d"
313dependencies = [337dependencies = [
314 "proc-macro2",338 "proc-macro2",
315 "quote",339 "quote",
353377
354[[package]]378[[package]]
355name = "backtrace"379name = "backtrace"
356version = "0.3.53"380version = "0.3.55"
357source = "registry+https://github.com/rust-lang/crates.io-index"381source = "registry+https://github.com/rust-lang/crates.io-index"
358checksum = "707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838e"382checksum = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598"
359dependencies = [383dependencies = [
360 "addr2line",384 "addr2line",
361 "cfg-if 1.0.0",385 "cfg-if 1.0.0",
362 "libc",386 "libc",
363 "miniz_oxide",387 "miniz_oxide",
364 "object 0.21.1",388 "object 0.22.0",
365 "rustc-demangle",389 "rustc-demangle",
366]390]
367391
383source = "registry+https://github.com/rust-lang/crates.io-index"407source = "registry+https://github.com/rust-lang/crates.io-index"
384checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"408checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
409
410[[package]]
411name = "base64"
412version = "0.13.0"
413source = "registry+https://github.com/rust-lang/crates.io-index"
414checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
385415
386[[package]]416[[package]]
387name = "bincode"417name = "bincode"
456486
457[[package]]487[[package]]
458name = "blake2"488name = "blake2"
459version = "0.9.0"489version = "0.9.1"
460source = "registry+https://github.com/rust-lang/crates.io-index"490source = "registry+https://github.com/rust-lang/crates.io-index"
461checksum = "84ce5b6108f8e154604bd4eb76a2f726066c3464d5a552a4229262a18c9bb471"491checksum = "10a5720225ef5daecf08657f23791354e1685a8c91a4c60c7f3d3b2892f978f4"
462dependencies = [492dependencies = [
463 "byte-tools",
464 "byteorder 1.3.4",
465 "crypto-mac 0.8.0",493 "crypto-mac 0.8.0",
466 "digest 0.9.0",494 "digest 0.9.0",
467 "opaque-debug 0.2.3",495 "opaque-debug 0.3.0",
468]496]
469497
470[[package]]498[[package]]
479507
480[[package]]508[[package]]
481name = "blake2b_simd"509name = "blake2b_simd"
482version = "0.5.10"510version = "0.5.11"
483source = "registry+https://github.com/rust-lang/crates.io-index"511source = "registry+https://github.com/rust-lang/crates.io-index"
484checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a"512checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587"
485dependencies = [513dependencies = [
486 "arrayref",514 "arrayref",
487 "arrayvec 0.5.1",515 "arrayvec 0.5.2",
488 "constant_time_eq",516 "constant_time_eq",
489]517]
490518
491[[package]]519[[package]]
492name = "blake2s_simd"520name = "blake2s_simd"
493version = "0.5.10"521version = "0.5.11"
494source = "registry+https://github.com/rust-lang/crates.io-index"522source = "registry+https://github.com/rust-lang/crates.io-index"
495checksum = "ab9e07352b829279624ceb7c64adb4f585dacdb81d35cafae81139ccd617cf44"523checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2"
496dependencies = [524dependencies = [
497 "arrayref",525 "arrayref",
498 "arrayvec 0.5.1",526 "arrayvec 0.5.2",
499 "constant_time_eq",527 "constant_time_eq",
500]528]
501529
556 "atomic-waker",584 "atomic-waker",
557 "fastrand",585 "fastrand",
558 "futures-lite",586 "futures-lite",
559 "once_cell 1.4.1",587 "once_cell 1.5.2",
560]588]
561589
562[[package]]590[[package]]
565source = "registry+https://github.com/rust-lang/crates.io-index"593source = "registry+https://github.com/rust-lang/crates.io-index"
566checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb"594checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb"
595
596[[package]]
597name = "bs58"
598version = "0.4.0"
599source = "registry+https://github.com/rust-lang/crates.io-index"
600checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
567601
568[[package]]602[[package]]
569name = "bstr"603name = "bstr"
570version = "0.2.13"604version = "0.2.14"
571source = "registry+https://github.com/rust-lang/crates.io-index"605source = "registry+https://github.com/rust-lang/crates.io-index"
572checksum = "31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931"606checksum = "473fc6b38233f9af7baa94fb5852dca389e3d95b8e21c8e3719301462c5d9faf"
573dependencies = [607dependencies = [
574 "memchr",608 "memchr",
575]609]
635669
636[[package]]670[[package]]
637name = "cc"671name = "cc"
638version = "1.0.61"672version = "1.0.66"
639source = "registry+https://github.com/rust-lang/crates.io-index"673source = "registry+https://github.com/rust-lang/crates.io-index"
640checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d"674checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48"
641dependencies = [675dependencies = [
642 "jobserver",676 "jobserver",
643]677]
669source = "registry+https://github.com/rust-lang/crates.io-index"703source = "registry+https://github.com/rust-lang/crates.io-index"
670checksum = "244fbce0d47e97e8ef2f63b81d5e05882cb518c68531eb33194990d7b7e85845"704checksum = "244fbce0d47e97e8ef2f63b81d5e05882cb518c68531eb33194990d7b7e85845"
671dependencies = [705dependencies = [
672 "stream-cipher 0.7.1",706 "stream-cipher",
673 "zeroize",707 "zeroize",
674]708]
675709
682 "aead",716 "aead",
683 "chacha20",717 "chacha20",
684 "poly1305",718 "poly1305",
685 "stream-cipher 0.7.1",719 "stream-cipher",
686 "zeroize",720 "zeroize",
687]721]
688722
734 "bitflags",768 "bitflags",
735]769]
736
737[[package]]
738name = "cloudabi"
739version = "0.1.0"
740source = "registry+https://github.com/rust-lang/crates.io-index"
741checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467"
742dependencies = [
743 "bitflags",
744]
745770
746[[package]]771[[package]]
747name = "concurrent-queue"772name = "concurrent-queue"
754779
755[[package]]780[[package]]
756name = "const-random"781name = "const-random"
757version = "0.1.11"782version = "0.1.13"
758source = "registry+https://github.com/rust-lang/crates.io-index"783source = "registry+https://github.com/rust-lang/crates.io-index"
759checksum = "02dc82c12dc2ee6e1ded861cf7d582b46f66f796d1b6c93fa28b911ead95da02"784checksum = "f590d95d011aa80b063ffe3253422ed5aa462af4e9867d43ce8337562bac77c4"
760dependencies = [785dependencies = [
761 "const-random-macro",786 "const-random-macro",
762 "proc-macro-hack",787 "proc-macro-hack",
763]788]
764789
765[[package]]790[[package]]
766name = "const-random-macro"791name = "const-random-macro"
767version = "0.1.11"792version = "0.1.13"
768source = "registry+https://github.com/rust-lang/crates.io-index"793source = "registry+https://github.com/rust-lang/crates.io-index"
769checksum = "fc757bbb9544aa296c2ae00c679e81f886b37e28e59097defe0cf524306f6685"794checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40"
770dependencies = [795dependencies = [
771 "getrandom 0.2.0",796 "getrandom 0.2.0",
797 "lazy_static",
772 "proc-macro-hack",798 "proc-macro-hack",
799 "tiny-keccak",
773]800]
801
802[[package]]
803name = "const_fn"
804version = "0.4.4"
805source = "registry+https://github.com/rust-lang/crates.io-index"
806checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826"
774807
775[[package]]808[[package]]
776name = "constant_time_eq"809name = "constant_time_eq"
800source = "registry+https://github.com/rust-lang/crates.io-index"833source = "registry+https://github.com/rust-lang/crates.io-index"
801checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634"834checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634"
835
836[[package]]
837name = "cpuid-bool"
838version = "0.2.0"
839source = "registry+https://github.com/rust-lang/crates.io-index"
840checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba"
802841
803[[package]]842[[package]]
804name = "cranelift-bforest"843name = "cranelift-bforest"
824 "log",863 "log",
825 "regalloc",864 "regalloc",
826 "serde",865 "serde",
827 "smallvec 1.4.2",866 "smallvec 1.5.1",
828 "target-lexicon",867 "target-lexicon",
829 "thiserror",868 "thiserror",
830]869]
862dependencies = [901dependencies = [
863 "cranelift-codegen",902 "cranelift-codegen",
864 "log",903 "log",
865 "smallvec 1.4.2",904 "smallvec 1.5.1",
866 "target-lexicon",905 "target-lexicon",
867]906]
868907
894933
895[[package]]934[[package]]
896name = "crc32fast"935name = "crc32fast"
897version = "1.2.0"936version = "1.2.1"
898source = "registry+https://github.com/rust-lang/crates.io-index"937source = "registry+https://github.com/rust-lang/crates.io-index"
899checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"938checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
900dependencies = [939dependencies = [
901 "cfg-if 0.1.10",940 "cfg-if 1.0.0",
902]941]
903942
904[[package]]943[[package]]
905name = "crossbeam-channel"944name = "crossbeam-channel"
906version = "0.4.4"945version = "0.5.0"
907source = "registry+https://github.com/rust-lang/crates.io-index"946source = "registry+https://github.com/rust-lang/crates.io-index"
908checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87"947checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
909dependencies = [948dependencies = [
910 "crossbeam-utils",949 "cfg-if 1.0.0",
911 "maybe-uninit",950 "crossbeam-utils 0.8.1",
912]951]
913952
914[[package]]953[[package]]
917source = "registry+https://github.com/rust-lang/crates.io-index"956source = "registry+https://github.com/rust-lang/crates.io-index"
918checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"957checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
919dependencies = [958dependencies = [
920 "crossbeam-epoch",959 "crossbeam-epoch 0.8.2",
921 "crossbeam-utils",960 "crossbeam-utils 0.7.2",
922 "maybe-uninit",961 "maybe-uninit",
923]962]
963
964[[package]]
965name = "crossbeam-deque"
966version = "0.8.0"
967source = "registry+https://github.com/rust-lang/crates.io-index"
968checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
969dependencies = [
970 "cfg-if 1.0.0",
971 "crossbeam-epoch 0.9.1",
972 "crossbeam-utils 0.8.1",
973]
924974
925[[package]]975[[package]]
926name = "crossbeam-epoch"976name = "crossbeam-epoch"
930dependencies = [980dependencies = [
931 "autocfg 1.0.1",981 "autocfg 1.0.1",
932 "cfg-if 0.1.10",982 "cfg-if 0.1.10",
933 "crossbeam-utils",983 "crossbeam-utils 0.7.2",
934 "lazy_static",984 "lazy_static",
935 "maybe-uninit",985 "maybe-uninit",
936 "memoffset",986 "memoffset 0.5.6",
937 "scopeguard 1.1.0",987 "scopeguard 1.1.0",
938]988]
989
990[[package]]
991name = "crossbeam-epoch"
992version = "0.9.1"
993source = "registry+https://github.com/rust-lang/crates.io-index"
994checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d"
995dependencies = [
996 "cfg-if 1.0.0",
997 "const_fn",
998 "crossbeam-utils 0.8.1",
999 "lazy_static",
1000 "memoffset 0.6.1",
1001 "scopeguard 1.1.0",
1002]
9391003
940[[package]]1004[[package]]
941name = "crossbeam-queue"1005name = "crossbeam-queue"
944checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"1008checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
945dependencies = [1009dependencies = [
946 "cfg-if 0.1.10",1010 "cfg-if 0.1.10",
947 "crossbeam-utils",1011 "crossbeam-utils 0.7.2",
948 "maybe-uninit",1012 "maybe-uninit",
949]1013]
9501014
959 "lazy_static",1023 "lazy_static",
960]1024]
1025
1026[[package]]
1027name = "crossbeam-utils"
1028version = "0.8.1"
1029source = "registry+https://github.com/rust-lang/crates.io-index"
1030checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d"
1031dependencies = [
1032 "autocfg 1.0.1",
1033 "cfg-if 1.0.0",
1034 "lazy_static",
1035]
9611036
962[[package]]1037[[package]]
963name = "crunchy"1038name = "crunchy"
982checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"1057checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
983dependencies = [1058dependencies = [
984 "generic-array 0.14.4",1059 "generic-array 0.14.4",
985 "subtle 2.3.0",1060 "subtle 2.4.0",
986]1061]
9871062
988[[package]]1063[[package]]
1013 "byteorder 1.3.4",1088 "byteorder 1.3.4",
1014 "digest 0.8.1",1089 "digest 0.8.1",
1015 "rand_core 0.5.1",1090 "rand_core 0.5.1",
1016 "subtle 2.3.0",1091 "subtle 2.4.0",
1017 "zeroize",1092 "zeroize",
1018]1093]
10191094
1026 "byteorder 1.3.4",1101 "byteorder 1.3.4",
1027 "digest 0.9.0",1102 "digest 0.9.0",
1028 "rand_core 0.5.1",1103 "rand_core 0.5.1",
1029 "subtle 2.3.0",1104 "subtle 2.4.0",
1030 "zeroize",1105 "zeroize",
1031]1106]
10321107
1033[[package]]1108[[package]]
1034name = "data-encoding"1109name = "data-encoding"
1035version = "2.3.0"1110version = "2.3.1"
1036source = "registry+https://github.com/rust-lang/crates.io-index"1111source = "registry+https://github.com/rust-lang/crates.io-index"
1037checksum = "d4d0e2d24e5ee3b23a01de38eefdcd978907890701f08ffffd4cb457ca4ee8d6"1112checksum = "993a608597367c6377b258c25d7120740f00ed23a2252b729b1932dd7866f908"
10381113
1039[[package]]1114[[package]]
1040name = "derive_more"1115name = "derive_more"
11191194
1120[[package]]1195[[package]]
1121name = "dyn-clone"1196name = "dyn-clone"
1122version = "1.0.2"1197version = "1.0.3"
1123source = "registry+https://github.com/rust-lang/crates.io-index"1198source = "registry+https://github.com/rust-lang/crates.io-index"
1124checksum = "4c53dc3a653e0f64081026e4bf048d48fec9fce90c66e8326ca7292df0ff2d82"1199checksum = "d55796afa1b20c2945ca8eabfc421839f2b766619209f1ede813cf2484f31804"
11251200
1126[[package]]1201[[package]]
1127name = "ed25519"1202name = "ed25519"
1142 "ed25519",1217 "ed25519",
1143 "rand 0.7.3",1218 "rand 0.7.3",
1144 "serde",1219 "serde",
1145 "sha2 0.9.1",1220 "sha2 0.9.2",
1146 "zeroize",1221 "zeroize",
1147]1222]
11481223
1152source = "registry+https://github.com/rust-lang/crates.io-index"1227source = "registry+https://github.com/rust-lang/crates.io-index"
1153checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"1228checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
1229
1230[[package]]
1231name = "enumflags2"
1232version = "0.6.4"
1233source = "registry+https://github.com/rust-lang/crates.io-index"
1234checksum = "83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0"
1235dependencies = [
1236 "enumflags2_derive",
1237]
1238
1239[[package]]
1240name = "enumflags2_derive"
1241version = "0.6.4"
1242source = "registry+https://github.com/rust-lang/crates.io-index"
1243checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
1244dependencies = [
1245 "proc-macro2",
1246 "quote",
1247 "syn",
1248]
11541249
1155[[package]]1250[[package]]
1156name = "env_logger"1251name = "env_logger"
11821277
1183[[package]]1278[[package]]
1184name = "errno"1279name = "errno"
1185version = "0.2.6"1280version = "0.2.7"
1186source = "registry+https://github.com/rust-lang/crates.io-index"1281source = "registry+https://github.com/rust-lang/crates.io-index"
1187checksum = "6eab5ee3df98a279d9b316b1af6ac95422127b1290317e6d18c1743c99418b01"1282checksum = "fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe"
1188dependencies = [1283dependencies = [
1189 "errno-dragonfly",1284 "errno-dragonfly",
1190 "libc",1285 "libc",
1213source = "registry+https://github.com/rust-lang/crates.io-index"1308source = "registry+https://github.com/rust-lang/crates.io-index"
1214checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"1309checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"
1215dependencies = [1310dependencies = [
1216 "futures 0.3.6",1311 "futures 0.3.8",
1217]1312]
12181313
1219[[package]]1314[[package]]
1285checksum = "8feb87a63249689640ac9c011742c33139204e3c134293d3054022276869133b"1380checksum = "8feb87a63249689640ac9c011742c33139204e3c134293d3054022276869133b"
1286dependencies = [1381dependencies = [
1287 "either",1382 "either",
1288 "futures 0.3.6",1383 "futures 0.3.8",
1289 "futures-timer 2.0.2",1384 "futures-timer 2.0.2",
1290 "log",1385 "log",
1291 "num-traits",1386 "num-traits",
13131408
1314[[package]]1409[[package]]
1315name = "flate2"1410name = "flate2"
1316version = "1.0.18"1411version = "1.0.19"
1317source = "registry+https://github.com/rust-lang/crates.io-index"1412source = "registry+https://github.com/rust-lang/crates.io-index"
1318checksum = "da80be589a72651dcda34d8b35bcdc9b7254ad06325611074d9cc0fbb19f60ee"1413checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129"
1319dependencies = [1414dependencies = [
1320 "cfg-if 0.1.10",1415 "cfg-if 1.0.0",
1321 "crc32fast",1416 "crc32fast",
1322 "libc",1417 "libc",
1323 "libz-sys",1418 "libz-sys",
1324 "miniz_oxide",1419 "miniz_oxide",
1325]1420]
1421
1422[[package]]
1423name = "flexi_logger"
1424version = "0.15.12"
1425source = "registry+https://github.com/rust-lang/crates.io-index"
1426checksum = "aaab3caedb4149800f91e8e4899f29cd9ddf3b569b04c365ca9334f92f7542bf"
1427dependencies = [
1428 "atty",
1429 "chrono",
1430 "glob",
1431 "lazy_static",
1432 "log",
1433 "regex",
1434 "thiserror",
1435 "yansi",
1436]
13261437
1327[[package]]1438[[package]]
1328name = "fnv"1439name = "fnv"
1333[[package]]1444[[package]]
1334name = "fork-tree"1445name = "fork-tree"
1335version = "2.0.0"1446version = "2.0.0"
1336source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1447source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1337dependencies = [1448dependencies = [
1338 "parity-scale-codec",1449 "parity-scale-codec",
1339]1450]
1451
1452[[package]]
1453name = "form_urlencoded"
1454version = "1.0.0"
1455source = "registry+https://github.com/rust-lang/crates.io-index"
1456checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00"
1457dependencies = [
1458 "matches",
1459 "percent-encoding 2.1.0",
1460]
13401461
1341[[package]]1462[[package]]
1342name = "frame-benchmarking"1463name = "frame-benchmarking"
1343version = "2.0.0"1464version = "2.0.0"
1344source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1465source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1345dependencies = [1466dependencies = [
1346 "frame-support",1467 "frame-support",
1347 "frame-system",1468 "frame-system",
1359[[package]]1480[[package]]
1360name = "frame-benchmarking-cli"1481name = "frame-benchmarking-cli"
1361version = "2.0.0"1482version = "2.0.0"
1362source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1483source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1363dependencies = [1484dependencies = [
1364 "frame-benchmarking",1485 "frame-benchmarking",
1365 "parity-scale-codec",1486 "parity-scale-codec",
1377[[package]]1498[[package]]
1378name = "frame-executive"1499name = "frame-executive"
1379version = "2.0.0"1500version = "2.0.0"
1380source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1501source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1381dependencies = [1502dependencies = [
1382 "frame-support",1503 "frame-support",
1383 "frame-system",1504 "frame-system",
1393[[package]]1514[[package]]
1394name = "frame-metadata"1515name = "frame-metadata"
1395version = "12.0.0"1516version = "12.0.0"
1396source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1517source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1397dependencies = [1518dependencies = [
1398 "parity-scale-codec",1519 "parity-scale-codec",
1399 "serde",1520 "serde",
1404[[package]]1525[[package]]
1405name = "frame-support"1526name = "frame-support"
1406version = "2.0.0"1527version = "2.0.0"
1407source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1528source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1408dependencies = [1529dependencies = [
1409 "bitmask",1530 "bitmask",
1410 "frame-metadata",1531 "frame-metadata",
1411 "frame-support-procedural",1532 "frame-support-procedural",
1412 "impl-trait-for-tuples",1533 "impl-trait-for-tuples",
1413 "log",1534 "log",
1414 "once_cell 1.4.1",1535 "once_cell 1.5.2",
1415 "parity-scale-codec",1536 "parity-scale-codec",
1416 "paste",1537 "paste",
1417 "serde",1538 "serde",
1418 "smallvec 1.4.2",1539 "smallvec 1.5.1",
1419 "sp-arithmetic",1540 "sp-arithmetic",
1420 "sp-core",1541 "sp-core",
1421 "sp-inherents",1542 "sp-inherents",
1429[[package]]1550[[package]]
1430name = "frame-support-procedural"1551name = "frame-support-procedural"
1431version = "2.0.0"1552version = "2.0.0"
1432source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1553source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1433dependencies = [1554dependencies = [
1434 "frame-support-procedural-tools",1555 "frame-support-procedural-tools",
1435 "proc-macro2",1556 "proc-macro2",
1440[[package]]1561[[package]]
1441name = "frame-support-procedural-tools"1562name = "frame-support-procedural-tools"
1442version = "2.0.0"1563version = "2.0.0"
1443source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1564source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1444dependencies = [1565dependencies = [
1445 "frame-support-procedural-tools-derive",1566 "frame-support-procedural-tools-derive",
1446 "proc-macro-crate",1567 "proc-macro-crate",
1452[[package]]1573[[package]]
1453name = "frame-support-procedural-tools-derive"1574name = "frame-support-procedural-tools-derive"
1454version = "2.0.0"1575version = "2.0.0"
1455source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1576source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1456dependencies = [1577dependencies = [
1457 "proc-macro2",1578 "proc-macro2",
1458 "quote",1579 "quote",
1462[[package]]1583[[package]]
1463name = "frame-system"1584name = "frame-system"
1464version = "2.0.0"1585version = "2.0.0"
1465source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1586source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1466dependencies = [1587dependencies = [
1467 "frame-support",1588 "frame-support",
1468 "impl-trait-for-tuples",1589 "impl-trait-for-tuples",
1478[[package]]1599[[package]]
1479name = "frame-system-benchmarking"1600name = "frame-system-benchmarking"
1480version = "2.0.0"1601version = "2.0.0"
1481source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1602source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1482dependencies = [1603dependencies = [
1483 "frame-benchmarking",1604 "frame-benchmarking",
1484 "frame-support",1605 "frame-support",
1492[[package]]1613[[package]]
1493name = "frame-system-rpc-runtime-api"1614name = "frame-system-rpc-runtime-api"
1494version = "2.0.0"1615version = "2.0.0"
1495source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"1616source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
1496dependencies = [1617dependencies = [
1497 "parity-scale-codec",1618 "parity-scale-codec",
1498 "sp-api",1619 "sp-api",
1499]1620]
15001621
1501[[package]]1622[[package]]
1502name = "fs-swap"1623name = "fs-swap"
1503version = "0.2.4"1624version = "0.2.5"
1504source = "registry+https://github.com/rust-lang/crates.io-index"1625source = "registry+https://github.com/rust-lang/crates.io-index"
1505checksum = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb"1626checksum = "5839fda247e24ca4919c87c71dd5ca658f1f39e4f06829f80e3f15c3bafcfc2c"
1506dependencies = [1627dependencies = [
1507 "lazy_static",1628 "lazy_static",
1508 "libc",1629 "libc",
15401661
1541[[package]]1662[[package]]
1542name = "futures"1663name = "futures"
1543version = "0.3.6"1664version = "0.3.8"
1544source = "registry+https://github.com/rust-lang/crates.io-index"1665source = "registry+https://github.com/rust-lang/crates.io-index"
1545checksum = "5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e"1666checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0"
1546dependencies = [1667dependencies = [
1547 "futures-channel",1668 "futures-channel",
1548 "futures-core",1669 "futures-core",
15551676
1556[[package]]1677[[package]]
1557name = "futures-channel"1678name = "futures-channel"
1558version = "0.3.6"1679version = "0.3.8"
1559source = "registry+https://github.com/rust-lang/crates.io-index"1680source = "registry+https://github.com/rust-lang/crates.io-index"
1560checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74"1681checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64"
1561dependencies = [1682dependencies = [
1562 "futures-core",1683 "futures-core",
1563 "futures-sink",1684 "futures-sink",
15741695
1575[[package]]1696[[package]]
1576name = "futures-core"1697name = "futures-core"
1577version = "0.3.6"1698version = "0.3.8"
1578source = "registry+https://github.com/rust-lang/crates.io-index"1699source = "registry+https://github.com/rust-lang/crates.io-index"
1579checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b"1700checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748"
15801701
1581[[package]]1702[[package]]
1582name = "futures-core-preview"1703name = "futures-core-preview"
1601checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9"1722checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9"
1602dependencies = [1723dependencies = [
1603 "futures 0.1.30",1724 "futures 0.1.30",
1604 "futures 0.3.6",1725 "futures 0.3.8",
1605 "lazy_static",1726 "lazy_static",
1606 "log",1727 "log",
1607 "parking_lot 0.9.0",1728 "parking_lot 0.9.0",
1608 "pin-project",1729 "pin-project 0.4.27",
1609 "serde",1730 "serde",
1610 "serde_json",1731 "serde_json",
1611]1732]
16121733
1613[[package]]1734[[package]]
1614name = "futures-executor"1735name = "futures-executor"
1615version = "0.3.6"1736version = "0.3.8"
1616source = "registry+https://github.com/rust-lang/crates.io-index"1737source = "registry+https://github.com/rust-lang/crates.io-index"
1617checksum = "cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab"1738checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65"
1618dependencies = [1739dependencies = [
1619 "futures-core",1740 "futures-core",
1620 "futures-task",1741 "futures-task",
16241745
1625[[package]]1746[[package]]
1626name = "futures-io"1747name = "futures-io"
1627version = "0.3.6"1748version = "0.3.8"
1628source = "registry+https://github.com/rust-lang/crates.io-index"1749source = "registry+https://github.com/rust-lang/crates.io-index"
1629checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c"1750checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb"
16301751
1631[[package]]1752[[package]]
1632name = "futures-lite"1753name = "futures-lite"
1633version = "1.11.1"1754version = "1.11.2"
1634source = "registry+https://github.com/rust-lang/crates.io-index"1755source = "registry+https://github.com/rust-lang/crates.io-index"
1635checksum = "381a7ad57b1bad34693f63f6f377e1abded7a9c85c9d3eb6771e11c60aaadab9"1756checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658"
1636dependencies = [1757dependencies = [
1637 "fastrand",1758 "fastrand",
1638 "futures-core",1759 "futures-core",
1639 "futures-io",1760 "futures-io",
1640 "memchr",1761 "memchr",
1641 "parking",1762 "parking",
1642 "pin-project-lite",1763 "pin-project-lite 0.1.11",
1643 "waker-fn",1764 "waker-fn",
1644]1765]
16451766
1646[[package]]1767[[package]]
1647name = "futures-macro"1768name = "futures-macro"
1648version = "0.3.6"1769version = "0.3.8"
1649source = "registry+https://github.com/rust-lang/crates.io-index"1770source = "registry+https://github.com/rust-lang/crates.io-index"
1650checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b"1771checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556"
1651dependencies = [1772dependencies = [
1652 "proc-macro-hack",1773 "proc-macro-hack",
1653 "proc-macro2",1774 "proc-macro2",
16571778
1658[[package]]1779[[package]]
1659name = "futures-sink"1780name = "futures-sink"
1660version = "0.3.6"1781version = "0.3.8"
1661source = "registry+https://github.com/rust-lang/crates.io-index"1782source = "registry+https://github.com/rust-lang/crates.io-index"
1662checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd"1783checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d"
16631784
1664[[package]]1785[[package]]
1665name = "futures-task"1786name = "futures-task"
1666version = "0.3.6"1787version = "0.3.8"
1667source = "registry+https://github.com/rust-lang/crates.io-index"1788source = "registry+https://github.com/rust-lang/crates.io-index"
1668checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94"1789checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d"
1669dependencies = [1790dependencies = [
1670 "once_cell 1.4.1",1791 "once_cell 1.5.2",
1671]1792]
16721793
1673[[package]]1794[[package]]
16841805
1685[[package]]1806[[package]]
1686name = "futures-util"1807name = "futures-util"
1687version = "0.3.6"1808version = "0.3.8"
1688source = "registry+https://github.com/rust-lang/crates.io-index"1809source = "registry+https://github.com/rust-lang/crates.io-index"
1689checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34"1810checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2"
1690dependencies = [1811dependencies = [
1691 "futures 0.1.30",1812 "futures 0.1.30",
1692 "futures-channel",1813 "futures-channel",
1696 "futures-sink",1817 "futures-sink",
1697 "futures-task",1818 "futures-task",
1698 "memchr",1819 "memchr",
1699 "pin-project",1820 "pin-project 1.0.2",
1700 "pin-utils",1821 "pin-utils",
1701 "proc-macro-hack",1822 "proc-macro-hack",
1702 "proc-macro-nested",1823 "proc-macro-nested",
1722checksum = "ce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5b"1843checksum = "ce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5b"
1723dependencies = [1844dependencies = [
1724 "bytes 0.5.6",1845 "bytes 0.5.6",
1725 "futures 0.3.6",1846 "futures 0.3.8",
1726 "memchr",1847 "memchr",
1727 "pin-project",1848 "pin-project 0.4.27",
1728]1849]
17291850
1730[[package]]1851[[package]]
1733source = "registry+https://github.com/rust-lang/crates.io-index"1854source = "registry+https://github.com/rust-lang/crates.io-index"
1734checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"1855checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
1856
1857[[package]]
1858name = "generator"
1859version = "0.6.23"
1860source = "registry+https://github.com/rust-lang/crates.io-index"
1861checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc"
1862dependencies = [
1863 "cc",
1864 "libc",
1865 "log",
1866 "rustc_version",
1867 "winapi 0.3.9",
1868]
17351869
1736[[package]]1870[[package]]
1737name = "generic-array"1871name = "generic-array"
18181952
1819[[package]]1953[[package]]
1820name = "gimli"1954name = "gimli"
1821version = "0.22.0"1955version = "0.23.0"
1822source = "registry+https://github.com/rust-lang/crates.io-index"1956source = "registry+https://github.com/rust-lang/crates.io-index"
1823checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724"1957checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce"
18241958
1825[[package]]1959[[package]]
1826name = "glob"1960name = "glob"
18301964
1831[[package]]1965[[package]]
1832name = "globset"1966name = "globset"
1833version = "0.4.5"1967version = "0.4.6"
1834source = "registry+https://github.com/rust-lang/crates.io-index"1968source = "registry+https://github.com/rust-lang/crates.io-index"
1835checksum = "7ad1da430bd7281dde2576f44c84cc3f0f7b475e7202cd503042dff01a8c8120"1969checksum = "c152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4a"
1836dependencies = [1970dependencies = [
1837 "aho-corasick",1971 "aho-corasick",
1838 "bstr",1972 "bstr",
18742008
1875[[package]]2009[[package]]
1876name = "h2"2010name = "h2"
1877version = "0.2.6"2011version = "0.2.7"
1878source = "registry+https://github.com/rust-lang/crates.io-index"2012source = "registry+https://github.com/rust-lang/crates.io-index"
1879checksum = "993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53"2013checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535"
1880dependencies = [2014dependencies = [
1881 "bytes 0.5.6",2015 "bytes 0.5.6",
1882 "fnv",2016 "fnv",
1883 "futures-core",2017 "futures-core",
1884 "futures-sink",2018 "futures-sink",
1885 "futures-util",2019 "futures-util",
1886 "http 0.2.1",2020 "http 0.2.2",
1887 "indexmap",2021 "indexmap",
1888 "slab",2022 "slab",
1889 "tokio 0.2.22",2023 "tokio 0.2.24",
1890 "tokio-util",2024 "tokio-util",
1891 "tracing",2025 "tracing",
2026 "tracing-futures",
1892]2027]
18932028
1894[[package]]2029[[package]]
1941version = "0.9.1"2076version = "0.9.1"
1942source = "registry+https://github.com/rust-lang/crates.io-index"2077source = "registry+https://github.com/rust-lang/crates.io-index"
1943checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"2078checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
2079dependencies = [
2080 "ahash 0.4.7",
2081]
19442082
1945[[package]]2083[[package]]
1946name = "heck"2084name = "heck"
20122150
2013[[package]]2151[[package]]
2014name = "http"2152name = "http"
2015version = "0.2.1"2153version = "0.2.2"
2016source = "registry+https://github.com/rust-lang/crates.io-index"2154source = "registry+https://github.com/rust-lang/crates.io-index"
2017checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9"2155checksum = "84129d298a6d57d246960ff8eb831ca4af3f96d29e2e28848dae275408658e26"
2018dependencies = [2156dependencies = [
2019 "bytes 0.5.6",2157 "bytes 0.5.6",
2020 "fnv",2158 "fnv",
2040checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"2178checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
2041dependencies = [2179dependencies = [
2042 "bytes 0.5.6",2180 "bytes 0.5.6",
2043 "http 0.2.1",2181 "http 0.2.2",
2044]2182]
20452183
2046[[package]]2184[[package]]
20962234
2097[[package]]2235[[package]]
2098name = "hyper"2236name = "hyper"
2099version = "0.13.8"2237version = "0.13.9"
2100source = "registry+https://github.com/rust-lang/crates.io-index"2238source = "registry+https://github.com/rust-lang/crates.io-index"
2101checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835"2239checksum = "f6ad767baac13b44d4529fcf58ba2cd0995e36e7b435bc5b039de6f47e880dbf"
2102dependencies = [2240dependencies = [
2103 "bytes 0.5.6",2241 "bytes 0.5.6",
2104 "futures-channel",2242 "futures-channel",
2105 "futures-core",2243 "futures-core",
2106 "futures-util",2244 "futures-util",
2107 "h2 0.2.6",2245 "h2 0.2.7",
2108 "http 0.2.1",2246 "http 0.2.2",
2109 "http-body 0.3.1",2247 "http-body 0.3.1",
2110 "httparse",2248 "httparse",
2111 "httpdate",2249 "httpdate",
2112 "itoa",2250 "itoa",
2113 "pin-project",2251 "pin-project 1.0.2",
2114 "socket2",2252 "socket2",
2115 "tokio 0.2.22",2253 "tokio 0.2.24",
2116 "tower-service",2254 "tower-service",
2117 "tracing",2255 "tracing",
2118 "want 0.3.0",2256 "want 0.3.0",
2127 "bytes 0.5.6",2265 "bytes 0.5.6",
2128 "ct-logs",2266 "ct-logs",
2129 "futures-util",2267 "futures-util",
2130 "hyper 0.13.8",2268 "hyper 0.13.9",
2131 "log",2269 "log",
2132 "rustls",2270 "rustls",
2133 "rustls-native-certs",2271 "rustls-native-certs",
2134 "tokio 0.2.22",2272 "tokio 0.2.24",
2135 "tokio-rustls",2273 "tokio-rustls",
2136 "webpki",2274 "webpki",
2137]2275]
21892327
2190[[package]]2328[[package]]
2191name = "indexmap"2329name = "indexmap"
2192version = "1.6.0"2330version = "1.6.1"
2193source = "registry+https://github.com/rust-lang/crates.io-index"2331source = "registry+https://github.com/rust-lang/crates.io-index"
2194checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2"2332checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b"
2195dependencies = [2333dependencies = [
2196 "autocfg 1.0.1",2334 "autocfg 1.0.1",
2197 "hashbrown 0.9.1",2335 "hashbrown 0.9.1",
22002338
2201[[package]]2339[[package]]
2202name = "instant"2340name = "instant"
2203version = "0.1.7"2341version = "0.1.9"
2204source = "registry+https://github.com/rust-lang/crates.io-index"2342source = "registry+https://github.com/rust-lang/crates.io-index"
2205checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66"2343checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
2206dependencies = [2344dependencies = [
2207 "cfg-if 0.1.10",2345 "cfg-if 1.0.0",
2208]2346]
22092347
2210[[package]]2348[[package]]
2222source = "registry+https://github.com/rust-lang/crates.io-index"2360source = "registry+https://github.com/rust-lang/crates.io-index"
2223checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275"2361checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275"
2224dependencies = [2362dependencies = [
2225 "futures 0.3.6",2363 "futures 0.3.8",
2226 "futures-timer 2.0.2",2364 "futures-timer 2.0.2",
2227]2365]
22282366
22822420
2283[[package]]2421[[package]]
2284name = "js-sys"2422name = "js-sys"
2285version = "0.3.45"2423version = "0.3.46"
2286source = "registry+https://github.com/rust-lang/crates.io-index"2424source = "registry+https://github.com/rust-lang/crates.io-index"
2287checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8"2425checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175"
2288dependencies = [2426dependencies = [
2289 "wasm-bindgen",2427 "wasm-bindgen",
2290]2428]
2443checksum = "0315ef2f688e33844400b31f11c263f2b3dc21d8b9355c6891c5f185fae43f9a"2581checksum = "0315ef2f688e33844400b31f11c263f2b3dc21d8b9355c6891c5f185fae43f9a"
2444dependencies = [2582dependencies = [
2445 "parity-util-mem",2583 "parity-util-mem",
2446 "smallvec 1.4.2",2584 "smallvec 1.5.1",
2447]2585]
24482586
2449[[package]]2587[[package]]
2472 "parking_lot 0.10.2",2610 "parking_lot 0.10.2",
2473 "regex",2611 "regex",
2474 "rocksdb",2612 "rocksdb",
2475 "smallvec 1.4.2",2613 "smallvec 1.5.1",
2476]2614]
24772615
2478[[package]]2616[[package]]
24952633
2496[[package]]2634[[package]]
2497name = "libc"2635name = "libc"
2498version = "0.2.79"2636version = "0.2.81"
2499source = "registry+https://github.com/rust-lang/crates.io-index"2637source = "registry+https://github.com/rust-lang/crates.io-index"
2500checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743"2638checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"
25012639
2502[[package]]2640[[package]]
2503name = "libloading"2641name = "libloading"
2523dependencies = [2661dependencies = [
2524 "atomic",2662 "atomic",
2525 "bytes 0.5.6",2663 "bytes 0.5.6",
2526 "futures 0.3.6",2664 "futures 0.3.8",
2527 "lazy_static",2665 "lazy_static",
2528 "libp2p-core",2666 "libp2p-core",
2529 "libp2p-core-derive",2667 "libp2p-core-derive",
2549 "multihash",2687 "multihash",
2550 "parity-multiaddr",2688 "parity-multiaddr",
2551 "parking_lot 0.10.2",2689 "parking_lot 0.10.2",
2552 "pin-project",2690 "pin-project 0.4.27",
2553 "smallvec 1.4.2",2691 "smallvec 1.5.1",
2554 "wasm-timer",2692 "wasm-timer",
2555]2693]
25562694
2561checksum = "52f13ba8c7df0768af2eb391696d562c7de88cc3a35122531aaa6a7d77754d25"2699checksum = "52f13ba8c7df0768af2eb391696d562c7de88cc3a35122531aaa6a7d77754d25"
2562dependencies = [2700dependencies = [
2563 "asn1_der",2701 "asn1_der",
2564 "bs58",2702 "bs58 0.3.1",
2565 "ed25519-dalek",2703 "ed25519-dalek",
2566 "either",2704 "either",
2567 "fnv",2705 "fnv",
2568 "futures 0.3.6",2706 "futures 0.3.8",
2569 "futures-timer 3.0.2",2707 "futures-timer 3.0.2",
2570 "lazy_static",2708 "lazy_static",
2571 "libsecp256k1",2709 "libsecp256k1",
2574 "multistream-select",2712 "multistream-select",
2575 "parity-multiaddr",2713 "parity-multiaddr",
2576 "parking_lot 0.10.2",2714 "parking_lot 0.10.2",
2577 "pin-project",2715 "pin-project 0.4.27",
2578 "prost",2716 "prost",
2579 "prost-build",2717 "prost-build",
2580 "rand 0.7.3",2718 "rand 0.7.3",
2581 "ring",2719 "ring",
2582 "rw-stream-sink",2720 "rw-stream-sink",
2583 "sha2 0.8.2",2721 "sha2 0.8.2",
2584 "smallvec 1.4.2",2722 "smallvec 1.5.1",
2585 "thiserror",2723 "thiserror",
2586 "unsigned-varint 0.4.0",2724 "unsigned-varint 0.4.0",
2587 "void",2725 "void",
2605checksum = "74029ae187f35f4b8ddf26b9779a68b340045d708528a103917cdca49a296db5"2743checksum = "74029ae187f35f4b8ddf26b9779a68b340045d708528a103917cdca49a296db5"
2606dependencies = [2744dependencies = [
2607 "flate2",2745 "flate2",
2608 "futures 0.3.6",2746 "futures 0.3.8",
2609 "libp2p-core",2747 "libp2p-core",
2610]2748]
26112749
2615source = "registry+https://github.com/rust-lang/crates.io-index"2753source = "registry+https://github.com/rust-lang/crates.io-index"
2616checksum = "7cf319822e08dd65c8e060d2354e9f952895bbc433f5706c75ed010c152aee5e"2754checksum = "7cf319822e08dd65c8e060d2354e9f952895bbc433f5706c75ed010c152aee5e"
2617dependencies = [2755dependencies = [
2618 "futures 0.3.6",2756 "futures 0.3.8",
2619 "libp2p-core",2757 "libp2p-core",
2620 "log",2758 "log",
2621]2759]
2628dependencies = [2766dependencies = [
2629 "cuckoofilter",2767 "cuckoofilter",
2630 "fnv",2768 "fnv",
2631 "futures 0.3.6",2769 "futures 0.3.8",
2632 "libp2p-core",2770 "libp2p-core",
2633 "libp2p-swarm",2771 "libp2p-swarm",
2634 "prost",2772 "prost",
2635 "prost-build",2773 "prost-build",
2636 "rand 0.7.3",2774 "rand 0.7.3",
2637 "smallvec 1.4.2",2775 "smallvec 1.5.1",
2638]2776]
26392777
2640[[package]]2778[[package]]
2647 "byteorder 1.3.4",2785 "byteorder 1.3.4",
2648 "bytes 0.5.6",2786 "bytes 0.5.6",
2649 "fnv",2787 "fnv",
2650 "futures 0.3.6",2788 "futures 0.3.8",
2651 "futures_codec",2789 "futures_codec",
2652 "hex_fmt",2790 "hex_fmt",
2653 "libp2p-core",2791 "libp2p-core",
2658 "prost-build",2796 "prost-build",
2659 "rand 0.7.3",2797 "rand 0.7.3",
2660 "sha2 0.8.2",2798 "sha2 0.8.2",
2661 "smallvec 1.4.2",2799 "smallvec 1.5.1",
2662 "unsigned-varint 0.4.0",2800 "unsigned-varint 0.4.0",
2663 "wasm-timer",2801 "wasm-timer",
2664]2802]
2669source = "registry+https://github.com/rust-lang/crates.io-index"2807source = "registry+https://github.com/rust-lang/crates.io-index"
2670checksum = "56396ee63aa9164eacf40c2c5d2bda8c4133c2f57e1b0425d51d3a4e362583b1"2808checksum = "56396ee63aa9164eacf40c2c5d2bda8c4133c2f57e1b0425d51d3a4e362583b1"
2671dependencies = [2809dependencies = [
2672 "futures 0.3.6",2810 "futures 0.3.8",
2673 "libp2p-core",2811 "libp2p-core",
2674 "libp2p-swarm",2812 "libp2p-swarm",
2675 "log",2813 "log",
2676 "prost",2814 "prost",
2677 "prost-build",2815 "prost-build",
2678 "smallvec 1.4.2",2816 "smallvec 1.5.1",
2679 "wasm-timer",2817 "wasm-timer",
2680]2818]
26812819
2685source = "registry+https://github.com/rust-lang/crates.io-index"2823source = "registry+https://github.com/rust-lang/crates.io-index"
2686checksum = "cc7fa9047f8b8f544278a35c2d9d45d3b2c1785f2d86d4e1629d6edf97be3955"2824checksum = "cc7fa9047f8b8f544278a35c2d9d45d3b2c1785f2d86d4e1629d6edf97be3955"
2687dependencies = [2825dependencies = [
2688 "arrayvec 0.5.1",2826 "arrayvec 0.5.2",
2689 "bytes 0.5.6",2827 "bytes 0.5.6",
2690 "either",2828 "either",
2691 "fnv",2829 "fnv",
2692 "futures 0.3.6",2830 "futures 0.3.8",
2693 "futures_codec",2831 "futures_codec",
2694 "libp2p-core",2832 "libp2p-core",
2695 "libp2p-swarm",2833 "libp2p-swarm",
2699 "prost-build",2837 "prost-build",
2700 "rand 0.7.3",2838 "rand 0.7.3",
2701 "sha2 0.8.2",2839 "sha2 0.8.2",
2702 "smallvec 1.4.2",2840 "smallvec 1.5.1",
2703 "uint",2841 "uint",
2704 "unsigned-varint 0.4.0",2842 "unsigned-varint 0.4.0",
2705 "void",2843 "void",
2716 "data-encoding",2854 "data-encoding",
2717 "dns-parser",2855 "dns-parser",
2718 "either",2856 "either",
2719 "futures 0.3.6",2857 "futures 0.3.8",
2720 "lazy_static",2858 "lazy_static",
2721 "libp2p-core",2859 "libp2p-core",
2722 "libp2p-swarm",2860 "libp2p-swarm",
2723 "log",2861 "log",
2724 "net2",2862 "net2",
2725 "rand 0.7.3",2863 "rand 0.7.3",
2726 "smallvec 1.4.2",2864 "smallvec 1.5.1",
2727 "void",2865 "void",
2728 "wasm-timer",2866 "wasm-timer",
2729]2867]
2736dependencies = [2874dependencies = [
2737 "bytes 0.5.6",2875 "bytes 0.5.6",
2738 "fnv",2876 "fnv",
2739 "futures 0.3.6",2877 "futures 0.3.8",
2740 "futures_codec",2878 "futures_codec",
2741 "libp2p-core",2879 "libp2p-core",
2742 "log",2880 "log",
2752dependencies = [2890dependencies = [
2753 "bytes 0.5.6",2891 "bytes 0.5.6",
2754 "curve25519-dalek 2.1.0",2892 "curve25519-dalek 2.1.0",
2755 "futures 0.3.6",2893 "futures 0.3.8",
2756 "lazy_static",2894 "lazy_static",
2757 "libp2p-core",2895 "libp2p-core",
2758 "log",2896 "log",
2772source = "registry+https://github.com/rust-lang/crates.io-index"2910source = "registry+https://github.com/rust-lang/crates.io-index"
2773checksum = "ad063c21dfcea4518ac9e8bd4119d33a5b26c41e674f602f41f05617a368a5c8"2911checksum = "ad063c21dfcea4518ac9e8bd4119d33a5b26c41e674f602f41f05617a368a5c8"
2774dependencies = [2912dependencies = [
2775 "futures 0.3.6",2913 "futures 0.3.8",
2776 "libp2p-core",2914 "libp2p-core",
2777 "libp2p-swarm",2915 "libp2p-swarm",
2778 "log",2916 "log",
2788checksum = "903a12e99c72dbebefea258de887982adeacc7025baa1ceb10b7fa9928f54791"2926checksum = "903a12e99c72dbebefea258de887982adeacc7025baa1ceb10b7fa9928f54791"
2789dependencies = [2927dependencies = [
2790 "bytes 0.5.6",2928 "bytes 0.5.6",
2791 "futures 0.3.6",2929 "futures 0.3.8",
2792 "futures_codec",2930 "futures_codec",
2793 "libp2p-core",2931 "libp2p-core",
2794 "log",2932 "log",
28012939
2802[[package]]2940[[package]]
2803name = "libp2p-pnet"2941name = "libp2p-pnet"
2804version = "0.19.1"2942version = "0.19.2"
2805source = "registry+https://github.com/rust-lang/crates.io-index"2943source = "registry+https://github.com/rust-lang/crates.io-index"
2806checksum = "37d0db10e139d22d7af0b23ed7949449ec86262798aa0fd01595abdbcb02dc87"2944checksum = "96b3c2d5d26a9500e959a0e19743897239a6c4be78dadf99b70414301a70c006"
2807dependencies = [2945dependencies = [
2808 "futures 0.3.6",2946 "futures 0.3.8",
2809 "log",2947 "log",
2810 "pin-project",2948 "pin-project 0.4.27",
2811 "rand 0.7.3",2949 "rand 0.7.3",
2812 "salsa20",2950 "salsa20",
2813 "sha3 0.8.2",2951 "sha3",
2814]2952]
28152953
2816[[package]]2954[[package]]
2821dependencies = [2959dependencies = [
2822 "async-trait",2960 "async-trait",
2823 "bytes 0.5.6",2961 "bytes 0.5.6",
2824 "futures 0.3.6",2962 "futures 0.3.8",
2825 "libp2p-core",2963 "libp2p-core",
2826 "libp2p-swarm",2964 "libp2p-swarm",
2827 "log",2965 "log",
2828 "lru 0.6.0",2966 "lru 0.6.2",
2829 "minicbor",2967 "minicbor",
2830 "rand 0.7.3",2968 "rand 0.7.3",
2831 "smallvec 1.4.2",2969 "smallvec 1.5.1",
2832 "unsigned-varint 0.5.1",2970 "unsigned-varint 0.5.1",
2833 "wasm-timer",2971 "wasm-timer",
2834]2972]
2840checksum = "7193e444210132237b81b755ec7fe53f1c4bd2f53cf719729b94c0c72eb6eaa1"2978checksum = "7193e444210132237b81b755ec7fe53f1c4bd2f53cf719729b94c0c72eb6eaa1"
2841dependencies = [2979dependencies = [
2842 "either",2980 "either",
2843 "futures 0.3.6",2981 "futures 0.3.8",
2844 "libp2p-core",2982 "libp2p-core",
2845 "log",2983 "log",
2846 "rand 0.7.3",2984 "rand 0.7.3",
2847 "smallvec 1.4.2",2985 "smallvec 1.5.1",
2848 "void",2986 "void",
2849 "wasm-timer",2987 "wasm-timer",
2850]2988]
2856checksum = "44f42ec130d7a37a7e47bf4398026b7ad9185c08ed26972e2720f8b94112796f"2994checksum = "44f42ec130d7a37a7e47bf4398026b7ad9185c08ed26972e2720f8b94112796f"
2857dependencies = [2995dependencies = [
2858 "async-std",2996 "async-std",
2859 "futures 0.3.6",2997 "futures 0.3.8",
2860 "futures-timer 3.0.2",2998 "futures-timer 3.0.2",
2861 "get_if_addrs",2999 "get_if_addrs",
2862 "ipnet",3000 "ipnet",
2872checksum = "dea7acb0a034f70d7db94c300eba3f65c0f6298820105624088a9609c9974d77"3010checksum = "dea7acb0a034f70d7db94c300eba3f65c0f6298820105624088a9609c9974d77"
2873dependencies = [3011dependencies = [
2874 "async-std",3012 "async-std",
2875 "futures 0.3.6",3013 "futures 0.3.8",
2876 "libp2p-core",3014 "libp2p-core",
2877 "log",3015 "log",
2878]3016]
2883source = "registry+https://github.com/rust-lang/crates.io-index"3021source = "registry+https://github.com/rust-lang/crates.io-index"
2884checksum = "34c1faac6f92c21fbe155417957863ea822fba9e9fd5eb24c0912336a100e63f"3022checksum = "34c1faac6f92c21fbe155417957863ea822fba9e9fd5eb24c0912336a100e63f"
2885dependencies = [3023dependencies = [
2886 "futures 0.3.6",3024 "futures 0.3.8",
2887 "js-sys",3025 "js-sys",
2888 "libp2p-core",3026 "libp2p-core",
2889 "parity-send-wrapper",3027 "parity-send-wrapper",
2899dependencies = [3037dependencies = [
2900 "async-tls",3038 "async-tls",
2901 "either",3039 "either",
2902 "futures 0.3.6",3040 "futures 0.3.8",
2903 "libp2p-core",3041 "libp2p-core",
2904 "log",3042 "log",
2905 "quicksink",3043 "quicksink",
2906 "rustls",3044 "rustls",
2907 "rw-stream-sink",3045 "rw-stream-sink",
2908 "soketto",3046 "soketto",
2909 "url 2.1.1",3047 "url 2.2.0",
2910 "webpki",3048 "webpki",
2911 "webpki-roots 0.18.0",3049 "webpki-roots 0.18.0",
2912]3050]
2917source = "registry+https://github.com/rust-lang/crates.io-index"3055source = "registry+https://github.com/rust-lang/crates.io-index"
2918checksum = "781d9b9f043dcdabc40640807125368596b849fd4d96cdca2dcf052fdf6f33fd"3056checksum = "781d9b9f043dcdabc40640807125368596b849fd4d96cdca2dcf052fdf6f33fd"
2919dependencies = [3057dependencies = [
2920 "futures 0.3.6",3058 "futures 0.3.8",
2921 "libp2p-core",3059 "libp2p-core",
2922 "parking_lot 0.11.0",3060 "parking_lot 0.11.1",
2923 "thiserror",3061 "thiserror",
2924 "yamux",3062 "yamux",
2925]3063]
2948 "hmac-drbg",3086 "hmac-drbg",
2949 "rand 0.7.3",3087 "rand 0.7.3",
2950 "sha2 0.8.2",3088 "sha2 0.8.2",
2951 "subtle 2.3.0",3089 "subtle 2.4.0",
2952 "typenum",3090 "typenum",
2953]3091]
29543092
30093147
3010[[package]]3148[[package]]
3011name = "lock_api"3149name = "lock_api"
3012version = "0.4.1"3150version = "0.4.2"
3013source = "registry+https://github.com/rust-lang/crates.io-index"3151source = "registry+https://github.com/rust-lang/crates.io-index"
3014checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c"3152checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
3015dependencies = [3153dependencies = [
3016 "scopeguard 1.1.0",3154 "scopeguard 1.1.0",
3017]3155]
3025 "cfg-if 0.1.10",3163 "cfg-if 0.1.10",
3026]3164]
3165
3166[[package]]
3167name = "loom"
3168version = "0.3.6"
3169source = "registry+https://github.com/rust-lang/crates.io-index"
3170checksum = "a0e8460f2f2121162705187214720353c517b97bdfb3494c0b1e33d83ebe4bed"
3171dependencies = [
3172 "cfg-if 0.1.10",
3173 "generator",
3174 "scoped-tls",
3175 "serde",
3176 "serde_json",
3177]
30273178
3028[[package]]3179[[package]]
3029name = "lru"3180name = "lru"
30363187
3037[[package]]3188[[package]]
3038name = "lru"3189name = "lru"
3039version = "0.6.0"3190version = "0.6.2"
3040source = "registry+https://github.com/rust-lang/crates.io-index"3191source = "registry+https://github.com/rust-lang/crates.io-index"
3041checksum = "111b945ac72ec09eb7bc62a0fbdc3cc6e80555a7245f52a69d3921a75b53b153"3192checksum = "3abe07af102235a56ac9a6dd904aab1e05483e2e8afdfffec3598be55b1b7606"
3042dependencies = [3193dependencies = [
3043 "hashbrown 0.8.2",3194 "hashbrown 0.9.1",
3044]3195]
30453196
3046[[package]]3197[[package]]
30753226
3076[[package]]3227[[package]]
3077name = "matrixmultiply"3228name = "matrixmultiply"
3078version = "0.2.3"3229version = "0.2.4"
3079source = "registry+https://github.com/rust-lang/crates.io-index"3230source = "registry+https://github.com/rust-lang/crates.io-index"
3080checksum = "d4f7ec66360130972f34830bfad9ef05c6610a43938a467bcc9ab9369ab3478f"3231checksum = "916806ba0031cd542105d916a97c8572e1fa6dd79c9c51e7eb43a09ec2dd84c1"
3081dependencies = [3232dependencies = [
3082 "rawpointer",3233 "rawpointer",
3083]3234]
30903241
3091[[package]]3242[[package]]
3092name = "memchr"3243name = "memchr"
3093version = "2.3.3"3244version = "2.3.4"
3094source = "registry+https://github.com/rust-lang/crates.io-index"3245source = "registry+https://github.com/rust-lang/crates.io-index"
3095checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"3246checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
30963247
3097[[package]]3248[[package]]
3098name = "memmap"3249name = "memmap"
3113 "autocfg 1.0.1",3264 "autocfg 1.0.1",
3114]3265]
3266
3267[[package]]
3268name = "memoffset"
3269version = "0.6.1"
3270source = "registry+https://github.com/rust-lang/crates.io-index"
3271checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
3272dependencies = [
3273 "autocfg 1.0.1",
3274]
31153275
3116[[package]]3276[[package]]
3117name = "memory-db"3277name = "memory-db"
31743334
3175[[package]]3335[[package]]
3176name = "mio"3336name = "mio"
3177version = "0.6.22"3337version = "0.6.23"
3178source = "registry+https://github.com/rust-lang/crates.io-index"3338source = "registry+https://github.com/rust-lang/crates.io-index"
3179checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"3339checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4"
3180dependencies = [3340dependencies = [
3181 "cfg-if 0.1.10",3341 "cfg-if 0.1.10",
3182 "fuchsia-zircon",3342 "fuchsia-zircon",
3185 "kernel32-sys",3345 "kernel32-sys",
3186 "libc",3346 "libc",
3187 "log",3347 "log",
3188 "miow 0.2.1",3348 "miow 0.2.2",
3189 "net2",3349 "net2",
3190 "slab",3350 "slab",
3191 "winapi 0.2.8",3351 "winapi 0.2.8",
3211dependencies = [3371dependencies = [
3212 "log",3372 "log",
3213 "mio",3373 "mio",
3214 "miow 0.3.5",3374 "miow 0.3.6",
3215 "winapi 0.3.9",3375 "winapi 0.3.9",
3216]3376]
32173377
32283388
3229[[package]]3389[[package]]
3230name = "miow"3390name = "miow"
3231version = "0.2.1"3391version = "0.2.2"
3232source = "registry+https://github.com/rust-lang/crates.io-index"3392source = "registry+https://github.com/rust-lang/crates.io-index"
3233checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"3393checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d"
3234dependencies = [3394dependencies = [
3235 "kernel32-sys",3395 "kernel32-sys",
3236 "net2",3396 "net2",
32403400
3241[[package]]3401[[package]]
3242name = "miow"3402name = "miow"
3243version = "0.3.5"3403version = "0.3.6"
3244source = "registry+https://github.com/rust-lang/crates.io-index"3404source = "registry+https://github.com/rust-lang/crates.io-index"
3245checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e"3405checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897"
3246dependencies = [3406dependencies = [
3247 "socket2",3407 "socket2",
3248 "winapi 0.3.9",3408 "winapi 0.3.9",
3263 "blake2b_simd",3423 "blake2b_simd",
3264 "blake2s_simd",3424 "blake2s_simd",
3265 "digest 0.9.0",3425 "digest 0.9.0",
3266 "sha-1 0.9.1",3426 "sha-1 0.9.2",
3267 "sha2 0.9.1",3427 "sha2 0.9.2",
3268 "sha3 0.9.1",3428 "sha3",
3269 "unsigned-varint 0.5.1",3429 "unsigned-varint 0.5.1",
3270]3430]
32713431
32773437
3278[[package]]3438[[package]]
3279name = "multistream-select"3439name = "multistream-select"
3280version = "0.8.2"3440version = "0.8.5"
3281source = "registry+https://github.com/rust-lang/crates.io-index"3441source = "registry+https://github.com/rust-lang/crates.io-index"
3282checksum = "c9157e87afbc2ef0d84cc0345423d715f445edde00141c93721c162de35a05e5"3442checksum = "93faf2e41f9ee62fb01680ed48f3cc26652352327aa2e59869070358f6b7dd75"
3283dependencies = [3443dependencies = [
3284 "bytes 0.5.6",3444 "bytes 0.5.6",
3285 "futures 0.3.6",3445 "futures 0.3.8",
3286 "log",3446 "log",
3287 "pin-project",3447 "pin-project 1.0.2",
3288 "smallvec 1.4.2",3448 "smallvec 1.5.1",
3289 "unsigned-varint 0.4.0",3449 "unsigned-varint 0.5.1",
3290]3450]
32913451
3292[[package]]3452[[package]]
33273487
3328[[package]]3488[[package]]
3329name = "net2"3489name = "net2"
3330version = "0.2.35"3490version = "0.2.37"
3331source = "registry+https://github.com/rust-lang/crates.io-index"3491source = "registry+https://github.com/rust-lang/crates.io-index"
3332checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853"3492checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae"
3333dependencies = [3493dependencies = [
3334 "cfg-if 0.1.10",3494 "cfg-if 0.1.10",
3335 "libc",3495 "libc",
3340name = "nft"3500name = "nft"
3341version = "2.0.0"3501version = "2.0.0"
3342dependencies = [3502dependencies = [
3503 "flexi_logger",
3343 "frame-benchmarking",3504 "frame-benchmarking",
3344 "frame-benchmarking-cli",3505 "frame-benchmarking-cli",
3345 "futures 0.3.6",3506 "futures 0.3.8",
3346 "jsonrpc-core",3507 "jsonrpc-core",
3347 "log",3508 "log",
3348 "nft-runtime",3509 "nft-runtime",
3361 "sc-rpc-api",3522 "sc-rpc-api",
3362 "sc-service",3523 "sc-service",
3363 "sc-transaction-pool",3524 "sc-transaction-pool",
3525 "serde",
3526 "serde_json",
3364 "sp-api",3527 "sp-api",
3365 "sp-block-builder",3528 "sp-block-builder",
3366 "sp-blockchain",3529 "sp-blockchain",
3400 "pallet-transaction-payment",3563 "pallet-transaction-payment",
3401 "pallet-transaction-payment-rpc-runtime-api",3564 "pallet-transaction-payment-rpc-runtime-api",
3402 "pallet-treasury",3565 "pallet-treasury",
3566 "pallet-vesting",
3403 "parity-scale-codec",3567 "parity-scale-codec",
3404 "serde",3568 "serde",
3405 "sp-api",3569 "sp-api",
34743638
3475[[package]]3639[[package]]
3476name = "num-integer"3640name = "num-integer"
3477version = "0.1.43"3641version = "0.1.44"
3478source = "registry+https://github.com/rust-lang/crates.io-index"3642source = "registry+https://github.com/rust-lang/crates.io-index"
3479checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"3643checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
3480dependencies = [3644dependencies = [
3481 "autocfg 1.0.1",3645 "autocfg 1.0.1",
3482 "num-traits",3646 "num-traits",
34963660
3497[[package]]3661[[package]]
3498name = "num-traits"3662name = "num-traits"
3499version = "0.2.12"3663version = "0.2.14"
3500source = "registry+https://github.com/rust-lang/crates.io-index"3664source = "registry+https://github.com/rust-lang/crates.io-index"
3501checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"3665checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
3502dependencies = [3666dependencies = [
3503 "autocfg 1.0.1",3667 "autocfg 1.0.1",
3504 "libm",3668 "libm",
35333697
3534[[package]]3698[[package]]
3535name = "object"3699name = "object"
3536version = "0.21.1"3700version = "0.22.0"
3537source = "registry+https://github.com/rust-lang/crates.io-index"3701source = "registry+https://github.com/rust-lang/crates.io-index"
3538checksum = "37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693"3702checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397"
35393703
3540[[package]]3704[[package]]
3541name = "once_cell"3705name = "once_cell"
35483712
3549[[package]]3713[[package]]
3550name = "once_cell"3714name = "once_cell"
3551version = "1.4.1"3715version = "1.5.2"
3552source = "registry+https://github.com/rust-lang/crates.io-index"3716source = "registry+https://github.com/rust-lang/crates.io-index"
3553checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"3717checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
3554dependencies = [3718dependencies = [
3555 "parking_lot 0.11.0",3719 "parking_lot 0.11.1",
3556]3720]
35573721
3558[[package]]3722[[package]]
3585[[package]]3749[[package]]
3586name = "pallet-aura"3750name = "pallet-aura"
3587version = "2.0.0"3751version = "2.0.0"
3588source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3752source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3589dependencies = [3753dependencies = [
3590 "frame-support",3754 "frame-support",
3591 "frame-system",3755 "frame-system",
3604[[package]]3768[[package]]
3605name = "pallet-authorship"3769name = "pallet-authorship"
3606version = "2.0.0"3770version = "2.0.0"
3607source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3771source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3608dependencies = [3772dependencies = [
3609 "frame-support",3773 "frame-support",
3610 "frame-system",3774 "frame-system",
3619[[package]]3783[[package]]
3620name = "pallet-balances"3784name = "pallet-balances"
3621version = "2.0.0"3785version = "2.0.0"
3622source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3786source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3623dependencies = [3787dependencies = [
3624 "frame-benchmarking",3788 "frame-benchmarking",
3625 "frame-support",3789 "frame-support",
3633[[package]]3797[[package]]
3634name = "pallet-contracts"3798name = "pallet-contracts"
3635version = "2.0.0"3799version = "2.0.0"
3636source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3800source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3637dependencies = [3801dependencies = [
3638 "bitflags",3802 "bitflags",
3639 "frame-support",3803 "frame-support",
3654[[package]]3818[[package]]
3655name = "pallet-contracts-primitives"3819name = "pallet-contracts-primitives"
3656version = "2.0.0"3820version = "2.0.0"
3657source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3821source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3658dependencies = [3822dependencies = [
3659 "parity-scale-codec",3823 "parity-scale-codec",
3660 "sp-runtime",3824 "sp-runtime",
3664[[package]]3828[[package]]
3665name = "pallet-contracts-rpc"3829name = "pallet-contracts-rpc"
3666version = "0.8.0"3830version = "0.8.0"
3667source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3831source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3668dependencies = [3832dependencies = [
3669 "jsonrpc-core",3833 "jsonrpc-core",
3670 "jsonrpc-core-client",3834 "jsonrpc-core-client",
3683[[package]]3847[[package]]
3684name = "pallet-contracts-rpc-runtime-api"3848name = "pallet-contracts-rpc-runtime-api"
3685version = "0.8.0"3849version = "0.8.0"
3686source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3850source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3687dependencies = [3851dependencies = [
3688 "pallet-contracts-primitives",3852 "pallet-contracts-primitives",
3689 "parity-scale-codec",3853 "parity-scale-codec",
3695[[package]]3859[[package]]
3696name = "pallet-finality-tracker"3860name = "pallet-finality-tracker"
3697version = "2.0.0"3861version = "2.0.0"
3698source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3862source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3699dependencies = [3863dependencies = [
3700 "frame-support",3864 "frame-support",
3701 "frame-system",3865 "frame-system",
3711[[package]]3875[[package]]
3712name = "pallet-grandpa"3876name = "pallet-grandpa"
3713version = "2.0.0"3877version = "2.0.0"
3714source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3878source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3715dependencies = [3879dependencies = [
3716 "frame-benchmarking",3880 "frame-benchmarking",
3717 "frame-support",3881 "frame-support",
3754[[package]]3918[[package]]
3755name = "pallet-randomness-collective-flip"3919name = "pallet-randomness-collective-flip"
3756version = "2.0.0"3920version = "2.0.0"
3757source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3921source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3758dependencies = [3922dependencies = [
3759 "frame-support",3923 "frame-support",
3760 "frame-system",3924 "frame-system",
3767[[package]]3931[[package]]
3768name = "pallet-session"3932name = "pallet-session"
3769version = "2.0.0"3933version = "2.0.0"
3770source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3934source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3771dependencies = [3935dependencies = [
3772 "frame-support",3936 "frame-support",
3773 "frame-system",3937 "frame-system",
3787[[package]]3951[[package]]
3788name = "pallet-sudo"3952name = "pallet-sudo"
3789version = "2.0.0"3953version = "2.0.0"
3790source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3954source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3791dependencies = [3955dependencies = [
3792 "frame-support",3956 "frame-support",
3793 "frame-system",3957 "frame-system",
3801[[package]]3965[[package]]
3802name = "pallet-timestamp"3966name = "pallet-timestamp"
3803version = "2.0.0"3967version = "2.0.0"
3804source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3968source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3805dependencies = [3969dependencies = [
3806 "frame-benchmarking",3970 "frame-benchmarking",
3807 "frame-support",3971 "frame-support",
3819[[package]]3983[[package]]
3820name = "pallet-transaction-payment"3984name = "pallet-transaction-payment"
3821version = "2.0.0"3985version = "2.0.0"
3822source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"3986source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3823dependencies = [3987dependencies = [
3824 "frame-support",3988 "frame-support",
3825 "frame-system",3989 "frame-system",
3826 "pallet-transaction-payment-rpc-runtime-api",3990 "pallet-transaction-payment-rpc-runtime-api",
3827 "parity-scale-codec",3991 "parity-scale-codec",
3828 "serde",3992 "serde",
3829 "smallvec 1.4.2",3993 "smallvec 1.5.1",
3830 "sp-core",3994 "sp-core",
3831 "sp-io",3995 "sp-io",
3832 "sp-runtime",3996 "sp-runtime",
3836[[package]]4000[[package]]
3837name = "pallet-transaction-payment-rpc"4001name = "pallet-transaction-payment-rpc"
3838version = "2.0.0"4002version = "2.0.0"
3839source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"4003source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3840dependencies = [4004dependencies = [
3841 "jsonrpc-core",4005 "jsonrpc-core",
3842 "jsonrpc-core-client",4006 "jsonrpc-core-client",
3854[[package]]4018[[package]]
3855name = "pallet-transaction-payment-rpc-runtime-api"4019name = "pallet-transaction-payment-rpc-runtime-api"
3856version = "2.0.0"4020version = "2.0.0"
3857source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"4021source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3858dependencies = [4022dependencies = [
3859 "frame-support",4023 "frame-support",
3860 "parity-scale-codec",4024 "parity-scale-codec",
3867[[package]]4031[[package]]
3868name = "pallet-treasury"4032name = "pallet-treasury"
3869version = "2.0.0"4033version = "2.0.0"
3870source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"4034source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3871dependencies = [4035dependencies = [
3872 "frame-support",4036 "frame-support",
3873 "frame-system",4037 "frame-system",
3878 "sp-std",4042 "sp-std",
3879]4043]
4044
4045[[package]]
4046name = "pallet-vesting"
4047version = "2.0.0"
4048source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
4049dependencies = [
4050 "enumflags2",
4051 "frame-support",
4052 "frame-system",
4053 "parity-scale-codec",
4054 "serde",
4055 "sp-runtime",
4056 "sp-std",
4057]
38804058
3881[[package]]4059[[package]]
3882name = "parity-db"4060name = "parity-db"
38944072
3895[[package]]4073[[package]]
3896name = "parity-multiaddr"4074name = "parity-multiaddr"
3897version = "0.9.2"4075version = "0.9.6"
3898source = "registry+https://github.com/rust-lang/crates.io-index"4076source = "registry+https://github.com/rust-lang/crates.io-index"
3899checksum = "2165a93382a93de55868dcbfa11e4a8f99676a9164eee6a2b4a9479ad319c257"4077checksum = "43244a26dc1ddd3097216bb12eaa6cf8a07b060c72718d9ebd60fd297d6401df"
3900dependencies = [4078dependencies = [
3901 "arrayref",4079 "arrayref",
3902 "bs58",4080 "bs58 0.4.0",
3903 "byteorder 1.3.4",4081 "byteorder 1.3.4",
3904 "data-encoding",4082 "data-encoding",
3905 "multihash",4083 "multihash",
3906 "percent-encoding 2.1.0",4084 "percent-encoding 2.1.0",
3907 "serde",4085 "serde",
3908 "static_assertions",4086 "static_assertions",
3909 "unsigned-varint 0.4.0",4087 "unsigned-varint 0.5.1",
3910 "url 2.1.1",4088 "url 2.2.0",
3911]4089]
39124090
3913[[package]]4091[[package]]
3916source = "registry+https://github.com/rust-lang/crates.io-index"4094source = "registry+https://github.com/rust-lang/crates.io-index"
3917checksum = "7c740e5fbcb6847058b40ac7e5574766c6388f585e184d769910fe0d3a2ca861"4095checksum = "7c740e5fbcb6847058b40ac7e5574766c6388f585e184d769910fe0d3a2ca861"
3918dependencies = [4096dependencies = [
3919 "arrayvec 0.5.1",4097 "arrayvec 0.5.2",
3920 "bitvec",4098 "bitvec",
3921 "byte-slice-cast",4099 "byte-slice-cast",
3922 "parity-scale-codec-derive",4100 "parity-scale-codec-derive",
3952 "libc",4130 "libc",
3953 "log",4131 "log",
3954 "mio-named-pipes",4132 "mio-named-pipes",
3955 "miow 0.3.5",4133 "miow 0.3.6",
3956 "rand 0.7.3",4134 "rand 0.7.3",
3957 "tokio 0.1.22",4135 "tokio 0.1.22",
3958 "tokio-named-pipes",4136 "tokio-named-pipes",
3972 "parity-util-mem-derive",4150 "parity-util-mem-derive",
3973 "parking_lot 0.10.2",4151 "parking_lot 0.10.2",
3974 "primitive-types",4152 "primitive-types",
3975 "smallvec 1.4.2",4153 "smallvec 1.5.1",
3976 "winapi 0.3.9",4154 "winapi 0.3.9",
3977]4155]
39784156
4008 "rand 0.7.3",4186 "rand 0.7.3",
4009 "sha-1 0.8.2",4187 "sha-1 0.8.2",
4010 "slab",4188 "slab",
4011 "url 2.1.1",4189 "url 2.2.0",
4012]4190]
40134191
4014[[package]]4192[[package]]
40504228
4051[[package]]4229[[package]]
4052name = "parking_lot"4230name = "parking_lot"
4053version = "0.11.0"4231version = "0.11.1"
4054source = "registry+https://github.com/rust-lang/crates.io-index"4232source = "registry+https://github.com/rust-lang/crates.io-index"
4055checksum = "a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733"4233checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
4056dependencies = [4234dependencies = [
4057 "instant",4235 "instant",
4058 "lock_api 0.4.1",4236 "lock_api 0.4.2",
4059 "parking_lot_core 0.8.0",4237 "parking_lot_core 0.8.1",
4060]4238]
40614239
4062[[package]]4240[[package]]
4079checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"4257checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
4080dependencies = [4258dependencies = [
4081 "cfg-if 0.1.10",4259 "cfg-if 0.1.10",
4082 "cloudabi 0.0.3",4260 "cloudabi",
4083 "libc",4261 "libc",
4084 "redox_syscall",4262 "redox_syscall",
4085 "rustc_version",4263 "rustc_version",
4094checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"4272checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3"
4095dependencies = [4273dependencies = [
4096 "cfg-if 0.1.10",4274 "cfg-if 0.1.10",
4097 "cloudabi 0.0.3",4275 "cloudabi",
4098 "libc",4276 "libc",
4099 "redox_syscall",4277 "redox_syscall",
4100 "smallvec 1.4.2",4278 "smallvec 1.5.1",
4101 "winapi 0.3.9",4279 "winapi 0.3.9",
4102]4280]
41034281
4104[[package]]4282[[package]]
4105name = "parking_lot_core"4283name = "parking_lot_core"
4106version = "0.8.0"4284version = "0.8.1"
4107source = "registry+https://github.com/rust-lang/crates.io-index"4285source = "registry+https://github.com/rust-lang/crates.io-index"
4108checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b"4286checksum = "d7c6d9b8427445284a09c55be860a15855ab580a417ccad9da88f5a06787ced0"
4109dependencies = [4287dependencies = [
4110 "cfg-if 0.1.10",4288 "cfg-if 1.0.0",
4111 "cloudabi 0.1.0",
4112 "instant",4289 "instant",
4113 "libc",4290 "libc",
4114 "redox_syscall",4291 "redox_syscall",
4115 "smallvec 1.4.2",4292 "smallvec 1.5.1",
4116 "winapi 0.3.9",4293 "winapi 0.3.9",
4117]4294]
41184295
4180source = "registry+https://github.com/rust-lang/crates.io-index"4357source = "registry+https://github.com/rust-lang/crates.io-index"
4181checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15"4358checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15"
4182dependencies = [4359dependencies = [
4183 "pin-project-internal",4360 "pin-project-internal 0.4.27",
4184]4361]
4362
4363[[package]]
4364name = "pin-project"
4365version = "1.0.2"
4366source = "registry+https://github.com/rust-lang/crates.io-index"
4367checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7"
4368dependencies = [
4369 "pin-project-internal 1.0.2",
4370]
41854371
4186[[package]]4372[[package]]
4187name = "pin-project-internal"4373name = "pin-project-internal"
4194 "syn",4380 "syn",
4195]4381]
4382
4383[[package]]
4384name = "pin-project-internal"
4385version = "1.0.2"
4386source = "registry+https://github.com/rust-lang/crates.io-index"
4387checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f"
4388dependencies = [
4389 "proc-macro2",
4390 "quote",
4391 "syn",
4392]
41964393
4197[[package]]4394[[package]]
4198name = "pin-project-lite"4395name = "pin-project-lite"
4199version = "0.1.10"4396version = "0.1.11"
4200source = "registry+https://github.com/rust-lang/crates.io-index"4397source = "registry+https://github.com/rust-lang/crates.io-index"
4201checksum = "e555d9e657502182ac97b539fb3dae8b79cda19e3e4f8ffb5e8de4f18df93c95"4398checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b"
4399
4400[[package]]
4401name = "pin-project-lite"
4402version = "0.2.0"
4403source = "registry+https://github.com/rust-lang/crates.io-index"
4404checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c"
42024405
4203[[package]]4406[[package]]
4204name = "pin-utils"4407name = "pin-utils"
42204423
4221[[package]]4424[[package]]
4222name = "polling"4425name = "polling"
4223version = "2.0.1"4426version = "2.0.2"
4224source = "registry+https://github.com/rust-lang/crates.io-index"4427source = "registry+https://github.com/rust-lang/crates.io-index"
4225checksum = "ab773feb154f12c49ffcfd66ab8bdcf9a1843f950db48b0d8be9d4393783b058"4428checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4"
4226dependencies = [4429dependencies = [
4227 "cfg-if 0.1.10",4430 "cfg-if 0.1.10",
4228 "libc",4431 "libc",
42334436
4234[[package]]4437[[package]]
4235name = "poly1305"4438name = "poly1305"
4236version = "0.6.1"4439version = "0.6.2"
4237source = "registry+https://github.com/rust-lang/crates.io-index"4440source = "registry+https://github.com/rust-lang/crates.io-index"
4238checksum = "22ce46de8e53ee414ca4d02bfefac75d8c12fba948b76622a40b4be34dfce980"4441checksum = "4b7456bc1ad2d4cf82b3a016be4c2ac48daf11bf990c1603ebd447fe6f30fca8"
4239dependencies = [4442dependencies = [
4443 "cpuid-bool 0.2.0",
4240 "universal-hash",4444 "universal-hash",
4241]4445]
42424446
4243[[package]]4447[[package]]
4244name = "polyval"4448name = "polyval"
4245version = "0.4.1"4449version = "0.4.3"
4246source = "registry+https://github.com/rust-lang/crates.io-index"4450source = "registry+https://github.com/rust-lang/crates.io-index"
4247checksum = "a5884790f1ce3553ad55fec37b5aaac5882e0e845a2612df744d6c85c9bf046c"4451checksum = "b4fd92d8e0c06d08525d2e2643cc2b5c80c69ae8eb12c18272d501cd7079ccc0"
4248dependencies = [4452dependencies = [
4249 "cfg-if 0.1.10",4453 "cpuid-bool 0.2.0",
4250 "universal-hash",4454 "universal-hash",
4251]4455]
42524456
4253[[package]]4457[[package]]
4254name = "ppv-lite86"4458name = "ppv-lite86"
4255version = "0.2.9"4459version = "0.2.10"
4256source = "registry+https://github.com/rust-lang/crates.io-index"4460source = "registry+https://github.com/rust-lang/crates.io-index"
4257checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20"4461checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
42584462
4259[[package]]4463[[package]]
4260name = "primitive-types"4464name = "primitive-types"
4261version = "0.7.2"4465version = "0.7.3"
4262source = "registry+https://github.com/rust-lang/crates.io-index"4466source = "registry+https://github.com/rust-lang/crates.io-index"
4263checksum = "c55c21c64d0eaa4d7ed885d959ef2d62d9e488c27c0e02d9aa5ce6c877b7d5f8"4467checksum = "7dd39dcacf71411ba488570da7bbc89b717225e46478b30ba99b92db6b149809"
4264dependencies = [4468dependencies = [
4265 "fixed-hash",4469 "fixed-hash",
4266 "impl-codec",4470 "impl-codec",
43034507
4304[[package]]4508[[package]]
4305name = "proc-macro-hack"4509name = "proc-macro-hack"
4306version = "0.5.18"4510version = "0.5.19"
4307source = "registry+https://github.com/rust-lang/crates.io-index"4511source = "registry+https://github.com/rust-lang/crates.io-index"
4308checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598"4512checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
43094513
4310[[package]]4514[[package]]
4311name = "proc-macro-nested"4515name = "proc-macro-nested"
4331 "cfg-if 0.1.10",4535 "cfg-if 0.1.10",
4332 "fnv",4536 "fnv",
4333 "lazy_static",4537 "lazy_static",
4334 "parking_lot 0.11.0",4538 "parking_lot 0.11.1",
4335 "regex",4539 "regex",
4336 "thiserror",4540 "thiserror",
4337]4541]
4412dependencies = [4616dependencies = [
4413 "futures-core",4617 "futures-core",
4414 "futures-sink",4618 "futures-sink",
4415 "pin-project-lite",4619 "pin-project-lite 0.1.11",
4416]4620]
44174621
4418[[package]]4622[[package]]
4459source = "registry+https://github.com/rust-lang/crates.io-index"4663source = "registry+https://github.com/rust-lang/crates.io-index"
4460checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"4664checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
4461dependencies = [4665dependencies = [
4462 "cloudabi 0.0.3",4666 "cloudabi",
4463 "fuchsia-cprng",4667 "fuchsia-cprng",
4464 "libc",4668 "libc",
4465 "rand_core 0.3.1",4669 "rand_core 0.3.1",
4587source = "registry+https://github.com/rust-lang/crates.io-index"4791source = "registry+https://github.com/rust-lang/crates.io-index"
4588checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"4792checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
4589dependencies = [4793dependencies = [
4590 "cloudabi 0.0.3",4794 "cloudabi",
4591 "fuchsia-cprng",4795 "fuchsia-cprng",
4592 "libc",4796 "libc",
4593 "rand_core 0.4.2",4797 "rand_core 0.4.2",
46424846
4643[[package]]4847[[package]]
4644name = "rayon"4848name = "rayon"
4645version = "1.4.1"4849version = "1.5.0"
4646source = "registry+https://github.com/rust-lang/crates.io-index"4850source = "registry+https://github.com/rust-lang/crates.io-index"
4647checksum = "dcf6960dc9a5b4ee8d3e4c5787b4a112a8818e0290a42ff664ad60692fdf2032"4851checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
4648dependencies = [4852dependencies = [
4649 "autocfg 1.0.1",4853 "autocfg 1.0.1",
4650 "crossbeam-deque",4854 "crossbeam-deque 0.8.0",
4651 "either",4855 "either",
4652 "rayon-core",4856 "rayon-core",
4653]4857]
46544858
4655[[package]]4859[[package]]
4656name = "rayon-core"4860name = "rayon-core"
4657version = "1.8.1"4861version = "1.9.0"
4658source = "registry+https://github.com/rust-lang/crates.io-index"4862source = "registry+https://github.com/rust-lang/crates.io-index"
4659checksum = "e8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bf"4863checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
4660dependencies = [4864dependencies = [
4661 "crossbeam-channel",4865 "crossbeam-channel",
4662 "crossbeam-deque",4866 "crossbeam-deque 0.8.0",
4663 "crossbeam-utils",4867 "crossbeam-utils 0.8.1",
4664 "lazy_static",4868 "lazy_static",
4665 "num_cpus",4869 "num_cpus",
4666]4870]
46934897
4694[[package]]4898[[package]]
4695name = "ref-cast"4899name = "ref-cast"
4696version = "1.0.2"4900version = "1.0.3"
4697source = "registry+https://github.com/rust-lang/crates.io-index"4901source = "registry+https://github.com/rust-lang/crates.io-index"
4698checksum = "745c1787167ddae5569661d5ffb8b25ae5fedbf46717eaa92d652221cec72623"4902checksum = "e17626b2f4bcf35b84bf379072a66e28cfe5c3c6ae58b38e4914bb8891dabece"
4699dependencies = [4903dependencies = [
4700 "ref-cast-impl",4904 "ref-cast-impl",
4701]4905]
47024906
4703[[package]]4907[[package]]
4704name = "ref-cast-impl"4908name = "ref-cast-impl"
4705version = "1.0.2"4909version = "1.0.3"
4706source = "registry+https://github.com/rust-lang/crates.io-index"4910source = "registry+https://github.com/rust-lang/crates.io-index"
4707checksum = "7d21b475ab879ef0e315ad99067fa25778c3b0377f57f1b00207448dac1a3144"4911checksum = "0c523ccaed8ac4b0288948849a350b37d3035827413c458b6a40ddb614bb4f72"
4708dependencies = [4912dependencies = [
4709 "proc-macro2",4913 "proc-macro2",
4710 "quote",4914 "quote",
4719dependencies = [4923dependencies = [
4720 "log",4924 "log",
4721 "rustc-hash",4925 "rustc-hash",
4722 "smallvec 1.4.2",4926 "smallvec 1.5.1",
4723]4927]
47244928
4725[[package]]4929[[package]]
4726name = "regex"4930name = "regex"
4727version = "1.4.1"4931version = "1.4.2"
4728source = "registry+https://github.com/rust-lang/crates.io-index"4932source = "registry+https://github.com/rust-lang/crates.io-index"
4729checksum = "8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b"4933checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c"
4730dependencies = [4934dependencies = [
4731 "aho-corasick",4935 "aho-corasick",
4732 "memchr",4936 "memchr",
47464950
4747[[package]]4951[[package]]
4748name = "regex-syntax"4952name = "regex-syntax"
4749version = "0.6.20"4953version = "0.6.21"
4750source = "registry+https://github.com/rust-lang/crates.io-index"4954source = "registry+https://github.com/rust-lang/crates.io-index"
4751checksum = "8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c"4955checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189"
47524956
4753[[package]]4957[[package]]
4754name = "region"4958name = "region"
47794983
4780[[package]]4984[[package]]
4781name = "ring"4985name = "ring"
4782version = "0.16.15"4986version = "0.16.19"
4783source = "registry+https://github.com/rust-lang/crates.io-index"4987source = "registry+https://github.com/rust-lang/crates.io-index"
4784checksum = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4"4988checksum = "024a1e66fea74c66c66624ee5622a7ff0e4b73a13b4f5c326ddb50c708944226"
4785dependencies = [4989dependencies = [
4786 "cc",4990 "cc",
4787 "libc",4991 "libc",
4788 "once_cell 1.4.1",4992 "once_cell 1.5.2",
4789 "spin",4993 "spin",
4790 "untrusted",4994 "untrusted",
4791 "web-sys",4995 "web-sys",
48145018
4815[[package]]5019[[package]]
4816name = "rust-argon2"5020name = "rust-argon2"
4817version = "0.8.2"5021version = "0.8.3"
4818source = "registry+https://github.com/rust-lang/crates.io-index"5022source = "registry+https://github.com/rust-lang/crates.io-index"
4819checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19"5023checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb"
4820dependencies = [5024dependencies = [
4821 "base64 0.12.3",5025 "base64 0.13.0",
4822 "blake2b_simd",5026 "blake2b_simd",
4823 "constant_time_eq",5027 "constant_time_eq",
4824 "crossbeam-utils",5028 "crossbeam-utils 0.8.1",
4825]5029]
48265030
4827[[package]]5031[[package]]
4828name = "rustc-demangle"5032name = "rustc-demangle"
4829version = "0.1.17"5033version = "0.1.18"
4830source = "registry+https://github.com/rust-lang/crates.io-index"5034source = "registry+https://github.com/rust-lang/crates.io-index"
4831checksum = "b2610b7f643d18c87dff3b489950269617e6601a51f1f05aa5daefee36f64f0b"5035checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232"
48325036
4833[[package]]5037[[package]]
4834name = "rustc-hash"5038name = "rustc-hash"
4882source = "registry+https://github.com/rust-lang/crates.io-index"5086source = "registry+https://github.com/rust-lang/crates.io-index"
4883checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020"5087checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020"
4884dependencies = [5088dependencies = [
4885 "futures 0.3.6",5089 "futures 0.3.8",
4886 "pin-project",5090 "pin-project 0.4.27",
4887 "static_assertions",5091 "static_assertions",
4888]5092]
48895093
49045108
4905[[package]]5109[[package]]
4906name = "salsa20"5110name = "salsa20"
4907version = "0.3.0"5111version = "0.6.0"
4908source = "registry+https://github.com/rust-lang/crates.io-index"5112source = "registry+https://github.com/rust-lang/crates.io-index"
4909checksum = "2324b0e8c3bb9a586a571fdb3136f70e7e2c748de00a78043f86e0cff91f91fe"5113checksum = "c7f47b10fa80f6969bbbd9c8e7cc998f082979d402a9e10579e2303a87955395"
4910dependencies = [5114dependencies = [
4911 "byteorder 1.3.4",
4912 "salsa20-core",
4913 "stream-cipher 0.3.2",5115 "stream-cipher",
4914]5116]
4915
4916[[package]]
4917name = "salsa20-core"
4918version = "0.2.3"
4919source = "registry+https://github.com/rust-lang/crates.io-index"
4920checksum = "2fe6cc1b9f5a5867853ade63099de70f042f7679e408d1ffe52821c9248e6e69"
4921dependencies = [
4922 "stream-cipher 0.3.2",
4923]
49245117
4925[[package]]5118[[package]]
4926name = "sc-basic-authorship"5119name = "sc-basic-authorship"
4927version = "0.8.0"5120version = "0.8.0"
4928source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5121source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
4929dependencies = [5122dependencies = [
4930 "futures 0.3.6",5123 "futures 0.3.8",
4931 "futures-timer 3.0.2",5124 "futures-timer 3.0.2",
4932 "log",5125 "log",
4933 "parity-scale-codec",5126 "parity-scale-codec",
4949[[package]]5142[[package]]
4950name = "sc-block-builder"5143name = "sc-block-builder"
4951version = "0.8.0"5144version = "0.8.0"
4952source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5145source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
4953dependencies = [5146dependencies = [
4954 "parity-scale-codec",5147 "parity-scale-codec",
4955 "sc-client-api",5148 "sc-client-api",
4966[[package]]5159[[package]]
4967name = "sc-chain-spec"5160name = "sc-chain-spec"
4968version = "2.0.0"5161version = "2.0.0"
4969source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5162source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
4970dependencies = [5163dependencies = [
4971 "impl-trait-for-tuples",5164 "impl-trait-for-tuples",
4972 "parity-scale-codec",5165 "parity-scale-codec",
4983[[package]]5176[[package]]
4984name = "sc-chain-spec-derive"5177name = "sc-chain-spec-derive"
4985version = "2.0.0"5178version = "2.0.0"
4986source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5179source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
4987dependencies = [5180dependencies = [
4988 "proc-macro-crate",5181 "proc-macro-crate",
4989 "proc-macro2",5182 "proc-macro2",
4994[[package]]5187[[package]]
4995name = "sc-cli"5188name = "sc-cli"
4996version = "0.8.0"5189version = "0.8.0"
4997source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5190source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
4998dependencies = [5191dependencies = [
4999 "ansi_term 0.12.1",5192 "ansi_term 0.12.1",
5000 "atty",5193 "atty",
5001 "bip39",5194 "bip39",
5002 "chrono",5195 "chrono",
5003 "derive_more",5196 "derive_more",
5004 "fdlimit",5197 "fdlimit",
5198 "flexi_logger",
5005 "futures 0.3.6",5199 "futures 0.3.8",
5006 "hex",5200 "hex",
5007 "lazy_static",5201 "lazy_static",
5008 "libp2p",5202 "libp2p",
5034 "structopt",5228 "structopt",
5035 "substrate-prometheus-endpoint",5229 "substrate-prometheus-endpoint",
5036 "time",5230 "time",
5037 "tokio 0.2.22",5231 "tokio 0.2.24",
5038 "tracing",5232 "tracing",
5039 "tracing-log",5233 "tracing-log",
5040 "tracing-subscriber",5234 "tracing-subscriber",
5043[[package]]5237[[package]]
5044name = "sc-client-api"5238name = "sc-client-api"
5045version = "2.0.0"5239version = "2.0.0"
5046source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5240source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5047dependencies = [5241dependencies = [
5048 "derive_more",5242 "derive_more",
5049 "fnv",5243 "fnv",
5050 "futures 0.3.6",5244 "futures 0.3.8",
5051 "hash-db",5245 "hash-db",
5052 "hex-literal",5246 "hex-literal",
5053 "kvdb",5247 "kvdb",
5079[[package]]5273[[package]]
5080name = "sc-client-db"5274name = "sc-client-db"
5081version = "0.8.0"5275version = "0.8.0"
5082source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5276source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5083dependencies = [5277dependencies = [
5084 "blake2-rfc",5278 "blake2-rfc",
5085 "hash-db",5279 "hash-db",
5109[[package]]5303[[package]]
5110name = "sc-consensus"5304name = "sc-consensus"
5111version = "0.8.0"5305version = "0.8.0"
5112source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5306source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5113dependencies = [5307dependencies = [
5114 "sc-client-api",5308 "sc-client-api",
5115 "sp-blockchain",5309 "sp-blockchain",
5120[[package]]5314[[package]]
5121name = "sc-consensus-aura"5315name = "sc-consensus-aura"
5122version = "0.8.0"5316version = "0.8.0"
5123source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5317source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5124dependencies = [5318dependencies = [
5125 "derive_more",5319 "derive_more",
5126 "futures 0.3.6",5320 "futures 0.3.8",
5127 "futures-timer 3.0.2",5321 "futures-timer 3.0.2",
5128 "log",5322 "log",
5129 "parity-scale-codec",5323 "parity-scale-codec",
5151[[package]]5345[[package]]
5152name = "sc-consensus-slots"5346name = "sc-consensus-slots"
5153version = "0.8.0"5347version = "0.8.0"
5154source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5348source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5155dependencies = [5349dependencies = [
5156 "futures 0.3.6",5350 "futures 0.3.8",
5157 "futures-timer 3.0.2",5351 "futures-timer 3.0.2",
5158 "log",5352 "log",
5159 "parity-scale-codec",5353 "parity-scale-codec",
5174[[package]]5368[[package]]
5175name = "sc-executor"5369name = "sc-executor"
5176version = "0.8.0"5370version = "0.8.0"
5177source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5371source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5178dependencies = [5372dependencies = [
5179 "derive_more",5373 "derive_more",
5180 "lazy_static",5374 "lazy_static",
5202[[package]]5396[[package]]
5203name = "sc-executor-common"5397name = "sc-executor-common"
5204version = "0.8.0"5398version = "0.8.0"
5205source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5399source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5206dependencies = [5400dependencies = [
5207 "derive_more",5401 "derive_more",
5208 "log",5402 "log",
5219[[package]]5413[[package]]
5220name = "sc-executor-wasmi"5414name = "sc-executor-wasmi"
5221version = "0.8.0"5415version = "0.8.0"
5222source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5416source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5223dependencies = [5417dependencies = [
5224 "log",5418 "log",
5225 "parity-scale-codec",5419 "parity-scale-codec",
5234[[package]]5428[[package]]
5235name = "sc-executor-wasmtime"5429name = "sc-executor-wasmtime"
5236version = "0.8.0"5430version = "0.8.0"
5237source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5431source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5238dependencies = [5432dependencies = [
5239 "log",5433 "log",
5240 "parity-scale-codec",5434 "parity-scale-codec",
5252[[package]]5446[[package]]
5253name = "sc-finality-grandpa"5447name = "sc-finality-grandpa"
5254version = "0.8.0"5448version = "0.8.0"
5255source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5449source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5256dependencies = [5450dependencies = [
5257 "derive_more",5451 "derive_more",
5258 "finality-grandpa",5452 "finality-grandpa",
5259 "fork-tree",5453 "fork-tree",
5260 "futures 0.3.6",5454 "futures 0.3.8",
5261 "futures-timer 3.0.2",5455 "futures-timer 3.0.2",
5262 "log",5456 "log",
5263 "parity-scale-codec",5457 "parity-scale-codec",
5264 "parking_lot 0.10.2",5458 "parking_lot 0.10.2",
5265 "pin-project",5459 "pin-project 0.4.27",
5266 "rand 0.7.3",5460 "rand 0.7.3",
5267 "sc-block-builder",5461 "sc-block-builder",
5268 "sc-client-api",5462 "sc-client-api",
5289[[package]]5483[[package]]
5290name = "sc-informant"5484name = "sc-informant"
5291version = "0.8.0"5485version = "0.8.0"
5292source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5486source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5293dependencies = [5487dependencies = [
5294 "ansi_term 0.12.1",5488 "ansi_term 0.12.1",
5295 "futures 0.3.6",5489 "futures 0.3.8",
5296 "log",5490 "log",
5297 "parity-util-mem",5491 "parity-util-mem",
5298 "sc-client-api",5492 "sc-client-api",
5307[[package]]5501[[package]]
5308name = "sc-keystore"5502name = "sc-keystore"
5309version = "2.0.0"5503version = "2.0.0"
5310source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5504source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5311dependencies = [5505dependencies = [
5312 "derive_more",5506 "derive_more",
5313 "hex",5507 "hex",
5317 "serde_json",5511 "serde_json",
5318 "sp-application-crypto",5512 "sp-application-crypto",
5319 "sp-core",5513 "sp-core",
5320 "subtle 2.3.0",5514 "subtle 2.4.0",
5321]5515]
53225516
5323[[package]]5517[[package]]
5324name = "sc-light"5518name = "sc-light"
5325version = "2.0.0"5519version = "2.0.0"
5326source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5520source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5327dependencies = [5521dependencies = [
5328 "hash-db",5522 "hash-db",
5329 "lazy_static",5523 "lazy_static",
5342[[package]]5536[[package]]
5343name = "sc-network"5537name = "sc-network"
5344version = "0.8.0"5538version = "0.8.0"
5345source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5539source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5346dependencies = [5540dependencies = [
5347 "async-std",5541 "async-std",
5348 "async-trait",5542 "async-trait",
5349 "bitflags",5543 "bitflags",
5350 "bs58",5544 "bs58 0.3.1",
5351 "bytes 0.5.6",5545 "bytes 0.5.6",
5352 "derive_more",5546 "derive_more",
5353 "either",5547 "either",
5354 "erased-serde",5548 "erased-serde",
5355 "fnv",5549 "fnv",
5356 "fork-tree",5550 "fork-tree",
5357 "futures 0.3.6",5551 "futures 0.3.8",
5358 "futures-timer 3.0.2",5552 "futures-timer 3.0.2",
5359 "futures_codec",5553 "futures_codec",
5360 "hex",5554 "hex",
5367 "nohash-hasher",5561 "nohash-hasher",
5368 "parity-scale-codec",5562 "parity-scale-codec",
5369 "parking_lot 0.10.2",5563 "parking_lot 0.10.2",
5370 "pin-project",5564 "pin-project 0.4.27",
5371 "prost",5565 "prost",
5372 "prost-build",5566 "prost-build",
5373 "rand 0.7.3",5567 "rand 0.7.3",
5396[[package]]5590[[package]]
5397name = "sc-network-gossip"5591name = "sc-network-gossip"
5398version = "0.8.0"5592version = "0.8.0"
5399source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5593source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5400dependencies = [5594dependencies = [
5401 "futures 0.3.6",5595 "futures 0.3.8",
5402 "futures-timer 3.0.2",5596 "futures-timer 3.0.2",
5403 "libp2p",5597 "libp2p",
5404 "log",5598 "log",
5411[[package]]5605[[package]]
5412name = "sc-offchain"5606name = "sc-offchain"
5413version = "2.0.0"5607version = "2.0.0"
5414source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5608source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5415dependencies = [5609dependencies = [
5416 "bytes 0.5.6",5610 "bytes 0.5.6",
5417 "fnv",5611 "fnv",
5418 "futures 0.3.6",5612 "futures 0.3.8",
5419 "futures-timer 3.0.2",5613 "futures-timer 3.0.2",
5420 "hyper 0.13.8",5614 "hyper 0.13.9",
5421 "hyper-rustls",5615 "hyper-rustls",
5422 "log",5616 "log",
5423 "num_cpus",5617 "num_cpus",
5438[[package]]5632[[package]]
5439name = "sc-peerset"5633name = "sc-peerset"
5440version = "2.0.0"5634version = "2.0.0"
5441source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5635source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5442dependencies = [5636dependencies = [
5443 "futures 0.3.6",5637 "futures 0.3.8",
5444 "libp2p",5638 "libp2p",
5445 "log",5639 "log",
5446 "serde_json",5640 "serde_json",
5451[[package]]5645[[package]]
5452name = "sc-proposer-metrics"5646name = "sc-proposer-metrics"
5453version = "0.8.0"5647version = "0.8.0"
5454source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5648source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5455dependencies = [5649dependencies = [
5456 "log",5650 "log",
5457 "substrate-prometheus-endpoint",5651 "substrate-prometheus-endpoint",
5460[[package]]5654[[package]]
5461name = "sc-rpc"5655name = "sc-rpc"
5462version = "2.0.0"5656version = "2.0.0"
5463source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5657source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5464dependencies = [5658dependencies = [
5465 "futures 0.3.6",5659 "futures 0.3.8",
5466 "hash-db",5660 "hash-db",
5467 "jsonrpc-core",5661 "jsonrpc-core",
5468 "jsonrpc-pubsub",5662 "jsonrpc-pubsub",
5492[[package]]5686[[package]]
5493name = "sc-rpc-api"5687name = "sc-rpc-api"
5494version = "0.8.0"5688version = "0.8.0"
5495source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5689source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5496dependencies = [5690dependencies = [
5497 "derive_more",5691 "derive_more",
5498 "futures 0.3.6",5692 "futures 0.3.8",
5499 "jsonrpc-core",5693 "jsonrpc-core",
5500 "jsonrpc-core-client",5694 "jsonrpc-core-client",
5501 "jsonrpc-derive",5695 "jsonrpc-derive",
5516[[package]]5710[[package]]
5517name = "sc-rpc-server"5711name = "sc-rpc-server"
5518version = "2.0.0"5712version = "2.0.0"
5519source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5713source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5520dependencies = [5714dependencies = [
5521 "futures 0.1.30",5715 "futures 0.1.30",
5522 "jsonrpc-core",5716 "jsonrpc-core",
5534[[package]]5728[[package]]
5535name = "sc-service"5729name = "sc-service"
5536version = "0.8.0"5730version = "0.8.0"
5537source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5731source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5538dependencies = [5732dependencies = [
5539 "derive_more",5733 "derive_more",
5540 "directories",5734 "directories",
5541 "exit-future",5735 "exit-future",
5542 "futures 0.1.30",5736 "futures 0.1.30",
5543 "futures 0.3.6",5737 "futures 0.3.8",
5544 "futures-timer 3.0.2",5738 "futures-timer 3.0.2",
5545 "hash-db",5739 "hash-db",
5546 "jsonrpc-core",5740 "jsonrpc-core",
5550 "parity-scale-codec",5744 "parity-scale-codec",
5551 "parity-util-mem",5745 "parity-util-mem",
5552 "parking_lot 0.10.2",5746 "parking_lot 0.10.2",
5553 "pin-project",5747 "pin-project 0.4.27",
5554 "rand 0.7.3",5748 "rand 0.7.3",
5555 "sc-block-builder",5749 "sc-block-builder",
5556 "sc-chain-spec",5750 "sc-chain-spec",
5596[[package]]5790[[package]]
5597name = "sc-state-db"5791name = "sc-state-db"
5598version = "0.8.0"5792version = "0.8.0"
5599source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5793source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5600dependencies = [5794dependencies = [
5601 "log",5795 "log",
5602 "parity-scale-codec",5796 "parity-scale-codec",
5610[[package]]5804[[package]]
5611name = "sc-telemetry"5805name = "sc-telemetry"
5612version = "2.0.0"5806version = "2.0.0"
5613source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5807source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5614dependencies = [5808dependencies = [
5615 "futures 0.3.6",5809 "futures 0.3.8",
5616 "futures-timer 3.0.2",5810 "futures-timer 3.0.2",
5617 "libp2p",5811 "libp2p",
5618 "log",5812 "log",
5619 "parking_lot 0.10.2",5813 "parking_lot 0.10.2",
5620 "pin-project",5814 "pin-project 0.4.27",
5621 "rand 0.7.3",5815 "rand 0.7.3",
5622 "serde",5816 "serde",
5623 "slog",5817 "slog",
5631[[package]]5825[[package]]
5632name = "sc-tracing"5826name = "sc-tracing"
5633version = "2.0.0"5827version = "2.0.0"
5634source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5828source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5635dependencies = [5829dependencies = [
5636 "erased-serde",5830 "erased-serde",
5637 "log",5831 "log",
5650[[package]]5844[[package]]
5651name = "sc-transaction-graph"5845name = "sc-transaction-graph"
5652version = "2.0.0"5846version = "2.0.0"
5653source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5847source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5654dependencies = [5848dependencies = [
5655 "derive_more",5849 "derive_more",
5656 "futures 0.3.6",5850 "futures 0.3.8",
5657 "linked-hash-map",5851 "linked-hash-map",
5658 "log",5852 "log",
5659 "parity-util-mem",5853 "parity-util-mem",
5671[[package]]5865[[package]]
5672name = "sc-transaction-pool"5866name = "sc-transaction-pool"
5673version = "2.0.0"5867version = "2.0.0"
5674source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"5868source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
5675dependencies = [5869dependencies = [
5676 "derive_more",5870 "derive_more",
5677 "futures 0.3.6",5871 "futures 0.3.8",
5678 "futures-diagnose",5872 "futures-diagnose",
5679 "intervalier",5873 "intervalier",
5680 "log",5874 "log",
5711checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862"5905checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862"
5712dependencies = [5906dependencies = [
5713 "arrayref",5907 "arrayref",
5714 "arrayvec 0.5.1",5908 "arrayvec 0.5.2",
5715 "curve25519-dalek 2.1.0",5909 "curve25519-dalek 2.1.0",
5716 "getrandom 0.1.15",5910 "getrandom 0.1.15",
5717 "merlin",5911 "merlin",
5718 "rand 0.7.3",5912 "rand 0.7.3",
5719 "rand_core 0.5.1",5913 "rand_core 0.5.1",
5720 "sha2 0.8.2",5914 "sha2 0.8.2",
5721 "subtle 2.3.0",5915 "subtle 2.4.0",
5722 "zeroize",5916 "zeroize",
5723]5917]
57245918
57515945
5752[[package]]5946[[package]]
5753name = "scroll_derive"5947name = "scroll_derive"
5754version = "0.10.3"5948version = "0.10.4"
5755source = "registry+https://github.com/rust-lang/crates.io-index"5949source = "registry+https://github.com/rust-lang/crates.io-index"
5756checksum = "6dfde5d1531034db129e95c76ac857e2baecea3443579d493d02224950b0fb6d"5950checksum = "b12bd20b94c7cdfda8c7ba9b92ad0d9a56e3fa018c25fca83b51aa664c9b4c0d"
5757dependencies = [5951dependencies = [
5758 "proc-macro2",5952 "proc-macro2",
5759 "quote",5953 "quote",
58196013
5820[[package]]6014[[package]]
5821name = "serde"6015name = "serde"
5822version = "1.0.117"6016version = "1.0.118"
5823source = "registry+https://github.com/rust-lang/crates.io-index"6017source = "registry+https://github.com/rust-lang/crates.io-index"
5824checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a"6018checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800"
5825dependencies = [6019dependencies = [
5826 "serde_derive",6020 "serde_derive",
5827]6021]
58286022
5829[[package]]6023[[package]]
5830name = "serde_derive"6024name = "serde_derive"
5831version = "1.0.117"6025version = "1.0.118"
5832source = "registry+https://github.com/rust-lang/crates.io-index"6026source = "registry+https://github.com/rust-lang/crates.io-index"
5833checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e"6027checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df"
5834dependencies = [6028dependencies = [
5835 "proc-macro2",6029 "proc-macro2",
5836 "quote",6030 "quote",
58396033
5840[[package]]6034[[package]]
5841name = "serde_json"6035name = "serde_json"
5842version = "1.0.59"6036version = "1.0.60"
5843source = "registry+https://github.com/rust-lang/crates.io-index"6037source = "registry+https://github.com/rust-lang/crates.io-index"
5844checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95"6038checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779"
5845dependencies = [6039dependencies = [
5846 "itoa",6040 "itoa",
5847 "ryu",6041 "ryu",
58626056
5863[[package]]6057[[package]]
5864name = "sha-1"6058name = "sha-1"
5865version = "0.9.1"6059version = "0.9.2"
5866source = "registry+https://github.com/rust-lang/crates.io-index"6060source = "registry+https://github.com/rust-lang/crates.io-index"
5867checksum = "170a36ea86c864a3f16dd2687712dd6646f7019f301e57537c7f4dc9f5916770"6061checksum = "ce3cdf1b5e620a498ee6f2a171885ac7e22f0e12089ec4b3d22b84921792507c"
5868dependencies = [6062dependencies = [
5869 "block-buffer 0.9.0",6063 "block-buffer 0.9.0",
5870 "cfg-if 0.1.10",6064 "cfg-if 1.0.0",
5871 "cpuid-bool",6065 "cpuid-bool 0.1.2",
5872 "digest 0.9.0",6066 "digest 0.9.0",
5873 "opaque-debug 0.3.0",6067 "opaque-debug 0.3.0",
5874]6068]
58876081
5888[[package]]6082[[package]]
5889name = "sha2"6083name = "sha2"
5890version = "0.9.1"6084version = "0.9.2"
5891source = "registry+https://github.com/rust-lang/crates.io-index"6085source = "registry+https://github.com/rust-lang/crates.io-index"
5892checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1"6086checksum = "6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8"
5893dependencies = [6087dependencies = [
5894 "block-buffer 0.9.0",6088 "block-buffer 0.9.0",
5895 "cfg-if 0.1.10",6089 "cfg-if 1.0.0",
5896 "cpuid-bool",6090 "cpuid-bool 0.1.2",
5897 "digest 0.9.0",6091 "digest 0.9.0",
5898 "opaque-debug 0.3.0",6092 "opaque-debug 0.3.0",
5899]6093]
5900
5901[[package]]
5902name = "sha3"
5903version = "0.8.2"
5904source = "registry+https://github.com/rust-lang/crates.io-index"
5905checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf"
5906dependencies = [
5907 "block-buffer 0.7.3",
5908 "byte-tools",
5909 "digest 0.8.1",
5910 "keccak",
5911 "opaque-debug 0.2.3",
5912]
59136094
5914[[package]]6095[[package]]
5915name = "sha3"6096name = "sha3"
59256106
5926[[package]]6107[[package]]
5927name = "sharded-slab"6108name = "sharded-slab"
5928version = "0.0.9"6109version = "0.1.0"
5929source = "registry+https://github.com/rust-lang/crates.io-index"6110source = "registry+https://github.com/rust-lang/crates.io-index"
5930checksum = "06d5a3f5166fb5b42a5439f2eee8b9de149e235961e3eb21c5808fc3ea17ff3e"6111checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127"
5931dependencies = [6112dependencies = [
5932 "lazy_static",6113 "lazy_static",
6114 "loom",
5933]6115]
59346116
5935[[package]]6117[[package]]
5938source = "registry+https://github.com/rust-lang/crates.io-index"6120source = "registry+https://github.com/rust-lang/crates.io-index"
5939checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"6121checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
6122
6123[[package]]
6124name = "signal-hook"
6125version = "0.1.16"
6126source = "registry+https://github.com/rust-lang/crates.io-index"
6127checksum = "604508c1418b99dfe1925ca9224829bb2a8a9a04dda655cc01fcad46f4ab05ed"
6128dependencies = [
6129 "libc",
6130 "signal-hook-registry",
6131]
59406132
5941[[package]]6133[[package]]
5942name = "signal-hook-registry"6134name = "signal-hook-registry"
5943version = "1.2.1"6135version = "1.2.2"
5944source = "registry+https://github.com/rust-lang/crates.io-index"6136source = "registry+https://github.com/rust-lang/crates.io-index"
5945checksum = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035"6137checksum = "ce32ea0c6c56d5eacaeb814fbed9960547021d3edd010ded1425f180536b20ab"
5946dependencies = [6138dependencies = [
5947 "arc-swap",
5948 "libc",6139 "libc",
5949]6140]
59506141
59626153
5963[[package]]6154[[package]]
5964name = "slog"6155name = "slog"
5965version = "2.5.2"6156version = "2.7.0"
5966source = "registry+https://github.com/rust-lang/crates.io-index"6157source = "registry+https://github.com/rust-lang/crates.io-index"
5967checksum = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99"6158checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06"
5968dependencies = [6159dependencies = [
5969 "erased-serde",6160 "erased-serde",
5970]6161]
60156206
6016[[package]]6207[[package]]
6017name = "smallvec"6208name = "smallvec"
6018version = "1.4.2"6209version = "1.5.1"
6019source = "registry+https://github.com/rust-lang/crates.io-index"6210source = "registry+https://github.com/rust-lang/crates.io-index"
6020checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252"6211checksum = "ae524f056d7d770e174287294f562e95044c68e88dec909a00d2094805db9d75"
60216212
6022[[package]]6213[[package]]
6023name = "snow"6214name = "snow"
6032 "rand_core 0.5.1",6223 "rand_core 0.5.1",
6033 "ring",6224 "ring",
6034 "rustc_version",6225 "rustc_version",
6035 "sha2 0.9.1",6226 "sha2 0.9.2",
6036 "subtle 2.3.0",6227 "subtle 2.4.0",
6037 "x25519-dalek 1.1.0",6228 "x25519-dalek 1.1.0",
6038]6229]
60396230
6040[[package]]6231[[package]]
6041name = "socket2"6232name = "socket2"
6042version = "0.3.15"6233version = "0.3.18"
6043source = "registry+https://github.com/rust-lang/crates.io-index"6234source = "registry+https://github.com/rust-lang/crates.io-index"
6044checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44"6235checksum = "97e0e9fd577458a4f61fb91fcb559ea2afecc54c934119421f9f5d3d5b1a1057"
6045dependencies = [6236dependencies = [
6046 "cfg-if 0.1.10",6237 "cfg-if 1.0.0",
6047 "libc",6238 "libc",
6048 "redox_syscall",
6049 "winapi 0.3.9",6239 "winapi 0.3.9",
6050]6240]
60516241
6058 "base64 0.12.3",6248 "base64 0.12.3",
6059 "bytes 0.5.6",6249 "bytes 0.5.6",
6060 "flate2",6250 "flate2",
6061 "futures 0.3.6",6251 "futures 0.3.8",
6062 "httparse",6252 "httparse",
6063 "log",6253 "log",
6064 "rand 0.7.3",6254 "rand 0.7.3",
6065 "sha-1 0.9.1",6255 "sha-1 0.9.2",
6066]6256]
60676257
6068[[package]]6258[[package]]
6069name = "sp-allocator"6259name = "sp-allocator"
6070version = "2.0.0"6260version = "2.0.0"
6071source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6261source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6072dependencies = [6262dependencies = [
6073 "derive_more",6263 "derive_more",
6074 "log",6264 "log",
6080[[package]]6270[[package]]
6081name = "sp-api"6271name = "sp-api"
6082version = "2.0.0"6272version = "2.0.0"
6083source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6273source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6084dependencies = [6274dependencies = [
6085 "hash-db",6275 "hash-db",
6086 "parity-scale-codec",6276 "parity-scale-codec",
6095[[package]]6285[[package]]
6096name = "sp-api-proc-macro"6286name = "sp-api-proc-macro"
6097version = "2.0.0"6287version = "2.0.0"
6098source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6288source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6099dependencies = [6289dependencies = [
6100 "blake2-rfc",6290 "blake2-rfc",
6101 "proc-macro-crate",6291 "proc-macro-crate",
6107[[package]]6297[[package]]
6108name = "sp-application-crypto"6298name = "sp-application-crypto"
6109version = "2.0.0"6299version = "2.0.0"
6110source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6300source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6111dependencies = [6301dependencies = [
6112 "parity-scale-codec",6302 "parity-scale-codec",
6113 "serde",6303 "serde",
6119[[package]]6309[[package]]
6120name = "sp-arithmetic"6310name = "sp-arithmetic"
6121version = "2.0.0"6311version = "2.0.0"
6122source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6312source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6123dependencies = [6313dependencies = [
6124 "integer-sqrt",6314 "integer-sqrt",
6125 "num-traits",6315 "num-traits",
6132[[package]]6322[[package]]
6133name = "sp-authorship"6323name = "sp-authorship"
6134version = "2.0.0"6324version = "2.0.0"
6135source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6325source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6136dependencies = [6326dependencies = [
6137 "parity-scale-codec",6327 "parity-scale-codec",
6138 "sp-inherents",6328 "sp-inherents",
6143[[package]]6333[[package]]
6144name = "sp-block-builder"6334name = "sp-block-builder"
6145version = "2.0.0"6335version = "2.0.0"
6146source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6336source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6147dependencies = [6337dependencies = [
6148 "parity-scale-codec",6338 "parity-scale-codec",
6149 "sp-api",6339 "sp-api",
6155[[package]]6345[[package]]
6156name = "sp-blockchain"6346name = "sp-blockchain"
6157version = "2.0.0"6347version = "2.0.0"
6158source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6348source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6159dependencies = [6349dependencies = [
6160 "derive_more",6350 "derive_more",
6161 "log",6351 "log",
6172[[package]]6362[[package]]
6173name = "sp-chain-spec"6363name = "sp-chain-spec"
6174version = "2.0.0"6364version = "2.0.0"
6175source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6365source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6176dependencies = [6366dependencies = [
6177 "serde",6367 "serde",
6178 "serde_json",6368 "serde_json",
6181[[package]]6371[[package]]
6182name = "sp-consensus"6372name = "sp-consensus"
6183version = "0.8.0"6373version = "0.8.0"
6184source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6374source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6185dependencies = [6375dependencies = [
6186 "derive_more",6376 "derive_more",
6187 "futures 0.3.6",6377 "futures 0.3.8",
6188 "futures-timer 3.0.2",6378 "futures-timer 3.0.2",
6189 "libp2p",6379 "libp2p",
6190 "log",6380 "log",
6207[[package]]6397[[package]]
6208name = "sp-consensus-aura"6398name = "sp-consensus-aura"
6209version = "0.8.0"6399version = "0.8.0"
6210source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6400source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6211dependencies = [6401dependencies = [
6212 "parity-scale-codec",6402 "parity-scale-codec",
6213 "sp-api",6403 "sp-api",
6221[[package]]6411[[package]]
6222name = "sp-consensus-slots"6412name = "sp-consensus-slots"
6223version = "0.8.0"6413version = "0.8.0"
6224source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6414source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6225dependencies = [6415dependencies = [
6226 "parity-scale-codec",6416 "parity-scale-codec",
6227 "sp-runtime",6417 "sp-runtime",
6230[[package]]6420[[package]]
6231name = "sp-core"6421name = "sp-core"
6232version = "2.0.0"6422version = "2.0.0"
6233source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6423source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6234dependencies = [6424dependencies = [
6235 "base58",6425 "base58",
6236 "blake2-rfc",6426 "blake2-rfc",
6237 "byteorder 1.3.4",6427 "byteorder 1.3.4",
6238 "derive_more",6428 "derive_more",
6239 "dyn-clonable",6429 "dyn-clonable",
6240 "ed25519-dalek",6430 "ed25519-dalek",
6241 "futures 0.3.6",6431 "futures 0.3.8",
6242 "hash-db",6432 "hash-db",
6243 "hash256-std-hasher",6433 "hash256-std-hasher",
6244 "hex",6434 "hex",
6274[[package]]6464[[package]]
6275name = "sp-database"6465name = "sp-database"
6276version = "2.0.0"6466version = "2.0.0"
6277source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6467source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6278dependencies = [6468dependencies = [
6279 "kvdb",6469 "kvdb",
6280 "parking_lot 0.10.2",6470 "parking_lot 0.10.2",
6283[[package]]6473[[package]]
6284name = "sp-debug-derive"6474name = "sp-debug-derive"
6285version = "2.0.0"6475version = "2.0.0"
6286source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6476source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6287dependencies = [6477dependencies = [
6288 "proc-macro2",6478 "proc-macro2",
6289 "quote",6479 "quote",
6293[[package]]6483[[package]]
6294name = "sp-externalities"6484name = "sp-externalities"
6295version = "0.8.0"6485version = "0.8.0"
6296source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6486source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6297dependencies = [6487dependencies = [
6298 "environmental",6488 "environmental",
6299 "parity-scale-codec",6489 "parity-scale-codec",
6304[[package]]6494[[package]]
6305name = "sp-finality-grandpa"6495name = "sp-finality-grandpa"
6306version = "2.0.0"6496version = "2.0.0"
6307source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6497source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6308dependencies = [6498dependencies = [
6309 "finality-grandpa",6499 "finality-grandpa",
6310 "log",6500 "log",
6320[[package]]6510[[package]]
6321name = "sp-finality-tracker"6511name = "sp-finality-tracker"
6322version = "2.0.0"6512version = "2.0.0"
6323source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6513source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6324dependencies = [6514dependencies = [
6325 "parity-scale-codec",6515 "parity-scale-codec",
6326 "sp-inherents",6516 "sp-inherents",
6330[[package]]6520[[package]]
6331name = "sp-inherents"6521name = "sp-inherents"
6332version = "2.0.0"6522version = "2.0.0"
6333source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6523source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6334dependencies = [6524dependencies = [
6335 "derive_more",6525 "derive_more",
6336 "parity-scale-codec",6526 "parity-scale-codec",
6342[[package]]6532[[package]]
6343name = "sp-io"6533name = "sp-io"
6344version = "2.0.0"6534version = "2.0.0"
6345source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6535source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6346dependencies = [6536dependencies = [
6347 "futures 0.3.6",6537 "futures 0.3.8",
6348 "hash-db",6538 "hash-db",
6349 "libsecp256k1",6539 "libsecp256k1",
6350 "log",6540 "log",
6365[[package]]6555[[package]]
6366name = "sp-keyring"6556name = "sp-keyring"
6367version = "2.0.0"6557version = "2.0.0"
6368source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6558source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6369dependencies = [6559dependencies = [
6370 "lazy_static",6560 "lazy_static",
6371 "sp-core",6561 "sp-core",
6376[[package]]6566[[package]]
6377name = "sp-offchain"6567name = "sp-offchain"
6378version = "2.0.0"6568version = "2.0.0"
6379source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6569source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6380dependencies = [6570dependencies = [
6381 "sp-api",6571 "sp-api",
6382 "sp-core",6572 "sp-core",
6386[[package]]6576[[package]]
6387name = "sp-panic-handler"6577name = "sp-panic-handler"
6388version = "2.0.0"6578version = "2.0.0"
6389source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6579source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6390dependencies = [6580dependencies = [
6391 "backtrace",6581 "backtrace",
6392 "log",6582 "log",
6395[[package]]6585[[package]]
6396name = "sp-rpc"6586name = "sp-rpc"
6397version = "2.0.0"6587version = "2.0.0"
6398source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6588source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6399dependencies = [6589dependencies = [
6400 "serde",6590 "serde",
6401 "sp-core",6591 "sp-core",
6404[[package]]6594[[package]]
6405name = "sp-runtime"6595name = "sp-runtime"
6406version = "2.0.0"6596version = "2.0.0"
6407source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6597source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6408dependencies = [6598dependencies = [
6409 "either",6599 "either",
6410 "hash256-std-hasher",6600 "hash256-std-hasher",
6426[[package]]6616[[package]]
6427name = "sp-runtime-interface"6617name = "sp-runtime-interface"
6428version = "2.0.0"6618version = "2.0.0"
6429source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6619source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6430dependencies = [6620dependencies = [
6431 "parity-scale-codec",6621 "parity-scale-codec",
6432 "primitive-types",6622 "primitive-types",
6442[[package]]6632[[package]]
6443name = "sp-runtime-interface-proc-macro"6633name = "sp-runtime-interface-proc-macro"
6444version = "2.0.0"6634version = "2.0.0"
6445source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6635source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6446dependencies = [6636dependencies = [
6447 "Inflector",6637 "Inflector",
6448 "proc-macro-crate",6638 "proc-macro-crate",
6454[[package]]6644[[package]]
6455name = "sp-sandbox"6645name = "sp-sandbox"
6456version = "0.8.0"6646version = "0.8.0"
6457source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6647source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6458dependencies = [6648dependencies = [
6459 "parity-scale-codec",6649 "parity-scale-codec",
6460 "sp-core",6650 "sp-core",
6467[[package]]6657[[package]]
6468name = "sp-serializer"6658name = "sp-serializer"
6469version = "2.0.0"6659version = "2.0.0"
6470source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6660source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6471dependencies = [6661dependencies = [
6472 "serde",6662 "serde",
6473 "serde_json",6663 "serde_json",
6476[[package]]6666[[package]]
6477name = "sp-session"6667name = "sp-session"
6478version = "2.0.0"6668version = "2.0.0"
6479source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6669source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6480dependencies = [6670dependencies = [
6481 "parity-scale-codec",6671 "parity-scale-codec",
6482 "sp-api",6672 "sp-api",
6489[[package]]6679[[package]]
6490name = "sp-staking"6680name = "sp-staking"
6491version = "2.0.0"6681version = "2.0.0"
6492source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6682source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6493dependencies = [6683dependencies = [
6494 "parity-scale-codec",6684 "parity-scale-codec",
6495 "sp-runtime",6685 "sp-runtime",
6499[[package]]6689[[package]]
6500name = "sp-state-machine"6690name = "sp-state-machine"
6501version = "0.8.0"6691version = "0.8.0"
6502source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6692source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6503dependencies = [6693dependencies = [
6504 "hash-db",6694 "hash-db",
6505 "log",6695 "log",
6506 "num-traits",6696 "num-traits",
6507 "parity-scale-codec",6697 "parity-scale-codec",
6508 "parking_lot 0.10.2",6698 "parking_lot 0.10.2",
6509 "rand 0.7.3",6699 "rand 0.7.3",
6510 "smallvec 1.4.2",6700 "smallvec 1.5.1",
6511 "sp-core",6701 "sp-core",
6512 "sp-externalities",6702 "sp-externalities",
6513 "sp-panic-handler",6703 "sp-panic-handler",
6520[[package]]6710[[package]]
6521name = "sp-std"6711name = "sp-std"
6522version = "2.0.0"6712version = "2.0.0"
6523source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6713source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
65246714
6525[[package]]6715[[package]]
6526name = "sp-storage"6716name = "sp-storage"
6527version = "2.0.0"6717version = "2.0.0"
6528source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6718source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6529dependencies = [6719dependencies = [
6530 "impl-serde",6720 "impl-serde",
6531 "parity-scale-codec",6721 "parity-scale-codec",
6538[[package]]6728[[package]]
6539name = "sp-timestamp"6729name = "sp-timestamp"
6540version = "2.0.0"6730version = "2.0.0"
6541source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6731source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6542dependencies = [6732dependencies = [
6543 "impl-trait-for-tuples",6733 "impl-trait-for-tuples",
6544 "parity-scale-codec",6734 "parity-scale-codec",
6552[[package]]6742[[package]]
6553name = "sp-tracing"6743name = "sp-tracing"
6554version = "2.0.0"6744version = "2.0.0"
6555source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6745source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6556dependencies = [6746dependencies = [
6557 "log",6747 "log",
6558 "parity-scale-codec",6748 "parity-scale-codec",
6565[[package]]6755[[package]]
6566name = "sp-transaction-pool"6756name = "sp-transaction-pool"
6567version = "2.0.0"6757version = "2.0.0"
6568source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6758source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6569dependencies = [6759dependencies = [
6570 "derive_more",6760 "derive_more",
6571 "futures 0.3.6",6761 "futures 0.3.8",
6572 "log",6762 "log",
6573 "parity-scale-codec",6763 "parity-scale-codec",
6574 "serde",6764 "serde",
6580[[package]]6770[[package]]
6581name = "sp-trie"6771name = "sp-trie"
6582version = "2.0.0"6772version = "2.0.0"
6583source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6773source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6584dependencies = [6774dependencies = [
6585 "hash-db",6775 "hash-db",
6586 "memory-db",6776 "memory-db",
6594[[package]]6784[[package]]
6595name = "sp-utils"6785name = "sp-utils"
6596version = "2.0.0"6786version = "2.0.0"
6597source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6787source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6598dependencies = [6788dependencies = [
6599 "futures 0.3.6",6789 "futures 0.3.8",
6600 "futures-core",6790 "futures-core",
6601 "futures-timer 3.0.2",6791 "futures-timer 3.0.2",
6602 "lazy_static",6792 "lazy_static",
6606[[package]]6796[[package]]
6607name = "sp-version"6797name = "sp-version"
6608version = "2.0.0"6798version = "2.0.0"
6609source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6799source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6610dependencies = [6800dependencies = [
6611 "impl-serde",6801 "impl-serde",
6612 "parity-scale-codec",6802 "parity-scale-codec",
6618[[package]]6808[[package]]
6619name = "sp-wasm-interface"6809name = "sp-wasm-interface"
6620version = "2.0.0"6810version = "2.0.0"
6621source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6811source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6622dependencies = [6812dependencies = [
6623 "impl-trait-for-tuples",6813 "impl-trait-for-tuples",
6624 "parity-scale-codec",6814 "parity-scale-codec",
6653 "rand 0.5.6",6843 "rand 0.5.6",
6654]6844]
6655
6656[[package]]
6657name = "stream-cipher"
6658version = "0.3.2"
6659source = "registry+https://github.com/rust-lang/crates.io-index"
6660checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c"
6661dependencies = [
6662 "generic-array 0.12.3",
6663]
66646845
6665[[package]]6846[[package]]
6666name = "stream-cipher"6847name = "stream-cipher"
66896870
6690[[package]]6871[[package]]
6691name = "structopt"6872name = "structopt"
6692version = "0.3.20"6873version = "0.3.21"
6693source = "registry+https://github.com/rust-lang/crates.io-index"6874source = "registry+https://github.com/rust-lang/crates.io-index"
6694checksum = "126d630294ec449fae0b16f964e35bf3c74f940da9dca17ee9b905f7b3112eb8"6875checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c"
6695dependencies = [6876dependencies = [
6696 "clap",6877 "clap",
6697 "lazy_static",6878 "lazy_static",
67006881
6701[[package]]6882[[package]]
6702name = "structopt-derive"6883name = "structopt-derive"
6703version = "0.4.13"6884version = "0.4.14"
6704source = "registry+https://github.com/rust-lang/crates.io-index"6885source = "registry+https://github.com/rust-lang/crates.io-index"
6705checksum = "65e51c492f9e23a220534971ff5afc14037289de430e3c83f9daf6a1b6ae91e8"6886checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90"
6706dependencies = [6887dependencies = [
6707 "heck",6888 "heck",
6708 "proc-macro-error",6889 "proc-macro-error",
6748[[package]]6929[[package]]
6749name = "substrate-build-script-utils"6930name = "substrate-build-script-utils"
6750version = "2.0.0"6931version = "2.0.0"
6751source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6932source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6752dependencies = [6933dependencies = [
6753 "platforms",6934 "platforms",
6754]6935]
67556936
6756[[package]]6937[[package]]
6757name = "substrate-frame-rpc-system"6938name = "substrate-frame-rpc-system"
6758version = "2.0.0"6939version = "2.0.0"
6759source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6940source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6760dependencies = [6941dependencies = [
6761 "frame-system-rpc-runtime-api",6942 "frame-system-rpc-runtime-api",
6762 "futures 0.3.6",6943 "futures 0.3.8",
6763 "jsonrpc-core",6944 "jsonrpc-core",
6764 "jsonrpc-core-client",6945 "jsonrpc-core-client",
6765 "jsonrpc-derive",6946 "jsonrpc-derive",
6779[[package]]6960[[package]]
6780name = "substrate-prometheus-endpoint"6961name = "substrate-prometheus-endpoint"
6781version = "0.8.0"6962version = "0.8.0"
6782source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#a200cdb93c6af5763b9c7bf313fa708764ac88ca"6963source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6783dependencies = [6964dependencies = [
6784 "async-std",6965 "async-std",
6785 "derive_more",6966 "derive_more",
6786 "futures-util",6967 "futures-util",
6787 "hyper 0.13.8",6968 "hyper 0.13.9",
6788 "log",6969 "log",
6789 "prometheus",6970 "prometheus",
6790 "tokio 0.2.22",6971 "tokio 0.2.24",
6791]6972]
67926973
6793[[package]]6974[[package]]
68046985
6805[[package]]6986[[package]]
6806name = "subtle"6987name = "subtle"
6807version = "2.3.0"6988version = "2.4.0"
6808source = "registry+https://github.com/rust-lang/crates.io-index"6989source = "registry+https://github.com/rust-lang/crates.io-index"
6809checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd"6990checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2"
68106991
6811[[package]]6992[[package]]
6812name = "syn"6993name = "syn"
6813version = "1.0.44"6994version = "1.0.54"
6814source = "registry+https://github.com/rust-lang/crates.io-index"6995source = "registry+https://github.com/rust-lang/crates.io-index"
6815checksum = "e03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fdd"6996checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44"
6816dependencies = [6997dependencies = [
6817 "proc-macro2",6998 "proc-macro2",
6818 "quote",6999 "quote",
68597040
6860[[package]]7041[[package]]
6861name = "termcolor"7042name = "termcolor"
6862version = "1.1.0"7043version = "1.1.2"
6863source = "registry+https://github.com/rust-lang/crates.io-index"7044source = "registry+https://github.com/rust-lang/crates.io-index"
6864checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"7045checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
6865dependencies = [7046dependencies = [
6866 "winapi-util",7047 "winapi-util",
6867]7048]
68777058
6878[[package]]7059[[package]]
6879name = "thiserror"7060name = "thiserror"
6880version = "1.0.21"7061version = "1.0.22"
6881source = "registry+https://github.com/rust-lang/crates.io-index"7062source = "registry+https://github.com/rust-lang/crates.io-index"
6882checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42"7063checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e"
6883dependencies = [7064dependencies = [
6884 "thiserror-impl",7065 "thiserror-impl",
6885]7066]
68867067
6887[[package]]7068[[package]]
6888name = "thiserror-impl"7069name = "thiserror-impl"
6889version = "1.0.21"7070version = "1.0.22"
6890source = "registry+https://github.com/rust-lang/crates.io-index"7071source = "registry+https://github.com/rust-lang/crates.io-index"
6891checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab"7072checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56"
6892dependencies = [7073dependencies = [
6893 "proc-macro2",7074 "proc-macro2",
6894 "quote",7075 "quote",
6932dependencies = [7113dependencies = [
6933 "failure",7114 "failure",
6934 "hmac",7115 "hmac",
6935 "once_cell 1.4.1",7116 "once_cell 1.5.2",
6936 "pbkdf2",7117 "pbkdf2",
6937 "rand 0.7.3",7118 "rand 0.7.3",
6938 "rustc-hash",7119 "rustc-hash",
69517132
6952[[package]]7133[[package]]
6953name = "tinyvec"7134name = "tinyvec"
6954version = "0.3.4"7135version = "1.1.0"
6955source = "registry+https://github.com/rust-lang/crates.io-index"7136source = "registry+https://github.com/rust-lang/crates.io-index"
6956checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117"7137checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f"
7138dependencies = [
7139 "tinyvec_macros",
7140]
7141
7142[[package]]
7143name = "tinyvec_macros"
7144version = "0.1.0"
7145source = "registry+https://github.com/rust-lang/crates.io-index"
7146checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
69577147
6958[[package]]7148[[package]]
6959name = "tokio"7149name = "tokio"
69817171
6982[[package]]7172[[package]]
6983name = "tokio"7173name = "tokio"
6984version = "0.2.22"7174version = "0.2.24"
6985source = "registry+https://github.com/rust-lang/crates.io-index"7175source = "registry+https://github.com/rust-lang/crates.io-index"
6986checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd"7176checksum = "099837d3464c16a808060bb3f02263b412f6fafcb5d01c533d309985fbeebe48"
6987dependencies = [7177dependencies = [
6988 "bytes 0.5.6",7178 "bytes 0.5.6",
6989 "fnv",7179 "fnv",
6995 "mio",7185 "mio",
6996 "mio-uds",7186 "mio-uds",
6997 "num_cpus",7187 "num_cpus",
6998 "pin-project-lite",7188 "pin-project-lite 0.1.11",
6999 "signal-hook-registry",7189 "signal-hook-registry",
7000 "slab",7190 "slab",
7001 "winapi 0.3.9",7191 "winapi 0.3.9",
7039source = "registry+https://github.com/rust-lang/crates.io-index"7229source = "registry+https://github.com/rust-lang/crates.io-index"
7040checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"7230checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"
7041dependencies = [7231dependencies = [
7042 "crossbeam-utils",7232 "crossbeam-utils 0.7.2",
7043 "futures 0.1.30",7233 "futures 0.1.30",
7044]7234]
70457235
7095source = "registry+https://github.com/rust-lang/crates.io-index"7285source = "registry+https://github.com/rust-lang/crates.io-index"
7096checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"7286checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"
7097dependencies = [7287dependencies = [
7098 "crossbeam-utils",7288 "crossbeam-utils 0.7.2",
7099 "futures 0.1.30",7289 "futures 0.1.30",
7100 "lazy_static",7290 "lazy_static",
7101 "log",7291 "log",
7116dependencies = [7306dependencies = [
7117 "futures-core",7307 "futures-core",
7118 "rustls",7308 "rustls",
7119 "tokio 0.2.22",7309 "tokio 0.2.24",
7120 "webpki",7310 "webpki",
7121]7311]
71227312
7170source = "registry+https://github.com/rust-lang/crates.io-index"7360source = "registry+https://github.com/rust-lang/crates.io-index"
7171checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89"7361checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89"
7172dependencies = [7362dependencies = [
7173 "crossbeam-deque",7363 "crossbeam-deque 0.7.3",
7174 "crossbeam-queue",7364 "crossbeam-queue",
7175 "crossbeam-utils",7365 "crossbeam-utils 0.7.2",
7176 "futures 0.1.30",7366 "futures 0.1.30",
7177 "lazy_static",7367 "lazy_static",
7178 "log",7368 "log",
7187source = "registry+https://github.com/rust-lang/crates.io-index"7377source = "registry+https://github.com/rust-lang/crates.io-index"
7188checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296"7378checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296"
7189dependencies = [7379dependencies = [
7190 "crossbeam-utils",7380 "crossbeam-utils 0.7.2",
7191 "futures 0.1.30",7381 "futures 0.1.30",
7192 "slab",7382 "slab",
7193 "tokio-executor 0.1.10",7383 "tokio-executor 0.1.10",
7236 "futures-core",7426 "futures-core",
7237 "futures-sink",7427 "futures-sink",
7238 "log",7428 "log",
7239 "pin-project-lite",7429 "pin-project-lite 0.1.11",
7240 "tokio 0.2.22",7430 "tokio 0.2.24",
7241]7431]
72427432
7243[[package]]7433[[package]]
72577447
7258[[package]]7448[[package]]
7259name = "tracing"7449name = "tracing"
7260version = "0.1.21"7450version = "0.1.22"
7261source = "registry+https://github.com/rust-lang/crates.io-index"7451source = "registry+https://github.com/rust-lang/crates.io-index"
7262checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27"7452checksum = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3"
7263dependencies = [7453dependencies = [
7264 "cfg-if 0.1.10",7454 "cfg-if 1.0.0",
7265 "log",7455 "log",
7266 "pin-project-lite",7456 "pin-project-lite 0.2.0",
7267 "tracing-attributes",7457 "tracing-attributes",
7268 "tracing-core",7458 "tracing-core",
7269]7459]
7288 "lazy_static",7478 "lazy_static",
7289]7479]
7480
7481[[package]]
7482name = "tracing-futures"
7483version = "0.2.4"
7484source = "registry+https://github.com/rust-lang/crates.io-index"
7485checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c"
7486dependencies = [
7487 "pin-project 0.4.27",
7488 "tracing",
7489]
72907490
7291[[package]]7491[[package]]
7292name = "tracing-log"7492name = "tracing-log"
73117511
7312[[package]]7512[[package]]
7313name = "tracing-subscriber"7513name = "tracing-subscriber"
7314version = "0.2.13"7514version = "0.2.15"
7315source = "registry+https://github.com/rust-lang/crates.io-index"7515source = "registry+https://github.com/rust-lang/crates.io-index"
7316checksum = "4ef0a5e15477aa303afbfac3a44cba9b6430fdaad52423b1e6c0dbbe28c3eedd"7516checksum = "a1fa8f0c8f4c594e4fc9debc1990deab13238077271ba84dd853d54902ee3401"
7317dependencies = [7517dependencies = [
7318 "ansi_term 0.12.1",7518 "ansi_term 0.12.1",
7319 "chrono",7519 "chrono",
7323 "serde",7523 "serde",
7324 "serde_json",7524 "serde_json",
7325 "sharded-slab",7525 "sharded-slab",
7326 "smallvec 1.4.2",7526 "smallvec 1.5.1",
7327 "thread_local",7527 "thread_local",
7328 "tracing",7528 "tracing",
7329 "tracing-core",7529 "tracing-core",
7341 "hashbrown 0.8.2",7541 "hashbrown 0.8.2",
7342 "log",7542 "log",
7343 "rustc-hex",7543 "rustc-hex",
7344 "smallvec 1.4.2",7544 "smallvec 1.5.1",
7345]7545]
73467546
7347[[package]]7547[[package]]
74087608
7409[[package]]7609[[package]]
7410name = "unicode-normalization"7610name = "unicode-normalization"
7411version = "0.1.13"7611version = "0.1.16"
7412source = "registry+https://github.com/rust-lang/crates.io-index"7612source = "registry+https://github.com/rust-lang/crates.io-index"
7413checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"7613checksum = "a13e63ab62dbe32aeee58d1c5408d35c36c392bba5d9d3142287219721afe606"
7414dependencies = [7614dependencies = [
7415 "tinyvec",7615 "tinyvec",
7416]7616]
74177617
7418[[package]]7618[[package]]
7419name = "unicode-segmentation"7619name = "unicode-segmentation"
7420version = "1.6.0"7620version = "1.7.1"
7421source = "registry+https://github.com/rust-lang/crates.io-index"7621source = "registry+https://github.com/rust-lang/crates.io-index"
7422checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0"7622checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
74237623
7424[[package]]7624[[package]]
7425name = "unicode-width"7625name = "unicode-width"
7440checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402"7640checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402"
7441dependencies = [7641dependencies = [
7442 "generic-array 0.14.4",7642 "generic-array 0.14.4",
7443 "subtle 2.3.0",7643 "subtle 2.4.0",
7444]7644]
74457645
7446[[package]]7646[[package]]
74847684
7485[[package]]7685[[package]]
7486name = "url"7686name = "url"
7487version = "2.1.1"7687version = "2.2.0"
7488source = "registry+https://github.com/rust-lang/crates.io-index"7688source = "registry+https://github.com/rust-lang/crates.io-index"
7489checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"7689checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e"
7490dependencies = [7690dependencies = [
7691 "form_urlencoded",
7491 "idna 0.2.0",7692 "idna 0.2.0",
7492 "matches",7693 "matches",
7493 "percent-encoding 2.1.0",7694 "percent-encoding 2.1.0",
7494]7695]
74957696
7496[[package]]7697[[package]]
7497name = "vcpkg"7698name = "vcpkg"
7498version = "0.2.10"7699version = "0.2.11"
7499source = "registry+https://github.com/rust-lang/crates.io-index"7700source = "registry+https://github.com/rust-lang/crates.io-index"
7500checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c"7701checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb"
75017702
7502[[package]]7703[[package]]
7503name = "vec-arena"7704name = "vec-arena"
75647765
7565[[package]]7766[[package]]
7566name = "wasm-bindgen"7767name = "wasm-bindgen"
7567version = "0.2.68"7768version = "0.2.69"
7568source = "registry+https://github.com/rust-lang/crates.io-index"7769source = "registry+https://github.com/rust-lang/crates.io-index"
7569checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42"7770checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e"
7570dependencies = [7771dependencies = [
7571 "cfg-if 0.1.10",7772 "cfg-if 1.0.0",
7572 "wasm-bindgen-macro",7773 "wasm-bindgen-macro",
7573]7774]
75747775
7575[[package]]7776[[package]]
7576name = "wasm-bindgen-backend"7777name = "wasm-bindgen-backend"
7577version = "0.2.68"7778version = "0.2.69"
7578source = "registry+https://github.com/rust-lang/crates.io-index"7779source = "registry+https://github.com/rust-lang/crates.io-index"
7579checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68"7780checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62"
7580dependencies = [7781dependencies = [
7581 "bumpalo",7782 "bumpalo",
7582 "lazy_static",7783 "lazy_static",
75897790
7590[[package]]7791[[package]]
7591name = "wasm-bindgen-futures"7792name = "wasm-bindgen-futures"
7592version = "0.4.18"7793version = "0.4.19"
7593source = "registry+https://github.com/rust-lang/crates.io-index"7794source = "registry+https://github.com/rust-lang/crates.io-index"
7594checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da"7795checksum = "1fe9756085a84584ee9457a002b7cdfe0bfff169f45d2591d8be1345a6780e35"
7595dependencies = [7796dependencies = [
7596 "cfg-if 0.1.10",7797 "cfg-if 1.0.0",
7597 "js-sys",7798 "js-sys",
7598 "wasm-bindgen",7799 "wasm-bindgen",
7599 "web-sys",7800 "web-sys",
7600]7801]
76017802
7602[[package]]7803[[package]]
7603name = "wasm-bindgen-macro"7804name = "wasm-bindgen-macro"
7604version = "0.2.68"7805version = "0.2.69"
7605source = "registry+https://github.com/rust-lang/crates.io-index"7806source = "registry+https://github.com/rust-lang/crates.io-index"
7606checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038"7807checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084"
7607dependencies = [7808dependencies = [
7608 "quote",7809 "quote",
7609 "wasm-bindgen-macro-support",7810 "wasm-bindgen-macro-support",
7610]7811]
76117812
7612[[package]]7813[[package]]
7613name = "wasm-bindgen-macro-support"7814name = "wasm-bindgen-macro-support"
7614version = "0.2.68"7815version = "0.2.69"
7615source = "registry+https://github.com/rust-lang/crates.io-index"7816source = "registry+https://github.com/rust-lang/crates.io-index"
7616checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe"7817checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549"
7617dependencies = [7818dependencies = [
7618 "proc-macro2",7819 "proc-macro2",
7619 "quote",7820 "quote",
76247825
7625[[package]]7826[[package]]
7626name = "wasm-bindgen-shared"7827name = "wasm-bindgen-shared"
7627version = "0.2.68"7828version = "0.2.69"
7628source = "registry+https://github.com/rust-lang/crates.io-index"7829source = "registry+https://github.com/rust-lang/crates.io-index"
7629checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307"7830checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158"
76307831
7631[[package]]7832[[package]]
7632name = "wasm-timer"7833name = "wasm-timer"
7633version = "0.2.5"7834version = "0.2.5"
7634source = "registry+https://github.com/rust-lang/crates.io-index"7835source = "registry+https://github.com/rust-lang/crates.io-index"
7635checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"7836checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
7636dependencies = [7837dependencies = [
7637 "futures 0.3.6",7838 "futures 0.3.8",
7638 "js-sys",7839 "js-sys",
7639 "parking_lot 0.11.0",7840 "parking_lot 0.11.1",
7640 "pin-utils",7841 "pin-utils",
7641 "wasm-bindgen",7842 "wasm-bindgen",
7642 "wasm-bindgen-futures",7843 "wasm-bindgen-futures",
7692 "log",7893 "log",
7693 "region",7894 "region",
7694 "rustc-demangle",7895 "rustc-demangle",
7695 "smallvec 1.4.2",7896 "smallvec 1.5.1",
7696 "target-lexicon",7897 "target-lexicon",
7697 "wasmparser 0.59.0",7898 "wasmparser 0.59.0",
7698 "wasmtime-environ",7899 "wasmtime-environ",
7825 "lazy_static",8026 "lazy_static",
7826 "libc",8027 "libc",
7827 "log",8028 "log",
7828 "memoffset",8029 "memoffset 0.5.6",
7829 "more-asserts",8030 "more-asserts",
7830 "region",8031 "region",
7831 "thiserror",8032 "thiserror",
78358036
7836[[package]]8037[[package]]
7837name = "wast"8038name = "wast"
7838version = "26.0.0"8039version = "30.0.0"
7839source = "registry+https://github.com/rust-lang/crates.io-index"8040source = "registry+https://github.com/rust-lang/crates.io-index"
7840checksum = "d54b3678343bfdf1768c16308a4b53823b70f7bb148d3d38225123d4306ec731"8041checksum = "9b79907b22f740634810e882d8d1d9d0f9563095a8ab94e786e370242bff5cd2"
7841dependencies = [8042dependencies = [
7842 "leb128",8043 "leb128",
7843]8044]
78448045
7845[[package]]8046[[package]]
7846name = "wat"8047name = "wat"
7847version = "1.0.27"8048version = "1.0.31"
7848source = "registry+https://github.com/rust-lang/crates.io-index"8049source = "registry+https://github.com/rust-lang/crates.io-index"
7849checksum = "26b2dccbce4d0e14875091846e110a2369267b18ddd0d6423479b88dad914d71"8050checksum = "a8279a02835bf12e61ed2b3c3cbc6ecf9918762fd97e036917c11a09ec20ca44"
7850dependencies = [8051dependencies = [
7851 "wast",8052 "wast",
7852]8053]
78538054
7854[[package]]8055[[package]]
7855name = "web-sys"8056name = "web-sys"
7856version = "0.3.45"8057version = "0.3.46"
7857source = "registry+https://github.com/rust-lang/crates.io-index"8058source = "registry+https://github.com/rust-lang/crates.io-index"
7858checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d"8059checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3"
7859dependencies = [8060dependencies = [
7860 "js-sys",8061 "js-sys",
7861 "wasm-bindgen",8062 "wasm-bindgen",
7862]8063]
78638064
7864[[package]]8065[[package]]
7865name = "webpki"8066name = "webpki"
7866version = "0.21.3"8067version = "0.21.4"
7867source = "registry+https://github.com/rust-lang/crates.io-index"8068source = "registry+https://github.com/rust-lang/crates.io-index"
7868checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae"8069checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
7869dependencies = [8070dependencies = [
7870 "ring",8071 "ring",
7871 "untrusted",8072 "untrusted",
78918092
7892[[package]]8093[[package]]
7893name = "wepoll-sys"8094name = "wepoll-sys"
7894version = "3.0.0"8095version = "3.0.1"
7895source = "registry+https://github.com/rust-lang/crates.io-index"8096source = "registry+https://github.com/rust-lang/crates.io-index"
7896checksum = "142bc2cba3fe88be1a8fcb55c727fa4cd5b0cf2d7438722792e22f26f04bc1e0"8097checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff"
7897dependencies = [8098dependencies = [
7898 "cc",8099 "cc",
7899]8100]
7988source = "registry+https://github.com/rust-lang/crates.io-index"8189source = "registry+https://github.com/rust-lang/crates.io-index"
7989checksum = "9aeb8c4043cac71c3c299dff107171c220d179492350ea198e109a414981b83c"8190checksum = "9aeb8c4043cac71c3c299dff107171c220d179492350ea198e109a414981b83c"
7990dependencies = [8191dependencies = [
7991 "futures 0.3.6",8192 "futures 0.3.8",
7992 "log",8193 "log",
7993 "nohash-hasher",8194 "nohash-hasher",
7994 "parking_lot 0.11.0",8195 "parking_lot 0.11.1",
7995 "rand 0.7.3",8196 "rand 0.7.3",
7996 "static_assertions",8197 "static_assertions",
7997]8198]
8199
8200[[package]]
8201name = "yansi"
8202version = "0.5.0"
8203source = "registry+https://github.com/rust-lang/crates.io-index"
8204checksum = "9fc79f4a1e39857fc00c3f662cbf2651c771f00e9c15fe2abc341806bd46bd71"
79988205
7999[[package]]8206[[package]]
8000name = "zeroize"8207name = "zeroize"
8001version = "1.1.1"8208version = "1.2.0"
8002source = "registry+https://github.com/rust-lang/crates.io-index"8209source = "registry+https://github.com/rust-lang/crates.io-index"
8003checksum = "05f33972566adbd2d3588b0491eb94b98b43695c4ef897903470ede4f3f5a28a"8210checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36"
8004dependencies = [8211dependencies = [
8005 "zeroize_derive",8212 "zeroize_derive",
8006]8213]
80198226
8020[[package]]8227[[package]]
8021name = "zstd"8228name = "zstd"
8022version = "0.5.3+zstd.1.4.5"8229version = "0.5.4+zstd.1.4.7"
8023source = "registry+https://github.com/rust-lang/crates.io-index"8230source = "registry+https://github.com/rust-lang/crates.io-index"
8024checksum = "01b32eaf771efa709e8308605bbf9319bf485dc1503179ec0469b611937c0cd8"8231checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910"
8025dependencies = [8232dependencies = [
8026 "zstd-safe",8233 "zstd-safe",
8027]8234]
80288235
8029[[package]]8236[[package]]
8030name = "zstd-safe"8237name = "zstd-safe"
8031version = "2.0.5+zstd.1.4.5"8238version = "2.0.6+zstd.1.4.7"
8032source = "registry+https://github.com/rust-lang/crates.io-index"8239source = "registry+https://github.com/rust-lang/crates.io-index"
8033checksum = "1cfb642e0d27f64729a639c52db457e0ae906e7bc6f5fe8f5c453230400f1055"8240checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e"
8034dependencies = [8241dependencies = [
8035 "libc",8242 "libc",
8036 "zstd-sys",8243 "zstd-sys",
8037]8244]
80388245
8039[[package]]8246[[package]]
8040name = "zstd-sys"8247name = "zstd-sys"
8041version = "1.4.17+zstd.1.4.5"8248version = "1.4.18+zstd.1.4.7"
8042source = "registry+https://github.com/rust-lang/crates.io-index"8249source = "registry+https://github.com/rust-lang/crates.io-index"
8043checksum = "b89249644df056b522696b1bb9e7c18c87e8ffa3e2f0dc3b0155875d6498f01b"8250checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81"
8044dependencies = [8251dependencies = [
8045 "cc",8252 "cc",
8046 "glob",8253 "glob",
modifiedLICENSEdiffbeforeafterboth
1This is free and unencumbered software released into the public domain.1USETECH PROFESSIONAL CONFIDENTIAL
2__________________
23
3Anyone is free to copy, modify, publish, use, compile, sell, or4 [2019] - [2020] UseTech Professional LTD.
4distribute this software, either in source code form or as a compiled5 All Rights Reserved.
5binary, for any purpose, commercial or non-commercial, and by any
6means.
76
8In jurisdictions that recognize copyright laws, the author or authors7NOTICE: All information contained herein is, and remains
9of this software dedicate any and all copyright interest in the8the property of UseTech Professional LTD. and its suppliers,
10software to the public domain. We make this dedication for the benefit9if any. The intellectual and technical concepts contained
11of the public at large and to the detriment of our heirs and
12successors. We intend this dedication to be an overt act of10herein are proprietary to UseTech Professional LTD.
13relinquishment in perpetuity of all present and future rights to this11and its suppliers and may be covered by U.S. and Foreign Patents,
14software under copyright law.
15
16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF12patents in process, and are protected by trade secret or copyright law.
18MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR13Dissemination of this information or reproduction of this material
20OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,14is strictly forbidden unless prior written permission is obtained
21ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR15from UseTech Professional LTD..
22OTHER DEALINGS IN THE SOFTWARE.
23
24For more information, please refer to <http://unlicense.org>
2516
modifiedREADME.mddiffbeforeafterboth
5252
532. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.532. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.
5454
553. Install Rust Toolchain 1.44.0:553. Install Toolchain and make it default:
5656
57```bash57```bash
58rustup install 1.44.058rustup toolchain install nightly-2020-10-01
59rustup default nightly-2020-10-01
59```60```
6061
614. Make it default (actual toochain version may be different, so do a `rustup toolchain list` first)624. Add wasm target for default toolchain:
63
62```bash64```bash
63rustup toolchain list65rustup target add wasm32-unknown-unknown
64rustup default 1.44.0-x86_64-unknown-linux-gnu
65```66```
6667
675. Install nightly toolchain and add wasm target for it:685. Build:
68
69```bash69```bash
70rustup toolchain install nightly-2020-05-0170cargo build
71rustup target add wasm32-unknown-unknown --toolchain nightly-2020-05-01-x86_64-unknown-linux-gnu
72```71```
7372
746. Build:73optionally, build in release:
75```bash74```bash
76cargo build75cargo build --release
77```76```
7877
79## Run78## Run
133```132```
134133
135## UI custom types134## UI custom types
135
136Moved to [runtime_types.json](./runtime_types.json).
137
138## Running Integration Tests
136139
137Moved to [runtime_types.json](./runtime_types.json).140See [tests/README.md](./tests/README.md).
addeddoc/builders_walk_through.mddiffbeforeafterboth

no changes

modifiednode/Cargo.tomldiffbeforeafterboth
58substrate-frame-rpc-system = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}58substrate-frame-rpc-system = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}
59pallet-contracts-rpc = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'} 59pallet-contracts-rpc = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}
60
61serde = { version = "1.0.102", features = ["derive"] }
62serde_json = "1.0.41"
6063
61[features]64[features]
62default = []65default = []
modifiednode/build.rsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed};6use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed};
27
modifiednode/src/chain_spec.rsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1// use nft_runtime::{6// use nft_runtime::{
2// AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, Signature, SudoConfig,7// AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, Signature, SudoConfig,
9use sp_core::{sr25519, Pair, Public};14use sp_core::{sr25519, Pair, Public};
10use sp_finality_grandpa::AuthorityId as GrandpaId;15use sp_finality_grandpa::AuthorityId as GrandpaId;
11use sp_runtime::traits::{IdentifyAccount, Verify};16use sp_runtime::traits::{IdentifyAccount, Verify};
17use serde_json::map::Map;
1218
13// Note this is the URL for the telemetry server19// Note this is the URL for the telemetry server
14//const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";20//const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";
41pub fn development_config() -> Result<ChainSpec, String> {47pub fn development_config() -> Result<ChainSpec, String> {
42 let wasm_binary = WASM_BINARY.ok_or("Development wasm binary not available".to_string())?;48 let wasm_binary = WASM_BINARY.ok_or("Development wasm binary not available".to_string())?;
49
50 let mut properties = Map::new();
51 properties.insert("tokenSymbol".into(), "UniqueTest".into());
52 properties.insert("tokenDecimals".into(), 15.into());
53 properties.insert("ss58Format".into(), 42.into()); // Generic Substrate wildcard (SS58 checksum preimage)
4354
44 Ok(ChainSpec::from_genesis(55 Ok(ChainSpec::from_genesis(
45 // Name56 // Name
71 // Protocol ID82 // Protocol ID
72 None,83 None,
73 // Properties84 // Properties
74 None,85 Some(properties),
75 // Extensions86 // Extensions
76 None,87 None,
77 ))88 ))
133 enable_println: bool,144 enable_println: bool,
134) -> GenesisConfig {145) -> GenesisConfig {
146
147 let vested_accounts = vec![
148 get_account_id_from_seed::<sr25519::Public>("Bob"),
149 ];
150
135 GenesisConfig {151 GenesisConfig {
136 system: Some(SystemConfig {152 system: Some(SystemConfig {
155 }),171 }),
156 pallet_treasury: Some(Default::default()),172 pallet_treasury: Some(Default::default()),
157 pallet_sudo: Some(SudoConfig { key: root_key }),173 pallet_sudo: Some(SudoConfig { key: root_key }),
174 pallet_vesting: Some(VestingConfig {
175 vesting: vested_accounts
176 .iter()
177 .cloned()
178 .map(|k| (k, 1000, 100, 1 << 98))
179 .collect(),
180 }),
158 pallet_nft: Some(NftConfig {181 pallet_nft: Some(NftConfig {
159 collection: vec![(182 collection: vec![(
160 1,183 1,
170 offchain_schema: vec![],193 offchain_schema: vec![],
171 schema_version: SchemaVersion::default(),194 schema_version: SchemaVersion::default(),
172 sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),195 sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),
173 unconfirmed_sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),196 sponsor_confirmed: true,
174 const_on_chain_schema: vec![],197 const_on_chain_schema: vec![],
175 variable_on_chain_schema: vec![],198 variable_on_chain_schema: vec![],
176 limits: CollectionLimits::default()199 limits: CollectionLimits::default()
180 fungible_item_id: vec![],203 fungible_item_id: vec![],
181 refungible_item_id: vec![],204 refungible_item_id: vec![],
182 chain_limit: ChainLimits {205 chain_limit: ChainLimits {
183 collection_numbers_limit: 10,206 collection_numbers_limit: 100000,
184 account_token_ownership_limit: 10,207 account_token_ownership_limit: 1000000,
185 collections_admins_limit: 5,208 collections_admins_limit: 5,
186 custom_data_limit: 2048,209 custom_data_limit: 2048,
187 nft_sponsor_transfer_timeout: 15,210 nft_sponsor_transfer_timeout: 15,
modifiednode/src/main.rsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1//! Substrate Node Template CLI library.6//! Substrate Node Template CLI library.
2#![warn(missing_docs)]7#![warn(missing_docs)]
modifiednode/src/service.rsdiffbeforeafterboth
1//! Service and ServiceFactory implementation. Specialized wrapper over substrate service.1//! Service and ServiceFactory implementation. Specialized wrapper over substrate service.
2
3//
4// This file is subject to the terms and conditions defined in
5// file 'LICENSE', which is part of this source code package.
6//
27
3use std::sync::Arc;8use std::sync::Arc;
4use std::time::Duration;9use std::time::Duration;
modifiedpallets/nft/src/benchmarking.rsdiffbeforeafterboth
356356
357 }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())357 }: set_variable_meta_data(RawOrigin::Signed(caller.clone()), 2, 1, [1, 2, 3].to_vec())
358
359 set_schema_version {
360 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
361 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
362 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
363 let mode: CollectionMode = CollectionMode::NFT;
364 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
365 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
366 }: set_schema_version(RawOrigin::Signed(caller.clone()), 2, SchemaVersion::Unique)
367
368 set_chain_limits {
369 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
370 let limits = ChainLimits {
371 collection_numbers_limit: 0,
372 account_token_ownership_limit: 0,
373 collections_admins_limit: 0,
374 custom_data_limit: 0,
375 nft_sponsor_transfer_timeout: 0,
376 fungible_sponsor_transfer_timeout: 0,
377 refungible_sponsor_transfer_timeout: 0
378 };
379 }: set_chain_limits(RawOrigin::Signed(caller.clone()), limits)
380
381 set_contract_sponsoring_rate_limit {
382 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
383 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
384 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
385 let mode: CollectionMode = CollectionMode::NFT;
386 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
387 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
388 let block_number: T::BlockNumber = 0.into();
389 }: set_contract_sponsoring_rate_limit(RawOrigin::Signed(caller.clone()), caller.clone(), block_number)
390
391 set_collection_limits{
392 let col_name1: Vec<u16> = "Test1".encode_utf16().collect::<Vec<u16>>();
393 let col_desc1: Vec<u16> = "TestDescription1".encode_utf16().collect::<Vec<u16>>();
394 let token_prefix1: Vec<u8> = b"token_prefix1".to_vec();
395 let mode: CollectionMode = CollectionMode::NFT;
396 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
397 Nft::<T>::create_collection(RawOrigin::Signed(caller.clone()).into(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), mode.clone())?;
398
399 let cl = CollectionLimits {
400 account_token_ownership_limit: 0,
401 sponsored_data_size: 0,
402 token_limit: 0,
403 sponsor_transfer_timeout: 0
404 };
405
406 }: set_collection_limits(RawOrigin::Signed(caller.clone()), 2, cl)
407
408 add_to_contract_white_list{
409 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
410 }: add_to_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
411
412 remove_from_contract_white_list{
413 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
414 Nft::<T>::add_to_contract_white_list(RawOrigin::Signed(caller.clone()).into(), caller.clone(), caller.clone())?;
415 }: remove_from_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), caller.clone())
416
417 toggle_contract_white_list{
418 let caller: T::AccountId = T::AccountId::from(whitelisted_caller());
419 }: toggle_contract_white_list(RawOrigin::Signed(caller.clone()), caller.clone(), true)
358}420}
modifiedpallets/nft/src/default_weights.rsdiffbeforeafterboth
107 .saturating_add(DbWeight::get().reads(2 as Weight))107 .saturating_add(DbWeight::get().reads(2 as Weight))
108 .saturating_add(DbWeight::get().writes(1 as Weight))108 .saturating_add(DbWeight::get().writes(1 as Weight))
109 }109 }
110 // fn set_chain_limits() -> Weight {
111 // (0 as Weight)
112 // .saturating_add(DbWeight::get().reads(1 as Weight))
113 // .saturating_add(DbWeight::get().writes(1 as Weight))
114 // }
115 fn enable_contract_sponsoring() -> Weight {110 fn enable_contract_sponsoring() -> Weight {
116 (13_000_000 as Weight)111 (13_000_000 as Weight)
117 .saturating_add(DbWeight::get().reads(1 as Weight))112 .saturating_add(DbWeight::get().reads(1 as Weight))
118 .saturating_add(DbWeight::get().writes(1 as Weight))113 .saturating_add(DbWeight::get().writes(1 as Weight))
119 }114 }
120 // fn set_contract_sponsoring_rate_limit() -> Weight {115 fn set_schema_version() -> Weight {
121 // (0 as Weight)116 (8_500_000 as Weight)
122 // .saturating_add(DbWeight::get().reads(1 as Weight))117 .saturating_add(DbWeight::get().reads(2 as Weight))
123 // .saturating_add(DbWeight::get().writes(1 as Weight))118 .saturating_add(DbWeight::get().writes(1 as Weight))
124 // }119 }
120 fn set_chain_limits() -> Weight {
121 (1_300_000 as Weight)
122 .saturating_add(DbWeight::get().reads(0 as Weight))
123 .saturating_add(DbWeight::get().writes(1 as Weight))
124 }
125 fn set_contract_sponsoring_rate_limit() -> Weight {
126 (3_500_000 as Weight)
127 .saturating_add(DbWeight::get().reads(0 as Weight))
128 .saturating_add(DbWeight::get().writes(2 as Weight))
129 }
130 fn toggle_contract_white_list() -> Weight {
131 (3_000_000 as Weight)
132 .saturating_add(DbWeight::get().reads(0 as Weight))
133 .saturating_add(DbWeight::get().writes(2 as Weight))
134 }
135 fn add_to_contract_white_list() -> Weight {
136 (3_000_000 as Weight)
137 .saturating_add(DbWeight::get().reads(0 as Weight))
138 .saturating_add(DbWeight::get().writes(2 as Weight))
139 }
140 fn remove_from_contract_white_list() -> Weight {
141 (3_200_000 as Weight)
142 .saturating_add(DbWeight::get().reads(0 as Weight))
143 .saturating_add(DbWeight::get().writes(2 as Weight))
144 }
145 fn set_collection_limits() -> Weight {
146 (8_900_000 as Weight)
147 .saturating_add(DbWeight::get().reads(2 as Weight))
148 .saturating_add(DbWeight::get().writes(1 as Weight))
149 }
125}150}
126151
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1#![recursion_limit = "1024"]6#![recursion_limit = "1024"]
27
3#![cfg_attr(not(feature = "std"), no_std)]8#![cfg_attr(not(feature = "std"), no_std)]
29use sp_runtime::sp_std::prelude::Vec;34use sp_runtime::sp_std::prelude::Vec;
30use sp_runtime::{35use sp_runtime::{
31 traits::{36 traits::{
32 DispatchInfoOf, Dispatchable, PostDispatchInfoOf, Saturating, SignedExtension, Zero,37 DispatchInfoOf, Dispatchable, PostDispatchInfoOf, Saturating, SaturatedConversion, SignedExtension, Zero,
33 },38 },
34 transaction_validity::{39 transaction_validity::{
35 InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction,40 TransactionPriority, InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction,
36 },41 },
37 FixedPointOperand, FixedU128,42 FixedPointOperand, FixedU128,
38};43};
131 pub offchain_schema: Vec<u8>,136 pub offchain_schema: Vec<u8>,
132 pub schema_version: SchemaVersion,137 pub schema_version: SchemaVersion,
133 pub sponsor: AccountId, // Who pays fees. If set to default address, the fees are applied to the transaction sender138 pub sponsor: AccountId, // Who pays fees. If set to default address, the fees are applied to the transaction sender
134 pub unconfirmed_sponsor: AccountId, // Sponsor address that has not yet confirmed sponsorship139 pub sponsor_confirmed: bool, // False if sponsor address has not yet confirmed sponsorship. True otherwise.
135 pub limits: CollectionLimits, // Collection private restrictions 140 pub limits: CollectionLimits, // Collection private restrictions
136 pub variable_on_chain_schema: Vec<u8>, //141 pub variable_on_chain_schema: Vec<u8>, //
137 pub const_on_chain_schema: Vec<u8>, //142 pub const_on_chain_schema: Vec<u8>, //
140#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]145#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
141#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]146#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
142pub struct NftItemType<AccountId> {147pub struct NftItemType<AccountId> {
143 pub collection: CollectionId,
144 pub owner: AccountId,148 pub owner: AccountId,
145 pub const_data: Vec<u8>,149 pub const_data: Vec<u8>,
146 pub variable_data: Vec<u8>,150 pub variable_data: Vec<u8>,
147}151}
148152
149#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]153#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
150#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]154#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
151pub struct FungibleItemType<AccountId> {155pub struct FungibleItemType {
152 pub collection: CollectionId,
153 pub owner: AccountId,
154 pub value: u128,156 pub value: u128,
155}157}
156158
157#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]159#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
158#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]160#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
159pub struct ReFungibleItemType<AccountId> {161pub struct ReFungibleItemType<AccountId> {
160 pub collection: CollectionId,
161 pub owner: Vec<Ownership<AccountId>>,162 pub owner: Vec<Ownership<AccountId>>,
162 pub const_data: Vec<u8>,163 pub const_data: Vec<u8>,
163 pub variable_data: Vec<u8>,164 pub variable_data: Vec<u8>,
164}165}
165166
166#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]167// #[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
167#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]168// #[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
168pub struct ApprovePermissions<AccountId> {169// pub struct VestingItem<AccountId, Moment> {
169 pub approved: AccountId,170// pub sender: AccountId,
170 pub amount: u128,171// pub recipient: AccountId,
172// pub collection_id: CollectionId,
173// pub item_id: TokenId,
174// pub amount: u64,
175// pub vesting_date: Moment,
171}176// }
172177
173#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
174#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
175pub struct VestingItem<AccountId, Moment> {
176 pub sender: AccountId,
177 pub recipient: AccountId,
178 pub collection_id: CollectionId,
179 pub item_id: TokenId,
180 pub amount: u64,
181 pub vesting_date: Moment,
182}
183
184#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
185#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
186pub struct BasketItem<AccountId, BlockNumber> {
187 pub address: AccountId,
188 pub start_block: BlockNumber,
189}
190
191#[derive(Encode, Decode, Debug, Clone, PartialEq)]178#[derive(Encode, Decode, Debug, Clone, PartialEq)]
192#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]179#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
193pub struct CollectionLimits {180pub struct CollectionLimits {
246 fn set_variable_on_chain_schema() -> Weight;233 fn set_variable_on_chain_schema() -> Weight;
247 fn set_variable_meta_data() -> Weight;234 fn set_variable_meta_data() -> Weight;
248 fn enable_contract_sponsoring() -> Weight;235 fn enable_contract_sponsoring() -> Weight;
236 fn set_schema_version() -> Weight;
237 fn set_chain_limits() -> Weight;
238 fn set_contract_sponsoring_rate_limit() -> Weight;
239 fn toggle_contract_white_list() -> Weight;
240 fn add_to_contract_white_list() -> Weight;
241 fn remove_from_contract_white_list() -> Weight;
242 fn set_collection_limits() -> Weight;
249}243}
250244
251#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]245#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
258#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]252#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
259#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]253#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
260pub struct CreateFungibleData {254pub struct CreateFungibleData {
255 pub value: u128,
261}256}
262257
263#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]258#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
407 // Basic collections402 // Basic collections
408 pub Collection get(fn collection) config(): map hasher(identity) CollectionId => CollectionType<T::AccountId>;403 pub Collection get(fn collection) config(): map hasher(identity) CollectionId => CollectionType<T::AccountId>;
409 pub AdminList get(fn admin_list_collection): map hasher(identity) CollectionId => Vec<T::AccountId>;404 pub AdminList get(fn admin_list_collection): map hasher(identity) CollectionId => Vec<T::AccountId>;
410 pub WhiteList get(fn white_list): map hasher(identity) CollectionId => Vec<T::AccountId>;405 pub WhiteList get(fn white_list): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => bool;
411406
412 /// Balance owner per collection map407 /// Balance owner per collection map
413 pub Balance get(fn balance_count): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => u128;408 pub Balance get(fn balance_count): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => u128;
414409
415 /// second parameter: item id + owner account id410 /// second parameter: item id + owner account id + spender account id
416 pub ApprovedList get(fn approved): double_map hasher(identity) CollectionId, hasher(twox_64_concat) (TokenId, T::AccountId) => Vec<ApprovePermissions<T::AccountId>>;411 pub Allowances get(fn approved): double_map hasher(identity) CollectionId, hasher(twox_64_concat) (TokenId, T::AccountId, T::AccountId) => u128;
417412
418 /// Item collections413 /// Item collections
419 pub NftItemList get(fn nft_item_id) config(): double_map hasher(identity) CollectionId, hasher(identity) TokenId => NftItemType<T::AccountId>;414 pub NftItemList get(fn nft_item_id) config(): double_map hasher(identity) CollectionId, hasher(identity) TokenId => NftItemType<T::AccountId>;
420 pub FungibleItemList get(fn fungible_item_id) config(): double_map hasher(identity) CollectionId, hasher(identity) TokenId => FungibleItemType<T::AccountId>;415 pub FungibleItemList get(fn fungible_item_id) config(): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => FungibleItemType;
421 pub ReFungibleItemList get(fn refungible_item_id) config(): double_map hasher(identity) CollectionId, hasher(identity) TokenId => ReFungibleItemType<T::AccountId>;416 pub ReFungibleItemList get(fn refungible_item_id) config(): double_map hasher(identity) CollectionId, hasher(identity) TokenId => ReFungibleItemType<T::AccountId>;
422417
423 /// Index list418 /// Index list
424 pub AddressTokens get(fn address_tokens): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => Vec<TokenId>;419 pub AddressTokens get(fn address_tokens): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => Vec<TokenId>;
425420
426 /// Tokens transfer baskets421 /// Tokens transfer baskets
427 pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;422 pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;
428 pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => Vec<BasketItem<T::AccountId, T::BlockNumber>>;423 pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => T::BlockNumber;
429 pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;424 pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;
430425
431 // Contract Sponsorship and Ownership426 // Contract Sponsorship and Ownership
432 pub ContractOwner get(fn contract_owner): map hasher(twox_64_concat) T::AccountId => T::AccountId;427 pub ContractOwner get(fn contract_owner): map hasher(twox_64_concat) T::AccountId => T::AccountId;
433 pub ContractSelfSponsoring get(fn contract_self_sponsoring): map hasher(twox_64_concat) T::AccountId => bool;428 pub ContractSelfSponsoring get(fn contract_self_sponsoring): map hasher(twox_64_concat) T::AccountId => bool;
434 pub ContractSponsorBasket get(fn contract_sponsor_basket): map hasher(twox_64_concat) (T::AccountId, T::AccountId) => T::BlockNumber;429 pub ContractSponsorBasket get(fn contract_sponsor_basket): map hasher(twox_64_concat) (T::AccountId, T::AccountId) => T::BlockNumber;
435 pub ContractSponsoringRateLimit get(fn contract_sponsoring_rate_limit): map hasher(twox_64_concat) T::AccountId => T::BlockNumber;430 pub ContractSponsoringRateLimit get(fn contract_sponsoring_rate_limit): map hasher(twox_64_concat) T::AccountId => T::BlockNumber;
431 pub ContractWhiteListEnabled get(fn contract_white_list_enabled): map hasher(twox_64_concat) T::AccountId => bool;
432 pub ContractWhiteList get(fn contract_white_list): double_map hasher(twox_64_concat) T::AccountId, hasher(twox_64_concat) T::AccountId => bool;
436 }433 }
437 add_extra_genesis {434 add_extra_genesis {
438 build(|config: &GenesisConfig<T>| {435 build(|config: &GenesisConfig<T>| {
441 <Module<T>>::init_collection(_c);438 <Module<T>>::init_collection(_c);
442 }439 }
443440
444 for (_num, _q, _i) in &config.nft_item_id {441 for (_num, _c, _i) in &config.nft_item_id {
445 <Module<T>>::init_nft_token(_i);442 <Module<T>>::init_nft_token(*_c, _i);
446 }443 }
447444
448 for (_num, _q, _i) in &config.fungible_item_id {445 for (collection_id, account_id, fungible_item) in &config.fungible_item_id {
449 <Module<T>>::init_fungible_token(_i);446 <Module<T>>::init_fungible_token(*collection_id, account_id, fungible_item);
450 }447 }
451448
452 for (_num, _q, _i) in &config.refungible_item_id {449 for (_num, _c, _i) in &config.refungible_item_id {
453 <Module<T>>::init_refungible_token(_i);450 <Module<T>>::init_refungible_token(*_c, _i);
454 }451 }
455 })452 })
456 }453 }
586 offchain_schema: Vec::new(),583 offchain_schema: Vec::new(),
587 schema_version: SchemaVersion::ImageURL,584 schema_version: SchemaVersion::ImageURL,
588 sponsor: T::AccountId::default(),585 sponsor: T::AccountId::default(),
589 unconfirmed_sponsor: T::AccountId::default(),586 sponsor_confirmed: false,
590 variable_on_chain_schema: Vec::new(),587 variable_on_chain_schema: Vec::new(),
591 const_on_chain_schema: Vec::new(),588 const_on_chain_schema: Vec::new(),
592 limits: CollectionLimits::default(),589 limits: CollectionLimits::default(),
617 Self::check_owner_permissions(collection_id, sender)?;614 Self::check_owner_permissions(collection_id, sender)?;
618615
619 <AddressTokens<T>>::remove_prefix(collection_id);616 <AddressTokens<T>>::remove_prefix(collection_id);
620 <ApprovedList<T>>::remove_prefix(collection_id);617 <Allowances<T>>::remove_prefix(collection_id);
621 <Balance<T>>::remove_prefix(collection_id);618 <Balance<T>>::remove_prefix(collection_id);
622 <ItemListIndex>::remove(collection_id);619 <ItemListIndex>::remove(collection_id);
623 <AdminList<T>>::remove(collection_id);620 <AdminList<T>>::remove(collection_id);
624 <Collection<T>>::remove(collection_id);621 <Collection<T>>::remove(collection_id);
625 <WhiteList<T>>::remove(collection_id);622 <WhiteList<T>>::remove_prefix(collection_id);
626623
627 <NftItemList<T>>::remove_prefix(collection_id);624 <NftItemList<T>>::remove_prefix(collection_id);
628 <FungibleItemList<T>>::remove_prefix(collection_id);625 <FungibleItemList<T>>::remove_prefix(collection_id);
663 let sender = ensure_signed(origin)?;660 let sender = ensure_signed(origin)?;
664 Self::check_owner_or_admin_permissions(collection_id, sender)?;661 Self::check_owner_or_admin_permissions(collection_id, sender)?;
665662
666 let mut white_list_collection: Vec<T::AccountId>;663 <WhiteList<T>>::insert(collection_id, address, true);
667 if <WhiteList<T>>::contains_key(collection_id) {
668 white_list_collection = <WhiteList<T>>::get(collection_id);
669 if !white_list_collection.contains(&address.clone())
670 {
671 white_list_collection.push(address.clone());
672 }664
673 }
674 else {
675 white_list_collection = Vec::new();
676 white_list_collection.push(address.clone());
677 }
678
679 <WhiteList<T>>::insert(collection_id, white_list_collection);
680 Ok(())665 Ok(())
681 }666 }
682667
698 let sender = ensure_signed(origin)?;683 let sender = ensure_signed(origin)?;
699 Self::check_owner_or_admin_permissions(collection_id, sender)?;684 Self::check_owner_or_admin_permissions(collection_id, sender)?;
700685
701 if <WhiteList<T>>::contains_key(collection_id) {686 <WhiteList<T>>::remove(collection_id, address);
702 let mut white_list_collection = <WhiteList<T>>::get(collection_id);
703 if white_list_collection.contains(&address.clone())
704 {
705 white_list_collection.retain(|i| *i != address.clone());
706 <WhiteList<T>>::insert(collection_id, white_list_collection);
707 }
708 }
709687
710 Ok(())688 Ok(())
711 }689 }
864 let mut target_collection = <Collection<T>>::get(collection_id);842 let mut target_collection = <Collection<T>>::get(collection_id);
865 ensure!(sender == target_collection.owner, Error::<T>::NoPermission);843 ensure!(sender == target_collection.owner, Error::<T>::NoPermission);
866844
867 target_collection.unconfirmed_sponsor = new_sponsor;845 target_collection.sponsor = new_sponsor;
846 target_collection.sponsor_confirmed = false;
868 <Collection<T>>::insert(collection_id, target_collection);847 <Collection<T>>::insert(collection_id, target_collection);
869848
870 Ok(())849 Ok(())
884 ensure!(<Collection<T>>::contains_key(collection_id), Error::<T>::CollectionNotFound);863 ensure!(<Collection<T>>::contains_key(collection_id), Error::<T>::CollectionNotFound);
885864
886 let mut target_collection = <Collection<T>>::get(collection_id);865 let mut target_collection = <Collection<T>>::get(collection_id);
887 ensure!(sender == target_collection.unconfirmed_sponsor, Error::<T>::ConfirmUnsetSponsorFail);866 ensure!(sender == target_collection.sponsor, Error::<T>::ConfirmUnsetSponsorFail);
888867
889 target_collection.sponsor = target_collection.unconfirmed_sponsor;868 target_collection.sponsor_confirmed = true;
890 target_collection.unconfirmed_sponsor = T::AccountId::default();
891 <Collection<T>>::insert(collection_id, target_collection);869 <Collection<T>>::insert(collection_id, target_collection);
892870
893 Ok(())871 Ok(())
912 ensure!(sender == target_collection.owner, Error::<T>::NoPermission);890 ensure!(sender == target_collection.owner, Error::<T>::NoPermission);
913891
914 target_collection.sponsor = T::AccountId::default();892 target_collection.sponsor = T::AccountId::default();
893 target_collection.sponsor_confirmed = false;
915 <Collection<T>>::insert(collection_id, target_collection);894 <Collection<T>>::insert(collection_id, target_collection);
916895
917 Ok(())896 Ok(())
1012 /// 991 ///
1013 /// * item_id: ID of NFT to burn.992 /// * item_id: ID of NFT to burn.
1014 #[weight = T::WeightInfo::burn_item()]993 #[weight = T::WeightInfo::burn_item()]
1015 pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId) -> DispatchResult {994 pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {
1016995
1017 let sender = ensure_signed(origin)?;996 let sender = ensure_signed(origin)?;
1018 Self::collection_exists(collection_id)?;997 Self::collection_exists(collection_id)?;
1030 match target_collection.mode1009 match target_collection.mode
1031 {1010 {
1032 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,1011 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,
1033 CollectionMode::Fungible(_) => Self::burn_fungible_item(collection_id, item_id)?,1012 CollectionMode::Fungible(_) => Self::burn_fungible_item(&sender, collection_id, value)?,
1034 CollectionMode::ReFungible(_) => Self::burn_refungible_item(collection_id, item_id, sender.clone())?,1013 CollectionMode::ReFungible(_) => Self::burn_refungible_item(collection_id, item_id, sender.clone())?,
1035 _ => ()1014 _ => ()
1036 };1015 };
1086 match target_collection.mode1065 match target_collection.mode
1087 {1066 {
1088 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,1067 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,
1089 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, item_id, value, sender.clone(), recipient)?,1068 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,
1090 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,1069 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,
1091 _ => ()1070 _ => ()
1092 };1071 };
1110 /// 1089 ///
1111 /// * item_id: ID of the item.1090 /// * item_id: ID of the item.
1112 #[weight = T::WeightInfo::approve()]1091 #[weight = T::WeightInfo::approve()]
1113 pub fn approve(origin, approved: T::AccountId, collection_id: CollectionId, item_id: TokenId) -> DispatchResult {1092 pub fn approve(origin, spender: T::AccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResult {
11141093
1115 let sender = ensure_signed(origin)?;1094 let sender = ensure_signed(origin)?;
11161095
11221101
1123 if target_collection.access == AccessMode::WhiteList {1102 if target_collection.access == AccessMode::WhiteList {
1124 Self::check_white_list(collection_id, &sender)?;1103 Self::check_white_list(collection_id, &sender)?;
1125 Self::check_white_list(collection_id, &approved)?;1104 Self::check_white_list(collection_id, &spender)?;
1126 }1105 }
11271106
1128 // amount param stub1107 let allowance_exists = <Allowances<T>>::contains_key(collection_id, (item_id, &sender, &spender));
1129 let amount = 100000000;
1130
1131 let list_exists = <ApprovedList<T>>::contains_key(collection_id, (item_id, sender.clone()));
1132 if list_exists {1108 let mut allowance: u128 = amount;
1133
1134 let mut list = <ApprovedList<T>>::get(collection_id, (item_id, sender.clone()));
1135 let item_contains = list.iter().any(|i| i.approved == approved);
1136
1137 if !item_contains {1109 if allowance_exists {
1138 list.push(ApprovePermissions { approved: approved.clone(), amount: amount });1110 allowance += <Allowances<T>>::get(collection_id, (item_id, &sender, &spender));
1139 <ApprovedList<T>>::insert(collection_id, (item_id, sender.clone()), list);
1140 }
1141 } else {
1142
1143 let mut list = Vec::new();
1144 list.push(ApprovePermissions { approved: approved.clone(), amount: amount });
1145 <ApprovedList<T>>::insert(collection_id, (item_id, sender.clone()), list);
1146 }1111 }
1112 <Allowances<T>>::insert(collection_id, (item_id, sender.clone(), spender.clone()), allowance);
11471113
1148 Ok(())1114 Ok(())
1149 }1115 }
1173 let sender = ensure_signed(origin)?;1139 let sender = ensure_signed(origin)?;
1174 let mut appoved_transfer = false;1140 let mut appoved_transfer = false;
11751141
1176 // Check approve1142 // Check approval
1177 if <ApprovedList<T>>::contains_key(collection_id, (item_id, from.clone())) {1143 let mut approval: u128 = 0;
1144 if <Allowances<T>>::contains_key(collection_id, (item_id, &from, &recipient)) {
1178 let list_itm = <ApprovedList<T>>::get(collection_id, (item_id, from.clone()));1145 approval = <Allowances<T>>::get(collection_id, (item_id, &from, &recipient));
1179 let opt_item = list_itm.iter().find(|i| i.approved == sender.clone());
1180 if opt_item.is_some()1146 ensure!(approval >= value, Error::<T>::TokenValueNotEnough);
1181 {
1182 appoved_transfer = true;
1183 ensure!(opt_item.unwrap().amount >= value, Error::<T>::TokenValueNotEnough);
1184 }1147 appoved_transfer = true;
1185 }1148 }
11861149
1187 let target_collection = <Collection<T>>::get(collection_id);1150 let target_collection = <Collection<T>>::get(collection_id);
11911154
1192 // Transfer permissions check 1155 // Transfer permissions check
1193 ensure!(appoved_transfer || Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1156 ensure!(appoved_transfer || Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
1194 Error::<T>::NoPermission);1157 Error::<T>::NoPermission);
11951158
1196 if target_collection.access == AccessMode::WhiteList {1159 if target_collection.access == AccessMode::WhiteList {
1197 Self::check_white_list(collection_id, &sender)?;1160 Self::check_white_list(collection_id, &sender)?;
1198 Self::check_white_list(collection_id, &recipient)?;1161 Self::check_white_list(collection_id, &recipient)?;
1199 }1162 }
12001163
1201 // remove approve1164 // Reduce approval by transferred amount or remove if remaining approval drops to 0
1202 let approve_list: Vec<ApprovePermissions<T::AccountId>> = <ApprovedList<T>>::get(collection_id, (item_id, from.clone()))1165 if approval - value > 0 {
1166 <Allowances<T>>::insert(collection_id, (item_id, &from, &recipient), approval - value);
1203 .into_iter().filter(|i| i.approved != sender.clone()).collect();1167 }
1168 else {
1204 <ApprovedList<T>>::insert(collection_id, (item_id, from.clone()), approve_list);1169 <Allowances<T>>::remove(collection_id, (item_id, &from, &recipient));
1170 }
12051171
1206
1207 match target_collection.mode1172 match target_collection.mode
1208 {1173 {
1209 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, from, recipient)?,1174 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, from, recipient)?,
1210 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, item_id, value, from.clone(), recipient)?,1175 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &from, &recipient)?,
1211 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,1176 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, from.clone(), recipient)?,
1212 _ => ()1177 _ => ()
1213 };1178 };
1288 /// * collection_id.1253 /// * collection_id.
1289 /// 1254 ///
1290 /// * schema: SchemaVersion: enum1255 /// * schema: SchemaVersion: enum
1291 #[weight = 0]1256 #[weight = T::WeightInfo::set_schema_version()]
1292 pub fn set_schema_version(1257 pub fn set_schema_version(
1293 origin,1258 origin,
1294 collection_id: CollectionId,1259 collection_id: CollectionId,
1388 }1353 }
13891354
1390 // Sudo permissions function1355 // Sudo permissions function
1391 #[weight = 0]1356 #[weight = T::WeightInfo::set_chain_limits()]
1392 pub fn set_chain_limits(1357 pub fn set_chain_limits(
1393 origin,1358 origin,
1394 limits: ChainLimits1359 limits: ChainLimits
1395 ) -> DispatchResult {1360 ) -> DispatchResult {
1361
1362 #[cfg(not(feature = "runtime-benchmarks"))]
1396 ensure_root(origin)?;1363 ensure_root(origin)?;
1364
1397 <ChainLimit>::put(limits);1365 <ChainLimit>::put(limits);
1398 Ok(())1366 Ok(())
1399 }1367 }
1421 #[cfg(feature = "runtime-benchmarks")]1389 #[cfg(feature = "runtime-benchmarks")]
1422 <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());1390 <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
14231391
1424 let mut is_owner = false;1392 Self::ensure_contract_owned(sender, &contract_address)?;
1425 if <ContractOwner<T>>::contains_key(contract_address.clone()) {
1426 let owner = <ContractOwner<T>>::get(&contract_address);
1427 is_owner = sender == owner;
1428 }
1429 ensure!(is_owner, Error::<T>::NoPermission);
14301393
1431 <ContractSelfSponsoring<T>>::insert(contract_address, enable);1394 <ContractSelfSponsoring<T>>::insert(contract_address, enable);
1432 Ok(())1395 Ok(())
1449 /// -`contract_address`: Address of the contract to sponsor1412 /// -`contract_address`: Address of the contract to sponsor
1450 /// -`rate_limit`: Number of blocks to wait until the next sponsored transaction is allowed1413 /// -`rate_limit`: Number of blocks to wait until the next sponsored transaction is allowed
1451 /// 1414 ///
1452 #[weight = 0]1415 #[weight = T::WeightInfo::set_contract_sponsoring_rate_limit()]
1453 pub fn set_contract_sponsoring_rate_limit(1416 pub fn set_contract_sponsoring_rate_limit(
1454 origin,1417 origin,
1455 contract_address: T::AccountId,1418 contract_address: T::AccountId,
1456 rate_limit: T::BlockNumber1419 rate_limit: T::BlockNumber
1457 ) -> DispatchResult {1420 ) -> DispatchResult {
1458 let sender = ensure_signed(origin)?;1421 let sender = ensure_signed(origin)?;
1459 let mut is_owner = false;
1460 if <ContractOwner<T>>::contains_key(contract_address.clone()) {
1461 let owner = <ContractOwner<T>>::get(&contract_address);
1462 is_owner = sender == owner;
1463 }
1464 ensure!(is_owner, Error::<T>::NoPermission);
14651422
1423 #[cfg(feature = "runtime-benchmarks")]
1424 <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
1425
1426 Self::ensure_contract_owned(sender, &contract_address)?;
1466 <ContractSponsoringRateLimit<T>>::insert(contract_address, rate_limit);1427 <ContractSponsoringRateLimit<T>>::insert(contract_address, rate_limit);
1467 Ok(())1428 Ok(())
1468 }1429 }
14691430
1470 #[weight = 0]1431 /// Enable the white list for a contract. Only addresses added to the white list with addToContractWhiteList will be able to call this smart contract.
1432 ///
1433 /// # Permissions
1434 ///
1435 /// * Address that deployed smart contract.
1436 ///
1437 /// # Arguments
1438 ///
1439 /// -`contract_address`: Address of the contract.
1440 ///
1441 /// - `enable`: .
1442 #[weight = T::WeightInfo::toggle_contract_white_list()]
1443 pub fn toggle_contract_white_list(
1444 origin,
1445 contract_address: T::AccountId,
1446 enable: bool
1447 ) -> DispatchResult {
1448 let sender = ensure_signed(origin)?;
1449
1450 #[cfg(feature = "runtime-benchmarks")]
1451 <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
1452
1453 Self::ensure_contract_owned(sender, &contract_address)?;
1454 <ContractWhiteListEnabled<T>>::insert(contract_address, enable);
1455 Ok(())
1456 }
1457
1458 /// Add an address to smart contract white list.
1459 ///
1460 /// # Permissions
1461 ///
1462 /// * Address that deployed smart contract.
1463 ///
1464 /// # Arguments
1465 ///
1466 /// -`contract_address`: Address of the contract.
1467 ///
1468 /// -`account_address`: Address to add.
1469 #[weight = T::WeightInfo::add_to_contract_white_list()]
1470 pub fn add_to_contract_white_list(
1471 origin,
1472 contract_address: T::AccountId,
1473 account_address: T::AccountId
1474 ) -> DispatchResult {
1475 let sender = ensure_signed(origin)?;
1476
1477 #[cfg(feature = "runtime-benchmarks")]
1478 <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
1479
1480 Self::ensure_contract_owned(sender, &contract_address)?;
1481 <ContractWhiteList<T>>::insert(contract_address, account_address, true);
1482 Ok(())
1483 }
1484
1485 /// Remove an address from smart contract white list.
1486 ///
1487 /// # Permissions
1488 ///
1489 /// * Address that deployed smart contract.
1490 ///
1491 /// # Arguments
1492 ///
1493 /// -`contract_address`: Address of the contract.
1494 ///
1495 /// -`account_address`: Address to remove.
1496 #[weight = T::WeightInfo::remove_from_contract_white_list()]
1497 pub fn remove_from_contract_white_list(
1498 origin,
1499 contract_address: T::AccountId,
1500 account_address: T::AccountId
1501 ) -> DispatchResult {
1502 let sender = ensure_signed(origin)?;
1503
1504 #[cfg(feature = "runtime-benchmarks")]
1505 <ContractOwner<T>>::insert(contract_address.clone(), sender.clone());
1506
1507 Self::ensure_contract_owned(sender, &contract_address)?;
1508 <ContractWhiteList<T>>::remove(contract_address, account_address);
1509 Ok(())
1510 }
1511
1512 #[weight = T::WeightInfo::set_collection_limits()]
1471 pub fn set_collection_limits(1513 pub fn set_collection_limits(
1472 origin,1514 origin,
1473 collection_id: u32,1515 collection_id: u32,
1564 {1606 {
1565 CreateItemData::NFT(data) => {1607 CreateItemData::NFT(data) => {
1566 let item = NftItemType {1608 let item = NftItemType {
1567 collection: collection_id,
1568 owner,1609 owner,
1569 const_data: data.const_data,1610 const_data: data.const_data,
1570 variable_data: data.variable_data1611 variable_data: data.variable_data
1571 };1612 };
15721613
1573 Self::add_nft_item(item)?;1614 Self::add_nft_item(collection_id, item)?;
1574 },1615 },
1575 CreateItemData::Fungible(_) => {1616 CreateItemData::Fungible(data) => {
1576 let item = FungibleItemType {1617 Self::add_fungible_item(collection_id, &owner, data.value)?;
1577 collection: collection_id,
1578 owner,
1579 value: (10 as u128).pow(collection.decimal_points as u32)
1580 };
1581
1582 Self::add_fungible_item(item)?;
1583 },1618 },
1584 CreateItemData::ReFungible(data) => {1619 CreateItemData::ReFungible(data) => {
1585 let mut owner_list = Vec::new();1620 let mut owner_list = Vec::new();
1586 let value = (10 as u128).pow(collection.decimal_points as u32);1621 let value = (10 as u128).pow(collection.decimal_points as u32);
1587 owner_list.push(Ownership {owner: owner.clone(), fraction: value});1622 owner_list.push(Ownership {owner: owner.clone(), fraction: value});
15881623
1589 let item = ReFungibleItemType {1624 let item = ReFungibleItemType {
1590 collection: collection_id,
1591 owner: owner_list,1625 owner: owner_list,
1592 const_data: data.const_data,1626 const_data: data.const_data,
1593 variable_data: data.variable_data1627 variable_data: data.variable_data
1594 };1628 };
15951629
1596 Self::add_refungible_item(item)?;1630 Self::add_refungible_item(collection_id, item)?;
1597 }1631 }
1598 };1632 };
15991633
1603 Ok(())1637 Ok(())
1604 }1638 }
16051639
1606 fn add_fungible_item(item: FungibleItemType<T::AccountId>) -> DispatchResult {1640 fn add_fungible_item(collection_id: CollectionId, owner: &T::AccountId, value: u128) -> DispatchResult {
1607 let current_index = <ItemListIndex>::get(item.collection)
1608 .checked_add(1)
1609 .ok_or(Error::<T>::NumOverflow)?;
1610 let itemcopy = item.clone();
1611 let owner = item.owner.clone();
16121641
1613 Self::add_token_index(item.collection, current_index, owner.clone())?;1642 // Does new owner already have an account?
1643 let mut balance: u128 = 0;
1644 if <FungibleItemList<T>>::contains_key(collection_id, owner) {
1645 balance = <FungibleItemList<T>>::get(collection_id, owner).value;
1646 }
16141647
1615 <ItemListIndex>::insert(item.collection, current_index);1648 // Mint
1649 let item = FungibleItemType {
1650 value: balance + value
1651 };
1616 <FungibleItemList<T>>::insert(item.collection, current_index, itemcopy);1652 <FungibleItemList<T>>::insert(collection_id, (*owner).clone(), item);
16171653
1618 // Add current block
1619 let v: Vec<BasketItem<T::AccountId, T::BlockNumber>> = Vec::new();
1620 <FungibleTransferBasket<T>>::insert(item.collection, current_index, v);
1621
1622 // Update balance1654 // Update balance
1623 let new_balance = <Balance<T>>::get(item.collection, owner.clone())1655 let new_balance = <Balance<T>>::get(collection_id, owner)
1624 .checked_add(item.value)1656 .checked_add(value)
1625 .ok_or(Error::<T>::NumOverflow)?;1657 .ok_or(Error::<T>::NumOverflow)?;
1626 <Balance<T>>::insert(item.collection, owner.clone(), new_balance);1658 <Balance<T>>::insert(collection_id, (*owner).clone(), new_balance);
16271659
1628 Ok(())1660 Ok(())
1629 }1661 }
16301662
1631 fn add_refungible_item(item: ReFungibleItemType<T::AccountId>) -> DispatchResult {1663 fn add_refungible_item(collection_id: CollectionId, item: ReFungibleItemType<T::AccountId>) -> DispatchResult {
1632 let current_index = <ItemListIndex>::get(item.collection)1664 let current_index = <ItemListIndex>::get(collection_id)
1633 .checked_add(1)1665 .checked_add(1)
1634 .ok_or(Error::<T>::NumOverflow)?;1666 .ok_or(Error::<T>::NumOverflow)?;
1635 let itemcopy = item.clone();1667 let itemcopy = item.clone();
16361668
1637 let value = item.owner.first().unwrap().fraction;1669 let value = item.owner.first().unwrap().fraction;
1638 let owner = item.owner.first().unwrap().owner.clone();1670 let owner = item.owner.first().unwrap().owner.clone();
16391671
1640 Self::add_token_index(item.collection, current_index, owner.clone())?;1672 Self::add_token_index(collection_id, current_index, owner.clone())?;
16411673
1642 <ItemListIndex>::insert(item.collection, current_index);1674 <ItemListIndex>::insert(collection_id, current_index);
1643 <ReFungibleItemList<T>>::insert(item.collection, current_index, itemcopy);1675 <ReFungibleItemList<T>>::insert(collection_id, current_index, itemcopy);
16441676
1645 // Add current block
1646 let block_number: T::BlockNumber = 0.into();
1647 <ReFungibleTransferBasket<T>>::insert(item.collection, current_index, block_number);
1648
1649 // Update balance1677 // Update balance
1650 let new_balance = <Balance<T>>::get(item.collection, owner.clone())1678 let new_balance = <Balance<T>>::get(collection_id, owner.clone())
1651 .checked_add(value)1679 .checked_add(value)
1652 .ok_or(Error::<T>::NumOverflow)?;1680 .ok_or(Error::<T>::NumOverflow)?;
1653 <Balance<T>>::insert(item.collection, owner.clone(), new_balance);1681 <Balance<T>>::insert(collection_id, owner.clone(), new_balance);
16541682
1655 Ok(())1683 Ok(())
1656 }1684 }
16571685
1658 fn add_nft_item(item: NftItemType<T::AccountId>) -> DispatchResult {1686 fn add_nft_item(collection_id: CollectionId, item: NftItemType<T::AccountId>) -> DispatchResult {
1659 let current_index = <ItemListIndex>::get(item.collection)1687 let current_index = <ItemListIndex>::get(collection_id)
1660 .checked_add(1)1688 .checked_add(1)
1661 .ok_or(Error::<T>::NumOverflow)?;1689 .ok_or(Error::<T>::NumOverflow)?;
16621690
1663 let item_owner = item.owner.clone();1691 let item_owner = item.owner.clone();
1664 let collection_id = item.collection.clone();
1665 Self::add_token_index(collection_id, current_index, item.owner.clone())?;1692 Self::add_token_index(collection_id, current_index, item.owner.clone())?;
16661693
1667 <ItemListIndex>::insert(collection_id, current_index);1694 <ItemListIndex>::insert(collection_id, current_index);
1668 <NftItemList<T>>::insert(collection_id, current_index, item);1695 <NftItemList<T>>::insert(collection_id, current_index, item);
16691696
1670 // Add current block
1671 let block_number: T::BlockNumber = 0.into();
1672 <NftTransferBasket<T>>::insert(collection_id, current_index, block_number);
1673
1674 // Update balance1697 // Update balance
1675 let new_balance = <Balance<T>>::get(collection_id, item_owner.clone())1698 let new_balance = <Balance<T>>::get(collection_id, item_owner.clone())
1676 .checked_add(1)1699 .checked_add(1)
1698 .unwrap();1721 .unwrap();
1699 Self::remove_token_index(collection_id, item_id, owner.clone())?;1722 Self::remove_token_index(collection_id, item_id, owner.clone())?;
17001723
1701 // remove approve list
1702 <ApprovedList<T>>::remove(collection_id, (item_id, owner.clone()));
1703
1704 // update balance1724 // update balance
1705 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())1725 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())
1706 .checked_sub(item.fraction)1726 .checked_sub(item.fraction)
1720 let item = <NftItemList<T>>::get(collection_id, item_id);1740 let item = <NftItemList<T>>::get(collection_id, item_id);
1721 Self::remove_token_index(collection_id, item_id, item.owner.clone())?;1741 Self::remove_token_index(collection_id, item_id, item.owner.clone())?;
17221742
1723 // remove approve list
1724 <ApprovedList<T>>::remove(collection_id, (item_id, item.owner.clone()));
1725
1726 // update balance1743 // update balance
1727 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())1744 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())
1728 .checked_sub(1)1745 .checked_sub(1)
1733 Ok(())1750 Ok(())
1734 }1751 }
17351752
1736 fn burn_fungible_item(collection_id: CollectionId, item_id: TokenId) -> DispatchResult {1753 fn burn_fungible_item(owner: &T::AccountId, collection_id: CollectionId, value: u128) -> DispatchResult {
1737 ensure!(1754 ensure!(
1738 <FungibleItemList<T>>::contains_key(collection_id, item_id),1755 <FungibleItemList<T>>::contains_key(collection_id, owner),
1739 Error::<T>::TokenNotFound1756 Error::<T>::TokenNotFound
1740 );1757 );
1741 let item = <FungibleItemList<T>>::get(collection_id, item_id);1758 let mut balance = <FungibleItemList<T>>::get(collection_id, owner);
1742 Self::remove_token_index(collection_id, item_id, item.owner.clone())?;1759 ensure!(balance.value >= value, Error::<T>::TokenValueNotEnough);
17431760
1744 // remove approve list
1745 <ApprovedList<T>>::remove(collection_id, (item_id, item.owner.clone()));
1746
1747 // update balance1761 // update balance
1748 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())1762 let new_balance = <Balance<T>>::get(collection_id, owner)
1749 .checked_sub(item.value)1763 .checked_sub(value)
1750 .ok_or(Error::<T>::NumOverflow)?;1764 .ok_or(Error::<T>::NumOverflow)?;
1751 <Balance<T>>::insert(collection_id, item.owner.clone(), new_balance);1765 <Balance<T>>::insert(collection_id, (*owner).clone(), new_balance);
17521766
1753 <FungibleItemList<T>>::remove(collection_id, item_id);1767 if balance.value - value > 0 {
1768 balance.value -= value;
1769 <FungibleItemList<T>>::insert(collection_id, (*owner).clone(), balance);
1770 }
1771 else {
1772 <FungibleItemList<T>>::remove(collection_id, owner);
1773 }
17541774
1755 Ok(())1775 Ok(())
1756 }1776 }
1811 <NftItemList<T>>::get(collection_id, item_id).owner == subject1831 <NftItemList<T>>::get(collection_id, item_id).owner == subject
1812 }1832 }
1813 CollectionMode::Fungible(_) => {1833 CollectionMode::Fungible(_) => {
1814 <FungibleItemList<T>>::get(collection_id, item_id).owner == subject1834 <FungibleItemList<T>>::contains_key(collection_id, &subject)
1815 }1835 }
1816 CollectionMode::ReFungible(_) => {1836 CollectionMode::ReFungible(_) => {
1817 <ReFungibleItemList<T>>::get(collection_id, item_id)1837 <ReFungibleItemList<T>>::get(collection_id, item_id)
18251845
1826 fn check_white_list(collection_id: CollectionId, address: &T::AccountId) -> DispatchResult {1846 fn check_white_list(collection_id: CollectionId, address: &T::AccountId) -> DispatchResult {
1827 let mes = Error::<T>::AddresNotInWhiteList;1847 let mes = Error::<T>::AddresNotInWhiteList;
1828 ensure!(<WhiteList<T>>::contains_key(collection_id), mes);1848 ensure!(<WhiteList<T>>::contains_key(collection_id, address), mes);
1829 let wl = <WhiteList<T>>::get(collection_id);
1830 ensure!(wl.contains(address), mes);
18311849
1832 Ok(())1850 Ok(())
1833 }1851 }
18341852
1835 fn transfer_fungible(1853 fn transfer_fungible(
1836 collection_id: CollectionId,1854 collection_id: CollectionId,
1837 item_id: TokenId,
1838 value: u128,1855 value: u128,
1839 owner: T::AccountId,1856 owner: &T::AccountId,
1840 new_owner: T::AccountId,1857 recipient: &T::AccountId,
1841 ) -> DispatchResult {1858 ) -> DispatchResult {
1842 ensure!(1859 ensure!(
1843 <FungibleItemList<T>>::contains_key(collection_id, item_id),1860 <FungibleItemList<T>>::contains_key(collection_id, owner),
1844 Error::<T>::TokenNotFound1861 Error::<T>::TokenNotFound
1845 );1862 );
18461863
1847 let full_item = <FungibleItemList<T>>::get(collection_id, item_id);1864 let mut balance = <FungibleItemList<T>>::get(collection_id, owner);
1848 let amount = full_item.value;1865 ensure!(balance.value >= value, Error::<T>::TokenValueTooLow);
18491866
1850 ensure!(amount >= value, Error::<T>::TokenValueTooLow);1867 // Send balance to recipient (updates balanceOf of recipient)
1868 Self::add_fungible_item(collection_id, recipient, value)?;
18511869
1852 // update balance1870 // update balanceOf of sender
1853 let balance_old_owner = <Balance<T>>::get(collection_id, owner.clone())1871 <Balance<T>>::insert(collection_id, (*owner).clone(), balance.value - value);
1854 .checked_sub(value)
1855 .ok_or(Error::<T>::NumOverflow)?;
1856 <Balance<T>>::insert(collection_id, owner.clone(), balance_old_owner);
18571872
1858 let mut new_owner_account_id = 0;1873 // Reduce or remove sender
1859 let new_owner_items = <AddressTokens<T>>::get(collection_id, new_owner.clone());1874 if balance.value == value {
1860 if new_owner_items.len() > 0 {
1861 new_owner_account_id = new_owner_items[0];1875 <FungibleItemList<T>>::remove(collection_id, owner);
1862 }1876 }
18631877 else {
1864 // transfer1878 balance.value -= value;
1865 if amount == value && new_owner_account_id == 0 {1879 <FungibleItemList<T>>::insert(collection_id, (*owner).clone(), balance);
1866 // change owner
1867 // new owner do not have account
1868 let mut new_full_item = full_item.clone();
1869 new_full_item.owner = new_owner.clone();
1870 <FungibleItemList<T>>::insert(collection_id, item_id, new_full_item);
1871
1872 // update balance
1873 let balance_new_owner = <Balance<T>>::get(collection_id, new_owner.clone())
1874 .checked_add(value)
1875 .ok_or(Error::<T>::NumOverflow)?;
1876 <Balance<T>>::insert(collection_id, new_owner.clone(), balance_new_owner);
1877
1878 // update index collection
1879 Self::move_token_index(collection_id, item_id, owner.clone(), new_owner.clone())?;
1880 } else {
1881 let mut new_full_item = full_item.clone();
1882 new_full_item.value -= value;
1883
1884 // separate amount
1885 if new_owner_account_id > 0 {
1886 // new owner has account
1887 let mut item = <FungibleItemList<T>>::get(collection_id, new_owner_account_id);
1888 item.value += value;
1889
1890 // update balance
1891 let balance_new_owner = <Balance<T>>::get(collection_id, new_owner.clone())
1892 .checked_add(value)
1893 .ok_or(Error::<T>::NumOverflow)?;
1894 <Balance<T>>::insert(collection_id, new_owner.clone(), balance_new_owner);
1895
1896 <FungibleItemList<T>>::insert(collection_id, new_owner_account_id, item);
1897 } else {
1898 // new owner do not have account
1899 let item = FungibleItemType {
1900 collection: collection_id,
1901 owner: new_owner.clone(),
1902 value
1903 };
1904
1905 Self::add_fungible_item(item)?;
1906 }
1907
1908 if amount == value {
1909 Self::remove_token_index(collection_id, item_id, full_item.owner.clone())?;
1910
1911 // remove approve list
1912 <ApprovedList<T>>::remove(collection_id, (item_id, full_item.owner.clone()));
1913 <FungibleItemList<T>>::remove(collection_id, item_id);
1914 }
1915
1916 <FungibleItemList<T>>::insert(collection_id, item_id, new_full_item);
1917 }1880 }
19181881
1919 Ok(())1882 Ok(())
1948 .ok_or(Error::<T>::NumOverflow)?;1911 .ok_or(Error::<T>::NumOverflow)?;
1949 <Balance<T>>::insert(collection_id, item.owner.clone(), balance_old_owner);1912 <Balance<T>>::insert(collection_id, item.owner.clone(), balance_old_owner);
19501913
1951 let balance_new_owner = <Balance<T>>::get(collection_id, new_owner.clone())1914 let balancenew_owner = <Balance<T>>::get(collection_id, new_owner.clone())
1952 .checked_add(value)1915 .checked_add(value)
1953 .ok_or(Error::<T>::NumOverflow)?;1916 .ok_or(Error::<T>::NumOverflow)?;
1954 <Balance<T>>::insert(collection_id, new_owner.clone(), balance_new_owner);1917 <Balance<T>>::insert(collection_id, new_owner.clone(), balancenew_owner);
19551918
1956 let old_owner = item.owner.clone();1919 let old_owner = item.owner.clone();
1957 let new_owner_has_account = full_item.owner.iter().any(|i| i.owner == new_owner);1920 let new_owner_has_account = full_item.owner.iter().any(|i| i.owner == new_owner);
2028 .ok_or(Error::<T>::NumOverflow)?;1991 .ok_or(Error::<T>::NumOverflow)?;
2029 <Balance<T>>::insert(collection_id, item.owner.clone(), balance_old_owner);1992 <Balance<T>>::insert(collection_id, item.owner.clone(), balance_old_owner);
20301993
2031 let balance_new_owner = <Balance<T>>::get(collection_id, new_owner.clone())1994 let balancenew_owner = <Balance<T>>::get(collection_id, new_owner.clone())
2032 .checked_add(1)1995 .checked_add(1)
2033 .ok_or(Error::<T>::NumOverflow)?;1996 .ok_or(Error::<T>::NumOverflow)?;
2034 <Balance<T>>::insert(collection_id, new_owner.clone(), balance_new_owner);1997 <Balance<T>>::insert(collection_id, new_owner.clone(), balancenew_owner);
20351998
2036 // change owner1999 // change owner
2037 let old_owner = item.owner.clone();2000 let old_owner = item.owner.clone();
2041 // update index collection2004 // update index collection
2042 Self::move_token_index(collection_id, item_id, old_owner.clone(), new_owner.clone())?;2005 Self::move_token_index(collection_id, item_id, old_owner.clone(), new_owner.clone())?;
20432006
2044 // reset approved list
2045 <ApprovedList<T>>::remove(collection_id, (item_id, old_owner));
2046 Ok(())2007 Ok(())
2047 }2008 }
2048 2009
2054 match mode {2015 match mode {
2055 CollectionMode::NFT => ensure!(<NftItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),2016 CollectionMode::NFT => ensure!(<NftItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),
2056 CollectionMode::ReFungible(_) => ensure!(<ReFungibleItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),2017 CollectionMode::ReFungible(_) => ensure!(<ReFungibleItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),
2057 CollectionMode::Fungible(_) => ensure!(<FungibleItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),
2058 _ => ()2018 _ => ()
2059 };2019 };
2060 2020
2116 CreatedCollectionCount::put(next_id);2076 CreatedCollectionCount::put(next_id);
2117 }2077 }
21182078
2119 fn init_nft_token(item: &NftItemType<T::AccountId>) {2079 fn init_nft_token(collection_id: CollectionId, item: &NftItemType<T::AccountId>) {
2120 let current_index = <ItemListIndex>::get(item.collection)2080 let current_index = <ItemListIndex>::get(collection_id)
2121 .checked_add(1)2081 .checked_add(1)
2122 .unwrap();2082 .unwrap();
21232083
2124 let item_owner = item.owner.clone();2084 let item_owner = item.owner.clone();
2125 let collection_id = item.collection.clone();
2126 Self::add_token_index(collection_id, current_index, item.owner.clone()).unwrap();2085 Self::add_token_index(collection_id, current_index, item.owner.clone()).unwrap();
21272086
2128 <ItemListIndex>::insert(collection_id, current_index);2087 <ItemListIndex>::insert(collection_id, current_index);
2134 <Balance<T>>::insert(collection_id, item_owner.clone(), new_balance);2093 <Balance<T>>::insert(collection_id, item_owner.clone(), new_balance);
2135 }2094 }
21362095
2137 fn init_fungible_token(item: &FungibleItemType<T::AccountId>) {2096 fn init_fungible_token(collection_id: CollectionId, owner: &T::AccountId, item: &FungibleItemType) {
2138 let current_index = <ItemListIndex>::get(item.collection)2097 let current_index = <ItemListIndex>::get(collection_id)
2139 .checked_add(1)2098 .checked_add(1)
2140 .unwrap();2099 .unwrap();
2141 let owner = item.owner.clone();
21422100
2143 Self::add_token_index(item.collection, current_index, owner.clone()).unwrap();2101 Self::add_token_index(collection_id, current_index, (*owner).clone()).unwrap();
21442102
2145 <ItemListIndex>::insert(item.collection, current_index);2103 <ItemListIndex>::insert(collection_id, current_index);
21462104
2147 // Update balance2105 // Update balance
2148 let new_balance = <Balance<T>>::get(item.collection, owner.clone())2106 let new_balance = <Balance<T>>::get(collection_id, owner)
2149 .checked_add(item.value)2107 .checked_add(item.value)
2150 .unwrap();2108 .unwrap();
2151 <Balance<T>>::insert(item.collection, owner.clone(), new_balance);2109 <Balance<T>>::insert(collection_id, (*owner).clone(), new_balance);
2152 }2110 }
21532111
2154 fn init_refungible_token(item: &ReFungibleItemType<T::AccountId>) {2112 fn init_refungible_token(collection_id: CollectionId, item: &ReFungibleItemType<T::AccountId>) {
2155 let current_index = <ItemListIndex>::get(item.collection)2113 let current_index = <ItemListIndex>::get(collection_id)
2156 .checked_add(1)2114 .checked_add(1)
2157 .unwrap();2115 .unwrap();
21582116
2159 let value = item.owner.first().unwrap().fraction;2117 let value = item.owner.first().unwrap().fraction;
2160 let owner = item.owner.first().unwrap().owner.clone();2118 let owner = item.owner.first().unwrap().owner.clone();
21612119
2162 Self::add_token_index(item.collection, current_index, owner.clone()).unwrap();2120 Self::add_token_index(collection_id, current_index, owner.clone()).unwrap();
21632121
2164 <ItemListIndex>::insert(item.collection, current_index);2122 <ItemListIndex>::insert(collection_id, current_index);
21652123
2166 // Update balance2124 // Update balance
2167 let new_balance = <Balance<T>>::get(item.collection, owner.clone())2125 let new_balance = <Balance<T>>::get(collection_id, owner.clone())
2168 .checked_add(value)2126 .checked_add(value)
2169 .unwrap();2127 .unwrap();
2170 <Balance<T>>::insert(item.collection, owner.clone(), new_balance);2128 <Balance<T>>::insert(collection_id, owner.clone(), new_balance);
2171 }2129 }
21722130
2173 fn add_token_index(collection_id: CollectionId, item_index: TokenId, owner: T::AccountId) -> DispatchResult {2131 fn add_token_index(collection_id: CollectionId, item_index: TokenId, owner: T::AccountId) -> DispatchResult {
22452203
2246 Ok(())2204 Ok(())
2247 }2205 }
2206
2207 fn ensure_contract_owned(account: T::AccountId, contract: &T::AccountId) -> DispatchResult {
2208 if <ContractOwner<T>>::contains_key(contract.clone()) {
2209 let owner = <ContractOwner<T>>::get(contract);
2210 ensure!(account == owner, Error::<T>::NoPermission);
2211 } else {
2212 fail!(Error::<T>::NoPermission);
2213 }
2214
2215 Ok(())
2216 }
2248}2217}
22492218
2250////////////////////////////////////////////////////////////////////////////////////////////////////2219////////////////////////////////////////////////////////////////////////////////////////////////////
2302 <transaction_payment::Module<T>>::compute_fee(len as u32, info, tip)2271 <transaction_payment::Module<T>>::compute_fee(len as u32, info, tip)
2303 }2272 }
23042273
2274 fn get_priority(len: usize, info: &DispatchInfoOf<T::Call>, final_fee: BalanceOf<T>) -> TransactionPriority {
2275 let weight_saturation = T::MaximumBlockWeight::get() / info.weight.max(1);
2276 let len_saturation = T::MaximumBlockLength::get() as u64 / (len as u64).max(1);
2277 let coefficient: BalanceOf<T> = weight_saturation.min(len_saturation).saturated_into::<BalanceOf<T>>();
2278 final_fee.saturating_mul(coefficient).saturated_into::<TransactionPriority>()
2279 }
2280
2305 fn withdraw_fee(2281 fn withdraw_fee(
2306 &self,2282 &self,
2307 who: &T::AccountId,2283 who: &T::AccountId,
2320 // };2296 // };
2321 let fee = Self::traditional_fee(len, info, tip);2297 let fee = Self::traditional_fee(len, info, tip);
23222298
2299 // Only mess with balances if fee is not zero.
2300 if fee.is_zero() {
2301 return Ok((fee, None));
2302 }
2303
2323 // Determine who is paying transaction fee based on ecnomic model2304 // Determine who is paying transaction fee based on ecnomic model
2324 // Parse call to extract collection ID and access collection sponsor2305 // Parse call to extract collection ID and access collection sponsor
2325 let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {2306 let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {
2326 Some(Call::create_item(collection_id, _owner, _properties)) => {2307 Some(Call::create_item(collection_id, _owner, _properties)) => {
23272308
2328 // check free create limit2309 // check free create limit
2329 if <Collection<T>>::get(collection_id).limits.sponsored_data_size >= (_properties.len() as u32)2310 if (<Collection<T>>::get(collection_id).limits.sponsored_data_size >= (_properties.len() as u32)) &&
2311 (<Collection<T>>::get(collection_id).sponsor_confirmed)
2330 {2312 {
2331 <Collection<T>>::get(collection_id).sponsor2313 <Collection<T>>::get(collection_id).sponsor
2332 } else {2314 } else {
2333 T::AccountId::default()2315 T::AccountId::default()
2334 }2316 }
2335 }2317 }
2336 Some(Call::transfer(_new_owner, collection_id, _item_id, _value)) => {2318 Some(Call::transfer(_new_owner, collection_id, item_id, _value)) => {
2337 2319
2338 let _collection_limits = <Collection<T>>::get(collection_id).limits;2320 let mut sponsor_transfer = false;
2339 let _collection_mode = <Collection<T>>::get(collection_id).mode;2321 if <Collection<T>>::get(collection_id).sponsor_confirmed {
23402322
2341 // sponsor timeout2323 let collection_limits = <Collection<T>>::get(collection_id).limits;
2324 let collection_mode = <Collection<T>>::get(collection_id).mode;
2325
2326 // sponsor timeout
2342 let sponsor_transfer = match _collection_mode {2327 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
2328 sponsor_transfer = match collection_mode {
2343 CollectionMode::NFT => {2329 CollectionMode::NFT => {
2330
2331 // get correct limit
2332 let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 {
2333 collection_limits.sponsor_transfer_timeout
2334 } else {
2335 ChainLimit::get().nft_sponsor_transfer_timeout
2336 };
2337
2338 let mut sponsored = true;
2339 if <NftTransferBasket<T>>::contains_key(collection_id, item_id) {
2340 let last_tx_block = <NftTransferBasket<T>>::get(collection_id, item_id);
2341 let limit_time = last_tx_block + limit.into();
2342 if block_number <= limit_time {
2343 sponsored = false;
2344 }
2345 }
2346 if sponsored {
2347 <NftTransferBasket<T>>::insert(collection_id, item_id, block_number);
2348 }
23442349
2345 // get correct limit2350 sponsored
2351 }
2352 CollectionMode::Fungible(_) => {
2353
2354 // get correct limit
2346 let limit: u32 = if _collection_limits.sponsor_transfer_timeout > 0 {2355 let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 {
2347 _collection_limits.sponsor_transfer_timeout2356 collection_limits.sponsor_transfer_timeout
2348 } else {2357 } else {
2349 ChainLimit::get().nft_sponsor_transfer_timeout2358 ChainLimit::get().fungible_sponsor_transfer_timeout
2350 };2359 };
2360
2361 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
2362 let mut sponsored = true;
2363 if <FungibleTransferBasket<T>>::contains_key(collection_id, who) {
2364 let last_tx_block = <FungibleTransferBasket<T>>::get(collection_id, who);
2365 let limit_time = last_tx_block + limit.into();
2366 if block_number <= limit_time {
2367 sponsored = false;
2368 }
2369 }
2370 if sponsored {
2371 <FungibleTransferBasket<T>>::insert(collection_id, who, block_number);
2372 }
23512373
2352 let basket = <NftTransferBasket<T>>::get(collection_id, _item_id);2374 sponsored
2353 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
2354 let limit_time = basket + limit.into();
2355 if block_number >= limit_time {
2356 <NftTransferBasket<T>>::insert(collection_id, _item_id, block_number);
2357 true
2358 }2375 }
2359 else {2376 CollectionMode::ReFungible(_) => {
2360 false2377
2361 }
2362 }
2363 CollectionMode::Fungible(_) => {
2364
2365 // get correct limit2378 // get correct limit
2366 let limit: u32 = if _collection_limits.sponsor_transfer_timeout > 0 {2379 let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 {
2367 _collection_limits.sponsor_transfer_timeout2380 collection_limits.sponsor_transfer_timeout
2368 } else {2381 } else {
2369 ChainLimit::get().fungible_sponsor_transfer_timeout2382 ChainLimit::get().refungible_sponsor_transfer_timeout
2370 };2383 };
23712384
2372 let mut basket = <FungibleTransferBasket<T>>::get(collection_id, _item_id);2385 let mut sponsored = true;
2373 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;2386 if <ReFungibleTransferBasket<T>>::contains_key(collection_id, item_id) {
2374 if basket.iter().any(|i| i.address == _new_owner.clone())
2375 {2387 let last_tx_block = <ReFungibleTransferBasket<T>>::get(collection_id, item_id);
2376 let item = basket.iter_mut().find(|i| i.address == _new_owner.clone()).unwrap().clone();
2377 let limit_time = item.start_block + limit.into();2388 let limit_time = last_tx_block + limit.into();
2378 if block_number >= limit_time {2389 if block_number <= limit_time {
2379 basket.retain(|x| x.address == item.address);2390 sponsored = false;
2380 basket.push(BasketItem { start_block: block_number, address: _new_owner.clone() });
2381 <FungibleTransferBasket<T>>::insert(collection_id, _item_id, basket);2391 }
2382 true
2383 }2392 }
2384 else {2393 if sponsored {
2385 false2394 <ReFungibleTransferBasket<T>>::insert(collection_id, item_id, block_number);
2386 }2395 }
2396
2397 sponsored
2387 }2398 }
2388 else {2399 _ => {
2389 basket.push(BasketItem { start_block: block_number, address: _new_owner.clone()});
2390 true
2391 }
2392 }
2393 CollectionMode::ReFungible(_) => {
2394
2395 // get correct limit
2396 let limit: u32 = if _collection_limits.sponsor_transfer_timeout > 0 {
2397 _collection_limits.sponsor_transfer_timeout
2398 } else {
2399 ChainLimit::get().refungible_sponsor_transfer_timeout
2400 };
2401
2402 let basket = <ReFungibleTransferBasket<T>>::get(collection_id, _item_id);
2403 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
2404 let limit_time = basket + limit.into();
2405 if block_number >= limit_time {
2406 <ReFungibleTransferBasket<T>>::insert(collection_id, _item_id, block_number);
2407 true
2408 } else {
2409 false2400 false
2410 }2401 },
2411 }2402 };
2412 _ => {2403 }
2413 false
2414 },
2415 };
24162404
2417 if !sponsor_transfer {2405 if !sponsor_transfer {
2418 T::AccountId::default()2406 T::AccountId::default()
24452433
2446 let called_contract: T::AccountId = T::Lookup::lookup((*dest).clone()).unwrap_or(T::AccountId::default());2434 let called_contract: T::AccountId = T::Lookup::lookup((*dest).clone()).unwrap_or(T::AccountId::default());
24472435
2436 let owned_contract = <ContractOwner<T>>::contains_key(called_contract.clone())
2437 && <ContractOwner<T>>::get(called_contract.clone()) == *who;
2438 let white_list_enabled = <ContractWhiteListEnabled<T>>::contains_key(called_contract.clone()) && <ContractWhiteListEnabled<T>>::get(called_contract.clone());
2439
2440 if !owned_contract && white_list_enabled {
2441 if !<ContractWhiteList<T>>::contains_key(called_contract.clone(), who) {
2442 return Err(InvalidTransaction::Call.into());
2443 }
2444 }
2445
2448 let mut sponsor_transfer = false;2446 let mut sponsor_transfer = false;
2449 if <ContractSponsoringRateLimit<T>>::contains_key(called_contract.clone()) {2447 if <ContractSponsoringRateLimit<T>>::contains_key(called_contract.clone()) {
2450 let last_tx_block = <ContractSponsorBasket<T>>::get((&called_contract, &who));2448 let last_tx_block = <ContractSponsorBasket<T>>::get((&called_contract, &who));
2481 who_pays_fee = who.clone();2479 who_pays_fee = who.clone();
2482 }2480 }
24832481
2484 // Only mess with balances if fee is not zero.
2485 if fee.is_zero() {
2486 return Ok((fee, None));
2487 }
2488
2489 match <T as transaction_payment::Trait>::Currency::withdraw(2482 match <T as transaction_payment::Trait>::Currency::withdraw(
2490 &who_pays_fee,2483 &who_pays_fee,
2491 fee,2484 fee,
25252518
2526 fn validate(2519 fn validate(
2527 &self,2520 &self,
2528 _who: &Self::AccountId,2521 who: &Self::AccountId,
2529 _call: &Self::Call,2522 call: &Self::Call,
2530 _info: &DispatchInfoOf<Self::Call>,2523 info: &DispatchInfoOf<Self::Call>,
2531 _len: usize,2524 len: usize,
2532 ) -> TransactionValidity {2525 ) -> TransactionValidity {
2533 Ok(ValidTransaction::default())2526 let (fee, _) = self.withdraw_fee(who, call, info, len)?;
2527 Ok(ValidTransaction {
2528 priority: Self::get_priority(len, info, fee),
2529 ..Default::default()
2530 })
2534 }2531 }
25352532
2536 fn pre_dispatch(2533 fn pre_dispatch(
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
960960
961 let origin1 = Origin::signed(1);961 let origin1 = Origin::signed(1);
962 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));962 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
963 assert_eq!(TemplateModule::white_list(collection_id)[0], 2);963 assert_eq!(TemplateModule::white_list(collection_id, 2), true);
964 });964 });
965}965}
966966
975975
976 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));976 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));
977 assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), collection_id, 3));977 assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), collection_id, 3));
978 assert_eq!(TemplateModule::white_list(collection_id)[0], 3);978 assert_eq!(TemplateModule::white_list(collection_id, 3), true);
979 });979 });
980}980}
981981
1035 1035
1036 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));1036 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
1037 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));1037 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));
1038 assert_eq!(TemplateModule::white_list(collection_id)[0], 2);1038 assert_eq!(TemplateModule::white_list(collection_id, 2), true);
1039 assert_eq!(TemplateModule::white_list(collection_id).len(), 1);
1040 });1039 });
1041}1040}
10421041
1054 collection_id,1053 collection_id,
1055 21054 2
1056 ));1055 ));
1057 assert_eq!(TemplateModule::white_list(collection_id).len(), 0);1056 assert_eq!(TemplateModule::white_list(collection_id, 2), false);
1058 });1057 });
1059}1058}
10601059
1075 collection_id,1074 collection_id,
1076 31075 3
1077 ));1076 ));
1078 assert_eq!(TemplateModule::white_list(collection_id).len(), 0);1077 assert_eq!(TemplateModule::white_list(collection_id, 3), false);
1079 });1078 });
1080}1079}
10811080
1093 TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2),1092 TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2),
1094 Error::<Test>::NoPermission1093 Error::<Test>::NoPermission
1095 );1094 );
1096 assert_eq!(TemplateModule::white_list(collection_id)[0], 2);1095 assert_eq!(TemplateModule::white_list(collection_id, 2), true);
1097 });1096 });
1098}1097}
10991098
1125 TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2),1124 TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2),
1126 Error::<Test>::CollectionNotFound1125 Error::<Test>::CollectionNotFound
1127 );1126 );
1128 assert_eq!(TemplateModule::white_list(collection_id).len(), 0);1127 assert_eq!(TemplateModule::white_list(collection_id, 2), false);
1129 });1128 });
1130}1129}
11311130
1149 collection_id,1148 collection_id,
1150 21149 2
1151 ));1150 ));
1152 assert_eq!(TemplateModule::white_list(collection_id).len(), 0);1151 assert_eq!(TemplateModule::white_list(collection_id, 2), false);
1153 });1152 });
1154}1153}
11551154
modifiedruntime/Cargo.tomldiffbeforeafterboth
45pallet-timestamp = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }45pallet-timestamp = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
46pallet-transaction-payment = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }46pallet-transaction-payment = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
47pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }47pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
48pallet-treasury = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
49pallet-vesting = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
48sp-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }50sp-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
49sp-block-builder = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }51sp-block-builder = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
50sp-consensus-aura = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }52sp-consensus-aura = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
57sp-transaction-pool = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }59sp-transaction-pool = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
58sp-version = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }60sp-version = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
59
60pallet-treasury = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }
6161
62[features]62[features]
63default = ['std']63default = ['std']
90 'pallet-timestamp/std',90 'pallet-timestamp/std',
91 'pallet-transaction-payment/std',91 'pallet-transaction-payment/std',
92 'pallet-transaction-payment-rpc-runtime-api/std',92 'pallet-transaction-payment-rpc-runtime-api/std',
93 'pallet-treasury/std',
94 'pallet-vesting/std',
95
93 'pallet-nft/std',96 'pallet-nft/std',
94 'sp-api/std',97 'sp-api/std',
103 'sp-transaction-pool/std',106 'sp-transaction-pool/std',
104 'sp-version/std',107 'sp-version/std',
105108
106 'pallet-treasury/std',
107]109]
108110
modifiedruntime/src/lib.rsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.6//! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.
27
17use sp_runtime::{22use sp_runtime::{
18 create_runtime_str, generic, impl_opaque_keys,23 create_runtime_str, generic, impl_opaque_keys,
19 traits::{24 traits::{
20 Convert, BlakeTwo256, Block as BlockT, IdentifyAccount, 25 Convert, ConvertInto, BlakeTwo256, Block as BlockT, IdentifyAccount,
21 IdentityLookup, NumberFor, Saturating, Verify,26 IdentityLookup, NumberFor, Saturating, Verify,
22 },27 },
23 transaction_validity::{TransactionSource, TransactionValidity},28 transaction_validity::{TransactionSource, TransactionValidity},
315 type Balance = Balance;320 type Balance = Balance;
316 /// The ubiquitous event type.321 /// The ubiquitous event type.
317 type Event = Event;322 type Event = Event;
318 type DustRemoval = ();323 type DustRemoval = Treasury;
319 type ExistentialDeposit = ExistentialDeposit;324 type ExistentialDeposit = ExistentialDeposit;
320 type AccountStore = System;325 type AccountStore = System;
321 type WeightInfo = ();326 type WeightInfo = ();
357362
358impl pallet_transaction_payment::Trait for Runtime {363impl pallet_transaction_payment::Trait for Runtime {
359 type Currency = pallet_balances::Module<Runtime>;364 type Currency = pallet_balances::Module<Runtime>;
360 type OnTransactionPayment = ();365 type OnTransactionPayment = Treasury;
361 type TransactionByteFee = TransactionByteFee;366 type TransactionByteFee = TransactionByteFee;
362 type WeightToFee = IdentityFee<Balance>;367 type WeightToFee = IdentityFee<Balance>;
363 type FeeMultiplierUpdate = ();368 type FeeMultiplierUpdate = ();
412 type Call = Call;417 type Call = Call;
413}418}
419
420parameter_types! {
421 pub const MinVestedTransfer: Balance = 100 * DOLLARS;
422}
423
424impl pallet_vesting::Trait for Runtime {
425 type Event = Event;
426 type Currency = Balances;
427 type BlockNumberToBalance = ConvertInto;
428 type MinVestedTransfer = MinVestedTransfer;
429 type WeightInfo = ();
430}
414431
415/// Used for the module nft in `./nft.rs`432/// Used for the module nft in `./nft.rs`
416impl pallet_nft::Trait for Runtime {433impl pallet_nft::Trait for Runtime {
435 Sudo: pallet_sudo::{Module, Call, Config<T>, Storage, Event<T>},452 Sudo: pallet_sudo::{Module, Call, Config<T>, Storage, Event<T>},
436 Nft: pallet_nft::{Module, Call, Config<T>, Storage, Event<T>},453 Nft: pallet_nft::{Module, Call, Config<T>, Storage, Event<T>},
437 Treasury: pallet_treasury::{Module, Call, Storage, Config, Event<T>},454 Treasury: pallet_treasury::{Module, Call, Storage, Config, Event<T>},
455 Vesting: pallet_vesting::{Module, Call, Config<T>, Storage, Event<T>},
438 }456 }
439);457);
440458
modifiedruntime/src/nft_weights.rsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};6use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
27
108 .saturating_add(DbWeight::get().reads(2 as Weight))113 .saturating_add(DbWeight::get().reads(2 as Weight))
109 .saturating_add(DbWeight::get().writes(1 as Weight))114 .saturating_add(DbWeight::get().writes(1 as Weight))
110 }115 }
111 // fn set_chain_limits() -> Weight {
112 // (0 as Weight)
113 // .saturating_add(DbWeight::get().reads(1 as Weight))
114 // .saturating_add(DbWeight::get().writes(1 as Weight))
115 // }
116 fn enable_contract_sponsoring() -> Weight {116 fn enable_contract_sponsoring() -> Weight {
117 (13_000_000 as Weight)117 (13_000_000 as Weight)
118 .saturating_add(DbWeight::get().reads(1 as Weight))118 .saturating_add(DbWeight::get().reads(1 as Weight))
119 .saturating_add(DbWeight::get().writes(1 as Weight))119 .saturating_add(DbWeight::get().writes(1 as Weight))
120 }120 }
121 // fn set_contract_sponsoring_rate_limit() -> Weight {121 fn set_schema_version() -> Weight {
122 // (0 as Weight)122 (8_500_000 as Weight)
123 // .saturating_add(DbWeight::get().reads(1 as Weight))123 .saturating_add(DbWeight::get().reads(2 as Weight))
124 // .saturating_add(DbWeight::get().writes(1 as Weight))124 .saturating_add(DbWeight::get().writes(1 as Weight))
125 // }125 }
126 fn set_chain_limits() -> Weight {
127 (1_300_000 as Weight)
128 .saturating_add(DbWeight::get().reads(0 as Weight))
129 .saturating_add(DbWeight::get().writes(1 as Weight))
130 }
131 fn set_contract_sponsoring_rate_limit() -> Weight {
132 (3_500_000 as Weight)
133 .saturating_add(DbWeight::get().reads(0 as Weight))
134 .saturating_add(DbWeight::get().writes(2 as Weight))
135 }
136 fn toggle_contract_white_list() -> Weight {
137 (3_000_000 as Weight)
138 .saturating_add(DbWeight::get().reads(0 as Weight))
139 .saturating_add(DbWeight::get().writes(2 as Weight))
140 }
141 fn add_to_contract_white_list() -> Weight {
142 (3_000_000 as Weight)
143 .saturating_add(DbWeight::get().reads(0 as Weight))
144 .saturating_add(DbWeight::get().writes(2 as Weight))
145 }
146 fn remove_from_contract_white_list() -> Weight {
147 (3_200_000 as Weight)
148 .saturating_add(DbWeight::get().reads(0 as Weight))
149 .saturating_add(DbWeight::get().writes(2 as Weight))
150 }
151 fn set_collection_limits() -> Weight {
152 (8_900_000 as Weight)
153 .saturating_add(DbWeight::get().reads(2 as Weight))
154 .saturating_add(DbWeight::get().writes(1 as Weight))
155 }
126}156}
127157
modifiedruntime_types.jsondiffbeforeafterboth
42 "Fraction": "u128"42 "Fraction": "u128"
43 },43 },
44 "FungibleItemType": {44 "FungibleItemType": {
45 "Collection": "CollectionId",
46 "Owner": "AccountId",
47 "Value": "u128"45 "Value": "u128"
48 },46 },
49 "NftItemType": {47 "NftItemType": {
50 "Collection": "CollectionId",
51 "Owner": "AccountId",48 "Owner": "AccountId",
52 "ConstData": "Vec<u8>",49 "ConstData": "Vec<u8>",
53 "VariableData": "Vec<u8>"50 "VariableData": "Vec<u8>"
54 },51 },
55 "ReFungibleItemType": {52 "ReFungibleItemType": {
56 "Collection": "CollectionId",
57 "Owner": "Vec<Ownership<AccountId>>",53 "Owner": "Vec<Ownership<AccountId>>",
58 "ConstData": "Vec<u8>",54 "ConstData": "Vec<u8>",
59 "VariableData": "Vec<u8>"55 "VariableData": "Vec<u8>"
70 "OffchainSchema": "Vec<u8>",66 "OffchainSchema": "Vec<u8>",
71 "SchemaVersion": "SchemaVersion",67 "SchemaVersion": "SchemaVersion",
72 "Sponsor": "AccountId",68 "Sponsor": "AccountId",
73 "UnconfirmedSponsor": "AccountId",69 "SponsorConfirmed": "bool",
74 "Limits": "CollectionLimits",70 "Limits": "CollectionLimits",
75 "VariableOnChainSchema": "Vec<u8>",71 "VariableOnChainSchema": "Vec<u8>",
76 "ConstOnChainSchema": "Vec<u8>"72 "ConstOnChainSchema": "Vec<u8>"
77 },73 },
78 "ApprovePermissions": {
79 "Approved": "AccountId",
80 "Amount": "u128"
81 },
82 "RawData": "Vec<u8>",74 "RawData": "Vec<u8>",
83 "Address": "AccountId",75 "Address": "AccountId",
84 "LookupSource": "AccountId",76 "LookupSource": "AccountId",
88 "variable_data": "Vec<u8>" 80 "variable_data": "Vec<u8>"
89 },81 },
90 "CreateFungibleData": {},82 "CreateFungibleData": {
83 "value": "u128"
84 },
91 "CreateReFungibleData": {85 "CreateReFungibleData": {
92 "const_data": "Vec<u8>",86 "const_data": "Vec<u8>",
107 },101 },
108 "CollectionId": "u32",102 "CollectionId": "u32",
109 "TokenId": "u32",103 "TokenId": "u32",
110 "BasketItem": {
111 "Address": "AccountId",
112 "start_block": "BlockNumber"
113 },
114 "ChainLimits": {104 "ChainLimits": {
115 "collection_numbers_limit": "u32",105 "collection_numbers_limit": "u32",
116 "account_token_ownership_limit": "u32",106 "account_token_ownership_limit": "u32",
deletedtests/READMEdiffbeforeafterboth

no changes

addedtests/README.mddiffbeforeafterboth

no changes

addedtests/loadtester-src/.gitignorediffbeforeafterboth

no changes

addedtests/loadtester-src/Cargo.tomldiffbeforeafterboth

no changes

addedtests/loadtester-src/lib.rsdiffbeforeafterboth

no changes

modifiedtests/package-lock.jsondiffbeforeafterboth
13 "@polkadot/api-contract": "^2.3.1",13 "@polkadot/api-contract": "^2.3.1",
14 "@polkadot/types": "^2.3.1",14 "@polkadot/types": "^2.3.1",
15 "@polkadot/util": "^3.4.1",15 "@polkadot/util": "^3.4.1",
16 "@types/bn.js": "^4.11.6",16 "bignumber.js": "^9.0.0",
17 "chai-as-promised": "^7.1.1"17 "chai-as-promised": "^7.1.1"
18 },18 },
19 "devDependencies": {19 "devDependencies": {
20 "@polkadot/dev": "^0.52.11",20 "@polkadot/dev": "^0.52.11",
21 "@polkadot/ts": "^0.3.41",21 "@polkadot/ts": "^0.3.41",
22 "@types/bn.js": "^4.11.6",
23 "@types/chai": "^4.2.12",22 "@types/chai": "^4.2.12",
24 "@types/chai-as-promised": "^7.1.3",23 "@types/chai-as-promised": "^7.1.3",
25 "@types/mocha": "^8.0.3",24 "@types/mocha": "^8.0.3",
7114 "node": "*"7113 "node": "*"
7115 }7114 }
7116 },7115 },
7116 "node_modules/bignumber.js": {
7117 "version": "9.0.1",
7118 "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
7119 "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==",
7120 "engines": {
7121 "node": "*"
7122 }
7123 },
7117 "node_modules/binary-extensions": {7124 "node_modules/binary-extensions": {
7118 "version": "1.13.1",7125 "version": "1.13.1",
7119 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",7126 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
34959 "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",34966 "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
34960 "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",34967 "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
34961 "dev": true34968 "dev": true
34969 },
34970 "bignumber.js": {
34971 "version": "9.0.1",
34972 "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
34973 "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
34962 },34974 },
34963 "binary-extensions": {34975 "binary-extensions": {
34964 "version": "1.13.1",34976 "version": "1.13.1",
modifiedtests/package.jsondiffbeforeafterboth
6 "devDependencies": {6 "devDependencies": {
7 "@polkadot/dev": "^0.52.11",7 "@polkadot/dev": "^0.52.11",
8 "@polkadot/ts": "^0.3.41",8 "@polkadot/ts": "^0.3.41",
9 "@types/bn.js": "^4.11.6",
10 "@types/chai": "^4.2.12",9 "@types/chai": "^4.2.12",
11 "@types/chai-as-promised": "^7.1.3",10 "@types/chai-as-promised": "^7.1.3",
12 "@types/mocha": "^8.0.3",11 "@types/mocha": "^8.0.3",
17 "typescript": "^3.9.7"16 "typescript": "^3.9.7"
18 },17 },
19 "scripts": {18 "scripts": {
20 "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts"19 "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts",
20 "load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts"
21 },21 },
22 "author": "",22 "author": "",
23 "license": "Apache 2.0",23 "license": "Apache 2.0",
27 "@polkadot/api-contract": "^2.3.1",27 "@polkadot/api-contract": "^2.3.1",
28 "@polkadot/types": "^2.3.1",28 "@polkadot/types": "^2.3.1",
29 "@polkadot/util": "^3.4.1",29 "@polkadot/util": "^3.4.1",
30 "@types/bn.js": "^4.11.6",30 "bignumber.js": "^9.0.0",
31 "chai-as-promised": "^7.1.1"31 "chai-as-promised": "^7.1.1"
32 },32 },
33 "standard": {33 "standard": {
modifiedtests/src/accounts.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1export const bobsPublicKey = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';6export const bobsPublicKey = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';
2export const alicesPublicKey = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';7export const alicesPublicKey = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';
38export const ferdiesPublicKey = '5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL';
9export const nullPublicKey = '5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM';
modifiedtests/src/blocks-production.test.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import usingApi from "./substrate/substrate-api";6import usingApi from "./substrate/substrate-api";
2import promisifySubstrate from "./substrate/promisify-substrate";7import promisifySubstrate from "./substrate/promisify-substrate";
3import { expect } from "chai";8import { expect } from "chai";
49
5describe('Blocks Production', () => {10describe('Blocks Production smoke test', () => {
6 it('Node produces new blocks', async () => {11 it('Node produces new blocks', async () => {
7 await usingApi(async api => {12 await usingApi(async api => {
8 const blocksPromise = promisifySubstrate(api, () => {13 const blocksPromise = promisifySubstrate(api, () => {
modifiedtests/src/config.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import process from 'process';6import process from 'process';
27
addedtests/src/confirmSponsorship.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/connection.test.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import usingApi from "./substrate/substrate-api";6import usingApi from "./substrate/substrate-api";
2import { WsProvider } from '@polkadot/api';7import { WsProvider } from '@polkadot/api';
712
8const expect = chai.expect;13const expect = chai.expect;
914
10describe('Connection', () => {15describe('Connection smoke test', () => {
11 it('Connection can be established', async () => {16 it('Connection can be established', async () => {
12 await usingApi(async api => {17 await usingApi(async api => {
13 const health = await api.rpc.system.health();18 const health = await api.rpc.system.health();
16 });21 });
1722
18 it('Cannot connect to 255.255.255.255', async () => {23 it('Cannot connect to 255.255.255.255', async () => {
24 console.log = function () {};
25 console.error = function () {};
26
19 const neverConnectProvider = new WsProvider('ws://255.255.255.255:9944');27 const neverConnectProvider = new WsProvider('ws://255.255.255.255:9944');
20 await expect((async () => {28 await expect((async () => {
23 }, { provider: neverConnectProvider });31 }, { provider: neverConnectProvider });
24 })()).to.be.eventually.rejected;32 })()).to.be.eventually.rejected;
33
34 delete console.log;
35 delete console.error;
25 });36 });
26});37});
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
1import { expect } from "chai";1import chai from "chai";
2import chaiAsPromised from 'chai-as-promised';
2import usingApi from "./substrate/substrate-api";3import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";
3import fs from "fs";4import fs from "fs";
4import { Abi, BlueprintPromise, CodePromise, ContractPromise } from "@polkadot/api-contract";5import { Abi, BlueprintPromise as Blueprint, CodePromise, ContractPromise as Contract } from "@polkadot/api-contract";
5import { IKeyringPair } from "@polkadot/types/types";6import { IKeyringPair } from "@polkadot/types/types";
6import { Keyring } from "@polkadot/api";7import { ApiPromise, Keyring } from "@polkadot/api";
7import { ApiTypes, SubmittableExtrinsic } from "@polkadot/api/types";8import { ApiTypes, SubmittableExtrinsic } from "@polkadot/api/types";
9import privateKey from "./substrate/privateKey";
10
11chai.use(chaiAsPromised);
12const expect = chai.expect;
13import { BigNumber } from 'bignumber.js';
14import { findUnusedAddress } from './util/helpers'
815
9const value = 0;16const value = 0;
10const gasLimit = 3000n * 1000000n;17const gasLimit = 3000n * 1000000n;
18const endowment = `1000000000000000`;
11const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';19const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';
1220
13function deployBlueprint(alice: IKeyringPair, code: CodePromise): Promise<BlueprintPromise> {21function deployBlueprint(alice: IKeyringPair, code: CodePromise): Promise<Blueprint> {
14 return new Promise<BlueprintPromise>(async (resolve, reject) => {22 return new Promise<Blueprint>(async (resolve, reject) => {
15 const unsub = await code23 const unsub = await code
16 .createBlueprint()24 .createBlueprint()
17 .signAndSend(alice, (result) => {25 .signAndSend(alice, (result) => {
24 });32 });
25}33}
2634
27function deployContract(alice: IKeyringPair, blueprint: BlueprintPromise) : Promise<any> {35function deployContract(alice: IKeyringPair, blueprint: Blueprint) : Promise<any> {
28 return new Promise<any>(async (resolve, reject) => {36 return new Promise<any>(async (resolve, reject) => {
29 const endowment = 1000000000000000n;37 const endowment = 1000000000000000n;
30 const initValue = true;38 const initValue = true;
40 });48 });
41}49}
50
51async function prepareDeployer(api: ApiPromise) {
52 // Find unused address
53 const deployer = await findUnusedAddress(api);
54
55 // Transfer balance to it
56 const keyring = new Keyring({ type: 'sr25519' });
57 const alice = keyring.addFromUri(`//Alice`);
58 let amount = new BigNumber(endowment);
59 amount = amount.plus(1e15);
60 const tx = api.tx.balances.transfer(deployer.address, amount.toFixed());
61 await submitTransactionAsync(alice, tx);
62
63 return deployer;
64}
65
66async function deployFlipper(api: ApiPromise): Promise<[Contract, IKeyringPair]> {
67 const metadata = JSON.parse(fs.readFileSync('./src/flipper/metadata.json').toString('utf-8'));
68 const abi = new Abi(metadata);
69
70 const deployer = await prepareDeployer(api);
71
72 const wasm = fs.readFileSync('./src/flipper/flipper.wasm');
73
74 const code = new CodePromise(api, abi, wasm);
75
76 const blueprint = await deployBlueprint(deployer, code);
77 const contract = (await deployContract(deployer, blueprint))['contract'] as Contract;
78
79 const initialGetResponse = await getFlipValue(contract, deployer);
80 expect(initialGetResponse).to.be.true;
81
82 return [contract, deployer];
83}
4284
43function runTransaction(privateKey: IKeyringPair, extrinsic: SubmittableExtrinsic<ApiTypes>) {85async function getFlipValue(contract: Contract, deployer: IKeyringPair) {
86 const result = await contract.query.get(deployer.address, value, gasLimit);
87
88 if(!result.result.isSuccess) {
89 throw `Failed to get flipper value`;
90 }
44 return new Promise<void>(async (resolve, reject) => {91 return (result.result.asSuccess.data[0] == 0x00) ? false : true;
45 extrinsic.signAndSend(privateKey, async result => {
46 if(!result.isInBlock) {
47 return;
48 }
49
50 if(result.findRecord('system', 'ExtrinsicSuccess')) {
51 resolve();
52 }
53 else {
54 reject('Failed to flip value.');
55 }
56 })
57 });
58}92}
5993
60describe('Contracts', () => {94describe('Contracts', () => {
95 it(`Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.`, async () => {
96 await usingApi(async api => {
97 const [contract, deployer] = await deployFlipper(api);
98 const initialGetResponse = await getFlipValue(contract, deployer);
99
100 const bob = privateKey("//Bob");
101 const flip = contract.exec('flip', value, gasLimit);
102 await submitTransactionAsync(bob, flip);
103
104 const afterFlipGetResponse = await getFlipValue(contract, deployer);
105 expect(afterFlipGetResponse).not.to.be.eq(initialGetResponse, 'Flipping should change value.');
106 });
107 });
108
61 it(`Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.`, async () => {109 it(`Whitelisted account can call contract.`, async () => {
62 await usingApi(async api => {110 await usingApi(async api => {
63 const keyring = new Keyring({ type: 'sr25519' });111 const bob = privateKey("//Bob");
112
64 const alice = keyring.addFromUri("//Alice");113 const [contract, deployer] = await deployFlipper(api);
65
66 const wasm = fs.readFileSync('./src/flipper/flipper.wasm');114 const consoleError = console.error;
67
68 const metadata = JSON.parse(fs.readFileSync('./src/flipper/metadata.json').toString('utf-8'));115 console.error = (...data: any[]) => {
116 };
117
69 const abi = new Abi(metadata);118 let expectedFlipValue = await getFlipValue(contract, deployer);
70119
71 const code = new CodePromise(api, abi, wasm);120 const flip = contract.exec('flip', value, gasLimit);
72121 await submitTransactionAsync(bob, flip);
122 expectedFlipValue = !expectedFlipValue;
73 const blueprint = await deployBlueprint(alice, code);123 const afterFlip = await getFlipValue(contract,deployer);
74 const contract = (await deployContract(alice, blueprint))['contract'];124 expect(afterFlip).to.be.eq(expectedFlipValue, `Anyone can call new contract.`);
75125
76 const getFlipValue = async () => {126 const deployerCanFlip = async () => {
127 expectedFlipValue = !expectedFlipValue;
77 const result = await contract.query.get(alice.address, value, gasLimit);128 const deployerFlip = contract.exec('flip', value, gasLimit);
78129 await submitTransactionAsync(deployer, deployerFlip);
79 if(!result.result.isSuccess) {
80 throw `Failed to get flipper value`;130 const aliceFlip1Response = await getFlipValue(contract, deployer);
81 }
82 return (result.result.asSuccess.data[0] == 0x00) ? false : true;131 expect(aliceFlip1Response).to.be.eq(expectedFlipValue, `Deployer always can flip.`);
83 }132 };
84133 await deployerCanFlip();
134
135 const enableWhiteListTx = api.tx.nft.toggleContractWhiteList(contract.address, true);
136 const enableResult = await submitTransactionAsync(deployer, enableWhiteListTx);
137 const flipWithEnabledWhiteList = contract.exec('flip', value, gasLimit);
138 await expect(submitTransactionExpectFailAsync(bob, flipWithEnabledWhiteList)).to.be.rejected;
85 const initialGetResponse = await getFlipValue();139 const flipValueAfterEnableWhiteList = await getFlipValue(contract, deployer);
86 expect(initialGetResponse).to.be.true;140 expect(flipValueAfterEnableWhiteList).to.be.eq(expectedFlipValue, `Enabling whitelist doesn't make it possible to call contract for everyone.`);
87141
142 await deployerCanFlip();
143
144 const addBobToWhiteListTx = api.tx.nft.addToContractWhiteList(contract.address, bob.address);
145 const addBobResult = await submitTransactionAsync(deployer, addBobToWhiteListTx);
88 const flip = contract.exec('flip', value, gasLimit);146 const flipWithWhitelistedBob = contract.exec('flip', value, gasLimit);
89 await runTransaction(alice, flip);147 await submitTransactionAsync(bob, flipWithWhitelistedBob);
90148 expectedFlipValue = !expectedFlipValue;
91 const afterFlipGetResponse = await getFlipValue();149 const flipAfterWhiteListed = await getFlipValue(contract,deployer);
92
93 expect(afterFlipGetResponse).to.be.false;150 expect(flipAfterWhiteListed).to.be.eq(expectedFlipValue, `Bob was whitelisted, now he can flip.`);
151
152 await deployerCanFlip();
153
154 const removeBobFromWhiteListTx = api.tx.nft.removeFromContractWhiteList(contract.address, bob.address);
155 const removeBobResult = await submitTransactionAsync(deployer, removeBobFromWhiteListTx);
156 const bobRemoved = contract.exec('flip', value, gasLimit);
157 await expect(submitTransactionExpectFailAsync(bob, bobRemoved)).to.be.rejected;
158 const afterBobRemoved = await getFlipValue(contract, deployer);
159 expect(afterBobRemoved).to.be.eq(expectedFlipValue, `Bob can't call contract, now when he is removeed from white list.`);
160
161 await deployerCanFlip();
162
163 const disableWhiteListTx = api.tx.nft.toggleContractWhiteList(contract.address, false);
164 const disableWhiteListResult = await submitTransactionAsync(deployer, disableWhiteListTx);
165 const whiteListDisabledFlip = contract.exec('flip', value, gasLimit);
166 await submitTransactionAsync(bob, whiteListDisabledFlip);
167 expectedFlipValue = !expectedFlipValue;
168 const afterWhiteListDisabled = await getFlipValue(contract,deployer);
169 expect(afterWhiteListDisabled).to.be.eq(expectedFlipValue, `Anyone can call contract with disabled whitelist.`);
170
171 console.error = consoleError;
94 });172 });
95 });173 });
96174
123 // const bob = new GenericAccountId(api.registry, bobsPublicKey);201 // const bob = new GenericAccountId(api.registry, bobsPublicKey);
124202
125 // const transfer = contractInstance.exec('balance_transfer', 0, 1000000000000n, [bob, new u128(api.registry, 1000000)]);203 // const transfer = contractInstance.exec('balance_transfer', 0, 1000000000000n, [bob, new u128(api.registry, 1000000)]);
126 // await runTransaction(alicesPrivateKey, transfer);204 // await submitTransactionAsync(alicesPrivateKey, transfer);
127205
128 // const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);206 // const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
129207
addedtests/src/createCollection.test.tsdiffbeforeafterboth

no changes

addedtests/src/createItem.test.tsdiffbeforeafterboth

no changes

addedtests/src/createMultipleItems.test.tsdiffbeforeafterboth

no changes

addedtests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth

no changes

addedtests/src/destroyCollection.test.tsdiffbeforeafterboth

no changes

addedtests/src/load_test_sc/loadtester.wasmdiffbeforeafterboth

binary blob — no preview

addedtests/src/load_test_sc/metadata.jsondiffbeforeafterboth

no changes

modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { ApiPromise } from "@polkadot/api";6import { ApiPromise } from "@polkadot/api";
2import { expect } from "chai";7import { expect } from "chai";
6 return api.runtimeMetadata.asLatest.modules.map(m => m.name.toString().toLowerCase());11 return api.runtimeMetadata.asLatest.modules.map(m => m.name.toString().toLowerCase());
7}12}
13
14// Pallets that must always be present
15const requiredPallets = [
16 'nft', 'balances', 'contracts', 'randomnesscollectiveflip', 'system', 'timestamp', 'transactionpayment', 'treasury', 'vesting'
17];
18
19// Pallets that depend on consensus and governance configuration
20const consensusPallets = [
21 'sudo', 'grandpa', 'aura'
22];
823
9describe('Pallet presence.', () => {24describe('Pallet presence', () => {
10 it('NFT pallet is present.', async () => {25 it('Required pallets are present', async () => {
11 await usingApi(async api => {26 await usingApi(async api => {
27 for (let i=0; i<requiredPallets.length; i++) {
12 expect(getModuleNames(api)).to.include('nft');28 expect(getModuleNames(api)).to.include(requiredPallets[i]);
29 }
13 });30 });
14 });31 });
15 it('Balances pallet is present.', async () => {32 it('Governance and consensus pallets are present', async () => {
16 await usingApi(async api => {33 await usingApi(async api => {
34 for (let i=0; i<consensusPallets.length; i++) {
17 expect(getModuleNames(api)).to.include('balances');35 expect(getModuleNames(api)).to.include(consensusPallets[i]);
36 }
18 });37 });
19 });38 });
20 it('Contracts pallet is present.', async () => {39 it('No extra pallets are included', async () => {
21 await usingApi(async api => {40 await usingApi(async api => {
22 expect(getModuleNames(api)).to.include('contracts');41 expect(getModuleNames(api).length).to.be.equal(requiredPallets.length + consensusPallets.length);
23 });42 });
24 });43 });
25});44});
addedtests/src/removeCollectionSponsor.test.tsdiffbeforeafterboth

no changes

addedtests/src/rpc.load.tsdiffbeforeafterboth

no changes

addedtests/src/setCollectionSponsor.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/substrate/get-balance.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { ApiPromise } from "@polkadot/api";6import { ApiPromise } from "@polkadot/api";
2import promisifySubstrate from "./promisify-substrate";7import promisifySubstrate from "./promisify-substrate";
modifiedtests/src/substrate/privateKey.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { Keyring } from "@polkadot/api";6import { Keyring } from "@polkadot/api";
2import { IKeyringPair } from "@polkadot/types/types";7import { IKeyringPair } from "@polkadot/types/types";
modifiedtests/src/substrate/promisify-substrate.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import ApiPromise from "@polkadot/api/promise/Api";6import ApiPromise from "@polkadot/api/promise/Api";
27
modifiedtests/src/substrate/substrate-api.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { WsProvider, ApiPromise } from "@polkadot/api";6import { WsProvider, ApiPromise } from "@polkadot/api";
7import type { AccountId, Address, ApplyExtrinsicResult, DispatchError, DispatchInfo, EventRecord, Extrinsic, ExtrinsicStatus, Hash, RuntimeDispatchInfo } from '@polkadot/types/interfaces';
8import { IKeyringPair } from "@polkadot/types/types";
9
2import config from "../config";10import config from "../config";
3import promisifySubstrate from "./promisify-substrate";11import promisifySubstrate from "./promisify-substrate";
4import { ApiOptions } from "@polkadot/api/types";12import { ApiOptions, SubmittableExtrinsic, ApiTypes } from "@polkadot/api/types";
5import rtt from "../../../runtime_types.json";13import rtt from "../../../runtime_types.json";
614
7function defaultApiOptions(): ApiOptions {15function defaultApiOptions(): ApiOptions {
25 }33 }
26}34}
35
36export function submitTransactionAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {
37 return new Promise(async function(resolve, reject) {
38 try {
39 await transaction.signAndSend(sender, ({ events = [], status }) => {
40 if (status.isReady) {
41 // nothing to do
42 // console.log(`Current tx status is Ready`);
43 } else if (status.isBroadcast) {
44 // nothing to do
45 // console.log(`Current tx status is Broadcast`);
46 } else if (status.isInBlock || status.isFinalized) {
47 resolve(events);
48 } else {
49 console.log(`Something went wrong with transaction. Status: ${status}`);
50 reject("Transaction failed");
51 }
52 });
53 } catch (e) {
54 console.log("Error: ", e);
55 reject(e);
56 }
57 });
58}
59
60export function submitTransactionExpectFailAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {
61 return new Promise(async function(resolve, reject) {
62 try {
63 await transaction.signAndSend(sender, ({ events = [], status }) => {
64 if (status.isReady) {
65 // nothing to do
66 // console.log(`Current tx status is Ready`);
67 } else if (status.isBroadcast) {
68 // nothing to do
69 // console.log(`Current tx status is Broadcast`);
70 } else if (status.isInBlock || status.isFinalized) {
71 resolve(events);
72 } else {
73 reject("Transaction failed");
74 }
75 });
76 } catch (e) {
77 reject(e);
78 }
79 });
80}
modifiedtests/src/substrate/wait-new-blocks.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { ApiPromise } from "@polkadot/api";6import { ApiPromise } from "@polkadot/api";
27
modifiedtests/src/transfer.test.tsdiffbeforeafterboth
1//
2// This file is subject to the terms and conditions defined in
3// file 'LICENSE', which is part of this source code package.
4//
5
1import { expect } from "chai";6import { expect, assert } from "chai";
2import usingApi from "./substrate/substrate-api";7import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";
3import promisifySubstrate from "./substrate/promisify-substrate";
4import waitNewBlocks from "./substrate/wait-new-blocks";
5import { alicesPublicKey, bobsPublicKey } from "./accounts";8import { alicesPublicKey, bobsPublicKey, ferdiesPublicKey } from "./accounts";
6import privateKey from "./substrate/privateKey";9import privateKey from "./substrate/privateKey";
7import getBalance from "./substrate/get-balance";10import getBalance from "./substrate/get-balance";
11import { BigNumber } from 'bignumber.js';
12import { findUnusedAddress } from './util/helpers'
813
9describe('Transfer', () => {14describe('Transfer', () => {
10 it('Balance transfers', async () => {15 it('Balance transfers', async () => {
15 20
16 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);21 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);
17
18 await promisifySubstrate(api, () => transfer.signAndSend(alicePrivateKey))();22 const result = await submitTransactionAsync(alicePrivateKey, transfer);
1923
20 await waitNewBlocks(api);
21
22 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);24 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
2325
26 });28 });
27 });29 });
30
31 it('Inability to pay fees error message is correct', async () => {
32 await usingApi(async api => {
33 // Find unused address
34 const pk = await findUnusedAddress(api);
35
36 console.log = function () {};
37 console.error = function () {};
38
39 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);
40 const badTransaction = async function () {
41 const result = await submitTransactionAsync(pk, badTransfer);
42 };
43 await expect(badTransaction()).to.be.rejectedWith("Inability to pay some fees");
44
45 delete console.log;
46 delete console.error;
47 });
48 });
28});49});
2950
addedtests/src/util/helpers.tsdiffbeforeafterboth

no changes

addedtests/src/util/util.tsdiffbeforeafterboth

no changes