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

difftreelog

Merge remote-tracking branch 'origin/develop' into feature/NFTPAR-241

kpozdnikin2021-02-02parents: #f6d75fb #037be4d.patch.diff
in: master
# Conflicts:
#	tests/package-lock.json
#	tests/src/substrate/substrate-api.ts

57 files changed

modifiedCargo.lockdiffbeforeafterboth
1212
13[[package]]13[[package]]
14name = "addr2line"14name = "addr2line"
15version = "0.14.0"15version = "0.14.1"
16source = "registry+https://github.com/rust-lang/crates.io-index"16source = "registry+https://github.com/rust-lang/crates.io-index"
17checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423"17checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7"
18dependencies = [18dependencies = [
19 "gimli 0.23.0",19 "gimli 0.23.0",
20]20]
65checksum = "63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6"65checksum = "63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6"
66dependencies = [66dependencies = [
67 "block-cipher",67 "block-cipher",
68 "byteorder 1.3.4",68 "byteorder",
69 "opaque-debug 0.3.0",69 "opaque-debug 0.3.0",
70]70]
7171
79 "opaque-debug 0.3.0",79 "opaque-debug 0.3.0",
80]80]
81
82[[package]]
83name = "ahash"
84version = "0.2.19"
85source = "registry+https://github.com/rust-lang/crates.io-index"
86checksum = "29661b60bec623f0586702976ff4d0c9942dcb6723161c2df0eea78455cfedfb"
87dependencies = [
88 "const-random",
89]
90
91[[package]]
92name = "ahash"
93version = "0.3.8"
94source = "registry+https://github.com/rust-lang/crates.io-index"
95checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217"
9681
97[[package]]82[[package]]
98name = "ahash"83name = "ahash"
109 "memchr",94 "memchr",
110]95]
111
112[[package]]
113name = "alga"
114version = "0.9.3"
115source = "registry+https://github.com/rust-lang/crates.io-index"
116checksum = "4f823d037a7ec6ea2197046bafd4ae150e6bc36f9ca347404f46a46823fa84f2"
117dependencies = [
118 "approx",
119 "num-complex",
120 "num-traits",
121]
12296
123[[package]]97[[package]]
124name = "ansi_term"98name = "ansi_term"
140114
141[[package]]115[[package]]
142name = "anyhow"116name = "anyhow"
143version = "1.0.35"117version = "1.0.38"
144source = "registry+https://github.com/rust-lang/crates.io-index"118source = "registry+https://github.com/rust-lang/crates.io-index"
145checksum = "2c0df63cb2955042487fad3aefd2c6e3ae7389ac5dc1beb28921de0b69f779d4"119checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1"
146120
147[[package]]121[[package]]
148name = "approx"122name = "approx"
153 "num-traits",127 "num-traits",
154]128]
155
156[[package]]
157name = "arc-swap"
158version = "0.4.8"
159source = "registry+https://github.com/rust-lang/crates.io-index"
160checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8"
161129
162[[package]]130[[package]]
163name = "arrayref"131name = "arrayref"
220 "concurrent-queue",188 "concurrent-queue",
221 "fastrand",189 "fastrand",
222 "futures-lite",190 "futures-lite",
223 "once_cell 1.5.2",191 "once_cell",
224 "vec-arena",192 "vec-arena",
225]193]
226194
227[[package]]195[[package]]
228name = "async-global-executor"196name = "async-global-executor"
229version = "1.4.3"197version = "2.0.2"
230source = "registry+https://github.com/rust-lang/crates.io-index"198source = "registry+https://github.com/rust-lang/crates.io-index"
231checksum = "73079b49cd26b8fd5a15f68fc7707fc78698dc2a3d61430f2a7a9430230dfa04"199checksum = "9586ec52317f36de58453159d48351bc244bc24ced3effc1fce22f3d48664af6"
232dependencies = [200dependencies = [
201 "async-channel",
233 "async-executor",202 "async-executor",
234 "async-io",203 "async-io",
204 "async-mutex",
205 "blocking",
235 "futures-lite",206 "futures-lite",
236 "num_cpus",207 "num_cpus",
237 "once_cell 1.5.2",208 "once_cell",
238]209]
239210
240[[package]]211[[package]]
249 "libc",220 "libc",
250 "log",221 "log",
251 "nb-connect",222 "nb-connect",
252 "once_cell 1.5.2",223 "once_cell",
253 "parking",224 "parking",
254 "polling",225 "polling",
255 "vec-arena",226 "vec-arena",
256 "waker-fn",227 "waker-fn",
257 "winapi 0.3.9",228 "winapi 0.3.9",
258]229]
230
231[[package]]
232name = "async-lock"
233version = "2.3.0"
234source = "registry+https://github.com/rust-lang/crates.io-index"
235checksum = "1996609732bde4a9988bc42125f55f2af5f3c36370e27c778d5191a4a1b63bfb"
236dependencies = [
237 "event-listener",
238]
259239
260[[package]]240[[package]]
261name = "async-mutex"241name = "async-mutex"
277 "cfg-if 0.1.10",257 "cfg-if 0.1.10",
278 "event-listener",258 "event-listener",
279 "futures-lite",259 "futures-lite",
280 "once_cell 1.5.2",260 "once_cell",
281 "signal-hook",261 "signal-hook",
282 "winapi 0.3.9",262 "winapi 0.3.9",
283]263]
284264
285[[package]]265[[package]]
286name = "async-std"266name = "async-std"
287version = "1.8.0"267version = "1.9.0"
288source = "registry+https://github.com/rust-lang/crates.io-index"268source = "registry+https://github.com/rust-lang/crates.io-index"
289checksum = "8f9f84f1280a2b436a2c77c2582602732b6c2f4321d5494d6e799e6c367859a8"269checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341"
290dependencies = [270dependencies = [
291 "async-channel",271 "async-channel",
292 "async-global-executor",272 "async-global-executor",
293 "async-io",273 "async-io",
294 "async-mutex",274 "async-lock",
295 "async-process",275 "async-process",
296 "blocking",
297 "crossbeam-utils 0.8.1",276 "crossbeam-utils 0.8.1",
298 "futures-channel",277 "futures-channel",
299 "futures-core",278 "futures-core",
304 "log",283 "log",
305 "memchr",284 "memchr",
306 "num_cpus",285 "num_cpus",
307 "once_cell 1.5.2",286 "once_cell",
308 "pin-project-lite 0.2.0",287 "pin-project-lite 0.2.4",
309 "pin-utils",288 "pin-utils",
310 "slab",289 "slab",
311 "wasm-bindgen-futures",290 "wasm-bindgen-futures",
317source = "registry+https://github.com/rust-lang/crates.io-index"296source = "registry+https://github.com/rust-lang/crates.io-index"
318checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0"297checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0"
319
320[[package]]
321name = "async-tls"
322version = "0.8.0"
323source = "registry+https://github.com/rust-lang/crates.io-index"
324checksum = "df097e3f506bec0e1a24f06bb3c962c228f36671de841ff579cb99f371772634"
325dependencies = [
326 "futures 0.3.8",
327 "rustls",
328 "webpki",
329 "webpki-roots 0.19.0",
330]
331298
332[[package]]299[[package]]
333name = "async-trait"300name = "async-trait"
340 "syn",307 "syn",
341]308]
309
310[[package]]
311name = "asynchronous-codec"
312version = "0.5.0"
313source = "registry+https://github.com/rust-lang/crates.io-index"
314checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6"
315dependencies = [
316 "bytes 1.0.1",
317 "futures-sink",
318 "futures-util",
319 "memchr",
320 "pin-project-lite 0.2.4",
321]
342322
343[[package]]323[[package]]
344name = "atomic"324name = "atomic"
345version = "0.4.6"325version = "0.5.0"
346source = "registry+https://github.com/rust-lang/crates.io-index"326source = "registry+https://github.com/rust-lang/crates.io-index"
347checksum = "64f46ca51dca4837f1520754d1c8c36636356b81553d928dc9c177025369a06e"327checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281"
328dependencies = [
329 "autocfg",
330]
348331
349[[package]]332[[package]]
350name = "atomic-waker"333name = "atomic-waker"
363 "winapi 0.3.9",346 "winapi 0.3.9",
364]347]
365
366[[package]]
367name = "autocfg"
368version = "0.1.7"
369source = "registry+https://github.com/rust-lang/crates.io-index"
370checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
371348
372[[package]]349[[package]]
373name = "autocfg"350name = "autocfg"
377354
378[[package]]355[[package]]
379name = "backtrace"356name = "backtrace"
380version = "0.3.55"357version = "0.3.56"
381source = "registry+https://github.com/rust-lang/crates.io-index"358source = "registry+https://github.com/rust-lang/crates.io-index"
382checksum = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598"359checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc"
383dependencies = [360dependencies = [
384 "addr2line",361 "addr2line",
385 "cfg-if 1.0.0",362 "cfg-if 1.0.0",
386 "libc",363 "libc",
387 "miniz_oxide",364 "miniz_oxide",
388 "object 0.22.0",365 "object 0.23.0",
389 "rustc-demangle",366 "rustc-demangle",
390]367]
391368
395source = "registry+https://github.com/rust-lang/crates.io-index"372source = "registry+https://github.com/rust-lang/crates.io-index"
396checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83"373checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83"
397
398[[package]]
399name = "base64"
400version = "0.11.0"
401source = "registry+https://github.com/rust-lang/crates.io-index"
402checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
403374
404[[package]]375[[package]]
405name = "base64"376name = "base64"
419source = "registry+https://github.com/rust-lang/crates.io-index"390source = "registry+https://github.com/rust-lang/crates.io-index"
420checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d"391checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d"
421dependencies = [392dependencies = [
422 "byteorder 1.3.4",393 "byteorder",
423 "serde",394 "serde",
424]395]
425396
444 "regex",415 "regex",
445 "rustc-hash",416 "rustc-hash",
446 "shlex",417 "shlex",
447 "which",418 "which 3.1.1",
448]419]
449
450[[package]]
451name = "bip39"
452version = "0.6.0-beta.1"
453source = "registry+https://github.com/rust-lang/crates.io-index"
454checksum = "7059804e226b3ac116519a252d7f5fb985a5ccc0e93255e036a5f7e7283323f4"
455dependencies = [
456 "failure",
457 "hashbrown 0.1.8",
458 "hmac",
459 "once_cell 0.1.8",
460 "pbkdf2",
461 "rand 0.6.5",
462 "sha2 0.8.2",
463]
464420
465[[package]]421[[package]]
466name = "bitflags"422name = "bitflags"
467version = "1.2.1"423version = "1.2.1"
468source = "registry+https://github.com/rust-lang/crates.io-index"424source = "registry+https://github.com/rust-lang/crates.io-index"
469checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"425checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
470
471[[package]]
472name = "bitmask"
473version = "0.5.0"
474source = "registry+https://github.com/rust-lang/crates.io-index"
475checksum = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead"
476426
477[[package]]427[[package]]
478name = "bitvec"428name = "bitvec"
516 "constant_time_eq",466 "constant_time_eq",
517]467]
518
519[[package]]
520name = "blake2s_simd"
521version = "0.5.11"
522source = "registry+https://github.com/rust-lang/crates.io-index"
523checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2"
524dependencies = [
525 "arrayref",
526 "arrayvec 0.5.2",
527 "constant_time_eq",
528]
529468
530[[package]]469[[package]]
531name = "block-buffer"470name = "block-buffer"
535dependencies = [474dependencies = [
536 "block-padding 0.1.5",475 "block-padding 0.1.5",
537 "byte-tools",476 "byte-tools",
538 "byteorder 1.3.4",477 "byteorder",
539 "generic-array 0.12.3",478 "generic-array 0.12.3",
540]479]
541480
584 "atomic-waker",523 "atomic-waker",
585 "fastrand",524 "fastrand",
586 "futures-lite",525 "futures-lite",
587 "once_cell 1.5.2",526 "once_cell",
588]527]
589
590[[package]]
591name = "bs58"
592version = "0.3.1"
593source = "registry+https://github.com/rust-lang/crates.io-index"
594checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb"
595528
596[[package]]529[[package]]
597name = "bs58"530name = "bs58"
610543
611[[package]]544[[package]]
612name = "bumpalo"545name = "bumpalo"
613version = "3.4.0"546version = "3.5.0"
614source = "registry+https://github.com/rust-lang/crates.io-index"547source = "registry+https://github.com/rust-lang/crates.io-index"
615checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820"548checksum = "f07aa6688c702439a1be0307b6a94dffe1168569e45b9500c1372bc580740d59"
616549
617[[package]]550[[package]]
618name = "byte-slice-cast"551name = "byte-slice-cast"
626source = "registry+https://github.com/rust-lang/crates.io-index"559source = "registry+https://github.com/rust-lang/crates.io-index"
627checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"560checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
628
629[[package]]
630name = "byteorder"
631version = "0.5.3"
632source = "registry+https://github.com/rust-lang/crates.io-index"
633checksum = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855"
634561
635[[package]]562[[package]]
636name = "byteorder"563name = "byteorder"
637version = "1.3.4"564version = "1.4.2"
638source = "registry+https://github.com/rust-lang/crates.io-index"565source = "registry+https://github.com/rust-lang/crates.io-index"
639checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"566checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b"
640567
641[[package]]568[[package]]
642name = "bytes"569name = "bytes"
643version = "0.4.12"570version = "0.4.12"
644source = "registry+https://github.com/rust-lang/crates.io-index"571source = "registry+https://github.com/rust-lang/crates.io-index"
645checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"572checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
646dependencies = [573dependencies = [
647 "byteorder 1.3.4",574 "byteorder",
648 "either",575 "either",
649 "iovec",576 "iovec",
650]577]
656checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"583checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
657584
658[[package]]585[[package]]
659name = "c_linked_list"586name = "bytes"
660version = "1.1.1"587version = "1.0.1"
661source = "registry+https://github.com/rust-lang/crates.io-index"588source = "registry+https://github.com/rust-lang/crates.io-index"
662checksum = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b"589checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"
663590
664[[package]]591[[package]]
665name = "cache-padded"592name = "cache-padded"
733 "winapi 0.3.9",660 "winapi 0.3.9",
734]661]
662
663[[package]]
664name = "cipher"
665version = "0.2.5"
666source = "registry+https://github.com/rust-lang/crates.io-index"
667checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801"
668dependencies = [
669 "generic-array 0.14.4",
670]
735671
736[[package]]672[[package]]
737name = "clang-sys"673name = "clang-sys"
777 "cache-padded",713 "cache-padded",
778]714]
779
780[[package]]
781name = "const-random"
782version = "0.1.13"
783source = "registry+https://github.com/rust-lang/crates.io-index"
784checksum = "f590d95d011aa80b063ffe3253422ed5aa462af4e9867d43ce8337562bac77c4"
785dependencies = [
786 "const-random-macro",
787 "proc-macro-hack",
788]
789
790[[package]]
791name = "const-random-macro"
792version = "0.1.13"
793source = "registry+https://github.com/rust-lang/crates.io-index"
794checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40"
795dependencies = [
796 "getrandom 0.2.0",
797 "lazy_static",
798 "proc-macro-hack",
799 "tiny-keccak",
800]
801715
802[[package]]716[[package]]
803name = "const_fn"717name = "const_fn"
804version = "0.4.4"718version = "0.4.5"
805source = "registry+https://github.com/rust-lang/crates.io-index"719source = "registry+https://github.com/rust-lang/crates.io-index"
806checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826"720checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6"
807721
808[[package]]722[[package]]
809name = "constant_time_eq"723name = "constant_time_eq"
854source = "registry+https://github.com/rust-lang/crates.io-index"768source = "registry+https://github.com/rust-lang/crates.io-index"
855checksum = "9d9badfe36176cb653506091693bc2bb1970c9bddfcd6ec7fac404f7eaec6f38"769checksum = "9d9badfe36176cb653506091693bc2bb1970c9bddfcd6ec7fac404f7eaec6f38"
856dependencies = [770dependencies = [
857 "byteorder 1.3.4",771 "byteorder",
858 "cranelift-bforest",772 "cranelift-bforest",
859 "cranelift-codegen-meta",773 "cranelift-codegen-meta",
860 "cranelift-codegen-shared",774 "cranelift-codegen-shared",
863 "log",777 "log",
864 "regalloc",778 "regalloc",
865 "serde",779 "serde",
866 "smallvec 1.5.1",780 "smallvec 1.6.1",
867 "target-lexicon",781 "target-lexicon",
868 "thiserror",782 "thiserror",
869]783]
901dependencies = [815dependencies = [
902 "cranelift-codegen",816 "cranelift-codegen",
903 "log",817 "log",
904 "smallvec 1.5.1",818 "smallvec 1.6.1",
905 "target-lexicon",819 "target-lexicon",
906]820]
907821
978source = "registry+https://github.com/rust-lang/crates.io-index"892source = "registry+https://github.com/rust-lang/crates.io-index"
979checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"893checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
980dependencies = [894dependencies = [
981 "autocfg 1.0.1",895 "autocfg",
982 "cfg-if 0.1.10",896 "cfg-if 0.1.10",
983 "crossbeam-utils 0.7.2",897 "crossbeam-utils 0.7.2",
984 "lazy_static",898 "lazy_static",
985 "maybe-uninit",899 "maybe-uninit",
986 "memoffset 0.5.6",900 "memoffset 0.5.6",
987 "scopeguard 1.1.0",901 "scopeguard",
988]902]
989903
990[[package]]904[[package]]
998 "crossbeam-utils 0.8.1",912 "crossbeam-utils 0.8.1",
999 "lazy_static",913 "lazy_static",
1000 "memoffset 0.6.1",914 "memoffset 0.6.1",
1001 "scopeguard 1.1.0",915 "scopeguard",
1002]916]
1003917
1004[[package]]918[[package]]
1018source = "registry+https://github.com/rust-lang/crates.io-index"932source = "registry+https://github.com/rust-lang/crates.io-index"
1019checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"933checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
1020dependencies = [934dependencies = [
1021 "autocfg 1.0.1",935 "autocfg",
1022 "cfg-if 0.1.10",936 "cfg-if 0.1.10",
1023 "lazy_static",937 "lazy_static",
1024]938]
1029source = "registry+https://github.com/rust-lang/crates.io-index"943source = "registry+https://github.com/rust-lang/crates.io-index"
1030checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d"944checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d"
1031dependencies = [945dependencies = [
1032 "autocfg 1.0.1",946 "autocfg",
1033 "cfg-if 1.0.0",947 "cfg-if 1.0.0",
1034 "lazy_static",948 "lazy_static",
1035]949]
1069 "sct",983 "sct",
1070]984]
985
986[[package]]
987name = "ctor"
988version = "0.1.18"
989source = "registry+https://github.com/rust-lang/crates.io-index"
990checksum = "10bcb9d7dcbf7002aaffbb53eac22906b64cdcc127971dcc387d8eb7c95d5560"
991dependencies = [
992 "quote",
993 "syn",
994]
1071995
1072[[package]]996[[package]]
1073name = "cuckoofilter"997name = "cuckoofilter"
1074version = "0.3.2"998version = "0.5.0"
1075source = "registry+https://github.com/rust-lang/crates.io-index"999source = "registry+https://github.com/rust-lang/crates.io-index"
1076checksum = "8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1f"1000checksum = "b810a8449931679f64cd7eef1bbd0fa315801b6d5d9cdc1ace2804d6529eee18"
1077dependencies = [1001dependencies = [
1078 "byteorder 0.5.3",1002 "byteorder",
1003 "fnv",
1079 "rand 0.3.23",1004 "rand 0.7.3",
1080]1005]
10811006
1082[[package]]1007[[package]]
1083name = "curve25519-dalek"1008name = "curve25519-dalek"
1084version = "2.1.0"1009version = "2.1.2"
1085source = "registry+https://github.com/rust-lang/crates.io-index"1010source = "registry+https://github.com/rust-lang/crates.io-index"
1086checksum = "5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5"1011checksum = "434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8"
1087dependencies = [1012dependencies = [
1088 "byteorder 1.3.4",1013 "byteorder",
1089 "digest 0.8.1",1014 "digest 0.8.1",
1090 "rand_core 0.5.1",1015 "rand_core 0.5.1",
1091 "subtle 2.4.0",1016 "subtle 2.4.0",
10941019
1095[[package]]1020[[package]]
1096name = "curve25519-dalek"1021name = "curve25519-dalek"
1097version = "3.0.0"1022version = "3.0.2"
1098source = "registry+https://github.com/rust-lang/crates.io-index"1023source = "registry+https://github.com/rust-lang/crates.io-index"
1099checksum = "c8492de420e9e60bc9a1d66e2dbb91825390b738a388606600663fc529b4b307"1024checksum = "f627126b946c25a4638eec0ea634fc52506dea98db118aae985118ce7c3d723f"
1100dependencies = [1025dependencies = [
1101 "byteorder 1.3.4",1026 "byteorder",
1102 "digest 0.9.0",1027 "digest 0.9.0",
1103 "rand_core 0.5.1",1028 "rand_core 0.5.1",
1104 "subtle 2.4.0",1029 "subtle 2.4.0",
1150 "dirs-sys",1075 "dirs-sys",
1151]1076]
1077
1078[[package]]
1079name = "directories"
1080version = "3.0.1"
1081source = "registry+https://github.com/rust-lang/crates.io-index"
1082checksum = "f8fed639d60b58d0f53498ab13d26f621fd77569cc6edb031f4cc36a2ad9da0f"
1083dependencies = [
1084 "dirs-sys",
1085]
11521086
1153[[package]]1087[[package]]
1154name = "dirs-sys"1088name = "dirs-sys"
1167source = "registry+https://github.com/rust-lang/crates.io-index"1101source = "registry+https://github.com/rust-lang/crates.io-index"
1168checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea"1102checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea"
1169dependencies = [1103dependencies = [
1170 "byteorder 1.3.4",1104 "byteorder",
1171 "quick-error",1105 "quick-error 1.2.3",
1172]1106]
11731107
1174[[package]]1108[[package]]
11941128
1195[[package]]1129[[package]]
1196name = "dyn-clone"1130name = "dyn-clone"
1197version = "1.0.3"1131version = "1.0.4"
1198source = "registry+https://github.com/rust-lang/crates.io-index"1132source = "registry+https://github.com/rust-lang/crates.io-index"
1199checksum = "d55796afa1b20c2945ca8eabfc421839f2b766619209f1ede813cf2484f31804"1133checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf"
12001134
1201[[package]]1135[[package]]
1202name = "ed25519"1136name = "ed25519"
1213source = "registry+https://github.com/rust-lang/crates.io-index"1147source = "registry+https://github.com/rust-lang/crates.io-index"
1214checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"1148checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
1215dependencies = [1149dependencies = [
1216 "curve25519-dalek 3.0.0",1150 "curve25519-dalek 3.0.2",
1217 "ed25519",1151 "ed25519",
1218 "rand 0.7.3",1152 "rand 0.7.3",
1219 "serde",1153 "serde",
12681202
1269[[package]]1203[[package]]
1270name = "erased-serde"1204name = "erased-serde"
1271version = "0.3.12"1205version = "0.3.13"
1272source = "registry+https://github.com/rust-lang/crates.io-index"1206source = "registry+https://github.com/rust-lang/crates.io-index"
1273checksum = "6ca8b296792113e1500fd935ae487be6e00ce318952a6880555554824d6ebf38"1207checksum = "0465971a8cc1fa2455c8465aaa377131e1f1cf4983280f474a13e68793aa770c"
1274dependencies = [1208dependencies = [
1275 "serde",1209 "serde",
1276]1210]
1308source = "registry+https://github.com/rust-lang/crates.io-index"1242source = "registry+https://github.com/rust-lang/crates.io-index"
1309checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"1243checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5"
1310dependencies = [1244dependencies = [
1311 "futures 0.3.8",1245 "futures 0.3.12",
1312]1246]
13131247
1314[[package]]1248[[package]]
1380checksum = "8feb87a63249689640ac9c011742c33139204e3c134293d3054022276869133b"1314checksum = "8feb87a63249689640ac9c011742c33139204e3c134293d3054022276869133b"
1381dependencies = [1315dependencies = [
1382 "either",1316 "either",
1383 "futures 0.3.8",1317 "futures 0.3.12",
1384 "futures-timer 2.0.2",1318 "futures-timer 2.0.2",
1385 "log",1319 "log",
1386 "num-traits",1320 "num-traits",
13901324
1391[[package]]1325[[package]]
1392name = "fixed-hash"1326name = "fixed-hash"
1393version = "0.6.1"1327version = "0.7.0"
1394source = "registry+https://github.com/rust-lang/crates.io-index"1328source = "registry+https://github.com/rust-lang/crates.io-index"
1395checksum = "11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759c"1329checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c"
1396dependencies = [1330dependencies = [
1397 "byteorder 1.3.4",1331 "byteorder",
1398 "rand 0.7.3",1332 "rand 0.8.3",
1399 "rustc-hex",1333 "rustc-hex",
1400 "static_assertions",1334 "static_assertions",
1401]1335]
14431377
1444[[package]]1378[[package]]
1445name = "fork-tree"1379name = "fork-tree"
1446version = "2.0.0"1380version = "2.0.1"
1447source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1381source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1448dependencies = [1382dependencies = [
1449 "parity-scale-codec",1383 "parity-scale-codec",
1450]1384]
14611395
1462[[package]]1396[[package]]
1463name = "frame-benchmarking"1397name = "frame-benchmarking"
1464version = "2.0.0"1398version = "2.0.1"
1465source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1399source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1466dependencies = [1400dependencies = [
1467 "frame-support",1401 "frame-support",
1468 "frame-system",1402 "frame-system",
14791413
1480[[package]]1414[[package]]
1481name = "frame-benchmarking-cli"1415name = "frame-benchmarking-cli"
1482version = "2.0.0"1416version = "2.0.1"
1483source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1417source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1484dependencies = [1418dependencies = [
1419 "Inflector",
1420 "chrono",
1485 "frame-benchmarking",1421 "frame-benchmarking",
1422 "handlebars",
1486 "parity-scale-codec",1423 "parity-scale-codec",
1487 "sc-cli",1424 "sc-cli",
1488 "sc-client-db",1425 "sc-client-db",
1489 "sc-executor",1426 "sc-executor",
1490 "sc-service",1427 "sc-service",
1428 "serde",
1491 "sp-core",1429 "sp-core",
1492 "sp-externalities",1430 "sp-externalities",
1431 "sp-keystore",
1493 "sp-runtime",1432 "sp-runtime",
1494 "sp-state-machine",1433 "sp-state-machine",
1495 "structopt",1434 "structopt",
1496]1435]
14971436
1498[[package]]1437[[package]]
1499name = "frame-executive"1438name = "frame-executive"
1500version = "2.0.0"1439version = "2.0.1"
1501source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1440source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1502dependencies = [1441dependencies = [
1503 "frame-support",1442 "frame-support",
1504 "frame-system",1443 "frame-system",
15131452
1514[[package]]1453[[package]]
1515name = "frame-metadata"1454name = "frame-metadata"
1516version = "12.0.0"1455version = "12.0.1"
1517source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1456source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1518dependencies = [1457dependencies = [
1519 "parity-scale-codec",1458 "parity-scale-codec",
1520 "serde",1459 "serde",
15241463
1525[[package]]1464[[package]]
1526name = "frame-support"1465name = "frame-support"
1527version = "2.0.0"1466version = "2.0.1"
1528source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1467source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1529dependencies = [1468dependencies = [
1530 "bitmask",1469 "bitflags",
1531 "frame-metadata",1470 "frame-metadata",
1532 "frame-support-procedural",1471 "frame-support-procedural",
1533 "impl-trait-for-tuples",1472 "impl-trait-for-tuples 0.2.0",
1534 "log",1473 "log",
1535 "once_cell 1.5.2",1474 "once_cell",
1536 "parity-scale-codec",1475 "parity-scale-codec",
1537 "paste",1476 "paste",
1538 "serde",1477 "serde",
1539 "smallvec 1.5.1",1478 "smallvec 1.6.1",
1540 "sp-arithmetic",1479 "sp-arithmetic",
1541 "sp-core",1480 "sp-core",
1542 "sp-inherents",1481 "sp-inherents",
15491488
1550[[package]]1489[[package]]
1551name = "frame-support-procedural"1490name = "frame-support-procedural"
1552version = "2.0.0"1491version = "2.0.1"
1553source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1492source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1554dependencies = [1493dependencies = [
1494 "Inflector",
1555 "frame-support-procedural-tools",1495 "frame-support-procedural-tools",
1556 "proc-macro2",1496 "proc-macro2",
1557 "quote",1497 "quote",
15601500
1561[[package]]1501[[package]]
1562name = "frame-support-procedural-tools"1502name = "frame-support-procedural-tools"
1563version = "2.0.0"1503version = "2.0.1"
1564source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1504source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1565dependencies = [1505dependencies = [
1566 "frame-support-procedural-tools-derive",1506 "frame-support-procedural-tools-derive",
1567 "proc-macro-crate",1507 "proc-macro-crate",
15721512
1573[[package]]1513[[package]]
1574name = "frame-support-procedural-tools-derive"1514name = "frame-support-procedural-tools-derive"
1575version = "2.0.0"1515version = "2.0.1"
1576source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1516source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1577dependencies = [1517dependencies = [
1578 "proc-macro2",1518 "proc-macro2",
1579 "quote",1519 "quote",
15821522
1583[[package]]1523[[package]]
1584name = "frame-system"1524name = "frame-system"
1585version = "2.0.0"1525version = "2.0.1"
1586source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1526source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1587dependencies = [1527dependencies = [
1588 "frame-support",1528 "frame-support",
1589 "impl-trait-for-tuples",1529 "impl-trait-for-tuples 0.2.0",
1590 "parity-scale-codec",1530 "parity-scale-codec",
1591 "serde",1531 "serde",
1592 "sp-core",1532 "sp-core",
15981538
1599[[package]]1539[[package]]
1600name = "frame-system-benchmarking"1540name = "frame-system-benchmarking"
1601version = "2.0.0"1541version = "2.0.1"
1602source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1542source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1603dependencies = [1543dependencies = [
1604 "frame-benchmarking",1544 "frame-benchmarking",
1605 "frame-support",1545 "frame-support",
16121552
1613[[package]]1553[[package]]
1614name = "frame-system-rpc-runtime-api"1554name = "frame-system-rpc-runtime-api"
1615version = "2.0.0"1555version = "2.0.1"
1616source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"1556source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
1617dependencies = [1557dependencies = [
1618 "parity-scale-codec",1558 "parity-scale-codec",
1619 "sp-api",1559 "sp-api",
16611601
1662[[package]]1602[[package]]
1663name = "futures"1603name = "futures"
1664version = "0.3.8"1604version = "0.3.12"
1665source = "registry+https://github.com/rust-lang/crates.io-index"1605source = "registry+https://github.com/rust-lang/crates.io-index"
1666checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0"1606checksum = "da9052a1a50244d8d5aa9bf55cbc2fb6f357c86cc52e46c62ed390a7180cf150"
1667dependencies = [1607dependencies = [
1668 "futures-channel",1608 "futures-channel",
1669 "futures-core",1609 "futures-core",
16761616
1677[[package]]1617[[package]]
1678name = "futures-channel"1618name = "futures-channel"
1679version = "0.3.8"1619version = "0.3.12"
1680source = "registry+https://github.com/rust-lang/crates.io-index"1620source = "registry+https://github.com/rust-lang/crates.io-index"
1681checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64"1621checksum = "f2d31b7ec7efab6eefc7c57233bb10b847986139d88cc2f5a02a1ae6871a1846"
1682dependencies = [1622dependencies = [
1683 "futures-core",1623 "futures-core",
1684 "futures-sink",1624 "futures-sink",
1685]1625]
1686
1687[[package]]
1688name = "futures-channel-preview"
1689version = "0.3.0-alpha.19"
1690source = "registry+https://github.com/rust-lang/crates.io-index"
1691checksum = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a"
1692dependencies = [
1693 "futures-core-preview",
1694]
16951626
1696[[package]]1627[[package]]
1697name = "futures-core"1628name = "futures-core"
1698version = "0.3.8"1629version = "0.3.12"
1699source = "registry+https://github.com/rust-lang/crates.io-index"1630source = "registry+https://github.com/rust-lang/crates.io-index"
1700checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748"1631checksum = "79e5145dde8da7d1b3892dad07a9c98fc04bc39892b1ecc9692cf53e2b780a65"
1701
1702[[package]]
1703name = "futures-core-preview"
1704version = "0.3.0-alpha.19"
1705source = "registry+https://github.com/rust-lang/crates.io-index"
1706checksum = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a"
17071632
1708[[package]]1633[[package]]
1709name = "futures-cpupool"1634name = "futures-cpupool"
1722checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9"1647checksum = "fdcef58a173af8148b182684c9f2d5250875adbcaff7b5794073894f9d8634a9"
1723dependencies = [1648dependencies = [
1724 "futures 0.1.30",1649 "futures 0.1.30",
1725 "futures 0.3.8",1650 "futures 0.3.12",
1726 "lazy_static",1651 "lazy_static",
1727 "log",1652 "log",
1728 "parking_lot 0.9.0",1653 "parking_lot 0.9.0",
17331658
1734[[package]]1659[[package]]
1735name = "futures-executor"1660name = "futures-executor"
1736version = "0.3.8"1661version = "0.3.12"
1737source = "registry+https://github.com/rust-lang/crates.io-index"1662source = "registry+https://github.com/rust-lang/crates.io-index"
1738checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65"1663checksum = "e9e59fdc009a4b3096bf94f740a0f2424c082521f20a9b08c5c07c48d90fd9b9"
1739dependencies = [1664dependencies = [
1740 "futures-core",1665 "futures-core",
1741 "futures-task",1666 "futures-task",
17451670
1746[[package]]1671[[package]]
1747name = "futures-io"1672name = "futures-io"
1748version = "0.3.8"1673version = "0.3.12"
1749source = "registry+https://github.com/rust-lang/crates.io-index"1674source = "registry+https://github.com/rust-lang/crates.io-index"
1750checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb"1675checksum = "28be053525281ad8259d47e4de5de657b25e7bac113458555bb4b70bc6870500"
17511676
1752[[package]]1677[[package]]
1753name = "futures-lite"1678name = "futures-lite"
1754version = "1.11.2"1679version = "1.11.3"
1755source = "registry+https://github.com/rust-lang/crates.io-index"1680source = "registry+https://github.com/rust-lang/crates.io-index"
1756checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658"1681checksum = "b4481d0cd0de1d204a4fa55e7d45f07b1d958abcb06714b3446438e2eff695fb"
1757dependencies = [1682dependencies = [
1758 "fastrand",1683 "fastrand",
1759 "futures-core",1684 "futures-core",
1760 "futures-io",1685 "futures-io",
1761 "memchr",1686 "memchr",
1762 "parking",1687 "parking",
1763 "pin-project-lite 0.1.11",1688 "pin-project-lite 0.2.4",
1764 "waker-fn",1689 "waker-fn",
1765]1690]
17661691
1767[[package]]1692[[package]]
1768name = "futures-macro"1693name = "futures-macro"
1769version = "0.3.8"1694version = "0.3.12"
1770source = "registry+https://github.com/rust-lang/crates.io-index"1695source = "registry+https://github.com/rust-lang/crates.io-index"
1771checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556"1696checksum = "c287d25add322d9f9abdcdc5927ca398917996600182178774032e9f8258fedd"
1772dependencies = [1697dependencies = [
1773 "proc-macro-hack",1698 "proc-macro-hack",
1774 "proc-macro2",1699 "proc-macro2",
1775 "quote",1700 "quote",
1776 "syn",1701 "syn",
1777]1702]
1703
1704[[package]]
1705name = "futures-rustls"
1706version = "0.21.1"
1707source = "registry+https://github.com/rust-lang/crates.io-index"
1708checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b"
1709dependencies = [
1710 "futures-io",
1711 "rustls 0.19.0",
1712 "webpki",
1713]
17781714
1779[[package]]1715[[package]]
1780name = "futures-sink"1716name = "futures-sink"
1781version = "0.3.8"1717version = "0.3.12"
1782source = "registry+https://github.com/rust-lang/crates.io-index"1718source = "registry+https://github.com/rust-lang/crates.io-index"
1783checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d"1719checksum = "caf5c69029bda2e743fddd0582d1083951d65cc9539aebf8812f36c3491342d6"
17841720
1785[[package]]1721[[package]]
1786name = "futures-task"1722name = "futures-task"
1787version = "0.3.8"1723version = "0.3.12"
1788source = "registry+https://github.com/rust-lang/crates.io-index"1724source = "registry+https://github.com/rust-lang/crates.io-index"
1789checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d"1725checksum = "13de07eb8ea81ae445aca7b69f5f7bf15d7bf4912d8ca37d6645c77ae8a58d86"
1790dependencies = [1726dependencies = [
1791 "once_cell 1.5.2",1727 "once_cell",
1792]1728]
17931729
1794[[package]]1730[[package]]
18051741
1806[[package]]1742[[package]]
1807name = "futures-util"1743name = "futures-util"
1808version = "0.3.8"1744version = "0.3.12"
1809source = "registry+https://github.com/rust-lang/crates.io-index"1745source = "registry+https://github.com/rust-lang/crates.io-index"
1810checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2"1746checksum = "632a8cd0f2a4b3fdea1657f08bde063848c3bd00f9bbf6e256b8be78802e624b"
1811dependencies = [1747dependencies = [
1812 "futures 0.1.30",1748 "futures 0.1.30",
1813 "futures-channel",1749 "futures-channel",
1817 "futures-sink",1753 "futures-sink",
1818 "futures-task",1754 "futures-task",
1819 "memchr",1755 "memchr",
1820 "pin-project 1.0.2",1756 "pin-project-lite 0.2.4",
1821 "pin-utils",1757 "pin-utils",
1822 "proc-macro-hack",1758 "proc-macro-hack",
1823 "proc-macro-nested",1759 "proc-macro-nested",
1824 "slab",1760 "slab",
1825]1761]
1826
1827[[package]]
1828name = "futures-util-preview"
1829version = "0.3.0-alpha.19"
1830source = "registry+https://github.com/rust-lang/crates.io-index"
1831checksum = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d"
1832dependencies = [
1833 "futures-channel-preview",
1834 "futures-core-preview",
1835 "pin-utils",
1836 "slab",
1837]
1838
1839[[package]]
1840name = "futures_codec"
1841version = "0.4.1"
1842source = "registry+https://github.com/rust-lang/crates.io-index"
1843checksum = "ce54d63f8b0c75023ed920d46fd71d0cbbb830b0ee012726b5b4f506fb6dea5b"
1844dependencies = [
1845 "bytes 0.5.6",
1846 "futures 0.3.8",
1847 "memchr",
1848 "pin-project 0.4.27",
1849]
18501762
1851[[package]]1763[[package]]
1852name = "gcc"1764name = "gcc"
1853version = "0.3.55"1765version = "0.3.55"
1854source = "registry+https://github.com/rust-lang/crates.io-index"1766source = "registry+https://github.com/rust-lang/crates.io-index"
1855checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"1767checksum = "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]
18691768
1870[[package]]1769[[package]]
1871name = "generic-array"1770name = "generic-array"
1876 "typenum",1775 "typenum",
1877]1776]
1777
1778[[package]]
1779name = "generic-array"
1780version = "0.13.2"
1781source = "registry+https://github.com/rust-lang/crates.io-index"
1782checksum = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd"
1783dependencies = [
1784 "typenum",
1785]
18781786
1879[[package]]1787[[package]]
1880name = "generic-array"1788name = "generic-array"
1886 "version_check",1794 "version_check",
1887]1795]
1888
1889[[package]]
1890name = "get_if_addrs"
1891version = "0.5.3"
1892source = "registry+https://github.com/rust-lang/crates.io-index"
1893checksum = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7"
1894dependencies = [
1895 "c_linked_list",
1896 "get_if_addrs-sys",
1897 "libc",
1898 "winapi 0.2.8",
1899]
1900
1901[[package]]
1902name = "get_if_addrs-sys"
1903version = "0.1.1"
1904source = "registry+https://github.com/rust-lang/crates.io-index"
1905checksum = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48"
1906dependencies = [
1907 "gcc",
1908 "libc",
1909]
19101796
1911[[package]]1797[[package]]
1912name = "getrandom"1798name = "getrandom"
1913version = "0.1.15"1799version = "0.1.16"
1914source = "registry+https://github.com/rust-lang/crates.io-index"1800source = "registry+https://github.com/rust-lang/crates.io-index"
1915checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"1801checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
1916dependencies = [1802dependencies = [
1917 "cfg-if 0.1.10",1803 "cfg-if 1.0.0",
1918 "libc",1804 "libc",
1919 "wasi 0.9.0+wasi-snapshot-preview1",1805 "wasi 0.9.0+wasi-snapshot-preview1",
1920]1806]
19211807
1922[[package]]1808[[package]]
1923name = "getrandom"1809name = "getrandom"
1924version = "0.2.0"1810version = "0.2.2"
1925source = "registry+https://github.com/rust-lang/crates.io-index"1811source = "registry+https://github.com/rust-lang/crates.io-index"
1926checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4"1812checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
1927dependencies = [1813dependencies = [
1928 "cfg-if 0.1.10",1814 "cfg-if 1.0.0",
1929 "libc",1815 "libc",
1930 "wasi 0.9.0+wasi-snapshot-preview1",1816 "wasi 0.10.0+wasi-snapshot-preview1",
1931]1817]
19321818
1933[[package]]1819[[package]]
1934name = "ghash"1820name = "ghash"
1935version = "0.3.0"1821version = "0.3.1"
1936source = "registry+https://github.com/rust-lang/crates.io-index"1822source = "registry+https://github.com/rust-lang/crates.io-index"
1937checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531"1823checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375"
1938dependencies = [1824dependencies = [
1825 "opaque-debug 0.3.0",
1939 "polyval",1826 "polyval",
1940]1827]
19411828
1994source = "registry+https://github.com/rust-lang/crates.io-index"1881source = "registry+https://github.com/rust-lang/crates.io-index"
1995checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462"1882checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462"
1996dependencies = [1883dependencies = [
1997 "byteorder 1.3.4",1884 "byteorder",
1998 "bytes 0.4.12",1885 "bytes 0.4.12",
1999 "fnv",1886 "fnv",
2000 "futures 0.1.30",1887 "futures 0.1.30",
2017 "futures-core",1904 "futures-core",
2018 "futures-sink",1905 "futures-sink",
2019 "futures-util",1906 "futures-util",
2020 "http 0.2.2",1907 "http 0.2.3",
2021 "indexmap",1908 "indexmap",
2022 "slab",1909 "slab",
2023 "tokio 0.2.24",1910 "tokio 0.2.24",
2026 "tracing-futures",1913 "tracing-futures",
2027]1914]
1915
1916[[package]]
1917name = "handlebars"
1918version = "3.5.2"
1919source = "registry+https://github.com/rust-lang/crates.io-index"
1920checksum = "964d0e99a61fe9b1b347389b77ebf8b7e1587b70293676aaca7d27e59b9073b2"
1921dependencies = [
1922 "log",
1923 "pest",
1924 "pest_derive",
1925 "quick-error 2.0.0",
1926 "serde",
1927 "serde_json",
1928]
20281929
2029[[package]]1930[[package]]
2030name = "hash-db"1931name = "hash-db"
2041 "crunchy",1942 "crunchy",
2042]1943]
2043
2044[[package]]
2045name = "hashbrown"
2046version = "0.1.8"
2047source = "registry+https://github.com/rust-lang/crates.io-index"
2048checksum = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da"
2049dependencies = [
2050 "byteorder 1.3.4",
2051 "scopeguard 0.3.3",
2052]
2053
2054[[package]]
2055name = "hashbrown"
2056version = "0.6.3"
2057source = "registry+https://github.com/rust-lang/crates.io-index"
2058checksum = "8e6073d0ca812575946eb5f35ff68dbe519907b25c42530389ff946dc84c6ead"
2059dependencies = [
2060 "ahash 0.2.19",
2061 "autocfg 0.1.7",
2062]
2063
2064[[package]]
2065name = "hashbrown"
2066version = "0.8.2"
2067source = "registry+https://github.com/rust-lang/crates.io-index"
2068checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25"
2069dependencies = [
2070 "ahash 0.3.8",
2071 "autocfg 1.0.1",
2072]
20731944
2074[[package]]1945[[package]]
2075name = "hashbrown"1946name = "hashbrown"
2076version = "0.9.1"1947version = "0.9.1"
2077source = "registry+https://github.com/rust-lang/crates.io-index"1948source = "registry+https://github.com/rust-lang/crates.io-index"
2078checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"1949checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
2079dependencies = [1950dependencies = [
2080 "ahash 0.4.7",1951 "ahash",
2081]1952]
20821953
2083[[package]]1954[[package]]
2084name = "heck"1955name = "heck"
2085version = "0.3.1"1956version = "0.3.2"
2086source = "registry+https://github.com/rust-lang/crates.io-index"1957source = "registry+https://github.com/rust-lang/crates.io-index"
2087checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"1958checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac"
2088dependencies = [1959dependencies = [
2089 "unicode-segmentation",1960 "unicode-segmentation",
2090]1961]
20911962
2092[[package]]1963[[package]]
2093name = "hermit-abi"1964name = "hermit-abi"
2094version = "0.1.17"1965version = "0.1.18"
2095source = "registry+https://github.com/rust-lang/crates.io-index"1966source = "registry+https://github.com/rust-lang/crates.io-index"
2096checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8"1967checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
2097dependencies = [1968dependencies = [
2098 "libc",1969 "libc",
2099]1970]
2126 "digest 0.8.1",1997 "digest 0.8.1",
2127]1998]
1999
2000[[package]]
2001name = "hmac"
2002version = "0.8.1"
2003source = "registry+https://github.com/rust-lang/crates.io-index"
2004checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
2005dependencies = [
2006 "crypto-mac 0.8.0",
2007 "digest 0.9.0",
2008]
21282009
2129[[package]]2010[[package]]
2130name = "hmac-drbg"2011name = "hmac-drbg"
2134dependencies = [2015dependencies = [
2135 "digest 0.8.1",2016 "digest 0.8.1",
2136 "generic-array 0.12.3",2017 "generic-array 0.12.3",
2137 "hmac",2018 "hmac 0.7.1",
2138]2019]
21392020
2140[[package]]2021[[package]]
21502031
2151[[package]]2032[[package]]
2152name = "http"2033name = "http"
2153version = "0.2.2"2034version = "0.2.3"
2154source = "registry+https://github.com/rust-lang/crates.io-index"2035source = "registry+https://github.com/rust-lang/crates.io-index"
2155checksum = "84129d298a6d57d246960ff8eb831ca4af3f96d29e2e28848dae275408658e26"2036checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747"
2156dependencies = [2037dependencies = [
2157 "bytes 0.5.6",2038 "bytes 1.0.1",
2158 "fnv",2039 "fnv",
2159 "itoa",2040 "itoa",
2160]2041]
2178checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"2059checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
2179dependencies = [2060dependencies = [
2180 "bytes 0.5.6",2061 "bytes 0.5.6",
2181 "http 0.2.2",2062 "http 0.2.3",
2182]2063]
21832064
2184[[package]]2065[[package]]
2199source = "registry+https://github.com/rust-lang/crates.io-index"2080source = "registry+https://github.com/rust-lang/crates.io-index"
2200checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"2081checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
2201dependencies = [2082dependencies = [
2202 "quick-error",2083 "quick-error 1.2.3",
2203]2084]
22042085
2205[[package]]2086[[package]]
2223 "time",2104 "time",
2224 "tokio 0.1.22",2105 "tokio 0.1.22",
2225 "tokio-buf",2106 "tokio-buf",
2226 "tokio-executor 0.1.10",2107 "tokio-executor",
2227 "tokio-io",2108 "tokio-io",
2228 "tokio-reactor",2109 "tokio-reactor",
2229 "tokio-tcp",2110 "tokio-tcp",
2243 "futures-core",2124 "futures-core",
2244 "futures-util",2125 "futures-util",
2245 "h2 0.2.7",2126 "h2 0.2.7",
2246 "http 0.2.2",2127 "http 0.2.3",
2247 "http-body 0.3.1",2128 "http-body 0.3.1",
2248 "httparse",2129 "httparse",
2249 "httpdate",2130 "httpdate",
2250 "itoa",2131 "itoa",
2251 "pin-project 1.0.2",2132 "pin-project 1.0.4",
2252 "socket2",2133 "socket2",
2253 "tokio 0.2.24",2134 "tokio 0.2.24",
2254 "tower-service",2135 "tower-service",
2267 "futures-util",2148 "futures-util",
2268 "hyper 0.13.9",2149 "hyper 0.13.9",
2269 "log",2150 "log",
2270 "rustls",2151 "rustls 0.18.1",
2271 "rustls-native-certs",2152 "rustls-native-certs",
2272 "tokio 0.2.24",2153 "tokio 0.2.24",
2273 "tokio-rustls",2154 "tokio-rustls",
2296 "unicode-normalization",2177 "unicode-normalization",
2297]2178]
2179
2180[[package]]
2181name = "if-addrs"
2182version = "0.6.5"
2183source = "registry+https://github.com/rust-lang/crates.io-index"
2184checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48"
2185dependencies = [
2186 "if-addrs-sys",
2187 "libc",
2188 "winapi 0.3.9",
2189]
2190
2191[[package]]
2192name = "if-addrs-sys"
2193version = "0.3.2"
2194source = "registry+https://github.com/rust-lang/crates.io-index"
2195checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
2196dependencies = [
2197 "cc",
2198 "libc",
2199]
2200
2201[[package]]
2202name = "if-watch"
2203version = "0.1.8"
2204source = "registry+https://github.com/rust-lang/crates.io-index"
2205checksum = "97b8538953a3f0d0d3868f0a706eb4273535e10d72acb5c82c1c23ae48835c85"
2206dependencies = [
2207 "async-io",
2208 "futures 0.3.12",
2209 "futures-lite",
2210 "if-addrs",
2211 "ipnet",
2212 "libc",
2213 "log",
2214 "winapi 0.3.9",
2215]
22982216
2299[[package]]2217[[package]]
2300name = "impl-codec"2218name = "impl-codec"
2325 "syn",2243 "syn",
2326]2244]
2245
2246[[package]]
2247name = "impl-trait-for-tuples"
2248version = "0.2.0"
2249source = "registry+https://github.com/rust-lang/crates.io-index"
2250checksum = "6f65a8ecf74feeacdab8d38cb129e550ca871cccaa7d1921d8636ecd75534903"
2251dependencies = [
2252 "proc-macro2",
2253 "quote",
2254 "syn",
2255]
23272256
2328[[package]]2257[[package]]
2329name = "indexmap"2258name = "indexmap"
2330version = "1.6.1"2259version = "1.6.1"
2331source = "registry+https://github.com/rust-lang/crates.io-index"2260source = "registry+https://github.com/rust-lang/crates.io-index"
2332checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b"2261checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b"
2333dependencies = [2262dependencies = [
2334 "autocfg 1.0.1",2263 "autocfg",
2335 "hashbrown 0.9.1",2264 "hashbrown",
2336 "serde",2265 "serde",
2337]2266]
23382267
2360source = "registry+https://github.com/rust-lang/crates.io-index"2289source = "registry+https://github.com/rust-lang/crates.io-index"
2361checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275"2290checksum = "64fa110ec7b8f493f416eed552740d10e7030ad5f63b2308f82c9608ec2df275"
2362dependencies = [2291dependencies = [
2363 "futures 0.3.8",2292 "futures 0.3.12",
2364 "futures-timer 2.0.2",2293 "futures-timer 2.0.2",
2365]2294]
23662295
2385source = "registry+https://github.com/rust-lang/crates.io-index"2314source = "registry+https://github.com/rust-lang/crates.io-index"
2386checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135"2315checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135"
2387
2388[[package]]
2389name = "itertools"
2390version = "0.8.2"
2391source = "registry+https://github.com/rust-lang/crates.io-index"
2392checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
2393dependencies = [
2394 "either",
2395]
23962316
2397[[package]]2317[[package]]
2398name = "itertools"2318name = "itertools"
24052325
2406[[package]]2326[[package]]
2407name = "itoa"2327name = "itoa"
2408version = "0.4.6"2328version = "0.4.7"
2409source = "registry+https://github.com/rust-lang/crates.io-index"2329source = "registry+https://github.com/rust-lang/crates.io-index"
2410checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"2330checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
24112331
2412[[package]]2332[[package]]
2413name = "jobserver"2333name = "jobserver"
24202340
2421[[package]]2341[[package]]
2422name = "js-sys"2342name = "js-sys"
2423version = "0.3.46"2343version = "0.3.47"
2424source = "registry+https://github.com/rust-lang/crates.io-index"2344source = "registry+https://github.com/rust-lang/crates.io-index"
2425checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175"2345checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65"
2426dependencies = [2346dependencies = [
2427 "wasm-bindgen",2347 "wasm-bindgen",
2428]2348]
25762496
2577[[package]]2497[[package]]
2578name = "kvdb"2498name = "kvdb"
2579version = "0.7.0"2499version = "0.8.0"
2580source = "registry+https://github.com/rust-lang/crates.io-index"2500source = "registry+https://github.com/rust-lang/crates.io-index"
2581checksum = "0315ef2f688e33844400b31f11c263f2b3dc21d8b9355c6891c5f185fae43f9a"2501checksum = "92312348daade49976a6dc59263ad39ed54f840aacb5664874f7c9aa16e5f848"
2582dependencies = [2502dependencies = [
2583 "parity-util-mem",2503 "parity-util-mem",
2584 "smallvec 1.5.1",2504 "smallvec 1.6.1",
2585]2505]
25862506
2587[[package]]2507[[package]]
2588name = "kvdb-memorydb"2508name = "kvdb-memorydb"
2589version = "0.7.0"2509version = "0.8.0"
2590source = "registry+https://github.com/rust-lang/crates.io-index"2510source = "registry+https://github.com/rust-lang/crates.io-index"
2591checksum = "73de822b260a3bdfb889dbbb65bb2d473eee2253973d6fa4a5d149a2a4a7c66e"2511checksum = "986052a8d16c692eaebe775391f9a3ac26714f3907132658500b601dec94c8c2"
2592dependencies = [2512dependencies = [
2593 "kvdb",2513 "kvdb",
2594 "parity-util-mem",2514 "parity-util-mem",
2595 "parking_lot 0.10.2",2515 "parking_lot 0.11.1",
2596]2516]
25972517
2598[[package]]2518[[package]]
2599name = "kvdb-rocksdb"2519name = "kvdb-rocksdb"
2600version = "0.9.1"2520version = "0.10.0"
2601source = "registry+https://github.com/rust-lang/crates.io-index"2521source = "registry+https://github.com/rust-lang/crates.io-index"
2602checksum = "44947dd392f09475af614d740fe0320b66d01cb5b977f664bbbb5e45a70ea4c1"2522checksum = "8d92c36be64baba5ea549116ff0d7ffd445456a7be8aaee21ec05882b980cd11"
2603dependencies = [2523dependencies = [
2604 "fs-swap",2524 "fs-swap",
2605 "kvdb",2525 "kvdb",
2606 "log",2526 "log",
2607 "num_cpus",2527 "num_cpus",
2608 "owning_ref",2528 "owning_ref",
2609 "parity-util-mem",2529 "parity-util-mem",
2610 "parking_lot 0.10.2",2530 "parking_lot 0.11.1",
2611 "regex",2531 "regex",
2612 "rocksdb",2532 "rocksdb",
2613 "smallvec 1.5.1",2533 "smallvec 1.6.1",
2614]2534]
26152535
2616[[package]]2536[[package]]
26332553
2634[[package]]2554[[package]]
2635name = "libc"2555name = "libc"
2636version = "0.2.81"2556version = "0.2.82"
2637source = "registry+https://github.com/rust-lang/crates.io-index"2557source = "registry+https://github.com/rust-lang/crates.io-index"
2638checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb"2558checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929"
26392559
2640[[package]]2560[[package]]
2641name = "libloading"2561name = "libloading"
26552575
2656[[package]]2576[[package]]
2657name = "libp2p"2577name = "libp2p"
2658version = "0.28.1"2578version = "0.34.0"
2659source = "registry+https://github.com/rust-lang/crates.io-index"2579source = "registry+https://github.com/rust-lang/crates.io-index"
2660checksum = "571f5a4604c1a40d75651da141dfde29ad15329f537a779528803297d2220274"2580checksum = "d5133112ce42be9482f6a87be92a605dd6bbc9e93c297aee77d172ff06908f3a"
2661dependencies = [2581dependencies = [
2662 "atomic",2582 "atomic",
2663 "bytes 0.5.6",2583 "bytes 1.0.1",
2664 "futures 0.3.8",2584 "futures 0.3.12",
2665 "lazy_static",2585 "lazy_static",
2666 "libp2p-core",2586 "libp2p-core",
2667 "libp2p-core-derive",2587 "libp2p-core-derive",
2684 "libp2p-wasm-ext",2604 "libp2p-wasm-ext",
2685 "libp2p-websocket",2605 "libp2p-websocket",
2686 "libp2p-yamux",2606 "libp2p-yamux",
2687 "multihash",
2688 "parity-multiaddr",2607 "parity-multiaddr",
2689 "parking_lot 0.10.2",2608 "parking_lot 0.11.1",
2690 "pin-project 0.4.27",2609 "pin-project 1.0.4",
2691 "smallvec 1.5.1",2610 "smallvec 1.6.1",
2692 "wasm-timer",2611 "wasm-timer",
2693]2612]
26942613
2695[[package]]2614[[package]]
2696name = "libp2p-core"2615name = "libp2p-core"
2697version = "0.22.1"2616version = "0.27.0"
2698source = "registry+https://github.com/rust-lang/crates.io-index"2617source = "registry+https://github.com/rust-lang/crates.io-index"
2699checksum = "52f13ba8c7df0768af2eb391696d562c7de88cc3a35122531aaa6a7d77754d25"2618checksum = "dad04d3cef6c1df366a6ab58c9cf8b06497699e335d83ac2174783946ff847d6"
2700dependencies = [2619dependencies = [
2701 "asn1_der",2620 "asn1_der",
2702 "bs58 0.3.1",2621 "bs58",
2703 "ed25519-dalek",2622 "ed25519-dalek",
2704 "either",2623 "either",
2705 "fnv",2624 "fnv",
2706 "futures 0.3.8",2625 "futures 0.3.12",
2707 "futures-timer 3.0.2",2626 "futures-timer 3.0.2",
2708 "lazy_static",2627 "lazy_static",
2709 "libsecp256k1",2628 "libsecp256k1",
2710 "log",2629 "log",
2711 "multihash",2630 "multihash",
2712 "multistream-select",2631 "multistream-select",
2713 "parity-multiaddr",2632 "parity-multiaddr",
2714 "parking_lot 0.10.2",2633 "parking_lot 0.11.1",
2715 "pin-project 0.4.27",2634 "pin-project 1.0.4",
2716 "prost",2635 "prost",
2717 "prost-build",2636 "prost-build",
2718 "rand 0.7.3",2637 "rand 0.7.3",
2719 "ring",2638 "ring",
2720 "rw-stream-sink",2639 "rw-stream-sink",
2721 "sha2 0.8.2",2640 "sha2 0.9.2",
2722 "smallvec 1.5.1",2641 "smallvec 1.6.1",
2723 "thiserror",2642 "thiserror",
2724 "unsigned-varint 0.4.0",2643 "unsigned-varint 0.6.0",
2725 "void",2644 "void",
2726 "zeroize",2645 "zeroize",
2727]2646]
27282647
2729[[package]]2648[[package]]
2730name = "libp2p-core-derive"2649name = "libp2p-core-derive"
2731version = "0.20.2"2650version = "0.21.0"
2732source = "registry+https://github.com/rust-lang/crates.io-index"2651source = "registry+https://github.com/rust-lang/crates.io-index"
2733checksum = "f753d9324cd3ec14bf04b8a8cd0d269c87f294153d6bf2a84497a63a5ad22213"2652checksum = "f4bc40943156e42138d22ed3c57ff0e1a147237742715937622a99b10fbe0156"
2734dependencies = [2653dependencies = [
2735 "quote",2654 "quote",
2736 "syn",2655 "syn",
2737]2656]
27382657
2739[[package]]2658[[package]]
2740name = "libp2p-deflate"2659name = "libp2p-deflate"
2741version = "0.22.0"2660version = "0.27.1"
2742source = "registry+https://github.com/rust-lang/crates.io-index"2661source = "registry+https://github.com/rust-lang/crates.io-index"
2743checksum = "74029ae187f35f4b8ddf26b9779a68b340045d708528a103917cdca49a296db5"2662checksum = "6d42eed63305f0420736fa487f9acef720c4528bd7852a6a760f5ccde4813345"
2744dependencies = [2663dependencies = [
2745 "flate2",2664 "flate2",
2746 "futures 0.3.8",2665 "futures 0.3.12",
2747 "libp2p-core",2666 "libp2p-core",
2748]2667]
27492668
2750[[package]]2669[[package]]
2751name = "libp2p-dns"2670name = "libp2p-dns"
2752version = "0.22.0"2671version = "0.27.0"
2753source = "registry+https://github.com/rust-lang/crates.io-index"2672source = "registry+https://github.com/rust-lang/crates.io-index"
2754checksum = "7cf319822e08dd65c8e060d2354e9f952895bbc433f5706c75ed010c152aee5e"2673checksum = "5153b6db68fd4baa3b304e377db744dd8fea8ff4e4504509ee636abcde88d3e3"
2755dependencies = [2674dependencies = [
2756 "futures 0.3.8",2675 "futures 0.3.12",
2757 "libp2p-core",2676 "libp2p-core",
2758 "log",2677 "log",
2759]2678]
27602679
2761[[package]]2680[[package]]
2762name = "libp2p-floodsub"2681name = "libp2p-floodsub"
2763version = "0.22.0"2682version = "0.27.0"
2764source = "registry+https://github.com/rust-lang/crates.io-index"2683source = "registry+https://github.com/rust-lang/crates.io-index"
2765checksum = "d8a9acb43a3e4a4e413e0c4abe0fa49308df7c6335c88534757b647199cb8a51"2684checksum = "b3c63dfa06581b24b1d12bf9815b43689a784424be217d6545c800c7c75a207f"
2766dependencies = [2685dependencies = [
2767 "cuckoofilter",2686 "cuckoofilter",
2768 "fnv",2687 "fnv",
2769 "futures 0.3.8",2688 "futures 0.3.12",
2770 "libp2p-core",2689 "libp2p-core",
2771 "libp2p-swarm",2690 "libp2p-swarm",
2691 "log",
2772 "prost",2692 "prost",
2773 "prost-build",2693 "prost-build",
2774 "rand 0.7.3",2694 "rand 0.7.3",
2775 "smallvec 1.5.1",2695 "smallvec 1.6.1",
2776]2696]
27772697
2778[[package]]2698[[package]]
2779name = "libp2p-gossipsub"2699name = "libp2p-gossipsub"
2780version = "0.22.0"2700version = "0.27.0"
2781source = "registry+https://github.com/rust-lang/crates.io-index"2701source = "registry+https://github.com/rust-lang/crates.io-index"
2782checksum = "ab20fcb60edebe3173bbb708c6ac3444afdf1e3152dc2866b10c4f5497f17467"2702checksum = "12451ba9493e87c91baf2a6dffce9ddf1fbc807a0861532d7cf477954f8ebbee"
2783dependencies = [2703dependencies = [
2704 "asynchronous-codec",
2784 "base64 0.11.0",2705 "base64 0.13.0",
2785 "byteorder 1.3.4",2706 "byteorder",
2786 "bytes 0.5.6",2707 "bytes 1.0.1",
2787 "fnv",2708 "fnv",
2788 "futures 0.3.8",2709 "futures 0.3.12",
2789 "futures_codec",
2790 "hex_fmt",2710 "hex_fmt",
2791 "libp2p-core",2711 "libp2p-core",
2792 "libp2p-swarm",2712 "libp2p-swarm",
2793 "log",2713 "log",
2794 "lru_time_cache",
2795 "prost",2714 "prost",
2796 "prost-build",2715 "prost-build",
2797 "rand 0.7.3",2716 "rand 0.7.3",
2717 "regex",
2798 "sha2 0.8.2",2718 "sha2 0.9.2",
2799 "smallvec 1.5.1",2719 "smallvec 1.6.1",
2800 "unsigned-varint 0.4.0",2720 "unsigned-varint 0.6.0",
2801 "wasm-timer",2721 "wasm-timer",
2802]2722]
28032723
2804[[package]]2724[[package]]
2805name = "libp2p-identify"2725name = "libp2p-identify"
2806version = "0.22.0"2726version = "0.27.0"
2807source = "registry+https://github.com/rust-lang/crates.io-index"2727source = "registry+https://github.com/rust-lang/crates.io-index"
2808checksum = "56396ee63aa9164eacf40c2c5d2bda8c4133c2f57e1b0425d51d3a4e362583b1"2728checksum = "b40fb36a059b7a8cce1514bd8b546fa612e006c9937caa7f5950cb20021fe91e"
2809dependencies = [2729dependencies = [
2810 "futures 0.3.8",2730 "futures 0.3.12",
2811 "libp2p-core",2731 "libp2p-core",
2812 "libp2p-swarm",2732 "libp2p-swarm",
2813 "log",2733 "log",
2814 "prost",2734 "prost",
2815 "prost-build",2735 "prost-build",
2816 "smallvec 1.5.1",2736 "smallvec 1.6.1",
2817 "wasm-timer",2737 "wasm-timer",
2818]2738]
28192739
2820[[package]]2740[[package]]
2821name = "libp2p-kad"2741name = "libp2p-kad"
2822version = "0.23.0"2742version = "0.28.0"
2823source = "registry+https://github.com/rust-lang/crates.io-index"2743source = "registry+https://github.com/rust-lang/crates.io-index"
2824checksum = "cc7fa9047f8b8f544278a35c2d9d45d3b2c1785f2d86d4e1629d6edf97be3955"2744checksum = "456f5de8e283d7800ca848b9b9a4e2a578b790bd8ae582b885e831353cf0e5df"
2825dependencies = [2745dependencies = [
2826 "arrayvec 0.5.2",2746 "arrayvec 0.5.2",
2747 "asynchronous-codec",
2827 "bytes 0.5.6",2748 "bytes 1.0.1",
2828 "either",2749 "either",
2829 "fnv",2750 "fnv",
2830 "futures 0.3.8",2751 "futures 0.3.12",
2831 "futures_codec",
2832 "libp2p-core",2752 "libp2p-core",
2833 "libp2p-swarm",2753 "libp2p-swarm",
2834 "log",2754 "log",
2835 "multihash",
2836 "prost",2755 "prost",
2837 "prost-build",2756 "prost-build",
2838 "rand 0.7.3",2757 "rand 0.7.3",
2839 "sha2 0.8.2",2758 "sha2 0.9.2",
2840 "smallvec 1.5.1",2759 "smallvec 1.6.1",
2841 "uint",2760 "uint",
2842 "unsigned-varint 0.4.0",2761 "unsigned-varint 0.6.0",
2843 "void",2762 "void",
2844 "wasm-timer",2763 "wasm-timer",
2845]2764]
28462765
2847[[package]]2766[[package]]
2848name = "libp2p-mdns"2767name = "libp2p-mdns"
2849version = "0.22.0"2768version = "0.28.0"
2850source = "registry+https://github.com/rust-lang/crates.io-index"2769source = "registry+https://github.com/rust-lang/crates.io-index"
2851checksum = "3173b5a6b2f690c29ae07798d85b9441a131ac76ddae9015ef22905b623d0c69"2770checksum = "b974db63233fc0e199f4ede7794294aae285c96f4b6010f853eac4099ef08590"
2852dependencies = [2771dependencies = [
2853 "async-std",2772 "async-io",
2854 "data-encoding",2773 "data-encoding",
2855 "dns-parser",2774 "dns-parser",
2856 "either",2775 "futures 0.3.12",
2857 "futures 0.3.8",2776 "if-watch",
2858 "lazy_static",2777 "lazy_static",
2859 "libp2p-core",2778 "libp2p-core",
2860 "libp2p-swarm",2779 "libp2p-swarm",
2861 "log",2780 "log",
2862 "net2",
2863 "rand 0.7.3",2781 "rand 0.7.3",
2864 "smallvec 1.5.1",2782 "smallvec 1.6.1",
2783 "socket2",
2865 "void",2784 "void",
2866 "wasm-timer",
2867]2785]
28682786
2869[[package]]2787[[package]]
2870name = "libp2p-mplex"2788name = "libp2p-mplex"
2871version = "0.22.0"2789version = "0.27.0"
2872source = "registry+https://github.com/rust-lang/crates.io-index"2790source = "registry+https://github.com/rust-lang/crates.io-index"
2873checksum = "8a73a799cc8410b36e40b8f4c4b6babbcb9efd3727111bf517876e4acfa612d3"2791checksum = "2705dc94b01ab9e3779b42a09bbf3712e637ed213e875c30face247291a85af0"
2874dependencies = [2792dependencies = [
2875 "bytes 0.5.6",2793 "asynchronous-codec",
2876 "fnv",
2877 "futures 0.3.8",2794 "bytes 1.0.1",
2878 "futures_codec",2795 "futures 0.3.12",
2879 "libp2p-core",2796 "libp2p-core",
2880 "log",2797 "log",
2798 "nohash-hasher",
2881 "parking_lot 0.10.2",2799 "parking_lot 0.11.1",
2800 "rand 0.7.3",
2801 "smallvec 1.6.1",
2882 "unsigned-varint 0.4.0",2802 "unsigned-varint 0.6.0",
2883]2803]
28842804
2885[[package]]2805[[package]]
2886name = "libp2p-noise"2806name = "libp2p-noise"
2887version = "0.24.0"2807version = "0.29.0"
2888source = "registry+https://github.com/rust-lang/crates.io-index"2808source = "registry+https://github.com/rust-lang/crates.io-index"
2889checksum = "6ef6c490042f549fb1025f2892dfe6083d97a77558f450c1feebe748ca9eb15a"2809checksum = "4aca322b52a0c5136142a7c3971446fb1e9964923a526c9cc6ef3b7c94e57778"
2890dependencies = [2810dependencies = [
2891 "bytes 0.5.6",2811 "bytes 1.0.1",
2892 "curve25519-dalek 2.1.0",2812 "curve25519-dalek 3.0.2",
2893 "futures 0.3.8",2813 "futures 0.3.12",
2894 "lazy_static",2814 "lazy_static",
2895 "libp2p-core",2815 "libp2p-core",
2896 "log",2816 "log",
2897 "prost",2817 "prost",
2898 "prost-build",2818 "prost-build",
2899 "rand 0.7.3",2819 "rand 0.7.3",
2900 "sha2 0.8.2",2820 "sha2 0.9.2",
2901 "snow",2821 "snow",
2902 "static_assertions",2822 "static_assertions",
2903 "x25519-dalek 0.6.0",2823 "x25519-dalek",
2904 "zeroize",2824 "zeroize",
2905]2825]
29062826
2907[[package]]2827[[package]]
2908name = "libp2p-ping"2828name = "libp2p-ping"
2909version = "0.22.0"2829version = "0.27.0"
2910source = "registry+https://github.com/rust-lang/crates.io-index"2830source = "registry+https://github.com/rust-lang/crates.io-index"
2911checksum = "ad063c21dfcea4518ac9e8bd4119d33a5b26c41e674f602f41f05617a368a5c8"2831checksum = "6f3813276d0708c8db0f500d8beda1bda9ad955723b9cb272c41f4727256f73c"
2912dependencies = [2832dependencies = [
2913 "futures 0.3.8",2833 "futures 0.3.12",
2914 "libp2p-core",2834 "libp2p-core",
2915 "libp2p-swarm",2835 "libp2p-swarm",
2916 "log",2836 "log",
29212841
2922[[package]]2842[[package]]
2923name = "libp2p-plaintext"2843name = "libp2p-plaintext"
2924version = "0.22.0"2844version = "0.27.0"
2925source = "registry+https://github.com/rust-lang/crates.io-index"2845source = "registry+https://github.com/rust-lang/crates.io-index"
2926checksum = "903a12e99c72dbebefea258de887982adeacc7025baa1ceb10b7fa9928f54791"2846checksum = "48e8c1ec305c9949351925cdc7196b9570f4330477f5e47fbf5bb340b57e26ed"
2927dependencies = [2847dependencies = [
2928 "bytes 0.5.6",2848 "asynchronous-codec",
2929 "futures 0.3.8",2849 "bytes 1.0.1",
2930 "futures_codec",2850 "futures 0.3.12",
2931 "libp2p-core",2851 "libp2p-core",
2932 "log",2852 "log",
2933 "prost",2853 "prost",
2934 "prost-build",2854 "prost-build",
2935 "rw-stream-sink",
2936 "unsigned-varint 0.4.0",2855 "unsigned-varint 0.6.0",
2937 "void",2856 "void",
2938]2857]
29392858
2940[[package]]2859[[package]]
2941name = "libp2p-pnet"2860name = "libp2p-pnet"
2942version = "0.19.2"2861version = "0.20.0"
2943source = "registry+https://github.com/rust-lang/crates.io-index"2862source = "registry+https://github.com/rust-lang/crates.io-index"
2944checksum = "96b3c2d5d26a9500e959a0e19743897239a6c4be78dadf99b70414301a70c006"2863checksum = "6ce3374f3b28162db9d3442c9347c4f14cb01e8290052615c7d341d40eae0599"
2945dependencies = [2864dependencies = [
2946 "futures 0.3.8",2865 "futures 0.3.12",
2947 "log",2866 "log",
2948 "pin-project 0.4.27",2867 "pin-project 1.0.4",
2949 "rand 0.7.3",2868 "rand 0.7.3",
2950 "salsa20",2869 "salsa20",
2951 "sha3",2870 "sha3",
2952]2871]
29532872
2954[[package]]2873[[package]]
2955name = "libp2p-request-response"2874name = "libp2p-request-response"
2956version = "0.3.0"2875version = "0.9.0"
2957source = "registry+https://github.com/rust-lang/crates.io-index"2876source = "registry+https://github.com/rust-lang/crates.io-index"
2958checksum = "9c0c9e8a4cd69d97e9646c54313d007512f411aba8c5226cfcda16df6a6e84a3"2877checksum = "d37637a4b33b5390322ccc068a33897d0aa541daf4fec99f6a7efbf37295346e"
2959dependencies = [2878dependencies = [
2960 "async-trait",2879 "async-trait",
2961 "bytes 0.5.6",2880 "bytes 1.0.1",
2962 "futures 0.3.8",2881 "futures 0.3.12",
2963 "libp2p-core",2882 "libp2p-core",
2964 "libp2p-swarm",2883 "libp2p-swarm",
2965 "log",2884 "log",
2966 "lru 0.6.2",2885 "lru",
2967 "minicbor",2886 "minicbor",
2968 "rand 0.7.3",2887 "rand 0.7.3",
2969 "smallvec 1.5.1",2888 "smallvec 1.6.1",
2970 "unsigned-varint 0.5.1",2889 "unsigned-varint 0.6.0",
2971 "wasm-timer",2890 "wasm-timer",
2972]2891]
29732892
2974[[package]]2893[[package]]
2975name = "libp2p-swarm"2894name = "libp2p-swarm"
2976version = "0.22.0"2895version = "0.27.1"
2977source = "registry+https://github.com/rust-lang/crates.io-index"2896source = "registry+https://github.com/rust-lang/crates.io-index"
2978checksum = "7193e444210132237b81b755ec7fe53f1c4bd2f53cf719729b94c0c72eb6eaa1"2897checksum = "d4f89ebb4d8953bda12623e9871959fe728dea3bf6eae0421dc9c42dc821e488"
2979dependencies = [2898dependencies = [
2980 "either",2899 "either",
2981 "futures 0.3.8",2900 "futures 0.3.12",
2982 "libp2p-core",2901 "libp2p-core",
2983 "log",2902 "log",
2984 "rand 0.7.3",2903 "rand 0.7.3",
2985 "smallvec 1.5.1",2904 "smallvec 1.6.1",
2986 "void",2905 "void",
2987 "wasm-timer",2906 "wasm-timer",
2988]2907]
29892908
2990[[package]]2909[[package]]
2991name = "libp2p-tcp"2910name = "libp2p-tcp"
2992version = "0.22.0"2911version = "0.27.0"
2993source = "registry+https://github.com/rust-lang/crates.io-index"2912source = "registry+https://github.com/rust-lang/crates.io-index"
2994checksum = "44f42ec130d7a37a7e47bf4398026b7ad9185c08ed26972e2720f8b94112796f"2913checksum = "3dbd3d7076a478ac5a6aca55e74bdc250ac539b95de09b9d09915e0b8d01a6b2"
2995dependencies = [2914dependencies = [
2996 "async-std",2915 "async-io",
2997 "futures 0.3.8",2916 "futures 0.3.12",
2998 "futures-timer 3.0.2",2917 "futures-timer 3.0.2",
2999 "get_if_addrs",2918 "if-watch",
3000 "ipnet",2919 "ipnet",
2920 "libc",
3001 "libp2p-core",2921 "libp2p-core",
3002 "log",2922 "log",
3003 "socket2",2923 "socket2",
3004]2924]
30052925
3006[[package]]2926[[package]]
3007name = "libp2p-uds"2927name = "libp2p-uds"
3008version = "0.22.0"2928version = "0.27.0"
3009source = "registry+https://github.com/rust-lang/crates.io-index"2929source = "registry+https://github.com/rust-lang/crates.io-index"
3010checksum = "dea7acb0a034f70d7db94c300eba3f65c0f6298820105624088a9609c9974d77"2930checksum = "80ac51ce419f60be966e02103c17f67ff5dc4422ba83ba54d251d6c62a4ed487"
3011dependencies = [2931dependencies = [
3012 "async-std",2932 "async-std",
3013 "futures 0.3.8",2933 "futures 0.3.12",
3014 "libp2p-core",2934 "libp2p-core",
3015 "log",2935 "log",
3016]2936]
30172937
3018[[package]]2938[[package]]
3019name = "libp2p-wasm-ext"2939name = "libp2p-wasm-ext"
3020version = "0.22.0"2940version = "0.27.0"
3021source = "registry+https://github.com/rust-lang/crates.io-index"2941source = "registry+https://github.com/rust-lang/crates.io-index"
3022checksum = "34c1faac6f92c21fbe155417957863ea822fba9e9fd5eb24c0912336a100e63f"2942checksum = "6149c46cb76935c80bc8be6ec6e3ebd5f5e1679765a255fb34331d54610f15dd"
3023dependencies = [2943dependencies = [
3024 "futures 0.3.8",2944 "futures 0.3.12",
3025 "js-sys",2945 "js-sys",
3026 "libp2p-core",2946 "libp2p-core",
3027 "parity-send-wrapper",2947 "parity-send-wrapper",
30312951
3032[[package]]2952[[package]]
3033name = "libp2p-websocket"2953name = "libp2p-websocket"
3034version = "0.23.0"2954version = "0.28.0"
3035source = "registry+https://github.com/rust-lang/crates.io-index"2955source = "registry+https://github.com/rust-lang/crates.io-index"
3036checksum = "d650534ebd99f48f6fa292ed5db10d30df2444943afde4407ceeddab8e513fca"2956checksum = "d3b1c6a3431045da8b925ed83384e4c5163e14b990572307fca9c507435d4d22"
3037dependencies = [2957dependencies = [
3038 "async-tls",
3039 "either",2958 "either",
3040 "futures 0.3.8",2959 "futures 0.3.12",
2960 "futures-rustls",
3041 "libp2p-core",2961 "libp2p-core",
3042 "log",2962 "log",
3043 "quicksink",2963 "quicksink",
3044 "rustls",
3045 "rw-stream-sink",2964 "rw-stream-sink",
3046 "soketto",2965 "soketto",
3047 "url 2.2.0",2966 "url 2.2.0",
3048 "webpki",
3049 "webpki-roots 0.18.0",2967 "webpki-roots",
3050]2968]
30512969
3052[[package]]2970[[package]]
3053name = "libp2p-yamux"2971name = "libp2p-yamux"
3054version = "0.25.0"2972version = "0.30.0"
3055source = "registry+https://github.com/rust-lang/crates.io-index"2973source = "registry+https://github.com/rust-lang/crates.io-index"
3056checksum = "781d9b9f043dcdabc40640807125368596b849fd4d96cdca2dcf052fdf6f33fd"2974checksum = "490b8b27fc40fe35212df1b6a3d14bffaa4117cbff956fdc2892168a371102ad"
3057dependencies = [2975dependencies = [
3058 "futures 0.3.8",2976 "futures 0.3.12",
3059 "libp2p-core",2977 "libp2p-core",
3060 "parking_lot 0.11.1",2978 "parking_lot 0.11.1",
3061 "thiserror",2979 "thiserror",
31033021
3104[[package]]3022[[package]]
3105name = "linked-hash-map"3023name = "linked-hash-map"
3106version = "0.5.3"3024version = "0.5.4"
3107source = "registry+https://github.com/rust-lang/crates.io-index"3025source = "registry+https://github.com/rust-lang/crates.io-index"
3108checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"3026checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
31093027
3110[[package]]3028[[package]]
3111name = "linked_hash_set"3029name = "linked_hash_set"
31183036
3119[[package]]3037[[package]]
3120name = "linregress"3038name = "linregress"
3121version = "0.1.7"3039version = "0.4.0"
3122source = "registry+https://github.com/rust-lang/crates.io-index"3040source = "registry+https://github.com/rust-lang/crates.io-index"
3123checksum = "9290cf6f928576eeb9c096c6fad9d8d452a0a1a70a2bbffa6e36064eedc0aac9"3041checksum = "0d0ad4b5cc8385a881c561fac3501353d63d2a2b7a357b5064d71815c9a92724"
3124dependencies = [3042dependencies = [
3125 "failure",
3126 "nalgebra",3043 "nalgebra",
3127 "statrs",3044 "statrs",
3128]3045]
3129
3130[[package]]
3131name = "lock_api"
3132version = "0.1.5"
3133source = "registry+https://github.com/rust-lang/crates.io-index"
3134checksum = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c"
3135dependencies = [
3136 "scopeguard 0.3.3",
3137]
31383046
3139[[package]]3047[[package]]
3140name = "lock_api"3048name = "lock_api"
3141version = "0.3.4"3049version = "0.3.4"
3142source = "registry+https://github.com/rust-lang/crates.io-index"3050source = "registry+https://github.com/rust-lang/crates.io-index"
3143checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"3051checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75"
3144dependencies = [3052dependencies = [
3145 "scopeguard 1.1.0",3053 "scopeguard",
3146]3054]
31473055
3148[[package]]3056[[package]]
3151source = "registry+https://github.com/rust-lang/crates.io-index"3059source = "registry+https://github.com/rust-lang/crates.io-index"
3152checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"3060checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312"
3153dependencies = [3061dependencies = [
3154 "scopeguard 1.1.0",3062 "scopeguard",
3155]3063]
31563064
3157[[package]]3065[[package]]
3158name = "log"3066name = "log"
3159version = "0.4.11"3067version = "0.4.14"
3160source = "registry+https://github.com/rust-lang/crates.io-index"3068source = "registry+https://github.com/rust-lang/crates.io-index"
3161checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b"3069checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
3162dependencies = [3070dependencies = [
3163 "cfg-if 0.1.10",3071 "cfg-if 1.0.0",
3072 "value-bag",
3164]3073]
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]
31783074
3179[[package]]3075[[package]]
3180name = "lru"3076name = "lru"
3181version = "0.4.3"3077version = "0.6.3"
3182source = "registry+https://github.com/rust-lang/crates.io-index"3078source = "registry+https://github.com/rust-lang/crates.io-index"
3183checksum = "0609345ddee5badacf857d4f547e0e5a2e987db77085c24cd887f73573a04237"3079checksum = "3aae342b73d57ad0b8b364bd12584819f2c1fe9114285dfcf8b0722607671635"
3184dependencies = [3080dependencies = [
3185 "hashbrown 0.6.3",3081 "hashbrown",
3186]3082]
3187
3188[[package]]
3189name = "lru"
3190version = "0.6.2"
3191source = "registry+https://github.com/rust-lang/crates.io-index"
3192checksum = "3abe07af102235a56ac9a6dd904aab1e05483e2e8afdfffec3598be55b1b7606"
3193dependencies = [
3194 "hashbrown 0.9.1",
3195]
3196
3197[[package]]
3198name = "lru_time_cache"
3199version = "0.10.0"
3200source = "registry+https://github.com/rust-lang/crates.io-index"
3201checksum = "adb241df5c4caeb888755363fc95f8a896618dc0d435e9e775f7930cb099beab"
32023083
3203[[package]]3084[[package]]
3204name = "mach"3085name = "mach"
3209 "libc",3090 "libc",
3210]3091]
3092
3093[[package]]
3094name = "maplit"
3095version = "1.0.2"
3096source = "registry+https://github.com/rust-lang/crates.io-index"
3097checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
32113098
3212[[package]]3099[[package]]
3213name = "matchers"3100name = "matchers"
3261source = "registry+https://github.com/rust-lang/crates.io-index"3148source = "registry+https://github.com/rust-lang/crates.io-index"
3262checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa"3149checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa"
3263dependencies = [3150dependencies = [
3264 "autocfg 1.0.1",3151 "autocfg",
3265]3152]
32663153
3267[[package]]3154[[package]]
3270source = "registry+https://github.com/rust-lang/crates.io-index"3157source = "registry+https://github.com/rust-lang/crates.io-index"
3271checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"3158checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
3272dependencies = [3159dependencies = [
3273 "autocfg 1.0.1",3160 "autocfg",
3274]3161]
32753162
3276[[package]]3163[[package]]
3277name = "memory-db"3164name = "memory-db"
3278version = "0.24.1"3165version = "0.25.0"
3279source = "registry+https://github.com/rust-lang/crates.io-index"3166source = "registry+https://github.com/rust-lang/crates.io-index"
3280checksum = "36f36ddb0b2cdc25d38babba472108798e3477f02be5165f038c5e393e50c57a"3167checksum = "6cbd2a22f201c03cc1706a727842490abfea17b7b53260358239828208daba3c"
3281dependencies = [3168dependencies = [
3282 "hash-db",3169 "hash-db",
3283 "hashbrown 0.8.2",3170 "hashbrown",
3284 "parity-util-mem",3171 "parity-util-mem",
3285]3172]
32863173
32923179
3293[[package]]3180[[package]]
3294name = "merlin"3181name = "merlin"
3295version = "2.0.0"3182version = "2.0.1"
3296source = "registry+https://github.com/rust-lang/crates.io-index"3183source = "registry+https://github.com/rust-lang/crates.io-index"
3297checksum = "c6feca46f4fa3443a01769d768727f10c10a20fdb65e52dc16a81f0c8269bb78"3184checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42"
3298dependencies = [3185dependencies = [
3299 "byteorder 1.3.4",3186 "byteorder",
3300 "keccak",3187 "keccak",
3301 "rand_core 0.5.1",3188 "rand_core 0.5.1",
3302 "zeroize",3189 "zeroize",
3303]3190]
33043191
3305[[package]]3192[[package]]
3306name = "minicbor"3193name = "minicbor"
3307version = "0.5.1"3194version = "0.7.1"
3308source = "registry+https://github.com/rust-lang/crates.io-index"3195source = "registry+https://github.com/rust-lang/crates.io-index"
3309checksum = "2fc03ad6f8f548db7194a5ff5a6f96342ecae4e3ef67d2bf18bacc0e245cd041"3196checksum = "3265a9f5210bb726f81ef9c456ae0aff5321cd95748c0e71889b0e19d8f0332b"
3310dependencies = [3197dependencies = [
3311 "minicbor-derive",3198 "minicbor-derive",
3312]3199]
33133200
3314[[package]]3201[[package]]
3315name = "minicbor-derive"3202name = "minicbor-derive"
3316version = "0.4.1"3203version = "0.6.1"
3317source = "registry+https://github.com/rust-lang/crates.io-index"3204source = "registry+https://github.com/rust-lang/crates.io-index"
3318checksum = "c214bf3d90099b52f3e4b328ae0fe34837fd0fab683ad1e10fceb4629106df48"3205checksum = "130b9455e28a3f308f6579671816a6f2621e2e0cbf55dc2f886345bef699481e"
3319dependencies = [3206dependencies = [
3320 "proc-macro2",3207 "proc-macro2",
3321 "quote",3208 "quote",
3329checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d"3216checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d"
3330dependencies = [3217dependencies = [
3331 "adler",3218 "adler",
3332 "autocfg 1.0.1",3219 "autocfg",
3333]3220]
33343221
3335[[package]]3222[[package]]
34163303
3417[[package]]3304[[package]]
3418name = "multihash"3305name = "multihash"
3419version = "0.11.4"3306version = "0.13.2"
3420source = "registry+https://github.com/rust-lang/crates.io-index"3307source = "registry+https://github.com/rust-lang/crates.io-index"
3421checksum = "567122ab6492f49b59def14ecc36e13e64dca4188196dd0cd41f9f3f979f3df6"3308checksum = "4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cab"
3422dependencies = [3309dependencies = [
3423 "blake2b_simd",
3424 "blake2s_simd",
3425 "digest 0.9.0",3310 "digest 0.9.0",
3426 "sha-1 0.9.2",3311 "generic-array 0.14.4",
3312 "multihash-derive",
3427 "sha2 0.9.2",3313 "sha2 0.9.2",
3428 "sha3",
3429 "unsigned-varint 0.5.1",3314 "unsigned-varint 0.5.1",
3430]3315]
3316
3317[[package]]
3318name = "multihash-derive"
3319version = "0.7.1"
3320source = "registry+https://github.com/rust-lang/crates.io-index"
3321checksum = "85ee3c48cb9d9b275ad967a0e96715badc13c6029adb92f34fa17b9ff28fd81f"
3322dependencies = [
3323 "proc-macro-crate",
3324 "proc-macro-error",
3325 "proc-macro2",
3326 "quote",
3327 "syn",
3328 "synstructure",
3329]
34313330
3432[[package]]3331[[package]]
3433name = "multimap"3332name = "multimap"
34373336
3438[[package]]3337[[package]]
3439name = "multistream-select"3338name = "multistream-select"
3440version = "0.8.5"3339version = "0.10.0"
3441source = "registry+https://github.com/rust-lang/crates.io-index"3340source = "registry+https://github.com/rust-lang/crates.io-index"
3442checksum = "93faf2e41f9ee62fb01680ed48f3cc26652352327aa2e59869070358f6b7dd75"3341checksum = "10ddc0eb0117736f19d556355464fc87efc8ad98b29e3fd84f02531eb6e90840"
3443dependencies = [3342dependencies = [
3444 "bytes 0.5.6",3343 "bytes 1.0.1",
3445 "futures 0.3.8",3344 "futures 0.3.12",
3446 "log",3345 "log",
3447 "pin-project 1.0.2",3346 "pin-project 1.0.4",
3448 "smallvec 1.5.1",3347 "smallvec 1.6.1",
3449 "unsigned-varint 0.5.1",3348 "unsigned-varint 0.6.0",
3450]3349]
34513350
3452[[package]]3351[[package]]
3453name = "nalgebra"3352name = "nalgebra"
3454version = "0.18.1"3353version = "0.21.1"
3455source = "registry+https://github.com/rust-lang/crates.io-index"3354source = "registry+https://github.com/rust-lang/crates.io-index"
3456checksum = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2"3355checksum = "d6b6147c3d50b4f3cdabfe2ecc94a0191fd3d6ad58aefd9664cf396285883486"
3457dependencies = [3356dependencies = [
3458 "alga",
3459 "approx",3357 "approx",
3460 "generic-array 0.12.3",3358 "generic-array 0.13.2",
3461 "matrixmultiply",3359 "matrixmultiply",
3462 "num-complex",3360 "num-complex",
3463 "num-rational",3361 "num-rational",
3464 "num-traits",3362 "num-traits",
3465 "rand 0.6.5",3363 "rand 0.7.3",
3364 "rand_distr",
3365 "simba",
3466 "typenum",3366 "typenum",
3467]3367]
34683368
34983398
3499[[package]]3399[[package]]
3500name = "nft"3400name = "nft"
3501version = "2.0.0"3401version = "3.0.0"
3502dependencies = [3402dependencies = [
3503 "flexi_logger",3403 "flexi_logger",
3504 "frame-benchmarking",3404 "frame-benchmarking",
3505 "frame-benchmarking-cli",3405 "frame-benchmarking-cli",
3506 "futures 0.3.8",3406 "futures 0.3.12",
3507 "jsonrpc-core",3407 "jsonrpc-core",
3508 "log",3408 "log",
3509 "nft-runtime",3409 "nft-runtime",
3517 "sc-consensus-aura",3417 "sc-consensus-aura",
3518 "sc-executor",3418 "sc-executor",
3519 "sc-finality-grandpa",3419 "sc-finality-grandpa",
3420 "sc-keystore",
3520 "sc-network",3421 "sc-network",
3521 "sc-rpc",3422 "sc-rpc",
3522 "sc-rpc-api",3423 "sc-rpc-api",
3523 "sc-service",3424 "sc-service",
3425 "sc-telemetry",
3524 "sc-transaction-pool",3426 "sc-transaction-pool",
3525 "serde",3427 "serde",
3526 "serde_json",3428 "serde_json",
35413443
3542[[package]]3444[[package]]
3543name = "nft-runtime"3445name = "nft-runtime"
3544version = "2.0.0"3446version = "3.0.0"
3545dependencies = [3447dependencies = [
3546 "frame-benchmarking",3448 "frame-benchmarking",
3547 "frame-executive",3449 "frame-executive",
3566 "pallet-vesting",3468 "pallet-vesting",
3567 "parity-scale-codec",3469 "parity-scale-codec",
3568 "serde",3470 "serde",
3471 "smallvec 1.6.1",
3569 "sp-api",3472 "sp-api",
3473 "sp-arithmetic",
3570 "sp-block-builder",3474 "sp-block-builder",
3571 "sp-consensus-aura",3475 "sp-consensus-aura",
3572 "sp-core",3476 "sp-core",
3580 "substrate-wasm-builder-runner",3484 "substrate-wasm-builder-runner",
3581]3485]
3582
3583[[package]]
3584name = "nix"
3585version = "0.17.0"
3586source = "registry+https://github.com/rust-lang/crates.io-index"
3587checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
3588dependencies = [
3589 "bitflags",
3590 "cc",
3591 "cfg-if 0.1.10",
3592 "libc",
3593 "void",
3594]
35953486
3596[[package]]3487[[package]]
3597name = "nodrop"3488name = "nodrop"
3621source = "registry+https://github.com/rust-lang/crates.io-index"3512source = "registry+https://github.com/rust-lang/crates.io-index"
3622checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"3513checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
3623dependencies = [3514dependencies = [
3624 "autocfg 1.0.1",3515 "autocfg",
3625 "num-integer",3516 "num-integer",
3626 "num-traits",3517 "num-traits",
3627]3518]
3632source = "registry+https://github.com/rust-lang/crates.io-index"3523source = "registry+https://github.com/rust-lang/crates.io-index"
3633checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"3524checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
3634dependencies = [3525dependencies = [
3635 "autocfg 1.0.1",3526 "autocfg",
3636 "num-traits",3527 "num-traits",
3637]3528]
36383529
3642source = "registry+https://github.com/rust-lang/crates.io-index"3533source = "registry+https://github.com/rust-lang/crates.io-index"
3643checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"3534checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
3644dependencies = [3535dependencies = [
3645 "autocfg 1.0.1",3536 "autocfg",
3646 "num-traits",3537 "num-traits",
3647]3538]
36483539
3652source = "registry+https://github.com/rust-lang/crates.io-index"3543source = "registry+https://github.com/rust-lang/crates.io-index"
3653checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"3544checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
3654dependencies = [3545dependencies = [
3655 "autocfg 1.0.1",3546 "autocfg",
3656 "num-bigint",3547 "num-bigint",
3657 "num-integer",3548 "num-integer",
3658 "num-traits",3549 "num-traits",
3664source = "registry+https://github.com/rust-lang/crates.io-index"3555source = "registry+https://github.com/rust-lang/crates.io-index"
3665checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"3556checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
3666dependencies = [3557dependencies = [
3667 "autocfg 1.0.1",3558 "autocfg",
3668 "libm",3559 "libm",
3669]3560]
36703561
36973588
3698[[package]]3589[[package]]
3699name = "object"3590name = "object"
3700version = "0.22.0"3591version = "0.23.0"
3701source = "registry+https://github.com/rust-lang/crates.io-index"3592source = "registry+https://github.com/rust-lang/crates.io-index"
3702checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397"3593checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4"
3703
3704[[package]]
3705name = "once_cell"
3706version = "0.1.8"
3707source = "registry+https://github.com/rust-lang/crates.io-index"
3708checksum = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37"
3709dependencies = [
3710 "parking_lot 0.7.1",
3711]
37123594
3713[[package]]3595[[package]]
3714name = "once_cell"3596name = "once_cell"
37483630
3749[[package]]3631[[package]]
3750name = "pallet-aura"3632name = "pallet-aura"
3751version = "2.0.0"3633version = "2.0.1"
3752source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3634source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3753dependencies = [3635dependencies = [
3754 "frame-support",3636 "frame-support",
3755 "frame-system",3637 "frame-system",
37673649
3768[[package]]3650[[package]]
3769name = "pallet-authorship"3651name = "pallet-authorship"
3770version = "2.0.0"3652version = "2.0.1"
3771source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3653source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3772dependencies = [3654dependencies = [
3773 "frame-support",3655 "frame-support",
3774 "frame-system",3656 "frame-system",
3775 "impl-trait-for-tuples",3657 "impl-trait-for-tuples 0.2.0",
3776 "parity-scale-codec",3658 "parity-scale-codec",
3777 "sp-authorship",3659 "sp-authorship",
3778 "sp-inherents",3660 "sp-inherents",
37823664
3783[[package]]3665[[package]]
3784name = "pallet-balances"3666name = "pallet-balances"
3785version = "2.0.0"3667version = "2.0.1"
3786source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3668source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3787dependencies = [3669dependencies = [
3788 "frame-benchmarking",3670 "frame-benchmarking",
3789 "frame-support",3671 "frame-support",
37963678
3797[[package]]3679[[package]]
3798name = "pallet-contracts"3680name = "pallet-contracts"
3799version = "2.0.0"3681version = "2.0.1"
3800source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3682source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3801dependencies = [3683dependencies = [
3802 "bitflags",
3803 "frame-support",3684 "frame-support",
3804 "frame-system",3685 "frame-system",
3805 "pallet-contracts-primitives",3686 "pallet-contracts-primitives",
3687 "pallet-contracts-proc-macro",
3806 "parity-scale-codec",3688 "parity-scale-codec",
3807 "parity-wasm",3689 "parity-wasm",
3808 "pwasm-utils",3690 "pwasm-utils 0.16.0",
3809 "serde",3691 "serde",
3810 "sp-core",3692 "sp-core",
3811 "sp-io",3693 "sp-io",
38173699
3818[[package]]3700[[package]]
3819name = "pallet-contracts-primitives"3701name = "pallet-contracts-primitives"
3820version = "2.0.0"3702version = "2.0.1"
3821source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3703source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3822dependencies = [3704dependencies = [
3705 "bitflags",
3823 "parity-scale-codec",3706 "parity-scale-codec",
3824 "sp-runtime",3707 "sp-runtime",
3825 "sp-std",3708 "sp-std",
3826]3709]
3710
3711[[package]]
3712name = "pallet-contracts-proc-macro"
3713version = "0.1.0"
3714source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3715dependencies = [
3716 "proc-macro2",
3717 "quote",
3718 "syn",
3719]
38273720
3828[[package]]3721[[package]]
3829name = "pallet-contracts-rpc"3722name = "pallet-contracts-rpc"
3830version = "0.8.0"3723version = "0.8.1"
3831source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3724source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3832dependencies = [3725dependencies = [
3833 "jsonrpc-core",3726 "jsonrpc-core",
3834 "jsonrpc-core-client",3727 "jsonrpc-core-client",
38463739
3847[[package]]3740[[package]]
3848name = "pallet-contracts-rpc-runtime-api"3741name = "pallet-contracts-rpc-runtime-api"
3849version = "0.8.0"3742version = "0.8.1"
3850source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3743source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3851dependencies = [3744dependencies = [
3852 "pallet-contracts-primitives",3745 "pallet-contracts-primitives",
3853 "parity-scale-codec",3746 "parity-scale-codec",
3856 "sp-std",3749 "sp-std",
3857]3750]
3858
3859[[package]]
3860name = "pallet-finality-tracker"
3861version = "2.0.0"
3862source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
3863dependencies = [
3864 "frame-support",
3865 "frame-system",
3866 "impl-trait-for-tuples",
3867 "parity-scale-codec",
3868 "serde",
3869 "sp-finality-tracker",
3870 "sp-inherents",
3871 "sp-runtime",
3872 "sp-std",
3873]
38743751
3875[[package]]3752[[package]]
3876name = "pallet-grandpa"3753name = "pallet-grandpa"
3877version = "2.0.0"3754version = "2.0.1"
3878source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3755source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3879dependencies = [3756dependencies = [
3880 "frame-benchmarking",3757 "frame-benchmarking",
3881 "frame-support",3758 "frame-support",
3882 "frame-system",3759 "frame-system",
3883 "pallet-authorship",3760 "pallet-authorship",
3884 "pallet-finality-tracker",
3885 "pallet-session",3761 "pallet-session",
3886 "parity-scale-codec",3762 "parity-scale-codec",
3887 "serde",3763 "serde",
38963772
3897[[package]]3773[[package]]
3898name = "pallet-nft"3774name = "pallet-nft"
3899version = "2.0.0"3775version = "3.0.0"
3900dependencies = [3776dependencies = [
3901 "frame-benchmarking",3777 "frame-benchmarking",
3902 "frame-support",3778 "frame-support",
39173793
3918[[package]]3794[[package]]
3919name = "pallet-randomness-collective-flip"3795name = "pallet-randomness-collective-flip"
3920version = "2.0.0"3796version = "2.0.1"
3921source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3797source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3922dependencies = [3798dependencies = [
3923 "frame-support",3799 "frame-support",
3924 "frame-system",3800 "frame-system",
39303806
3931[[package]]3807[[package]]
3932name = "pallet-session"3808name = "pallet-session"
3933version = "2.0.0"3809version = "2.0.1"
3934source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3810source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3935dependencies = [3811dependencies = [
3936 "frame-support",3812 "frame-support",
3937 "frame-system",3813 "frame-system",
3938 "impl-trait-for-tuples",3814 "impl-trait-for-tuples 0.1.3",
3939 "pallet-timestamp",3815 "pallet-timestamp",
3940 "parity-scale-codec",3816 "parity-scale-codec",
3941 "serde",3817 "serde",
39503826
3951[[package]]3827[[package]]
3952name = "pallet-sudo"3828name = "pallet-sudo"
3953version = "2.0.0"3829version = "2.0.1"
3954source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3830source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3955dependencies = [3831dependencies = [
3956 "frame-support",3832 "frame-support",
3957 "frame-system",3833 "frame-system",
39643840
3965[[package]]3841[[package]]
3966name = "pallet-timestamp"3842name = "pallet-timestamp"
3967version = "2.0.0"3843version = "2.0.1"
3968source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3844source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3969dependencies = [3845dependencies = [
3970 "frame-benchmarking",3846 "frame-benchmarking",
3971 "frame-support",3847 "frame-support",
3972 "frame-system",3848 "frame-system",
3973 "impl-trait-for-tuples",3849 "impl-trait-for-tuples 0.2.0",
3974 "parity-scale-codec",3850 "parity-scale-codec",
3975 "serde",3851 "serde",
3976 "sp-inherents",3852 "sp-inherents",
39823858
3983[[package]]3859[[package]]
3984name = "pallet-transaction-payment"3860name = "pallet-transaction-payment"
3985version = "2.0.0"3861version = "2.0.1"
3986source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3862source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
3987dependencies = [3863dependencies = [
3988 "frame-support",3864 "frame-support",
3989 "frame-system",3865 "frame-system",
3990 "pallet-transaction-payment-rpc-runtime-api",
3991 "parity-scale-codec",3866 "parity-scale-codec",
3992 "serde",3867 "serde",
3993 "smallvec 1.5.1",3868 "smallvec 1.6.1",
3994 "sp-core",3869 "sp-core",
3995 "sp-io",3870 "sp-io",
3996 "sp-runtime",3871 "sp-runtime",
39993874
4000[[package]]3875[[package]]
4001name = "pallet-transaction-payment-rpc"3876name = "pallet-transaction-payment-rpc"
4002version = "2.0.0"3877version = "2.0.1"
4003source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3878source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
4004dependencies = [3879dependencies = [
4005 "jsonrpc-core",3880 "jsonrpc-core",
4006 "jsonrpc-core-client",3881 "jsonrpc-core-client",
4007 "jsonrpc-derive",3882 "jsonrpc-derive",
4008 "pallet-transaction-payment-rpc-runtime-api",3883 "pallet-transaction-payment-rpc-runtime-api",
4009 "parity-scale-codec",3884 "parity-scale-codec",
4010 "serde",
4011 "sp-api",3885 "sp-api",
4012 "sp-blockchain",3886 "sp-blockchain",
4013 "sp-core",3887 "sp-core",
40173891
4018[[package]]3892[[package]]
4019name = "pallet-transaction-payment-rpc-runtime-api"3893name = "pallet-transaction-payment-rpc-runtime-api"
4020version = "2.0.0"3894version = "2.0.1"
4021source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3895source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
4022dependencies = [3896dependencies = [
4023 "frame-support",3897 "pallet-transaction-payment",
4024 "parity-scale-codec",3898 "parity-scale-codec",
4025 "serde",
4026 "sp-api",3899 "sp-api",
4027 "sp-runtime",3900 "sp-runtime",
4028 "sp-std",
4029]3901]
40303902
4031[[package]]3903[[package]]
4032name = "pallet-treasury"3904name = "pallet-treasury"
4033version = "2.0.0"3905version = "2.0.1"
4034source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3906source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
4035dependencies = [3907dependencies = [
4036 "frame-support",3908 "frame-support",
4037 "frame-system",3909 "frame-system",
3910 "impl-trait-for-tuples 0.2.0",
4038 "pallet-balances",3911 "pallet-balances",
4039 "parity-scale-codec",3912 "parity-scale-codec",
4040 "serde",3913 "serde",
40443917
4045[[package]]3918[[package]]
4046name = "pallet-vesting"3919name = "pallet-vesting"
4047version = "2.0.0"3920version = "2.0.1"
4048source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"3921source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
4049dependencies = [3922dependencies = [
4050 "enumflags2",3923 "enumflags2",
4051 "frame-support",3924 "frame-support",
40723945
4073[[package]]3946[[package]]
4074name = "parity-multiaddr"3947name = "parity-multiaddr"
4075version = "0.9.6"3948version = "0.11.0"
4076source = "registry+https://github.com/rust-lang/crates.io-index"3949source = "registry+https://github.com/rust-lang/crates.io-index"
4077checksum = "43244a26dc1ddd3097216bb12eaa6cf8a07b060c72718d9ebd60fd297d6401df"3950checksum = "8bfda2e46fc5e14122649e2645645a81ee5844e0fb2e727ef560cc71a8b2d801"
4078dependencies = [3951dependencies = [
4079 "arrayref",3952 "arrayref",
4080 "bs58 0.4.0",3953 "bs58",
4081 "byteorder 1.3.4",3954 "byteorder",
4082 "data-encoding",3955 "data-encoding",
4083 "multihash",3956 "multihash",
4084 "percent-encoding 2.1.0",3957 "percent-encoding 2.1.0",
4085 "serde",3958 "serde",
4086 "static_assertions",3959 "static_assertions",
4087 "unsigned-varint 0.5.1",3960 "unsigned-varint 0.6.0",
4088 "url 2.2.0",3961 "url 2.2.0",
4089]3962]
40903963
4091[[package]]3964[[package]]
4092name = "parity-scale-codec"3965name = "parity-scale-codec"
4093version = "1.3.5"3966version = "1.3.6"
4094source = "registry+https://github.com/rust-lang/crates.io-index"3967source = "registry+https://github.com/rust-lang/crates.io-index"
4095checksum = "7c740e5fbcb6847058b40ac7e5574766c6388f585e184d769910fe0d3a2ca861"3968checksum = "79602888a81ace83e3d1d4b2873286c1f5f906c84db667594e8db8da3506c383"
4096dependencies = [3969dependencies = [
4097 "arrayvec 0.5.2",3970 "arrayvec 0.5.2",
4098 "bitvec",3971 "bitvec",
41404013
4141[[package]]4014[[package]]
4142name = "parity-util-mem"4015name = "parity-util-mem"
4143version = "0.7.0"4016version = "0.8.0"
4144source = "registry+https://github.com/rust-lang/crates.io-index"4017source = "registry+https://github.com/rust-lang/crates.io-index"
4145checksum = "297ff91fa36aec49ce183484b102f6b75b46776822bd81525bfc4cc9b0dd0f5c"4018checksum = "8f17f15cb05897127bf36a240085a1f0bbef7bce3024849eccf7f93f6171bc27"
4146dependencies = [4019dependencies = [
4147 "cfg-if 0.1.10",4020 "cfg-if 1.0.0",
4148 "hashbrown 0.8.2",4021 "hashbrown",
4149 "impl-trait-for-tuples",4022 "impl-trait-for-tuples 0.2.0",
4150 "parity-util-mem-derive",4023 "parity-util-mem-derive",
4151 "parking_lot 0.10.2",4024 "parking_lot 0.11.1",
4152 "primitive-types",4025 "primitive-types",
4153 "smallvec 1.5.1",4026 "smallvec 1.6.1",
4154 "winapi 0.3.9",4027 "winapi 0.3.9",
4155]4028]
41564029
4177source = "registry+https://github.com/rust-lang/crates.io-index"4050source = "registry+https://github.com/rust-lang/crates.io-index"
4178checksum = "9e02a625dd75084c2a7024f07c575b61b782f729d18702dabb3cdbf31911dc61"4051checksum = "9e02a625dd75084c2a7024f07c575b61b782f729d18702dabb3cdbf31911dc61"
4179dependencies = [4052dependencies = [
4180 "byteorder 1.3.4",4053 "byteorder",
4181 "bytes 0.4.12",4054 "bytes 0.4.12",
4182 "httparse",4055 "httparse",
4183 "log",4056 "log",
4195source = "registry+https://github.com/rust-lang/crates.io-index"4068source = "registry+https://github.com/rust-lang/crates.io-index"
4196checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"4069checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
4197
4198[[package]]
4199name = "parking_lot"
4200version = "0.7.1"
4201source = "registry+https://github.com/rust-lang/crates.io-index"
4202checksum = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
4203dependencies = [
4204 "lock_api 0.1.5",
4205 "parking_lot_core 0.4.0",
4206]
42074070
4208[[package]]4071[[package]]
4209name = "parking_lot"4072name = "parking_lot"
4234dependencies = [4097dependencies = [
4235 "instant",4098 "instant",
4236 "lock_api 0.4.2",4099 "lock_api 0.4.2",
4237 "parking_lot_core 0.8.1",4100 "parking_lot_core 0.8.2",
4238]4101]
4239
4240[[package]]
4241name = "parking_lot_core"
4242version = "0.4.0"
4243source = "registry+https://github.com/rust-lang/crates.io-index"
4244checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
4245dependencies = [
4246 "libc",
4247 "rand 0.6.5",
4248 "rustc_version",
4249 "smallvec 0.6.13",
4250 "winapi 0.3.9",
4251]
42524102
4253[[package]]4103[[package]]
4254name = "parking_lot_core"4104name = "parking_lot_core"
4259 "cfg-if 0.1.10",4109 "cfg-if 0.1.10",
4260 "cloudabi",4110 "cloudabi",
4261 "libc",4111 "libc",
4262 "redox_syscall",4112 "redox_syscall 0.1.57",
4263 "rustc_version",4113 "rustc_version",
4264 "smallvec 0.6.13",4114 "smallvec 0.6.14",
4265 "winapi 0.3.9",4115 "winapi 0.3.9",
4266]4116]
42674117
4274 "cfg-if 0.1.10",4124 "cfg-if 0.1.10",
4275 "cloudabi",4125 "cloudabi",
4276 "libc",4126 "libc",
4277 "redox_syscall",4127 "redox_syscall 0.1.57",
4278 "smallvec 1.5.1",4128 "smallvec 1.6.1",
4279 "winapi 0.3.9",4129 "winapi 0.3.9",
4280]4130]
42814131
4282[[package]]4132[[package]]
4283name = "parking_lot_core"4133name = "parking_lot_core"
4284version = "0.8.1"4134version = "0.8.2"
4285source = "registry+https://github.com/rust-lang/crates.io-index"4135source = "registry+https://github.com/rust-lang/crates.io-index"
4286checksum = "d7c6d9b8427445284a09c55be860a15855ab580a417ccad9da88f5a06787ced0"4136checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272"
4287dependencies = [4137dependencies = [
4288 "cfg-if 1.0.0",4138 "cfg-if 1.0.0",
4289 "instant",4139 "instant",
4290 "libc",4140 "libc",
4291 "redox_syscall",4141 "redox_syscall 0.1.57",
4292 "smallvec 1.5.1",4142 "smallvec 1.6.1",
4293 "winapi 0.3.9",4143 "winapi 0.3.9",
4294]4144]
42954145
4318source = "registry+https://github.com/rust-lang/crates.io-index"4168source = "registry+https://github.com/rust-lang/crates.io-index"
4319checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"4169checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9"
4320dependencies = [4170dependencies = [
4321 "byteorder 1.3.4",4171 "byteorder",
4322 "crypto-mac 0.7.0",4172 "crypto-mac 0.7.0",
4323 "rayon",
4324]4173]
4174
4175[[package]]
4176name = "pbkdf2"
4177version = "0.4.0"
4178source = "registry+https://github.com/rust-lang/crates.io-index"
4179checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd"
4180dependencies = [
4181 "crypto-mac 0.8.0",
4182]
4183
4184[[package]]
4185name = "pdqselect"
4186version = "0.1.0"
4187source = "registry+https://github.com/rust-lang/crates.io-index"
4188checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27"
43254189
4326[[package]]4190[[package]]
4327name = "peeking_take_while"4191name = "peeking_take_while"
4341source = "registry+https://github.com/rust-lang/crates.io-index"4205source = "registry+https://github.com/rust-lang/crates.io-index"
4342checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"4206checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
4207
4208[[package]]
4209name = "pest"
4210version = "2.1.3"
4211source = "registry+https://github.com/rust-lang/crates.io-index"
4212checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
4213dependencies = [
4214 "ucd-trie",
4215]
4216
4217[[package]]
4218name = "pest_derive"
4219version = "2.1.0"
4220source = "registry+https://github.com/rust-lang/crates.io-index"
4221checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0"
4222dependencies = [
4223 "pest",
4224 "pest_generator",
4225]
4226
4227[[package]]
4228name = "pest_generator"
4229version = "2.1.3"
4230source = "registry+https://github.com/rust-lang/crates.io-index"
4231checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55"
4232dependencies = [
4233 "pest",
4234 "pest_meta",
4235 "proc-macro2",
4236 "quote",
4237 "syn",
4238]
4239
4240[[package]]
4241name = "pest_meta"
4242version = "2.1.3"
4243source = "registry+https://github.com/rust-lang/crates.io-index"
4244checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d"
4245dependencies = [
4246 "maplit",
4247 "pest",
4248 "sha-1 0.8.2",
4249]
43434250
4344[[package]]4251[[package]]
4345name = "petgraph"4252name = "petgraph"
43624269
4363[[package]]4270[[package]]
4364name = "pin-project"4271name = "pin-project"
4365version = "1.0.2"4272version = "1.0.4"
4366source = "registry+https://github.com/rust-lang/crates.io-index"4273source = "registry+https://github.com/rust-lang/crates.io-index"
4367checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7"4274checksum = "95b70b68509f17aa2857863b6fa00bf21fc93674c7a8893de2f469f6aa7ca2f2"
4368dependencies = [4275dependencies = [
4369 "pin-project-internal 1.0.2",4276 "pin-project-internal 1.0.4",
4370]4277]
43714278
4372[[package]]4279[[package]]
43824289
4383[[package]]4290[[package]]
4384name = "pin-project-internal"4291name = "pin-project-internal"
4385version = "1.0.2"4292version = "1.0.4"
4386source = "registry+https://github.com/rust-lang/crates.io-index"4293source = "registry+https://github.com/rust-lang/crates.io-index"
4387checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f"4294checksum = "caa25a6393f22ce819b0f50e0be89287292fda8d425be38ee0ca14c4931d9e71"
4388dependencies = [4295dependencies = [
4389 "proc-macro2",4296 "proc-macro2",
4390 "quote",4297 "quote",
43994306
4400[[package]]4307[[package]]
4401name = "pin-project-lite"4308name = "pin-project-lite"
4402version = "0.2.0"4309version = "0.2.4"
4403source = "registry+https://github.com/rust-lang/crates.io-index"4310source = "registry+https://github.com/rust-lang/crates.io-index"
4404checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c"4311checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827"
44054312
4406[[package]]4313[[package]]
4407name = "pin-utils"4314name = "pin-utils"
44464353
4447[[package]]4354[[package]]
4448name = "polyval"4355name = "polyval"
4449version = "0.4.3"4356version = "0.4.5"
4450source = "registry+https://github.com/rust-lang/crates.io-index"4357source = "registry+https://github.com/rust-lang/crates.io-index"
4451checksum = "b4fd92d8e0c06d08525d2e2643cc2b5c80c69ae8eb12c18272d501cd7079ccc0"4358checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd"
4452dependencies = [4359dependencies = [
4453 "cpuid-bool 0.2.0",4360 "cpuid-bool 0.2.0",
4361 "opaque-debug 0.3.0",
4454 "universal-hash",4362 "universal-hash",
4455]4363]
44564364
44624370
4463[[package]]4371[[package]]
4464name = "primitive-types"4372name = "primitive-types"
4465version = "0.7.3"4373version = "0.8.0"
4466source = "registry+https://github.com/rust-lang/crates.io-index"4374source = "registry+https://github.com/rust-lang/crates.io-index"
4467checksum = "7dd39dcacf71411ba488570da7bbc89b717225e46478b30ba99b92db6b149809"4375checksum = "b3824ae2c5e27160113b9e029a10ec9e3f0237bad8029f69c7724393c9fdefd8"
4468dependencies = [4376dependencies = [
4469 "fixed-hash",4377 "fixed-hash",
4470 "impl-codec",4378 "impl-codec",
45134421
4514[[package]]4422[[package]]
4515name = "proc-macro-nested"4423name = "proc-macro-nested"
4516version = "0.1.6"4424version = "0.1.7"
4517source = "registry+https://github.com/rust-lang/crates.io-index"4425source = "registry+https://github.com/rust-lang/crates.io-index"
4518checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"4426checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
45194427
4520[[package]]4428[[package]]
4521name = "proc-macro2"4429name = "proc-macro2"
45424450
4543[[package]]4451[[package]]
4544name = "prost"4452name = "prost"
4545version = "0.6.1"4453version = "0.7.0"
4546source = "registry+https://github.com/rust-lang/crates.io-index"4454source = "registry+https://github.com/rust-lang/crates.io-index"
4547checksum = "ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212"4455checksum = "9e6984d2f1a23009bd270b8bb56d0926810a3d483f59c987d77969e9d8e840b2"
4548dependencies = [4456dependencies = [
4549 "bytes 0.5.6",4457 "bytes 1.0.1",
4550 "prost-derive",4458 "prost-derive",
4551]4459]
45524460
4553[[package]]4461[[package]]
4554name = "prost-build"4462name = "prost-build"
4555version = "0.6.1"4463version = "0.7.0"
4556source = "registry+https://github.com/rust-lang/crates.io-index"4464source = "registry+https://github.com/rust-lang/crates.io-index"
4557checksum = "02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26"4465checksum = "32d3ebd75ac2679c2af3a92246639f9fcc8a442ee420719cc4fe195b98dd5fa3"
4558dependencies = [4466dependencies = [
4559 "bytes 0.5.6",4467 "bytes 1.0.1",
4560 "heck",4468 "heck",
4561 "itertools 0.8.2",4469 "itertools",
4562 "log",4470 "log",
4563 "multimap",4471 "multimap",
4564 "petgraph",4472 "petgraph",
4565 "prost",4473 "prost",
4566 "prost-types",4474 "prost-types",
4567 "tempfile",4475 "tempfile",
4568 "which",4476 "which 4.0.2",
4569]4477]
45704478
4571[[package]]4479[[package]]
4572name = "prost-derive"4480name = "prost-derive"
4573version = "0.6.1"4481version = "0.7.0"
4574source = "registry+https://github.com/rust-lang/crates.io-index"4482source = "registry+https://github.com/rust-lang/crates.io-index"
4575checksum = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72"4483checksum = "169a15f3008ecb5160cba7d37bcd690a7601b6d30cfb87a117d45e59d52af5d4"
4576dependencies = [4484dependencies = [
4577 "anyhow",4485 "anyhow",
4578 "itertools 0.8.2",4486 "itertools",
4579 "proc-macro2",4487 "proc-macro2",
4580 "quote",4488 "quote",
4581 "syn",4489 "syn",
4582]4490]
45834491
4584[[package]]4492[[package]]
4585name = "prost-types"4493name = "prost-types"
4586version = "0.6.1"4494version = "0.7.0"
4587source = "registry+https://github.com/rust-lang/crates.io-index"4495source = "registry+https://github.com/rust-lang/crates.io-index"
4588checksum = "1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa"4496checksum = "b518d7cdd93dab1d1122cf07fa9a60771836c668dde9d9e2a139f957f0d9f1bb"
4589dependencies = [4497dependencies = [
4590 "bytes 0.5.6",4498 "bytes 1.0.1",
4591 "prost",4499 "prost",
4592]4500]
45934501
4597source = "registry+https://github.com/rust-lang/crates.io-index"4505source = "registry+https://github.com/rust-lang/crates.io-index"
4598checksum = "0f53bc2558e8376358ebdc28301546471d67336584f6438ed4b7c7457a055fd7"4506checksum = "0f53bc2558e8376358ebdc28301546471d67336584f6438ed4b7c7457a055fd7"
4599dependencies = [4507dependencies = [
4600 "byteorder 1.3.4",4508 "byteorder",
4601 "log",4509 "log",
4602 "parity-wasm",4510 "parity-wasm",
4603]4511]
4512
4513[[package]]
4514name = "pwasm-utils"
4515version = "0.16.0"
4516source = "registry+https://github.com/rust-lang/crates.io-index"
4517checksum = "1c8ac87af529432d3a4f0e2b3bbf08af49f28f09cc73ed7e551161bdaef5f78d"
4518dependencies = [
4519 "byteorder",
4520 "log",
4521 "parity-wasm",
4522]
46044523
4605[[package]]4524[[package]]
4606name = "quick-error"4525name = "quick-error"
4607version = "1.2.3"4526version = "1.2.3"
4608source = "registry+https://github.com/rust-lang/crates.io-index"4527source = "registry+https://github.com/rust-lang/crates.io-index"
4609checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"4528checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
4529
4530[[package]]
4531name = "quick-error"
4532version = "2.0.0"
4533source = "registry+https://github.com/rust-lang/crates.io-index"
4534checksum = "3ac73b1112776fc109b2e61909bc46c7e1bf0d7f690ffb1676553acce16d5cda"
46104535
4611[[package]]4536[[package]]
4612name = "quicksink"4537name = "quicksink"
46214546
4622[[package]]4547[[package]]
4623name = "quote"4548name = "quote"
4624version = "1.0.7"4549version = "1.0.8"
4625source = "registry+https://github.com/rust-lang/crates.io-index"4550source = "registry+https://github.com/rust-lang/crates.io-index"
4626checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"4551checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df"
4627dependencies = [4552dependencies = [
4628 "proc-macro2",4553 "proc-macro2",
4629]4554]
4657 "winapi 0.3.9",4582 "winapi 0.3.9",
4658]4583]
4659
4660[[package]]
4661name = "rand"
4662version = "0.5.6"
4663source = "registry+https://github.com/rust-lang/crates.io-index"
4664checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9"
4665dependencies = [
4666 "cloudabi",
4667 "fuchsia-cprng",
4668 "libc",
4669 "rand_core 0.3.1",
4670 "winapi 0.3.9",
4671]
4672
4673[[package]]
4674name = "rand"
4675version = "0.6.5"
4676source = "registry+https://github.com/rust-lang/crates.io-index"
4677checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
4678dependencies = [
4679 "autocfg 0.1.7",
4680 "libc",
4681 "rand_chacha 0.1.1",
4682 "rand_core 0.4.2",
4683 "rand_hc 0.1.0",
4684 "rand_isaac",
4685 "rand_jitter",
4686 "rand_os",
4687 "rand_pcg 0.1.2",
4688 "rand_xorshift",
4689 "winapi 0.3.9",
4690]
46914584
4692[[package]]4585[[package]]
4693name = "rand"4586name = "rand"
4694version = "0.7.3"4587version = "0.7.3"
4695source = "registry+https://github.com/rust-lang/crates.io-index"4588source = "registry+https://github.com/rust-lang/crates.io-index"
4696checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"4589checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
4697dependencies = [4590dependencies = [
4698 "getrandom 0.1.15",4591 "getrandom 0.1.16",
4699 "libc",4592 "libc",
4700 "rand_chacha 0.2.2",4593 "rand_chacha 0.2.2",
4701 "rand_core 0.5.1",4594 "rand_core 0.5.1",
4702 "rand_hc 0.2.0",4595 "rand_hc 0.2.0",
4703 "rand_pcg 0.2.1",4596 "rand_pcg",
4704]4597]
47054598
4706[[package]]4599[[package]]
4707name = "rand_chacha"4600name = "rand"
4708version = "0.1.1"4601version = "0.8.3"
4709source = "registry+https://github.com/rust-lang/crates.io-index"4602source = "registry+https://github.com/rust-lang/crates.io-index"
4710checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"4603checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
4711dependencies = [4604dependencies = [
4605 "libc",
4712 "autocfg 0.1.7",4606 "rand_chacha 0.3.0",
4713 "rand_core 0.3.1",4607 "rand_core 0.6.1",
4608 "rand_hc 0.3.0",
4714]4609]
47154610
4716[[package]]4611[[package]]
4723 "rand_core 0.5.1",4618 "rand_core 0.5.1",
4724]4619]
4620
4621[[package]]
4622name = "rand_chacha"
4623version = "0.3.0"
4624source = "registry+https://github.com/rust-lang/crates.io-index"
4625checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
4626dependencies = [
4627 "ppv-lite86",
4628 "rand_core 0.6.1",
4629]
47254630
4726[[package]]4631[[package]]
4727name = "rand_core"4632name = "rand_core"
4744source = "registry+https://github.com/rust-lang/crates.io-index"4649source = "registry+https://github.com/rust-lang/crates.io-index"
4745checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"4650checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
4746dependencies = [4651dependencies = [
4747 "getrandom 0.1.15",4652 "getrandom 0.1.16",
4748]4653]
4654
4655[[package]]
4656name = "rand_core"
4657version = "0.6.1"
4658source = "registry+https://github.com/rust-lang/crates.io-index"
4659checksum = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5"
4660dependencies = [
4661 "getrandom 0.2.2",
4662]
47494663
4750[[package]]4664[[package]]
4751name = "rand_hc"4665name = "rand_distr"
4752version = "0.1.0"4666version = "0.2.2"
4753source = "registry+https://github.com/rust-lang/crates.io-index"4667source = "registry+https://github.com/rust-lang/crates.io-index"
4754checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"4668checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2"
4755dependencies = [4669dependencies = [
4756 "rand_core 0.3.1",4670 "rand 0.7.3",
4757]4671]
47584672
4759[[package]]4673[[package]]
4765 "rand_core 0.5.1",4679 "rand_core 0.5.1",
4766]4680]
4767
4768[[package]]
4769name = "rand_isaac"
4770version = "0.1.1"
4771source = "registry+https://github.com/rust-lang/crates.io-index"
4772checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
4773dependencies = [
4774 "rand_core 0.3.1",
4775]
4776
4777[[package]]
4778name = "rand_jitter"
4779version = "0.1.4"
4780source = "registry+https://github.com/rust-lang/crates.io-index"
4781checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
4782dependencies = [
4783 "libc",
4784 "rand_core 0.4.2",
4785 "winapi 0.3.9",
4786]
47874681
4788[[package]]4682[[package]]
4789name = "rand_os"4683name = "rand_hc"
4790version = "0.1.3"4684version = "0.3.0"
4791source = "registry+https://github.com/rust-lang/crates.io-index"4685source = "registry+https://github.com/rust-lang/crates.io-index"
4792checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"4686checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
4793dependencies = [4687dependencies = [
4794 "cloudabi",
4795 "fuchsia-cprng",
4796 "libc",
4797 "rand_core 0.4.2",4688 "rand_core 0.6.1",
4798 "rdrand",
4799 "winapi 0.3.9",
4800]4689]
4801
4802[[package]]
4803name = "rand_pcg"
4804version = "0.1.2"
4805source = "registry+https://github.com/rust-lang/crates.io-index"
4806checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
4807dependencies = [
4808 "autocfg 0.1.7",
4809 "rand_core 0.4.2",
4810]
48114690
4812[[package]]4691[[package]]
4813name = "rand_pcg"4692name = "rand_pcg"
4818 "rand_core 0.5.1",4697 "rand_core 0.5.1",
4819]4698]
4820
4821[[package]]
4822name = "rand_xorshift"
4823version = "0.1.1"
4824source = "registry+https://github.com/rust-lang/crates.io-index"
4825checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
4826dependencies = [
4827 "rand_core 0.3.1",
4828]
48294699
4830[[package]]4700[[package]]
4831name = "raw-cpuid"4701name = "raw-cpuid"
4832version = "7.0.3"4702version = "7.0.4"
4833source = "registry+https://github.com/rust-lang/crates.io-index"4703source = "registry+https://github.com/rust-lang/crates.io-index"
4834checksum = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf"4704checksum = "beb71f708fe39b2c5e98076204c3cc094ee5a4c12c4cdb119a2b72dc34164f41"
4835dependencies = [4705dependencies = [
4836 "bitflags",4706 "bitflags",
4837 "cc",4707 "cc",
4850source = "registry+https://github.com/rust-lang/crates.io-index"4720source = "registry+https://github.com/rust-lang/crates.io-index"
4851checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"4721checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
4852dependencies = [4722dependencies = [
4853 "autocfg 1.0.1",4723 "autocfg",
4854 "crossbeam-deque 0.8.0",4724 "crossbeam-deque 0.8.0",
4855 "either",4725 "either",
4856 "rayon-core",4726 "rayon-core",
4884source = "registry+https://github.com/rust-lang/crates.io-index"4754source = "registry+https://github.com/rust-lang/crates.io-index"
4885checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"4755checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
4756
4757[[package]]
4758name = "redox_syscall"
4759version = "0.2.4"
4760source = "registry+https://github.com/rust-lang/crates.io-index"
4761checksum = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570"
4762dependencies = [
4763 "bitflags",
4764]
48864765
4887[[package]]4766[[package]]
4888name = "redox_users"4767name = "redox_users"
4889version = "0.3.5"4768version = "0.3.5"
4890source = "registry+https://github.com/rust-lang/crates.io-index"4769source = "registry+https://github.com/rust-lang/crates.io-index"
4891checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"4770checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"
4892dependencies = [4771dependencies = [
4893 "getrandom 0.1.15",4772 "getrandom 0.1.16",
4894 "redox_syscall",4773 "redox_syscall 0.1.57",
4895 "rust-argon2",4774 "rust-argon2",
4896]4775]
48974776
4898[[package]]4777[[package]]
4899name = "ref-cast"4778name = "ref-cast"
4900version = "1.0.3"4779version = "1.0.6"
4901source = "registry+https://github.com/rust-lang/crates.io-index"4780source = "registry+https://github.com/rust-lang/crates.io-index"
4902checksum = "e17626b2f4bcf35b84bf379072a66e28cfe5c3c6ae58b38e4914bb8891dabece"4781checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da"
4903dependencies = [4782dependencies = [
4904 "ref-cast-impl",4783 "ref-cast-impl",
4905]4784]
49064785
4907[[package]]4786[[package]]
4908name = "ref-cast-impl"4787name = "ref-cast-impl"
4909version = "1.0.3"4788version = "1.0.6"
4910source = "registry+https://github.com/rust-lang/crates.io-index"4789source = "registry+https://github.com/rust-lang/crates.io-index"
4911checksum = "0c523ccaed8ac4b0288948849a350b37d3035827413c458b6a40ddb614bb4f72"4790checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2"
4912dependencies = [4791dependencies = [
4913 "proc-macro2",4792 "proc-macro2",
4914 "quote",4793 "quote",
4923dependencies = [4802dependencies = [
4924 "log",4803 "log",
4925 "rustc-hash",4804 "rustc-hash",
4926 "smallvec 1.5.1",4805 "smallvec 1.6.1",
4927]4806]
49284807
4929[[package]]4808[[package]]
4930name = "regex"4809name = "regex"
4931version = "1.4.2"4810version = "1.4.3"
4932source = "registry+https://github.com/rust-lang/crates.io-index"4811source = "registry+https://github.com/rust-lang/crates.io-index"
4933checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c"4812checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a"
4934dependencies = [4813dependencies = [
4935 "aho-corasick",4814 "aho-corasick",
4936 "memchr",4815 "memchr",
4944source = "registry+https://github.com/rust-lang/crates.io-index"4823source = "registry+https://github.com/rust-lang/crates.io-index"
4945checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4"4824checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4"
4946dependencies = [4825dependencies = [
4947 "byteorder 1.3.4",4826 "byteorder",
4948 "regex-syntax",4827 "regex-syntax",
4949]4828]
49504829
4951[[package]]4830[[package]]
4952name = "regex-syntax"4831name = "regex-syntax"
4953version = "0.6.21"4832version = "0.6.22"
4954source = "registry+https://github.com/rust-lang/crates.io-index"4833source = "registry+https://github.com/rust-lang/crates.io-index"
4955checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189"4834checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581"
49564835
4957[[package]]4836[[package]]
4958name = "region"4837name = "region"
49774856
4978[[package]]4857[[package]]
4979name = "retain_mut"4858name = "retain_mut"
4980version = "0.1.1"4859version = "0.1.2"
4981source = "registry+https://github.com/rust-lang/crates.io-index"4860source = "registry+https://github.com/rust-lang/crates.io-index"
4982checksum = "e005d658ad26eacc2b6c506dfde519f4e277e328d0eb3379ca61647d70a8f531"4861checksum = "53552c6c49e1e13f1a203ef0080ab3bbef0beb570a528993e83df057a9d9bba1"
49834862
4984[[package]]4863[[package]]
4985name = "ring"4864name = "ring"
4989dependencies = [4868dependencies = [
4990 "cc",4869 "cc",
4991 "libc",4870 "libc",
4992 "once_cell 1.5.2",4871 "once_cell",
4993 "spin",4872 "spin",
4994 "untrusted",4873 "untrusted",
4995 "web-sys",4874 "web-sys",
50084887
5009[[package]]4888[[package]]
5010name = "rpassword"4889name = "rpassword"
5011version = "4.0.5"4890version = "5.0.1"
5012source = "registry+https://github.com/rust-lang/crates.io-index"4891source = "registry+https://github.com/rust-lang/crates.io-index"
5013checksum = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f"4892checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb"
5014dependencies = [4893dependencies = [
5015 "libc",4894 "libc",
5016 "winapi 0.3.9",4895 "winapi 0.3.9",
5068 "webpki",4947 "webpki",
5069]4948]
4949
4950[[package]]
4951name = "rustls"
4952version = "0.19.0"
4953source = "registry+https://github.com/rust-lang/crates.io-index"
4954checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b"
4955dependencies = [
4956 "base64 0.13.0",
4957 "log",
4958 "ring",
4959 "sct",
4960 "webpki",
4961]
50704962
5071[[package]]4963[[package]]
5072name = "rustls-native-certs"4964name = "rustls-native-certs"
5075checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8"4967checksum = "629d439a7672da82dd955498445e496ee2096fe2117b9f796558a43fdb9e59b8"
5076dependencies = [4968dependencies = [
5077 "openssl-probe",4969 "openssl-probe",
5078 "rustls",4970 "rustls 0.18.1",
5079 "schannel",4971 "schannel",
5080 "security-framework",4972 "security-framework",
5081]4973]
5086source = "registry+https://github.com/rust-lang/crates.io-index"4978source = "registry+https://github.com/rust-lang/crates.io-index"
5087checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020"4979checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020"
5088dependencies = [4980dependencies = [
5089 "futures 0.3.8",4981 "futures 0.3.12",
5090 "pin-project 0.4.27",4982 "pin-project 0.4.27",
5091 "static_assertions",4983 "static_assertions",
5092]4984]
51085000
5109[[package]]5001[[package]]
5110name = "salsa20"5002name = "salsa20"
5111version = "0.6.0"5003version = "0.7.2"
5112source = "registry+https://github.com/rust-lang/crates.io-index"5004source = "registry+https://github.com/rust-lang/crates.io-index"
5113checksum = "c7f47b10fa80f6969bbbd9c8e7cc998f082979d402a9e10579e2303a87955395"5005checksum = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15"
5114dependencies = [5006dependencies = [
5115 "stream-cipher",5007 "cipher",
5116]5008]
51175009
5118[[package]]5010[[package]]
5119name = "sc-basic-authorship"5011name = "sc-basic-authorship"
5120version = "0.8.0"5012version = "0.8.1"
5121source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5013source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5122dependencies = [5014dependencies = [
5123 "futures 0.3.8",5015 "futures 0.3.12",
5124 "futures-timer 3.0.2",5016 "futures-timer 3.0.2",
5125 "log",5017 "log",
5126 "parity-scale-codec",5018 "parity-scale-codec",
5136 "sp-runtime",5028 "sp-runtime",
5137 "sp-transaction-pool",5029 "sp-transaction-pool",
5138 "substrate-prometheus-endpoint",5030 "substrate-prometheus-endpoint",
5139 "tokio-executor 0.2.0-alpha.6",
5140]5031]
51415032
5142[[package]]5033[[package]]
5143name = "sc-block-builder"5034name = "sc-block-builder"
5144version = "0.8.0"5035version = "0.8.1"
5145source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5036source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5146dependencies = [5037dependencies = [
5147 "parity-scale-codec",5038 "parity-scale-codec",
5148 "sc-client-api",5039 "sc-client-api",
51585049
5159[[package]]5050[[package]]
5160name = "sc-chain-spec"5051name = "sc-chain-spec"
5161version = "2.0.0"5052version = "2.0.1"
5162source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5053source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5163dependencies = [5054dependencies = [
5164 "impl-trait-for-tuples",5055 "impl-trait-for-tuples 0.2.0",
5165 "parity-scale-codec",5056 "parity-scale-codec",
5166 "sc-chain-spec-derive",5057 "sc-chain-spec-derive",
5058 "sc-consensus-babe",
5059 "sc-consensus-epochs",
5060 "sc-finality-grandpa",
5167 "sc-network",5061 "sc-network",
5168 "sc-telemetry",5062 "sc-telemetry",
5169 "serde",5063 "serde",
5170 "serde_json",5064 "serde_json",
5171 "sp-chain-spec",5065 "sp-chain-spec",
5066 "sp-consensus-babe",
5172 "sp-core",5067 "sp-core",
5173 "sp-runtime",5068 "sp-runtime",
5174]5069]
51755070
5176[[package]]5071[[package]]
5177name = "sc-chain-spec-derive"5072name = "sc-chain-spec-derive"
5178version = "2.0.0"5073version = "2.0.1"
5179source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5074source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5180dependencies = [5075dependencies = [
5181 "proc-macro-crate",5076 "proc-macro-crate",
5182 "proc-macro2",5077 "proc-macro2",
51865081
5187[[package]]5082[[package]]
5188name = "sc-cli"5083name = "sc-cli"
5189version = "0.8.0"5084version = "0.8.1"
5190source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5085source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5191dependencies = [5086dependencies = [
5192 "ansi_term 0.12.1",
5193 "atty",
5194 "bip39",
5195 "chrono",5087 "chrono",
5196 "derive_more",
5197 "fdlimit",5088 "fdlimit",
5198 "flexi_logger",
5199 "futures 0.3.8",5089 "futures 0.3.12",
5200 "hex",5090 "hex",
5201 "lazy_static",
5202 "libp2p",5091 "libp2p",
5203 "log",5092 "log",
5204 "names",5093 "names",
5205 "nix",
5206 "parity-scale-codec",5094 "parity-scale-codec",
5207 "parity-util-mem",
5208 "rand 0.7.3",5095 "rand 0.7.3",
5209 "regex",5096 "regex",
5210 "rpassword",5097 "rpassword",
5211 "sc-client-api",5098 "sc-client-api",
5212 "sc-informant",
5213 "sc-keystore",5099 "sc-keystore",
5214 "sc-network",5100 "sc-network",
5215 "sc-service",5101 "sc-service",
5220 "sp-blockchain",5106 "sp-blockchain",
5221 "sp-core",5107 "sp-core",
5222 "sp-keyring",5108 "sp-keyring",
5109 "sp-keystore",
5223 "sp-panic-handler",5110 "sp-panic-handler",
5224 "sp-runtime",5111 "sp-runtime",
5225 "sp-state-machine",
5226 "sp-utils",5112 "sp-utils",
5227 "sp-version",5113 "sp-version",
5228 "structopt",5114 "structopt",
5229 "substrate-prometheus-endpoint",5115 "thiserror",
5230 "time",5116 "tiny-bip39",
5231 "tokio 0.2.24",5117 "tokio 0.2.24",
5232 "tracing",
5233 "tracing-log",
5234 "tracing-subscriber",
5235]5118]
52365119
5237[[package]]5120[[package]]
5238name = "sc-client-api"5121name = "sc-client-api"
5239version = "2.0.0"5122version = "2.0.1"
5240source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5123source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5241dependencies = [5124dependencies = [
5242 "derive_more",5125 "derive_more",
5243 "fnv",5126 "fnv",
5244 "futures 0.3.8",5127 "futures 0.3.12",
5245 "hash-db",5128 "hash-db",
5246 "hex-literal",
5247 "kvdb",5129 "kvdb",
5248 "lazy_static",5130 "lazy_static",
5249 "log",5131 "log",
5250 "parity-scale-codec",5132 "parity-scale-codec",
5251 "parking_lot 0.10.2",5133 "parking_lot 0.11.1",
5252 "sc-executor",5134 "sc-executor",
5253 "sc-telemetry",
5254 "sp-api",5135 "sp-api",
5255 "sp-blockchain",5136 "sp-blockchain",
5256 "sp-consensus",5137 "sp-consensus",
5257 "sp-core",5138 "sp-core",
5258 "sp-database",5139 "sp-database",
5259 "sp-externalities",5140 "sp-externalities",
5260 "sp-inherents",5141 "sp-inherents",
5261 "sp-keyring",5142 "sp-keystore",
5262 "sp-runtime",5143 "sp-runtime",
5263 "sp-state-machine",5144 "sp-state-machine",
5264 "sp-std",5145 "sp-std",
52725153
5273[[package]]5154[[package]]
5274name = "sc-client-db"5155name = "sc-client-db"
5275version = "0.8.0"5156version = "0.8.1"
5276source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5157source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5277dependencies = [5158dependencies = [
5278 "blake2-rfc",5159 "blake2-rfc",
5279 "hash-db",5160 "hash-db",
5285 "parity-db",5166 "parity-db",
5286 "parity-scale-codec",5167 "parity-scale-codec",
5287 "parity-util-mem",5168 "parity-util-mem",
5288 "parking_lot 0.10.2",5169 "parking_lot 0.11.1",
5289 "sc-client-api",5170 "sc-client-api",
5290 "sc-executor",5171 "sc-executor",
5291 "sc-state-db",5172 "sc-state-db",
53025183
5303[[package]]5184[[package]]
5304name = "sc-consensus"5185name = "sc-consensus"
5305version = "0.8.0"5186version = "0.8.1"
5306source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5187source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5307dependencies = [5188dependencies = [
5308 "sc-client-api",5189 "sc-client-api",
5309 "sp-blockchain",5190 "sp-blockchain",
53135194
5314[[package]]5195[[package]]
5315name = "sc-consensus-aura"5196name = "sc-consensus-aura"
5316version = "0.8.0"5197version = "0.8.1"
5317source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5198source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5318dependencies = [5199dependencies = [
5319 "derive_more",5200 "derive_more",
5320 "futures 0.3.8",5201 "futures 0.3.12",
5321 "futures-timer 3.0.2",5202 "futures-timer 3.0.2",
5322 "log",5203 "log",
5323 "parity-scale-codec",5204 "parity-scale-codec",
5324 "parking_lot 0.10.2",5205 "parking_lot 0.11.1",
5325 "sc-block-builder",5206 "sc-block-builder",
5326 "sc-client-api",5207 "sc-client-api",
5327 "sc-consensus-slots",5208 "sc-consensus-slots",
5328 "sc-keystore",
5329 "sc-telemetry",5209 "sc-telemetry",
5330 "sp-api",5210 "sp-api",
5331 "sp-application-crypto",5211 "sp-application-crypto",
5336 "sp-core",5216 "sp-core",
5337 "sp-inherents",5217 "sp-inherents",
5338 "sp-io",5218 "sp-io",
5219 "sp-keystore",
5339 "sp-runtime",5220 "sp-runtime",
5340 "sp-timestamp",5221 "sp-timestamp",
5341 "sp-version",5222 "sp-version",
5342 "substrate-prometheus-endpoint",5223 "substrate-prometheus-endpoint",
5343]5224]
5225
5226[[package]]
5227name = "sc-consensus-babe"
5228version = "0.8.1"
5229source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5230dependencies = [
5231 "derive_more",
5232 "fork-tree",
5233 "futures 0.3.12",
5234 "futures-timer 3.0.2",
5235 "log",
5236 "merlin",
5237 "num-bigint",
5238 "num-rational",
5239 "num-traits",
5240 "parity-scale-codec",
5241 "parking_lot 0.11.1",
5242 "pdqselect",
5243 "rand 0.7.3",
5244 "retain_mut",
5245 "sc-client-api",
5246 "sc-consensus-epochs",
5247 "sc-consensus-slots",
5248 "sc-consensus-uncles",
5249 "sc-keystore",
5250 "sc-telemetry",
5251 "schnorrkel",
5252 "serde",
5253 "sp-api",
5254 "sp-application-crypto",
5255 "sp-block-builder",
5256 "sp-blockchain",
5257 "sp-consensus",
5258 "sp-consensus-babe",
5259 "sp-consensus-vrf",
5260 "sp-core",
5261 "sp-inherents",
5262 "sp-io",
5263 "sp-keystore",
5264 "sp-runtime",
5265 "sp-timestamp",
5266 "sp-utils",
5267 "sp-version",
5268 "substrate-prometheus-endpoint",
5269]
5270
5271[[package]]
5272name = "sc-consensus-epochs"
5273version = "0.8.1"
5274source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5275dependencies = [
5276 "fork-tree",
5277 "parity-scale-codec",
5278 "parking_lot 0.11.1",
5279 "sc-client-api",
5280 "sp-blockchain",
5281 "sp-runtime",
5282]
53445283
5345[[package]]5284[[package]]
5346name = "sc-consensus-slots"5285name = "sc-consensus-slots"
5347version = "0.8.0"5286version = "0.8.1"
5348source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5287source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5349dependencies = [5288dependencies = [
5350 "futures 0.3.8",5289 "futures 0.3.12",
5351 "futures-timer 3.0.2",5290 "futures-timer 3.0.2",
5352 "log",5291 "log",
5353 "parity-scale-codec",5292 "parity-scale-codec",
5354 "parking_lot 0.10.2",5293 "parking_lot 0.11.1",
5355 "sc-client-api",5294 "sc-client-api",
5356 "sc-telemetry",5295 "sc-telemetry",
5357 "sp-api",5296 "sp-api",
5358 "sp-application-crypto",5297 "sp-application-crypto",
5298 "sp-arithmetic",
5359 "sp-blockchain",5299 "sp-blockchain",
5360 "sp-consensus",5300 "sp-consensus",
5361 "sp-consensus-slots",5301 "sp-consensus-slots",
5362 "sp-core",5302 "sp-core",
5363 "sp-inherents",5303 "sp-inherents",
5364 "sp-runtime",5304 "sp-runtime",
5365 "sp-state-machine",5305 "sp-state-machine",
5306 "sp-trie",
5307 "thiserror",
5366]5308]
5309
5310[[package]]
5311name = "sc-consensus-uncles"
5312version = "0.8.1"
5313source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5314dependencies = [
5315 "log",
5316 "sc-client-api",
5317 "sp-authorship",
5318 "sp-consensus",
5319 "sp-core",
5320 "sp-inherents",
5321 "sp-runtime",
5322]
53675323
5368[[package]]5324[[package]]
5369name = "sc-executor"5325name = "sc-executor"
5370version = "0.8.0"5326version = "0.8.1"
5371source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5327source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5372dependencies = [5328dependencies = [
5373 "derive_more",5329 "derive_more",
5374 "lazy_static",5330 "lazy_static",
5375 "libsecp256k1",5331 "libsecp256k1",
5376 "log",5332 "log",
5377 "parity-scale-codec",5333 "parity-scale-codec",
5378 "parity-wasm",5334 "parity-wasm",
5379 "parking_lot 0.10.2",5335 "parking_lot 0.11.1",
5380 "sc-executor-common",5336 "sc-executor-common",
5381 "sc-executor-wasmi",5337 "sc-executor-wasmi",
5382 "sc-executor-wasmtime",5338 "sc-executor-wasmtime",
5387 "sp-panic-handler",5343 "sp-panic-handler",
5388 "sp-runtime-interface",5344 "sp-runtime-interface",
5389 "sp-serializer",5345 "sp-serializer",
5346 "sp-tasks",
5390 "sp-trie",5347 "sp-trie",
5391 "sp-version",5348 "sp-version",
5392 "sp-wasm-interface",5349 "sp-wasm-interface",
53955352
5396[[package]]5353[[package]]
5397name = "sc-executor-common"5354name = "sc-executor-common"
5398version = "0.8.0"5355version = "0.8.1"
5399source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5356source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5400dependencies = [5357dependencies = [
5401 "derive_more",5358 "derive_more",
5402 "log",
5403 "parity-scale-codec",5359 "parity-scale-codec",
5404 "parity-wasm",5360 "parity-wasm",
5405 "sp-allocator",5361 "sp-allocator",
5406 "sp-core",5362 "sp-core",
5407 "sp-runtime-interface",
5408 "sp-serializer",5363 "sp-serializer",
5409 "sp-wasm-interface",5364 "sp-wasm-interface",
5365 "thiserror",
5410 "wasmi",5366 "wasmi",
5411]5367]
54125368
5413[[package]]5369[[package]]
5414name = "sc-executor-wasmi"5370name = "sc-executor-wasmi"
5415version = "0.8.0"5371version = "0.8.1"
5416source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5372source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5417dependencies = [5373dependencies = [
5418 "log",5374 "log",
5419 "parity-scale-codec",5375 "parity-scale-codec",
54275383
5428[[package]]5384[[package]]
5429name = "sc-executor-wasmtime"5385name = "sc-executor-wasmtime"
5430version = "0.8.0"5386version = "0.8.1"
5431source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5387source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5432dependencies = [5388dependencies = [
5433 "log",5389 "log",
5434 "parity-scale-codec",5390 "parity-scale-codec",
5435 "parity-wasm",5391 "parity-wasm",
5436 "pwasm-utils",5392 "pwasm-utils 0.14.0",
5437 "sc-executor-common",5393 "sc-executor-common",
5438 "scoped-tls",5394 "scoped-tls",
5439 "sp-allocator",5395 "sp-allocator",
54455401
5446[[package]]5402[[package]]
5447name = "sc-finality-grandpa"5403name = "sc-finality-grandpa"
5448version = "0.8.0"5404version = "0.8.1"
5449source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5405source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5450dependencies = [5406dependencies = [
5451 "derive_more",5407 "derive_more",
5452 "finality-grandpa",5408 "finality-grandpa",
5453 "fork-tree",5409 "fork-tree",
5454 "futures 0.3.8",5410 "futures 0.3.12",
5455 "futures-timer 3.0.2",5411 "futures-timer 3.0.2",
5412 "linked-hash-map",
5456 "log",5413 "log",
5457 "parity-scale-codec",5414 "parity-scale-codec",
5458 "parking_lot 0.10.2",5415 "parking_lot 0.11.1",
5459 "pin-project 0.4.27",5416 "pin-project 0.4.27",
5460 "rand 0.7.3",5417 "rand 0.7.3",
5461 "sc-block-builder",5418 "sc-block-builder",
5473 "sp-consensus",5430 "sp-consensus",
5474 "sp-core",5431 "sp-core",
5475 "sp-finality-grandpa",5432 "sp-finality-grandpa",
5476 "sp-finality-tracker",
5477 "sp-inherents",5433 "sp-inherents",
5434 "sp-keystore",
5478 "sp-runtime",5435 "sp-runtime",
5479 "sp-utils",5436 "sp-utils",
5480 "substrate-prometheus-endpoint",5437 "substrate-prometheus-endpoint",
5481]5438]
54825439
5483[[package]]5440[[package]]
5484name = "sc-informant"5441name = "sc-informant"
5485version = "0.8.0"5442version = "0.8.1"
5486source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5443source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5487dependencies = [5444dependencies = [
5488 "ansi_term 0.12.1",5445 "ansi_term 0.12.1",
5489 "futures 0.3.8",5446 "futures 0.3.12",
5490 "log",5447 "log",
5491 "parity-util-mem",5448 "parity-util-mem",
5492 "sc-client-api",5449 "sc-client-api",
55005457
5501[[package]]5458[[package]]
5502name = "sc-keystore"5459name = "sc-keystore"
5503version = "2.0.0"5460version = "2.0.1"
5504source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5461source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5505dependencies = [5462dependencies = [
5463 "async-trait",
5506 "derive_more",5464 "derive_more",
5465 "futures 0.3.12",
5466 "futures-util",
5507 "hex",5467 "hex",
5508 "merlin",5468 "merlin",
5509 "parking_lot 0.10.2",5469 "parking_lot 0.11.1",
5510 "rand 0.7.3",5470 "rand 0.7.3",
5511 "serde_json",5471 "serde_json",
5512 "sp-application-crypto",5472 "sp-application-crypto",
5513 "sp-core",5473 "sp-core",
5474 "sp-keystore",
5514 "subtle 2.4.0",5475 "subtle 2.4.0",
5515]5476]
55165477
5517[[package]]5478[[package]]
5518name = "sc-light"5479name = "sc-light"
5519version = "2.0.0"5480version = "2.0.1"
5520source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5481source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5521dependencies = [5482dependencies = [
5522 "hash-db",5483 "hash-db",
5523 "lazy_static",5484 "lazy_static",
5524 "parity-scale-codec",5485 "parity-scale-codec",
5525 "parking_lot 0.10.2",5486 "parking_lot 0.11.1",
5526 "sc-client-api",5487 "sc-client-api",
5527 "sc-executor",5488 "sc-executor",
5528 "sp-api",5489 "sp-api",
55355496
5536[[package]]5497[[package]]
5537name = "sc-network"5498name = "sc-network"
5538version = "0.8.0"5499version = "0.8.1"
5539source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5500source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5540dependencies = [5501dependencies = [
5541 "async-std",5502 "async-std",
5542 "async-trait",5503 "async-trait",
5504 "asynchronous-codec",
5543 "bitflags",5505 "bitflags",
5544 "bs58 0.3.1",5506 "bs58",
5545 "bytes 0.5.6",5507 "bytes 1.0.1",
5546 "derive_more",5508 "derive_more",
5547 "either",5509 "either",
5548 "erased-serde",5510 "erased-serde",
5549 "fnv",5511 "fnv",
5550 "fork-tree",5512 "fork-tree",
5551 "futures 0.3.8",5513 "futures 0.3.12",
5552 "futures-timer 3.0.2",5514 "futures-timer 3.0.2",
5553 "futures_codec",
5554 "hex",5515 "hex",
5555 "ip_network",5516 "ip_network",
5556 "libp2p",5517 "libp2p",
5557 "linked-hash-map",5518 "linked-hash-map",
5558 "linked_hash_set",5519 "linked_hash_set",
5559 "log",5520 "log",
5560 "lru 0.4.3",5521 "lru",
5561 "nohash-hasher",5522 "nohash-hasher",
5562 "parity-scale-codec",5523 "parity-scale-codec",
5563 "parking_lot 0.10.2",5524 "parking_lot 0.11.1",
5564 "pin-project 0.4.27",5525 "pin-project 0.4.27",
5565 "prost",5526 "prost",
5566 "prost-build",5527 "prost-build",
5570 "sc-peerset",5531 "sc-peerset",
5571 "serde",5532 "serde",
5572 "serde_json",5533 "serde_json",
5573 "slog",
5574 "slog_derive",
5575 "smallvec 0.6.13",5534 "smallvec 1.6.1",
5576 "sp-arithmetic",5535 "sp-arithmetic",
5577 "sp-blockchain",5536 "sp-blockchain",
5578 "sp-consensus",5537 "sp-consensus",
5581 "sp-utils",5540 "sp-utils",
5582 "substrate-prometheus-endpoint",5541 "substrate-prometheus-endpoint",
5583 "thiserror",5542 "thiserror",
5584 "unsigned-varint 0.4.0",5543 "unsigned-varint 0.6.0",
5585 "void",5544 "void",
5586 "wasm-timer",5545 "wasm-timer",
5587 "zeroize",5546 "zeroize",
5588]5547]
55895548
5590[[package]]5549[[package]]
5591name = "sc-network-gossip"5550name = "sc-network-gossip"
5592version = "0.8.0"5551version = "0.8.1"
5593source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5552source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5594dependencies = [5553dependencies = [
5595 "futures 0.3.8",5554 "futures 0.3.12",
5596 "futures-timer 3.0.2",5555 "futures-timer 3.0.2",
5597 "libp2p",5556 "libp2p",
5598 "log",5557 "log",
5599 "lru 0.4.3",5558 "lru",
5600 "sc-network",5559 "sc-network",
5601 "sp-runtime",5560 "sp-runtime",
5561 "substrate-prometheus-endpoint",
5602 "wasm-timer",5562 "wasm-timer",
5603]5563]
56045564
5605[[package]]5565[[package]]
5606name = "sc-offchain"5566name = "sc-offchain"
5607version = "2.0.0"5567version = "2.0.1"
5608source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5568source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5609dependencies = [5569dependencies = [
5610 "bytes 0.5.6",5570 "bytes 0.5.6",
5611 "fnv",5571 "fnv",
5612 "futures 0.3.8",5572 "futures 0.3.12",
5613 "futures-timer 3.0.2",5573 "futures-timer 3.0.2",
5614 "hyper 0.13.9",5574 "hyper 0.13.9",
5615 "hyper-rustls",5575 "hyper-rustls",
5616 "log",5576 "log",
5617 "num_cpus",5577 "num_cpus",
5618 "parity-scale-codec",5578 "parity-scale-codec",
5619 "parking_lot 0.10.2",5579 "parking_lot 0.11.1",
5620 "rand 0.7.3",5580 "rand 0.7.3",
5621 "sc-client-api",5581 "sc-client-api",
5622 "sc-keystore",5582 "sc-keystore",
56315591
5632[[package]]5592[[package]]
5633name = "sc-peerset"5593name = "sc-peerset"
5634version = "2.0.0"5594version = "2.0.1"
5635source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5595source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5636dependencies = [5596dependencies = [
5637 "futures 0.3.8",5597 "futures 0.3.12",
5638 "libp2p",5598 "libp2p",
5639 "log",5599 "log",
5640 "serde_json",5600 "serde_json",
56445604
5645[[package]]5605[[package]]
5646name = "sc-proposer-metrics"5606name = "sc-proposer-metrics"
5647version = "0.8.0"5607version = "0.8.1"
5648source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5608source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5649dependencies = [5609dependencies = [
5650 "log",5610 "log",
5651 "substrate-prometheus-endpoint",5611 "substrate-prometheus-endpoint",
5652]5612]
56535613
5654[[package]]5614[[package]]
5655name = "sc-rpc"5615name = "sc-rpc"
5656version = "2.0.0"5616version = "2.0.1"
5657source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5617source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5658dependencies = [5618dependencies = [
5659 "futures 0.3.8",5619 "futures 0.3.12",
5660 "hash-db",5620 "hash-db",
5661 "jsonrpc-core",5621 "jsonrpc-core",
5662 "jsonrpc-pubsub",5622 "jsonrpc-pubsub",
5663 "log",5623 "log",
5664 "parity-scale-codec",5624 "parity-scale-codec",
5665 "parking_lot 0.10.2",5625 "parking_lot 0.11.1",
5666 "sc-block-builder",5626 "sc-block-builder",
5667 "sc-client-api",5627 "sc-client-api",
5668 "sc-executor",5628 "sc-executor",
5669 "sc-keystore",5629 "sc-keystore",
5670 "sc-rpc-api",5630 "sc-rpc-api",
5631 "sc-tracing",
5671 "serde_json",5632 "serde_json",
5672 "sp-api",5633 "sp-api",
5673 "sp-blockchain",5634 "sp-blockchain",
5674 "sp-chain-spec",5635 "sp-chain-spec",
5675 "sp-core",5636 "sp-core",
5637 "sp-keystore",
5676 "sp-offchain",5638 "sp-offchain",
5677 "sp-rpc",5639 "sp-rpc",
5678 "sp-runtime",5640 "sp-runtime",
56855647
5686[[package]]5648[[package]]
5687name = "sc-rpc-api"5649name = "sc-rpc-api"
5688version = "0.8.0"5650version = "0.8.1"
5689source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5651source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5690dependencies = [5652dependencies = [
5691 "derive_more",5653 "derive_more",
5692 "futures 0.3.8",5654 "futures 0.3.12",
5693 "jsonrpc-core",5655 "jsonrpc-core",
5694 "jsonrpc-core-client",5656 "jsonrpc-core-client",
5695 "jsonrpc-derive",5657 "jsonrpc-derive",
5696 "jsonrpc-pubsub",5658 "jsonrpc-pubsub",
5697 "log",5659 "log",
5698 "parity-scale-codec",5660 "parity-scale-codec",
5699 "parking_lot 0.10.2",5661 "parking_lot 0.11.1",
5700 "serde",5662 "serde",
5701 "serde_json",5663 "serde_json",
5702 "sp-chain-spec",5664 "sp-chain-spec",
57095671
5710[[package]]5672[[package]]
5711name = "sc-rpc-server"5673name = "sc-rpc-server"
5712version = "2.0.0"5674version = "2.0.1"
5713source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5675source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5714dependencies = [5676dependencies = [
5715 "futures 0.1.30",5677 "futures 0.1.30",
5716 "jsonrpc-core",5678 "jsonrpc-core",
57275689
5728[[package]]5690[[package]]
5729name = "sc-service"5691name = "sc-service"
5730version = "0.8.0"5692version = "0.8.1"
5731source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5693source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5732dependencies = [5694dependencies = [
5733 "derive_more",
5734 "directories",5695 "directories 3.0.1",
5735 "exit-future",5696 "exit-future",
5736 "futures 0.1.30",5697 "futures 0.1.30",
5737 "futures 0.3.8",5698 "futures 0.3.12",
5738 "futures-timer 3.0.2",5699 "futures-timer 3.0.2",
5739 "hash-db",5700 "hash-db",
5740 "jsonrpc-core",5701 "jsonrpc-core",
5743 "log",5704 "log",
5744 "parity-scale-codec",5705 "parity-scale-codec",
5745 "parity-util-mem",5706 "parity-util-mem",
5746 "parking_lot 0.10.2",5707 "parking_lot 0.11.1",
5747 "pin-project 0.4.27",5708 "pin-project 0.4.27",
5748 "rand 0.7.3",5709 "rand 0.7.3",
5749 "sc-block-builder",5710 "sc-block-builder",
5763 "sc-transaction-pool",5724 "sc-transaction-pool",
5764 "serde",5725 "serde",
5765 "serde_json",5726 "serde_json",
5766 "slog",
5767 "sp-api",5727 "sp-api",
5768 "sp-application-crypto",5728 "sp-application-crypto",
5769 "sp-block-builder",5729 "sp-block-builder",
5773 "sp-externalities",5733 "sp-externalities",
5774 "sp-inherents",5734 "sp-inherents",
5775 "sp-io",5735 "sp-io",
5736 "sp-keystore",
5776 "sp-runtime",5737 "sp-runtime",
5777 "sp-session",5738 "sp-session",
5778 "sp-state-machine",5739 "sp-state-machine",
5783 "sp-version",5744 "sp-version",
5784 "substrate-prometheus-endpoint",5745 "substrate-prometheus-endpoint",
5785 "tempfile",5746 "tempfile",
5747 "thiserror",
5786 "tracing",5748 "tracing",
5749 "tracing-futures",
5787 "wasm-timer",5750 "wasm-timer",
5788]5751]
57895752
5790[[package]]5753[[package]]
5791name = "sc-state-db"5754name = "sc-state-db"
5792version = "0.8.0"5755version = "0.8.1"
5793source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5756source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5794dependencies = [5757dependencies = [
5795 "log",5758 "log",
5796 "parity-scale-codec",5759 "parity-scale-codec",
5797 "parity-util-mem",5760 "parity-util-mem",
5798 "parity-util-mem-derive",5761 "parity-util-mem-derive",
5799 "parking_lot 0.10.2",5762 "parking_lot 0.11.1",
5800 "sc-client-api",5763 "sc-client-api",
5801 "sp-core",5764 "sp-core",
5765 "thiserror",
5802]5766]
58035767
5804[[package]]5768[[package]]
5805name = "sc-telemetry"5769name = "sc-telemetry"
5806version = "2.0.0"5770version = "2.0.1"
5807source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5771source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5808dependencies = [5772dependencies = [
5809 "futures 0.3.8",5773 "chrono",
5810 "futures-timer 3.0.2",5774 "futures 0.3.12",
5811 "libp2p",5775 "libp2p",
5812 "log",5776 "log",
5813 "parking_lot 0.10.2",5777 "parking_lot 0.11.1",
5814 "pin-project 0.4.27",5778 "pin-project 0.4.27",
5815 "rand 0.7.3",5779 "rand 0.7.3",
5816 "serde",5780 "serde",
5817 "slog",
5818 "slog-json",5781 "serde_json",
5819 "slog-scope",5782 "sp-utils",
5820 "take_mut",5783 "take_mut",
5784 "tracing",
5785 "tracing-subscriber",
5821 "void",5786 "void",
5822 "wasm-timer",5787 "wasm-timer",
5823]5788]
58245789
5825[[package]]5790[[package]]
5826name = "sc-tracing"5791name = "sc-tracing"
5827version = "2.0.0"5792version = "2.0.1"
5828source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5793source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5829dependencies = [5794dependencies = [
5795 "ansi_term 0.12.1",
5796 "atty",
5830 "erased-serde",5797 "erased-serde",
5798 "lazy_static",
5831 "log",5799 "log",
5800 "once_cell",
5832 "parking_lot 0.10.2",5801 "parking_lot 0.11.1",
5802 "regex",
5833 "rustc-hash",5803 "rustc-hash",
5834 "sc-telemetry",5804 "sc-telemetry",
5805 "sc-tracing-proc-macro",
5835 "serde",5806 "serde",
5836 "serde_json",5807 "serde_json",
5837 "slog",
5838 "sp-tracing",5808 "sp-tracing",
5809 "thiserror",
5839 "tracing",5810 "tracing",
5840 "tracing-core",5811 "tracing-core",
5812 "tracing-log",
5841 "tracing-subscriber",5813 "tracing-subscriber",
5814 "wasm-bindgen",
5815 "web-sys",
5842]5816]
5817
5818[[package]]
5819name = "sc-tracing-proc-macro"
5820version = "2.0.0"
5821source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5822dependencies = [
5823 "proc-macro-crate",
5824 "proc-macro2",
5825 "quote",
5826 "syn",
5827]
58435828
5844[[package]]5829[[package]]
5845name = "sc-transaction-graph"5830name = "sc-transaction-graph"
5846version = "2.0.0"5831version = "2.0.1"
5847source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5832source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5848dependencies = [5833dependencies = [
5849 "derive_more",5834 "derive_more",
5850 "futures 0.3.8",5835 "futures 0.3.12",
5851 "linked-hash-map",5836 "linked-hash-map",
5852 "log",5837 "log",
5853 "parity-util-mem",5838 "parity-util-mem",
5854 "parking_lot 0.10.2",5839 "parking_lot 0.11.1",
5855 "retain_mut",5840 "retain_mut",
5856 "serde",5841 "serde",
5857 "sp-blockchain",5842 "sp-blockchain",
5858 "sp-core",5843 "sp-core",
5859 "sp-runtime",5844 "sp-runtime",
5860 "sp-transaction-pool",5845 "sp-transaction-pool",
5861 "sp-utils",5846 "sp-utils",
5847 "thiserror",
5862 "wasm-timer",5848 "wasm-timer",
5863]5849]
58645850
5865[[package]]5851[[package]]
5866name = "sc-transaction-pool"5852name = "sc-transaction-pool"
5867version = "2.0.0"5853version = "2.0.1"
5868source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"5854source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
5869dependencies = [5855dependencies = [
5870 "derive_more",
5871 "futures 0.3.8",5856 "futures 0.3.12",
5872 "futures-diagnose",5857 "futures-diagnose",
5873 "intervalier",5858 "intervalier",
5874 "log",5859 "log",
5875 "parity-scale-codec",5860 "parity-scale-codec",
5876 "parity-util-mem",5861 "parity-util-mem",
5877 "parking_lot 0.10.2",5862 "parking_lot 0.11.1",
5878 "sc-client-api",5863 "sc-client-api",
5879 "sc-transaction-graph",5864 "sc-transaction-graph",
5880 "sp-api",5865 "sp-api",
5885 "sp-transaction-pool",5870 "sp-transaction-pool",
5886 "sp-utils",5871 "sp-utils",
5887 "substrate-prometheus-endpoint",5872 "substrate-prometheus-endpoint",
5873 "thiserror",
5888 "wasm-timer",5874 "wasm-timer",
5889]5875]
58905876
5906dependencies = [5892dependencies = [
5907 "arrayref",5893 "arrayref",
5908 "arrayvec 0.5.2",5894 "arrayvec 0.5.2",
5909 "curve25519-dalek 2.1.0",5895 "curve25519-dalek 2.1.2",
5910 "getrandom 0.1.15",5896 "getrandom 0.1.16",
5911 "merlin",5897 "merlin",
5912 "rand 0.7.3",5898 "rand 0.7.3",
5913 "rand_core 0.5.1",5899 "rand_core 0.5.1",
5900 "serde",
5914 "sha2 0.8.2",5901 "sha2 0.8.2",
5915 "subtle 2.4.0",5902 "subtle 2.4.0",
5916 "zeroize",5903 "zeroize",
5922source = "registry+https://github.com/rust-lang/crates.io-index"5909source = "registry+https://github.com/rust-lang/crates.io-index"
5923checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"5910checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
5924
5925[[package]]
5926name = "scopeguard"
5927version = "0.3.3"
5928source = "registry+https://github.com/rust-lang/crates.io-index"
5929checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
59305911
5931[[package]]5912[[package]]
5932name = "scopeguard"5913name = "scopeguard"
59455926
5946[[package]]5927[[package]]
5947name = "scroll_derive"5928name = "scroll_derive"
5948version = "0.10.4"5929version = "0.10.5"
5949source = "registry+https://github.com/rust-lang/crates.io-index"5930source = "registry+https://github.com/rust-lang/crates.io-index"
5950checksum = "b12bd20b94c7cdfda8c7ba9b92ad0d9a56e3fa018c25fca83b51aa664c9b4c0d"5931checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0"
5951dependencies = [5932dependencies = [
5952 "proc-macro2",5933 "proc-macro2",
5953 "quote",5934 "quote",
59665947
5967[[package]]5948[[package]]
5968name = "secrecy"5949name = "secrecy"
5969version = "0.6.0"5950version = "0.7.0"
5970source = "registry+https://github.com/rust-lang/crates.io-index"5951source = "registry+https://github.com/rust-lang/crates.io-index"
5971checksum = "9182278ed645df3477a9c27bfee0621c621aa16f6972635f7f795dae3d81070f"5952checksum = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0"
5972dependencies = [5953dependencies = [
5973 "zeroize",5954 "zeroize",
5974]5955]
60135994
6014[[package]]5995[[package]]
6015name = "serde"5996name = "serde"
6016version = "1.0.118"5997version = "1.0.123"
6017source = "registry+https://github.com/rust-lang/crates.io-index"5998source = "registry+https://github.com/rust-lang/crates.io-index"
6018checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800"5999checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae"
6019dependencies = [6000dependencies = [
6020 "serde_derive",6001 "serde_derive",
6021]6002]
60226003
6023[[package]]6004[[package]]
6024name = "serde_derive"6005name = "serde_derive"
6025version = "1.0.118"6006version = "1.0.123"
6026source = "registry+https://github.com/rust-lang/crates.io-index"6007source = "registry+https://github.com/rust-lang/crates.io-index"
6027checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df"6008checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31"
6028dependencies = [6009dependencies = [
6029 "proc-macro2",6010 "proc-macro2",
6030 "quote",6011 "quote",
60336014
6034[[package]]6015[[package]]
6035name = "serde_json"6016name = "serde_json"
6036version = "1.0.60"6017version = "1.0.61"
6037source = "registry+https://github.com/rust-lang/crates.io-index"6018source = "registry+https://github.com/rust-lang/crates.io-index"
6038checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779"6019checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a"
6039dependencies = [6020dependencies = [
6040 "itoa",6021 "itoa",
6041 "ryu",6022 "ryu",
61066087
6107[[package]]6088[[package]]
6108name = "sharded-slab"6089name = "sharded-slab"
6109version = "0.1.0"6090version = "0.1.1"
6110source = "registry+https://github.com/rust-lang/crates.io-index"6091source = "registry+https://github.com/rust-lang/crates.io-index"
6111checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127"6092checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3"
6112dependencies = [6093dependencies = [
6113 "lazy_static",6094 "lazy_static",
6114 "loom",
6115]6095]
61166096
6117[[package]]6097[[package]]
61226102
6123[[package]]6103[[package]]
6124name = "signal-hook"6104name = "signal-hook"
6125version = "0.1.16"6105version = "0.1.17"
6126source = "registry+https://github.com/rust-lang/crates.io-index"6106source = "registry+https://github.com/rust-lang/crates.io-index"
6127checksum = "604508c1418b99dfe1925ca9224829bb2a8a9a04dda655cc01fcad46f4ab05ed"6107checksum = "7e31d442c16f047a671b5a71e2161d6e68814012b7f5379d269ebd915fac2729"
6128dependencies = [6108dependencies = [
6129 "libc",6109 "libc",
6130 "signal-hook-registry",6110 "signal-hook-registry",
6131]6111]
61326112
6133[[package]]6113[[package]]
6134name = "signal-hook-registry"6114name = "signal-hook-registry"
6135version = "1.2.2"6115version = "1.3.0"
6136source = "registry+https://github.com/rust-lang/crates.io-index"6116source = "registry+https://github.com/rust-lang/crates.io-index"
6137checksum = "ce32ea0c6c56d5eacaeb814fbed9960547021d3edd010ded1425f180536b20ab"6117checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6"
6138dependencies = [6118dependencies = [
6139 "libc",6119 "libc",
6140]6120]
61416121
6142[[package]]6122[[package]]
6143name = "signature"6123name = "signature"
6144version = "1.2.2"6124version = "1.3.0"
6145source = "registry+https://github.com/rust-lang/crates.io-index"6125source = "registry+https://github.com/rust-lang/crates.io-index"
6146checksum = "29f060a7d147e33490ec10da418795238fd7545bba241504d6b31a409f2e6210"6126checksum = "0f0242b8e50dd9accdd56170e94ca1ebd223b098eb9c83539a6e367d0f36ae68"
6127
6128[[package]]
6129name = "simba"
6130version = "0.1.5"
6131source = "registry+https://github.com/rust-lang/crates.io-index"
6132checksum = "fb931b1367faadea6b1ab1c306a860ec17aaa5fa39f367d0c744e69d971a1fb2"
6133dependencies = [
6134 "approx",
6135 "num-complex",
6136 "num-traits",
6137 "paste",
6138]
61476139
6148[[package]]6140[[package]]
6149name = "slab"6141name = "slab"
6150version = "0.4.2"6142version = "0.4.2"
6151source = "registry+https://github.com/rust-lang/crates.io-index"6143source = "registry+https://github.com/rust-lang/crates.io-index"
6152checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"6144checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
6153
6154[[package]]
6155name = "slog"
6156version = "2.7.0"
6157source = "registry+https://github.com/rust-lang/crates.io-index"
6158checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06"
6159dependencies = [
6160 "erased-serde",
6161]
6162
6163[[package]]
6164name = "slog-json"
6165version = "2.3.0"
6166source = "registry+https://github.com/rust-lang/crates.io-index"
6167checksum = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a"
6168dependencies = [
6169 "chrono",
6170 "erased-serde",
6171 "serde",
6172 "serde_json",
6173 "slog",
6174]
6175
6176[[package]]
6177name = "slog-scope"
6178version = "4.3.0"
6179source = "registry+https://github.com/rust-lang/crates.io-index"
6180checksum = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6"
6181dependencies = [
6182 "arc-swap",
6183 "lazy_static",
6184 "slog",
6185]
6186
6187[[package]]
6188name = "slog_derive"
6189version = "0.2.0"
6190source = "registry+https://github.com/rust-lang/crates.io-index"
6191checksum = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b"
6192dependencies = [
6193 "proc-macro2",
6194 "quote",
6195 "syn",
6196]
61976145
6198[[package]]6146[[package]]
6199name = "smallvec"6147name = "smallvec"
6200version = "0.6.13"6148version = "0.6.14"
6201source = "registry+https://github.com/rust-lang/crates.io-index"6149source = "registry+https://github.com/rust-lang/crates.io-index"
6202checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"6150checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0"
6203dependencies = [6151dependencies = [
6204 "maybe-uninit",6152 "maybe-uninit",
6205]6153]
62066154
6207[[package]]6155[[package]]
6208name = "smallvec"6156name = "smallvec"
6209version = "1.5.1"6157version = "1.6.1"
6210source = "registry+https://github.com/rust-lang/crates.io-index"6158source = "registry+https://github.com/rust-lang/crates.io-index"
6211checksum = "ae524f056d7d770e174287294f562e95044c68e88dec909a00d2094805db9d75"6159checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
62126160
6213[[package]]6161[[package]]
6214name = "snow"6162name = "snow"
6225 "rustc_version",6173 "rustc_version",
6226 "sha2 0.9.2",6174 "sha2 0.9.2",
6227 "subtle 2.4.0",6175 "subtle 2.4.0",
6228 "x25519-dalek 1.1.0",6176 "x25519-dalek",
6229]6177]
62306178
6231[[package]]6179[[package]]
6232name = "socket2"6180name = "socket2"
6233version = "0.3.18"6181version = "0.3.19"
6234source = "registry+https://github.com/rust-lang/crates.io-index"6182source = "registry+https://github.com/rust-lang/crates.io-index"
6235checksum = "97e0e9fd577458a4f61fb91fcb559ea2afecc54c934119421f9f5d3d5b1a1057"6183checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
6236dependencies = [6184dependencies = [
6237 "cfg-if 1.0.0",6185 "cfg-if 1.0.0",
6238 "libc",6186 "libc",
6248 "base64 0.12.3",6196 "base64 0.12.3",
6249 "bytes 0.5.6",6197 "bytes 0.5.6",
6250 "flate2",6198 "flate2",
6251 "futures 0.3.8",6199 "futures 0.3.12",
6252 "httparse",6200 "httparse",
6253 "log",6201 "log",
6254 "rand 0.7.3",6202 "rand 0.7.3",
62576205
6258[[package]]6206[[package]]
6259name = "sp-allocator"6207name = "sp-allocator"
6260version = "2.0.0"6208version = "2.0.1"
6261source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6209source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6262dependencies = [6210dependencies = [
6263 "derive_more",
6264 "log",6211 "log",
6265 "sp-core",6212 "sp-core",
6266 "sp-std",6213 "sp-std",
6267 "sp-wasm-interface",6214 "sp-wasm-interface",
6215 "thiserror",
6268]6216]
62696217
6270[[package]]6218[[package]]
6271name = "sp-api"6219name = "sp-api"
6272version = "2.0.0"6220version = "2.0.1"
6273source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6221source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6274dependencies = [6222dependencies = [
6275 "hash-db",6223 "hash-db",
6276 "parity-scale-codec",6224 "parity-scale-codec",
6280 "sp-state-machine",6228 "sp-state-machine",
6281 "sp-std",6229 "sp-std",
6282 "sp-version",6230 "sp-version",
6231 "thiserror",
6283]6232]
62846233
6285[[package]]6234[[package]]
6286name = "sp-api-proc-macro"6235name = "sp-api-proc-macro"
6287version = "2.0.0"6236version = "2.0.1"
6288source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6237source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6289dependencies = [6238dependencies = [
6290 "blake2-rfc",6239 "blake2-rfc",
6291 "proc-macro-crate",6240 "proc-macro-crate",
62966245
6297[[package]]6246[[package]]
6298name = "sp-application-crypto"6247name = "sp-application-crypto"
6299version = "2.0.0"6248version = "2.0.1"
6300source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6249source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6301dependencies = [6250dependencies = [
6302 "parity-scale-codec",6251 "parity-scale-codec",
6303 "serde",6252 "serde",
63086257
6309[[package]]6258[[package]]
6310name = "sp-arithmetic"6259name = "sp-arithmetic"
6311version = "2.0.0"6260version = "2.0.1"
6312source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6261source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6313dependencies = [6262dependencies = [
6314 "integer-sqrt",6263 "integer-sqrt",
6315 "num-traits",6264 "num-traits",
63216270
6322[[package]]6271[[package]]
6323name = "sp-authorship"6272name = "sp-authorship"
6324version = "2.0.0"6273version = "2.0.1"
6325source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6274source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6326dependencies = [6275dependencies = [
6327 "parity-scale-codec",6276 "parity-scale-codec",
6328 "sp-inherents",6277 "sp-inherents",
63326281
6333[[package]]6282[[package]]
6334name = "sp-block-builder"6283name = "sp-block-builder"
6335version = "2.0.0"6284version = "2.0.1"
6336source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6285source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6337dependencies = [6286dependencies = [
6338 "parity-scale-codec",6287 "parity-scale-codec",
6339 "sp-api",6288 "sp-api",
63446293
6345[[package]]6294[[package]]
6346name = "sp-blockchain"6295name = "sp-blockchain"
6347version = "2.0.0"6296version = "2.0.1"
6348source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6297source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6349dependencies = [6298dependencies = [
6350 "derive_more",6299 "futures 0.3.12",
6351 "log",6300 "log",
6352 "lru 0.4.3",6301 "lru",
6353 "parity-scale-codec",6302 "parity-scale-codec",
6354 "parking_lot 0.10.2",6303 "parking_lot 0.11.1",
6355 "sp-block-builder",6304 "sp-api",
6356 "sp-consensus",6305 "sp-consensus",
6357 "sp-database",6306 "sp-database",
6358 "sp-runtime",6307 "sp-runtime",
6359 "sp-state-machine",6308 "sp-state-machine",
6309 "thiserror",
6360]6310]
63616311
6362[[package]]6312[[package]]
6363name = "sp-chain-spec"6313name = "sp-chain-spec"
6364version = "2.0.0"6314version = "2.0.1"
6365source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6315source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6366dependencies = [6316dependencies = [
6367 "serde",6317 "serde",
6368 "serde_json",6318 "serde_json",
6369]6319]
63706320
6371[[package]]6321[[package]]
6372name = "sp-consensus"6322name = "sp-consensus"
6373version = "0.8.0"6323version = "0.8.1"
6374source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6324source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6375dependencies = [6325dependencies = [
6376 "derive_more",
6377 "futures 0.3.8",6326 "futures 0.3.12",
6378 "futures-timer 3.0.2",6327 "futures-timer 3.0.2",
6379 "libp2p",6328 "libp2p",
6380 "log",6329 "log",
6381 "parity-scale-codec",6330 "parity-scale-codec",
6382 "parking_lot 0.10.2",6331 "parking_lot 0.11.1",
6383 "serde",6332 "serde",
6384 "sp-api",6333 "sp-api",
6385 "sp-core",6334 "sp-core",
6391 "sp-utils",6340 "sp-utils",
6392 "sp-version",6341 "sp-version",
6393 "substrate-prometheus-endpoint",6342 "substrate-prometheus-endpoint",
6343 "thiserror",
6394 "wasm-timer",6344 "wasm-timer",
6395]6345]
63966346
6397[[package]]6347[[package]]
6398name = "sp-consensus-aura"6348name = "sp-consensus-aura"
6399version = "0.8.0"6349version = "0.8.1"
6400source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6350source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6401dependencies = [6351dependencies = [
6402 "parity-scale-codec",6352 "parity-scale-codec",
6403 "sp-api",6353 "sp-api",
6408 "sp-timestamp",6358 "sp-timestamp",
6409]6359]
6360
6361[[package]]
6362name = "sp-consensus-babe"
6363version = "0.8.1"
6364source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6365dependencies = [
6366 "merlin",
6367 "parity-scale-codec",
6368 "sp-api",
6369 "sp-application-crypto",
6370 "sp-consensus",
6371 "sp-consensus-slots",
6372 "sp-consensus-vrf",
6373 "sp-core",
6374 "sp-inherents",
6375 "sp-keystore",
6376 "sp-runtime",
6377 "sp-std",
6378 "sp-timestamp",
6379]
64106380
6411[[package]]6381[[package]]
6412name = "sp-consensus-slots"6382name = "sp-consensus-slots"
6413version = "0.8.0"6383version = "0.8.1"
6414source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6384source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6415dependencies = [6385dependencies = [
6416 "parity-scale-codec",6386 "parity-scale-codec",
6417 "sp-runtime",6387 "sp-runtime",
6418]6388]
6389
6390[[package]]
6391name = "sp-consensus-vrf"
6392version = "0.8.1"
6393source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6394dependencies = [
6395 "parity-scale-codec",
6396 "schnorrkel",
6397 "sp-core",
6398 "sp-runtime",
6399 "sp-std",
6400]
64196401
6420[[package]]6402[[package]]
6421name = "sp-core"6403name = "sp-core"
6422version = "2.0.0"6404version = "2.0.1"
6423source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6405source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6424dependencies = [6406dependencies = [
6425 "base58",6407 "base58",
6426 "blake2-rfc",6408 "blake2-rfc",
6427 "byteorder 1.3.4",6409 "byteorder",
6428 "derive_more",
6429 "dyn-clonable",6410 "dyn-clonable",
6430 "ed25519-dalek",6411 "ed25519-dalek",
6431 "futures 0.3.8",6412 "futures 0.3.12",
6432 "hash-db",6413 "hash-db",
6433 "hash256-std-hasher",6414 "hash256-std-hasher",
6434 "hex",6415 "hex",
6440 "num-traits",6421 "num-traits",
6441 "parity-scale-codec",6422 "parity-scale-codec",
6442 "parity-util-mem",6423 "parity-util-mem",
6443 "parking_lot 0.10.2",6424 "parking_lot 0.11.1",
6444 "primitive-types",6425 "primitive-types",
6445 "rand 0.7.3",6426 "rand 0.7.3",
6446 "regex",6427 "regex",
6447 "schnorrkel",6428 "schnorrkel",
6448 "secrecy",6429 "secrecy",
6449 "serde",6430 "serde",
6450 "sha2 0.8.2",6431 "sha2 0.9.2",
6451 "sp-debug-derive",6432 "sp-debug-derive",
6452 "sp-externalities",6433 "sp-externalities",
6453 "sp-runtime-interface",6434 "sp-runtime-interface",
6454 "sp-std",6435 "sp-std",
6455 "sp-storage",6436 "sp-storage",
6456 "substrate-bip39",6437 "substrate-bip39",
6438 "thiserror",
6457 "tiny-bip39",6439 "tiny-bip39",
6458 "tiny-keccak",6440 "tiny-keccak",
6459 "twox-hash",6441 "twox-hash",
64636445
6464[[package]]6446[[package]]
6465name = "sp-database"6447name = "sp-database"
6466version = "2.0.0"6448version = "2.0.1"
6467source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6449source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6468dependencies = [6450dependencies = [
6469 "kvdb",6451 "kvdb",
6470 "parking_lot 0.10.2",6452 "parking_lot 0.11.1",
6471]6453]
64726454
6473[[package]]6455[[package]]
6474name = "sp-debug-derive"6456name = "sp-debug-derive"
6475version = "2.0.0"6457version = "2.0.1"
6476source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6458source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6477dependencies = [6459dependencies = [
6478 "proc-macro2",6460 "proc-macro2",
6479 "quote",6461 "quote",
64826464
6483[[package]]6465[[package]]
6484name = "sp-externalities"6466name = "sp-externalities"
6485version = "0.8.0"6467version = "0.8.1"
6486source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6468source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6487dependencies = [6469dependencies = [
6488 "environmental",6470 "environmental",
6489 "parity-scale-codec",6471 "parity-scale-codec",
64936475
6494[[package]]6476[[package]]
6495name = "sp-finality-grandpa"6477name = "sp-finality-grandpa"
6496version = "2.0.0"6478version = "2.0.1"
6497source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6479source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6498dependencies = [6480dependencies = [
6499 "finality-grandpa",6481 "finality-grandpa",
6500 "log",6482 "log",
6503 "sp-api",6485 "sp-api",
6504 "sp-application-crypto",6486 "sp-application-crypto",
6505 "sp-core",6487 "sp-core",
6488 "sp-keystore",
6506 "sp-runtime",6489 "sp-runtime",
6507 "sp-std",6490 "sp-std",
6508]6491]
6509
6510[[package]]
6511name = "sp-finality-tracker"
6512version = "2.0.0"
6513source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"
6514dependencies = [
6515 "parity-scale-codec",
6516 "sp-inherents",
6517 "sp-std",
6518]
65196492
6520[[package]]6493[[package]]
6521name = "sp-inherents"6494name = "sp-inherents"
6522version = "2.0.0"6495version = "2.0.1"
6523source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6496source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6524dependencies = [6497dependencies = [
6525 "derive_more",
6526 "parity-scale-codec",6498 "parity-scale-codec",
6527 "parking_lot 0.10.2",6499 "parking_lot 0.11.1",
6528 "sp-core",6500 "sp-core",
6529 "sp-std",6501 "sp-std",
6502 "thiserror",
6530]6503]
65316504
6532[[package]]6505[[package]]
6533name = "sp-io"6506name = "sp-io"
6534version = "2.0.0"6507version = "2.0.1"
6535source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6508source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6536dependencies = [6509dependencies = [
6537 "futures 0.3.8",6510 "futures 0.3.12",
6538 "hash-db",6511 "hash-db",
6539 "libsecp256k1",6512 "libsecp256k1",
6540 "log",6513 "log",
6541 "parity-scale-codec",6514 "parity-scale-codec",
6542 "parking_lot 0.10.2",6515 "parking_lot 0.11.1",
6543 "sp-core",6516 "sp-core",
6544 "sp-externalities",6517 "sp-externalities",
6518 "sp-keystore",
6545 "sp-runtime-interface",6519 "sp-runtime-interface",
6546 "sp-state-machine",6520 "sp-state-machine",
6547 "sp-std",6521 "sp-std",
65546528
6555[[package]]6529[[package]]
6556name = "sp-keyring"6530name = "sp-keyring"
6557version = "2.0.0"6531version = "2.0.1"
6558source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6532source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6559dependencies = [6533dependencies = [
6560 "lazy_static",6534 "lazy_static",
6561 "sp-core",6535 "sp-core",
6562 "sp-runtime",6536 "sp-runtime",
6563 "strum",6537 "strum",
6564]6538]
6539
6540[[package]]
6541name = "sp-keystore"
6542version = "0.8.0"
6543source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6544dependencies = [
6545 "async-trait",
6546 "derive_more",
6547 "futures 0.3.12",
6548 "merlin",
6549 "parity-scale-codec",
6550 "parking_lot 0.11.1",
6551 "schnorrkel",
6552 "serde",
6553 "sp-core",
6554 "sp-externalities",
6555]
65656556
6566[[package]]6557[[package]]
6567name = "sp-offchain"6558name = "sp-offchain"
6568version = "2.0.0"6559version = "2.0.1"
6569source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6560source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6570dependencies = [6561dependencies = [
6571 "sp-api",6562 "sp-api",
6572 "sp-core",6563 "sp-core",
65756566
6576[[package]]6567[[package]]
6577name = "sp-panic-handler"6568name = "sp-panic-handler"
6578version = "2.0.0"6569version = "2.0.1"
6579source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6570source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6580dependencies = [6571dependencies = [
6581 "backtrace",6572 "backtrace",
6582 "log",
6583]6573]
65846574
6585[[package]]6575[[package]]
6586name = "sp-rpc"6576name = "sp-rpc"
6587version = "2.0.0"6577version = "2.0.1"
6588source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6578source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6589dependencies = [6579dependencies = [
6590 "serde",6580 "serde",
6591 "sp-core",6581 "sp-core",
6592]6582]
65936583
6594[[package]]6584[[package]]
6595name = "sp-runtime"6585name = "sp-runtime"
6596version = "2.0.0"6586version = "2.0.1"
6597source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6587source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6598dependencies = [6588dependencies = [
6599 "either",6589 "either",
6600 "hash256-std-hasher",6590 "hash256-std-hasher",
6601 "impl-trait-for-tuples",6591 "impl-trait-for-tuples 0.2.0",
6602 "log",6592 "log",
6603 "parity-scale-codec",6593 "parity-scale-codec",
6604 "parity-util-mem",6594 "parity-util-mem",
6608 "sp-application-crypto",6598 "sp-application-crypto",
6609 "sp-arithmetic",6599 "sp-arithmetic",
6610 "sp-core",6600 "sp-core",
6611 "sp-inherents",
6612 "sp-io",6601 "sp-io",
6613 "sp-std",6602 "sp-std",
6614]6603]
66156604
6616[[package]]6605[[package]]
6617name = "sp-runtime-interface"6606name = "sp-runtime-interface"
6618version = "2.0.0"6607version = "2.0.1"
6619source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6608source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6620dependencies = [6609dependencies = [
6610 "impl-trait-for-tuples 0.2.0",
6621 "parity-scale-codec",6611 "parity-scale-codec",
6622 "primitive-types",6612 "primitive-types",
6623 "sp-externalities",6613 "sp-externalities",
66316621
6632[[package]]6622[[package]]
6633name = "sp-runtime-interface-proc-macro"6623name = "sp-runtime-interface-proc-macro"
6634version = "2.0.0"6624version = "2.0.1"
6635source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6625source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6636dependencies = [6626dependencies = [
6637 "Inflector",6627 "Inflector",
6638 "proc-macro-crate",6628 "proc-macro-crate",
66436633
6644[[package]]6634[[package]]
6645name = "sp-sandbox"6635name = "sp-sandbox"
6646version = "0.8.0"6636version = "0.8.1"
6647source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6637source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6648dependencies = [6638dependencies = [
6649 "parity-scale-codec",6639 "parity-scale-codec",
6650 "sp-core",6640 "sp-core",
66566646
6657[[package]]6647[[package]]
6658name = "sp-serializer"6648name = "sp-serializer"
6659version = "2.0.0"6649version = "2.0.1"
6660source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6650source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6661dependencies = [6651dependencies = [
6662 "serde",6652 "serde",
6663 "serde_json",6653 "serde_json",
6664]6654]
66656655
6666[[package]]6656[[package]]
6667name = "sp-session"6657name = "sp-session"
6668version = "2.0.0"6658version = "2.0.1"
6669source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6659source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6670dependencies = [6660dependencies = [
6671 "parity-scale-codec",6661 "parity-scale-codec",
6672 "sp-api",6662 "sp-api",
66786668
6679[[package]]6669[[package]]
6680name = "sp-staking"6670name = "sp-staking"
6681version = "2.0.0"6671version = "2.0.1"
6682source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6672source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6683dependencies = [6673dependencies = [
6684 "parity-scale-codec",6674 "parity-scale-codec",
6685 "sp-runtime",6675 "sp-runtime",
66886678
6689[[package]]6679[[package]]
6690name = "sp-state-machine"6680name = "sp-state-machine"
6691version = "0.8.0"6681version = "0.8.1"
6692source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6682source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6693dependencies = [6683dependencies = [
6694 "hash-db",6684 "hash-db",
6695 "log",6685 "log",
6696 "num-traits",6686 "num-traits",
6697 "parity-scale-codec",6687 "parity-scale-codec",
6698 "parking_lot 0.10.2",6688 "parking_lot 0.11.1",
6699 "rand 0.7.3",6689 "rand 0.7.3",
6700 "smallvec 1.5.1",6690 "smallvec 1.6.1",
6701 "sp-core",6691 "sp-core",
6702 "sp-externalities",6692 "sp-externalities",
6703 "sp-panic-handler",6693 "sp-panic-handler",
6704 "sp-std",6694 "sp-std",
6705 "sp-trie",6695 "sp-trie",
6696 "thiserror",
6706 "trie-db",6697 "trie-db",
6707 "trie-root",6698 "trie-root",
6708]6699]
67096700
6710[[package]]6701[[package]]
6711name = "sp-std"6702name = "sp-std"
6712version = "2.0.0"6703version = "2.0.1"
6713source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6704source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
67146705
6715[[package]]6706[[package]]
6716name = "sp-storage"6707name = "sp-storage"
6717version = "2.0.0"6708version = "2.0.1"
6718source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6709source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6719dependencies = [6710dependencies = [
6720 "impl-serde",6711 "impl-serde",
6721 "parity-scale-codec",6712 "parity-scale-codec",
6725 "sp-std",6716 "sp-std",
6726]6717]
6718
6719[[package]]
6720name = "sp-tasks"
6721version = "2.0.0"
6722source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6723dependencies = [
6724 "log",
6725 "sp-core",
6726 "sp-externalities",
6727 "sp-io",
6728 "sp-runtime-interface",
6729 "sp-std",
6730]
67276731
6728[[package]]6732[[package]]
6729name = "sp-timestamp"6733name = "sp-timestamp"
6730version = "2.0.0"6734version = "2.0.1"
6731source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6735source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6732dependencies = [6736dependencies = [
6733 "impl-trait-for-tuples",6737 "impl-trait-for-tuples 0.2.0",
6734 "parity-scale-codec",6738 "parity-scale-codec",
6735 "sp-api",6739 "sp-api",
6736 "sp-inherents",6740 "sp-inherents",
67416745
6742[[package]]6746[[package]]
6743name = "sp-tracing"6747name = "sp-tracing"
6744version = "2.0.0"6748version = "2.0.1"
6745source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6749source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6746dependencies = [6750dependencies = [
6747 "log",6751 "log",
6748 "parity-scale-codec",6752 "parity-scale-codec",
67546758
6755[[package]]6759[[package]]
6756name = "sp-transaction-pool"6760name = "sp-transaction-pool"
6757version = "2.0.0"6761version = "2.0.1"
6758source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6762source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6759dependencies = [6763dependencies = [
6760 "derive_more",6764 "derive_more",
6761 "futures 0.3.8",6765 "futures 0.3.12",
6762 "log",6766 "log",
6763 "parity-scale-codec",6767 "parity-scale-codec",
6764 "serde",6768 "serde",
6765 "sp-api",6769 "sp-api",
6766 "sp-blockchain",6770 "sp-blockchain",
6767 "sp-runtime",6771 "sp-runtime",
6772 "thiserror",
6768]6773]
67696774
6770[[package]]6775[[package]]
6771name = "sp-trie"6776name = "sp-trie"
6772version = "2.0.0"6777version = "2.0.1"
6773source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6778source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6774dependencies = [6779dependencies = [
6775 "hash-db",6780 "hash-db",
6776 "memory-db",6781 "memory-db",
67836788
6784[[package]]6789[[package]]
6785name = "sp-utils"6790name = "sp-utils"
6786version = "2.0.0"6791version = "2.0.1"
6787source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6792source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6788dependencies = [6793dependencies = [
6789 "futures 0.3.8",6794 "futures 0.3.12",
6790 "futures-core",6795 "futures-core",
6791 "futures-timer 3.0.2",6796 "futures-timer 3.0.2",
6792 "lazy_static",6797 "lazy_static",
67956800
6796[[package]]6801[[package]]
6797name = "sp-version"6802name = "sp-version"
6798version = "2.0.0"6803version = "2.0.1"
6799source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6804source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6800dependencies = [6805dependencies = [
6801 "impl-serde",6806 "impl-serde",
6802 "parity-scale-codec",6807 "parity-scale-codec",
68076812
6808[[package]]6813[[package]]
6809name = "sp-wasm-interface"6814name = "sp-wasm-interface"
6810version = "2.0.0"6815version = "2.0.1"
6811source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6816source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6812dependencies = [6817dependencies = [
6813 "impl-trait-for-tuples",6818 "impl-trait-for-tuples 0.2.0",
6814 "parity-scale-codec",6819 "parity-scale-codec",
6815 "sp-std",6820 "sp-std",
6816 "wasmi",6821 "wasmi",
68366841
6837[[package]]6842[[package]]
6838name = "statrs"6843name = "statrs"
6839version = "0.10.0"6844version = "0.12.0"
6840source = "registry+https://github.com/rust-lang/crates.io-index"6845source = "registry+https://github.com/rust-lang/crates.io-index"
6841checksum = "10102ac8d55e35db2b3fafc26f81ba8647da2e15879ab686a67e6d19af2685e8"6846checksum = "cce16f6de653e88beca7bd13780d08e09d4489dbca1f9210e041bc4852481382"
6842dependencies = [6847dependencies = [
6843 "rand 0.5.6",6848 "rand 0.7.3",
6844]6849]
68456850
6846[[package]]6851[[package]]
6919source = "registry+https://github.com/rust-lang/crates.io-index"6924source = "registry+https://github.com/rust-lang/crates.io-index"
6920checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236"6925checksum = "bed6646a0159b9935b5d045611560eeef842b78d7adc3ba36f5ca325a13a0236"
6921dependencies = [6926dependencies = [
6922 "hmac",6927 "hmac 0.7.1",
6923 "pbkdf2",6928 "pbkdf2 0.3.0",
6924 "schnorrkel",6929 "schnorrkel",
6925 "sha2 0.8.2",6930 "sha2 0.8.2",
6926 "zeroize",6931 "zeroize",
6927]6932]
69286933
6929[[package]]6934[[package]]
6930name = "substrate-build-script-utils"6935name = "substrate-build-script-utils"
6931version = "2.0.0"6936version = "2.0.1"
6932source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6937source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6933dependencies = [6938dependencies = [
6934 "platforms",6939 "platforms",
6935]6940]
69366941
6937[[package]]6942[[package]]
6938name = "substrate-frame-rpc-system"6943name = "substrate-frame-rpc-system"
6939version = "2.0.0"6944version = "2.0.1"
6940source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6945source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6941dependencies = [6946dependencies = [
6942 "frame-system-rpc-runtime-api",6947 "frame-system-rpc-runtime-api",
6943 "futures 0.3.8",6948 "futures 0.3.12",
6944 "jsonrpc-core",6949 "jsonrpc-core",
6945 "jsonrpc-core-client",6950 "jsonrpc-core-client",
6946 "jsonrpc-derive",6951 "jsonrpc-derive",
69596964
6960[[package]]6965[[package]]
6961name = "substrate-prometheus-endpoint"6966name = "substrate-prometheus-endpoint"
6962version = "0.8.0"6967version = "0.8.1"
6963source = "git+https://github.com/usetech-llc/substrate.git?branch=release_flexi#59646c902484d9c5e8933a80cbed551228b81274"6968source = "git+https://github.com/usetech-llc/substrate.git?branch=unique#0e070672cf7a7bec72fb3f26188915cfb43c440f"
6964dependencies = [6969dependencies = [
6965 "async-std",6970 "async-std",
6966 "derive_more",6971 "derive_more",
69916996
6992[[package]]6997[[package]]
6993name = "syn"6998name = "syn"
6994version = "1.0.54"6999version = "1.0.60"
6995source = "registry+https://github.com/rust-lang/crates.io-index"7000source = "registry+https://github.com/rust-lang/crates.io-index"
6996checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44"7001checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081"
6997dependencies = [7002dependencies = [
6998 "proc-macro2",7003 "proc-macro2",
6999 "quote",7004 "quote",
70267031
7027[[package]]7032[[package]]
7028name = "tempfile"7033name = "tempfile"
7029version = "3.1.0"7034version = "3.2.0"
7030source = "registry+https://github.com/rust-lang/crates.io-index"7035source = "registry+https://github.com/rust-lang/crates.io-index"
7031checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"7036checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
7032dependencies = [7037dependencies = [
7033 "cfg-if 0.1.10",7038 "cfg-if 1.0.0",
7034 "libc",7039 "libc",
7035 "rand 0.7.3",7040 "rand 0.8.3",
7036 "redox_syscall",7041 "redox_syscall 0.2.4",
7037 "remove_dir_all",7042 "remove_dir_all",
7038 "winapi 0.3.9",7043 "winapi 0.3.9",
7039]7044]
70587063
7059[[package]]7064[[package]]
7060name = "thiserror"7065name = "thiserror"
7061version = "1.0.22"7066version = "1.0.23"
7062source = "registry+https://github.com/rust-lang/crates.io-index"7067source = "registry+https://github.com/rust-lang/crates.io-index"
7063checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e"7068checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146"
7064dependencies = [7069dependencies = [
7065 "thiserror-impl",7070 "thiserror-impl",
7066]7071]
70677072
7068[[package]]7073[[package]]
7069name = "thiserror-impl"7074name = "thiserror-impl"
7070version = "1.0.22"7075version = "1.0.23"
7071source = "registry+https://github.com/rust-lang/crates.io-index"7076source = "registry+https://github.com/rust-lang/crates.io-index"
7072checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56"7077checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1"
7073dependencies = [7078dependencies = [
7074 "proc-macro2",7079 "proc-macro2",
7075 "quote",7080 "quote",
70787083
7079[[package]]7084[[package]]
7080name = "thread_local"7085name = "thread_local"
7081version = "1.0.1"7086version = "1.1.2"
7082source = "registry+https://github.com/rust-lang/crates.io-index"7087source = "registry+https://github.com/rust-lang/crates.io-index"
7083checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"7088checksum = "d8208a331e1cb318dd5bd76951d2b8fc48ca38a69f5f4e4af1b6a9f8c6236915"
7084dependencies = [7089dependencies = [
7085 "lazy_static",7090 "once_cell",
7086]7091]
70877092
7088[[package]]7093[[package]]
71077112
7108[[package]]7113[[package]]
7109name = "tiny-bip39"7114name = "tiny-bip39"
7110version = "0.7.3"7115version = "0.8.0"
7111source = "registry+https://github.com/rust-lang/crates.io-index"7116source = "registry+https://github.com/rust-lang/crates.io-index"
7112checksum = "b0165e045cc2ae1660270ca65e1676dbaab60feb0f91b10f7d0665e9b47e31f2"7117checksum = "d9e44c4759bae7f1032e286a7ef990bd9ed23fe831b7eeba0beb97484c2e59b8"
7113dependencies = [7118dependencies = [
7114 "failure",7119 "anyhow",
7115 "hmac",7120 "hmac 0.8.1",
7116 "once_cell 1.5.2",7121 "once_cell",
7117 "pbkdf2",7122 "pbkdf2 0.4.0",
7118 "rand 0.7.3",7123 "rand 0.7.3",
7119 "rustc-hash",7124 "rustc-hash",
7120 "sha2 0.8.2",7125 "sha2 0.9.2",
7126 "thiserror",
7121 "unicode-normalization",7127 "unicode-normalization",
7128 "zeroize",
7122]7129]
71237130
7124[[package]]7131[[package]]
71327139
7133[[package]]7140[[package]]
7134name = "tinyvec"7141name = "tinyvec"
7135version = "1.1.0"7142version = "1.1.1"
7136source = "registry+https://github.com/rust-lang/crates.io-index"7143source = "registry+https://github.com/rust-lang/crates.io-index"
7137checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f"7144checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023"
7138dependencies = [7145dependencies = [
7139 "tinyvec_macros",7146 "tinyvec_macros",
7140]7147]
7157 "num_cpus",7164 "num_cpus",
7158 "tokio-codec",7165 "tokio-codec",
7159 "tokio-current-thread",7166 "tokio-current-thread",
7160 "tokio-executor 0.1.10",7167 "tokio-executor",
7161 "tokio-fs",7168 "tokio-fs",
7162 "tokio-io",7169 "tokio-io",
7163 "tokio-reactor",7170 "tokio-reactor",
7164 "tokio-sync 0.1.8",7171 "tokio-sync",
7165 "tokio-tcp",7172 "tokio-tcp",
7166 "tokio-threadpool",7173 "tokio-threadpool",
7167 "tokio-timer",7174 "tokio-timer",
7220checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e"7227checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e"
7221dependencies = [7228dependencies = [
7222 "futures 0.1.30",7229 "futures 0.1.30",
7223 "tokio-executor 0.1.10",7230 "tokio-executor",
7224]7231]
72257232
7226[[package]]7233[[package]]
7233 "futures 0.1.30",7240 "futures 0.1.30",
7234]7241]
7235
7236[[package]]
7237name = "tokio-executor"
7238version = "0.2.0-alpha.6"
7239source = "registry+https://github.com/rust-lang/crates.io-index"
7240checksum = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8"
7241dependencies = [
7242 "futures-util-preview",
7243 "lazy_static",
7244 "tokio-sync 0.2.0-alpha.6",
7245]
72467242
7247[[package]]7243[[package]]
7248name = "tokio-fs"7244name = "tokio-fs"
7293 "num_cpus",7289 "num_cpus",
7294 "parking_lot 0.9.0",7290 "parking_lot 0.9.0",
7295 "slab",7291 "slab",
7296 "tokio-executor 0.1.10",7292 "tokio-executor",
7297 "tokio-io",7293 "tokio-io",
7298 "tokio-sync 0.1.8",7294 "tokio-sync",
7299]7295]
73007296
7301[[package]]7297[[package]]
7305checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a"7301checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a"
7306dependencies = [7302dependencies = [
7307 "futures-core",7303 "futures-core",
7308 "rustls",7304 "rustls 0.18.1",
7309 "tokio 0.2.24",7305 "tokio 0.2.24",
7310 "webpki",7306 "webpki",
7311]7307]
7329 "futures 0.1.30",7325 "futures 0.1.30",
7330]7326]
7331
7332[[package]]
7333name = "tokio-sync"
7334version = "0.2.0-alpha.6"
7335source = "registry+https://github.com/rust-lang/crates.io-index"
7336checksum = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2"
7337dependencies = [
7338 "fnv",
7339 "futures-core-preview",
7340 "futures-util-preview",
7341]
73427327
7343[[package]]7328[[package]]
7344name = "tokio-tcp"7329name = "tokio-tcp"
7368 "log",7353 "log",
7369 "num_cpus",7354 "num_cpus",
7370 "slab",7355 "slab",
7371 "tokio-executor 0.1.10",7356 "tokio-executor",
7372]7357]
73737358
7374[[package]]7359[[package]]
7380 "crossbeam-utils 0.7.2",7365 "crossbeam-utils 0.7.2",
7381 "futures 0.1.30",7366 "futures 0.1.30",
7382 "slab",7367 "slab",
7383 "tokio-executor 0.1.10",7368 "tokio-executor",
7384]7369]
73857370
7386[[package]]7371[[package]]
74327417
7433[[package]]7418[[package]]
7434name = "toml"7419name = "toml"
7435version = "0.5.7"7420version = "0.5.8"
7436source = "registry+https://github.com/rust-lang/crates.io-index"7421source = "registry+https://github.com/rust-lang/crates.io-index"
7437checksum = "75cf45bb0bef80604d001caaec0d09da99611b3c0fd39d3080468875cdb65645"7422checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
7438dependencies = [7423dependencies = [
7439 "serde",7424 "serde",
7440]7425]
74417426
7442[[package]]7427[[package]]
7443name = "tower-service"7428name = "tower-service"
7444version = "0.3.0"7429version = "0.3.1"
7445source = "registry+https://github.com/rust-lang/crates.io-index"7430source = "registry+https://github.com/rust-lang/crates.io-index"
7446checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"7431checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
74477432
7448[[package]]7433[[package]]
7449name = "tracing"7434name = "tracing"
7453dependencies = [7438dependencies = [
7454 "cfg-if 1.0.0",7439 "cfg-if 1.0.0",
7455 "log",7440 "log",
7456 "pin-project-lite 0.2.0",7441 "pin-project-lite 0.2.4",
7457 "tracing-attributes",7442 "tracing-attributes",
7458 "tracing-core",7443 "tracing-core",
7459]7444]
7523 "serde",7508 "serde",
7524 "serde_json",7509 "serde_json",
7525 "sharded-slab",7510 "sharded-slab",
7526 "smallvec 1.5.1",7511 "smallvec 1.6.1",
7527 "thread_local",7512 "thread_local",
7528 "tracing",7513 "tracing",
7529 "tracing-core",7514 "tracing-core",
75337518
7534[[package]]7519[[package]]
7535name = "trie-db"7520name = "trie-db"
7536version = "0.22.1"7521version = "0.22.2"
7537source = "registry+https://github.com/rust-lang/crates.io-index"7522source = "registry+https://github.com/rust-lang/crates.io-index"
7538checksum = "9e55f7ace33d6237e14137e386f4e1672e2a5c6bbc97fef9f438581a143971f0"7523checksum = "5cc176c377eb24d652c9c69c832c832019011b6106182bf84276c66b66d5c9a6"
7539dependencies = [7524dependencies = [
7540 "hash-db",7525 "hash-db",
7541 "hashbrown 0.8.2",7526 "hashbrown",
7542 "log",7527 "log",
7543 "rustc-hex",7528 "rustc-hex",
7544 "smallvec 1.5.1",7529 "smallvec 1.6.1",
7545]7530]
75467531
7547[[package]]7532[[package]]
7576source = "registry+https://github.com/rust-lang/crates.io-index"7561source = "registry+https://github.com/rust-lang/crates.io-index"
7577checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"7562checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33"
7563
7564[[package]]
7565name = "ucd-trie"
7566version = "0.1.3"
7567source = "registry+https://github.com/rust-lang/crates.io-index"
7568checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
75787569
7579[[package]]7570[[package]]
7580name = "uint"7571name = "uint"
7581version = "0.8.5"7572version = "0.9.0"
7582source = "registry+https://github.com/rust-lang/crates.io-index"7573source = "registry+https://github.com/rust-lang/crates.io-index"
7583checksum = "9db035e67dfaf7edd9aebfe8676afcd63eed53c8a4044fed514c8cccf1835177"7574checksum = "e11fe9a9348741cf134085ad57c249508345fe16411b3d7fb4ff2da2f1d6382e"
7584dependencies = [7575dependencies = [
7585 "byteorder 1.3.4",7576 "byteorder",
7586 "crunchy",7577 "crunchy",
7587 "rustc-hex",7578 "hex",
7588 "static_assertions",7579 "static_assertions",
7589]7580]
75907581
76457636
7646[[package]]7637[[package]]
7647name = "unsigned-varint"7638name = "unsigned-varint"
7648version = "0.4.0"7639version = "0.5.1"
7649source = "registry+https://github.com/rust-lang/crates.io-index"7640source = "registry+https://github.com/rust-lang/crates.io-index"
7650checksum = "669d776983b692a906c881fcd0cfb34271a48e197e4d6cb8df32b05bfc3d3fa5"7641checksum = "f7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35"
7651dependencies = [
7652 "bytes 0.5.6",
7653 "futures-io",
7654 "futures-util",
7655 "futures_codec",
7656]
76577642
7658[[package]]7643[[package]]
7659name = "unsigned-varint"7644name = "unsigned-varint"
7660version = "0.5.1"7645version = "0.6.0"
7661source = "registry+https://github.com/rust-lang/crates.io-index"7646source = "registry+https://github.com/rust-lang/crates.io-index"
7662checksum = "f7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35"7647checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2"
7663dependencies = [7648dependencies = [
7649 "asynchronous-codec",
7650 "bytes 1.0.1",
7664 "futures-io",7651 "futures-io",
7665 "futures-util",7652 "futures-util",
7666]7653]
7694 "percent-encoding 2.1.0",7681 "percent-encoding 2.1.0",
7695]7682]
7683
7684[[package]]
7685name = "value-bag"
7686version = "1.0.0-alpha.6"
7687source = "registry+https://github.com/rust-lang/crates.io-index"
7688checksum = "6b676010e055c99033117c2343b33a40a30b91fecd6c49055ac9cd2d6c305ab1"
7689dependencies = [
7690 "ctor",
7691]
76967692
7697[[package]]7693[[package]]
7698name = "vcpkg"7694name = "vcpkg"
77657761
7766[[package]]7762[[package]]
7767name = "wasm-bindgen"7763name = "wasm-bindgen"
7768version = "0.2.69"7764version = "0.2.70"
7769source = "registry+https://github.com/rust-lang/crates.io-index"7765source = "registry+https://github.com/rust-lang/crates.io-index"
7770checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e"7766checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be"
7771dependencies = [7767dependencies = [
7772 "cfg-if 1.0.0",7768 "cfg-if 1.0.0",
7773 "wasm-bindgen-macro",7769 "wasm-bindgen-macro",
7774]7770]
77757771
7776[[package]]7772[[package]]
7777name = "wasm-bindgen-backend"7773name = "wasm-bindgen-backend"
7778version = "0.2.69"7774version = "0.2.70"
7779source = "registry+https://github.com/rust-lang/crates.io-index"7775source = "registry+https://github.com/rust-lang/crates.io-index"
7780checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62"7776checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7"
7781dependencies = [7777dependencies = [
7782 "bumpalo",7778 "bumpalo",
7783 "lazy_static",7779 "lazy_static",
77907786
7791[[package]]7787[[package]]
7792name = "wasm-bindgen-futures"7788name = "wasm-bindgen-futures"
7793version = "0.4.19"7789version = "0.4.20"
7794source = "registry+https://github.com/rust-lang/crates.io-index"7790source = "registry+https://github.com/rust-lang/crates.io-index"
7795checksum = "1fe9756085a84584ee9457a002b7cdfe0bfff169f45d2591d8be1345a6780e35"7791checksum = "3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94"
7796dependencies = [7792dependencies = [
7797 "cfg-if 1.0.0",7793 "cfg-if 1.0.0",
7798 "js-sys",7794 "js-sys",
78027798
7803[[package]]7799[[package]]
7804name = "wasm-bindgen-macro"7800name = "wasm-bindgen-macro"
7805version = "0.2.69"7801version = "0.2.70"
7806source = "registry+https://github.com/rust-lang/crates.io-index"7802source = "registry+https://github.com/rust-lang/crates.io-index"
7807checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084"7803checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c"
7808dependencies = [7804dependencies = [
7809 "quote",7805 "quote",
7810 "wasm-bindgen-macro-support",7806 "wasm-bindgen-macro-support",
7811]7807]
78127808
7813[[package]]7809[[package]]
7814name = "wasm-bindgen-macro-support"7810name = "wasm-bindgen-macro-support"
7815version = "0.2.69"7811version = "0.2.70"
7816source = "registry+https://github.com/rust-lang/crates.io-index"7812source = "registry+https://github.com/rust-lang/crates.io-index"
7817checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549"7813checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385"
7818dependencies = [7814dependencies = [
7819 "proc-macro2",7815 "proc-macro2",
7820 "quote",7816 "quote",
78257821
7826[[package]]7822[[package]]
7827name = "wasm-bindgen-shared"7823name = "wasm-bindgen-shared"
7828version = "0.2.69"7824version = "0.2.70"
7829source = "registry+https://github.com/rust-lang/crates.io-index"7825source = "registry+https://github.com/rust-lang/crates.io-index"
7830checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158"7826checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64"
78317827
7832[[package]]7828[[package]]
7833name = "wasm-timer"7829name = "wasm-timer"
7834version = "0.2.5"7830version = "0.2.5"
7835source = "registry+https://github.com/rust-lang/crates.io-index"7831source = "registry+https://github.com/rust-lang/crates.io-index"
7836checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"7832checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
7837dependencies = [7833dependencies = [
7838 "futures 0.3.8",7834 "futures 0.3.12",
7839 "js-sys",7835 "js-sys",
7840 "parking_lot 0.11.1",7836 "parking_lot 0.11.1",
7841 "pin-utils",7837 "pin-utils",
7893 "log",7889 "log",
7894 "region",7890 "region",
7895 "rustc-demangle",7891 "rustc-demangle",
7896 "smallvec 1.5.1",7892 "smallvec 1.6.1",
7897 "target-lexicon",7893 "target-lexicon",
7898 "wasmparser 0.59.0",7894 "wasmparser 0.59.0",
7899 "wasmtime-environ",7895 "wasmtime-environ",
7934 "cranelift-entity",7930 "cranelift-entity",
7935 "cranelift-frontend",7931 "cranelift-frontend",
7936 "cranelift-wasm",7932 "cranelift-wasm",
7937 "directories",7933 "directories 2.0.2",
7938 "errno",7934 "errno",
7939 "file-per-thread-logger",7935 "file-per-thread-logger",
7940 "indexmap",7936 "indexmap",
80368032
8037[[package]]8033[[package]]
8038name = "wast"8034name = "wast"
8039version = "30.0.0"8035version = "32.0.0"
8040source = "registry+https://github.com/rust-lang/crates.io-index"8036source = "registry+https://github.com/rust-lang/crates.io-index"
8041checksum = "9b79907b22f740634810e882d8d1d9d0f9563095a8ab94e786e370242bff5cd2"8037checksum = "c24a3ee360d01d60ed0a0f960ab76a6acce64348cdb0bf8699c2a866fad57c7c"
8042dependencies = [8038dependencies = [
8043 "leb128",8039 "leb128",
8044]8040]
80458041
8046[[package]]8042[[package]]
8047name = "wat"8043name = "wat"
8048version = "1.0.31"8044version = "1.0.33"
8049source = "registry+https://github.com/rust-lang/crates.io-index"8045source = "registry+https://github.com/rust-lang/crates.io-index"
8050checksum = "a8279a02835bf12e61ed2b3c3cbc6ecf9918762fd97e036917c11a09ec20ca44"8046checksum = "5e8f7f34773fa6318e8897283abf7941c1f250faae4e1a52f82df09c3bad7cce"
8051dependencies = [8047dependencies = [
8052 "wast",8048 "wast",
8053]8049]
80548050
8055[[package]]8051[[package]]
8056name = "web-sys"8052name = "web-sys"
8057version = "0.3.46"8053version = "0.3.47"
8058source = "registry+https://github.com/rust-lang/crates.io-index"8054source = "registry+https://github.com/rust-lang/crates.io-index"
8059checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3"8055checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3"
8060dependencies = [8056dependencies = [
8061 "js-sys",8057 "js-sys",
8062 "wasm-bindgen",8058 "wasm-bindgen",
8072 "untrusted",8068 "untrusted",
8073]8069]
8074
8075[[package]]
8076name = "webpki-roots"
8077version = "0.18.0"
8078source = "registry+https://github.com/rust-lang/crates.io-index"
8079checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4"
8080dependencies = [
8081 "webpki",
8082]
80838070
8084[[package]]8071[[package]]
8085name = "webpki-roots"8072name = "webpki-roots"
8086version = "0.19.0"8073version = "0.21.0"
8087source = "registry+https://github.com/rust-lang/crates.io-index"8074source = "registry+https://github.com/rust-lang/crates.io-index"
8088checksum = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739"8075checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376"
8089dependencies = [8076dependencies = [
8090 "webpki",8077 "webpki",
8091]8078]
8108 "libc",8095 "libc",
8109]8096]
8097
8098[[package]]
8099name = "which"
8100version = "4.0.2"
8101source = "registry+https://github.com/rust-lang/crates.io-index"
8102checksum = "87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111ef"
8103dependencies = [
8104 "libc",
8105 "thiserror",
8106]
81108107
8111[[package]]8108[[package]]
8112name = "winapi"8109name = "winapi"
8161 "winapi-build",8158 "winapi-build",
8162]8159]
8163
8164[[package]]
8165name = "x25519-dalek"
8166version = "0.6.0"
8167source = "registry+https://github.com/rust-lang/crates.io-index"
8168checksum = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217"
8169dependencies = [
8170 "curve25519-dalek 2.1.0",
8171 "rand_core 0.5.1",
8172 "zeroize",
8173]
81748160
8175[[package]]8161[[package]]
8176name = "x25519-dalek"8162name = "x25519-dalek"
8177version = "1.1.0"8163version = "1.1.0"
8178source = "registry+https://github.com/rust-lang/crates.io-index"8164source = "registry+https://github.com/rust-lang/crates.io-index"
8179checksum = "bc614d95359fd7afc321b66d2107ede58b246b844cf5d8a0adcca413e439f088"8165checksum = "bc614d95359fd7afc321b66d2107ede58b246b844cf5d8a0adcca413e439f088"
8180dependencies = [8166dependencies = [
8181 "curve25519-dalek 3.0.0",8167 "curve25519-dalek 3.0.2",
8182 "rand_core 0.5.1",8168 "rand_core 0.5.1",
8183 "zeroize",8169 "zeroize",
8184]8170]
8189source = "registry+https://github.com/rust-lang/crates.io-index"8175source = "registry+https://github.com/rust-lang/crates.io-index"
8190checksum = "9aeb8c4043cac71c3c299dff107171c220d179492350ea198e109a414981b83c"8176checksum = "9aeb8c4043cac71c3c299dff107171c220d179492350ea198e109a414981b83c"
8191dependencies = [8177dependencies = [
8192 "futures 0.3.8",8178 "futures 0.3.12",
8193 "log",8179 "log",
8194 "nohash-hasher",8180 "nohash-hasher",
8195 "parking_lot 0.11.1",8181 "parking_lot 0.11.1",
8251dependencies = [8237dependencies = [
8252 "cc",8238 "cc",
8253 "glob",8239 "glob",
8254 "itertools 0.9.0",8240 "itertools",
8255 "libc",8241 "libc",
8256]8242]
82578243
modifiedLICENSEdiffbeforeafterboth
1USETECH PROFESSIONAL CONFIDENTIAL1USETECH PROFESSIONAL CONFIDENTIAL
2__________________2__________________
33
4 [2019] - [2020] UseTech Professional LTD. 4 [2019] - [2021] UseTech Professional LTD.
5 All Rights Reserved.5 All Rights Reserved.
66
7NOTICE: All information contained herein is, and remains7NOTICE: All information contained herein is, and remains
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 Toolchain and make it default:553. Install stable toolchain 1.49.0 and make it default, install nightly 2021-01-27:
5656
57```bash57```bash
58rustup toolchain install 1.49.0
58rustup toolchain install nightly-2020-10-0159rustup toolchain install nightly-2020-10-01
59rustup default nightly-2020-10-0160rustup default nightly-2021-01-27
60```61```
6162
624. Add wasm target for default toolchain:634. Add wasm target for default toolchain:
6364
64```bash65```bash
65rustup target add wasm32-unknown-unknown66rustup target add wasm32-unknown-unknown --toolchain nightly-2021-01-27
66```67```
6768
685. Build:695. Build:
114115
115Additional CLI usage options are available and may be shown by running `cargo run -- --help`.116Additional CLI usage options are available and may be shown by running `cargo run -- --help`.
116117
118## Run Integration Tests
119
1201. Install all needed dependecies
121```
122cd tests
123yarn install
124```
125
1262. Run tests
127```
128yarn test
129```
130
131
117## Benchmarks132## Benchmarks
118133
119First of all, add rust toolchain and make it default.134First of all, add rust toolchain and make it default.
modifiednode/Cargo.tomldiffbeforeafterboth
1[build-dependencies.substrate-build-script-utils]1[build-dependencies.substrate-build-script-utils]
2git = 'https://github.com/usetech-llc/substrate.git'2git = 'https://github.com/usetech-llc/substrate.git'
3branch = 'release_flexi'3branch = 'unique'
4version = '2.0.0'4version = '2.0.1'
55
6[[bin]]6[[bin]]
7name = 'nft'7name = 'nft'
15license = 'Unlicense'15license = 'Unlicense'
16name = 'nft'16name = 'nft'
17repository = 'https://github.com/substrate-developer-hub/nft/'17repository = 'https://github.com/substrate-developer-hub/nft/'
18version = '2.0.0'18version = '3.0.0'
1919
20[package.metadata.docs.rs]20[package.metadata.docs.rs]
21targets = ['x86_64-unknown-linux-gnu']21targets = ['x86_64-unknown-linux-gnu']
29jsonrpc-core = '15.0.0'29jsonrpc-core = '15.0.0'
3030
31# Substrate dependencies31# Substrate dependencies
32nft-runtime = { path = '../runtime', version = '2.0.0' }32nft-runtime = { path = '../runtime', version = '3.0.0' }
33frame-benchmarking = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}33frame-benchmarking = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
34frame-benchmarking-cli = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}34frame-benchmarking-cli = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
35pallet-transaction-payment-rpc = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}35pallet-transaction-payment-rpc = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
36sc-basic-authorship = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}36sc-basic-authorship = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
37sc-cli = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }37sc-cli = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
38sc-client-api = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}38sc-client-api = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
39sc-consensus = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}39sc-consensus = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
40sc-consensus-aura = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}40sc-consensus-aura = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
41sc-executor = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }41sc-executor = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
42sc-finality-grandpa = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}42sc-finality-grandpa = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
43sc-rpc = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}43sc-rpc = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
44sc-rpc-api = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}44sc-rpc-api = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
45sc-service = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }45sc-service = { features = ['wasmtime'], version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
46sc-transaction-pool = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}46sc-transaction-pool = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
47sp-api = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}47sp-api = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
48sp-block-builder = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}48sp-block-builder = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
49sp-blockchain = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}49sp-blockchain = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
50sp-consensus = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}50sp-consensus = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
51sp-consensus-aura = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}51sp-consensus-aura = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
52sp-core = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}52sp-core = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
53sp-finality-grandpa = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}53sp-finality-grandpa = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
54sp-inherents = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}54sp-inherents = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
55sp-runtime = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}55sp-runtime = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
56sp-transaction-pool = {version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'}56sp-transaction-pool = {version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
57sc-network = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi'} 57sc-network = {version = '0.8.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
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.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique'}
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 = 'unique'}
60sc-keystore = { version = "2.0.0", git = "https://github.com/usetech-llc/substrate.git", branch = 'unique'}
61sc-telemetry = { version = "2.0.0", git = "https://github.com/usetech-llc/substrate.git", branch = 'unique'}
6062
61serde = { version = "1.0.102", features = ["derive"] }63serde = { version = "1.0.102", features = ["derive"] }
62serde_json = "1.0.41"64serde_json = "1.0.41"
modifiednode/src/chain_spec.rsdiffbeforeafterboth
210 nft_sponsor_transfer_timeout: 15,210 nft_sponsor_transfer_timeout: 15,
211 fungible_sponsor_transfer_timeout: 15,211 fungible_sponsor_transfer_timeout: 15,
212 refungible_sponsor_transfer_timeout: 15,212 refungible_sponsor_transfer_timeout: 15,
213 offchain_schema_limit: 1024,
214 variable_on_chain_schema_limit: 1024,
215 const_on_chain_schema_limit: 1024,
213 },216 },
214 }),217 }),
215 pallet_contracts: Some(ContractsConfig {218 pallet_contracts: Some(ContractsConfig {
modifiednode/src/cli.rsdiffbeforeafterboth
1212
13#[derive(Debug, StructOpt)]13#[derive(Debug, StructOpt)]
14pub enum Subcommand {14pub enum Subcommand {
15 /// Key management cli utilities
16 Key(sc_cli::KeySubcommand),
15 /// Build a chain specification.17 /// Build a chain specification.
16 BuildSpec(sc_cli::BuildSpecCmd),18 BuildSpec(sc_cli::BuildSpecCmd),
1719
33 /// Revert the chain to a previous state.35 /// Revert the chain to a previous state.
34 Revert(sc_cli::RevertCmd),36 Revert(sc_cli::RevertCmd),
3537
36 // The custom benchmark subcommmand benchmarking runtime pallets.38 /// The custom benchmark subcommmand benchmarking runtime pallets.
37 #[structopt(name = "benchmark", about = "Benchmark runtime pallets.")]39 #[structopt(name = "benchmark", about = "Benchmark runtime pallets.")]
38 Benchmark(frame_benchmarking_cli::BenchmarkCmd),40 Benchmark(frame_benchmarking_cli::BenchmarkCmd),
39}41}
modifiednode/src/command.rsdiffbeforeafterboth
1// This file is part of Substrate.1// This file is part of Substrate.
22
3// Copyright (C) 2017-2020 Parity Technologies (UK) Ltd.3// Copyright (C) 2017-2021 Parity Technologies (UK) Ltd.
4// SPDX-License-Identifier: Apache-2.04// SPDX-License-Identifier: Apache-2.0
55
6// Licensed under the Apache License, Version 2.0 (the "License");6// Licensed under the Apache License, Version 2.0 (the "License");
66 let cli = Cli::from_args();66 let cli = Cli::from_args();
6767
68 match &cli.subcommand {68 match &cli.subcommand {
69 Some(Subcommand::Key(cmd)) => cmd.run(&cli),
69 Some(Subcommand::BuildSpec(cmd)) => {70 Some(Subcommand::BuildSpec(cmd)) => {
70 let runner = cli.create_runner(cmd)?;71 let runner = cli.create_runner(cmd)?;
71 runner.sync_run(|config| cmd.run(config.chain_spec, config.network))72 runner.sync_run(|config| cmd.run(config.chain_spec, config.network))
126 },127 },
127 None => {128 None => {
128 let runner = cli.create_runner(&cli.run)?;129 let runner = cli.create_runner(&cli.run)?;
129 runner.run_node_until_exit(|config| match config.role {130 runner.run_node_until_exit(|config| async move {
131 match config.role {
130 Role::Light => service::new_light(config),132 Role::Light => service::new_light(config),
131 _ => service::new_full(config),133 _ => service::new_full(config),
132 })134 }.map_err(sc_cli::Error::Service)
135 })
133 }136 }
134 }137 }
135}138}
modifiednode/src/service.rsdiffbeforeafterboth
14use sc_executor::native_executor_instance;14use sc_executor::native_executor_instance;
15pub use sc_executor::NativeExecutor;15pub use sc_executor::NativeExecutor;
16use sp_consensus_aura::sr25519::{AuthorityPair as AuraPair};16use sp_consensus_aura::sr25519::{AuthorityPair as AuraPair};
17use sc_finality_grandpa::{FinalityProofProvider as GrandpaFinalityProofProvider, SharedVoterState};17use sc_finality_grandpa::SharedVoterState;
18use sc_keystore::LocalKeystore;
19use sc_telemetry::TelemetrySpan;
1820
19// Our native executor instance.21// Our native executor instance.
20native_executor_instance!(22native_executor_instance!(
39 sc_finality_grandpa::GrandpaBlockImport<FullBackend, Block, FullClient, FullSelectChain>,41 sc_finality_grandpa::GrandpaBlockImport<FullBackend, Block, FullClient, FullSelectChain>,
40 AuraPair42 AuraPair
41 >,43 >,
42 sc_finality_grandpa::LinkHalf<Block, FullClient, FullSelectChain>44 sc_finality_grandpa::LinkHalf<Block, FullClient, FullSelectChain>,
45 Option<TelemetrySpan>,
43 )46 )
44>, ServiceError> {47>, ServiceError> {
48 if config.keystore_remote.is_some() {
49 return Err(ServiceError::Other(
50 format!("Remote Keystores are not supported.")))
51 }
45 let inherent_data_providers = sp_inherents::InherentDataProviders::new();52 let inherent_data_providers = sp_inherents::InherentDataProviders::new();
4653
47 let (client, backend, keystore, task_manager) =54 let (client, backend, keystore_container, task_manager, telemetry_span) =
48 sc_service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;55 sc_service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
49 let client = Arc::new(client);56 let client = Arc::new(client);
5057
69 sc_consensus_aura::slot_duration(&*client)?,76 sc_consensus_aura::slot_duration(&*client)?,
70 aura_block_import.clone(),77 aura_block_import.clone(),
71 Some(Box::new(grandpa_block_import.clone())),78 Some(Box::new(grandpa_block_import.clone())),
72 None,
73 client.clone(),79 client.clone(),
74 inherent_data_providers.clone(),80 inherent_data_providers.clone(),
75 &task_manager.spawn_handle(),81 &task_manager.spawn_handle(),
78 )?;84 )?;
7985
80 Ok(sc_service::PartialComponents {86 Ok(sc_service::PartialComponents {
81 client, backend, task_manager, import_queue, keystore, select_chain, transaction_pool,87 client,
88 backend,
89 task_manager,
90 import_queue,
91 keystore_container,
92 select_chain,
93 transaction_pool,
82 inherent_data_providers,94 inherent_data_providers,
83 other: (aura_block_import, grandpa_link),95 other: (aura_block_import, grandpa_link, telemetry_span),
84 })96 })
85}97}
98
99fn remote_keystore(_url: &String) -> Result<Arc<LocalKeystore>, &'static str> {
100 // FIXME: here would the concrete keystore be built,
101 // must return a concrete type (NOT `LocalKeystore`) that
102 // implements `CryptoStore` and `SyncCryptoStore`
103 Err("Remote Keystore not supported.")
104}
86105
87/// Builds a new service for a full client.106/// Builds a new service for a full client.
88pub fn new_full(config: Configuration) -> Result<TaskManager, ServiceError> {107pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError> {
89 let sc_service::PartialComponents {108 let sc_service::PartialComponents {
90 client, backend, mut task_manager, import_queue, keystore, select_chain, transaction_pool,109 client,
110 backend,
111 mut task_manager,
112 import_queue,
113 mut keystore_container,
114 select_chain,
115 transaction_pool,
91 inherent_data_providers,116 inherent_data_providers,
92 other: (block_import, grandpa_link),117 other: (block_import, grandpa_link, telemetry_span),
93 } = new_partial(&config)?;118 } = new_partial(&config)?;
94119
95 let finality_proof_provider =120 if let Some(url) = &config.keystore_remote {
121 match remote_keystore(url) {
96 GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());122 Ok(k) => keystore_container.set_remote_keystore(k),
123 Err(e) => {
124 return Err(ServiceError::Other(
125 format!("Error hooking up remote keystore for {}: {}", url, e)))
126 }
127 };
128 }
129
130 config.network.extra_sets.push(sc_finality_grandpa::grandpa_peers_set_config());
97131
98 let (network, network_status_sinks, system_rpc_tx, network_starter) =132 let (network, network_status_sinks, system_rpc_tx, network_starter) =
99 sc_service::build_network(sc_service::BuildNetworkParams {133 sc_service::build_network(sc_service::BuildNetworkParams {
104 import_queue,138 import_queue,
105 on_demand: None,139 on_demand: None,
106 block_announce_validator_builder: None,140 block_announce_validator_builder: None,
107 finality_proof_request_builder: None,
108 finality_proof_provider: Some(finality_proof_provider.clone()),
109 })?;141 })?;
110142
111 if config.offchain_worker.enabled {143 if config.offchain_worker.enabled {
116148
117 let role = config.role.clone();149 let role = config.role.clone();
118 let force_authoring = config.force_authoring;150 let force_authoring = config.force_authoring;
151 let backoff_authoring_blocks: Option<()> = None;
119 let name = config.network.node_name.clone();152 let name = config.network.node_name.clone();
120 let enable_grandpa = !config.disable_grandpa;153 let enable_grandpa = !config.disable_grandpa;
121 let prometheus_registry = config.prometheus_registry().cloned();154 let prometheus_registry = config.prometheus_registry().cloned();
122 let telemetry_connection_sinks = sc_service::TelemetryConnectionSinks::default();
123155
124 let rpc_extensions_builder = {156 let rpc_extensions_builder = {
125 let client = client.clone();157 let client = client.clone();
136 })168 })
137 };169 };
138170
139 sc_service::spawn_tasks(sc_service::SpawnTasksParams {171 let (_rpc_handlers, telemetry_connection_notifier) = sc_service::spawn_tasks(
172 sc_service::SpawnTasksParams {
140 network: network.clone(),173 network: network.clone(),
141 client: client.clone(),174 client: client.clone(),
142 keystore: keystore.clone(),175 keystore: keystore_container.sync_keystore(),
143 task_manager: &mut task_manager,176 task_manager: &mut task_manager,
144 transaction_pool: transaction_pool.clone(),177 transaction_pool: transaction_pool.clone(),
145 telemetry_connection_sinks: telemetry_connection_sinks.clone(),
146 rpc_extensions_builder: rpc_extensions_builder,178 rpc_extensions_builder,
147 on_demand: None,179 on_demand: None,
148 remote_blockchain: None,180 remote_blockchain: None,
149 backend, network_status_sinks, system_rpc_tx, config,181 backend,
182 network_status_sinks,
183 system_rpc_tx,
184 config,
185 telemetry_span,
150 })?;186 },
187 )?;
151188
152 if role.is_authority() {189 if role.is_authority() {
153 let proposer = sc_basic_authorship::ProposerFactory::new(190 let proposer = sc_basic_authorship::ProposerFactory::new(
191 task_manager.spawn_handle(),
154 client.clone(),192 client.clone(),
155 transaction_pool,193 transaction_pool,
156 prometheus_registry.as_ref(),194 prometheus_registry.as_ref(),
159 let can_author_with =197 let can_author_with =
160 sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone());198 sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone());
161199
162 let aura = sc_consensus_aura::start_aura::<_, _, _, _, _, AuraPair, _, _, _>(200 let aura = sc_consensus_aura::start_aura::<_, _, _, _, _, AuraPair, _, _, _,_>(
163 sc_consensus_aura::slot_duration(&*client)?,201 sc_consensus_aura::slot_duration(&*client)?,
164 client.clone(),202 client.clone(),
165 select_chain,203 select_chain,
168 network.clone(),206 network.clone(),
169 inherent_data_providers.clone(),207 inherent_data_providers.clone(),
170 force_authoring,208 force_authoring,
209 backoff_authoring_blocks,
171 keystore.clone(),210 keystore_container.sync_keystore(),
172 can_author_with,211 can_author_with,
173 )?;212 )?;
174213
180 // if the node isn't actively participating in consensus then it doesn't219 // if the node isn't actively participating in consensus then it doesn't
181 // need a keystore, regardless of which protocol we use below.220 // need a keystore, regardless of which protocol we use below.
182 let keystore = if role.is_authority() {221 let keystore = if role.is_authority() {
183 Some(keystore as sp_core::traits::BareCryptoStorePtr)222 Some(keystore_container.sync_keystore())
184 } else {223 } else {
185 None224 None
186 };225 };
206 config: grandpa_config,245 config: grandpa_config,
207 link: grandpa_link,246 link: grandpa_link,
208 network,247 network,
209 inherent_data_providers,
210 telemetry_on_connect: Some(telemetry_connection_sinks.on_connect_stream()),248 telemetry_on_connect: telemetry_connection_notifier.map(|x| x.on_connect_stream()),
211 voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(),249 voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(),
212 prometheus_registry,250 prometheus_registry,
213 shared_voter_state: SharedVoterState::empty(),251 shared_voter_state: SharedVoterState::empty(),
219 "grandpa-voter",257 "grandpa-voter",
220 sc_finality_grandpa::run_grandpa_voter(grandpa_config)?258 sc_finality_grandpa::run_grandpa_voter(grandpa_config)?
221 );259 );
222 } else {260 }
223 sc_finality_grandpa::setup_disabled_grandpa(
224 client,
225 &inherent_data_providers,
226 network,
227 )?;
228 }
229261
230 network_starter.start_network();262 network_starter.start_network();
231 Ok(task_manager)263 Ok(task_manager)
232}264}
233265
234/// Builds a new service for a light client.266/// Builds a new service for a light client.
235pub fn new_light(config: Configuration) -> Result<TaskManager, ServiceError> {267pub fn new_light(mut config: Configuration) -> Result<TaskManager, ServiceError> {
236 let (client, backend, keystore, mut task_manager, on_demand) =268 let (client, backend, keystore_container, mut task_manager, on_demand, telemetry_span) =
237 sc_service::new_light_parts::<Block, RuntimeApi, Executor>(&config)?;269 sc_service::new_light_parts::<Block, RuntimeApi, Executor>(&config)?;
270
271 config.network.extra_sets.push(sc_finality_grandpa::grandpa_peers_set_config());
272
273 let select_chain = sc_consensus::LongestChain::new(backend.clone());
238274
239 let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(275 let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(
240 config.transaction_pool.clone(),276 config.transaction_pool.clone(),
244 on_demand.clone(),280 on_demand.clone(),
245 ));281 ));
246282
247 let grandpa_block_import = sc_finality_grandpa::light_block_import(283 let (grandpa_block_import, _) = sc_finality_grandpa::block_import(
248 client.clone(), backend.clone(), &(client.clone() as Arc<_>),284 client.clone(),
285 &(client.clone() as Arc<_>),
249 Arc::new(on_demand.checker().clone()) as Arc<_>,286 select_chain.clone(),
250 )?;287 )?;
288
251 let finality_proof_import = grandpa_block_import.clone();289 let aura_block_import = sc_consensus_aura::AuraBlockImport::<_, _, _, AuraPair>::new(
252 let finality_proof_request_builder =290 grandpa_block_import.clone(),
253 finality_proof_import.create_finality_proof_request_builder();291 client.clone(),
292 );
254293
255 let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _, _>(294 let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _, _>(
256 sc_consensus_aura::slot_duration(&*client)?,295 sc_consensus_aura::slot_duration(&*client)?,
257 grandpa_block_import,296 aura_block_import,
258 None,
259 Some(Box::new(finality_proof_import)),297 Some(Box::new(grandpa_block_import)),
260 client.clone(),298 client.clone(),
261 InherentDataProviders::new(),299 InherentDataProviders::new(),
262 &task_manager.spawn_handle(),300 &task_manager.spawn_handle(),
263 config.prometheus_registry(),301 config.prometheus_registry(),
264 sp_consensus::NeverCanAuthor,302 sp_consensus::NeverCanAuthor,
265 )?;303 )?;
266
267 let finality_proof_provider =
268 GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
269304
270 let (network, network_status_sinks, system_rpc_tx, network_starter) =305 let (network, network_status_sinks, system_rpc_tx, network_starter) =
271 sc_service::build_network(sc_service::BuildNetworkParams {306 sc_service::build_network(sc_service::BuildNetworkParams {
276 import_queue,311 import_queue,
277 on_demand: Some(on_demand.clone()),312 on_demand: Some(on_demand.clone()),
278 block_announce_validator_builder: None,313 block_announce_validator_builder: None,
279 finality_proof_request_builder: Some(finality_proof_request_builder),
280 finality_proof_provider: Some(finality_proof_provider),
281 })?;314 })?;
282315
283 if config.offchain_worker.enabled {316 if config.offchain_worker.enabled {
292 task_manager: &mut task_manager,325 task_manager: &mut task_manager,
293 on_demand: Some(on_demand),326 on_demand: Some(on_demand),
294 rpc_extensions_builder: Box::new(|_, _| ()),327 rpc_extensions_builder: Box::new(|_, _| ()),
328 config,
329 client,
295 telemetry_connection_sinks: sc_service::TelemetryConnectionSinks::default(),330 keystore: keystore_container.sync_keystore(),
296 config,
297 client,
298 keystore,
299 backend,331 backend,
300 network,332 network,
301 network_status_sinks,333 network_status_sinks,
302 system_rpc_tx,334 system_rpc_tx,
335 telemetry_span,
303 })?;336 })?;
304337
305 network_starter.start_network();338 network_starter.start_network();
modifiedpallets/nft/Cargo.tomldiffbeforeafterboth
6license = 'Unlicense'6license = 'Unlicense'
7name = 'pallet-nft'7name = 'pallet-nft'
8repository = 'https://github.com/substrate-developer-hub/nft/'8repository = 'https://github.com/substrate-developer-hub/nft/'
9version = '2.0.0'9version = '3.0.0'
1010
11[package.metadata.docs.rs]11[package.metadata.docs.rs]
12targets = ['x86_64-unknown-linux-gnu']12targets = ['x86_64-unknown-linux-gnu']
16default-features = false16default-features = false
17features = ['derive']17features = ['derive']
18package = 'parity-scale-codec'18package = 'parity-scale-codec'
19version = '1.3.4'19version = '1.3.6'
2020
21[dependencies.frame-support]21[dependencies.frame-support]
22default-features = false22default-features = false
23git = 'https://github.com/usetech-llc/substrate.git'23git = 'https://github.com/usetech-llc/substrate.git'
24branch = 'release_flexi'24branch = 'unique'
25version = '2.0.0'25version = '2.0.1'
2626
27[dependencies.frame-system]27[dependencies.frame-system]
28default-features = false28default-features = false
29git = 'https://github.com/usetech-llc/substrate.git'29git = 'https://github.com/usetech-llc/substrate.git'
30branch = 'release_flexi'30branch = 'unique'
31version = '2.0.0'31version = '2.0.1'
3232
33[dev-dependencies.sp-core]33[dev-dependencies.sp-core]
34default-features = false34default-features = false
35git = 'https://github.com/usetech-llc/substrate.git'35git = 'https://github.com/usetech-llc/substrate.git'
36branch = 'release_flexi'36branch = 'unique'
37version = '2.0.0'37version = '2.0.1'
3838
39[dev-dependencies.sp-io]39[dev-dependencies.sp-io]
40default-features = false40default-features = false
41git = 'https://github.com/usetech-llc/substrate.git'41git = 'https://github.com/usetech-llc/substrate.git'
42branch = 'release_flexi'42branch = 'unique'
43version = '2.0.0'43version = '2.0.1'
4444
45[dependencies.sp-runtime]45[dependencies.sp-runtime]
46default-features = false46default-features = false
47git = 'https://github.com/usetech-llc/substrate.git'47git = 'https://github.com/usetech-llc/substrate.git'
48branch = 'release_flexi'48branch = 'unique'
49version = '2.0.0'49version = '2.0.1'
50 50
51[dependencies]51[dependencies]
52# third-party dependencies52# third-party dependencies
56[dependencies.sp-std]56[dependencies.sp-std]
57default-features = false57default-features = false
58git = 'https://github.com/usetech-llc/substrate.git'58git = 'https://github.com/usetech-llc/substrate.git'
59branch = 'release_flexi'59branch = 'unique'
60version = '2.0.0'60version = '2.0.1'
6161
62[dependencies.transaction-payment]62[dependencies.transaction-payment]
63default-features = false63default-features = false
64git = 'https://github.com/usetech-llc/substrate.git'64git = 'https://github.com/usetech-llc/substrate.git'
65package = 'pallet-transaction-payment'65package = 'pallet-transaction-payment'
66branch = 'release_flexi'66branch = 'unique'
67version = '2.0.0'67version = '2.0.1'
6868
69[dependencies.frame-benchmarking]69[dependencies.frame-benchmarking]
70version = "2.0.0"70version = "2.0.1"
71default-features = false71default-features = false
72git = 'https://github.com/usetech-llc/substrate.git'72git = 'https://github.com/usetech-llc/substrate.git'
73branch = 'release_flexi'73branch = 'unique'
74optional = true74optional = true
7575
76[dependencies.pallet-contracts]76[dependencies.pallet-contracts]
77default-features = false77default-features = false
78git = 'https://github.com/usetech-llc/substrate.git'78git = 'https://github.com/usetech-llc/substrate.git'
79package = 'pallet-contracts'79package = 'pallet-contracts'
80branch = 'release_flexi'80branch = 'unique'
81version = '2.0.0'81version = '2.0.1'
8282
83[dependencies.pallet-balances]83[dependencies.pallet-balances]
84default-features = false84default-features = false
85git = 'https://github.com/usetech-llc/substrate.git'85git = 'https://github.com/usetech-llc/substrate.git'
86package = 'pallet-balances'86package = 'pallet-balances'
87branch = 'release_flexi'87branch = 'unique'
88version = '2.0.0'88version = '2.0.1'
8989
90[dependencies.pallet-timestamp]90[dependencies.pallet-timestamp]
91default-features = false91default-features = false
92git = 'https://github.com/usetech-llc/substrate.git'92git = 'https://github.com/usetech-llc/substrate.git'
93package = 'pallet-timestamp'93package = 'pallet-timestamp'
94branch = 'release_flexi'94branch = 'unique'
95version = '2.0.0'95version = '2.0.1'
9696
97[dependencies.pallet-randomness-collective-flip]97[dependencies.pallet-randomness-collective-flip]
98default-features = false98default-features = false
99git = 'https://github.com/usetech-llc/substrate.git'99git = 'https://github.com/usetech-llc/substrate.git'
100package = 'pallet-randomness-collective-flip'100package = 'pallet-randomness-collective-flip'
101branch = 'release_flexi'101branch = 'unique'
102version = '2.0.0'102version = '2.0.1'
103103
104[features]104[features]
105default = ['std']105default = ['std']
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
20 ensure, fail, parameter_types,20 ensure, fail, parameter_types,
21 traits::{21 traits::{
22 Currency, ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced,22 Currency, ExistenceRequirement, Get, Imbalance, KeyOwnerProofSystem, OnUnbalanced,
23 Randomness, WithdrawReason,23 Randomness, IsSubType,
24 },24 },
25 weights::{25 weights::{
26 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},26 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
27 DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,27 DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,
28 WeightToFeePolynomial,28 WeightToFeePolynomial, DispatchClass,
29 },29 },
30 IsSubType, StorageValue,30 StorageValue,
31};31};
3232
33use frame_system::{self as system, ensure_signed, ensure_root};33use frame_system::{self as system, ensure_signed, ensure_root};
41 },41 },
42 FixedPointOperand, FixedU128,42 FixedPointOperand, FixedU128,
43};43};
44use pallet_contracts::ContractAddressFor;
45use sp_runtime::traits::StaticLookup;44use sp_runtime::traits::StaticLookup;
45use pallet_contracts::chain_extension::UncheckedFrom;
46use transaction_payment::OnChargeTransaction;
4647
47#[cfg(test)]48#[cfg(test)]
48mod mock;49mod mock;
74 ReFungible(DecimalPoints),75 ReFungible(DecimalPoints),
75}76}
7677
78impl Default for CollectionMode {
79 fn default() -> Self {
80 Self::Invalid
81 }
82}
83
77impl Into<u8> for CollectionMode {84impl Into<u8> for CollectionMode {
78 fn into(self) -> u8 {85 fn into(self) -> u8 {
79 match self {86 match self {
97 }104 }
98}105}
99106
100impl Default for CollectionMode {
101 fn default() -> Self {
102 Self::Invalid
103 }
104}
105
106#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]107#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]
107#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]108#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
108pub enum SchemaVersion {109pub enum SchemaVersion {
208 pub nft_sponsor_transfer_timeout: u32,209 pub nft_sponsor_transfer_timeout: u32,
209 pub fungible_sponsor_transfer_timeout: u32,210 pub fungible_sponsor_transfer_timeout: u32,
210 pub refungible_sponsor_transfer_timeout: u32,211 pub refungible_sponsor_transfer_timeout: u32,
212
213 // Schema limits
214 pub offchain_schema_limit: u32,
215 pub variable_on_chain_schema_limit: u32,
216 pub const_on_chain_schema_limit: u32,
211}217}
212218
213pub trait WeightInfo {219pub trait WeightInfo {
303309
304decl_error! {310decl_error! {
305 /// Error for non-fungible-token module.311 /// Error for non-fungible-token module.
306 pub enum Error for Module<T: Trait> {312 pub enum Error for Module<T: Config> {
307 /// Total collections bound exceeded.313 /// Total collections bound exceeded.
308 TotalCollectionsLimitExceeded,314 TotalCollectionsLimitExceeded,
309 /// Decimal_points parameter must be lower than MAX_DECIMAL_POINTS constant, currently it is 30.315 /// Decimal_points parameter must be lower than MAX_DECIMAL_POINTS constant, currently it is 30.
318 CollectionNotFound,324 CollectionNotFound,
319 /// Item not exists.325 /// Item not exists.
320 TokenNotFound,326 TokenNotFound,
327 /// Admin not found
328 AdminNotFound,
321 /// Arithmetic calculation overflow.329 /// Arithmetic calculation overflow.
322 NumOverflow, 330 NumOverflow,
323 /// Account already has admin role.331 /// Account already has admin role.
367 /// Account token limit exceeded per collection375 /// Account token limit exceeded per collection
368 AccountTokenLimitExceeded,376 AccountTokenLimitExceeded,
369 /// Collection limit bounds per collection exceeded377 /// Collection limit bounds per collection exceeded
370 CollectionLimitBoundsExceeded378 CollectionLimitBoundsExceeded,
379 /// Schema data size limit bound exceeded
380 SchemaDataLimitExceeded
371 }381 }
372}382}
373383
374pub trait Trait: system::Trait + Sized + transaction_payment::Trait + pallet_contracts::Trait {384pub trait Config: system::Config + Sized + transaction_payment::Config + pallet_contracts::Config {
375 type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;385 type Event: From<Event<Self>> + Into<<Self as system::Config>::Event>;
376386
377 /// Weight information for extrinsics in this pallet.387 /// Weight information for extrinsics in this pallet.
378 type WeightInfo: WeightInfo;388 type WeightInfo: WeightInfo;
384// #endregion394// #endregion
385395
386decl_storage! {396decl_storage! {
387 trait Store for Module<T: Trait> as Nft {397 trait Store for Module<T: Config> as Nft {
388398
389 // Private members399 // Private members
390 NextCollectionID: CollectionId;400 NextCollectionID: CollectionId;
419 pub AddressTokens get(fn address_tokens): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => Vec<TokenId>;429 pub AddressTokens get(fn address_tokens): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => Vec<TokenId>;
420430
421 /// Tokens transfer baskets431 /// Tokens transfer baskets
432 pub CreateItemBasket get(fn create_item_basket): map hasher(twox_64_concat) (CollectionId, T::AccountId) => T::BlockNumber;
422 pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;433 pub NftTransferBasket get(fn nft_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;
423 pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => T::BlockNumber;434 pub FungibleTransferBasket get(fn fungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(twox_64_concat) T::AccountId => T::BlockNumber;
424 pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;435 pub ReFungibleTransferBasket get(fn refungible_transfer_basket): double_map hasher(identity) CollectionId, hasher(identity) TokenId => T::BlockNumber;
456decl_event!(467decl_event!(
457 pub enum Event<T>468 pub enum Event<T>
458 where469 where
459 AccountId = <T as system::Trait>::AccountId,470 AccountId = <T as system::Config>::AccountId,
460 {471 {
461 /// New collection was created472 /// New collection was created
462 /// 473 ///
490);501);
491502
492decl_module! {503decl_module! {
493 pub struct Module<T: Trait> for enum Call where origin: T::Origin {504 pub struct Module<T: Config> for enum Call
494505 where
506 origin: T::Origin
507 {
495 fn deposit_event() = default;508 fn deposit_event() = default;
496 type Error = Error<T>;509 type Error = Error<T>;
497510
523 /// 536 ///
524 /// * mode: [CollectionMode] collection type and type dependent data.537 /// * mode: [CollectionMode] collection type and type dependent data.
525 // returns collection ID538 // returns collection ID
526 #[weight = T::WeightInfo::create_collection()]539 #[weight = <T as Config>::WeightInfo::create_collection()]
527 pub fn create_collection(origin,540 pub fn create_collection(origin,
528 collection_name: Vec<u16>,541 collection_name: Vec<u16>,
529 collection_description: Vec<u16>,542 collection_description: Vec<u16>,
598 /// # Arguments611 /// # Arguments
599 /// 612 ///
600 /// * collection_id: collection to destroy.613 /// * collection_id: collection to destroy.
601 #[weight = T::WeightInfo::destroy_collection()]614 #[weight = <T as Config>::WeightInfo::destroy_collection()]
602 pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {615 pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {
603616
604 let sender = ensure_signed(origin)?;617 let sender = ensure_signed(origin)?;
645 /// * collection_id.658 /// * collection_id.
646 /// 659 ///
647 /// * address.660 /// * address.
648 #[weight = T::WeightInfo::add_to_white_list()]661 #[weight = <T as Config>::WeightInfo::add_to_white_list()]
649 pub fn add_to_white_list(origin, collection_id: CollectionId, address: T::AccountId) -> DispatchResult{662 pub fn add_to_white_list(origin, collection_id: CollectionId, address: T::AccountId) -> DispatchResult{
650663
651 let sender = ensure_signed(origin)?;664 let sender = ensure_signed(origin)?;
668 /// * collection_id.681 /// * collection_id.
669 /// 682 ///
670 /// * address.683 /// * address.
671 #[weight = T::WeightInfo::remove_from_white_list()]684 #[weight = <T as Config>::WeightInfo::remove_from_white_list()]
672 pub fn remove_from_white_list(origin, collection_id: CollectionId, address: T::AccountId) -> DispatchResult{685 pub fn remove_from_white_list(origin, collection_id: CollectionId, address: T::AccountId) -> DispatchResult{
673686
674 let sender = ensure_signed(origin)?;687 let sender = ensure_signed(origin)?;
690 /// * collection_id.703 /// * collection_id.
691 /// 704 ///
692 /// * mode: [AccessMode]705 /// * mode: [AccessMode]
693 #[weight = T::WeightInfo::set_public_access_mode()]706 #[weight = <T as Config>::WeightInfo::set_public_access_mode()]
694 pub fn set_public_access_mode(origin, collection_id: CollectionId, mode: AccessMode) -> DispatchResult707 pub fn set_public_access_mode(origin, collection_id: CollectionId, mode: AccessMode) -> DispatchResult
695 {708 {
696 let sender = ensure_signed(origin)?;709 let sender = ensure_signed(origin)?;
716 /// * collection_id.729 /// * collection_id.
717 /// 730 ///
718 /// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.731 /// * mint_permission: Boolean parameter. If True, allows minting to Anyone with conditions above.
719 #[weight = T::WeightInfo::set_mint_permission()]732 #[weight = <T as Config>::WeightInfo::set_mint_permission()]
720 pub fn set_mint_permission(origin, collection_id: CollectionId, mint_permission: bool) -> DispatchResult733 pub fn set_mint_permission(origin, collection_id: CollectionId, mint_permission: bool) -> DispatchResult
721 {734 {
722 let sender = ensure_signed(origin)?;735 let sender = ensure_signed(origin)?;
740 /// * collection_id.753 /// * collection_id.
741 /// 754 ///
742 /// * new_owner.755 /// * new_owner.
743 #[weight = T::WeightInfo::change_collection_owner()]756 #[weight = <T as Config>::WeightInfo::change_collection_owner()]
744 pub fn change_collection_owner(origin, collection_id: CollectionId, new_owner: T::AccountId) -> DispatchResult {757 pub fn change_collection_owner(origin, collection_id: CollectionId, new_owner: T::AccountId) -> DispatchResult {
745758
746 let sender = ensure_signed(origin)?;759 let sender = ensure_signed(origin)?;
765 /// * collection_id: ID of the Collection to add admin for.778 /// * collection_id: ID of the Collection to add admin for.
766 /// 779 ///
767 /// * new_admin_id: Address of new admin to add.780 /// * new_admin_id: Address of new admin to add.
768 #[weight = T::WeightInfo::add_collection_admin()]781 #[weight = <T as Config>::WeightInfo::add_collection_admin()]
769 pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::AccountId) -> DispatchResult {782 pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::AccountId) -> DispatchResult {
770783
771 let sender = ensure_signed(origin)?;784 let sender = ensure_signed(origin)?;
799 /// * collection_id: ID of the Collection to remove admin for.812 /// * collection_id: ID of the Collection to remove admin for.
800 /// 813 ///
801 /// * account_id: Address of admin to remove.814 /// * account_id: Address of admin to remove.
802 #[weight = T::WeightInfo::remove_collection_admin()]815 #[weight = <T as Config>::WeightInfo::remove_collection_admin()]
803 pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::AccountId) -> DispatchResult {816 pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::AccountId) -> DispatchResult {
804817
805 let sender = ensure_signed(origin)?;818 let sender = ensure_signed(origin)?;
806 Self::check_owner_or_admin_permissions(collection_id, sender)?;819 Self::check_owner_or_admin_permissions(collection_id, sender)?;
820 ensure!(<AdminList<T>>::contains_key(collection_id), Error::<T>::AdminNotFound);
807821
808 if <AdminList<T>>::contains_key(collection_id)822 let mut admin_arr = <AdminList<T>>::get(collection_id);
809 {
810 let mut admin_arr = <AdminList<T>>::get(collection_id);
811 admin_arr.retain(|i| *i != account_id);823 admin_arr.retain(|i| *i != account_id);
812 <AdminList<T>>::insert(collection_id, admin_arr);824 <AdminList<T>>::insert(collection_id, admin_arr);
813 }
814825
815 Ok(())826 Ok(())
816 }827 }
824 /// * collection_id.835 /// * collection_id.
825 /// 836 ///
826 /// * new_sponsor.837 /// * new_sponsor.
827 #[weight = T::WeightInfo::set_collection_sponsor()]838 #[weight = <T as Config>::WeightInfo::set_collection_sponsor()]
828 pub fn set_collection_sponsor(origin, collection_id: CollectionId, new_sponsor: T::AccountId) -> DispatchResult {839 pub fn set_collection_sponsor(origin, collection_id: CollectionId, new_sponsor: T::AccountId) -> DispatchResult {
829840
830 let sender = ensure_signed(origin)?;841 let sender = ensure_signed(origin)?;
847 /// # Arguments858 /// # Arguments
848 /// 859 ///
849 /// * collection_id.860 /// * collection_id.
850 #[weight = T::WeightInfo::confirm_sponsorship()]861 #[weight = <T as Config>::WeightInfo::confirm_sponsorship()]
851 pub fn confirm_sponsorship(origin, collection_id: CollectionId) -> DispatchResult {862 pub fn confirm_sponsorship(origin, collection_id: CollectionId) -> DispatchResult {
852863
853 let sender = ensure_signed(origin)?;864 let sender = ensure_signed(origin)?;
871 /// # Arguments882 /// # Arguments
872 /// 883 ///
873 /// * collection_id.884 /// * collection_id.
874 #[weight = T::WeightInfo::remove_collection_sponsor()]885 #[weight = <T as Config>::WeightInfo::remove_collection_sponsor()]
875 pub fn remove_collection_sponsor(origin, collection_id: CollectionId) -> DispatchResult {886 pub fn remove_collection_sponsor(origin, collection_id: CollectionId) -> DispatchResult {
876887
877 let sender = ensure_signed(origin)?;888 let sender = ensure_signed(origin)?;
911 // .saturating_add(RocksDbWeight::get().reads(10 as Weight))922 // .saturating_add(RocksDbWeight::get().reads(10 as Weight))
912 // .saturating_add(RocksDbWeight::get().writes(8 as Weight))]923 // .saturating_add(RocksDbWeight::get().writes(8 as Weight))]
913924
914 #[weight = T::WeightInfo::create_item(data.len())]925 #[weight = <T as Config>::WeightInfo::create_item(data.len())]
915 pub fn create_item(origin, collection_id: CollectionId, owner: T::AccountId, data: CreateItemData) -> DispatchResult {926 pub fn create_item(origin, collection_id: CollectionId, owner: T::AccountId, data: CreateItemData) -> DispatchResult {
916927
917 let sender = ensure_signed(origin)?;928 let sender = ensure_signed(origin)?;
945 /// * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].956 /// * itemsData: Array items properties. Each property is an array of bytes itself, see [create_item].
946 /// 957 ///
947 /// * owner: Address, initial owner of the NFT.958 /// * owner: Address, initial owner of the NFT.
948 #[weight = T::WeightInfo::create_item(items_data.into_iter()959 #[weight = <T as Config>::WeightInfo::create_item(items_data.into_iter()
949 .map(|data| { data.len() })960 .map(|data| { data.len() })
950 .sum())]961 .sum())]
951 pub fn create_multiple_items(origin, collection_id: CollectionId, owner: T::AccountId, items_data: Vec<CreateItemData>) -> DispatchResult {962 pub fn create_multiple_items(origin, collection_id: CollectionId, owner: T::AccountId, items_data: Vec<CreateItemData>) -> DispatchResult {
981 /// * collection_id: ID of the collection.992 /// * collection_id: ID of the collection.
982 /// 993 ///
983 /// * item_id: ID of NFT to burn.994 /// * item_id: ID of NFT to burn.
984 #[weight = T::WeightInfo::burn_item()]995 #[weight = <T as Config>::WeightInfo::burn_item()]
985 pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {996 pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {
986997
987 let sender = ensure_signed(origin)?;998 let sender = ensure_signed(origin)?;
1001 {1012 {
1002 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,1013 CollectionMode::NFT => Self::burn_nft_item(collection_id, item_id)?,
1003 CollectionMode::Fungible(_) => Self::burn_fungible_item(&sender, collection_id, value)?,1014 CollectionMode::Fungible(_) => Self::burn_fungible_item(&sender, collection_id, value)?,
1004 CollectionMode::ReFungible(_) => Self::burn_refungible_item(collection_id, item_id, sender.clone())?,1015 CollectionMode::ReFungible(_) => Self::burn_refungible_item(collection_id, item_id, &sender)?,
1005 _ => ()1016 _ => ()
1006 };1017 };
10071018
1034 /// * Non-Fungible Mode: Ignored1045 /// * Non-Fungible Mode: Ignored
1035 /// * Fungible Mode: Must specify transferred amount1046 /// * Fungible Mode: Must specify transferred amount
1036 /// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)1047 /// * Re-Fungible Mode: Must specify transferred portion (between 0 and 1)
1037 #[weight = T::WeightInfo::transfer()]1048 #[weight = <T as Config>::WeightInfo::transfer()]
1038 pub fn transfer(origin, recipient: T::AccountId, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {1049 pub fn transfer(origin, recipient: T::AccountId, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {
1039
1040 let sender = ensure_signed(origin)?;1050 let sender = ensure_signed(origin)?;
1041 let target_collection = <Collection<T>>::get(collection_id);1051 Self::transfer_internal(sender, recipient, collection_id, item_id, value)
1042
1043 // Limits check
1044 Self::is_correct_transfer(collection_id, &target_collection, &recipient)?;
1045
1046 // Transfer permissions check
1047 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||
1048 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
1049 Error::<T>::NoPermission);
1050
1051 if target_collection.access == AccessMode::WhiteList {
1052 Self::check_white_list(collection_id, &sender)?;
1053 Self::check_white_list(collection_id, &recipient)?;
1054 }
1055
1056 match target_collection.mode
1057 {
1058 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,
1059 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,
1060 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,
1061 _ => ()
1062 };
1063
1064 Ok(())
1065 }1052 }
10661053
1067 /// Set, change, or remove approved address to transfer the ownership of the NFT.1054 /// Set, change, or remove approved address to transfer the ownership of the NFT.
1079 /// * collection_id.1066 /// * collection_id.
1080 /// 1067 ///
1081 /// * item_id: ID of the item.1068 /// * item_id: ID of the item.
1082 #[weight = T::WeightInfo::approve()]1069 #[weight = <T as Config>::WeightInfo::approve()]
1083 pub fn approve(origin, spender: T::AccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResult {1070 pub fn approve(origin, spender: T::AccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResult {
10841071
1085 let sender = ensure_signed(origin)?;1072 let sender = ensure_signed(origin)?;
10861073
1074 Self::collection_exists(collection_id)?;
1075 Self::token_exists(collection_id, item_id, &sender)?;
1076
1087 // Transfer permissions check1077 // Transfer permissions check
1088 let target_collection = <Collection<T>>::get(collection_id);1078 let target_collection = <Collection<T>>::get(collection_id);
1089 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1079 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||
1124 /// * item_id: ID of the item.1114 /// * item_id: ID of the item.
1125 /// 1115 ///
1126 /// * value: Amount to transfer.1116 /// * value: Amount to transfer.
1127 #[weight = T::WeightInfo::transfer_from()]1117 #[weight = <T as Config>::WeightInfo::transfer_from()]
1128 pub fn transfer_from(origin, from: T::AccountId, recipient: T::AccountId, collection_id: CollectionId, item_id: TokenId, value: u128 ) -> DispatchResult {1118 pub fn transfer_from(origin, from: T::AccountId, recipient: T::AccountId, collection_id: CollectionId, item_id: TokenId, value: u128 ) -> DispatchResult {
11291119
1130 let sender = ensure_signed(origin)?;1120 let sender = ensure_signed(origin)?;
1171 Ok(())1161 Ok(())
1172 }1162 }
11731163
1174 #[weight = 0]1164 // #[weight = 0]
1175 pub fn safe_transfer_from(origin, collection_id: CollectionId, item_id: TokenId, new_owner: T::AccountId) -> DispatchResult {1165 // pub fn safe_transfer_from(origin, collection_id: CollectionId, item_id: TokenId, new_owner: T::AccountId) -> DispatchResult {
11761166
1177 // let no_perm_mes = "You do not have permissions to modify this collection";1167 // // let no_perm_mes = "You do not have permissions to modify this collection";
1178 // ensure!(<ApprovedList<T>>::contains_key((collection_id, item_id)), no_perm_mes);1168 // // ensure!(<ApprovedList<T>>::contains_key((collection_id, item_id)), no_perm_mes);
1179 // let list_itm = <ApprovedList<T>>::get((collection_id, item_id));1169 // // let list_itm = <ApprovedList<T>>::get((collection_id, item_id));
1180 // ensure!(list_itm.contains(&new_owner.clone()), no_perm_mes);1170 // // ensure!(list_itm.contains(&new_owner.clone()), no_perm_mes);
11811171
1182 // // on_nft_received call1172 // // // on_nft_received call
11831173
1184 // Self::transfer(origin, collection_id, item_id, new_owner)?;1174 // // Self::transfer(origin, collection_id, item_id, new_owner)?;
11851175
1186 Ok(())1176 // Ok(())
1187 }1177 // }
11881178
1189 /// Set off-chain data schema.1179 /// Set off-chain data schema.
1190 /// 1180 ///
1198 /// * collection_id.1188 /// * collection_id.
1199 /// 1189 ///
1200 /// * schema: String representing the offchain data schema.1190 /// * schema: String representing the offchain data schema.
1201 #[weight = T::WeightInfo::set_variable_meta_data()]1191 #[weight = <T as Config>::WeightInfo::set_variable_meta_data()]
1202 pub fn set_variable_meta_data (1192 pub fn set_variable_meta_data (
1203 origin,1193 origin,
1204 collection_id: CollectionId,1194 collection_id: CollectionId,
1208 let sender = ensure_signed(origin)?;1198 let sender = ensure_signed(origin)?;
1209 1199
1210 Self::collection_exists(collection_id)?;1200 Self::collection_exists(collection_id)?;
1211 1201 Self::token_exists(collection_id, item_id, &sender)?;
1202
1212 ensure!(ChainLimit::get().custom_data_limit >= data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);1203 ensure!(ChainLimit::get().custom_data_limit >= data.len() as u32, Error::<T>::TokenVariableDataLimitExceeded);
12131204
1217 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1208 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
1218 Error::<T>::NoPermission);1209 Error::<T>::NoPermission);
12191210
1220 Self::item_exists(collection_id, item_id, &target_collection.mode)?;
1221
1222 match target_collection.mode1211 match target_collection.mode
1223 {1212 {
1224 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,1213 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,
1244 /// * collection_id.1233 /// * collection_id.
1245 /// 1234 ///
1246 /// * schema: SchemaVersion: enum1235 /// * schema: SchemaVersion: enum
1247 #[weight = T::WeightInfo::set_schema_version()]1236 #[weight = <T as Config>::WeightInfo::set_schema_version()]
1248 pub fn set_schema_version(1237 pub fn set_schema_version(
1249 origin,1238 origin,
1250 collection_id: CollectionId,1239 collection_id: CollectionId,
1271 /// * collection_id.1260 /// * collection_id.
1272 /// 1261 ///
1273 /// * schema: String representing the offchain data schema.1262 /// * schema: String representing the offchain data schema.
1274 #[weight = T::WeightInfo::set_offchain_schema()]1263 #[weight = <T as Config>::WeightInfo::set_offchain_schema()]
1275 pub fn set_offchain_schema(1264 pub fn set_offchain_schema(
1276 origin,1265 origin,
1277 collection_id: CollectionId,1266 collection_id: CollectionId,
1280 let sender = ensure_signed(origin)?;1269 let sender = ensure_signed(origin)?;
1281 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;1270 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;
12821271
1272 // check schema limit
1273 ensure!(schema.len() as u32 > ChainLimit::get().offchain_schema_limit, "");
1274
1283 let mut target_collection = <Collection<T>>::get(collection_id);1275 let mut target_collection = <Collection<T>>::get(collection_id);
1284 target_collection.offchain_schema = schema;1276 target_collection.offchain_schema = schema;
1285 <Collection<T>>::insert(collection_id, target_collection);1277 <Collection<T>>::insert(collection_id, target_collection);
1299 /// * collection_id.1291 /// * collection_id.
1300 /// 1292 ///
1301 /// * schema: String representing the const on-chain data schema.1293 /// * schema: String representing the const on-chain data schema.
1302 #[weight = T::WeightInfo::set_const_on_chain_schema()]1294 #[weight = <T as Config>::WeightInfo::set_const_on_chain_schema()]
1303 pub fn set_const_on_chain_schema (1295 pub fn set_const_on_chain_schema (
1304 origin,1296 origin,
1305 collection_id: CollectionId,1297 collection_id: CollectionId,
1308 let sender = ensure_signed(origin)?;1300 let sender = ensure_signed(origin)?;
1309 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;1301 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;
13101302
1303 // check schema limit
1304 ensure!(schema.len() as u32 <= ChainLimit::get().const_on_chain_schema_limit, "");
1305
1311 let mut target_collection = <Collection<T>>::get(collection_id);1306 let mut target_collection = <Collection<T>>::get(collection_id);
1312 target_collection.const_on_chain_schema = schema;1307 target_collection.const_on_chain_schema = schema;
1313 <Collection<T>>::insert(collection_id, target_collection);1308 <Collection<T>>::insert(collection_id, target_collection);
1327 /// * collection_id.1322 /// * collection_id.
1328 /// 1323 ///
1329 /// * schema: String representing the variable on-chain data schema.1324 /// * schema: String representing the variable on-chain data schema.
1330 #[weight = T::WeightInfo::set_const_on_chain_schema()]1325 #[weight = <T as Config>::WeightInfo::set_const_on_chain_schema()]
1331 pub fn set_variable_on_chain_schema (1326 pub fn set_variable_on_chain_schema (
1332 origin,1327 origin,
1333 collection_id: CollectionId,1328 collection_id: CollectionId,
1336 let sender = ensure_signed(origin)?;1331 let sender = ensure_signed(origin)?;
1337 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;1332 Self::check_owner_or_admin_permissions(collection_id, sender.clone())?;
13381333
1334 // check schema limit
1335 ensure!(schema.len() as u32 <= ChainLimit::get().variable_on_chain_schema_limit, "");
1336
1339 let mut target_collection = <Collection<T>>::get(collection_id);1337 let mut target_collection = <Collection<T>>::get(collection_id);
1340 target_collection.variable_on_chain_schema = schema;1338 target_collection.variable_on_chain_schema = schema;
1341 <Collection<T>>::insert(collection_id, target_collection);1339 <Collection<T>>::insert(collection_id, target_collection);
1344 }1342 }
13451343
1346 // Sudo permissions function1344 // Sudo permissions function
1347 #[weight = T::WeightInfo::set_chain_limits()]1345 #[weight = <T as Config>::WeightInfo::set_chain_limits()]
1348 pub fn set_chain_limits(1346 pub fn set_chain_limits(
1349 origin,1347 origin,
1350 limits: ChainLimits1348 limits: ChainLimits
1368 /// * contract address1366 /// * contract address
1369 /// * enable flag1367 /// * enable flag
1370 /// 1368 ///
1371 #[weight = T::WeightInfo::enable_contract_sponsoring()]1369 #[weight = <T as Config>::WeightInfo::enable_contract_sponsoring()]
1372 pub fn enable_contract_sponsoring(1370 pub fn enable_contract_sponsoring(
1373 origin,1371 origin,
1374 contract_address: T::AccountId,1372 contract_address: T::AccountId,
1403 /// -`contract_address`: Address of the contract to sponsor1401 /// -`contract_address`: Address of the contract to sponsor
1404 /// -`rate_limit`: Number of blocks to wait until the next sponsored transaction is allowed1402 /// -`rate_limit`: Number of blocks to wait until the next sponsored transaction is allowed
1405 /// 1403 ///
1406 #[weight = T::WeightInfo::set_contract_sponsoring_rate_limit()]1404 #[weight = <T as Config>::WeightInfo::set_contract_sponsoring_rate_limit()]
1407 pub fn set_contract_sponsoring_rate_limit(1405 pub fn set_contract_sponsoring_rate_limit(
1408 origin,1406 origin,
1409 contract_address: T::AccountId,1407 contract_address: T::AccountId,
1430 /// -`contract_address`: Address of the contract.1428 /// -`contract_address`: Address of the contract.
1431 /// 1429 ///
1432 /// - `enable`: . 1430 /// - `enable`: .
1433 #[weight = T::WeightInfo::toggle_contract_white_list()]1431 #[weight = <T as Config>::WeightInfo::toggle_contract_white_list()]
1434 pub fn toggle_contract_white_list(1432 pub fn toggle_contract_white_list(
1435 origin,1433 origin,
1436 contract_address: T::AccountId,1434 contract_address: T::AccountId,
1457 /// -`contract_address`: Address of the contract.1455 /// -`contract_address`: Address of the contract.
1458 ///1456 ///
1459 /// -`account_address`: Address to add.1457 /// -`account_address`: Address to add.
1460 #[weight = T::WeightInfo::add_to_contract_white_list()]1458 #[weight = <T as Config>::WeightInfo::add_to_contract_white_list()]
1461 pub fn add_to_contract_white_list(1459 pub fn add_to_contract_white_list(
1462 origin,1460 origin,
1463 contract_address: T::AccountId,1461 contract_address: T::AccountId,
1484 /// -`contract_address`: Address of the contract.1482 /// -`contract_address`: Address of the contract.
1485 ///1483 ///
1486 /// -`account_address`: Address to remove.1484 /// -`account_address`: Address to remove.
1487 #[weight = T::WeightInfo::remove_from_contract_white_list()]1485 #[weight = <T as Config>::WeightInfo::remove_from_contract_white_list()]
1488 pub fn remove_from_contract_white_list(1486 pub fn remove_from_contract_white_list(
1489 origin,1487 origin,
1490 contract_address: T::AccountId,1488 contract_address: T::AccountId,
1500 Ok(())1498 Ok(())
1501 }1499 }
15021500
1503 #[weight = T::WeightInfo::set_collection_limits()]1501 #[weight = <T as Config>::WeightInfo::set_collection_limits()]
1504 pub fn set_collection_limits(1502 pub fn set_collection_limits(
1505 origin,1503 origin,
1506 collection_id: u32,1504 collection_id: u32,
1530 }1528 }
1531}1529}
15321530
1533impl<T: Trait> Module<T> {1531impl<T: Config> Module<T> {
15341532
1533 pub fn transfer_internal(sender: T::AccountId, recipient: T::AccountId, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResult {
1534
1535 let target_collection = <Collection<T>>::get(collection_id);
1536
1537 // Limits check
1538 Self::is_correct_transfer(collection_id, &target_collection, &recipient)?;
1539
1540 // Transfer permissions check
1541 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||
1542 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),
1543 Error::<T>::NoPermission);
1544
1545 if target_collection.access == AccessMode::WhiteList {
1546 Self::check_white_list(collection_id, &sender)?;
1547 Self::check_white_list(collection_id, &recipient)?;
1548 }
1549
1550 match target_collection.mode
1551 {
1552 CollectionMode::NFT => Self::transfer_nft(collection_id, item_id, sender.clone(), recipient)?,
1553 CollectionMode::Fungible(_) => Self::transfer_fungible(collection_id, value, &sender, &recipient)?,
1554 CollectionMode::ReFungible(_) => Self::transfer_refungible(collection_id, item_id, value, sender.clone(), recipient)?,
1555 _ => ()
1556 };
1557
1558 Ok(())
1559 }
1560
1561
1535 fn is_correct_transfer(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, recipient: &T::AccountId) -> DispatchResult {1562 fn is_correct_transfer(collection_id: CollectionId, collection: &CollectionType<T::AccountId>, recipient: &T::AccountId) -> DispatchResult {
15361563
1537 // check token limit and account token limit1564 // check token limit and account token limit
1660 let value = item.owner.first().unwrap().fraction;1687 let value = item.owner.first().unwrap().fraction;
1661 let owner = item.owner.first().unwrap().owner.clone();1688 let owner = item.owner.first().unwrap().owner.clone();
16621689
1663 Self::add_token_index(collection_id, current_index, owner.clone())?;1690 Self::add_token_index(collection_id, current_index, &owner)?;
16641691
1665 <ItemListIndex>::insert(collection_id, current_index);1692 <ItemListIndex>::insert(collection_id, current_index);
1666 <ReFungibleItemList<T>>::insert(collection_id, current_index, itemcopy);1693 <ReFungibleItemList<T>>::insert(collection_id, current_index, itemcopy);
16671694
1668 // Update balance1695 // Update balance
1669 let new_balance = <Balance<T>>::get(collection_id, owner.clone())1696 let new_balance = <Balance<T>>::get(collection_id, &owner)
1670 .checked_add(value)1697 .checked_add(value)
1671 .ok_or(Error::<T>::NumOverflow)?;1698 .ok_or(Error::<T>::NumOverflow)?;
1672 <Balance<T>>::insert(collection_id, owner.clone(), new_balance);1699 <Balance<T>>::insert(collection_id, owner.clone(), new_balance);
1680 .ok_or(Error::<T>::NumOverflow)?;1707 .ok_or(Error::<T>::NumOverflow)?;
16811708
1682 let item_owner = item.owner.clone();1709 let item_owner = item.owner.clone();
1683 Self::add_token_index(collection_id, current_index, item.owner.clone())?;1710 Self::add_token_index(collection_id, current_index, &item.owner)?;
16841711
1685 <ItemListIndex>::insert(collection_id, current_index);1712 <ItemListIndex>::insert(collection_id, current_index);
1686 <NftItemList<T>>::insert(collection_id, current_index, item);1713 <NftItemList<T>>::insert(collection_id, current_index, item);
1697 fn burn_refungible_item(1724 fn burn_refungible_item(
1698 collection_id: CollectionId,1725 collection_id: CollectionId,
1699 item_id: TokenId,1726 item_id: TokenId,
1700 owner: T::AccountId,1727 owner: &T::AccountId,
1701 ) -> DispatchResult {1728 ) -> DispatchResult {
1702 ensure!(1729 ensure!(
1703 <ReFungibleItemList<T>>::contains_key(collection_id, item_id),1730 <ReFungibleItemList<T>>::contains_key(collection_id, item_id),
1704 Error::<T>::TokenNotFound1731 Error::<T>::TokenNotFound
1705 );1732 );
1706 let collection = <ReFungibleItemList<T>>::get(collection_id, item_id);1733 let mut token = <ReFungibleItemList<T>>::get(collection_id, item_id);
1707 let item = collection1734 let rft_balance = token
1708 .owner1735 .owner
1709 .iter()1736 .iter()
1710 .filter(|&i| i.owner == owner)1737 .filter(|&i| i.owner == *owner)
1711 .next()1738 .next()
1712 .unwrap();1739 .unwrap();
1713 Self::remove_token_index(collection_id, item_id, owner.clone())?;1740 Self::remove_token_index(collection_id, item_id, owner)?;
17141741
1715 // update balance1742 // update balance
1716 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())1743 let new_balance = <Balance<T>>::get(collection_id, rft_balance.owner.clone())
1717 .checked_sub(item.fraction)1744 .checked_sub(rft_balance.fraction)
1718 .ok_or(Error::<T>::NumOverflow)?;1745 .ok_or(Error::<T>::NumOverflow)?;
1719 <Balance<T>>::insert(collection_id, item.owner.clone(), new_balance);1746 <Balance<T>>::insert(collection_id, rft_balance.owner.clone(), new_balance);
17201747
1721 <ReFungibleItemList<T>>::remove(collection_id, item_id);1748 // Re-create owners list with sender removed
1749 let index = token
1750 .owner
1751 .iter()
1752 .position(|i| i.owner == *owner)
1753 .unwrap();
1754 token.owner.remove(index);
1755 let owner_count = token.owner.len();
17221756
1757 // Burn the token completely if this was the last (only) owner
1758 if owner_count == 0 {
1759 <ReFungibleItemList<T>>::remove(collection_id, item_id);
1760 }
1761 else {
1762 <ReFungibleItemList<T>>::insert(collection_id, item_id, token);
1763 }
1764
1723 Ok(())1765 Ok(())
1724 }1766 }
17251767
1729 Error::<T>::TokenNotFound1771 Error::<T>::TokenNotFound
1730 );1772 );
1731 let item = <NftItemList<T>>::get(collection_id, item_id);1773 let item = <NftItemList<T>>::get(collection_id, item_id);
1732 Self::remove_token_index(collection_id, item_id, item.owner.clone())?;1774 Self::remove_token_index(collection_id, item_id, &item.owner)?;
17331775
1734 // update balance1776 // update balance
1735 let new_balance = <Balance<T>>::get(collection_id, item.owner.clone())1777 let new_balance = <Balance<T>>::get(collection_id, &item.owner)
1736 .checked_sub(1)1778 .checked_sub(1)
1737 .ok_or(Error::<T>::NumOverflow)?;1779 .ok_or(Error::<T>::NumOverflow)?;
1738 <Balance<T>>::insert(collection_id, item.owner.clone(), new_balance);1780 <Balance<T>>::insert(collection_id, item.owner.clone(), new_balance);
1841 Ok(())1883 Ok(())
1842 }1884 }
18431885
1886 /// Check if token exists. In case of Fungible, check if there is an entry for
1887 /// the owner in fungible balances double map
1888 fn token_exists(
1889 collection_id: CollectionId,
1890 item_id: TokenId,
1891 owner: &T::AccountId
1892 ) -> DispatchResult {
1893 let target_collection = <Collection<T>>::get(collection_id);
1894 let exists = match target_collection.mode
1895 {
1896 CollectionMode::NFT => <NftItemList<T>>::contains_key(collection_id, item_id),
1897 CollectionMode::Fungible(_) => <FungibleItemList<T>>::contains_key(collection_id, owner),
1898 CollectionMode::ReFungible(_) => <ReFungibleItemList<T>>::contains_key(collection_id, item_id),
1899 _ => false
1900 };
1901
1902 ensure!(exists == true, Error::<T>::TokenNotFound);
1903 Ok(())
1904 }
1905
1844 fn transfer_fungible(1906 fn transfer_fungible(
1845 collection_id: CollectionId,1907 collection_id: CollectionId,
1846 value: u128,1908 value: u128,
1847 owner: &T::AccountId,1909 owner: &T::AccountId,
1848 recipient: &T::AccountId,1910 recipient: &T::AccountId,
1849 ) -> DispatchResult {1911 ) -> DispatchResult {
1850 ensure!(1912 Self::token_exists(collection_id, 0, owner)?;
1851 <FungibleItemList<T>>::contains_key(collection_id, owner),
1852 Error::<T>::TokenNotFound
1853 );
18541913
1855 let mut balance = <FungibleItemList<T>>::get(collection_id, owner);1914 let mut balance = <FungibleItemList<T>>::get(collection_id, owner);
1856 ensure!(balance.value >= value, Error::<T>::TokenValueTooLow);1915 ensure!(balance.value >= value, Error::<T>::TokenValueTooLow);
1880 owner: T::AccountId,1939 owner: T::AccountId,
1881 new_owner: T::AccountId,1940 new_owner: T::AccountId,
1882 ) -> DispatchResult {1941 ) -> DispatchResult {
1883 ensure!(1942 Self::token_exists(collection_id, item_id, &owner)?;
1884 <ReFungibleItemList<T>>::contains_key(collection_id, item_id),
1885 Error::<T>::TokenNotFound
1886 );
18871943
1888 let full_item = <ReFungibleItemList<T>>::get(collection_id, item_id);1944 let full_item = <ReFungibleItemList<T>>::get(collection_id, item_id);
1889 let item = full_item1945 let item = full_item
1924 <ReFungibleItemList<T>>::insert(collection_id, item_id, new_full_item);1980 <ReFungibleItemList<T>>::insert(collection_id, item_id, new_full_item);
19251981
1926 // update index collection1982 // update index collection
1927 Self::move_token_index(collection_id, item_id, old_owner.clone(), new_owner.clone())?;1983 Self::move_token_index(collection_id, item_id, &old_owner, &new_owner)?;
1928 } else {1984 } else {
1929 let mut new_full_item = full_item.clone();1985 let mut new_full_item = full_item.clone();
1930 new_full_item1986 new_full_item
1949 owner: new_owner.clone(),2005 owner: new_owner.clone(),
1950 fraction: value,2006 fraction: value,
1951 });2007 });
1952 Self::add_token_index(collection_id, item_id, new_owner.clone())?;2008 Self::add_token_index(collection_id, item_id, &new_owner)?;
1953 }2009 }
19542010
1955 <ReFungibleItemList<T>>::insert(collection_id, item_id, new_full_item);2011 <ReFungibleItemList<T>>::insert(collection_id, item_id, new_full_item);
1964 sender: T::AccountId,2020 sender: T::AccountId,
1965 new_owner: T::AccountId,2021 new_owner: T::AccountId,
1966 ) -> DispatchResult {2022 ) -> DispatchResult {
1967 ensure!(2023 Self::token_exists(collection_id, item_id, &sender)?;
1968 <NftItemList<T>>::contains_key(collection_id, item_id),
1969 Error::<T>::TokenNotFound
1970 );
19712024
1972 let mut item = <NftItemList<T>>::get(collection_id, item_id);2025 let mut item = <NftItemList<T>>::get(collection_id, item_id);
19732026
1993 <NftItemList<T>>::insert(collection_id, item_id, item);2046 <NftItemList<T>>::insert(collection_id, item_id, item);
19942047
1995 // update index collection2048 // update index collection
1996 Self::move_token_index(collection_id, item_id, old_owner.clone(), new_owner.clone())?;2049 Self::move_token_index(collection_id, item_id, &old_owner, &new_owner)?;
19972050
1998 Ok(())2051 Ok(())
1999 }2052 }
2000 2053
2001 fn item_exists(
2002 collection_id: CollectionId,
2003 item_id: TokenId,
2004 mode: &CollectionMode
2005 ) -> DispatchResult {
2006 match mode {
2007 CollectionMode::NFT => ensure!(<NftItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),
2008 CollectionMode::ReFungible(_) => ensure!(<ReFungibleItemList<T>>::contains_key(collection_id, item_id), Error::<T>::TokenNotFound),
2009 _ => ()
2010 };
2011
2012 Ok(())
2013 }
2014
2015 fn set_re_fungible_variable_data(2054 fn set_re_fungible_variable_data(
2016 collection_id: CollectionId,2055 collection_id: CollectionId,
2017 item_id: TokenId,2056 item_id: TokenId,
2073 .unwrap();2112 .unwrap();
20742113
2075 let item_owner = item.owner.clone();2114 let item_owner = item.owner.clone();
2076 Self::add_token_index(collection_id, current_index, item.owner.clone()).unwrap();2115 Self::add_token_index(collection_id, current_index, &item.owner).unwrap();
20772116
2078 <ItemListIndex>::insert(collection_id, current_index);2117 <ItemListIndex>::insert(collection_id, current_index);
20792118
2080 // Update balance2119 // Update balance
2081 let new_balance = <Balance<T>>::get(collection_id, item_owner.clone())2120 let new_balance = <Balance<T>>::get(collection_id, &item_owner)
2082 .checked_add(1)2121 .checked_add(1)
2083 .unwrap();2122 .unwrap();
2084 <Balance<T>>::insert(collection_id, item_owner.clone(), new_balance);2123 <Balance<T>>::insert(collection_id, item_owner.clone(), new_balance);
2089 .checked_add(1)2128 .checked_add(1)
2090 .unwrap();2129 .unwrap();
20912130
2092 Self::add_token_index(collection_id, current_index, (*owner).clone()).unwrap();2131 Self::add_token_index(collection_id, current_index, owner).unwrap();
20932132
2094 <ItemListIndex>::insert(collection_id, current_index);2133 <ItemListIndex>::insert(collection_id, current_index);
20952134
2108 let value = item.owner.first().unwrap().fraction;2147 let value = item.owner.first().unwrap().fraction;
2109 let owner = item.owner.first().unwrap().owner.clone();2148 let owner = item.owner.first().unwrap().owner.clone();
21102149
2111 Self::add_token_index(collection_id, current_index, owner.clone()).unwrap();2150 Self::add_token_index(collection_id, current_index, &owner).unwrap();
21122151
2113 <ItemListIndex>::insert(collection_id, current_index);2152 <ItemListIndex>::insert(collection_id, current_index);
21142153
2115 // Update balance2154 // Update balance
2116 let new_balance = <Balance<T>>::get(collection_id, owner.clone())2155 let new_balance = <Balance<T>>::get(collection_id, &owner)
2117 .checked_add(value)2156 .checked_add(value)
2118 .unwrap();2157 .unwrap();
2119 <Balance<T>>::insert(collection_id, owner.clone(), new_balance);2158 <Balance<T>>::insert(collection_id, owner.clone(), new_balance);
2120 }2159 }
21212160
2122 fn add_token_index(collection_id: CollectionId, item_index: TokenId, owner: T::AccountId) -> DispatchResult {2161 fn add_token_index(collection_id: CollectionId, item_index: TokenId, owner: &T::AccountId) -> DispatchResult {
21232162
2124 // add to account limit2163 // add to account limit
2125 if <AccountItemCount<T>>::contains_key(owner.clone()) {2164 if <AccountItemCount<T>>::contains_key(owner) {
21262165
2127 // bound Owned tokens by a single address2166 // bound Owned tokens by a single address
2128 let count = <AccountItemCount<T>>::get(owner.clone());2167 let count = <AccountItemCount<T>>::get(owner);
2129 ensure!(count < ChainLimit::get().account_token_ownership_limit, Error::<T>::AddressOwnershipLimitExceeded);2168 ensure!(count < ChainLimit::get().account_token_ownership_limit, Error::<T>::AddressOwnershipLimitExceeded);
21302169
2131 <AccountItemCount<T>>::insert(owner.clone(), count2170 <AccountItemCount<T>>::insert(owner.clone(), count
2136 <AccountItemCount<T>>::insert(owner.clone(), 1);2175 <AccountItemCount<T>>::insert(owner.clone(), 1);
2137 }2176 }
21382177
2139 let list_exists = <AddressTokens<T>>::contains_key(collection_id, owner.clone());2178 let list_exists = <AddressTokens<T>>::contains_key(collection_id, owner);
2140 if list_exists {2179 if list_exists {
2141 let mut list = <AddressTokens<T>>::get(collection_id, owner.clone());2180 let mut list = <AddressTokens<T>>::get(collection_id, owner);
2142 let item_contains = list.contains(&item_index.clone());2181 let item_contains = list.contains(&item_index.clone());
21432182
2144 if !item_contains {2183 if !item_contains {
2149 } else {2188 } else {
2150 let mut itm = Vec::new();2189 let mut itm = Vec::new();
2151 itm.push(item_index.clone());2190 itm.push(item_index.clone());
2152 <AddressTokens<T>>::insert(collection_id, owner, itm);2191 <AddressTokens<T>>::insert(collection_id, owner.clone(), itm);
2153
2154 }2192 }
21552193
2156 Ok(())2194 Ok(())
2159 fn remove_token_index(2197 fn remove_token_index(
2160 collection_id: CollectionId,2198 collection_id: CollectionId,
2161 item_index: TokenId,2199 item_index: TokenId,
2162 owner: T::AccountId,2200 owner: &T::AccountId,
2163 ) -> DispatchResult {2201 ) -> DispatchResult {
21642202
2165 // update counter2203 // update counter
2166 <AccountItemCount<T>>::insert(owner.clone(), 2204 <AccountItemCount<T>>::insert(owner.clone(),
2167 <AccountItemCount<T>>::get(owner.clone())2205 <AccountItemCount<T>>::get(owner)
2168 .checked_sub(1)2206 .checked_sub(1)
2169 .ok_or(Error::<T>::NumOverflow)?);2207 .ok_or(Error::<T>::NumOverflow)?);
21702208
21712209
2172 let list_exists = <AddressTokens<T>>::contains_key(collection_id, owner.clone());2210 let list_exists = <AddressTokens<T>>::contains_key(collection_id, owner);
2173 if list_exists {2211 if list_exists {
2174 let mut list = <AddressTokens<T>>::get(collection_id, owner.clone());2212 let mut list = <AddressTokens<T>>::get(collection_id, owner);
2175 let item_contains = list.contains(&item_index.clone());2213 let item_contains = list.contains(&item_index.clone());
21762214
2177 if item_contains {2215 if item_contains {
2178 list.retain(|&item| item != item_index);2216 list.retain(|&item| item != item_index);
2179 <AddressTokens<T>>::insert(collection_id, owner, list);2217 <AddressTokens<T>>::insert(collection_id, owner.clone(), list);
2180 }2218 }
2181 }2219 }
21822220
2186 fn move_token_index(2224 fn move_token_index(
2187 collection_id: CollectionId,2225 collection_id: CollectionId,
2188 item_index: TokenId,2226 item_index: TokenId,
2189 old_owner: T::AccountId,2227 old_owner: &T::AccountId,
2190 new_owner: T::AccountId,2228 new_owner: &T::AccountId,
2191 ) -> DispatchResult {2229 ) -> DispatchResult {
2192 Self::remove_token_index(collection_id, item_index, old_owner)?;2230 Self::remove_token_index(collection_id, item_index, old_owner)?;
2193 Self::add_token_index(collection_id, item_index, new_owner)?;2231 Self::add_token_index(collection_id, item_index, new_owner)?;
2214/// Fee multiplier.2252/// Fee multiplier.
2215pub type Multiplier = FixedU128;2253pub type Multiplier = FixedU128;
22162254
2217type BalanceOf<T> = <<T as transaction_payment::Trait>::Currency as Currency<2255type BalanceOf<T> = <<T as transaction_payment::Config>::OnChargeTransaction as transaction_payment::OnChargeTransaction<T>>::Balance;
2218 <T as system::Trait>::AccountId,
2219>>::Balance;
2220type NegativeImbalanceOf<T> = <<T as transaction_payment::Trait>::Currency as Currency<
2221 <T as system::Trait>::AccountId,
2222>>::NegativeImbalance;
22232256
2224/// Require the transactor pay for themselves and maybe include a tip to gain additional priority2257/// Require the transactor pay for themselves and maybe include a tip to gain additional priority
2225/// in the queue.2258/// in the queue.
2226#[derive(Encode, Decode, Clone, Eq, PartialEq)]2259#[derive(Encode, Decode, Clone, Eq, PartialEq)]
2227pub struct ChargeTransactionPayment<T: Trait + Send + Sync>(2260pub struct ChargeTransactionPayment<T: Config>(#[codec(compact)] BalanceOf<T>);
2228 #[codec(compact)] BalanceOf<T>
2229);
22302261
2231impl<T: Trait + Send + Sync> sp_std::fmt::Debug2262impl<T: Config + Send + Sync> sp_std::fmt::Debug
2232 for ChargeTransactionPayment<T>2263 for ChargeTransactionPayment<T>
2233{2264{
2234 #[cfg(feature = "std")]2265 #[cfg(feature = "std")]
2235 fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result {2266 fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result {
2236 write!(f, "ChargeTransactionPayment<{:?}>", self.0)2267 write!(f, "ChargeTransactionPayment<{:?}>", self.0)
2237 }2268 }
2238 #[cfg(not(feature = "std"))]2269 #[cfg(not(feature = "std"))]
2239 fn fmt(&self, _: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result {2270 fn fmt(&self, _: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result {
2240 Ok(())2271 Ok(())
2241 }2272 }
2242}2273}
22432274
2244impl<T: Trait + Send + Sync> ChargeTransactionPayment<T>2275impl<T: Config> ChargeTransactionPayment<T>
2245where2276where
2246 T::Call: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Call<T>> + IsSubType<pallet_contracts::Call<T>>,2277 T::Call: Dispatchable<Info=DispatchInfo, PostInfo=PostDispatchInfo> + IsSubType<Call<T>> + IsSubType<pallet_contracts::Call<T>>,
2247 BalanceOf<T>: Send + Sync + FixedPointOperand,2278 BalanceOf<T>: Send + Sync + From<u64> + FixedPointOperand,
2279 T::AccountId: AsRef<[u8]>,
2280 T::AccountId: UncheckedFrom<T::Hash>,
2248{2281{
2249 /// utility constructor. Used only in client/factory code.2282 fn traditional_fee(
2250 pub fn from(fee: BalanceOf<T>) -> Self {
2251 Self(fee)
2252 }
2253
2254 pub fn traditional_fee(
2255 len: usize,2283 len: usize,
2256 info: &DispatchInfoOf<T::Call>,2284 info: &DispatchInfoOf<T::Call>,
2257 tip: BalanceOf<T>,2285 tip: BalanceOf<T>,
2263 }2291 }
22642292
2265 fn get_priority(len: usize, info: &DispatchInfoOf<T::Call>, final_fee: BalanceOf<T>) -> TransactionPriority {2293 fn get_priority(len: usize, info: &DispatchInfoOf<T::Call>, final_fee: BalanceOf<T>) -> TransactionPriority {
2266 let weight_saturation = T::MaximumBlockWeight::get() / info.weight.max(1);2294 let weight_saturation = T::BlockWeights::get().max_block / info.weight.max(1);
2267 let len_saturation = T::MaximumBlockLength::get() as u64 / (len as u64).max(1);2295 let max_block_length = *T::BlockLength::get().max.get(DispatchClass::Normal);
2296 let len_saturation = max_block_length as u64 / (len as u64).max(1);
2268 let coefficient: BalanceOf<T> = weight_saturation.min(len_saturation).saturated_into::<BalanceOf<T>>();2297 let coefficient: BalanceOf<T> = weight_saturation
2298 .min(len_saturation)
2299 .saturated_into::<BalanceOf<T>>();
2269 final_fee.saturating_mul(coefficient).saturated_into::<TransactionPriority>()2300 final_fee
2301 .saturating_mul(coefficient)
2302 .saturated_into::<TransactionPriority>()
2270 }2303 }
22712304
2272 fn withdraw_fee(2305 fn withdraw_fee(
2273 &self,2306 &self,
2274 who: &T::AccountId,2307 who: &T::AccountId,
2275 call: &T::Call,2308 call: &T::Call,
2276 info: &DispatchInfoOf<T::Call>,2309 info: &DispatchInfoOf<T::Call>,
2277 len: usize,2310 len: usize,
2278 ) -> Result<(BalanceOf<T>, Option<NegativeImbalanceOf<T>>), TransactionValidityError> {2311 ) -> Result<
2312 (
2313 BalanceOf<T>,
2314 <<T as transaction_payment::Config>::OnChargeTransaction as transaction_payment::OnChargeTransaction<T>>::LiquidityInfo,
2315 ),
2316 TransactionValidityError,
2317 > {
2279 let tip = self.0;2318 let tip = self.0;
22802319
2281 // Set fee based on call type. Creating collection costs 1 Unique.2320 // Set fee based on call type. Creating collection costs 1 Unique.
22892328
2290 // Only mess with balances if fee is not zero.2329 // Only mess with balances if fee is not zero.
2291 if fee.is_zero() {2330 if fee.is_zero() {
2292 return Ok((fee, None));2331 return <<T as transaction_payment::Config>::OnChargeTransaction as transaction_payment::OnChargeTransaction<T>>::withdraw_fee(who, call, info, fee, tip)
2332 .map(|i| (fee, i));
2293 }2333 }
22942334
2295 // Determine who is paying transaction fee based on ecnomic model2335 // Determine who is paying transaction fee based on ecnomic model
2296 // Parse call to extract collection ID and access collection sponsor2336 // Parse call to extract collection ID and access collection sponsor
2297 let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {2337 let mut sponsor: T::AccountId = match IsSubType::<Call<T>>::is_sub_type(call) {
2298 Some(Call::create_item(collection_id, _owner, _properties)) => {2338 Some(Call::create_item(collection_id, _owner, _properties)) => {
22992339
2340 // sponsor timeout
2341 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
2342
2343 let limit = <Collection<T>>::get(collection_id).limits.sponsor_transfer_timeout;
2344 let mut sponsored = true;
2345 if <CreateItemBasket<T>>::contains_key((collection_id, &who)) {
2346 let last_tx_block = <CreateItemBasket<T>>::get((collection_id, &who));
2347 let limit_time = last_tx_block + limit.into();
2348 if block_number <= limit_time {
2349 sponsored = false;
2350 }
2351 }
2352 if sponsored {
2353 <CreateItemBasket<T>>::insert((collection_id, who.clone()), block_number);
2354 }
2355
2300 // check free create limit2356 // check free create limit
2301 if (<Collection<T>>::get(collection_id).limits.sponsored_data_size >= (_properties.len() as u32)) &&2357 if (<Collection<T>>::get(collection_id).limits.sponsored_data_size >= (_properties.len() as u32)) &&
2302 (<Collection<T>>::get(collection_id).sponsor_confirmed)2358 (<Collection<T>>::get(collection_id).sponsor_confirmed) &&
2359 (sponsored)
2303 {2360 {
2304 <Collection<T>>::get(collection_id).sponsor2361 <Collection<T>>::get(collection_id).sponsor
2305 } else {2362 } else {
2407 sponsor = match IsSubType::<pallet_contracts::Call<T>>::is_sub_type(call) {2464 sponsor = match IsSubType::<pallet_contracts::Call<T>>::is_sub_type(call) {
24082465
2409 // On instantiation: set the contract owner2466 // On instantiation: set the contract owner
2410 Some(pallet_contracts::Call::instantiate(_endowment, _gas_limit, code_hash, data)) => {2467 Some(pallet_contracts::Call::instantiate(_endowment, _gas_limit, code_hash, _data, salt)) => {
24112468
2412 let new_contract_address = <T as pallet_contracts::Trait>::DetermineContractAddress::contract_address_for(2469 let new_contract_address = <pallet_contracts::Module<T>>::contract_address(
2413 code_hash,
2414 &data,
2415 &who,2470 &who,
2471 code_hash,
2472 salt,
2416 );2473 );
2417 <ContractOwner<T>>::insert(new_contract_address.clone(), who.clone());2474 <ContractOwner<T>>::insert(new_contract_address.clone(), who.clone());
24182475
2470 who_pays_fee = who.clone();2527 who_pays_fee = who.clone();
2471 }2528 }
24722529
2473 match <T as transaction_payment::Trait>::Currency::withdraw(2530 <<T as transaction_payment::Config>::OnChargeTransaction as transaction_payment::OnChargeTransaction<T>>::withdraw_fee(&who_pays_fee, call, info, fee, tip)
2474 &who_pays_fee,
2475 fee,
2476 if tip.is_zero() {
2477 WithdrawReason::TransactionPayment.into()2531 .map(|i| (fee, i))
2478 } else {
2479 WithdrawReason::TransactionPayment | WithdrawReason::Tip
2480 },
2481 ExistenceRequirement::KeepAlive,
2482 ) {
2483 Ok(imbalance) => Ok((fee, Some(imbalance))),
2484 Err(_) => Err(InvalidTransaction::Payment.into()),
2485 }
2486 }2532 }
2487}2533}
24882534
24892535
2490impl<T: Trait + Send + Sync> SignedExtension2536impl<T: Config + Send + Sync> SignedExtension
2491 for ChargeTransactionPayment<T>2537 for ChargeTransactionPayment<T>
2492where2538where
2493 BalanceOf<T>: Send + Sync + From<u64> + FixedPointOperand,2539 BalanceOf<T>: Send + Sync + From<u64> + FixedPointOperand,
2494 T::Call: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Call<T>> + IsSubType<pallet_contracts::Call<T>>,2540 T::Call: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo> + IsSubType<Call<T>> + IsSubType<pallet_contracts::Call<T>>,
2541 T::AccountId: AsRef<[u8]>,
2542 T::AccountId: UncheckedFrom<T::Hash>,
2495{2543{
2496 const IDENTIFIER: &'static str = "ChargeTransactionPayment";2544 const IDENTIFIER: &'static str = "ChargeTransactionPayment";
2497 type AccountId = T::AccountId;2545 type AccountId = T::AccountId;
2498 type Call = T::Call;2546 type Call = T::Call;
2499 type AdditionalSigned = ();2547 type AdditionalSigned = ();
2500 type Pre = (2548 type Pre = (
2549 // tip
2501 BalanceOf<T>,2550 BalanceOf<T>,
2551 // who pays fee
2502 Self::AccountId,2552 Self::AccountId,
2503 Option<NegativeImbalanceOf<T>>,2553 // imbalance resulting from withdrawing the fee
2504 BalanceOf<T>,2554 <<T as transaction_payment::Config>::OnChargeTransaction as transaction_payment::OnChargeTransaction<T>>::LiquidityInfo,
2505 );2555 );
2506 fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> {2556 fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> {
2507 Ok(())2557 Ok(())
2528 info: &DispatchInfoOf<Self::Call>,2578 info: &DispatchInfoOf<Self::Call>,
2529 len: usize,2579 len: usize,
2530 ) -> Result<Self::Pre, TransactionValidityError> {2580 ) -> Result<Self::Pre, TransactionValidityError> {
2531 let (fee, imbalance) = self.withdraw_fee(who, call, info, len)?;2581 let (_fee, imbalance) = self.withdraw_fee(who, call, info, len)?;
2532 Ok((self.0, who.clone(), imbalance, fee))2582 Ok((self.0, who.clone(), imbalance))
2533 }2583 }
25342584
2535 fn post_dispatch(2585 fn post_dispatch(
2539 len: usize,2589 len: usize,
2540 _result: &DispatchResult,2590 _result: &DispatchResult,
2541 ) -> Result<(), TransactionValidityError> {2591 ) -> Result<(), TransactionValidityError> {
2542 let (tip, who, imbalance, fee) = pre;2592 let (tip, who, imbalance) = pre;
2543 if let Some(payed) = imbalance {2593 let actual_fee = transaction_payment::Module::<T>::compute_actual_fee(
2544 let actual_fee = <transaction_payment::Module<T>>::compute_actual_fee(
2545 len as u32, info, post_info, tip,2594 len as u32,
2595 info,
2596 post_info,
2597 tip,
2546 );2598 );
2547 let refund = fee.saturating_sub(actual_fee);
2548 let actual_payment =
2549 match <T as transaction_payment::Trait>::Currency::deposit_into_existing(2599 <T as transaction_payment::Config>::OnChargeTransaction::correct_and_deposit_fee(&who, info, post_info, actual_fee, tip, imbalance)?;
2550 &who, refund,
2551 ) {
2552 Ok(refund_imbalance) => {
2553 // The refund cannot be larger than the up front payed max weight.
2554 // `PostDispatchInfo::calc_unspent` guards against such a case.
2555 match payed.offset(refund_imbalance) {
2556 Ok(actual_payment) => actual_payment,
2557 Err(_) => return Err(InvalidTransaction::Payment.into()),
2558 }
2559 }
2560 // We do not recreate the account using the refund. The up front payment
2561 // is gone in that case.
2562 Err(_) => payed,
2563 };
2564 let imbalances = actual_payment.split(tip);
2565 <T as transaction_payment::Trait>::OnTransactionPayment::on_unbalanceds(
2566 Some(imbalances.0).into_iter().chain(Some(imbalances.1)),
2567 );
2568 }
2569 Ok(())2600 Ok(())
2570 }2601 }
2571}2602}
25722603
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
20 nft_sponsor_transfer_timeout: 15,20 nft_sponsor_transfer_timeout: 15,
21 fungible_sponsor_transfer_timeout: 15,21 fungible_sponsor_transfer_timeout: 15,
22 refungible_sponsor_transfer_timeout: 15, 22 refungible_sponsor_transfer_timeout: 15,
23 const_on_chain_schema_limit: 1024,
24 offchain_schema_limit: 1024,
25 variable_on_chain_schema_limit: 1024,
23 }));26 }));
24}27}
2528
1255 });1258 });
1256}1259}
12571260
1258// If Public Access mode is set to WhiteList, oken transfers can’t be Approved by a non-whitelisted address (see Approve method).1261// If Public Access mode is set to WhiteList, token transfers can’t be Approved by a non-whitelisted address (see Approve method).
1259#[test]1262#[test]
1260fn white_list_test_6() {1263fn white_list_test_6() {
1261 new_test_ext().execute_with(|| {1264 new_test_ext().execute_with(|| {
12651268
1266 let origin1 = Origin::signed(1);1269 let origin1 = Origin::signed(1);
1270
1271 let data = default_nft_data();
1272 create_test_item(collection_id, &data.into());
1273
1267 assert_ok!(TemplateModule::set_public_access_mode(1274 assert_ok!(TemplateModule::set_public_access_mode(
1268 origin1.clone(),1275 origin1.clone(),
1639 nft_sponsor_transfer_timeout: 15,1646 nft_sponsor_transfer_timeout: 15,
1640 fungible_sponsor_transfer_timeout: 15,1647 fungible_sponsor_transfer_timeout: 15,
1641 refungible_sponsor_transfer_timeout: 15, 1648 refungible_sponsor_transfer_timeout: 15,
1649 const_on_chain_schema_limit: 1024,
1650 offchain_schema_limit: 1024,
1651 variable_on_chain_schema_limit: 1024,
1642 }));1652 }));
1643 1653
1644 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1654 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1668 nft_sponsor_transfer_timeout: 15,1678 nft_sponsor_transfer_timeout: 15,
1669 fungible_sponsor_transfer_timeout: 15,1679 fungible_sponsor_transfer_timeout: 15,
1670 refungible_sponsor_transfer_timeout: 15, 1680 refungible_sponsor_transfer_timeout: 15,
1681 const_on_chain_schema_limit: 1024,
1682 offchain_schema_limit: 1024,
1683 variable_on_chain_schema_limit: 1024,
1671 }));1684 }));
1672 1685
1673 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1686 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1691 nft_sponsor_transfer_timeout: 15,1704 nft_sponsor_transfer_timeout: 15,
1692 fungible_sponsor_transfer_timeout: 15,1705 fungible_sponsor_transfer_timeout: 15,
1693 refungible_sponsor_transfer_timeout: 15, 1706 refungible_sponsor_transfer_timeout: 15,
1707 const_on_chain_schema_limit: 1024,
1708 offchain_schema_limit: 1024,
1709 variable_on_chain_schema_limit: 1024,
1694 }));1710 }));
1695 1711
1696 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1712 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1714 nft_sponsor_transfer_timeout: 15,1730 nft_sponsor_transfer_timeout: 15,
1715 fungible_sponsor_transfer_timeout: 15,1731 fungible_sponsor_transfer_timeout: 15,
1716 refungible_sponsor_transfer_timeout: 15, 1732 refungible_sponsor_transfer_timeout: 15,
1733 const_on_chain_schema_limit: 1024,
1734 offchain_schema_limit: 1024,
1735 variable_on_chain_schema_limit: 1024,
1717 }));1736 }));
1718 1737
1719 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1738 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1745 nft_sponsor_transfer_timeout: 15,1764 nft_sponsor_transfer_timeout: 15,
1746 fungible_sponsor_transfer_timeout: 15,1765 fungible_sponsor_transfer_timeout: 15,
1747 refungible_sponsor_transfer_timeout: 15, 1766 refungible_sponsor_transfer_timeout: 15,
1767 const_on_chain_schema_limit: 1024,
1768 offchain_schema_limit: 1024,
1769 variable_on_chain_schema_limit: 1024,
1748 }));1770 }));
17491771
1750 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1772 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1776 nft_sponsor_transfer_timeout: 15,1798 nft_sponsor_transfer_timeout: 15,
1777 fungible_sponsor_transfer_timeout: 15,1799 fungible_sponsor_transfer_timeout: 15,
1778 refungible_sponsor_transfer_timeout: 15, 1800 refungible_sponsor_transfer_timeout: 15,
1801 const_on_chain_schema_limit: 1024,
1802 offchain_schema_limit: 1024,
1803 variable_on_chain_schema_limit: 1024,
1779 }));1804 }));
17801805
1781 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1806 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1807 nft_sponsor_transfer_timeout: 15,1832 nft_sponsor_transfer_timeout: 15,
1808 fungible_sponsor_transfer_timeout: 15,1833 fungible_sponsor_transfer_timeout: 15,
1809 refungible_sponsor_transfer_timeout: 15, 1834 refungible_sponsor_transfer_timeout: 15,
1835 const_on_chain_schema_limit: 1024,
1836 offchain_schema_limit: 1024,
1837 variable_on_chain_schema_limit: 1024,
1810 }));1838 }));
18111839
1812 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1840 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1924 nft_sponsor_transfer_timeout: 15,1952 nft_sponsor_transfer_timeout: 15,
1925 fungible_sponsor_transfer_timeout: 15,1953 fungible_sponsor_transfer_timeout: 15,
1926 refungible_sponsor_transfer_timeout: 15, 1954 refungible_sponsor_transfer_timeout: 15,
1955 const_on_chain_schema_limit: 1024,
1956 offchain_schema_limit: 1024,
1957 variable_on_chain_schema_limit: 1024,
1927 }));1958 }));
19281959
1929 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1960 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1949 nft_sponsor_transfer_timeout: 15,1980 nft_sponsor_transfer_timeout: 15,
1950 fungible_sponsor_transfer_timeout: 15,1981 fungible_sponsor_transfer_timeout: 15,
1951 refungible_sponsor_transfer_timeout: 15, 1982 refungible_sponsor_transfer_timeout: 15,
1983 const_on_chain_schema_limit: 1024,
1984 offchain_schema_limit: 1024,
1985 variable_on_chain_schema_limit: 1024,
1952 }));1986 }));
19531987
19541988
addedpallets/nft/src/types.rsdiffbeforeafterboth

no changes

modifiedruntime/Cargo.tomldiffbeforeafterboth
5license = 'Unlicense'5license = 'Unlicense'
6name = 'nft-runtime'6name = 'nft-runtime'
7repository = 'https://github.com/usetech-llc/nft_parachain/'7repository = 'https://github.com/usetech-llc/nft_parachain/'
8version = '2.0.0'8version = '3.0.0'
99
10[package.metadata.docs.rs]10[package.metadata.docs.rs]
11targets = ['x86_64-unknown-linux-gnu']11targets = ['x86_64-unknown-linux-gnu']
25serde = { features = ['derive'], optional = true, version = '1.0.101' }25serde = { features = ['derive'], optional = true, version = '1.0.101' }
2626
27# local dependencies27# local dependencies
28pallet-nft = { path = '../pallets/nft', default-features = false, version = '2.0.0' }28pallet-nft = { path = '../pallets/nft', default-features = false, version = '3.0.0' }
2929
30# Substrate dependencies30# Substrate dependencies
31frame-benchmarking = { default-features = false, optional = true, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }31frame-benchmarking = { default-features = false, optional = true, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
32frame-executive = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }32frame-executive = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
33frame-support = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }33frame-support = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
34frame-system = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }34frame-system = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
35frame-system-benchmarking = { default-features = false, optional = true, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }35frame-system-benchmarking = { default-features = false, optional = true, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
36frame-system-rpc-runtime-api = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }36frame-system-rpc-runtime-api = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
37pallet-aura = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }37pallet-aura = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
38pallet-balances = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }38pallet-balances = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
39pallet-contracts = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }39pallet-contracts = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
40pallet-contracts-primitives = { default-features = false, version = '2.0.0', git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }40pallet-contracts-primitives = { default-features = false, version = '2.0.1', git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
41pallet-contracts-rpc-runtime-api = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }41pallet-contracts-rpc-runtime-api = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
42pallet-grandpa = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }42pallet-grandpa = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
43pallet-randomness-collective-flip = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }43pallet-randomness-collective-flip = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
44pallet-sudo = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }44pallet-sudo = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
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.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
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.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
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.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
48pallet-treasury = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }48pallet-treasury = { version = "2.0.1", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
49pallet-vesting = { version = "2.0.0", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }49pallet-vesting = { version = "2.0.1", default-features = false, git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
50sp-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.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
51sp-arithmetic = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
51sp-block-builder = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }52sp-block-builder = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
52sp-consensus-aura = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }53sp-consensus-aura = { default-features = false, version = '0.8.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
53sp-core = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }54sp-core = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
54sp-inherents = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }55sp-inherents = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
55sp-offchain = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }56sp-offchain = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
56sp-runtime = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }57sp-runtime = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
57sp-session = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }58sp-session = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
58sp-std = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }59sp-std = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
59sp-transaction-pool = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }60sp-transaction-pool = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
60sp-version = { default-features = false, version = '2.0.0' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'release_flexi' }61sp-version = { default-features = false, version = '2.0.1' , git = 'https://github.com/usetech-llc/substrate.git', branch = 'unique' }
62smallvec = "1.4.1"
6163
62[features]64[features]
63default = ['std']65default = ['std']
addedruntime/src/chain_extension.rsdiffbeforeafterboth

no changes

modifiedruntime/src/lib.rsdiffbeforeafterboth
13#[cfg(feature = "std")]13#[cfg(feature = "std")]
14include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));14include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
1515
16use pallet_contracts_rpc_runtime_api::ContractExecResult;
17use pallet_grandpa::fg_primitives;16use pallet_grandpa::fg_primitives;
18use pallet_grandpa::{AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList};17use pallet_grandpa::{AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList};
19use sp_api::impl_runtime_apis;18use sp_api::impl_runtime_apis;
20use sp_consensus_aura::sr25519::AuthorityId as AuraId;19use sp_consensus_aura::sr25519::AuthorityId as AuraId;
21use sp_core::{ crypto::KeyTypeId, crypto::Public, OpaqueMetadata };20use sp_core::{ crypto::KeyTypeId, crypto::Public, OpaqueMetadata };
22use sp_runtime::{21use sp_runtime::{
22 Permill, Perbill, Percent,
23 ModuleId,
23 create_runtime_str, generic, impl_opaque_keys,24 create_runtime_str, generic, impl_opaque_keys,
24 traits::{25 traits::{
25 Convert, ConvertInto, BlakeTwo256, Block as BlockT, IdentifyAccount, 26 Convert, ConvertInto, BlakeTwo256, Block as BlockT, IdentifyAccount,
26 IdentityLookup, NumberFor, Saturating, Verify,27 IdentityLookup, NumberFor, Verify,
27 },28 },
28 transaction_validity::{TransactionSource, TransactionValidity},29 transaction_validity::{TransactionSource, TransactionValidity},
29 ApplyExtrinsicResult, MultiSignature,30 ApplyExtrinsicResult, MultiSignature,
30};31};
31use sp_std::prelude::*;
32#[cfg(feature = "std")]32#[cfg(feature = "std")]
33use sp_version::NativeVersion;33use sp_version::NativeVersion;
34use sp_version::RuntimeVersion;34use sp_version::RuntimeVersion;
3535pub use pallet_transaction_payment::{Multiplier, TargetedFeeAdjustment, CurrencyAdapter, FeeDetails, RuntimeDispatchInfo};
36// A few exports that help ease life for downstream crates.36// A few exports that help ease life for downstream crates.
37pub use pallet_balances::Call as BalancesCall;37pub use pallet_balances::Call as BalancesCall;
38pub use pallet_contracts::Schedule as ContractsSchedule;38pub use pallet_contracts::{Schedule as ContractsSchedule, WeightInfo};
39pub use frame_support::{39pub use frame_support::{
40 construct_runtime,40 construct_runtime,
41 dispatch::DispatchResult,41 dispatch::DispatchResult,
42 parameter_types,42 parameter_types,
43 StorageValue,
43 traits::{44 traits::{
44 Currency, ExistenceRequirement, Get, KeyOwnerProofSystem, OnUnbalanced, Randomness,45 Currency, ExistenceRequirement, Get, KeyOwnerProofSystem, OnUnbalanced, Randomness,
45 WithdrawReason, LockIdentifier,46 LockIdentifier,
46 },47 },
47 weights::{48 weights::{
48 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},49 constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND},
49 DispatchInfo, GetDispatchInfo, IdentityFee, Pays, PostDispatchInfo, Weight,50 DispatchInfo, GetDispatchInfo, Pays, PostDispatchInfo, Weight,
50 WeightToFeePolynomial,51 WeightToFeePolynomial, WeightToFeeCoefficient, WeightToFeeCoefficients
51 },52 },
52 StorageValue,
53};53};
54#[cfg(any(feature = "std", test))]54// #[cfg(any(feature = "std", test))]
55pub use sp_runtime::BuildStorage;
56use sp_runtime:: { Perbill, Permill, Percent, ModuleId };
57use frame_system::{self as system, EnsureRoot };55use frame_system::{
56 self as system,
57 EnsureRoot,
58 limits::{BlockWeights, BlockLength},
59};
58use sp_std::{marker::PhantomData};60use sp_std::{prelude::*, marker::PhantomData};
61use sp_arithmetic::{traits::{BaseArithmetic, Unsigned}};
62use smallvec::smallvec;
5963
60pub use pallet_timestamp::Call as TimestampCall;64pub use pallet_timestamp::Call as TimestampCall;
65
66mod chain_extension;
67use crate::chain_extension::NFTExtension;
6168
62/// Struct that handles the conversion of Balance -> `u64`. This is used for69/// Struct that handles the conversion of Balance -> `u64`. This is used for
63/// staking's election calculation.70/// staking's election calculation.
143 spec_name: create_runtime_str!("nft"),150 spec_name: create_runtime_str!("nft"),
144 impl_name: create_runtime_str!("nft"),151 impl_name: create_runtime_str!("nft"),
145 authoring_version: 1,152 authoring_version: 1,
146 spec_version: 2,153 spec_version: 3,
147 impl_version: 1,154 impl_version: 1,
148 apis: RUNTIME_API_VERSIONS,155 apis: RUNTIME_API_VERSIONS,
149 transaction_version: 1,156 transaction_version: 1,
168}175}
169176
170/// Provides a membership set with only the configured aura users177/// Provides a membership set with only the configured aura users
171pub struct ValiudatorsOnly<Runtime: pallet_aura::Trait>(PhantomData<Runtime>);178pub struct ValiudatorsOnly<Runtime: pallet_aura::Config>(PhantomData<Runtime>);
172impl frame_support::traits::Contains<AccountId> for ValiudatorsOnly<Runtime> {179impl frame_support::traits::Contains<AccountId> for ValiudatorsOnly<Runtime> {
173 fn contains(t: &AccountId) -> bool {180 fn contains(t: &AccountId) -> bool {
174 let arr: [u8; 32] = *t.as_ref();181 let arr: [u8; 32] = *t.as_ref();
204 }211 }
205}212}
213
214type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance;
215
216pub struct DealWithFees;
217impl OnUnbalanced<NegativeImbalance> for DealWithFees {
218 fn on_unbalanceds<B>(mut fees_then_tips: impl Iterator<Item=NegativeImbalance>) {
219 if let Some(fees) = fees_then_tips.next() {
220 // for fees, 100% to treasury
221 let mut split = fees.ration(100, 0);
222 if let Some(tips) = fees_then_tips.next() {
223 // for tips, if any, 100% to treasury
224 tips.ration_merge_into(100, 0, &mut split);
225 }
226 Treasury::on_unbalanced(split.0);
227 // Author::on_unbalanced(split.1);
228 }
229 }
230}
231
232/// We assume that ~10% of the block weight is consumed by `on_initalize` handlers.
233/// This is used to limit the maximal weight of a single extrinsic.
234const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10);
235/// We allow `Normal` extrinsics to fill up the block up to 75%, the rest can be used
236/// by Operational extrinsics.
237const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75);
238/// We allow for 2 seconds of compute with a 6 second average block time.
239const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND;
206240
207parameter_types! {241parameter_types! {
208 pub const BlockHashCount: BlockNumber = 2400;242 pub const BlockHashCount: BlockNumber = 2400;
209 /// We allow for 2 seconds of compute with a 6 second average block time.
210 pub const MaximumBlockWeight: Weight = 2 * WEIGHT_PER_SECOND;243 pub RuntimeBlockLength: BlockLength =
244 BlockLength::max_with_normal_ratio(5 * 1024 * 1024, NORMAL_DISPATCH_RATIO);
211 pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);245 pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75);
212 /// Assume 10% of weight for average on_initialize calls.
213 pub MaximumExtrinsicWeight: Weight = AvailableBlockRatio::get()246 pub const MaximumBlockLength: u32 = 5 * 1024 * 1024;
247 pub RuntimeBlockWeights: BlockWeights = BlockWeights::builder()
248 .base_block(BlockExecutionWeight::get())
214 .saturating_sub(Perbill::from_percent(10)) * MaximumBlockWeight::get();249 .for_class(DispatchClass::all(), |weights| {
250 weights.base_extrinsic = ExtrinsicBaseWeight::get();
251 })
252 .for_class(DispatchClass::Normal, |weights| {
215 pub const MaximumBlockLength: u32 = 5 * 1024 * 1024;253 weights.max_total = Some(NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT);
254 })
255 .for_class(DispatchClass::Operational, |weights| {
256 weights.max_total = Some(MAXIMUM_BLOCK_WEIGHT);
257 // Operational transactions have some extra reserved space, so that they
258 // are included even if block reached `MAXIMUM_BLOCK_WEIGHT`.
259 weights.reserved = Some(
260 MAXIMUM_BLOCK_WEIGHT - NORMAL_DISPATCH_RATIO * MAXIMUM_BLOCK_WEIGHT
261 );
262 })
263 .avg_block_initialization(AVERAGE_ON_INITIALIZE_RATIO)
264 .build_or_panic();
216 pub const Version: RuntimeVersion = VERSION;265 pub const Version: RuntimeVersion = VERSION;
266 pub const SS58Prefix: u8 = 42;
217}267}
218268
219impl system::Trait for Runtime {269impl system::Config for Runtime {
220 /// The basic call filter to use in dispatchable.270 /// The basic call filter to use in dispatchable.
221 type BaseCallFilter = ();271 type BaseCallFilter = ();
222 /// The identifier used to distinguish between accounts.272 /// The identifier used to distinguish between accounts.
241 type Origin = Origin;291 type Origin = Origin;
242 /// Maximum number of block number to block hash mappings to keep (oldest pruned first).292 /// Maximum number of block number to block hash mappings to keep (oldest pruned first).
243 type BlockHashCount = BlockHashCount;293 type BlockHashCount = BlockHashCount;
244 /// Maximum weight of each block.
245 type MaximumBlockWeight = MaximumBlockWeight;
246 /// The weight of database operations that the runtime can invoke.294 /// The weight of database operations that the runtime can invoke.
247 type DbWeight = RocksDbWeight;295 type DbWeight = RocksDbWeight;
248 /// The weight of the overhead invoked on the block import process, independent of the296 /// The weight of the overhead invoked on the block import process, independent of the
249 /// extrinsics included in that block.297 /// extrinsics included in that block.
250 type BlockExecutionWeight = BlockExecutionWeight;298 type BlockWeights = RuntimeBlockWeights;
251 /// The base weight of any extrinsic processed by the runtime, independent of the
252 /// logic of that extrinsic. (Signature verification, nonce increment, fee, etc...)
253 type ExtrinsicBaseWeight = ExtrinsicBaseWeight;
254 /// The maximum weight that a single extrinsic of `Normal` dispatch class can have,
255 /// idependent of the logic of that extrinsics. (Roughly max block weight - average on
256 /// initialize cost).
257 type MaximumExtrinsicWeight = MaximumExtrinsicWeight;
258 /// Maximum size of all encoded transactions (in bytes) that are allowed in one block.
259 type MaximumBlockLength = MaximumBlockLength;
260 /// Portion of the block weight that is available to all normal transactions.
261 type AvailableBlockRatio = AvailableBlockRatio;
262 /// Version of the runtime.299 /// Version of the runtime.
263 type Version = Version;300 type Version = Version;
264 /// This type is being generated by `construct_runtime!`.301 /// This type is being generated by `construct_runtime!`.
270 /// The data to be stored in an account.307 /// The data to be stored in an account.
271 type AccountData = pallet_balances::AccountData<Balance>;308 type AccountData = pallet_balances::AccountData<Balance>;
272 /// Weight information for the extrinsics of this pallet.309 /// Weight information for the extrinsics of this pallet.
273 type SystemWeightInfo = ();310 type SystemWeightInfo = system::weights::SubstrateWeight<Runtime>;
311
312 type BlockLength = RuntimeBlockLength;
313 type SS58Prefix = SS58Prefix;
274}314}
275315
276impl pallet_aura::Trait for Runtime {316impl pallet_aura::Config for Runtime {
277 type AuthorityId = AuraId;317 type AuthorityId = AuraId;
278}318}
279319
280impl pallet_grandpa::Trait for Runtime {320impl pallet_grandpa::Config for Runtime {
281 type Event = Event;321 type Event = Event;
282 type Call = Call;322 type Call = Call;
283323
300 pub const MinimumPeriod: u64 = SLOT_DURATION / 2;340 pub const MinimumPeriod: u64 = SLOT_DURATION / 2;
301}341}
302342
303impl pallet_timestamp::Trait for Runtime {343impl pallet_timestamp::Config for Runtime {
304 /// A timestamp: milliseconds since the unix epoch.344 /// A timestamp: milliseconds since the unix epoch.
305 type Moment = u64;345 type Moment = u64;
306 type OnTimestampSet = Aura;346 type OnTimestampSet = Aura;
314 pub const MaxLocks: u32 = 50;354 pub const MaxLocks: u32 = 50;
315}355}
316356
317impl pallet_balances::Trait for Runtime {357impl pallet_balances::Config for Runtime {
318 type MaxLocks = MaxLocks;358 type MaxLocks = MaxLocks;
319 /// The type for recording an account's balance.359 /// The type for recording an account's balance.
320 type Balance = Balance;360 type Balance = Balance;
326 type WeightInfo = ();366 type WeightInfo = ();
327}367}
328368
329pub const MILLICENTS: Balance = 1_000_000_000;369pub const MICROUNIQUE: Balance = 1_000_000_000;
330pub const CENTS: Balance = 1_000 * MILLICENTS;370pub const MILLIUNIQUE: Balance = 1_000 * MICROUNIQUE;
371pub const CENTIUNIQUE: Balance = 10 * MILLIUNIQUE;
331pub const DOLLARS: Balance = 100 * CENTS;372pub const UNIQUE: Balance = 100 * CENTIUNIQUE;
373
374pub const fn deposit(items: u32, bytes: u32) -> Balance {
375 items as Balance * 15 * CENTIUNIQUE + (bytes as Balance) * 6 * CENTIUNIQUE
376}
332377
333parameter_types! {378parameter_types! {
334 pub const TombstoneDeposit: Balance = 0;379 pub const TombstoneDeposit: Balance = deposit(
380 0,
381 sp_std::mem::size_of::<pallet_contracts::ContractInfo<Runtime>>() as u32
382 );
335 pub const RentByteFee: Balance = 4 * MILLICENTS;383 pub const DepositPerContract: Balance = TombstoneDeposit::get();
336 pub const RentDepositOffset: Balance = 1000 * MILLICENTS;384 pub const DepositPerStorageByte: Balance = deposit(0, 1);
385 pub const DepositPerStorageItem: Balance = deposit(1, 0);
386 pub RentFraction: Perbill = Perbill::from_rational_approximation(1u32, 30 * DAYS);
337 pub const SurchargeReward: Balance = 150 * MILLICENTS;387 pub const SurchargeReward: Balance = 150 * MILLIUNIQUE;
388 pub const SignedClaimHandicap: u32 = 2;
389 pub const MaxDepth: u32 = 32;
390 pub const MaxValueSize: u32 = 16 * 1024;
391 // The lazy deletion runs inside on_initialize.
392 pub DeletionWeightLimit: Weight = AVERAGE_ON_INITIALIZE_RATIO *
393 RuntimeBlockWeights::get().max_block;
394 // The weight needed for decoding the queue should be less or equal than a fifth
395 // of the overall weight dedicated to the lazy deletion.
396 pub DeletionQueueDepth: u32 = ((DeletionWeightLimit::get() / (
397 <Runtime as pallet_contracts::Config>::WeightInfo::on_initialize_per_queue_item(1) -
398 <Runtime as pallet_contracts::Config>::WeightInfo::on_initialize_per_queue_item(0)
399 )) / 5) as u32;
338}400}
401
339402
340impl pallet_contracts::Trait for Runtime {403impl pallet_contracts::Config for Runtime {
341 type Time = Timestamp;404 type Time = Timestamp;
342 type Randomness = RandomnessCollectiveFlip;405 type Randomness = RandomnessCollectiveFlip;
343 type Currency = Balances;406 type Currency = Balances;
344 type Event = Event;407 type Event = Event;
345 type DetermineContractAddress = pallet_contracts::SimpleAddressDeterminer<Runtime>;
346 type TrieIdGenerator = pallet_contracts::TrieIdFromParentCounter<Runtime>;
347 type RentPayment = ();408 type RentPayment = ();
348 type SignedClaimHandicap = pallet_contracts::DefaultSignedClaimHandicap;409 type SignedClaimHandicap = SignedClaimHandicap;
349 type TombstoneDeposit = TombstoneDeposit;410 type TombstoneDeposit = TombstoneDeposit;
350 type StorageSizeOffset = pallet_contracts::DefaultStorageSizeOffset;411 type DepositPerContract = DepositPerContract;
351 type RentByteFee = RentByteFee;412 type DepositPerStorageByte = DepositPerStorageByte;
352 type RentDepositOffset = RentDepositOffset;413 type DepositPerStorageItem = DepositPerStorageItem;
414 type RentFraction = RentFraction;
353 type SurchargeReward = SurchargeReward;415 type SurchargeReward = SurchargeReward;
354 type MaxDepth = pallet_contracts::DefaultMaxDepth;416 type MaxDepth = MaxDepth;
355 type MaxValueSize = pallet_contracts::DefaultMaxValueSize;417 type MaxValueSize = MaxValueSize;
356 type WeightPrice = pallet_transaction_payment::Module<Self>;418 type WeightPrice = pallet_transaction_payment::Module<Self>;
419 type WeightInfo = pallet_contracts::weights::SubstrateWeight<Self>;
420 type ChainExtension = NFTExtension;
421 type DeletionQueueDepth = DeletionQueueDepth;
422 type DeletionWeightLimit = DeletionWeightLimit;
357}423}
358424
359parameter_types! {425parameter_types! {
360 pub const TransactionByteFee: Balance = 10 * MILLICENTS;426 pub const TransactionByteFee: Balance = 501 * MICROUNIQUE; // Targeting 0.1 Unique per NFT transfer
361}427}
428
429/// Linear implementor of `WeightToFeePolynomial`
430pub struct LinearFee<T>(sp_std::marker::PhantomData<T>);
431
432impl<T> WeightToFeePolynomial for LinearFee<T> where
433 T: BaseArithmetic + From<u32> + Copy + Unsigned
434{
435 type Balance = T;
436
437 fn polynomial() -> WeightToFeeCoefficients<Self::Balance> {
438 smallvec!(WeightToFeeCoefficient {
439 coeff_integer: 146_700u32.into(), // Targeting 0.1 Unique per NFT transfer
440 coeff_frac: Perbill::zero(),
441 negative: false,
442 degree: 1,
443 })
444 }
445}
362446
363impl pallet_transaction_payment::Trait for Runtime {447impl pallet_transaction_payment::Config for Runtime {
364 type Currency = pallet_balances::Module<Runtime>;448 type OnChargeTransaction = CurrencyAdapter<Balances, DealWithFees>;
365 type OnTransactionPayment = Treasury;
366 type TransactionByteFee = TransactionByteFee;449 type TransactionByteFee = TransactionByteFee;
367 type WeightToFee = IdentityFee<Balance>;450 type WeightToFee = LinearFee<Balance>;
368 type FeeMultiplierUpdate = ();451 type FeeMultiplierUpdate = ();
369}452}
370453
371parameter_types! {454parameter_types! {
372 pub const ProposalBond: Permill = Permill::from_percent(5);455 pub const ProposalBond: Permill = Permill::from_percent(5);
373 pub const ProposalBondMinimum: Balance = 1 * DOLLARS;456 pub const ProposalBondMinimum: Balance = 1 * UNIQUE;
374 pub const SpendPeriod: BlockNumber = 5 * MINUTES;457 pub const SpendPeriod: BlockNumber = 5 * MINUTES;
375 pub const Burn: Permill = Permill::from_percent(0);458 pub const Burn: Permill = Permill::from_percent(0);
376 pub const TipCountdown: BlockNumber = 1 * DAYS;459 pub const TipCountdown: BlockNumber = 1 * DAYS;
377 pub const TipFindersFee: Percent = Percent::from_percent(20);460 pub const TipFindersFee: Percent = Percent::from_percent(20);
378 pub const TipReportDepositBase: Balance = 1 * DOLLARS;461 pub const TipReportDepositBase: Balance = 1 * UNIQUE;
379 pub const DataDepositPerByte: Balance = 1 * CENTS;462 pub const DataDepositPerByte: Balance = 1 * CENTIUNIQUE;
380 pub const BountyDepositBase: Balance = 1 * DOLLARS;463 pub const BountyDepositBase: Balance = 1 * UNIQUE;
381 pub const BountyDepositPayoutDelay: BlockNumber = 1 * DAYS;464 pub const BountyDepositPayoutDelay: BlockNumber = 1 * DAYS;
382 pub const TreasuryModuleId: ModuleId = ModuleId(*b"py/trsry");465 pub const TreasuryModuleId: ModuleId = ModuleId(*b"py/trsry");
383 pub const BountyUpdatePeriod: BlockNumber = 14 * DAYS;466 pub const BountyUpdatePeriod: BlockNumber = 14 * DAYS;
384 pub const MaximumReasonLength: u32 = 16384;467 pub const MaximumReasonLength: u32 = 16384;
385 pub const BountyCuratorDeposit: Permill = Permill::from_percent(50);468 pub const BountyCuratorDeposit: Permill = Permill::from_percent(50);
386 pub const BountyValueMinimum: Balance = 5 * DOLLARS;469 pub const BountyValueMinimum: Balance = 5 * UNIQUE;
387}470}
388471
389impl pallet_treasury::Trait for Runtime {472impl pallet_treasury::Config for Runtime {
390 type ModuleId = TreasuryModuleId;473 type ModuleId = TreasuryModuleId;
391 type Currency = Balances;474 type Currency = Balances;
392 type ApproveOrigin = EnsureRoot<AccountId>;475 type ApproveOrigin = EnsureRoot<AccountId>;
393 type RejectOrigin = EnsureRoot<AccountId>;476 type RejectOrigin = EnsureRoot<AccountId>;
394 type Tippers = ValiudatorsOnly<Self>;
395 type TipCountdown = TipCountdown;
396 type TipFindersFee = TipFindersFee;
397 type TipReportDepositBase = TipReportDepositBase;
398 type DataDepositPerByte = DataDepositPerByte;
399 type Event = Event;477 type Event = Event;
400 type OnSlash = ();478 type OnSlash = ();
401 type ProposalBond = ProposalBond;479 type ProposalBond = ProposalBond;
402 type ProposalBondMinimum = ProposalBondMinimum;480 type ProposalBondMinimum = ProposalBondMinimum;
403 type SpendPeriod = SpendPeriod;481 type SpendPeriod = SpendPeriod;
404 type Burn = Burn;482 type Burn = Burn;
405 type BountyDepositBase = BountyDepositBase;483 type BurnDestination = ();
406 type BountyDepositPayoutDelay = BountyDepositPayoutDelay;
407 type BountyUpdatePeriod = BountyUpdatePeriod;
408 type BountyCuratorDeposit = BountyCuratorDeposit;
409 type BountyValueMinimum = BountyValueMinimum;
410 type MaximumReasonLength = MaximumReasonLength;
411 type BurnDestination = ();484 type SpendFunds = ();
412 type WeightInfo = ();485 type WeightInfo = pallet_treasury::weights::SubstrateWeight<Runtime>;
413}486}
414487
415impl pallet_sudo::Trait for Runtime {488impl pallet_sudo::Config for Runtime {
416 type Event = Event;489 type Event = Event;
417 type Call = Call;490 type Call = Call;
418}491}
419492
420parameter_types! {493parameter_types! {
421 pub const MinVestedTransfer: Balance = 100 * DOLLARS;494 pub const MinVestedTransfer: Balance = 10 * UNIQUE;
422}495}
423496
424impl pallet_vesting::Trait for Runtime {497impl pallet_vesting::Config for Runtime {
425 type Event = Event;498 type Event = Event;
426 type Currency = Balances;499 type Currency = Balances;
427 type BlockNumberToBalance = ConvertInto;500 type BlockNumberToBalance = ConvertInto;
430}503}
431504
432/// Used for the module nft in `./nft.rs`505/// Used for the module nft in `./nft.rs`
433impl pallet_nft::Trait for Runtime {506impl pallet_nft::Config for Runtime {
434 type Event = Event;507 type Event = Event;
435 type WeightInfo = nft_weights::WeightInfo;508 type WeightInfo = nft_weights::WeightInfo;
436}509}
443 {516 {
444 System: system::{Module, Call, Config, Storage, Event<T>},517 System: system::{Module, Call, Config, Storage, Event<T>},
445 RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage},518 RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage},
446 Contracts: pallet_contracts::{Module, Call, Config, Storage, Event<T>},519 Contracts: pallet_contracts::{Module, Call, Config<T>, Storage, Event<T>},
447 Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent},520 Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent},
448 Aura: pallet_aura::{Module, Config<T>, Inherent},521 Aura: pallet_aura::{Module, Config<T>, Inherent},
449 Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event},522 Grandpa: pallet_grandpa::{Module, Call, Storage, Config, Event},
495 value: Balance,568 value: Balance,
496 gas_limit: u64,569 gas_limit: u64,
497 input_data: Vec<u8>,570 input_data: Vec<u8>,
498 ) -> ContractExecResult {571 ) -> pallet_contracts_primitives::ContractExecResult {
499 let (exec_result, gas_consumed) =
500 Contracts::bare_call(origin, dest.into(), value, gas_limit, input_data);572 Contracts::bare_call(origin, dest, value, gas_limit, input_data)
501 match exec_result {
502 Ok(v) => ContractExecResult::Success {
503 flags: v.flags.bits(),
504 data: v.data,
505 gas_consumed: gas_consumed,
506 },
507 Err(_) => ContractExecResult::Error,
508 }
509 }573 }
510574
511 fn get_storage(575 fn get_storage(
640 fn query_info(704 fn query_info(uxt: <Block as BlockT>::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance> {
641 uxt: <Block as BlockT>::Extrinsic,
642 len: u32,
643 ) -> pallet_transaction_payment_rpc_runtime_api::RuntimeDispatchInfo<Balance> {
644 TransactionPayment::query_info(uxt, len)705 TransactionPayment::query_info(uxt, len)
645 }706 }
707 fn query_fee_details(uxt: <Block as BlockT>::Extrinsic, len: u32) -> FeeDetails<Balance> {
708 TransactionPayment::query_fee_details(uxt, len)
709 }
646 }710 }
647711
648 #[cfg(feature = "runtime-benchmarks")]712 #[cfg(feature = "runtime-benchmarks")]
modifiedruntime_types.jsondiffbeforeafterboth
102 "CollectionId": "u32",102 "CollectionId": "u32",
103 "TokenId": "u32",103 "TokenId": "u32",
104 "ChainLimits": {104 "ChainLimits": {
105 "collection_numbers_limit": "u32",105 "CollectionNumbersLimit": "u32",
106 "account_token_ownership_limit": "u32",106 "AccountTokenOwnershipLimit": "u32",
107 "collections_admins_limit": "u64",107 "CollectionAdminsLimit": "u64",
108 "custom_data_limit": "u32",108 "CustomDataLimit": "u32",
109 "nft_sponsor_timeout": "u32",109 "NftSponsorTimeout": "u32",
110 "fungible_sponsor_timeout": "u32",110 "FungibleSponsorTimeout": "u32",
111 "refungible_sponsor_timeout": "u32"111 "RefungibleSponsorTimeout": "u32",
112 "OffchainSchemaLimit": "u32",
113 "VariableOnChainSchemaLimit": "u32",
114 "ConstOnChainSchemaLimit": "u32"
112 },115 },
113 "CollectionLimits": {116 "CollectionLimits": {
114 "AccountTokenOwnershipLimit": "u32",117 "AccountTokenOwnershipLimit": "u32",
115 "SponsoredMintSize": "u32",118 "SponsoredMintSize": "u32",
116 "TokenLimit": "u32",119 "TokenLimit": "u32",
117 "SponsorTimeout": "u32"120 "SponsorTimeout": "u32"
118 }121 },
122 "AccountInfo": "AccountInfoWithProviders",
123 "AccountInfoWithProviders": {
124 "nonce": "Index",
125 "consumers": "RefCount",
126 "providers": "RefCount",
127 "data": "AccountData"
128 }
129
119 }130 }
120 131
addedsmart_contracs/transfer/.gitignorediffbeforeafterboth

no changes

addedsmart_contracs/transfer/Cargo.tomldiffbeforeafterboth

no changes

addedsmart_contracs/transfer/lib.rsdiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/.gitignorediffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/Cargo.tomldiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/LICENSEdiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/README.mddiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/calls/.gitignorediffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/calls/.ink/abi_gen/Cargo.tomldiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/calls/.ink/abi_gen/main.rsdiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/calls/Cargo.tomldiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/calls/lib.rsdiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/src/calls.rsdiffbeforeafterboth

no changes

deletedsmart_contract/ink-types-node-runtime/src/lib.rsdiffbeforeafterboth

no changes

addedtests/.vscode/settings.jsondiffbeforeafterboth

no changes

deletedtests/package-lock.jsondiffbeforeafterboth

no changes

modifiedtests/package.jsondiffbeforeafterboth
4 "description": "Substrate Nft tests",4 "description": "Substrate Nft tests",
5 "main": "",5 "main": "",
6 "devDependencies": {6 "devDependencies": {
7 "@polkadot/dev": "^0.52.11",7 "@polkadot/dev": "^0.61.24",
8 "@polkadot/ts": "^0.3.41",8 "@polkadot/ts": "^0.3.59",
9 "@polkadot/typegen": "^3.6.4",
10 "@polkadot/util-crypto": "^5.4.4",
9 "@types/chai": "^4.2.12",11 "@types/chai": "^4.2.12",
10 "@types/chai-as-promised": "^7.1.3",12 "@types/chai-as-promised": "^7.1.3",
11 "@types/mocha": "^8.0.3",13 "@types/mocha": "^8.0.3",
18 "scripts": {20 "scripts": {
19 "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts",21 "test": "mocha --timeout 9999999 -r ts-node/register ./**/*.test.ts",
20 "load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts",22 "load": "mocha --timeout 9999999 -r ts-node/register ./**/*.load.ts",
23 "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",
21 "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",24 "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",
25 "testSetVariableMetaData": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetaData.test.ts",
22 "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",26 "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",
23 "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",27 "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts",
24 "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",28 "testConnection": "mocha --timeout 9999999 -r ts-node/register ./**/connection.test.ts",
25 "testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",29 "testCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",
26 "testCreateMultipleItems": "mocha --timeout 9999999 -r ts-node/register ./**/createMultipleItems.test.ts",30 "testCreateMultipleItems": "mocha --timeout 9999999 -r ts-node/register ./**/createMultipleItems.test.ts",
27 "testApprove": "mocha --timeout 9999999 -r ts-node/register ./**/approve.test.ts",31 "testApprove": "mocha --timeout 9999999 -r ts-node/register ./**/approve.test.ts",
28 "testTransferFrom": "mocha --timeout 9999999 -r ts-node/register ./**/transferFrom.test.ts",32 "testTransferFrom": "mocha --timeout 9999999 -r ts-node/register ./**/transferFrom.test.ts",
29 "testCreateCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts"33 "testCreateCollection": "mocha --timeout 9999999 -r ts-node/register ./**/createCollection.test.ts",
34 "testToggleContractWhiteList": "mocha --timeout 9999999 -r ts-node/register ./**/toggleContractWhiteList.test.ts",
35 "testAddToContractWhiteList": "mocha --timeout 9999999 -r ts-node/register ./**/addToContractWhiteList.test.ts",
36 "testTransfer": "mocha --timeout 9999999 -r ts-node/register ./**/transfer.test.ts",
37 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",
38 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts"
30 },39 },
31 "author": "",40 "author": "",
32 "license": "Apache 2.0",41 "license": "SEE LICENSE IN ../LICENSE",
33 "homepage": "",42 "homepage": "",
34 "dependencies": {43 "dependencies": {
35 "@polkadot/api": "^2.3.1",44 "@polkadot/api": "^3.6.4",
36 "@polkadot/api-contract": "^2.3.1",45 "@polkadot/api-contract": "^3.6.4",
37 "@polkadot/types": "^2.3.1",
38 "@polkadot/util": "^3.4.1",46 "@polkadot/util": "^3.6.4",
39 "bignumber.js": "^9.0.0",47 "bignumber.js": "^9.0.0",
40 "chai-as-promised": "^7.1.1"48 "chai-as-promised": "^7.1.1"
41 },49 },
addedtests/src/addCollectionAdmin.test.tsdiffbeforeafterboth

no changes

addedtests/src/addToContractWhiteList.test.tsdiffbeforeafterboth

no changes

addedtests/src/addToWhiteList.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/burnItem.test.tsdiffbeforeafterboth
36 const events = await submitTransactionAsync(alice, tx);36 const events = await submitTransactionAsync(alice, tx);
37 const result = getGenericResult(events);37 const result = getGenericResult(events);
38
39 // Get the item 38 // Get the item
40 const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();39 const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();
41
42 // What to expect40 // What to expect
41 // tslint:disable-next-line:no-unused-expression
43 expect(result.success).to.be.true;42 expect(result.success).to.be.true;
43 // tslint:disable-next-line:no-unused-expression
44 expect(item).to.be.not.null;44 expect(item).to.be.not.null;
45 expect(item.Owner).to.be.equal(nullPublicKey);45 expect(item.Owner).to.be.equal(nullPublicKey);
46 });46 });
modifiedtests/src/confirmSponsorship.test.tsdiffbeforeafterboth
170 });170 });
171 });171 });
172172
173 it('NFT: Sponsoring is rate limited', async () => {173 it('NFT: Sponsoring of transfers is rate limited', async () => {
174 const collectionId = await createCollectionExpectSuccess();174 const collectionId = await createCollectionExpectSuccess();
175 await setCollectionSponsorExpectSuccess(collectionId, bob.address);175 await setCollectionSponsorExpectSuccess(collectionId, bob.address);
176 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');176 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
285 });285 });
286 });286 });
287
288 it('NFT: Sponsoring of createItem is rate limited', async () => {
289 const collectionId = await createCollectionExpectSuccess();
290 await setCollectionSponsorExpectSuccess(collectionId, bob.address);
291 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
292
293 // Enable collection white list
294 await enableWhiteListExpectSuccess(alice, collectionId);
295
296 // Enable public minting
297 await enablePublicMintingExpectSuccess(alice, collectionId);
298
299 await usingApi(async (api) => {
300 // Find unused address
301 const zeroBalance = await findUnusedAddress(api);
302
303 // Add zeroBalance address to white list
304 await addToWhiteListExpectSuccess(alice, collectionId, zeroBalance.address);
305
306 // Mint token using unused address as signer - gets sponsored
307 await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
308
309 // Second mint should fail
310 const AsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
311
312 const consoleError = console.error;
313 const consoleLog = console.log;
314 console.error = () => {};
315 console.log = () => {};
316 const badTransaction = async function () {
317 await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
318 };
319 await expect(badTransaction()).to.be.rejectedWith("Inability to pay some fees");
320 console.error = consoleError;
321 console.log = consoleLog;
322 const BsponsorBalance = new BigNumber((await api.query.system.account(bob.address)).data.free.toString());
323
324 // Try again after Zero gets some balance - now it should succeed
325 const balancetx = api.tx.balances.transfer(zeroBalance.address, 1e15);
326 await submitTransactionAsync(alice, balancetx);
327 await createItemExpectSuccess(zeroBalance, collectionId, 'NFT', zeroBalance.address);
328
329 expect(BsponsorBalance.isEqualTo(AsponsorBalance)).to.be.true;
330 });
331 });
287332
288});333});
289334
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
2import chaiAsPromised from 'chai-as-promised';2import chaiAsPromised from 'chai-as-promised';
3import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";3import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";
4import fs from "fs";4import fs from "fs";
5import { Abi, BlueprintPromise as Blueprint, CodePromise, ContractPromise as Contract } from "@polkadot/api-contract";5import { Abi, ContractPromise as Contract } from "@polkadot/api-contract";
6import { IKeyringPair } from "@polkadot/types/types";6import privateKey from "./substrate/privateKey";
7import { ApiPromise, Keyring } from "@polkadot/api";7import {
8 deployFlipper,
9 getFlipValue,
10 deployTransferContract,
11} from "./util/contracthelpers";
12
8import { ApiTypes, SubmittableExtrinsic } from "@polkadot/api/types";13import {
9import privateKey from "./substrate/privateKey";14 createCollectionExpectSuccess,
15 createItemExpectSuccess,
16 getGenericResult
17} from "./util/helpers";
18
1019
11chai.use(chaiAsPromised);20chai.use(chaiAsPromised);
12const expect = chai.expect;21const expect = chai.expect;
13import { BigNumber } from 'bignumber.js';
14import { findUnusedAddress } from './util/helpers';
1522
16const value = 0;23const value = 0;
17const gasLimit = 3000n * 1000000n;24const gasLimit = 3000n * 1000000n;
18const endowment = `1000000000000000`;
19const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';25const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';
20
21function deployBlueprint(alice: IKeyringPair, code: CodePromise): Promise<Blueprint> {
22 return new Promise<Blueprint>(async (resolve, reject) => {
23 const unsub = await code
24 .createBlueprint()
25 .signAndSend(alice, (result) => {
26 if (result.status.isInBlock || result.status.isFinalized) {
27 // here we have an additional field in the result, containing the blueprint
28 resolve(result.blueprint);
29 unsub();
30 }
31 })
32 });
33}
34
35function deployContract(alice: IKeyringPair, blueprint: Blueprint) : Promise<any> {
36 return new Promise<any>(async (resolve, reject) => {
37 const endowment = 1000000000000000n;
38 const initValue = true;
39
40 const unsub = await blueprint.tx
41 .new(endowment, gasLimit, initValue)
42 .signAndSend(alice, (result) => {
43 if (result.status.isInBlock || result.status.isFinalized) {
44 unsub();
45 resolve(result);
46 }
47 });
48 });
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
66export async 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}
84
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 }
91 return (result.result.asSuccess.data[0] == 0x00) ? false : true;
92}
9326
94describe('Contracts', () => {27describe('Contracts', () => {
95 it(`Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.`, async () => {28 it(`Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.`, async () => {
98 const initialGetResponse = await getFlipValue(contract, deployer);31 const initialGetResponse = await getFlipValue(contract, deployer);
9932
100 const bob = privateKey("//Bob");33 const bob = privateKey("//Bob");
101 const flip = contract.exec('flip', value, gasLimit);34 const flip = contract.tx.flip(value, gasLimit);
102 await submitTransactionAsync(bob, flip);35 await submitTransactionAsync(bob, flip);
10336
104 const afterFlipGetResponse = await getFlipValue(contract, deployer);37 const afterFlipGetResponse = await getFlipValue(contract, deployer);
105 expect(afterFlipGetResponse).not.to.be.eq(initialGetResponse, 'Flipping should change value.');38 expect(afterFlipGetResponse).not.to.be.eq(initialGetResponse, 'Flipping should change value.');
106 });39 });
107 });40 });
108
109 it(`Whitelisted account can call contract.`, async () => {
110 await usingApi(async api => {
111 const bob = privateKey("//Bob");
112
113 const [contract, deployer] = await deployFlipper(api);
114
115 let expectedFlipValue = await getFlipValue(contract, deployer);
116
117 const flip = contract.exec('flip', value, gasLimit);
118 await submitTransactionAsync(bob, flip);
119 expectedFlipValue = !expectedFlipValue;
120 const afterFlip = await getFlipValue(contract,deployer);
121 expect(afterFlip).to.be.eq(expectedFlipValue, `Anyone can call new contract.`);
122
123 const deployerCanFlip = async () => {
124 expectedFlipValue = !expectedFlipValue;
125 const deployerFlip = contract.exec('flip', value, gasLimit);
126 await submitTransactionAsync(deployer, deployerFlip);
127 const aliceFlip1Response = await getFlipValue(contract, deployer);
128 expect(aliceFlip1Response).to.be.eq(expectedFlipValue, `Deployer always can flip.`);
129 };
130 await deployerCanFlip();
131
132 const enableWhiteListTx = api.tx.nft.toggleContractWhiteList(contract.address, true);
133 const enableResult = await submitTransactionAsync(deployer, enableWhiteListTx);
134 const flipWithEnabledWhiteList = contract.exec('flip', value, gasLimit);
135 await expect(submitTransactionExpectFailAsync(bob, flipWithEnabledWhiteList)).to.be.rejected;
136 const flipValueAfterEnableWhiteList = await getFlipValue(contract, deployer);
137 expect(flipValueAfterEnableWhiteList).to.be.eq(expectedFlipValue, `Enabling whitelist doesn't make it possible to call contract for everyone.`);
138
139 await deployerCanFlip();
140
141 const addBobToWhiteListTx = api.tx.nft.addToContractWhiteList(contract.address, bob.address);
142 const addBobResult = await submitTransactionAsync(deployer, addBobToWhiteListTx);
143 const flipWithWhitelistedBob = contract.exec('flip', value, gasLimit);
144 await submitTransactionAsync(bob, flipWithWhitelistedBob);
145 expectedFlipValue = !expectedFlipValue;
146 const flipAfterWhiteListed = await getFlipValue(contract,deployer);
147 expect(flipAfterWhiteListed).to.be.eq(expectedFlipValue, `Bob was whitelisted, now he can flip.`);
148
149 await deployerCanFlip();
150
151 const removeBobFromWhiteListTx = api.tx.nft.removeFromContractWhiteList(contract.address, bob.address);
152 const removeBobResult = await submitTransactionAsync(deployer, removeBobFromWhiteListTx);
153 const bobRemoved = contract.exec('flip', value, gasLimit);
154 await expect(submitTransactionExpectFailAsync(bob, bobRemoved)).to.be.rejected;
155 const afterBobRemoved = await getFlipValue(contract, deployer);
156 expect(afterBobRemoved).to.be.eq(expectedFlipValue, `Bob can't call contract, now when he is removeed from white list.`);
157
158 await deployerCanFlip();
159
160 const disableWhiteListTx = api.tx.nft.toggleContractWhiteList(contract.address, false);
161 const disableWhiteListResult = await submitTransactionAsync(deployer, disableWhiteListTx);
162 const whiteListDisabledFlip = contract.exec('flip', value, gasLimit);
163 await submitTransactionAsync(bob, whiteListDisabledFlip);
164 expectedFlipValue = !expectedFlipValue;
165 const afterWhiteListDisabled = await getFlipValue(contract,deployer);
166 expect(afterWhiteListDisabled).to.be.eq(expectedFlipValue, `Anyone can call contract with disabled whitelist.`);
167
168 });
169 });
17041
171 it('Can initialize contract instance', async () => {42 it('Can initialize contract instance', async () => {
172 await usingApi(async (api) => {43 await usingApi(async (api) => {
178 });49 });
179 });50 });
18051
181 it.skip('Can transfer balance using smart contract.', async () => {52 it('Can transfer NFT using smart contract.', async () => {
182 await usingApi(async api => {53 await usingApi(async api => {
183 // const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);54 const alice = privateKey("//Alice");
184 // const wasm = fs.readFileSync('./src/balance-transfer-contract/calls.wasm');55 const bob = privateKey("//Bob");
185 // const contract = compactAddLength(u8aToU8a(wasm));56
18657 // Prep work
187 // const metadata = JSON.parse(fs.readFileSync('./src/balance-transfer-contract/metadata.json').toString('utf-8'));58 const collectionId = await createCollectionExpectSuccess();
188 // const abi = new Abi(api.registry as any, metadata);59 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
18960 const [contract, deployer] = await deployTransferContract(api);
190 // const alicesPrivateKey = privateKey('//Alice');61 const tokenBefore: any = await api.query.nft.nftItemList(collectionId, tokenId);
19162
192 // const contractHash = await deployContract(api, contract, alicesPrivateKey);63 // Transfer
19364 const transferTx = contract.tx.transfer(value, gasLimit, bob.address, collectionId, tokenId, 1);
194 // // const args = abi.constructors[0]();65 const events = await submitTransactionAsync(alice, transferTx);
195 // const instanceAccountId = await instantiateContract(api, contractHash, /*args,*/ alicesPrivateKey);66 const result = getGenericResult(events);
196 // const contractInstance = new ContractPromise(api, abi, instanceAccountId);67 const tokenAfter: any = await api.query.nft.nftItemList(collectionId, tokenId);
197 // const bob = new GenericAccountId(api.registry, bobsPublicKey);68
19869 // tslint:disable-next-line:no-unused-expression
199 // const transfer = contractInstance.exec('balance_transfer', 0, 1000000000000n, [bob, new u128(api.registry, 1000000)]);70 expect(result.success).to.be.true;
200 // await submitTransactionAsync(alicesPrivateKey, transfer);71 expect(tokenBefore.Owner.toString()).to.be.equal(alice.address);
20172 expect(tokenAfter.Owner.toString()).to.be.equal(bob.address);
202 // const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
203
204 // expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;
205 // expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;
206 });73 });
207 });74 });
208});75});
modifiedtests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth
9import { alicesPublicKey, bobsPublicKey } from "./accounts";9import { alicesPublicKey, bobsPublicKey } from "./accounts";
10import privateKey from "./substrate/privateKey";10import privateKey from "./substrate/privateKey";
11import { BigNumber } from 'bignumber.js';11import { BigNumber } from 'bignumber.js';
12import { IKeyringPair } from '@polkadot/types/types';
12import { createCollectionExpectSuccess, getGenericResult } from './util/helpers';13import {
14 createCollectionExpectSuccess,
15 createItemExpectSuccess,
16 getGenericResult,
17 transferExpectSuccess
18} from './util/helpers';
1319
14chai.use(chaiAsPromised);20chai.use(chaiAsPromised);
15const expect = chai.expect;21const expect = chai.expect;
1622
17const Treasury = "5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z";23const Treasury = "5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z";
18const saneMinimumFee = 0.0001;24const saneMinimumFee = 0.05;
19const saneMaximumFee = 0.01;25const saneMaximumFee = 0.5;
26
27let alice: IKeyringPair;
28let bob: IKeyringPair;
2029
21describe('integration test: Fees must be credited to Treasury:', () => {30describe('integration test: Fees must be credited to Treasury:', () => {
31 before(async () => {
32 await usingApi(async (api) => {
33 alice = privateKey('//Alice');
34 bob = privateKey('//Bob');
35 });
36 });
37
22 it('Total issuance does not change', async () => {38 it('Total issuance does not change', async () => {
23 await usingApi(async (api) => {39 await usingApi(async (api) => {
102 const fee = aliceBalanceBefore.minus(aliceBalanceAfter);118 const fee = aliceBalanceBefore.minus(aliceBalanceAfter);
103 const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);119 const treasuryIncrease = treasuryBalanceAfter.minus(treasuryBalanceBefore);
104120
105 expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(0.01);121 expect(fee.dividedBy(1e15).toNumber()).to.be.lessThan(saneMaximumFee);
106 expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(0.0001);122 expect(fee.dividedBy(1e15).toNumber()).to.be.greaterThan(saneMinimumFee);
107 });123 });
108 });124 });
125
126 it('NFT Transfer fee is close to 0.1 Unique', async () => {
127 await usingApi(async (api) => {
128 const collectionId = await createCollectionExpectSuccess();
129 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
130
131 const aliceBalanceBefore = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
132 await transferExpectSuccess(collectionId, tokenId, alice, bob, 1, 'NFT');
133 const aliceBalanceAfter = new BigNumber((await api.query.system.account(alicesPublicKey)).data.free.toString());
134 const fee = aliceBalanceBefore.minus(aliceBalanceAfter);
135
136 // console.log(fee.toString());
137 const expectedTransferFee = 0.1;
138 const tolerance = 0.00001;
139 expect(fee.dividedBy(1e15).minus(expectedTransferFee).abs().toNumber()).to.be.lessThan(tolerance);
140 });
141 });
109142
110});143});
111144
modifiedtests/src/flipper/flipper.wasmdiffbeforeafterboth

binary blob — no preview

modifiedtests/src/flipper/metadata.jsondiffbeforeafterboth
1{1{
2 "metadataVersion": "0.1.0",2 "metadataVersion": "0.1.0",
3 "source": {3 "source": {
4 "hash": "0x36431d9da78a6bb099474e49c9e35a9c3a04272b58815634082626109826cac6",4 "hash": "0x5b02ceadaacee8408d3c6496394847092c099bcb897221dbe8d22c16d372fa17",
5 "language": "ink! 3.0.0-rc1",5 "language": "ink! 3.0.0-rc2",
6 "compiler": "rustc 1.49.0-nightly"6 "compiler": "rustc 1.51.0-nightly"
7 },7 },
8 "contract": {8 "contract": {
9 "name": "flipper",9 "name": "flipper",
10 "version": "3.0.0-rc1",10 "version": "0.1.0",
11 "authors": [11 "authors": [
12 "Parity Technologies <admin@parity.io>"12 "[your_name] <[your_email]>"
13 ]13 ]
14 },14 },
15 "spec": {15 "spec": {
27 }27 }
28 ],28 ],
29 "docs": [29 "docs": [
30 " Creates a new flipper smart contract initialized with the given value."30 " Constructor that initializes the `bool` value to the given `init_value`."
31 ],31 ],
32 "name": [32 "name": [
33 "new"33 "new"
37 {37 {
38 "args": [],38 "args": [],
39 "docs": [39 "docs": [
40 " Creates a new flipper smart contract initialized to `false`."40 " Constructor that initializes the `bool` value to `false`.",
41 "",
42 " Constructors can delegate to other constructors."
41 ],43 ],
42 "name": [44 "name": [
43 "default"45 "default"
51 {53 {
52 "args": [],54 "args": [],
53 "docs": [55 "docs": [
54 " Flips the current value of the Flipper's bool."56 " A message that can be called on instantiated contracts.",
57 " This one flips the value of the stored `bool` from `true`",
58 " to `false` and vice versa."
55 ],59 ],
56 "mutates": true,60 "mutates": true,
57 "name": [61 "name": [
64 {68 {
65 "args": [],69 "args": [],
66 "docs": [70 "docs": [
67 " Returns the current value of the Flipper's bool."71 " Simply returns the current value of our `bool`."
68 ],72 ],
69 "mutates": false,73 "mutates": false,
70 "name": [74 "name": [
addedtests/src/setConstOnChainSchema.test.tsdiffbeforeafterboth

no changes

addedtests/src/setPublicAccessMode.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/setSchemaVersion.test.tsdiffbeforeafterboth
9898
99 it('execute setSchemaVersion with not correct schema version', async () => {99 it('execute setSchemaVersion with not correct schema version', async () => {
100 await usingApi(async (api: ApiPromise) => {100 await usingApi(async (api: ApiPromise) => {
101 const consoleError = console.error;
102 console.error = (message: string) => {};
101 try {103 try {
102 tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Test');104 tx = api.tx.nft.setSchemaVersion(collectionIdForTesting, 'Test');
103 await submitTransactionAsync(alice, tx);105 await submitTransactionAsync(alice, tx);
104 } catch (e) {106 } catch (e) {
105 // tslint:disable-next-line:no-unused-expression107 // tslint:disable-next-line:no-unused-expression
106 expect(e).to.be.exist;108 expect(e).to.be.exist;
107 }109 } finally {
110 console.error = consoleError;
111 }
108 });112 });
109 });113 });
110114
addedtests/src/setVariableMetaData.test.tsdiffbeforeafterboth

no changes

addedtests/src/setVariableOnChainSchema.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/substrate/get-balance.tsdiffbeforeafterboth
3// file 'LICENSE', which is part of this source code package.3// file 'LICENSE', which is part of this source code package.
4//4//
55
6import { ApiPromise } from "@polkadot/api";6import { ApiPromise } from '@polkadot/api';
7import promisifySubstrate from "./promisify-substrate";7import {AccountInfo} from '@polkadot/types/interfaces/system';
8import {AccountInfo} from "@polkadot/types/interfaces/system";8import promisifySubstrate from './promisify-substrate';
99
10export default async function getBalance(api: ApiPromise, accounts: string[]): Promise<bigint[]> {10export default async function getBalance(api: ApiPromise, accounts: string[]): Promise<Array<bigint>> {
11 const balance = promisifySubstrate(api, (accounts: string[]) => api.query.system.account.multi(accounts));11 const balance = promisifySubstrate(api, (acc: string[]) => api.query.system.account.multi(acc));
12 const responce = await balance(accounts) as unknown as AccountInfo[];12 const responce = await balance(accounts) as unknown as AccountInfo[];
13 return responce.map(r => r.data.free.toBigInt().valueOf());13 return responce.map((r) => r.data.free.toBigInt().valueOf());
14}14}
1515
modifiedtests/src/substrate/promisify-substrate.tsdiffbeforeafterboth
3// file 'LICENSE', which is part of this source code package.3// file 'LICENSE', which is part of this source code package.
4//4//
55
6import ApiPromise from "@polkadot/api/promise/Api";6import { ApiPromise } from "@polkadot/api";
77
8type PromiseType<T> = T extends PromiseLike<infer TInner> ? TInner : T;8type PromiseType<T> = T extends PromiseLike<infer TInner> ? TInner : T;
99
modifiedtests/src/substrate/substrate-api.tsdiffbeforeafterboth
4//4//
55
6import { 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';7import { EventRecord } from '@polkadot/types/interfaces/system/types';
8import { ExtrinsicStatus } from '@polkadot/types/interfaces/author/types';
8import { IKeyringPair } from "@polkadot/types/types";9import { IKeyringPair } from "@polkadot/types/types";
910
10import config from "../config";11import config from "../config";
21 settings = settings || defaultApiOptions();22 settings = settings || defaultApiOptions();
22 let api: ApiPromise = new ApiPromise(settings);23 let api: ApiPromise = new ApiPromise(settings);
24
25 // TODO: Remove, this is temporary: Filter unneeded API output
26 // (Jaco promised it will be removed in the next version)
27 const consoleLog = console.log;
28 console.log = (message: string) => {
29 if (message.includes("API/INIT: Capabilities detected") || message.includes("2021-")) {}
30 else if (message.includes("StorageChangeSet:: WebSocket is not connected") || message.includes("2021-")) {}
31 else consoleLog(message);
32 };
33 const consoleErr = console.error;
34 console.error = (message: string) => {
35 if (message.includes("StorageChangeSet:: WebSocket is not connected") || message.includes("2021-")) {}
36 else consoleErr(message);
37 };
2338
24 try {39 try {
25 await promisifySubstrate(api, async () => {40 await promisifySubstrate(api, async () => {
30 })();45 })();
31 } finally {46 } finally {
32 await api.disconnect();47 await api.disconnect();
48 console.log = consoleLog;
49 console.error = consoleErr;
33 }50 }
34}51}
3552
6077
61export function submitTransactionAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {78export function
79submitTransactionAsync(sender: IKeyringPair, transaction: SubmittableExtrinsic<ApiTypes>): Promise<EventRecord[]> {
62 return new Promise(async function(resolve, reject) {80 return new Promise(async (resolve, reject) => {
63 try {81 try {
64 await transaction.signAndSend(sender, ({ events = [], status }) => {82 await transaction.signAndSend(sender, ({ events = [], status }) => {
65 const transactionStatus = getTransactionStatus(events, status);83 const transactionStatus = getTransactionStatus(events, status);
6684
67 if (transactionStatus == TransactionStatus.Success) {85 if (transactionStatus === TransactionStatus.Success) {
68 resolve(events);86 resolve(events);
69 } else if (transactionStatus == TransactionStatus.Fail) {87 } else if (transactionStatus === TransactionStatus.Fail) {
70 console.log(`Something went wrong with transaction. Status: ${status}`);88 console.log(`Something went wrong with transaction. Status: ${status}`);
71 reject(events);89 reject(events);
72 }90 }
73 });91 });
74 } catch (e) {92 } catch (e) {
75 console.log("Error: ", e);93 console.log('Error: ', e);
76 reject(e);94 reject(e);
77 }95 }
78 });96 });
103 await transaction.signAndSend(sender, ({ events = [], status }) => {121 await transaction.signAndSend(sender, ({ events = [], status }) => {
104 const transactionStatus = getTransactionStatus(events, status);122 const transactionStatus = getTransactionStatus(events, status);
123
124 // console.log('transactionStatus', transactionStatus, 'events', events);
125
105 if (transactionStatus === TransactionStatus.Success) {126 if (transactionStatus === TransactionStatus.Success) {
106 resolve(events);127 resolve(events);
addedtests/src/toggleContractWhiteList.test.tsdiffbeforeafterboth

no changes

modifiedtests/src/transfer.test.tsdiffbeforeafterboth
3// file 'LICENSE', which is part of this source code package.3// file 'LICENSE', which is part of this source code package.
4//4//
55
6import { expect, assert } from "chai";6import { ApiPromise } from '@polkadot/api';
7import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";7import { IKeyringPair } from '@polkadot/types/types';
8import { expect } from 'chai';
8import { alicesPublicKey, bobsPublicKey, ferdiesPublicKey } from "./accounts";9import { alicesPublicKey, bobsPublicKey } from './accounts';
9import privateKey from "./substrate/privateKey";10import getBalance from './substrate/get-balance';
10import getBalance from "./substrate/get-balance";11import privateKey from './substrate/privateKey';
11import { BigNumber } from 'bignumber.js';12import { default as usingApi, submitTransactionAsync } from './substrate/substrate-api';
12import { findUnusedAddress } from './util/helpers'13import {
14 burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess,
15 destroyCollectionExpectSuccess,
16 findUnusedAddress,
17 getCreateCollectionResult,
18 getCreateItemResult,
19 transferExpectFail,
20 transferExpectSuccess,
21} from './util/helpers';
22
23let Alice: IKeyringPair;
24let Bob: IKeyringPair;
25let Charlie: IKeyringPair;
1326
14describe('Transfer', () => {27describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {
15 it('Balance transfers', async () => {28 it('Balance transfers and check balance', async () => {
16 await usingApi(async api => {29 await usingApi(async (api: ApiPromise) => {
17 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);30 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
1831
19 const alicePrivateKey = privateKey('//Alice');32 const alicePrivateKey = privateKey('//Alice');
20 33
21 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);34 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);
22 const result = await submitTransactionAsync(alicePrivateKey, transfer);35 const events = await submitTransactionAsync(alicePrivateKey, transfer);
36 const result = getCreateItemResult(events);
37 // tslint:disable-next-line:no-unused-expression
38 expect(result.success).to.be.true;
2339
24 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);40 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
2541
42 // tslint:disable-next-line:no-unused-expression
26 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;43 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;
44 // tslint:disable-next-line:no-unused-expression
27 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;45 expect(bobsBalanceAfter > bobsBalanceBefore).to.be.true;
28 });46 });
29 });47 });
3048
31 it('Inability to pay fees error message is correct', async () => {49 it('Inability to pay fees error message is correct', async () => {
32 await usingApi(async api => {50 await usingApi(async (api) => {
33 // Find unused address51 // Find unused address
34 const pk = await findUnusedAddress(api);52 const pk = await findUnusedAddress(api);
3553
36 const error = console.error;
37 const log = console.log;
38 console.log = function () {};
39 console.error = function () {};
40
41 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);54 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);
55 // const events = await submitTransactionAsync(pk, badTransfer);
42 const badTransaction = async function () { 56 const badTransaction = async () => {
43 const result = await submitTransactionAsync(pk, badTransfer);57 const events = await submitTransactionAsync(pk, badTransfer);
58 const result = getCreateCollectionResult(events);
59 // tslint:disable-next-line:no-unused-expression
60 expect(result.success).to.be.false;
44 };61 };
45 await expect(badTransaction()).to.be.rejectedWith("Inability to pay some fees");62 expect(badTransaction()).to.be.rejectedWith('Inability to pay some fees , e.g. account balance too low');
46
47 console.log = log;
48 console.error = error;
49 });63 });
50 });64 });
65
66 it('Create collection, balance transfers and check balance', async () => {
67 await usingApi(async (api) => {
68 const Alice = privateKey('//Alice');
69 const Bob = privateKey('//Bob');
70 // nft
71 const nftCollectionId = await createCollectionExpectSuccess();
72 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
73 await transferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');
74 // fungible
75 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
76 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
77 await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
78 // reFungible
79 const reFungibleCollectionId = await
80 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
81 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
82 await transferExpectSuccess(reFungibleCollectionId,
83 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');
84 });
85 });
51});86});
87
88describe('Negative Integration Test Transfer(recipient, collection_id, item_id, value)', () => {
89 before(async () => {
90 await usingApi(async (api: ApiPromise) => {
91 Alice = privateKey('//Alice');
92 Bob = privateKey('//Bob');
93 Charlie = privateKey('//Charlie');
94 });
95 });
96 it('Transfer with not existed collection_id', async () => {
97 await usingApi(async (api) => {
98 // nft
99 const nftCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
100 await transferExpectFail(nftCollectionCount + 1, 1, Alice, Bob, 1);
101 // fungible
102 const fungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
103 await transferExpectFail(fungibleCollectionCount + 1, 1, Alice, Bob, 1);
104 // reFungible
105 const reFungibleCollectionCount = await api.query.nft.createdCollectionCount() as unknown as number;
106 await transferExpectFail(reFungibleCollectionCount + 1, 1, Alice, Bob, 1);
107 });
108 });
109 it('Transfer with deleted collection_id', async () => {
110 // nft
111 const nftCollectionId = await createCollectionExpectSuccess();
112 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
113 await destroyCollectionExpectSuccess(nftCollectionId);
114 await transferExpectFail(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');
115 // fungible
116 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
117 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
118 await destroyCollectionExpectSuccess(fungibleCollectionId);
119 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
120 // reFungible
121 const reFungibleCollectionId = await
122 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
123 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
124 await destroyCollectionExpectSuccess(reFungibleCollectionId);
125 await transferExpectFail(reFungibleCollectionId,
126 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');
127 });
128 it('Transfer with not existed item_id', async () => {
129 // nft
130 const nftCollectionId = await createCollectionExpectSuccess();
131 await transferExpectFail(nftCollectionId, 2, Alice, Bob, 1, 'NFT');
132 // fungible
133 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
134 await transferExpectFail(fungibleCollectionId, 2, Alice, Bob, 1, 'Fungible');
135 // reFungible
136 const reFungibleCollectionId = await
137 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
138 await transferExpectFail(reFungibleCollectionId,
139 2, Alice, Bob, 1, 'ReFungible');
140 });
141 it('Transfer with deleted item_id', async () => {
142 // nft
143 const nftCollectionId = await createCollectionExpectSuccess();
144 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
145 await burnItemExpectSuccess(Alice, nftCollectionId, newNftTokenId, 1);
146 await transferExpectFail(nftCollectionId, newNftTokenId, Alice, Bob, 1, 'NFT');
147 // fungible
148 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
149 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
150 await burnItemExpectSuccess(Alice, fungibleCollectionId, newFungibleTokenId, 10);
151 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Alice, Bob, 1, 'Fungible');
152 // reFungible
153 const reFungibleCollectionId = await
154 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
155 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
156 await burnItemExpectSuccess(Alice, reFungibleCollectionId, newReFungibleTokenId, 1);
157 await transferExpectFail(reFungibleCollectionId,
158 newReFungibleTokenId, Alice, Bob, 1, 'ReFungible');
159 });
160 it('Transfer with recipient that is not owner', async () => {
161 // nft
162 const nftCollectionId = await createCollectionExpectSuccess();
163 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
164 await transferExpectFail(nftCollectionId, newNftTokenId, Charlie, Bob, 1, 'NFT');
165 // fungible
166 const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
167 const newFungibleTokenId = await createItemExpectSuccess(Alice, fungibleCollectionId, 'Fungible');
168 await transferExpectFail(fungibleCollectionId, newFungibleTokenId, Charlie, Bob, 1, 'Fungible');
169 // reFungible
170 const reFungibleCollectionId = await
171 createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});
172 const newReFungibleTokenId = await createItemExpectSuccess(Alice, reFungibleCollectionId, 'ReFungible');
173 await transferExpectFail(reFungibleCollectionId,
174 newReFungibleTokenId, Charlie, Bob, 1, 'ReFungible');
175 });
176});
52177
addedtests/src/transfer_contract/metadata.jsondiffbeforeafterboth

no changes

addedtests/src/transfer_contract/nft_transfer.wasmdiffbeforeafterboth

binary blob — no preview

addedtests/src/util/contracthelpers.tsdiffbeforeafterboth

no changes

modifiedtests/src/util/helpers.tsdiffbeforeafterboth
253 return unused;253 return unused;
254}254}
255
256export async function findNotExistingCollection(api: ApiPromise): Promise<number> {
257 const totalNumber = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10) as unknown as number;
258 const newCollection: number = totalNumber + 1;
259 return newCollection;
260}
255261
256function getDestroyResult(events: EventRecord[]): boolean {262function getDestroyResult(events: EventRecord[]): boolean {
257 let success: boolean = false;263 let success: boolean = false;
378 });384 });
379}385}
386
387export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
388 await usingApi(async (api) => {
389 const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
390 const events = await submitTransactionAsync(sender, tx);
391 const result = getGenericResult(events);
392
393 expect(result.success).to.be.true;
394 });
395}
396
397export async function setVariableMetaDataExpectFailure(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
398 await usingApi(async (api) => {
399 const tx = api.tx.nft.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
400 await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
401 });
402}
380403
381export interface CreateFungibleData extends Struct {404export interface CreateFungibleData extends Struct {
382 readonly value: u128;405 readonly value: u128;
391 ReFungible: CreateReFungibleData;414 ReFungible: CreateReFungibleData;
392}415}
416
417export async function burnItemExpectSuccess(owner: IKeyringPair, collectionId: number, tokenId: number, value = 0) {
418 await usingApi(async (api) => {
419 const tx = api.tx.nft.burnItem(collectionId, tokenId, value);
420 const events = await submitTransactionAsync(owner, tx);
421 const result = getGenericResult(events);
422 // Get the item
423 const item: any = (await api.query.nft.nftItemList(collectionId, tokenId)).toJSON();
424 // What to expect
425 // tslint:disable-next-line:no-unused-expression
426 expect(result.success).to.be.true;
427 // tslint:disable-next-line:no-unused-expression
428 expect(item).to.be.not.null;
429 expect(item.Owner).to.be.equal(nullPublicKey);
430 });
431}
393432
394export async function433export async function
395approveExpectSuccess(collectionId: number,434approveExpectSuccess(collectionId: number,
461 });500 });
462}501}
502
503export async function
504transferExpectSuccess(collectionId: number,
505 tokenId: number,
506 sender: IKeyringPair,
507 recipient: IKeyringPair,
508 value: number = 1,
509 type: string = 'NFT') {
510 await usingApi(async (api: ApiPromise) => {
511 let balanceBefore = new BN(0);
512 if (type === 'Fungible') {
513 balanceBefore = await api.query.nft.balance(collectionId, recipient.address) as unknown as BN;
514 }
515 const transferTx = await api.tx.nft.transfer(recipient.address, collectionId, tokenId, value);
516 const events = await submitTransactionAsync(sender, transferTx);
517 const result = getCreateItemResult(events);
518 // tslint:disable-next-line:no-unused-expression
519 expect(result.success).to.be.true;
520 if (type === 'NFT') {
521 const nftItemData = await api.query.nft.nftItemList(collectionId, tokenId) as unknown as ITokenDataType;
522 expect(nftItemData.Owner.toString()).to.be.equal(recipient.address);
523 }
524 if (type === 'Fungible') {
525 const balanceAfter = await api.query.nft.balance(collectionId, recipient.address) as unknown as BN;
526 expect(balanceAfter.sub(balanceBefore).toNumber()).to.be.equal(value);
527 }
528 if (type === 'ReFungible') {
529 const nftItemData =
530 await api.query.nft.reFungibleItemList(collectionId, tokenId) as unknown as IReFungibleTokenDataType;
531 expect(nftItemData.Owner[0].Owner.toString()).to.be.equal(recipient.address);
532 expect(nftItemData.Owner[0].Fraction.toNumber()).to.be.equal(value);
533 }
534 });
535}
536
537export async function
538transferExpectFail(collectionId: number,
539 tokenId: number,
540 sender: IKeyringPair,
541 recipient: IKeyringPair,
542 value: number = 1,
543 type: string = 'NFT') {
544 await usingApi(async (api: ApiPromise) => {
545 const transferTx = await api.tx.nft.transfer(recipient.address, collectionId, tokenId, value);
546 const events = await expect(submitTransactionExpectFailAsync(sender, transferTx)).to.be.rejected;
547 if (events && Array.isArray(events)) {
548 const result = getCreateCollectionResult(events);
549 // tslint:disable-next-line:no-unused-expression
550 expect(result.success).to.be.false;
551 }
552 });
553}
463554
464export async function555export async function
465approveExpectFail(collectionId: number,556approveExpectFail(collectionId: number,
525 const collection: any = (await api.query.nft.collection(collectionId)).toJSON();617 const collection: any = (await api.query.nft.collection(collectionId)).toJSON();
526618
527 // What to expect619 // What to expect
620 // tslint:disable-next-line:no-unused-expression
528 expect(result.success).to.be.true;621 expect(result.success).to.be.true;
529 expect(collection.Access).to.be.equal('WhiteList');622 expect(collection.Access).to.be.equal('WhiteList');
530 });623 });
550export async function addToWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number, address: string) {643export async function addToWhiteListExpectSuccess(sender: IKeyringPair, collectionId: number, address: string) {
551 await usingApi(async (api) => {644 await usingApi(async (api) => {
645
646 const whiteListedBefore = (await api.query.nft.whiteList(collectionId, address)).toJSON();
552647
553 // Run the transaction648 // Run the transaction
554 const tx = api.tx.nft.addToWhiteList(collectionId, address);649 const tx = api.tx.nft.addToWhiteList(collectionId, address);
555 const events = await submitTransactionAsync(sender, tx);650 const events = await submitTransactionAsync(sender, tx);
556 const result = getGenericResult(events);651 const result = getGenericResult(events);
557652
558 // Get the collection
559 const collection: any = (await api.query.nft.collection(collectionId)).toJSON();653 const whiteListedAfter = (await api.query.nft.whiteList(collectionId, address)).toJSON();
560654
561 // What to expect655 // What to expect
656 // tslint:disable-next-line:no-unused-expression
562 expect(result.success).to.be.true;657 expect(result.success).to.be.true;
658 // tslint:disable-next-line: no-unused-expression
659 expect(whiteListedBefore).to.be.false;
660 // tslint:disable-next-line: no-unused-expression
563 expect(collection.MintMode).to.be.equal(true);661 expect(whiteListedAfter).to.be.true;
564 });662 });
565}663}
566664
addedtests/yarn.lockdiffbeforeafterboth

no changes