diff --git a/Cargo.lock b/Cargo.lock index 3de78d5f..2927d1ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,24 +10,24 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ "getrandom", "once_cell", @@ -36,9 +36,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -75,9 +75,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" [[package]] name = "arrayvec" @@ -87,9 +87,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii" @@ -120,12 +120,11 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.1.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 4.0.3", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -133,15 +132,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.8.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ - "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", + "fastrand", + "futures-lite", "slab", ] @@ -151,91 +149,62 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.1.1", + "async-channel 2.3.1", "async-executor", - "async-io 2.3.1", - "async-lock 3.3.0", + "async-io", + "async-lock", "blocking", - "futures-lite 2.2.0", + "futures-lite", "once_cell", "tokio", ] [[package]] name = "async-io" -version = "1.13.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if 1.0.0", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - -[[package]] -name = "async-io" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" -dependencies = [ - "async-lock 3.3.0", + "async-lock", "cfg-if 1.0.0", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite", "parking", - "polling 3.3.2", - "rustix 0.38.30", + "polling", + "rustix", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "async-lock" -version = "2.8.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 2.5.3", -] - -[[package]] -name = "async-lock" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" -dependencies = [ - "event-listener 4.0.3", + "event-listener 5.3.1", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-std" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" dependencies = [ "async-attributes", "async-channel 1.9.0", "async-global-executor", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io", + "async-lock", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite 1.13.0", + "futures-lite", "gloo-timers", "kv-log-macro", "log", @@ -266,24 +235,24 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] @@ -314,23 +283,23 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -384,26 +353,17 @@ checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bigdecimal" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9324c8014cd04590682b34f1e9448d38f0674d0f7b2dc553331016ef0e4e9ebc" +checksum = "51d712318a27c7150326677b321a5fa91b55f6d9034ffd67f20319e147d40cee" dependencies = [ "autocfg", "libm", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "num-traits", ] -[[package]] -name = "bip39-dict" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f1d227703899f704884cb6dfe1dc6a1bd447ea9f91418539989618ebf01685" -dependencies = [ - "cryptoxide", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -412,15 +372,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitmaps" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703642b98a00b3b90513279a8ede3fcfa479c126c5fb46e78f3051522f021403" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" [[package]] name = "bitvec" @@ -454,25 +414,22 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel 2.1.1", - "async-lock 3.3.0", + "async-channel 2.3.1", "async-task", - "fastrand 2.0.1", "futures-io", - "futures-lite 2.2.0", + "futures-lite", "piper", - "tracing", ] [[package]] name = "borsh" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ "borsh-derive", "cfg_aliases", @@ -480,29 +437,29 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", "syn_derive", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecheck" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -511,9 +468,9 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ "proc-macro2", "quote", @@ -528,24 +485,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" - -[[package]] -name = "cardano-net" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e272ed83035e509fa204c1cf59833c9384cbd4d15d4e303a5abd529b1bd024" -dependencies = [ - "cardano-sdk", - "cbored", - "cryptoxide", - "thiserror", - "tokio", - "tracing", - "trust-dns-resolver", -] +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cardano-projected-nft" @@ -563,22 +505,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "cardano-sdk" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67795439ca871ba2b0d67f7805248f00fd0e6f6b40014a07a9693568e9c54a6" -dependencies = [ - "bech32 0.9.1", - "bip39-dict", - "cbored", - "cryptoxide", - "ed25519-bip32", - "hex", - "strum 0.24.1", - "thiserror", -] - [[package]] name = "carp" version = "3.2.1" @@ -586,10 +512,10 @@ dependencies = [ "anyhow", "async-trait", "clap 3.2.25", - "cml-chain 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-crypto 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-multi-era 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "cml-multi-era 6.0.1", "ctrlc", "dcspark-blockchain-source", "dcspark-core", @@ -619,9 +545,6 @@ name = "cbored" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54198fe95600b062b9f0129b871b8e8df90b33a41cf2ccbae64b4ae08dbba9c1" -dependencies = [ - "cbored-derive", -] [[package]] name = "cbored-derive" @@ -636,11 +559,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ - "libc", + "shlex", ] [[package]] @@ -657,9 +580,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" @@ -673,7 +596,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -711,7 +634,7 @@ dependencies = [ "once_cell", "strsim 0.10.0", "termcolor", - "textwrap 0.16.0", + "textwrap 0.16.1", ] [[package]] @@ -753,8 +676,8 @@ dependencies = [ "hex", "itertools 0.10.5", "linked-hash-map", - "num 0.4.1", - "num-bigint 0.4.4", + "num 0.4.3", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -768,15 +691,14 @@ dependencies = [ [[package]] name = "cml-chain" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605a5a1575d671db789ab33c164f736839b9fa5de9d0f648836d1bb34092fe5f" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" dependencies = [ "base64 0.21.7", "bech32 0.7.3", "cbor_event", "chrono", - "cml-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-crypto 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-core 6.0.0", + "cml-crypto 6.0.0", "derivative", "fraction", "getrandom", @@ -784,8 +706,8 @@ dependencies = [ "itertools 0.10.5", "linked-hash-map", "noop_proc_macro", - "num 0.4.1", - "num-bigint 0.4.4", + "num 0.4.3", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -798,15 +720,15 @@ dependencies = [ [[package]] name = "cml-chain" -version = "6.0.0" -source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +version = "6.0.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "base64 0.21.7", "bech32 0.7.3", "cbor_event", "chrono", - "cml-core 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", - "cml-crypto 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", + "cml-core 6.0.1", + "cml-crypto 6.0.1", "derivative", "fraction", "getrandom", @@ -814,8 +736,8 @@ dependencies = [ "itertools 0.10.5", "linked-hash-map", "noop_proc_macro", - "num 0.4.1", - "num-bigint 0.4.4", + "num 0.4.3", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -842,7 +764,7 @@ dependencies = [ "hex", "itertools 0.10.5", "linked-hash-map", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -855,8 +777,7 @@ dependencies = [ [[package]] name = "cml-core" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1cf45a88631c16cd21860eca5f1088f90a55d94b2258a0b1019eb70194a0823" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" dependencies = [ "base64 0.13.1", "bech32 0.7.3", @@ -868,7 +789,7 @@ dependencies = [ "hex", "itertools 0.10.5", "linked-hash-map", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -879,8 +800,8 @@ dependencies = [ [[package]] name = "cml-core" -version = "6.0.0" -source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +version = "6.0.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "base64 0.13.1", "bech32 0.7.3", @@ -892,7 +813,7 @@ dependencies = [ "hex", "itertools 0.10.5", "linked-hash-map", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -928,14 +849,13 @@ dependencies = [ [[package]] name = "cml-crypto" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa094ec958ee4cbce64abb85566e21dece2de05b1b32339d9914a9daf7f6e50a" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" dependencies = [ "base64 0.21.7", "bech32 0.7.3", "cbor_event", "cfg-if 1.0.0", - "cml-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-core 6.0.0", "cryptoxide", "derivative", "digest 0.9.0", @@ -951,14 +871,14 @@ dependencies = [ [[package]] name = "cml-crypto" -version = "6.0.0" -source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +version = "6.0.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "base64 0.21.7", "bech32 0.7.3", "cbor_event", "cfg-if 1.0.0", - "cml-core 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", + "cml-core 6.0.1", "cryptoxide", "derivative", "digest 0.9.0", @@ -975,14 +895,13 @@ dependencies = [ [[package]] name = "cml-multi-era" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ef3a16939a4f7d93eadd0f50feaa452f5da5dc94364517ec7216262b47d4fc" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" dependencies = [ "bech32 0.7.3", "cbor_event", - "cml-chain 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-crypto 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-chain 6.0.0", + "cml-core 6.0.0", + "cml-crypto 6.0.0", "derivative", "hex", "linked-hash-map", @@ -994,14 +913,14 @@ dependencies = [ [[package]] name = "cml-multi-era" -version = "6.0.0" -source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +version = "6.0.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "bech32 0.7.3", "cbor_event", - "cml-chain 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", - "cml-core 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", - "cml-crypto 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", "derivative", "hex", "linked-hash-map", @@ -1013,9 +932,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -1038,21 +957,21 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" +checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1089,9 +1008,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] @@ -1126,9 +1045,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" @@ -1139,8 +1058,8 @@ dependencies = [ "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio", - "parking_lot 0.12.1", + "mio 0.8.11", + "parking_lot 0.12.3", "signal-hook", "signal-hook-mio", "winapi", @@ -1183,39 +1102,32 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.2" +version = "3.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b467862cc8610ca6fc9a1532d7777cee0804e678ab45410897b9396495994a0b" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" dependencies = [ "nix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] -[[package]] -name = "data-encoding" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" - [[package]] name = "dcspark-blockchain-source" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=63105adc46478eea57340bcbfc5425ced0ba139f#63105adc46478eea57340bcbfc5425ced0ba139f" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "anyhow", "async-trait", - "cardano-net", - "cardano-sdk", "cbored", "cbored-derive", - "cml-chain 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", - "cml-core 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", - "cml-multi-era 6.0.0 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98)", + "cml-chain 6.0.0", + "cml-core 6.0.0", + "cml-multi-era 6.0.0", "cryptoxide", "dcspark-core", "deps", "hex", "multiverse", + "pallas-network", "serde", "thiserror", "tokio", @@ -1225,7 +1137,7 @@ dependencies = [ [[package]] name = "dcspark-core" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=63105adc46478eea57340bcbfc5425ced0ba139f#63105adc46478eea57340bcbfc5425ced0ba139f" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "anyhow", "async-trait", @@ -1242,7 +1154,7 @@ dependencies = [ [[package]] name = "deps" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=63105adc46478eea57340bcbfc5425ced0ba139f#63105adc46478eea57340bcbfc5425ced0ba139f" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "bigdecimal", "serde_json", @@ -1327,9 +1239,9 @@ checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "ed25519-bip32" @@ -1342,9 +1254,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "entity" @@ -1354,18 +1266,6 @@ dependencies = [ "serde", ] -[[package]] -name = "enum-as-inner" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "env_logger" version = "0.10.2" @@ -1387,9 +1287,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1403,9 +1303,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.3" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -1414,34 +1314,19 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 4.0.3", + "event-listener 5.3.1", "pin-project-lite", ] [[package]] name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - -[[package]] -name = "finl_unicode" -version = "1.2.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fnv" @@ -1545,26 +1430,11 @@ checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" -version = "1.13.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-lite" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" -dependencies = [ - "fastrand 2.0.1", + "fastrand", "futures-core", "futures-io", "parking", @@ -1579,7 +1449,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] @@ -1633,9 +1503,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -1652,20 +1522,20 @@ checksum = "b0e085ded9f1267c32176b40921b9754c474f7dd96f7e808d4a982e48aa1e854" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "gloo-timers" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ "futures-channel", "futures-core", @@ -1675,9 +1545,9 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbrown" @@ -1699,9 +1569,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashlink" @@ -1741,9 +1611,15 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.4" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hex" @@ -1769,17 +1645,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi", -] - [[package]] name = "humantime" version = "2.1.0" @@ -1788,9 +1653,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1809,17 +1674,6 @@ dependencies = [ "cc", ] -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.5.0" @@ -1864,19 +1718,19 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if 1.0.0", ] @@ -1891,43 +1745,14 @@ dependencies = [ "ghost", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.4", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "ipconfig" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" -dependencies = [ - "socket2 0.5.5", - "widestring", - "windows-sys 0.48.0", - "winreg", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - [[package]] name = "is-terminal" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.4", - "rustix 0.38.30", + "hermit-abi 0.4.0", + "libc", "windows-sys 0.52.0", ] @@ -1951,9 +1776,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" @@ -1975,15 +1800,15 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libm" @@ -1993,13 +1818,12 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "libc", - "redox_syscall 0.4.1", ] [[package]] @@ -2010,21 +1834,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2032,33 +1850,18 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "markdown-gen" version = "1.2.1" source = "git+https://github.com/dcSpark/markdown-gen-rs?branch=hbina-add-ability-to-write-raw-str#06342df71812111825ab8030b77fe8726e082252" -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.1.0" @@ -2068,12 +1871,6 @@ dependencies = [ "regex-automata 0.1.10", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "md-5" version = "0.10.6" @@ -2086,9 +1883,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "merge" @@ -2159,18 +1956,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", @@ -2178,6 +1975,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "mopa" version = "0.2.2" @@ -2187,7 +1996,7 @@ checksum = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" [[package]] name = "multiverse" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=63105adc46478eea57340bcbfc5425ced0ba139f#63105adc46478eea57340bcbfc5425ced0ba139f" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "dcspark-core", "deps", @@ -2216,12 +2025,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "cfg-if 1.0.0", + "cfg_aliases", "libc", ] @@ -2267,15 +2077,15 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint 0.4.4", - "num-complex 0.4.4", + "num-bigint 0.4.6", + "num-complex 0.4.6", "num-integer", "num-iter", - "num-rational 0.4.1", + "num-rational 0.4.2", "num-traits", ] @@ -2303,11 +2113,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -2324,9 +2133,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -2339,19 +2148,18 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -2372,40 +2180,29 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.4", - "libc", -] - [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -2418,9 +2215,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "os_str_bytes" @@ -2443,7 +2240,7 @@ dependencies = [ "merge", "net2", "pallas-addresses", - "pallas-codec 0.30.1", + "pallas-codec 0.30.2", "pallas-crypto", "pallas-miniprotocols", "pallas-multiplexer", @@ -2489,16 +2286,16 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pallas-addresses" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38fac39e0da3b0fc4c859635c72e97584f01f3a0f4f1508b0851c02d6d52f15" +checksum = "84460293bb3323066e9ce608702750c14f02bc36d41c469e44b3eef5ec0fdbf6" dependencies = [ "base58", "bech32 0.9.1", "crc 3.2.1", "cryptoxide", "hex", - "pallas-codec 0.30.1", + "pallas-codec 0.30.2", "pallas-crypto", "thiserror", ] @@ -2516,9 +2313,9 @@ dependencies = [ [[package]] name = "pallas-codec" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8a4b87dbc8bcb8aeb865f7cca5e1eb29744330e23b307169fc30537648b264" +checksum = "747279d1bc612986035619a3eaded8f9f4ceae29668aa7a5feae83681a0e93f4" dependencies = [ "hex", "minicbor 0.20.0", @@ -2528,13 +2325,13 @@ dependencies = [ [[package]] name = "pallas-crypto" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b98c3f204299d47d9b581ab425043789caff1f491c078ee3d3f109d6556f725" +checksum = "1b6f8b08e32c7dbb50302222701ae15ef9ac1a7cc39225ce29c253f6ddab2aa7" dependencies = [ "cryptoxide", "hex", - "pallas-codec 0.30.1", + "pallas-codec 0.30.2", "rand_core", "serde", "thiserror", @@ -2569,17 +2366,35 @@ dependencies = [ "tracing", ] +[[package]] +name = "pallas-network" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c081efb304917ec0025182e11295c6e1727b779888b83cc93d89533c71db50c" +dependencies = [ + "byteorder", + "hex", + "itertools 0.13.0", + "pallas-codec 0.30.2", + "pallas-crypto", + "rand", + "socket2", + "thiserror", + "tokio", + "tracing", +] + [[package]] name = "pallas-primitives" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f64835dd9cbdd75a38961a190b983f02746c872340daf1a921eada8c525a4b6" +checksum = "24929d461308626183d5bf15290e6315f4cc67fa38a1a66469425919683cceb2" dependencies = [ "base58", "bech32 0.9.1", "hex", "log", - "pallas-codec 0.30.1", + "pallas-codec 0.30.2", "pallas-crypto", "serde", "serde_json", @@ -2587,14 +2402,14 @@ dependencies = [ [[package]] name = "pallas-traverse" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad516b05ba7d838ee84f9998d7b2b4ff7acc178cb052bcfd5fea9edc2ef6023f" +checksum = "73ca94c2278a160c226d6f5bb1756ea5f355421158aaa697445f59f09477a6a4" dependencies = [ "hex", "itertools 0.13.0", "pallas-addresses", - "pallas-codec 0.30.1", + "pallas-codec 0.30.2", "pallas-crypto", "pallas-primitives", "paste", @@ -2604,9 +2419,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -2621,12 +2436,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -2645,22 +2460,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" @@ -2676,9 +2491,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2688,12 +2503,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand", "futures-io", ] @@ -2707,39 +2522,24 @@ dependencies = [ "strum 0.25.0", "strum_macros 0.25.3", "tasks", - "toml 0.8.8", + "toml 0.8.19", "tracing", "tracing-subscriber", ] [[package]] name = "polling" -version = "2.8.0" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ - "autocfg", - "bitflags 1.3.2", "cfg-if 1.0.0", "concurrent-queue", - "libc", - "log", + "hermit-abi 0.4.0", "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "polling" -version = "3.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" -dependencies = [ - "cfg-if 1.0.0", - "concurrent-queue", - "pin-project-lite", - "rustix 0.38.30", + "rustix", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2750,15 +2550,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ "toml_edit", ] @@ -2795,9 +2598,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2812,7 +2615,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "thiserror", ] @@ -2848,17 +2651,11 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2910,9 +2707,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -2939,18 +2736,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -2959,14 +2756,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.5", - "regex-syntax 0.8.2", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2980,13 +2777,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.4", ] [[package]] @@ -2997,15 +2794,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rend" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ "bytecheck", ] @@ -3015,10 +2812,10 @@ name = "reparse" version = "0.1.0" dependencies = [ "anyhow", - "cml-chain 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-crypto 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-multi-era 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "cml-multi-era 6.0.1", "dotenv", "entity", "futures", @@ -3029,16 +2826,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "resolv-conf" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" -dependencies = [ - "hostname", - "quick-error", -] - [[package]] name = "ring" version = "0.16.20" @@ -3056,9 +2843,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.43" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" dependencies = [ "bitvec", "bytecheck", @@ -3069,14 +2856,14 @@ dependencies = [ "rkyv_derive", "seahash", "tinyvec", - "uuid 1.7.0", + "uuid 1.10.0", ] [[package]] name = "rkyv_derive" -version = "0.7.43" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ "proc-macro2", "quote", @@ -3099,11 +2886,11 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.33.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "borsh", "bytes", "num-traits", @@ -3115,9 +2902,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" @@ -3130,28 +2917,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.30" +version = "0.38.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys", "windows-sys 0.52.0", ] @@ -3170,21 +2943,21 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "schemars_derive", @@ -3194,14 +2967,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -3369,9 +3142,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.196" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -3389,53 +3162,54 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] [[package]] name = "serde_yaml" -version = "0.9.31" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.5.0", "itoa", "ryu", "serde", @@ -3464,9 +3238,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -3501,6 +3275,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "shred" version = "0.12.0" @@ -3537,20 +3317,20 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", "signal-hook", ] [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -3588,28 +3368,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.4.10" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" -dependencies = [ - "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3787,13 +3557,13 @@ checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] [[package]] @@ -3813,9 +3583,6 @@ name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros 0.24.3", -] [[package]] name = "strum" @@ -3846,14 +3613,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3868,9 +3635,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -3886,7 +3653,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] @@ -3915,10 +3682,10 @@ dependencies = [ "anyhow", "cardano-projected-nft", "cfg-if 1.0.0", - "cml-chain 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-crypto 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cml-multi-era 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "cml-multi-era 6.0.1", "cryptoxide", "entity", "hex", @@ -3932,7 +3699,7 @@ dependencies = [ "serde_json", "shred", "tokio", - "toml 0.8.8", + "toml 0.8.19", "tracing", "tracing-subscriber", "urlencoding", @@ -3958,35 +3725,35 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if 1.0.0", "once_cell", @@ -4076,9 +3843,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -4091,32 +3858,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", - "parking_lot 0.12.1", + "mio 1.0.2", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] @@ -4132,9 +3898,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -4152,11 +3918,11 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -4165,20 +3931,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -4205,7 +3971,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.77", ] [[package]] @@ -4247,56 +4013,11 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "trust-dns-proto" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" -dependencies = [ - "async-trait", - "cfg-if 1.0.0", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", - "lazy_static", - "log", - "rand", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" -dependencies = [ - "cfg-if 1.0.0", - "futures-util", - "ipconfig", - "lazy_static", - "log", - "lru-cache", - "parking_lot 0.12.1", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "trust-dns-proto", -] - [[package]] name = "tynm" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc08441e69e42a4695d4dde68282419a9fc8379723aa7e51a67c52cedd992069" +checksum = "bd30d05e69d1478e13fe3e7a853409cfec82cebc2cf9b8d613b3c6b0081781ed" dependencies = [ "nom", ] @@ -4321,18 +4042,24 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524" + [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-truncate" @@ -4345,9 +4072,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode_categories" @@ -4357,9 +4084,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unsafe-libyaml" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "untrusted" @@ -4369,12 +4096,12 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", ] @@ -4396,9 +4123,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" [[package]] name = "valuable" @@ -4408,9 +4135,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126e423afe2dd9ac52142e7e9d5ce4135d7e13776c529d27fd6bc49f19e3280b" +checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" [[package]] name = "vec_map" @@ -4420,15 +4147,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" @@ -4436,6 +4157,12 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" version = "0.2.83" @@ -4535,20 +4262,15 @@ dependencies = [ [[package]] name = "whoami" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "wasm-bindgen", + "redox_syscall 0.5.3", + "wasite", "web-sys", ] -[[package]] -name = "widestring" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" - [[package]] name = "winapi" version = "0.3.9" @@ -4567,11 +4289,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4586,7 +4308,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -4604,7 +4326,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4624,17 +4355,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -4645,9 +4377,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4657,9 +4389,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4669,9 +4401,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4681,9 +4419,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4693,9 +4431,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4705,9 +4443,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4717,29 +4455,19 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.35" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931d78a9c73861da0134f453bb1f790ce49b2e30eba8410b4b79bac72b46a2d" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if 1.0.0", - "windows-sys 0.48.0", -] - [[package]] name = "wyz" version = "0.5.1" @@ -4757,3 +4485,24 @@ checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ "linked-hash-map", ] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] diff --git a/Cargo.toml b/Cargo.toml index f1e3faa4..8f91eaf6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,12 @@ members = [ [workspace.dependencies] -cml-chain = { version = "6.0.0" } -cml-core = { version = "6.0.0" } -cml-crypto = { version = "6.0.0" } -cml-multi-era = { version = "6.0.0" } +# cml-chain = { version = "6.0.0" } +# cml-core = { version = "6.0.0" } +# cml-crypto = { version = "6.0.0" } +# cml-multi-era = { version = "6.0.0" } + +cml-chain = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } +cml-core = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } +cml-crypto = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } +cml-multi-era = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } diff --git a/deployment/config/indexer/cardano_node_docker.mainnet.yml b/deployment/config/indexer/cardano_node_docker.mainnet.yml index f0f45eec..b58884d3 100644 --- a/deployment/config/indexer/cardano_node_docker.mainnet.yml +++ b/deployment/config/indexer/cardano_node_docker.mainnet.yml @@ -15,6 +15,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@postgres:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/deployment/config/indexer/oura_docker.mainnet.yml b/deployment/config/indexer/oura_docker.mainnet.yml index 6f7ce7fb..5a87b8e0 100644 --- a/deployment/config/indexer/oura_docker.mainnet.yml +++ b/deployment/config/indexer/oura_docker.mainnet.yml @@ -8,6 +8,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@postgres:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/docs/docs/indexer/run.md b/docs/docs/indexer/run.md index 30f0cb49..bfa3793a 100644 --- a/docs/docs/indexer/run.md +++ b/docs/docs/indexer/run.md @@ -22,7 +22,7 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: ``` diff --git a/indexer/Cargo.toml b/indexer/Cargo.toml index 474c72e0..ac94de25 100644 --- a/indexer/Cargo.toml +++ b/indexer/Cargo.toml @@ -9,9 +9,9 @@ strip = true [dependencies] # [core] -dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "63105adc46478eea57340bcbfc5425ced0ba139f" } -dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "63105adc46478eea57340bcbfc5425ced0ba139f" } -multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "63105adc46478eea57340bcbfc5425ced0ba139f" } +dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "986ad8495c3894782774e2db0fc3fe65f44ca89d" } +dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "986ad8495c3894782774e2db0fc3fe65f44ca89d" } +multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "986ad8495c3894782774e2db0fc3fe65f44ca89d" } # [local] entity = { path = "entity" } @@ -29,7 +29,6 @@ clap = { version = "3.1", features = ["derive"] } ctrlc = { version = "3.2.4", features = ["termination"] } dotenv = { version = "0.15.0" } hex = { version = "0.4.3" } -oura = { git = "https://github.com/txpipe/oura.git", rev = "e1b971394a394bde13fb601ad3f6d4ad343b02f0" } serde = { version = "1.0.152", features = ["derive", "rc"] } serde_json = { version = "1.0.92" } serde_yaml = { version = "0.9.17" } diff --git a/indexer/configs/cardano_node.yml b/indexer/configs/cardano_node.yml index e83d5e3a..413d6f12 100644 --- a/indexer/configs/cardano_node.yml +++ b/indexer/configs/cardano_node.yml @@ -13,6 +13,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/indexer/configs/custom.yml b/indexer/configs/custom.yml new file mode 100644 index 00000000..ee14d5ef --- /dev/null +++ b/indexer/configs/custom.yml @@ -0,0 +1,23 @@ +source: + type: cardano_net + relay: + - localhost + - 3001 + +sink: + type: cardano + db: + type: postgres + database_url: postgresql://carp:1234@localhost:5432/carp_custom5 + network: custom # preview / preprod / testnet / custom + genesis_folder: /home/user/Cardano/carp/indexer/genesis/ + custom_config: + chain_info: + network_id: 1 + protocol_magic: 42 + relay: + - "localhost" + - 3001 + +start_block: + diff --git a/indexer/configs/default.yml b/indexer/configs/default.yml index 4990df99..272c7321 100644 --- a/indexer/configs/default.yml +++ b/indexer/configs/default.yml @@ -8,6 +8,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/indexer/configs/oura.yml b/indexer/configs/oura.yml index 4990df99..272c7321 100644 --- a/indexer/configs/oura.yml +++ b/indexer/configs/oura.yml @@ -8,6 +8,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/indexer/entity/src/block.rs b/indexer/entity/src/block.rs index 7b04d664..6e34327e 100644 --- a/indexer/entity/src/block.rs +++ b/indexer/entity/src/block.rs @@ -69,3 +69,17 @@ impl TryFrom for EraValue { } } } + +impl EraValue { + pub fn to_str(&self) -> &'static str { + match self { + EraValue::Byron => "byron", + EraValue::Shelley => "shelley", + EraValue::Allegra => "allegra", + EraValue::Mary => "mary", + EraValue::Alonzo => "alonzo", + EraValue::Babbage => "babbage", + EraValue::Conway => "conway", + } + } +} diff --git a/indexer/entity/src/genesis.rs b/indexer/entity/src/genesis.rs new file mode 100644 index 00000000..1e0aa831 --- /dev/null +++ b/indexer/entity/src/genesis.rs @@ -0,0 +1,32 @@ +use sea_orm::entity::prelude::*; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Deserialize, Serialize)] +#[sea_orm(table_name = "Era")] +pub struct Model { + #[sea_orm(primary_key)] + pub era: i32, + pub block_id: i32, + pub block_height: i32, + pub first_slot: i64, + pub start_epoch: i64, + pub epoch_length_seconds: i64, +} + +#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::block::Entity", + from = "Column::BlockId", + to = "super::block::Column::Id" + )] + Block, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Block.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/indexer/entity/src/lib.rs b/indexer/entity/src/lib.rs index 136153ef..059a7d50 100644 --- a/indexer/entity/src/lib.rs +++ b/indexer/entity/src/lib.rs @@ -13,12 +13,12 @@ pub mod asset_mint; pub mod asset_utxos; pub mod cip25_entry; pub mod dex_swap; +pub mod genesis; pub mod governance_votes; pub mod native_asset; pub mod plutus_data; pub mod plutus_data_hash; pub mod projected_nft; -// todo: rename to pool? pub mod stake_delegation; pub mod stake_delegation_drep; pub mod transaction_metadata; diff --git a/indexer/entity/src/prelude.rs b/indexer/entity/src/prelude.rs index ee2e1a58..d33377be 100644 --- a/indexer/entity/src/prelude.rs +++ b/indexer/entity/src/prelude.rs @@ -27,6 +27,10 @@ pub use super::dex_swap::{ ActiveModel as DexSwapActiveModel, Column as DexSwapColumn, Entity as DexSwap, Model as DexSwapModel, PrimaryKey as DexSwapPrimaryKey, Relation as DexSwapRelation, }; +pub use super::genesis::{ + ActiveModel as GenesisActiveModel, Column as GenesisColumn, Entity as Genesis, + Model as GenesisModel, PrimaryKey as GenesisPrimaryKey, Relation as GenesisRelation, +}; pub use super::governance_votes::{ ActiveModel as GovernanceVoteActiveModel, Column as GovernanceVoteColumn, Entity as GovernanceVote, Model as GovernanceVoteModel, PrimaryKey as GovernanceVotePrimaryKey, diff --git a/indexer/execution_plans/default.toml b/indexer/execution_plans/default.toml index 0a08c3ca..d50b81c7 100644 --- a/indexer/execution_plans/default.toml +++ b/indexer/execution_plans/default.toml @@ -14,6 +14,8 @@ include_payload=false [GenesisTransactionTask] include_payload=true +[ShelleyGenesisBlockTask] + [ByronBlockTask] readonly=false include_payload=false diff --git a/indexer/genesis/mainnet-shelley-genesis.json b/indexer/genesis/mainnet-shelley-genesis.json new file mode 100644 index 00000000..e8cc20dc --- /dev/null +++ b/indexer/genesis/mainnet-shelley-genesis.json @@ -0,0 +1,68 @@ +{ + "activeSlotsCoeff": 0.05, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 2 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "genDelegs": { + "ad5463153dc3d24b9ff133e46136028bdc1edbb897f5a7cf1b37950c": { + "delegate": "d9e5c76ad5ee778960804094a389f0b546b5c2b140a62f8ec43ea54d", + "vrf": "64fa87e8b29a5b7bfbd6795677e3e878c505bc4a3649485d366b50abadec92d7" + }, + "b9547b8a57656539a8d9bc42c008e38d9c8bd9c8adbb1e73ad529497": { + "delegate": "855d6fc1e54274e331e34478eeac8d060b0b90c1f9e8a2b01167c048", + "vrf": "66d5167a1f426bd1adcc8bbf4b88c280d38c148d135cb41e3f5a39f948ad7fcc" + }, + "60baee25cbc90047e83fd01e1e57dc0b06d3d0cb150d0ab40bbfead1": { + "delegate": "7f72a1826ae3b279782ab2bc582d0d2958de65bd86b2c4f82d8ba956", + "vrf": "c0546d9aa5740afd569d3c2d9c412595cd60822bb6d9a4e8ce6c43d12bd0f674" + }, + "f7b341c14cd58fca4195a9b278cce1ef402dc0e06deb77e543cd1757": { + "delegate": "69ae12f9e45c0c9122356c8e624b1fbbed6c22a2e3b4358cf0cb5011", + "vrf": "6394a632af51a32768a6f12dac3485d9c0712d0b54e3f389f355385762a478f2" + }, + "162f94554ac8c225383a2248c245659eda870eaa82d0ef25fc7dcd82": { + "delegate": "4485708022839a7b9b8b639a939c85ec0ed6999b5b6dc651b03c43f6", + "vrf": "aba81e764b71006c515986bf7b37a72fbb5554f78e6775f08e384dbd572a4b32" + }, + "2075a095b3c844a29c24317a94a643ab8e22d54a3a3a72a420260af6": { + "delegate": "6535db26347283990a252313a7903a45e3526ec25ddba381c071b25b", + "vrf": "fcaca997b8105bd860876348fc2c6e68b13607f9bbd23515cd2193b555d267af" + }, + "268cfc0b89e910ead22e0ade91493d8212f53f3e2164b2e4bef0819b": { + "delegate": "1d4f2e1fda43070d71bb22a5522f86943c7c18aeb4fa47a362c27e23", + "vrf": "63ef48bc5355f3e7973100c371d6a095251c80ceb40559f4750aa7014a6fb6db" + } + }, + "updateQuorum": 5, + "networkId": "Mainnet", + "initialFunds": {}, + "maxLovelaceSupply": 45000000000000000, + "networkMagic": 764824073, + "epochLength": 432000, + "systemStart": "2017-09-23T21:44:51Z", + "slotsPerKESPeriod": 129600, + "slotLength": 1, + "maxKESEvolutions": 62, + "securityParam": 2160 +} diff --git a/indexer/genesis/preprod-shelley-genesis.json b/indexer/genesis/preprod-shelley-genesis.json new file mode 100644 index 00000000..24862eb8 --- /dev/null +++ b/indexer/genesis/preprod-shelley-genesis.json @@ -0,0 +1,72 @@ +{ + "activeSlotsCoeff": 0.05, + "epochLength": 432000, + "genDelegs": { + "637f2e950b0fd8f8e3e811c5fbeb19e411e7a2bf37272b84b29c1a0b": { + "delegate": "aae9293510344ddd636364c2673e34e03e79e3eefa8dbaa70e326f7d", + "vrf": "227116365af2ed943f1a8b5e6557bfaa34996f1578eec667a5e2b361c51e4ce7" + }, + "8a4b77c4f534f8b8cc6f269e5ebb7ba77fa63a476e50e05e66d7051c": { + "delegate": "d15422b2e8b60e500a82a8f4ceaa98b04e55a0171d1125f6c58f8758", + "vrf": "0ada6c25d62db5e1e35d3df727635afa943b9e8a123ab83785e2281605b09ce2" + }, + "b00470cd193d67aac47c373602fccd4195aad3002c169b5570de1126": { + "delegate": "b3b539e9e7ed1b32fbf778bf2ebf0a6b9f980eac90ac86623d11881a", + "vrf": "0ff0ce9b820376e51c03b27877cd08f8ba40318f1a9f85a3db0b60dd03f71a7a" + }, + "b260ffdb6eba541fcf18601923457307647dce807851b9d19da133ab": { + "delegate": "7c64eb868b4ef566391a321c85323f41d2b95480d7ce56ad2abcb022", + "vrf": "7fb22abd39d550c9a022ec8104648a26240a9ff9c88b8b89a6e20d393c03098e" + }, + "ced1599fd821a39593e00592e5292bdc1437ae0f7af388ef5257344a": { + "delegate": "de7ca985023cf892f4de7f5f1d0a7181668884752d9ebb9e96c95059", + "vrf": "c301b7fc4d1b57fb60841bcec5e3d2db89602e5285801e522fce3790987b1124" + }, + "dd2a7d71a05bed11db61555ba4c658cb1ce06c8024193d064f2a66ae": { + "delegate": "1e113c218899ee7807f4028071d0e108fc790dade9fd1a0d0b0701ee", + "vrf": "faf2702aa4893c877c622ab22dfeaf1d0c8aab98b837fe2bf667314f0d043822" + }, + "f3b9e74f7d0f24d2314ea5dfbca94b65b2059d1ff94d97436b82d5b4": { + "delegate": "fd637b08cc379ef7b99c83b416458fcda8a01a606041779331008fb9", + "vrf": "37f2ea7c843a688159ddc2c38a2f997ab465150164a9136dca69564714b73268" + } + }, + "initialFunds": {}, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 1, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 2 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "securityParam": 2160, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": {}, + "stake": {} + }, + "systemStart": "2022-06-01T00:00:00Z", + "updateQuorum": 5 +} diff --git a/indexer/genesis/preview-shelley-genesis.json b/indexer/genesis/preview-shelley-genesis.json new file mode 100644 index 00000000..20abba3f --- /dev/null +++ b/indexer/genesis/preview-shelley-genesis.json @@ -0,0 +1,68 @@ +{ + "activeSlotsCoeff": 0.05, + "epochLength": 86400, + "genDelegs": { + "12b0f443d02861948a0fce9541916b014e8402984c7b83ad70a834ce": { + "delegate": "7c54a168c731f2f44ced620f3cca7c2bd90731cab223d5167aa994e6", + "vrf": "62d546a35e1be66a2b06e29558ef33f4222f1c466adbb59b52d800964d4e60ec" + }, + "3df542796a64e399b60c74acfbdb5afa1e114532fa36b46d6368ef3a": { + "delegate": "c44bc2f3cc7e98c0f227aa399e4035c33c0d775a0985875fff488e20", + "vrf": "4f9d334decadff6eba258b2df8ae1f02580a2628bce47ae7d957e1acd3f42a3c" + }, + "93fd5083ff20e7ab5570948831730073143bea5a5d5539852ed45889": { + "delegate": "82a02922f10105566b70366b07c758c8134fa91b3d8ae697dfa5e8e0", + "vrf": "8a57e94a9b4c65ec575f35d41edb1df399fa30fdf10775389f5d1ef670ca3f9f" + }, + "a86cab3ea72eabb2e8aafbbf4abbd2ba5bdfd04eea26a39b126a78e4": { + "delegate": "10257f6d3bae913514bdc96c9170b3166bf6838cca95736b0e418426", + "vrf": "1b54aad6b013145a0fc74bb5c2aa368ebaf3999e88637d78e09706d0cc29874a" + }, + "b799804a28885bd49c0e1b99d8b3b26de0fac17a5cf651ecf0c872f0": { + "delegate": "ebe606e22d932d51be2c1ce87e7d7e4c9a7d1f7df4a5535c29e23d22", + "vrf": "b3fc06a1f8ee69ff23185d9af453503be8b15b2652e1f9fb7c3ded6797a2d6f9" + }, + "d125812d6ab973a2c152a0525b7fd32d36ff13555a427966a9cac9b1": { + "delegate": "e302198135fb5b00bfe0b9b5623426f7cf03179ab7ba75f945d5b79b", + "vrf": "b45ca2ed95f92248fa0322ce1fc9f815a5a5aa2f21f1adc2c42c4dccfc7ba631" + }, + "ef27651990a26449a40767d5e06cdef1670a3f3ff4b951d385b51787": { + "delegate": "0e0b11e80d958732e587585d30978d683a061831d1b753878f549d05", + "vrf": "b860ec844f6cd476c4fabb4aa1ca72d5c74d82f3835aed3c9515a35b6e048719" + } + }, + "initialFunds": {}, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 2, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 6 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "securityParam": 432, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "systemStart": "2022-10-25T00:00:00Z", + "updateQuorum": 5 +} diff --git a/indexer/genesis/sanchonet-shelley-genesis.json b/indexer/genesis/sanchonet-shelley-genesis.json new file mode 100644 index 00000000..54458599 --- /dev/null +++ b/indexer/genesis/sanchonet-shelley-genesis.json @@ -0,0 +1,56 @@ +{ + "activeSlotsCoeff": 5.0e-2, + "epochLength": 86400, + "genDelegs": { + "c1ad22cabb342cbb83ce3859708232f4945ccb669e9b5f932cffc0ed": { + "delegate": "405357b552c397e81f73dcb5a0da0828fe29610bd25197d86130df34", + "vrf": "458215df6c07abc66e80082caa7a189dc2f4995ad4b4b5f09481a55d8d0692d2" + }, + "c264bca994a3a5deee5a1d9b92a3d7e9d6cbdb81f2f6989bb7f7b437": { + "delegate": "d9d9d0f0e1f25c4af4d80cb2d62878b611d8b3a8e1ef548d01f246d7", + "vrf": "624f1bf3b2f978e0c95644f26228b307d7acca7fc7eb3d88fb6f107e0aa1198c" + }, + "d4bf7eb45b72dffa5ac33d5c902fe409e4e611f2e9a52fb0d09784c3": { + "delegate": "806eb0c17d9b0fe6d99acbabe7be76ef72bf9de96c5b58435e50837f", + "vrf": "57e52289207a7128c29e0b7e96a02c731a961a5944329b363bed751ad8f377ee" + } + }, + "initialFunds": {}, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 4, + "protocolParams": { + "a0": 0.3, + "decentralisationParam": 1.0, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "keyDeposit": 2000000, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "maxTxSize": 16384, + "minFeeA": 44, + "minFeeB": 155381, + "minPoolCost": 340000000, + "minUTxOValue": 1000000, + "nOpt": 150, + "poolDeposit": 500000000, + "protocolVersion": { + "major": 6, + "minor": 0 + }, + "rho": 3.0e-3, + "tau": 0.2 + }, + "securityParam": 432, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": {}, + "stake": {} + }, + "systemStart": "2023-06-15T00:30:00Z", + "updateQuorum": 3 +} \ No newline at end of file diff --git a/indexer/genesis/test-byron-genesis.json b/indexer/genesis/test-byron-genesis.json new file mode 100644 index 00000000..74d18498 --- /dev/null +++ b/indexer/genesis/test-byron-genesis.json @@ -0,0 +1,94 @@ +{ + "bootStakeholders": { + "05d1c10e4bf3cdd4de54712531c53be75a1609b25f396ffbbe5becf1": 1, + "3bf1193b19be416283b8c0516d2f8b80939ffccb1c9b05946f54c83a": 1, + "7bdd769bd872e8e6336c23f1e566c19a96e72137174b891fad9f4b99": 1, + "9ddc1e29c59df0ddd9347fe8b8a736d247f286414684eddc02885348": 1, + "a118c0d2737c8a77c0d982a0d299bc42614cea4e0c23614ba24a05ca": 1, + "b0b2df3c9cf4dfe2ae04409913b3c3125509acbbfa0722449570aaeb": 1, + "e0a65f21229e44c2bf6eec5b14e2775003b674ae53de18d22814346a": 1 + }, + "heavyDelegation": { + "05d1c10e4bf3cdd4de54712531c53be75a1609b25f396ffbbe5becf1": { + "omega": 0, + "issuerPk": "UFsjehyxQAIMxEL25RxqD0itM0RCdzWprVt1W+zopM5b7U9ru9AMr/zf9lAjWaFlNOpRgrrbz7r5tRbt8wUmSg==", + "delegatePk": "iwlg0jS9pn1SQyxdGiasor+1uaCflm2Vkqe/DHKKHs2EDqxcP+in7doCSnQDttN3BZkIKLNUgzKj+FAiHCCYvw==", + "cert": "633fc347138ee155d038b9d1040ee1e45cea5b1e8627046c95f7fe4ba949b0569437962568eadef9d49e22becbf30192425c008d10e03004612633dbc307340b" + }, + "3bf1193b19be416283b8c0516d2f8b80939ffccb1c9b05946f54c83a": { + "omega": 0, + "issuerPk": "pAIACMG6WCa4mz0tVoeekLXYuWkdxk/rgDuZ/x7ugh3CvEuhpGf2LRRRWilaGdraH1sCbnuMCmAHrBTbPDFmxA==", + "delegatePk": "0ajebKqP2bF1xZhi7N1avNBHe4S4Kg5S+uzGs8hRAKR1IW/7ZOp0U3AhQFuzKLD3BuSq1xV3leMWeBzKEg2slg==", + "cert": "eb5c4d76c7bfca2ab790a76f7dc4c6d9f7d0956d4af3b8c649804ef98beeb138d8916982c9142747b7a07e69f52b2c3776d64a7d74494e0f72eefaebf6bf5d07" + }, + "7bdd769bd872e8e6336c23f1e566c19a96e72137174b891fad9f4b99": { + "omega": 0, + "issuerPk": "P7JjeSPHjexNW5MsCaySrURaqV2gCgXttEe0CgfFnVZFGHaS9A4xEUrQ83VTLPjk+HV0Di19DjQ+DhS1M6Mf7A==", + "delegatePk": "jvMgwt9mVKYYjEXpxjnApoa/WoZSlVh9OZ3+sF/nSrZ5YaaWsmjIvOyTcrxzqpsTZewAez36BTnqwA0VSjFRjA==", + "cert": "9ef9f0e5ca23cd9365ec7a23f1b2d159da0d58e0242cb817c3bc946ba1c9e3629f1976f09a88370247bbc458c810d21a889e3ff6dd189ceea784bc9ab6dc9b0a" + }, + "9ddc1e29c59df0ddd9347fe8b8a736d247f286414684eddc02885348": { + "omega": 0, + "issuerPk": "Xro6BbV6hMh3RTZnst4ABhtQ2vr83YPXoLfQ8JWeunvvcuudGBQvLeqwVfGXrBWoMOOKroFV48ygfSEq2xhREA==", + "delegatePk": "mq5iXU0VvLNzPUIOBk8c0zjzhuCvBJ/NQrRVpp0orTZkg9F3uiuAG0E24NZmLl6eCiTyyAoOeNTCNbTAjyAfTA==", + "cert": "939dcfe5555ee661b9db5d817a70d5c3fa9d1d97c2ae5849696d915606b530f7e9edda5d02a01e61524a766f9c356084616ba058a3de70ea51bf29cd187a5f07" + }, + "a118c0d2737c8a77c0d982a0d299bc42614cea4e0c23614ba24a05ca": { + "omega": 0, + "issuerPk": "eqAAtu1X79MxCSa/i/RSApLGsnhDYqLJLu93f3wSzR5/M7calZS8DHFrAtJgzYbkg9nwKF1HQQ8bO/1LOJ9O4w==", + "delegatePk": "lCuzqqsPZEK5BrZbpt2/eWnKpmLZCWiSYhGj1WUy8R2OjLStw/UDT7xiV/pbEIZoncfQJN9yJqpQH8KOui0fYw==", + "cert": "b96ad354a6989df5de8d0888414843736d0a4a6626a1e595e8785a70b10a38eb4632159aabf84959983e8852fd4d390eba6c423fac8ea117913cec46353bd90e" + }, + "b0b2df3c9cf4dfe2ae04409913b3c3125509acbbfa0722449570aaeb": { + "omega": 0, + "issuerPk": "Y+Vaj0IaMeq0+oWjQr5hiEl4Ek+cWsKq7mufTO4wue2R6A6AMlqEDIV7vYsd3NZWomG5DGcwSAw2Ev1Mz26LIA==", + "delegatePk": "YYtiXfMN5TiV/ynno3cNylbC/wZtSqBaaXGQXe7O9tu33RDqH5F15Sk+reyXvxaxZ683mns+1K8DLNB7mezB6g==", + "cert": "ca38e688e759183b57d08ca6568248b91c8ddd81e56d0d31c3f3a26eca35754387c5f301ef017dafae453a93757d39a0e2d326ebe59cf31d5c1b22fc8616ac00" + }, + "e0a65f21229e44c2bf6eec5b14e2775003b674ae53de18d22814346a": { + "omega": 0, + "issuerPk": "vynbl3q/BFvwehgMzpp3NoWOuN5RwDUYCbNop0RR0jlEXomgPOrlXCwMTrwrI8Dcfzq5q1fK/1hOfv9IwDMPAA==", + "delegatePk": "1N1ppBBxvC3I5kqX9L1jeVJM4MK2ZXKAQ6Bn400+IYr4mh4zTYciCsTJTyvY8IKIBBEcT3GYW6ZlaYy7XbY5kg==", + "cert": "82b10bbea2dd80441315230354e3e4af0ac87d02c9e6424fc9432be21a6183c81555d3a1b373566aef7a8065a126d57c42629be780becc61bc1b8f3ce5b5170d" + } + }, + "startTime": 1654041600, + "nonAvvmBalances": { + "FHnt4NL7yPXhCzCHVywZLqVsvwuG3HvwmjKXQJBrXh3h2aigv6uxkePbpzRNV8q": "0", + "FHnt4NL7yPXuJGViM3KwSPwrwECD9q5vNetX3QJDYRWgiX3RHi5i5VV32dnETDK": "0", + "FHnt4NL7yPXuYUxBF33VX5dZMBDAab2kvSNLRzCskvuKNCSDknzrQvKeQhGUw5a": "30000000000000000", + "FHnt4NL7yPY8exfnuJ8ACyoU7xCN93tKXSv357UrTp1nddGbkWxJpQfrt62xYFX": "0", + "FHnt4NL7yPYFpVcAXZADrKdsqCAFvcRFYkTcqkn2guGmj8akQMiMVjhSUECvD1F": "0", + "FHnt4NL7yPYH2vP2FLEfH2pt3K6meM7fgtjRiLBidaqpP5ogPzxLNsZy68e1KdW": "0", + "FHnt4NL7yPYHrcxPtPufYYFWLhqvHGnZ5NFSz2KZpWQgSq4VLsUgWnkEmfUtd1E": "0", + "FHnt4NL7yPYJiN5Y8VsQr6LP6YgN51BHBPegNjVwKkq6AooCkbTpfZ2bqkVkfXU": "0" + }, + "blockVersionData": { + "scriptVersion": 0, + "slotDuration": "20000", + "maxBlockSize": "2000000", + "maxHeaderSize": "2000000", + "maxTxSize": "4096", + "maxProposalSize": "700", + "mpcThd": "20000000000000", + "heavyDelThd": "300000000000", + "updateVoteThd": "1000000000000", + "updateProposalThd": "100000000000000", + "updateImplicit": "10000", + "softforkRule": { + "initThd": "900000000000000", + "minThd": "600000000000000", + "thdDecrement": "50000000000000" + }, + "txFeePolicy": { + "summand": "155381000000000", + "multiplier": "43946000000" + }, + "unlockStakeEpoch": "18446744073709551615" + }, + "protocolConsts": { + "k": 2160, + "protocolMagic": 1 + }, + "avvmDistr": {} +} diff --git a/indexer/genesis/test-shelley-genesis.json b/indexer/genesis/test-shelley-genesis.json new file mode 100644 index 00000000..aa71a7f4 --- /dev/null +++ b/indexer/genesis/test-shelley-genesis.json @@ -0,0 +1,116 @@ +{ + "activeSlotsCoeff": 0.05, + "epochLength": 432000, + "genDelegs": { + "637f2e950b0fd8f8e3e811c5fbeb19e411e7a2bf37272b84b29c1a0b": { + "delegate": "aae9293510344ddd636364c2673e34e03e79e3eefa8dbaa70e326f7d", + "vrf": "227116365af2ed943f1a8b5e6557bfaa34996f1578eec667a5e2b361c51e4ce7" + }, + "8a4b77c4f534f8b8cc6f269e5ebb7ba77fa63a476e50e05e66d7051c": { + "delegate": "d15422b2e8b60e500a82a8f4ceaa98b04e55a0171d1125f6c58f8758", + "vrf": "0ada6c25d62db5e1e35d3df727635afa943b9e8a123ab83785e2281605b09ce2" + }, + "b00470cd193d67aac47c373602fccd4195aad3002c169b5570de1126": { + "delegate": "b3b539e9e7ed1b32fbf778bf2ebf0a6b9f980eac90ac86623d11881a", + "vrf": "0ff0ce9b820376e51c03b27877cd08f8ba40318f1a9f85a3db0b60dd03f71a7a" + }, + "b260ffdb6eba541fcf18601923457307647dce807851b9d19da133ab": { + "delegate": "7c64eb868b4ef566391a321c85323f41d2b95480d7ce56ad2abcb022", + "vrf": "7fb22abd39d550c9a022ec8104648a26240a9ff9c88b8b89a6e20d393c03098e" + }, + "ced1599fd821a39593e00592e5292bdc1437ae0f7af388ef5257344a": { + "delegate": "de7ca985023cf892f4de7f5f1d0a7181668884752d9ebb9e96c95059", + "vrf": "c301b7fc4d1b57fb60841bcec5e3d2db89602e5285801e522fce3790987b1124" + }, + "dd2a7d71a05bed11db61555ba4c658cb1ce06c8024193d064f2a66ae": { + "delegate": "1e113c218899ee7807f4028071d0e108fc790dade9fd1a0d0b0701ee", + "vrf": "faf2702aa4893c877c622ab22dfeaf1d0c8aab98b837fe2bf667314f0d043822" + }, + "f3b9e74f7d0f24d2314ea5dfbca94b65b2059d1ff94d97436b82d5b4": { + "delegate": "fd637b08cc379ef7b99c83b416458fcda8a01a606041779331008fb9", + "vrf": "37f2ea7c843a688159ddc2c38a2f997ab465150164a9136dca69564714b73268" + } + }, + "initialFunds": { + "007290ea8fa9433c1045a4c8473959ad608e6c03a58c7de33bdbd3ce6f295b987135610616f3c74e11c94d77b6ced5ccc93a7d719cfb135062": 300000000000, + "605276322ac7882434173dcc6441905f6737689bd309b68ad8b3614fd8": 3000000000000000, + "60a0f1aa7dca95017c11e7e373aebcf0c4568cf47ec12b94f8eb5bba8b": 3000000000000000, + "60ba957a0fff6816021b2afa7900beea68fd10f2d78fb5b64de0d2379c": 3000000000000000, + "00c8c47610a36034aac6fc58848bdae5c278d994ff502c05455e3b3ee8f8ed3a0eea0ef835ffa7bbfcde55f7fe9d2cc5d55ea62cecb42bab3c": 10000000000, + "004048ff89ca4f88e66598e620aa0c7128c2145d9a181ae9a4a81ca8e3e849af38840c5562dd382be37c9e76545c8191f9d8f6df1d20cfcee0": 10000000000, + "00ca6e1b1f320d543a24adeabc0aa4627635c7349b639f86f74bdfdd78d31b28c9619a58b3792a7394ab85deb36889c4d7b0632c8167b855d2": 10000000000, + "0007d781fe8e33883e371f9550c2f1087321fc32e06e80b65e349ccb027702d6880e86e77a0520efa37ede45002a1de43b68692e175b742e67": 10000000000, + "00627b2598dd71129167825160c564067d1d245e79cc237094815c5cb2b125e30ec2f4ce4059a069e08c3cd82cdfc9451bfb22487f8a25ceef": 10000000000, + "00c6cf7bd50f37f7e4cc161fc00f07e9b2226ba5552ccaf30d315fa0135bbc8cbd9ab5379f368fc8d3500c37a9d14074cc6ddad89e3686f0e0": 10000000000, + "005164ab186715c86378020956d892cf72f67636b78967d67cfe7360479130dc89cf7a9bc89109f939956b66f93293ade4c3920b72fd40beea": 10000000000, + "003dd38742e9848c6f12c13ddb1f9464fc0ce0bb92102768087975317e5a9f869fcd913562c9b0e0f01f77e5359ea780d37f9355f9702eff8b": 10000000000, + "0088e7e670b45cab2322b518ef7b6f66d30aec0d923dc463e467091a790f67796b9fa71224f2846cebbcf4950c11e040ee124d30f6e164bcd5": 10000000000, + "00c70b8421617802d3f23956cab1957e1d306cd4808589b41760e97927ebfd6053ba12b38288b2b6d5d4c4618d6a8ce59d50580e9c6f704af5": 10000000000, + "00c0933b8238f6f3332e48c34cf1a8e0555943b33cd4abc53aefb7d6124b7ce40dd496bdc02b34602f3a773ff7cccee873991e4c8866f3a70b": 10000000000, + "0069f7d7289de2f01cd1e0265ac5be943b41775abae0ce6b3eac0edee0ce9cadb7cdec2bded3ef8a7bbe3352869bfc1387754c9ee6b1782d9c": 10000000000, + "00709a7070005c652c27df73dbbde3319a90b127bea96aded1c5fb87a59c51dbcf90fa890174497f3f66a0dad06eb7f131e06567995e9c50a5": 10000000000, + "00fc576df3a279885a7a4d0fc500372daa1d96f26c6763542ecd2ad8551753024adea37c134edebb68dc0cfaed5a7009e8305fe1fed8d0ccd1": 10000000000, + "003346a630e6972bf38cce87219db1d63061e7cd324cad88c18e504f2990cac68e973f51256ca938683fa4ea12173d7d047d940fbb883bd0e8": 10000000000, + "0028b862d001e6a64a02b3560cbc532eab4557593477c39cc523e0b9fc527100898c11e731194171b908aad463770d6cbf7ec8871c4cb1e518": 10000000000, + "005e0e57040b06e9d71e0f28f126262838a68db0b52b4fd1b3877dda2203d5d7d4f19c5ee3a1ed51bb670779de19d40aaff2e5e9468cc05c5e": 10000000000, + "00367f65ab69b1e6715c8d5a14964214c9505ed17032266b3209a2c40dcbae9a2a881e603ff39d36e987bacfb87ee98051f222c5fe3efd350c": 10000000000, + "00c5c4ca287f3b53948b5468e5e23b1c87fe61ce52c0d9afd65d070795038751a619d463e91eaed0a774ebdb2f8e12a01a378a153bc3627323": 10000000000, + "00ef198fb7c35e1968308a0b75cfee54a46e13e86dd3354283300831d624165c357b5a0413906a0bfea8ba57587331f0836a186d632ed041b8": 10000000000 + }, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 1, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 2 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "securityParam": 2160, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": { + "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57": { + "cost": 340000000, + "margin": 0, + "metadata": null, + "owners": [], + "pledge": 0, + "publicKey": "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57", + "relays": [], + "rewardAccount": { + "credential": { + "key hash": "11a14edf73b08a0a27cb98b2c57eb37c780df18fcfcf6785ed5df84a" + }, + "network": "Testnet" + }, + "vrf": "c2b62ffa92ad18ffc117ea3abeb161a68885000a466f9c71db5e4731d6630061" + } + }, + "stake": { + "295b987135610616f3c74e11c94d77b6ced5ccc93a7d719cfb135062": "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57" + } + }, + "systemStart": "2022-06-01T00:00:00Z", + "updateQuorum": 5 +} diff --git a/indexer/genesis/testnet-byron-genesis.json b/indexer/genesis/testnet-byron-genesis.json deleted file mode 100644 index 79fde9c2..00000000 --- a/indexer/genesis/testnet-byron-genesis.json +++ /dev/null @@ -1,481 +0,0 @@ -{ "bootStakeholders": - { "182822494f30b89a5cb9a6d845d9733a1831eb4e5ebc8faca89becc4": 1 - , "37ec19ad6c732dea93f8b39e0dcbef7d45044983d99195eb7034901c": 1 - , "3c1c3b43032f1f7a346cb8070c75474715ec8f1d301411a69def9ab2": 1 - , "6275f793595cae0761f13ecd054a0f01d0f57726ade0933e88a05749": 1 - , "9a804607ce670b2d5e60e9b4fdc54b99acf6d66837132e6bdc621ba5": 1 - , "9bfb38ba283fb3c8e552b440c17d0ef32725c39219565e9190454a57": 1 - , "e471e138c71dfff3d326b75548a1c518e694d13e85a3b0ae91df9941": 1 - } -, "heavyDelegation": - { "9bfb38ba283fb3c8e552b440c17d0ef32725c39219565e9190454a57": - { "omega": 0 - , "issuerPk": - "y1HSmrlOUNmhRNT0JlZM7HAN7k2ehXqs+R07aJN02B90KkUoGM8kicFt/Bhvbpx2t99AhFt8RQeF8C2ICXZ1dQ==" - , "delegatePk": - "fsJJ2JDQqvmoEgeWDBY64tasXnFcprltWGDlDZ8rKyodVo+qh8nMi/1DOjIkqW7F0QG0tunbAI24hX9JuuKUsg==" - , "cert": - "a304bf45b44fbccc78f54b9014a6b2d4354631ebff235aebb2e71a15bdd582be3794384c1ba713b99ef05766e92b8f438b2fc5af349f2bb16e85e3780aa84c07" - } - , "37ec19ad6c732dea93f8b39e0dcbef7d45044983d99195eb7034901c": - { "omega": 0 - , "issuerPk": - "nw+fw9f3biUiBZVS6H4G2vlAtFgaF5rsd/OQVmKkGGWv2lr820QVemFc7G/xmtOZ2bAyjcgrx/NRPUCRC3+TSg==" - , "delegatePk": - "MqlUtSHAsZUUQIllgx72g5Y33noaYWi8+EVcUEupO5yFNJi9rgYKb8mUXXIxrgjRMXq7szMGyTRl5e8RjuvHGA==" - , "cert": - "3fbff2edf71960355b30d89b946d4732c88e66dfb859bb143d2cd368b923cdf7d9bd22c4901cb47bade479a7c0eda08470cc9f3a2cb20c92b3a20974fc066900" - } - , "9a804607ce670b2d5e60e9b4fdc54b99acf6d66837132e6bdc621ba5": - { "omega": 0 - , "issuerPk": - "KedfHXp2SA8aETBEmrXZoOAUwJiFDKFSA3gq3rdWGoG7Mid0F0kSWzK3C6Y8QDIvRnao1lfZpXmghht8L0wCcg==" - , "delegatePk": - "52SwNA17NT9fdFiRAzd05L6raqFFilT/KaEyTAW7mHa1dM9ZKg+G/dH7+vvt3p4izpUiWy8RhRYpOszYygswFg==" - , "cert": - "06682af4df67b2037337187f9397bb8042e37308da1429ec9063e42480f9da60379d929f705140f05f1d014f19c668071824c0d86b616794e544d935e379c80e" - } - , "182822494f30b89a5cb9a6d845d9733a1831eb4e5ebc8faca89becc4": - { "omega": 0 - , "issuerPk": - "U6JXlR27xStIbWOjpfzqVVy5rp73La1i5znqNsI94+xYpOzGmlOVYiYF88N5OZ82wDBtl1UB9A+bWXNa0oCapg==" - , "delegatePk": - "5bwhqDYWvMz+ND7Da53EwGyQ6RPfHYoLBGAIZR9CyqlKrob7/cRYbavVR6fpLQdwLjMrzJ5911MjncgNAzxZwg==" - , "cert": - "d173106bfaab665a30e71633719754e0416927cfdadd6fbf7013590ddc9843083e18efcd08e4c7c366f4c4fff257177c87a502913f35bb1a07e45607c5d1fa0a" - } - , "e471e138c71dfff3d326b75548a1c518e694d13e85a3b0ae91df9941": - { "omega": 0 - , "issuerPk": - "HISQWQHTy1IdXEM7sTpZDNIQO0alFI++YFE6sAD5lN1BNDzTDSzDfUeaoAVWBvT/L5LcHdRzsjRgnPcOOm28gg==" - , "delegatePk": - "T011I+QeBYpsve+1U4ZU/8KlNBan9buZ9+rGmdQtXB8TdXbpwo6fFLPG4IIS8jjYbW4BrPJpf3teR9qWOSZeMQ==" - , "cert": - "018a7ee167602da08bf7d6903c37d2524ebe2a5daad83f9bf25f6011622932e72fc7c48027b9d4efaef521c911ec9eebaa38ddf88e6ae27c9bb823770fcd2600" - } - , "3c1c3b43032f1f7a346cb8070c75474715ec8f1d301411a69def9ab2": - { "omega": 0 - , "issuerPk": - "276WEVFXba36w7tXnsKxwUfACqTO4Dx+vvSVoOo4KUCqBgPahpnaCca9yjIPzWhVC6iyrHkZ570z7VjF2drNRA==" - , "delegatePk": - "c65B7KK+N/wVxVpQ1mjIZH4QvyIhcsLVir+m6TEOWWI/jyb47cHOj2mL1dyf6qMay8Nkv/b7gdND/zgm692NVQ==" - , "cert": - "b2c8e6ff8fc380c4a4c4e16f909803e786ccfbf4267e5016e24a34a843093b4d81736939500fb6fdd358d2be2b255858ea1abc35f62d381d6c62d111d1f0c80d" - } - , "6275f793595cae0761f13ecd054a0f01d0f57726ade0933e88a05749": - { "omega": 0 - , "issuerPk": - "bO9W1q+IRfMXlJvN/5I1jxOU/hG0XAKyjh1YVMD6E/jgeWRN/FBBr7D8vR9H7HzgZPN7fsXAcMeEpWGeuuKqYA==" - , "delegatePk": - "37YVphVo1oZ/RahcMiJ/JwJRgNc4qKPX/TySn2JNcjkpgBs0NkHxSAh7EX6H6WlfIV28+DD/DVigZmgsdgP2QQ==" - , "cert": - "a9c6e4abf95755084a86625a98e185de75d4d33d557284d3aa67ecff3dcfd8e77994fc8b3fc4c2762879ca0c15458ade936db0977ae10dd01291cf3241b9530e" - } - } -, "startTime": 1563999616 -, "vssCerts": - { "60214fff2df8faabc7da2dc99c07d2e3ade761b6bfe6a5a94b44c3dc": - { "vssKey": "WCECGkF8Ipu3QuaaTiSnA/wmf//wmVhFM2rIVUupnP9fdGM=" - , "expiryEpoch": 3 - , "signature": - "ff0972de56a180ae5a452680f7c6c464d07cd539804930b1d2f815b9a9bcc652c8d7adf875e4435ee116b16d194e35acfc752cc14c2e9c46bd00f74ec363a502" - , "signingKey": - "fsJJ2JDQqvmoEgeWDBY64tasXnFcprltWGDlDZ8rKyodVo+qh8nMi/1DOjIkqW7F0QG0tunbAI24hX9JuuKUsg==" - } - , "e0c9e75ffe8065e50563f9ec256c2b442a121d602c495cd305fb3cc4": - { "vssKey": "WCEDBRKTUNRUx1VFORWuoqqMSwPYKXgkeO2e+LTbc8jxm7U=" - , "expiryEpoch": 4 - , "signature": - "4d0aa42d1a15decec74c117b9b3e76178155c58ec373d2535005b4a3b0fae0ca4dd1c089b5272036f642aea27dc835e91de73d12fc25c027a8ef73991c139407" - , "signingKey": - "5bwhqDYWvMz+ND7Da53EwGyQ6RPfHYoLBGAIZR9CyqlKrob7/cRYbavVR6fpLQdwLjMrzJ5911MjncgNAzxZwg==" - } - , "fe299fde9afe6467393772f49e1f8d646d6788400c0acffdfb5eea24": - { "vssKey": "WCEDT9Z69y24Jbc4x/MlaC33mB/yaZ4ljIMNAfl9l7njWFE=" - , "expiryEpoch": 1 - , "signature": - "0efc47d2ed049a72896a4db314a3b00b31b849c753eaa2e3172337a8439a9160eba6bc164f57819df6580140fe3c7f52cec98161596c452d7ced3b0881638a09" - , "signingKey": - "MqlUtSHAsZUUQIllgx72g5Y33noaYWi8+EVcUEupO5yFNJi9rgYKb8mUXXIxrgjRMXq7szMGyTRl5e8RjuvHGA==" - } - , "837bd45aa9cdb656f538a4e46236ba9eb4c89890bc9191df096e30ba": - { "vssKey": "WCEDKi5sm8Wu7tUrjSehtCBsEMXSpX+h87zNRJcE4Mx/Nj4=" - , "expiryEpoch": 1 - , "signature": - "991e11c37f235c8c8d4aa846a564da38027f739f34ab97087ab436cce84d9297b2951455d5a8e2a562ab11db6a321c36d7498de3a1f776ad8eeb4dc5293b2b0f" - , "signingKey": - "52SwNA17NT9fdFiRAzd05L6raqFFilT/KaEyTAW7mHa1dM9ZKg+G/dH7+vvt3p4izpUiWy8RhRYpOszYygswFg==" - } - , "304889400de0859e03daea8bcf42779a14540b7c067f42f04ee1284e": - { "vssKey": "WCEDOgMx00aA40zA9oi0rN61TB6OxUcTvYq+8CyJjrObO3s=" - , "expiryEpoch": 5 - , "signature": - "10eca6d26d44eb52ed11ae633c410866bd6e01411ad64068331c7b8f92da9c8b9a7bed1772b6bf00910d322e659e23f2f867c4cf4e757cdbfbfb1fc97ba5a004" - , "signingKey": - "c65B7KK+N/wVxVpQ1mjIZH4QvyIhcsLVir+m6TEOWWI/jyb47cHOj2mL1dyf6qMay8Nkv/b7gdND/zgm692NVQ==" - } - , "73c89ad521f5786011201377e1ec8305e82aa985998f40307fa927d1": - { "vssKey": "WCEDLPG8x46r/wCR3hoHLeS+h/1Bu5x0MWXHDoJhM++fEfw=" - , "expiryEpoch": 2 - , "signature": - "98b48773afad287dbcd25915ee6b297b09d1204feb3a5793e91e438a1cce31a226f28b0c5b5ccdcde6a11f64665cbd867213cadbc57ec722c242def811f6e806" - , "signingKey": - "37YVphVo1oZ/RahcMiJ/JwJRgNc4qKPX/TySn2JNcjkpgBs0NkHxSAh7EX6H6WlfIV28+DD/DVigZmgsdgP2QQ==" - } - , "06216081b85063b2c7e33172b87663511fb7be35b23bc383881d60bc": - { "vssKey": "WCEDExIpntsz081SiKqeAg2o9W+wLy6lmD0dfp1sesQMj/E=" - , "expiryEpoch": 5 - , "signature": - "2b7fb3aab3a23d72cac699c4ef97d7f90ca4dd0b06c2413962b6430583b9814b6549806e90ecfd44da05819b655ff975797a6df23dde2aa1c625ab5079825f03" - , "signingKey": - "T011I+QeBYpsve+1U4ZU/8KlNBan9buZ9+rGmdQtXB8TdXbpwo6fFLPG4IIS8jjYbW4BrPJpf3teR9qWOSZeMQ==" - } - } -, "nonAvvmBalances": - { "2cWKMJemoBajGgvgVVziaKmUFa4LwJnAHffmuaSJBMDqethwJVQsyBsTSfFhp5jFpkVQM": - "5428571428571429" - , "37btjrVyb4KEg6anTcJ9E4EAvYtNV9xXL6LNpA15YLhgvm9zJ1D2jwme574HikZ36rKdTwaUmpEicCoL1bDw4CtH5PNcFnTRGQNaFd5ai6Wvo6CZsi": - "19999999999999" - , "37btjrVyb4KCRtni6YrG77RLPosnDqtEYoAD5xLdKYkWgnLqGa8yuXDUQd3psHrfxqaRcvNTsAW4ngUe6bzstbzSUJtwoaKbYaL8zjFAJJsZkQ42ti": - "19999999999999" - , "37btjrVyb4KGDMix4Uj5opvbMDgjZYUjeARAqTEFEbgLUH3qyju9gkBpcm2fVWgkcNgK3xFsQgWm1w8zxqvm9P6xJj9mHqLeMJPwDMUKUGPcDyUaDS": - "19999999999999" - , "37btjrVyb4KEkSeCVx985rXc38DCud2AW4LdasNmyoPLbtDGcDCyYVdf8BzxvDnzPehv4kyVBkzThjVEkSpGTv8PGQs4yRUgiCaKa7PTtBY4ohNGqR": - "19999999999999" - , "37btjrVyb4KFGS7upvgJHtmp7y7EFB67utzaHf7PM8y8U4tNkpmARNwiD7seN4NSAceHmj64KLGgh9qn1BpYF49NyWxocBHn1N533qBUYfhQar9ceu": - "19999999999999" - , "37btjrVyb4KCfir7GrvC6Y5kBNjeakZNd5po62AzQQ85SGkBB4QfXibC4fSNK5YvNeVgmPc8WbEeSUHRjoiqhJ4HDtinK2deBHSdCH6Cw8k2u92rdh": - "19999999999999" - , "37btjrVyb4KGAExHTQjLUHJBksSXGTomjgNsw8a4KepCgQYk4gxacKb84vGpPSv9Pjt3gdgMjA1nB67Pq3XyJpTDk8kLcXpJawCe6SCJf5jUowvAz8": - "19999999999999" - , "37btjrVyb4KCE1qeEoUh9b8CpcZcJ794Di14AxAELGoppJNVdB79nnuKcgRut566MdDkxTqravFaDSD9iwAvDByUHi59xocCY3ButEjmCQeLTLZXQ7": - "19999999999999" - , "37btjrVyb4KGGSGD8KgQD6qUBaSjxy5JRtsmMSHEGGAZqA29ULGwci8TcM16vBhywuBw54izQtpAqXeyUnbjh56hCgoqGZp9tHTMLLkEgLzwxVCZ4N": - "19999999999999" - , "37btjrVyb4KG5ZZfwwiQuhAGWiNJ2FhXP3oAuiq75qknCz4CZWNMVY4B9BmiHRHnWfhUbkLHUqfabCYASUk2V1qGuDw97x1gdf871aFY7Lpz3N1NvT": - "19999999999999" - , "37btjrVyb4KFtDHT2vDtMvQbLBgfH5hnpyVTTqqpPsieykukuxrDShHNccAEEj7M87UuV2GJ5pPA7YJ4JPjSokA99XaDgLmeaAumhZPHMwzg2Laspr": - "19999999999999" - , "37btjrVyb4KDHFyvvKb29RD53ebt6N8kpbL41J4VxWpiFC4FnxxybP33M9tBbdqfMXvSvyTQpv4dULXf5B838kEWXSJ24bpHtFgcbRkiHQwqWFQ5du": - "19999999999999" - , "37btjrVyb4KFh7jhHCtWxW942ceq7Xhxay8FZ7GkEBezGyFm3wJcVBGy1YYJDZ4Z7GbrFZmHLSe47zFs8Rjxk8rveoRpo1s43HXrMrhd4ijim4jJVP": - "19999999999999" - , "37btjrVyb4KFhYgC9Lr4Se7C1gL39d5WBVADyUyQZz2BfG4BZxczyW827JRQR5enyWaoj6NnA5NyKsheV6Eb7WvQtbN8D6116HTknHhEb5jh1yUU6Z": - "19999999999999" - , "37btjrVyb4KDLtM8HUJsBwergjZUj4DcMfkFmbV4bXUFGJk815o9nowX9ndPPVAeSNjAFYqJeFwTiMa9Ka8LqBnqFZgPpacyx9LrQLoXVMjvvLB7DK": - "19999999999999" - , "37btjrVyb4KDec7E64byKc4XjmmCRDaTGQYgHJTPDijZVr7NwZSP8g7ienzTLx5Z1quaQRhJqqAyV8Z2QdkzXvjTTRiVDCqps78uGp3uuth4wEJKP9": - "19999999999999" - , "37btjrVyb4KF5R1LEsaQgjWFWXwbgJ51naDEaCRG23KiAN3UtGzaT5PvUANtFBgjmcCtPLMBYMTGL4S8px4HyQMLAyF4fakYoFAJC3PkxCWMUatGWD": - "19999999999999" - , "37btjrVyb4KFB5Tmw1wsLmuv17Q6y8i6HGpVxbW8k4bevmob3DcdbH6jzrAtUrBpKgfTGgPMpLAbJcpaByGGJErkXQWFwrNMW35S79hxFvAN2GTXVQ": - "19999999999999" - , "37btjrVyb4KDEX2XToMQoi1No3YdREgZWzrf1xQPbfhbZTZnprFwDsRMiBxqUrA7p4BwjxXHDyqAccPwyX8iWWquz2CrLazJMR4s8AMz2US1D1ffJL": - "19999999999999" - , "37btjrVyb4KFTKCoqtZBdbh7LtJ9mRR1nbkX7ggP6a7AwvkSDxUN6U5GJWfuRXnL3a5x5e16uQwyjC6PoPVQ7VLdJXr8Kd3eFknLu6NDf2ey4AaJo2": - "19999999999999" - , "37btjrVyb4KCHCpiGd1J2GtVjP4KxEWP7RE6K6yxHzE97cbDgFD63fUFygbni8jKw1N37nGsT43KBvBn5w9ee8sVegr6Tg8fAr52mUkhdvTZYJV52T": - "19999999999999" - , "37btjrVyb4KGLRpX3uQfSeLovpMTcWfVZSM5RCufYvy2tyCMwrLXyHKCM9VqQh8dCQA6WcTrViaxqpvBSeKreHFL4CftfJU1z7CjHAze236NLesbL8": - "19999999999999" - , "37btjrVyb4KEdwV1MS3Pjek1HjLN2CSq3SJZGFBbZctkGLz569i9RWN15bAvCcZ8R5dgEi8iYjpmMVKioufoGv3issZQvVtzPz38pWHBViyRK2how5": - "19999999999999" - , "37btjrVyb4KD1x4cqHfGxrvBubZ8pSM8Jmw15UiHpy77eMsqpMewGND2GdvAwTBZhf4KA4uypBJnuUPbPYFovpRVJ92BUaMBHfQnAD3i15DAzD8EvL": - "19999999999999" - , "2cWKMJemoBait15xg1M73WAvWafoieg2GrcykbRk6J1QC2jMUXn7LpXf4mk5RUeu8qYeG": - "5428571428571429" - , "37btjrVyb4KC3HyNR82Bj2Sr9o6CF9o3J5hBNycGb9JwrHggTYUHfivi87akkYDv8ayepMkM4mNvxTKvoVdMHFkMnZZgrk5qobwPKM8idSnYYmvTRU": - "19999999999999" - , "37btjrVyb4KCmCLYttFEWLNQc1MRbV1NyhhssRioZ5CgkqHgYUTT1pPSr2hrfevSe8bSwLiPsLnaCbsxJQc5SWgWYEJDPWuUA1s4AotQxERNbT9ReA": - "19999999999999" - , "2cWKMJemoBahLnFCQ8wrTuZ3sMyiCeEkUZDYLNucPiVTJr8UU3BgADsKtqosDYNFXzeiw": - "5428571428571429" - , "37btjrVyb4KDHDPBVenqrh8tUTVNYX5ZGwjd4r3svqdnwWicGnMZZV1E7nBJVQsDY69co936H9onHpmA3PYSabYH4ibbULphL1CitDgArH9KknBARc": - "19999999999999" - , "37btjrVyb4KD9Z53z9qD7gTWMHr22e8jDcpCHgJFQaGQsvnNkycRehAaxLAnufNRjhLzQ57XVGJnR6mcsk6MorapLpADT77tyTaX9xfUSZyTA32ZAy": - "19999999999999" - , "37btjrVyb4KCsozLcUUHR8GyVG7erY6j9zehKTADn3e5xpRJtu1YgfJzSmAyERBHUXa5LGWY2aR2KqcssnRjwugh1bGjxc6U6ZrePJnALYTw2TR3yh": - "19999999999999" - , "37btjrVyb4KEDBSAmNtUBy6pfXesvTvtrDZQsSYcyo7SUwjLkhoSaPDCsNqMmoGbqzFQyEe9DNwK59BMudtdkzFPBpbgiEWx5SZr6vVMbpe86qsQJV": - "19999999999999" - , "37btjrVyb4KFf5NQ1DuNoAP4phRomqdEUmtFb6sWcDHkizGj56dwn54LfKrfWa6Er5sxDXYrzpWwS56PKmKaBjJtn1JqN67K3CihFXXospn8B2TDz2": - "19999999999999" - , "37btjrVyb4KBPHxFJqCekpPztGnLgbVsUA46Q8Lj2LKbFJL5Nqk5LgP2u28eBJAxkkU2r118ARdXW7fXLPQgctwK22L4N3zc6XeoDqkadGmTd4s8a1": - "19999999999999" - , "37btjrVyb4KBYe4RSCngNCgVMAeMJkRQqoJs8t6t9e9BHcNvvT6awv4CruMWH2FyiudxcGfZHmjghDvqk39iFrmCt4XE2XDuYzyo97BxwS6MngfeWp": - "19999999999999" - , "37btjrVyb4KF3MxxJBeJqCPFgHyUsSDkrDqoctSSVi9h7F4Wj9zFKcPVuVju76KYhdp7nJhy44512Wjhw7WH4sed3MMSh1HYnKUfjZXGkoZXMajaye": - "19999999999999" - , "37btjrVyb4KDsi9fc3RfExWLumjkp2YrcMjZpew19Z92kZnjPy5Xa84KY2WZw6xmjJA7AXFJCBWtrF9RFw1BjCewEqK77CVYj2s7bk9aAA7yyZARRz": - "19999999999999" - , "2cWKMJemoBaj34AMeqLspGBgX1PVc7z6VkALK3rtVd8iFgCtMUenNoHhVRnjeGfYVQJM1": - "5428571428571429" - , "37btjrVyb4KDpppzxzoaPgnstPejNxGaSZ3Vh22Qd2DWGrwfLJ2tizs33Y5Yjya1U6TXPzVX2PT5g1PXMy4jR4aWZRGZqYJk4Uw9p1h6BhEa189eiN": - "19999999999999" - , "37btjrVyb4KEXaPVoMuKpnVEKKLMFuGSvYL7YMAD529yxeK8Y1zqnbh5FQ8GMYpJwARugWmzaXdJ1gopgsxziC4e5wgjf3zkp7RH41KTJ73xLyfrFP": - "19999999999999" - , "37btjrVyb4KBrhG1yaBVY3X1ZoTCjUH7gbiA4qSFsMGgtLUBgwHiMZPiAJ3kQrRiboPV3s7eYXZD9fnd27qRb1cCEMc4oU57aPn2cYcEdAEJHrsyLB": - "19999999999999" - , "37btjrVyb4KEC4vC63KNqRBD7RX1KBwWDdPDE6oXGxP8x5aKrbVTALaq4XBdak8F47Kt9VcsQvVsKZfAit8vBtZpG2mc6VKUXCFv8pTYWwQMnABckB": - "19999999999999" - , "37btjrVyb4KFPbetkmdvqD8nLRFsUVL4HsVUYmgaZhAmBXcr78M3XoZkptjuszd2T1FNr1fGZApkZFZXikGtyhCc7jH5JYD1q8csTNSWQn4Us3nzX9": - "19999999999999" - , "37btjrVyb4KDfwNJcNMYsyEDVHWrGrNAPBwF9FGEnm5j2XFs4BeGdiSPqPtqCjWCvcRYBfY5EoDjRBhjsTrr2HjB1jw8XZ9Hy8wd9gz4KkCbMugSgf": - "19999999999999" - , "37btjrVyb4KEgvmzjLT7R9xHg1vNob6vCf999UFuG4qfTpHGZufdhbkUogSFJXtQXnCcJDHJ6xuZt92H6VgxGdhSLQ9gmWZy4zCJEVu8Nj8NashVQY": - "19999999999999" - , "37btjrVyb4KAtY8hCobTmAB36dzosSo644ZrzATKQhP1AsnM6BAVfTWwMX5BGXhigxLm5hk4beodymyjivxrH7ZY6BZjMu3AtafB5guvagxEZM7vJq": - "19999999999999" - , "37btjrVyb4KCRMJDqQ3iK4M19XhWGWpFbCoxjgeDB7ZqUhgW7jSYLEk5oVL4okVPVx5rXCgoK2ND9kAWnNU5QncJp1qvuCngRdJaLrvFwp4boE56VR": - "19999999999999" - , "37btjrVyb4KBTRHUnz17FQNFzHR8PpoGGwuNQZauAUxmvTb1o7Ragv9Zvyiv6Cb3rnrmYY1PGtVFTmom3TGg4mK5XpkRyf7PnnCG5EQM69i7MViLpU": - "19999999999999" - , "2cWKMJemoBam1WPtZrz3Fi4EMUDao74k9Xn4fhyVYLqK4o1VRzoxPFU91QBRToLbVyrjX": - "5428571428571429" - , "37btjrVyb4KBUH8nDpwtt3sSc6rJ7AkYjmnqvt1tJ4J8ZKCuqPrEuEioJJZXeD9aohveoB9zhRWru6oM5zyBcgMtkA26HLtTDKsSVwzoqugfftbiPu": - "19999999999999" - , "37btjrVyb4KCgWqZ8sJW46mQGdZS9wKW2TEQesyCoRScUxvisbdvEkfsxYLR49i6wE6uP1BBgPX9eg8cxKHPuNyKpStwf5UVmRCXD2ahotjamotMwV": - "19999999999999" - , "37btjrVyb4KCR9vZcXetWv4QdP4jPSH4msGeXs8DUBUMVYJHgD62etfv2jiD7gmLbLezCAiGTQu9JvrHd9Wfu74wguKgkX1vCUQkzcWsn4rVWsKCyt": - "19999999999999" - , "37btjrVyb4KFV3TiBqtLDN3oHQr5NrA8ouAAqasFU4ZuB9W13xgcgWsSy5fUtbNL4imCruQz19hjzBzykxGxCAarrviCUBh3sxWbvvTTHdvpyWGgXc": - "19999999999999" - , "37btjrVyb4KGM5rFFreGtZAs4PFB2Drb37uXRHebh8rCeVWFkW8De8XAbYqvfQrAqVthfJp9Qy2YzbzNhWSiUGY3D7yJkRkChyMveKCWT8qUTNEu6e": - "19999999999999" - , "2cWKMJemoBahEJS9xuB3R1ofSgtG621enmfpxfx9Unpo2K26wJPioaA4tizZrNMACNoQb": - "5428571428571429" - , "37btjrVyb4KFGV8HUDv7S5E8CSBV3pQLgGFt5HXa2jb9ofbAo3gTxcaQ4So84mHsNk9mhAybq6miH2VZU3iz7cqCd74gPMyn3zdUsrF1u2rib7HSXq": - "19999999999999" - , "37btjrVyb4KCF4JTyyC27XuFmcrn9Nxj1DmM4G5BKnf8F8F8BSpvn3PnsLRNH2RZJoajmg4yqHnwMXpUnbb7sFSuthjXv6YUenX8EWsApQUzAm77Dm": - "19999999999999" - , "37btjrVyb4KD5zMmtnD3jWpX3TSJnZJ8jMzCFQHYa3HcHNXxdAnK5A88SiWncRpJQxesMDrYgzPHk7SnFNag5teaFELV6hE9opnJpJzMGpVicDDRX4": - "19999999999999" - , "37btjrVyb4KDTABtj2RScLVCLVyFhxcURYUZNVta8CghbH5Edz32XSP79NHc28QTkKLMNUBupRnJXs4zcZt8C2fiPFGZfgSBMqMGMidWc2zo9piRb4": - "19999999999999" - , "37btjrVyb4KCGn7x5G6obn9NPNoTuv25LrBcqK9wHCm3XbrhxqycSQrbPfsDxgDp2M8pqTjCk8cVEG2fRxWrTjfG4q71MtyMo6nt8WG11kJzdQQSNL": - "19999999999999" - , "37btjrVyb4KEhnv3cCqP8jzRBbwE5v6ymPkBjTexHCcCgYJarjHHaxipJvz4aaXc5Xmp5KXxnC3SoE1oqR8sdGHobyfsAqJy7DwejZWpkkoYD7LJsS": - "19999999999999" - , "37btjrVyb4KDvKgSbCTx1gwwZFGe5DZaXyGwTYGGnJNCQ9C61XP4n1pKFQtNbYEowGeRoKHCGUvuU8Ebz2vQwN7YhcJ9bSb5oNpAoCe8UxX5KK5C3e": - "19999999999999" - , "37btjrVyb4KB6yr5YozXGqSKemHyZfsgiRQFX3VdJBKx7waoSaScNWc2dNvhNp6HSnXMxUwDtBvicXDWdpoJ7cKLWAwqEYki5azdt1qDP4sHXh8XhJ": - "19999999999999" - , "37btjrVyb4KCqRLQRj8svdZGGLQDZGdXztzeC15Vvt6uZWg23QAdfL1dMc52dpc8jqKquWNj6xjyLnLciVnRxzEq1kiq54ssmc6h7V5xK1cqqKJWBT": - "19999999999999" - , "37btjrVyb4KEW3PG2LAJNwmok2H6i149HetvT6fYrPsqPGpUkucNkA4b5TQmv896EF44UmcCAXDycfxFB7GcVefBCgk9cZffVUdX3kri3i5TEqSjKm": - "19999999999999" - , "37btjrVyb4KDdgCo1a7URfpQVFoTJEUcn4LqWpAtCeLaW7NeGMJtecsahTJM7886BjLcnhU2CboLSUojCPcab3WNTmXFDrRMHMHdmWefCAyYA7QaaL": - "19999999999999" - , "37btjrVyb4KG5vwKTPpCSQ14a7Cv4TESosSVoFVRHsw1vHj7Tpb7N4j1U5dtFcY7L3MWsH9BJqQjU9NxwaHpbHCJAhmsLi2mC2BE8k8Rj7zcjiiVhR": - "19999999999999" - , "37btjrVyb4KAr171Hd3fu65bbtKxqwktHGwY9kNanPYGXQcFKA8d9Hp1RgLrxzU1AdJCJbJDByTnHdDmtA7pm985tKK8hr5JdHPXFfSvkkYZn3kb9G": - "19999999999999" - , "37btjrVyb4KEZWqFxGYhFuLE23i92B8BiLRwwFUdnjmM24KHCNuWik5dc6MJqz7GxupgKGK5zzbYSXJyA8DQVDszyFmJuoxgzPn2GSnfBoREZ82ZdF": - "19999999999999" - , "37btjrVyb4KDB6sZamEoJWYBLoDWucRdDtRXCuQvLCoVoHPNjrywJKDz8PQg65ZtLvYvREwAK9oLzGGb6UcdAf9zwQcFaKRRHhLzCZxwTsRDVyPkSy": - "19999999999999" - , "37btjrVyb4KDJc8Af5dfJY2jcFbtkofFL6qXBxWnk2kHzCE63qAQR9Ynnk1XkfUrcnBrN7EEyvxmUDEFdNFfZHzXKhmkSQht3b6Y5rHHmuFYYoKdZz": - "19999999999999" - , "37btjrVyb4KDjPpuxBuJM1Ma5NGBqriSEAcozZMqYkWEkoJ3GgR8MAy3Zeb8q5BvtsWGEpSFQ69znPuaX4kVCcnEiEMDp91A6EL8A5YM12cpYYogLm": - "19999999999999" - , "37btjrVyb4KDmCmpc6FutA3PbQmWxcsbzZsFEdMKhHxrJVtGkmaiWd18dKmiaRA6o4Y2sAjDwjFozKzNzQg3dp8CXVSPpWgDLAXaozoRyPanW7UM8B": - "19999999999999" - , "37btjrVyb4KCLfSBFhCBdrb72YBNJkKcDCqpdxf3k7iwJTj7M3txxiq3fcam7Nyi8sLcJNSfgnUrh8C7RKEMN5wWpku7HLdZqZVuPRjeihhgXmEpCe": - "19999999999999" - , "37btjrVyb4KF3ZQhHTvVH3L7jNYoZ3XWK6SWpqZKiu9AGz6qNtxoxhAmmJpenFMA6fedYDT3Lt7cihgc1q4pE2GJXvPuknAkjvESmPxhhzkBzuiRis": - "19999999999999" - , "37btjrVyb4KF9xNLdS47pRBLB8e8bQLuvrBiGJbnHPNCbKU4wrMerJztEtYJdHayvaoUEmJ1vc3aiq9Z3UgP83Y1b4rpiyrGeYjzQhhDgB6DW8sWJm": - "19999999999999" - , "37btjrVyb4KC4LdZLvrexUgAntpySomDAPVwdMEnz1cP9pZxsxZqVYzM6zPPWAhc7byfwsLdgW8GEMTuTUagYFAKEmYgaDmYxK7cHxtWJG3hiMHxVU": - "19999999999999" - , "37btjrVyb4KFfXPG5GDEc4tLyVUSepKD9GGXZcSuP1xtLLRQnQr4wSXawT62bSJsiPzS25kdADKh94V3iDksm9nq5fhV4jixCnpNjsn7k2hSkwrAUa": - "19999999999999" - , "37btjrVyb4KC1L9MsZ8htPomWp4FV4hULeBVT6jf3GGqmDcw3k9tPn6pnfqGTWowQDvqVr7BqtQ5rcQ7gc5z41qh9vyBV7Ds83bRsndDbTAwkEUJ21": - "19999999999999" - , "37btjrVyb4KBtLs3NwnoLkyVx9ZxSoQ7mQx2ZvzanG7PGWWdMA9ksXqZxakLxdj9MAPKw7eQoZJWHxJJCsd7MeWj7ujfXtPsthGhcURT3Hste4Kr4n": - "19999999999999" - , "37btjrVyb4KCaYYFDdnbHEdBzpDPcL5iH98AGF8J5avuweDHwKChDq9mBvLKVJS6F4YTuAVDigPjMnAcuYUJ2UUbvDPePFZBhLhBrFUKeauoKC8X5z": - "19999999999999" - , "37btjrVyb4KFfnmiGpxNSGQVMfmFpAFrEAEhZwGPQDutSHnZqQXPhcXxDNcbdoKiztyQHpTA3jSmVowZCxcaJMS1k1wu8U6nXTzejgh7wYZjycamU6": - "19999999999999" - , "37btjrVyb4KCTVE8b2UitH791rYrkSrHG9u449h6JHKotuPWRsdVZQfP1jXrs4ygSxAnG1rM5mGFM6cmUqA44e9fenjbVC1QFYyn3R4CaptVZypKgW": - "19999999999999" - , "37btjrVyb4KDaKs8A6CU8Lrzxpr3WNM1kDdd4CPe66TqSP2ehHexrAuZ3ykMmhkaUZEHUEiq78ELQx5vpSFGHXFKbyGgrWa8rokqamCV8bSKiqsqVt": - "19999999999999" - , "37btjrVyb4KCdPziHrv1QgXL5zMy3KYxr7zPqoRd96iz3LNrkWbobRmPswTpRKgCQEkZcEnipiNJ5UoULAc33mbR44MchdHT5vLNYT9sPxwzpgNUWj": - "19999999999999" - , "37btjrVyb4KGAZJWCpicgRkb9ijP3Jnv6y9EYvnpMqkPdBZ2d6fdnCa9C97HUmfHLWF846AKjViPvnY7MbSM8mTM3VDx5RazBFxA7C7mZ9CyM48AW9": - "19999999999999" - , "37btjrVyb4KFfgfRyETGNXNXm6gAxNpTQSxr6bM7T6yZE1ibiZBovxG52PioVmLRnPYxs4wYddAfgTH4mbmtLFnwuZYSBh2eNsdLdc6vWb4AdJNNym": - "19999999999999" - , "37btjrVyb4KBsV28Wce4x44WsTVoXa5s4zaBKALWXxMQ2MtfVgB8LJJW34QFpvjrxKmheLtpcLyVqaeu36oB6ZcgQPppFN4oqhdueoKBEpn8dfQUVF": - "19999999999999" - , "37btjrVyb4KBEKzyCGqao8GmErVER19oBH3L8xVNCSZs8tCVd53iV5FXZAZ7bNCT67bKoasGeiYZxEoDzGBsKxb4uJxStU1e9wkaPo6BxUEErZG7LD": - "19999999999999" - , "37btjrVyb4KCi8WRzrkFiE1AVYbSiXBzMRTuTLv8DAchfg4tPaDgHRuDN6m4dq4VkA17pkWwCoa2NmvNb5sGeU1ZkjcqFuYrWPK2C5a3TLBfx64uLs": - "19999999999999" - , "37btjrVyb4KDz8QGqk9LJ9kSsSd1zKgqfTuiTKbL92b4aDSXmRPyrFZp3VPEwhMyEmwCiSkpd7KQztirmU6CGwiphhiHoXbbZjkbfiHN5Mq1y7fmJM": - "19999999999999" - , "37btjrVyb4KEcCa8yc1d8Zrne1hRtedHQQGPbkRJcvHak2ygcCndPfSqWwb2L59ERxhtqsMJLdS1fPQPs2vcJcQCvB52tCm4rGCDwUmRG51PUzjSVh": - "19999999999999" - , "37btjrVyb4KEhvykuoQZKWdNKFgTrugRUSV66yr8GCXREuaX2PfVQJeuXS4h1bNP8SeUxHAG2J6RfK35YnsZj5qkWQCWV7tVYMVokU5bw9y8CcmqPy": - "19999999999999" - , "37btjrVyb4KDsFS7rbQjZQGX6Fz53u76NF2hF9iqRhfbx8ePmjJKCsv5rZV1hhtP6DHdKwLAf5zkVH9FE51xYuCvJzNppSn1tgExVQJpuTwKmyTekT": - "19999999999999" - , "37btjrVyb4KFtfVixJcJdD27YZfXfRM5diZFj4TEazkCAhF8KyztTbe67zQpBc1RTjruHNvefdJ9Jtr7u5rebR71tGrGtKioSSGKy2hMKd6GUVFkEg": - "19999999999999" - , "2cWKMJemoBaiXc4dYCHfDyvy3LcqPebJ8zfRJsZZoHDqik2SzK9Be73YQ5W9u5jEiMPXa": - "5428571428571429" - , "37btjrVyb4KFNpxUYvzqFKsRfRYJKHjEuFfgy6rpoGq29dcMrNhbKTvqNr719U282rp9PcnFonAENkUdv2nE36wZmyNkj8JVQJL1TLu25SKjGFNzVs": - "19999999999999" - , "37btjrVyb4KFYnqsKFfMwj4S3PcCxwxutoiUubHazLfw4wJc5bfrQgpNEpRnGCS2UUfzvMWRRV2vy4wzPKE7tshLS2YEW219R6QfAenXzktMoXCmuU": - "19999999999999" - , "37btjrVyb4KEbo96SLroMfZB11rEvztPswgdqC5ESkHXc4EaFdAhsDQ24vJK23XsjTJzpPS3ZcDWiHiFVtmp5wkJrcnRcMe74s88eTy8YLvLL7EBRj": - "19999999999999" - , "37btjrVyb4KBcyGa22cYKz3Xo9UnB2kzZg4nqVX863JCAvUd54ehdg94DWwnBasCv6sUdbKdh9t4tf48oaXokeoms1HDNuegsmRjVntHBX3Z2hnrV7": - "19999999999999" - , "37btjrVyb4KDHmdZ8ewhythkmGaUzLCwME5pGtWR7nPhE9nCjLMcKstQFyKq1vTSagA2BXtiopfGwtLq2e1jhUVKsw1Z8Me6XTmLm5C9MzRYCZCd3n": - "19999999999999" - , "37btjrVyb4KBGJtifVyePJjSHTno1XNBeTcqmSqEhyUznts9KGQTsvCd9Hq6zM2w29njvmJYCtWmNkUXvayfqyv7epN1awWkKK1WUFQKJsjtevSKz7": - "19999999999999" - , "37btjrVyb4KEwqVLa1yaRPdDUctf525DovPsxoXZfqNp26eXQnmTSFwY3Q3rgPsjRfTKHKtjFpxPy6XYvjzscccsZYfXSaL9MmgrKAaeQgQhCtoXih": - "19999999999999" - , "37btjrVyb4KDxRyqtP9nWyEd7sfzdB8Xgh2egCATJAVtvxM2LhKLp1ALCE714vMCsbQZ5SwvVgiAvmieJTkae865ycwU39JN4pgt27pqEuB8uvi947": - "19999999999999" - , "37btjrVyb4KDA9F68PUv9efaoQHTvacu98Dk6Zx3784ADx4SDnwMfDt3uRfJwqBELeVuis5UEqsf9u4zAD9YC82s6YNmQu43avWDqrQq9Z4hHkEVrL": - "19999999999999" - , "37btjrVyb4KCjschbSccsYGDJo1rVBjdVrpH27iRtc5h1q4XRqpQJTma1NA9t9t8PrTsJjFE7WzNCczJHQR1RGXW1jDNEiEqNa6xctAZ4ZBtXKHVtp": - "19999999999999" - } -, "blockVersionData": - { "scriptVersion": 0 - , "slotDuration": "20000" - , "maxBlockSize": "2000000" - , "maxHeaderSize": "2000" - , "maxTxSize": "65536" - , "maxProposalSize": "70000" - , "mpcThd": "20000000000000" - , "heavyDelThd": "300000000000" - , "updateVoteThd": "1000000000000" - , "updateProposalThd": "100000000000000" - , "updateImplicit": "10000" - , "softforkRule": - { "initThd": "900000000000000" - , "minThd": "600000000000000" - , "thdDecrement": "50000000000000" - } - , "txFeePolicy": - { "summand": "155381000000000" , "multiplier": "43946000000" } - , "unlockStakeEpoch": "18446744073709551615" - } -, "protocolConsts": - { "k": 2160 - , "protocolMagic": 1097911063 - , "vssMaxTTL": 6 - , "vssMinTTL": 2 - } -, "avvmDistr": - { "CWJf8Kl8Gp-DhcWKuhNRUU9P0_CVI2LmpR1MIMxVgGQ=": "20000000000000" - , "h48-GEVDKf_0_vGKzmGOuAOhhIm2uc0OEDSNwFayV28=": "20000000000000" - , "PO1Kz9bpAowfWD8u9Ial2OkmxDiw6bK_ICDPvuHshJM=": "20000000000000" - , "mqJXwreGLRzV9a--egcVvKN4hzIcNUULsXqcPWe3YXI=": "20000000000000" - , "ENoYC3dNAtKL-lvjCTZDVhQYmfyWVtI0GNbz4QKqVdY=": "20000000000000" - , "o0O4s8YkitBZPeZLVyjn8pjtpBoncr-H9mbtAJS_KfE=": "20000000000000" - , "1XEVfDyaheIAeQICkHlwmvEuY9A7E50hA1v_E_QB3Fg=": "20000000000000" - , "OKVfmKrrzY0-10uxl9IxlYA6CFWwOU1dN-NyUI0bobU=": "20000000000000" - , "LYOSBM00cdDToqHepveoat2SN6vdPntA0nSFXRch83Q=": "20000000000000" - , "3Z-Z3rLCxLt0C3KgagBq3wOXrfm68_zh2st5Bi6Covs=": "20000000000000" - , "VTx9H6wpJNMC-H-pThklJ9uCllwqXaU0WXHcVTEFAIU=": "20000000000000" - , "beyF5mz8icvrBvM-mvQzLfbnHCmxOOg8Z7kJs7nySZs=": "20000000000000" - , "rs_VPO7SNO2YlSY2N881xHFeBnW_Sn2o4uSfuGpq9cc=": "20000000000000" - , "5RZPTI9FoSvLmiXjKYtUdkrqoMg99tIw8k4enSB1qlQ=": "20000000000000" - , "QRBLXNJdJCVDjbwPvQmg_liOcYIWfvoKf7Ns5w_RDvU=": "20000000000000" - , "YG9mVGb_MAvTSdFgOUV8JbRBxnj3sPELZxQNVup_X18=": "20000000000000" - , "7dEmv0hdv1a7imviD3q3p9pFBFMC77Byx9oinyGwdIQ=": "20000000000000" - , "H_Qs3m89FGw8QxVTUGuPjdbOPQyP8vzcD8I37BkRAXY=": "20000000000000" - , "pa6NZ1j_bs8kezg23cUQiba3UyLxLiGDQfDXMQmuPSE=": "20000000000000" - , "Qi5VCXOUdP-U-Pd--boAii_-gwMpB0IRfibzxWEN53s=": "20000000000000" - , "cLJrI380JOISi9A14PYTRmClcxPNQS3_GIZdqcXC1JQ=": "20000000000000" - , "BVY8wsqEPXPQ7DPTvnvat7GRiwxFPHC4jY1x3ZvY1PE=": "20000000000000" - , "FBlBD9ykcwuFmoogsVjRCUag9xpkwCAgbYDNazT1oY4=": "20000000000000" - , "KHwUZRYdwRs5UYIhOO9ycjucY8WvTzpkZgZ4PSbDDPI=": "20000000000000" - , "ED2RmO7Wfad2p4gxyzhr4gqlhavksgHEg1acZiKMQF4=": "20000000000000" - , "BOjqPWCmGewTKqKekH0HSgpnOEYT8g0qV4t4t6Nj7-c=": "20000000000000" - , "b-8mgbBV-r9bqufItyyPp2WLitNhBjaMAajl3GfteeE=": "20000000000000" - , "JW_kuEdd0TkJEUA35YUbf_K9C4OlpZd83iTUqrD0q0g=": "20000000000000" - , "IF7PMOFaXdwztrj1j_yx_YBafdZpb3pc5EF6y822KgI=": "20000000000000" - , "r9HNGwms9l0cMBuT8CznPoadXKbzLPceo4-vDydXUwE=": "20000000000000" - , "rM0RFpsVm738CCDdzBhrEz8Q0CLIqiBKMl5rtdFlWmA=": "20000000000000" - , "jFyHtgHVcd70V1SZ7O55mo8yvYw5KsijV6fMQEWkJaE=": "20000000000000" - , "qWmtDqvA3KZyySJLRPFPO2TiOZh3Dpv1FCJTdEilJvc=": "20000000000000" - , "5YYkqAleNp8VXGYiD7WsXvWZQwybkqAUR9xMf5lLvzs=": "20000000000000" - , "bi2YeYdi2W2r7IDYToq_N0RR1k3z4GYsRo2xddi2Y7I=": "20000000000000" - , "vENWfzLRm1wwHYWTUIOznVCXC3ISPt8J6n3gYFrwfpg=": "20000000000000" - , "G71fGc7_2IoExvY8VctjxMCd7lJsTWgvWzg__lF4qcY=": "20000000000000" - , "pFzX1lvX3LPolGCv8TQXfWAZupMZEjVlMWmT7nUV70I=": "20000000000000" - , "pE7umM4kIaTYqKOviWvgTb34xky-kpbN7VvSzhOT8wo=": "20000000000000" - , "P6J7kBAlCPD4wxAnzuzlqTBWMyqI1zVkqVWM5kKoCwg=": "20000000000000" - , "CmwjLeSIEKfLzd5ks16QoGCtYNc--wiGsgWWM4OKsco=": "20000000000000" - , "-RTrh8sxu9mOYYpcfmyod8-v1Z0nqxMunwK-_NFDzYQ=": "20000000000000" - , "EnoSKFBfSJ_l7RXMglXTSolDt6VeNRMay4soxkUmk0E=": "20000000000000" - , "VzxlTAQWmOH7ALIXviuXH2pjjYmtW77r9ypeEZlg4mc=": "20000000000000" - , "93QRpWUE-Yqthy85Y8poB_WeWdG8A_9nnq4HJiMfJQc=": "20000000000000" - , "H7YIN-FF0kUawzVnhQpCoMLuOJkLzYAtZ2xof7vhtPs=": "20000000000000" - , "a9_Q5Pzte2G7wXujwVBaAzLcMki6_UjKrxvWzayJ3gY=": "20000000000000" - , "O4h-7y-2Izq3ojxailZAbMd0VCq78-kIMv8gIcaA6cA=": "20000000000000" - , "mlzqpS0hE6s7apMGRQP4Cx5Fc380yt9gQX7XVcVrmQQ=": "20000000000000" - , "aK-WCeAwKHQE9H02zvRLRdoMPIsZWiOfKkbA6yTyMxs=": "20000000000000" - , "b3fq65eebunM4fM3AQubawjF6Mt9v9jyEXF5f3hewbo=": "20000000000000" - , "ZbZ7v6OcrjZ3vqPFVzaHOK2A5UzRYy-wm0C-ngebU_s=": "20000000000000" - , "zXza46kY7Gs5cJEoN2TUwAaXth5W7uUKQfNiaPyWDSc=": "20000000000000" - , "5q5RzTcpFFUne5AKkua3DJO1IFQEOGyb2jQvV4DmDT8=": "20000000000000" - , "5CzeQFC__uUi8TRPuWVgsUeJauYR3i1f3rvD0CrC34o=": "20000000000000" - , "KOp96-E17RXmCf0_vEOcecpTmY8W0wpbpBwFuPwFbKM=": "20000000000000" - , "EFK3F4mO823aCcko3QmFJ3Klm7glGs8a0f_f6WVIwdg=": "20000000000000" - , "e4TOcy9Qp5BQ8tXkEXaWpuHRmAVcJRfPEV3sVCOKZsQ=": "20000000000000" - , "w-2bM_wksghmtHp4ZB2ZOQ-V9Dw1ZivS7RwxgY-DsB4=": "20000000000000" - , "9pKGBzQJLoqY6vcOM_OqHRgq9KIdO3ovCBp1mBEFKek=": "20000000000000" - , "TMFEEMjP7q64-Liae7CEG0ELKtEC2e2vDuCpMItyfzU=": "20000000000000" - , "nrRREQUC1zKTpQRRNDzO-NiQh6DJahitvTk0SWLkc8g=": "20000000000000" - , "9xnVxPVNI9fdN5zGa5Fa3HcIwof5T-2lMbdLh3_Nbpk=": "20000000000000" - , "NqOaYkD2B5yTFQ1dHMY7X2LmV0Q9tZI6KYR1-dFW_z8=": "20000000000000" - , "zhXX6D5r4CDjlLLQiC87LZZL2zWUIYaXhxbcgq_Ww3w=": "20000000000000" - , "CXMg_ROxPjiJAyxUpBlUepLDhcdhMffR89izVr9vcRU=": "20000000000000" - , "vfTTtqpmg_3jQ7zWV3XhNfmtbtn32Z0fcfNc6_Cx-4E=": "20000000000000" - , "3UAwyThFcR1vKSBpktCSkJg3NpMQhL1z4l46NHpfJkY=": "20000000000000" - , "K4m8Vu1qtFRavgx0jrctVErZf6VbKDfBnigjQef6k-o=": "20000000000000" - , "rmyqI_SuwRsbR4rG1Uk6bUlSJRvo004w5SeejGQERT4=": "20000000000000" - , "oo8sxwl7TO2JP-QfW3_aQbE9zZCLBogFPnwEMPUBuYs=": "20000000000000" - , "lif3znin9EWfZBoYZ9Ta1c69eINSJNmaqkKJVpFuF2U=": "20000000000000" - , "kMAvVvgk0sEf3kHXyfb8gQ6H4gWaFBDSUwms4IFs2jo=": "20000000000000" - , "8CMex0Km9bk2J1r4FaSD_FSwlGRgh1e8C1-7fCGUAJE=": "20000000000000" - , "pUliJY_tq41pTdo5VJISdWbGGBnL_82pupm4AjZF-y0=": "20000000000000" - , "E7dg9_nI8tY9CXli9OyIHtx0FUsq0QZKLBVx9Cr8Daw=": "20000000000000" - , "cpO_GBP5qVwOCGxws6oGvgZszu7jy_LwbKZj_f2pg8o=": "20000000000000" - , "n8MZ16U_jB4Vg4BPZHGorDzVO7dC9qOfAdYhAluKD4Y=": "20000000000000" - , "hqzkwiRusxDSgY-MyqmCyTC0VxELSFdJKJVpzBGOdQM=": "20000000000000" - , "QCiQStlI-PWCbwclsM8ZvfrmP49kql7lAwJjgzZ_OvI=": "20000000000000" - , "7prDyNFRXierLX1UE26h-TSO0fmfC2lFHQoelogU3hg=": "20000000000000" - , "32mL1n7cF_xLIjWAGTC6vISGcafcJe0EgXaxaQNtrzQ=": "20000000000000" - , "H94Fk3T5fiEXPd1eGYfpwPP4_y9FVQWsi2bhIAf9hFE=": "20000000000000" - , "YLQqBDTjfVrQJcqCzgn0js4ScjJpbh3_dGRmg_wQ9WM=": "20000000000000" - , "Ctfg-00LO1JetbfqwOOIwrm56xdZSzzZRccGW52eCps=": "20000000000000" - , "GCkRs5Iqi5jyzRhF-Z5B4-EzgCRAb55pJK8a3kmrbwU=": "20000000000000" - , "975KNlfAi1B-u2Q0X0qBZpuZNLCUNnKnX-jvBzah3pE=": "20000000000000" - , "SrxXeNRxF0accD3dsKoj8ymSQeJoUVs78Llsy-4ZIO0=": "20000000000000" - , "m5zF99P2vG3cqGrG17VvRti7d2XRi3fuUHfec-jM6tQ=": "20000000000000" - , "A-w4r_kJIZpI8TqDAY-F44cR0lhZtnB25UhT0NXM6Zc=": "20000000000000" - , "7mglsAKSgUEkAyA6C5Ni-v_1xoGNPCN_cj7ctQZGZqg=": "20000000000000" - , "x3DrzZ_Yp8df2EGsGlwNAnclV2Tv3lcdqnI3Lk_0bF4=": "20000000000000" - , "GWoauU1tVb37fjs6mPrxXiBoy9HarPqyGI8zj1mc7cw=": "20000000000000" - , "op9p-7Xy9fBmzrjLbMD1jEuW1QVXTOsXSIwgaFN3sDk=": "20000000000000" - , "KC7yE_m_JSiWGVP9cpcfYTLF77taAPTgveRKEiIPg1A=": "20000000000000" - , "6V6sxoH3dMLw8vWcH0NQF2SZNPDzmtULTX4vxkeCQd4=": "20000000000000" - , "y0DLZDhvfU-M5MvdhoyxEFp811PWFfrAdIfDVhYCMzE=": "20000000000000" - , "wCHhA7PS7wdfEuMpzrOJfdGyF2uIChR2LnnAcQE3hHI=": "20000000000000" - , "s4iYnscFXdEK56b7o4ZvKpgN0YoKchpR-U9MZEqbGb8=": "20000000000000" - , "WkMPzKKtocKcbc7_fsFND1oln6gAfWJspg9REi75pMw=": "20000000000000" - } -, "ftsSeed": - "76617361206f7061736120736b6f766f726f64612047677572646120626f726f64612070726f766f6461" -} \ No newline at end of file diff --git a/indexer/migration/src/lib.rs b/indexer/migration/src/lib.rs index ddde20b0..5a8e8543 100644 --- a/indexer/migration/src/lib.rs +++ b/indexer/migration/src/lib.rs @@ -23,6 +23,7 @@ mod m20231220_000018_asset_utxo_table; mod m20240229_000019_add_block_tx_count_column; mod m20240326_000020_create_drep_delegation_table; mod m20240326_000021_create_governance_voting_table; +mod m20240920_000022_create_genesis_tracking_table; pub struct Migrator; @@ -53,6 +54,7 @@ impl MigratorTrait for Migrator { Box::new(m20240229_000019_add_block_tx_count_column::Migration), Box::new(m20240326_000020_create_drep_delegation_table::Migration), Box::new(m20240326_000021_create_governance_voting_table::Migration), + Box::new(m20240920_000022_create_genesis_tracking_table::Migration), ] } } diff --git a/indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs b/indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs new file mode 100644 index 00000000..c566e2ff --- /dev/null +++ b/indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs @@ -0,0 +1,56 @@ +use sea_schema::migration::prelude::*; + +use entity::genesis::*; +use entity::prelude::{Block, BlockColumn}; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m20240920_000022_create_genesis_tracking_table" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .create_table( + Table::create() + .table(Entity) + .if_not_exists() + .col( + ColumnDef::new(Column::Era) + .integer() + .not_null() + .primary_key(), + ) + .col(ColumnDef::new(Column::BlockId).integer().not_null()) + .col(ColumnDef::new(Column::BlockHeight).integer().not_null()) + .col(ColumnDef::new(Column::FirstSlot).big_integer().not_null()) + .col(ColumnDef::new(Column::StartEpoch).big_integer().not_null()) + .col( + ColumnDef::new(Column::EpochLengthSeconds) + .big_integer() + .not_null(), + ) + .foreign_key( + ForeignKey::create() + .name("fk-transaction-block_id") + .from(Entity, Column::BlockId) + .to(Block, BlockColumn::Id) + .on_delete(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .drop_table(Table::drop().table(Entity).to_owned()) + .await + } +} diff --git a/indexer/plan-visualizer/src/generate_image.rs b/indexer/plan-visualizer/src/generate_image.rs index c2279fb0..6845923d 100644 --- a/indexer/plan-visualizer/src/generate_image.rs +++ b/indexer/plan-visualizer/src/generate_image.rs @@ -51,6 +51,14 @@ pub fn generate(exec_plan: &ExecutionPlan, plan_name: &str) -> Graph { entry.builder.get_dependencies(), ); } + TaskRegistryEntry::ShelleyGenesis(entry) => { + add_node( + SubgraphNames::Genesis, + task_name, + entry.builder.get_name(), + entry.builder.get_dependencies(), + ); + } TaskRegistryEntry::Byron(entry) => { add_node( SubgraphNames::Byron, diff --git a/indexer/src/genesis.rs b/indexer/src/genesis.rs index 47e1e801..54e18e7a 100644 --- a/indexer/src/genesis.rs +++ b/indexer/src/genesis.rs @@ -1,4 +1,4 @@ -use anyhow::anyhow; +use anyhow::{anyhow, Context as _}; use entity::block::EraValue; use std::fs; use std::sync::{Arc, Mutex}; @@ -13,38 +13,17 @@ use migration::DbErr; use tasks::utils::TaskPerfAggregator; use tasks::{execution_plan::ExecutionPlan, genesis::genesis_executor::process_genesis_block}; -const GENESIS_MAINNET: &str = "./genesis/mainnet-byron-genesis.json"; -const GENESIS_PREVIEW: &str = "./genesis/preview-byron-genesis.json"; -const GENESIS_PREPROD: &str = "./genesis/preprod-byron-genesis.json"; -const GENESIS_TESTNET: &str = "./genesis/testnet-byron-genesis.json"; -const GENESIS_SANCHONET: &str = "./genesis/sanchonet-byron-genesis.json"; - -pub async fn process_genesis( +pub async fn process_byron_genesis( conn: &DatabaseConnection, - network: &str, + genesis_file: &str, exec_plan: Arc, ) -> anyhow::Result<()> { - // https://github.com/txpipe/oura/blob/67b01e8739ed2927ced270e08daea74b03bcc7f7/src/sources/common.rs#L91 - let genesis_path = match network { - "mainnet" => GENESIS_MAINNET, - "testnet" => GENESIS_TESTNET, - "preview" => GENESIS_PREVIEW, - "preprod" => GENESIS_PREPROD, - "sanchonet" => GENESIS_SANCHONET, - rest => { - return Err(anyhow!( - "{} is invalid. NETWORK must be either mainnet/preview/preprod/testnet", - rest - )) - } - }; - let task_perf_aggregator = Arc::new(Mutex::new(TaskPerfAggregator::default())); tracing::info!("Parsing genesis file..."); let mut time_counter = std::time::Instant::now(); - let file = fs::File::open(genesis_path).expect("Failed to open genesis file"); + let file = fs::File::open(genesis_file).context("Failed to open genesis file")?; let genesis_file: Box = Box::new( parse_genesis_data(file).map_err(|err| anyhow!("can't parse genesis data: {:?}", err))?, ); @@ -55,9 +34,9 @@ pub async fn process_genesis( ); time_counter = std::time::Instant::now(); - tracing::info!("Inserting genesis data into database..."); + tracing::info!("Inserting Byron genesis data into database..."); conn.transaction(|txn| { - Box::pin(insert_genesis( + Box::pin(insert_byron_genesis( txn, genesis_file, exec_plan.clone(), @@ -78,7 +57,7 @@ pub async fn process_genesis( Ok(()) } -pub async fn insert_genesis( +pub async fn insert_byron_genesis( txn: &DatabaseTransaction, genesis_file: Box, exec_plan: Arc, diff --git a/indexer/src/main.rs b/indexer/src/main.rs index 9d080f45..7dc3aa3f 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -1,14 +1,12 @@ use crate::sink::Sink; use crate::sinks::CardanoSink; -use crate::sources::{CardanoSource, OuraSource}; +use crate::sources::{CardanoSource, N2CSource}; use crate::types::StoppableService; use anyhow::{anyhow, Context}; use clap::Parser; use dcspark_blockchain_source::{GetNextFrom, Source}; use migration::async_std::path::PathBuf; -use oura::sources::BearerKind; use serde::Deserialize; -use std::borrow::Cow; use std::fs::File; use std::process::exit; use std::sync::atomic::{AtomicBool, Ordering}; @@ -59,17 +57,18 @@ pub enum SinkConfig { db: DbConfig, #[serde(default = "get_env_network")] network: String, + /// Custom configuration. If not present it will be inferred from the network name + custom_config: Option, + genesis_folder: Option, }, } -pub enum Network {} - #[derive(Debug, Clone, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] #[serde(deny_unknown_fields)] pub enum SourceConfig { - Oura { socket: String, bearer: BearerKind }, - CardanoNet { relay: (Cow<'static, str>, u16) }, + N2c { socket: String }, + CardanoNet { relay: (String, u16) }, } #[derive(Debug, Clone, Deserialize)] @@ -169,10 +168,39 @@ async fn main() -> anyhow::Result<()> { config }; - let (network, mut sink) = match config.sink { - SinkConfig::Cardano { ref network, .. } => ( + let (_network, base_config, mut sink) = match &config.sink { + SinkConfig::Cardano { + network, + custom_config, + .. + } => ( network.clone(), - CardanoSink::new(config.sink, exec_plan) + match custom_config { + Some(custom_config) => custom_config.clone(), + None => match network.as_ref() { + "mainnet" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet() + } + "preprod" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::preprod() + } + "preview" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::preview() + } + "sanchonet" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::sancho() + } + "custom" => { + panic!("sink.custom_config is mandatory when setting network to custom") + } + unknown_network => { + return Err(anyhow::anyhow!( + "network {unknown_network} not supported by source" + )) + } + }, + }, + CardanoSink::new(config.sink.clone(), exec_plan) .await .context("Can't create cardano sink")?, ), @@ -184,9 +212,21 @@ async fn main() -> anyhow::Result<()> { .context("Can't get starting point from sink")?; match &config.source { - SourceConfig::Oura { .. } => { - let source = OuraSource::new(config.source, network, start_from.clone()) - .context("Can't create oura source")?; + SourceConfig::N2c { socket } => { + let network_config = dcspark_blockchain_source::cardano::NetworkConfiguration { + relay: dcspark_blockchain_source::cardano::Relay::UnixSocket(socket.clone()), + from: None, + ..base_config + }; + + let source = dcspark_blockchain_source::cardano::N2CSource::connect( + network_config, + start_from.clone(), + ) + .await?; + + let source = N2CSource(source); + let start_from = start_from .last() .cloned() @@ -195,14 +235,6 @@ async fn main() -> anyhow::Result<()> { main_loop(source, sink, start_from, running, processing_finished).await } SourceConfig::CardanoNet { relay } => { - let base_config = match network.as_ref() { - "mainnet" => dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet(), - "preprod" => dcspark_blockchain_source::cardano::NetworkConfiguration::preprod(), - "preview" => dcspark_blockchain_source::cardano::NetworkConfiguration::preview(), - "sanchonet" => dcspark_blockchain_source::cardano::NetworkConfiguration::sancho(), - _ => return Err(anyhow::anyhow!("network not supported by source")), - }; - // try to find a confirmed point. // // this way the multiverse can be temporary, which saves setting up the extra db @@ -215,8 +247,11 @@ async fn main() -> anyhow::Result<()> { .ok_or_else(|| anyhow!("Starting points list is empty"))?; let network_config = dcspark_blockchain_source::cardano::NetworkConfiguration { - relay: relay.clone(), - from: start_from.clone(), + relay: dcspark_blockchain_source::cardano::Relay::UrlPort( + relay.clone().0, + relay.clone().1, + ), + from: None, ..base_config }; diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index b394ea3a..78938d5b 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -3,8 +3,9 @@ use crate::perf_aggregator::PerfAggregator; use crate::sink::Sink; use crate::types::{MultiEraBlock, StoppableService}; use crate::{genesis, DbConfig, SinkConfig}; +use anyhow::{anyhow, Context as _}; use async_trait::async_trait; - +use dcspark_blockchain_source::cardano::time::Era; use dcspark_blockchain_source::cardano::Point; use dcspark_core::{BlockId, SlotNumber}; use entity::sea_orm::Database; @@ -17,6 +18,7 @@ use entity::{ prelude::{Block, BlockColumn}, sea_orm::{DatabaseConnection, EntityTrait, QueryOrder, QuerySelect}, }; +use std::path::PathBuf; use std::sync::Arc; use std::sync::Mutex; use tasks::byron::byron_executor::process_byron_block; @@ -25,27 +27,94 @@ use tasks::execution_plan::ExecutionPlan; use tasks::multiera::multiera_executor::process_multiera_block; use tasks::utils::TaskPerfAggregator; +#[derive(Clone)] +pub enum Network { + Mainnet, + Preview, + Preprod, + Sanchonet, + Custom { genesis_files: PathBuf }, +} + +impl Network { + pub fn genesis_filename(&self, era: EraValue) -> String { + match self { + Network::Mainnet | Network::Preview | Network::Preprod | Network::Sanchonet => { + format!("{}-{}-genesis.json", self.to_str(), era.to_str()) + } + Network::Custom { genesis_files: _ } => format!("{}-genesis.json", era.to_str()), + } + } + + pub fn to_str(&self) -> &'static str { + match self { + Network::Mainnet => "mainnet", + Network::Preview => "preview", + Network::Preprod => "preprod", + Network::Sanchonet => "sanchonet", + Network::Custom { genesis_files: _ } => "custom", + } + } +} + +impl std::fmt::Display for Network { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.to_str()) + } +} + pub struct CardanoSink { db: DatabaseConnection, - network: String, + network: Network, exec_plan: Arc, last_epoch: i128, epoch_start_time: std::time::Instant, task_perf_aggregator: Arc>, + shelley_era: Option, } impl CardanoSink { #[allow(unreachable_patterns)] pub async fn new(config: SinkConfig, exec_plan: Arc) -> anyhow::Result { - let (db_config, network) = match config { - SinkConfig::Cardano { db, network } => (db, network), + let (db_config, network, genesis_folder) = match config { + SinkConfig::Cardano { + db, + network, + custom_config: _, + genesis_folder, + } => (db, network, genesis_folder), _ => todo!("Invalid sink config provided"), }; + + let network = if network == "custom" { + Network::Custom { + genesis_files: genesis_folder + .ok_or(anyhow!( + "genesis_folder should be specified for custom networks" + ))? + .into(), + } + } else { + match network.as_ref() { + "mainnet" => Network::Mainnet, + "preview" => Network::Preview, + "preprod" => Network::Preprod, + "sanchonet" => Network::Sanchonet, + unknown => { + anyhow::bail!( + "{unknown} is invalid. NETWORK must be either mainnet/preview/preprod or a 'custom' network", + ) + } + } + }; + match db_config { DbConfig::Postgres { database_url } => { let conn = Database::connect(&database_url).await?; + let shelley_era = get_shelley_era_data_from_db(&conn).await?; + Ok(Self { db: conn, network, @@ -53,6 +122,7 @@ impl CardanoSink { last_epoch: -1, epoch_start_time: std::time::Instant::now(), task_perf_aggregator: Arc::new(Mutex::new(TaskPerfAggregator::default())), + shelley_era, }) } _ => todo!("Only postgres is supported atm"), @@ -118,6 +188,8 @@ impl CardanoSink { } } +const KNOWN_GENESIS_FOLDER: &str = "./genesis"; + #[async_trait] impl Sink for CardanoSink { type From = Point; @@ -130,7 +202,14 @@ impl Sink for CardanoSink { }; if start.is_empty() { - genesis::process_genesis(&self.db, &self.network, self.exec_plan.clone()).await?; + // https://github.com/txpipe/oura/blob/67b01e8739ed2927ced270e08daea74b03bcc7f7/src/sources/common.rs#L91 + let genesis_file: PathBuf = get_genesis_file(&self.network, EraValue::Byron)?; + genesis::process_byron_genesis( + &self.db, + &genesis_file.to_string_lossy(), + self.exec_plan.clone(), + ) + .await?; return self.get_latest_point().await; } @@ -145,12 +224,21 @@ impl Sink for CardanoSink { match event { CardanoEventType::Block { cbor_hex, - epoch, + mut epoch, epoch_slot, block_number, block_hash, block_slot: _block_slot, } => { + // this won't work for the first block in the shelley era, since + // the shelley genesis is processed after this however, this + // probably doesn't matter that much for the perf aggregator + // since it's only one block and it only happens once. + if let Some(shelley_era) = &self.shelley_era { + epoch = + epoch.or_else(|| shelley_era.absolute_slot_to_epoch(epoch_slot.unwrap())); + } + match epoch { Some(epoch) if epoch as i128 > self.last_epoch => { let epoch_duration = self.epoch_start_time.elapsed(); @@ -192,8 +280,9 @@ impl Sink for CardanoSink { } _ => (), }; - self.db - .transaction::<_, (), DbErr>(|txn| { + self.shelley_era = self + .db + .transaction::<_, Option, DbErr>(|txn| { Box::pin(insert_block( cbor_hex, epoch, @@ -201,6 +290,8 @@ impl Sink for CardanoSink { txn, self.exec_plan.clone(), self.task_perf_aggregator.clone(), + self.network.clone(), + self.shelley_era.clone(), )) }) .await?; @@ -238,6 +329,13 @@ impl Sink for CardanoSink { .filter(BlockColumn::Id.gt(point.id)) .exec(&self.db) .await?; + + // the table that keeps track of the shelley genesis + // has a foreign key to the block in which we triggered + // that update, this means the entry will get deleted if + // we rollback to a point before that, in which case we + // re-fetch it just to be sure. + self.shelley_era = get_shelley_era_data_from_db(&self.db).await?; } } @@ -267,6 +365,7 @@ fn to_era_value(x: &MultiEraBlock) -> EraValue { } } +#[allow(clippy::too_many_arguments)] async fn insert_block( cbor_hex: String, epoch: Option, @@ -274,7 +373,9 @@ async fn insert_block( txn: &DatabaseTransaction, exec_plan: Arc, task_perf_aggregator: Arc>, -) -> Result<(), DbErr> { + network: Network, + mut shelley_era: Option, +) -> Result, DbErr> { let mut perf_aggregator = PerfAggregator::new(); let block_parse_counter = std::time::Instant::now(); @@ -282,12 +383,50 @@ async fn insert_block( let block_payload = hex::decode(cbor_hex.clone()).unwrap(); let multi_block = MultiEraBlock::from_explicit_network_cbor_bytes(&block_payload).unwrap(); - let block_global_info = BlockGlobalInfo { - era: to_era_value(&multi_block), + let era = to_era_value(&multi_block); + let mut block_global_info = BlockGlobalInfo { + era, epoch, epoch_slot, }; + if era > EraValue::Byron && shelley_era.is_none() { + // we don't have the code to parse the other genesis blocks (alonzo, conway). + let genesis_file_path = get_genesis_file(&network, EraValue::Shelley) + .context("Couldn't get the shelley genesis file from the filesystem") + .unwrap(); + + tasks::genesis::genesis_executor::process_shelley_genesis_block( + txn, + ("", &genesis_file_path, &block_global_info), + &exec_plan, + task_perf_aggregator.clone(), + ) + .await?; + + shelley_era = entity::genesis::Entity::find() + .filter(entity::genesis::Column::Era.eq(i32::from(EraValue::Shelley))) + .limit(1) + .one(txn) + .await? + .map(|model| Era { + first_slot: model.first_slot.try_into().unwrap(), + start_epoch: model.start_epoch.try_into().unwrap(), + epoch_length_seconds: model.epoch_length_seconds.try_into().unwrap(), + // we don't need to know these since we don't compute timestamps + known_time: 0, + slot_length: 0, + }); + + // in the byron era the epoch it's in the header, so we only need to compute + // this if we already transitioned to shelley. + if let Some(shelley_era) = &shelley_era { + block_global_info.epoch = block_global_info.epoch.or_else(|| { + shelley_era.absolute_slot_to_epoch(block_global_info.epoch_slot.unwrap()) + }); + } + } + perf_aggregator.block_parse += block_parse_counter.elapsed(); match &multi_block { @@ -311,5 +450,43 @@ async fn insert_block( } } - Ok(()) + Ok(shelley_era) +} + +fn get_genesis_file(network: &Network, era: EraValue) -> anyhow::Result { + let mut path = PathBuf::new(); + + let known_genesis_folder = PathBuf::from(KNOWN_GENESIS_FOLDER); + let genesis_folder = match network { + Network::Mainnet | Network::Preview | Network::Preprod | Network::Sanchonet => { + &known_genesis_folder + } + Network::Custom { genesis_files } => genesis_files, + }; + + path.push(genesis_folder); + path.push(network.genesis_filename(era)); + + Ok(path) +} + +async fn get_shelley_era_data_from_db( + conn: &DatabaseConnection, +) -> Result, anyhow::Error> { + let shelley_era = entity::genesis::Entity::find() + .filter(entity::genesis::Column::Era.eq(i32::from(EraValue::Shelley))) + .limit(1) + .one(conn) + .await? + .map(|model| { + Era { + first_slot: model.first_slot.try_into().unwrap(), + start_epoch: model.start_epoch.try_into().unwrap(), + epoch_length_seconds: model.epoch_length_seconds.try_into().unwrap(), + // we don't need to know these since we don't compute timestamps + known_time: 0, + slot_length: 0, + } + }); + Ok(shelley_era) } diff --git a/indexer/src/sources/cardano.rs b/indexer/src/sources/cardano.rs index 5ce6c539..8763fb33 100644 --- a/indexer/src/sources/cardano.rs +++ b/indexer/src/sources/cardano.rs @@ -62,7 +62,7 @@ impl Source for CardanoSource { tracing::debug!(id = %block_event.id, "block event received"); Ok(Some(CardanoEventType::Block { cbor_hex: hex::encode(block_event.raw_block), - epoch: Some(block_event.epoch), + epoch: block_event.epoch, epoch_slot: Some(block_event.slot_number.into()), block_number: block_event.block_number.into(), block_hash: block_event.id.to_string(), @@ -88,7 +88,7 @@ impl Source for CardanoSource { impl CardanoSource { pub async fn new(configuration: NetworkConfiguration) -> anyhow::Result { - WrappedCardanoSource::connect(&configuration, Duration::from_millis(5000)) + WrappedCardanoSource::connect(&configuration, Duration::from_millis(5000), true) .await .and_then(|cardano_source| { Multiverse::temporary() diff --git a/indexer/src/sources/mod.rs b/indexer/src/sources/mod.rs index 0071ef24..9b014a95 100644 --- a/indexer/src/sources/mod.rs +++ b/indexer/src/sources/mod.rs @@ -1,5 +1,5 @@ mod cardano; -mod oura_source; +mod n2c; pub use cardano::CardanoSource; -pub use oura_source::OuraSource; +pub use n2c::N2CSource; diff --git a/indexer/src/sources/n2c.rs b/indexer/src/sources/n2c.rs new file mode 100644 index 00000000..a13bbe43 --- /dev/null +++ b/indexer/src/sources/n2c.rs @@ -0,0 +1,50 @@ +use async_trait::async_trait; +use dcspark_blockchain_source::{cardano::Point, Source}; +use dcspark_core::StoppableService as _; + +pub struct N2CSource(pub dcspark_blockchain_source::cardano::N2CSource); + +#[async_trait] +impl crate::types::StoppableService for N2CSource { + async fn stop(self) -> anyhow::Result<()> { + self.0.stop().await?; + + Ok(()) + } +} + +#[async_trait::async_trait] +impl Source for N2CSource { + type Event = crate::common::CardanoEventType; + + type From = Point; + + #[tracing::instrument(skip(self))] + async fn pull(&mut self, _from: &Self::From) -> anyhow::Result> { + let event = self.0.pull(&()).await?; + + let Some(event) = event else { + return Ok(None); + }; + + match event { + dcspark_blockchain_source::cardano::N2CSourceEvent::RollBack { + block_slot, + block_hash, + } => Ok(Some(crate::common::CardanoEventType::RollBack { + block_slot, + block_hash, + })), + dcspark_blockchain_source::cardano::N2CSourceEvent::Block(block_event) => { + Ok(Some(crate::common::CardanoEventType::Block { + cbor_hex: hex::encode(block_event.raw_block), + epoch: block_event.epoch, + epoch_slot: Some(block_event.slot_number.into()), + block_number: block_event.block_number.into(), + block_hash: block_event.id.to_string(), + block_slot: block_event.slot_number.into(), + })) + } + } + } +} diff --git a/indexer/src/sources/oura_source.rs b/indexer/src/sources/oura_source.rs deleted file mode 100644 index b868af28..00000000 --- a/indexer/src/sources/oura_source.rs +++ /dev/null @@ -1,232 +0,0 @@ -use crate::SourceConfig; -use anyhow::anyhow; -use dcspark_blockchain_source::cardano::Point; - -use std::{str::FromStr, sync::Arc, thread::JoinHandle}; - -use crate::common::CardanoEventType; -use crate::types::StoppableService; -use oura::model::EventData; -use oura::pipelining::SourceProvider; -use oura::{ - filters::selection::{self, Predicate}, - mapper, - pipelining::{FilterProvider, StageReceiver}, - sources::{n2c, n2n, AddressArg, BearerKind, IntersectArg, MagicArg, PointArg}, - utils::{ChainWellKnownInfo, Utils, WithUtils}, -}; - -pub struct OuraSource { - _handles: Vec>, - input: StageReceiver, - - // cardano-node always triggers a rollback event when you connect to it - // if all the intersection points existed, if will return the most recent point you gave it - // to avoid this causing a rollback when applying a migration starting from an old block, we skip this rollback - expected_rollback: Option, -} - -impl OuraSource { - pub fn new( - config: SourceConfig, - network: String, - start_from: Vec, - ) -> anyhow::Result { - match config { - SourceConfig::Oura { socket, bearer } => { - let (intersect, rollback) = match start_from { - points if points.is_empty() => { - // we need a special intersection type when bootstrapping from genesis - (IntersectArg::Origin, None) - } - points => { - let (slot_nb, hash) = match points.last().unwrap() { - Point::Origin => { - return Err(anyhow!("Origin point is not supported here")); - } - Point::BlockHeader { slot_nb, hash } => (slot_nb, hash), - }; - tracing::info!("Starting sync at block #{} ({})", slot_nb, hash,); - // if last block synced was at slot 0, - // that means it was the genesis block so we start from origin - match (*slot_nb).into() { - 0u64 => (IntersectArg::Origin, None), - _ => { - let point_args: Vec = points - .into_iter() - .flat_map(|p| match p { - Point::Origin => vec![], - Point::BlockHeader { slot_nb, hash } => { - vec![PointArg(slot_nb.into(), hash.to_string())] - } - }) - .collect(); - let rollback = point_args.first().cloned(); - (IntersectArg::Fallbacks(point_args), rollback) - } - } - } - }; - - let (handles, input) = oura_bootstrap(bearer, intersect, &network, socket)?; - - Ok(OuraSource { - _handles: handles, - input, - expected_rollback: rollback, - }) - } - _ => Err(anyhow!( - "Config {:?} is not supported as oura config", - config - )), - } - } -} - -#[async_trait::async_trait] -impl dcspark_blockchain_source::Source for OuraSource { - type Event = CardanoEventType; - type From = Point; - - /// note: from is ignored here since oura is set up just once - async fn pull(&mut self, _from: &Self::From) -> anyhow::Result> { - let input = self - .input - .recv() - .map_err(|error| anyhow!("Can't fetch oura event: {:?}", error))?; - - match input.data { - EventData::Block(block_record) => { - let cbor = block_record - .cbor_hex - .ok_or_else(|| anyhow!("cbor is not presented"))?; - Ok(Some(CardanoEventType::Block { - cbor_hex: cbor, - epoch: block_record.epoch, - epoch_slot: block_record.epoch_slot, - block_number: block_record.number, - block_hash: block_record.hash, - block_slot: block_record.slot, - })) - } - EventData::RollBack { - block_slot, - block_hash, - } => { - if let Some(expected) = self.expected_rollback.clone() { - if expected.1 == *block_hash { - self.expected_rollback = None; - return Ok(None); - } - }; - Ok(Some(CardanoEventType::RollBack { - block_slot, - block_hash, - })) - } - _ => Ok(None), - } - } -} - -#[async_trait::async_trait] -impl StoppableService for OuraSource { - async fn stop(self) -> anyhow::Result<()> { - Ok(()) - } -} - -fn oura_bootstrap( - mode: BearerKind, - intersect: IntersectArg, - network: &str, - socket: String, -) -> anyhow::Result<(Vec>, StageReceiver)> { - let magic = match network { - "sanchonet" => MagicArg(4), - _ => MagicArg::from_str(network).map_err(|_| anyhow!("magic arg failed"))?, - }; - - let well_known = if magic.0 == 4 { - ChainWellKnownInfo { - byron_epoch_length: 86400, - byron_slot_length: 20, - byron_known_slot: 0, - byron_known_hash: "".to_string(), - byron_known_time: 1686789000, - shelley_epoch_length: 86400, - shelley_slot_length: 1, - shelley_known_slot: 0, - shelley_known_hash: "".to_string(), - shelley_known_time: 1686789000, - address_hrp: "addr_test".to_string(), - adahandle_policy: "".to_string(), - } - } else { - ChainWellKnownInfo::try_from_magic(*magic) - .map_err(|_| anyhow!("chain well known info failed"))? - }; - - let utils = Arc::new(Utils::new(well_known)); - - let mapper = mapper::Config { - include_transaction_details: true, - include_block_cbor: true, - ..Default::default() - }; - - tracing::info!("{}", "Attempting to connect to node..."); - let (source_handle, source_rx) = match mode { - #[allow(deprecated)] - BearerKind::Unix => { - let source_config = n2c::Config { - address: AddressArg(BearerKind::Unix, socket), - magic: Some(magic), - well_known: None, - mapper, - since: None, - min_depth: 0, - intersect: Some(intersect), - retry_policy: None, - finalize: None, // TODO: configurable - }; - WithUtils::new(source_config, utils).bootstrap() - } - #[allow(deprecated)] - BearerKind::Tcp => { - let source_config = n2n::Config { - address: AddressArg(BearerKind::Tcp, socket), - magic: Some(magic), - well_known: None, - mapper, - since: None, - min_depth: 0, - intersect: Some(intersect), - retry_policy: None, - finalize: None, // TODO: configurable - }; - WithUtils::new(source_config, utils).bootstrap() - } - } - .map_err(|e| { - tracing::error!("{}", e); - anyhow!("failed to bootstrap source. Are you sure cardano-node is running?") - })?; - tracing::info!("{}", "Connection to node established"); - - let mut handles = Vec::new(); - handles.push(source_handle); - - let check = Predicate::VariantIn(vec![String::from("Block"), String::from("Rollback")]); - - let filter_setup = selection::Config { check }; - - let (filter_handle, filter_rx) = filter_setup - .bootstrap(source_rx) - .map_err(|_| anyhow!("failed to bootstrap filter"))?; - - handles.push(filter_handle); - - Ok((handles, filter_rx)) -} diff --git a/indexer/tasks/src/dsl/database_task.rs b/indexer/tasks/src/dsl/database_task.rs index 0cb81b13..d4145830 100644 --- a/indexer/tasks/src/dsl/database_task.rs +++ b/indexer/tasks/src/dsl/database_task.rs @@ -2,7 +2,10 @@ use crate::utils::TaskPerfAggregator; use cml_chain::genesis::byron::config::GenesisData; use entity::{block::EraValue, prelude::*, sea_orm::DatabaseTransaction}; use shred::DispatcherBuilder; -use std::sync::{Arc, Mutex}; +use std::{ + path::PathBuf, + sync::{Arc, Mutex}, +}; /// Misc information about blocks that can't be computed from just the block data itself pub struct BlockGlobalInfo { @@ -55,6 +58,7 @@ pub trait TaskBuilder<'a, BlockType, BlockExtraType> { #[derive(Copy, Clone)] pub enum TaskRegistryEntry { Genesis(GenesisTaskRegistryEntry), + ShelleyGenesis(ShelleyGenesisTaskRegistryEntry), Byron(ByronTaskRegistryEntry), Multiera(MultieraTaskRegistryEntry), } @@ -64,6 +68,11 @@ pub struct GenesisTaskRegistryEntry { pub builder: &'static (dyn for<'a> TaskBuilder<'a, GenesisData, BlockGlobalInfo> + Sync), } +#[derive(Copy, Clone)] +pub struct ShelleyGenesisTaskRegistryEntry { + pub builder: &'static (dyn for<'a> TaskBuilder<'a, PathBuf, BlockGlobalInfo> + Sync), +} + #[derive(Copy, Clone)] pub struct ByronTaskRegistryEntry { pub builder: &'static (dyn for<'a> TaskBuilder<'a, cml_multi_era::MultiEraBlock, BlockGlobalInfo> diff --git a/indexer/tasks/src/dsl/task_macro.rs b/indexer/tasks/src/dsl/task_macro.rs index 8ec1f8c8..25122fc4 100644 --- a/indexer/tasks/src/dsl/task_macro.rs +++ b/indexer/tasks/src/dsl/task_macro.rs @@ -3,7 +3,8 @@ pub use crate::utils::find_task_registry_entry; pub use crate::{ dsl::database_task::{ BlockGlobalInfo, BlockInfo, ByronTaskRegistryEntry, DatabaseTaskMeta, - GenesisTaskRegistryEntry, MultieraTaskRegistryEntry, TaskBuilder, TaskRegistryEntry, + GenesisTaskRegistryEntry, MultieraTaskRegistryEntry, ShelleyGenesisTaskRegistryEntry, + TaskBuilder, TaskRegistryEntry, }, era_common::AddressInBlock, utils::TaskPerfAggregator, @@ -17,6 +18,9 @@ macro_rules! era_to_block { (genesis) => { GenesisData }; + (shelley_genesis) => { + PathBuf + }; (byron) => { cml_multi_era::MultiEraBlock }; @@ -29,6 +33,9 @@ macro_rules! era_to_block_info { (genesis) => { BlockGlobalInfo }; + (shelley_genesis) => { + BlockGlobalInfo + }; (byron) => { BlockGlobalInfo }; @@ -45,6 +52,11 @@ cfg_if::cfg_if! { builder: &$task_builder, }) }; + (shelley_genesis $task_builder:expr) => { + TaskMarkdownRegistryEntry::Genesis(GenesisTaskMarkdownRegistryEntry { + builder: &$task_builder, + }) + }; (byron $task_builder:expr) => { TaskMarkdownRegistryEntry::Byron(ByronTaskMarkdownRegistryEntry { builder: &$task_builder, @@ -204,6 +216,11 @@ cfg_if::cfg_if! { builder: &$task_builder, }) }; + (shelley_genesis $task_builder:expr) => { + TaskRegistryEntry::ShelleyGenesis(ShelleyGenesisTaskRegistryEntry { + builder: &$task_builder, + }) + }; (byron $task_builder:expr) => { TaskRegistryEntry::Byron(ByronTaskRegistryEntry { builder: &$task_builder, diff --git a/indexer/tasks/src/genesis/genesis_executor.rs b/indexer/tasks/src/genesis/genesis_executor.rs index 6c9f7c7e..8b89f3e2 100644 --- a/indexer/tasks/src/genesis/genesis_executor.rs +++ b/indexer/tasks/src/genesis/genesis_executor.rs @@ -1,5 +1,3 @@ -use std::sync::{Arc, Mutex}; - use crate::dsl::database_task::TaskRegistryEntry; use crate::dsl::database_task::{BlockGlobalInfo, BlockInfo}; use crate::execution_plan::ExecutionPlan; @@ -8,6 +6,8 @@ use crate::utils::TaskPerfAggregator; use cml_chain::genesis::byron::config::GenesisData; use entity::sea_orm::{prelude::*, DatabaseTransaction}; use shred::{DispatcherBuilder, World}; +use std::path::PathBuf; +use std::sync::{Arc, Mutex}; use tokio::runtime::Handle; pub async fn process_genesis_block( @@ -60,3 +60,54 @@ pub async fn process_genesis_block( Ok(()) } + +pub async fn process_shelley_genesis_block( + txn: &DatabaseTransaction, + block: BlockInfo<'_, PathBuf, BlockGlobalInfo>, + exec_plan: &ExecutionPlan, + perf_aggregator: Arc>, +) -> Result<(), DbErr> { + let ep_start_time = std::time::Instant::now(); + + let handle = Handle::current(); + + let mut world = World::empty(); + + let mut dispatcher_builder = DispatcherBuilder::new(); + + for (task_name, val) in exec_plan.0.iter() { + if let toml::value::Value::Table(_task_props) = val { + let entry = find_task_registry_entry(task_name); + match &entry { + None => { + panic!("Could not find task named {task_name}"); + } + Some(task) => { + if let TaskRegistryEntry::ShelleyGenesis(entry) = task { + entry.builder.maybe_add_task( + &mut dispatcher_builder, + txn, + block, + &handle, + perf_aggregator.clone(), + val, + ); + } + } + } + } + } + + if !dispatcher_builder.is_empty() { + let mut dispatcher = dispatcher_builder.build(); + dispatcher.setup(&mut world); + dispatcher.dispatch(&world); + } + + perf_aggregator + .lock() + .unwrap() + .add_to_total(&ep_start_time.elapsed()); + + Ok(()) +} diff --git a/indexer/tasks/src/genesis/mod.rs b/indexer/tasks/src/genesis/mod.rs index 34cb2652..8a7b2072 100644 --- a/indexer/tasks/src/genesis/mod.rs +++ b/indexer/tasks/src/genesis/mod.rs @@ -1,3 +1,4 @@ pub mod genesis_block; pub mod genesis_executor; pub mod genesis_txs; +pub mod shelley_genesis; diff --git a/indexer/tasks/src/genesis/shelley_genesis.rs b/indexer/tasks/src/genesis/shelley_genesis.rs new file mode 100644 index 00000000..1dfafbf7 --- /dev/null +++ b/indexer/tasks/src/genesis/shelley_genesis.rs @@ -0,0 +1,254 @@ +use std::io::Cursor; +use std::path::PathBuf; + +use crate::config::EmptyConfig::EmptyConfig; +use crate::dsl::task_macro::*; +use cml_chain::genesis::shelley::config::ShelleyGenesisData; +use cml_chain::transaction::AlonzoFormatTxOut; +use cml_chain::Serialize as _; +use cml_core::serialization::ToBytes; +use cml_crypto::{blake2b256, RawBytesEncoding}; +use entity::block::{self, EraValue}; +use entity::stake_credential; +use entity::{ + prelude::*, + sea_orm::{entity::*, prelude::*, Condition, DatabaseTransaction}, +}; +use hex::ToHex; +use sea_orm::{QueryOrder, QuerySelect as _}; +use tokio::io::AsyncReadExt as _; + +carp_task! { + name ShelleyGenesisBlockTask; + configuration EmptyConfig; + doc "Adds the block to the database"; + era shelley_genesis; + dependencies []; + read []; + write [genesis_block]; + should_add_task |_block, _properties| { + true + }; + execute |_previous_data, task| handle_block( + task.db_tx, + task.block + ); + merge_result |_previous_data, _result| { + }; +} + +async fn handle_block( + db_tx: &DatabaseTransaction, + block: BlockInfo<'_, PathBuf, BlockGlobalInfo>, +) -> Result<(), DbErr> { + if Genesis::find() + .filter(GenesisColumn::Era.eq(i32::from(EraValue::Shelley))) + .limit(1) + .one(db_tx) + .await? + .is_some() + { + // There are two cases where we need to run the code in this task + // 1. We have a new block with the Shelley era. + // 2. We skipped the Shelley era and we got a block with a newer era. + // + // However, if we get a new era directly (like Conway), we need to know + // if we've seen Shelley before or not. That's the reason we need this + // condition. + // + // Note: Remember that the genesis file for each era is different. + return Ok(()); + } + + let mut buffer = Vec::new(); + + tokio::fs::File::open(block.1) + .await + .unwrap() + .read_to_end(&mut buffer) + .await + .unwrap(); + + let genesis = cml_chain::genesis::shelley::parse::parse_genesis_data(Cursor::new(buffer)) + .expect("Failed to parse genesis"); + + let (latest_block_height, latest_block_epoch) = Block::find() + .order_by_desc(block::Column::Height) + .limit(1) + .one(db_tx) + .await? + .map(|block| (block.height, block.epoch)) + .unwrap_or_default(); + + // assuming that hard forks can only happen at epoch boundaries? + let start_epoch = latest_block_epoch + 1; + + // TODO: these values should come from the byron genesis, but for the + // existing networks the shelley and byron epoch lenghts are the same, and + // for all of them the slot duration is 20 seconds too. + // potentially we may want to add an entry in the era table with values for these though? + // or we could read the genesis file here. + let byron_slot_duration = 20; + let epoch_length_in_byron_slots = genesis.epoch_length / byron_slot_duration; + + let first_slot = (block.2.epoch_slot.unwrap() / epoch_length_in_byron_slots + * epoch_length_in_byron_slots) as i64; + + let inserted_block = Block::insert(BlockActiveModel { + era: Set(EraValue::Shelley.into()), + height: Set(latest_block_height + 1), + epoch: Set(start_epoch), + payload: Set(None), + tx_count: Set(genesis.initial_funds.len().try_into().unwrap()), + // TODO: what should we hash? + hash: Set(b"shelley-genesis".to_vec()), + slot: Set(first_slot.try_into().unwrap()), + ..Default::default() + }) + .exec_with_returning(true, db_tx) + .await? + .unwrap(); + + Genesis::insert(GenesisActiveModel { + era: Set(i32::from(EraValue::Shelley)), + block_id: Set(inserted_block.id), + block_height: Set(latest_block_height + 1), + first_slot: Set(first_slot), + start_epoch: Set(start_epoch.into()), + epoch_length_seconds: Set(genesis.epoch_length as i64), + }) + .exec(db_tx) + .await?; + + let stake_credentials = + handle_initial_funds((block.0, &genesis, block.2), inserted_block, db_tx).await?; + + if let Some(staking) = genesis + .staking + .as_ref() + .filter(|staking| !staking.stake.is_empty()) + { + entity::stake_delegation::Entity::insert_many(staking.stake.iter().map( + |(stake_credential, pool)| { + let stake_credential_entry = stake_credentials + .iter() + .find(|inserted_credential| { + inserted_credential.credential + == cml_chain::certs::StakeCredential::new_pub_key(*stake_credential) + .to_cbor_bytes() + }) + .unwrap(); + + entity::stake_delegation::ActiveModel { + pool_credential: Set(Some(pool.to_raw_bytes().to_vec())), + previous_pool: Set(None), + stake_credential: Set(stake_credential_entry.id), + // Note: this is not really the tx of the delegation, but the tx + // of the utxo with the initial funds. However there is no other + // tx to assign this to otherwise. + tx_id: Set(stake_credential_entry.first_tx), + ..Default::default() + } + }, + )) + .exec(db_tx) + .await?; + } + + Ok(()) +} + +async fn handle_initial_funds( + block: (&str, &ShelleyGenesisData, &BlockGlobalInfo), + inserted_block: BlockModel, + db_tx: &DatabaseTransaction, +) -> Result, DbErr> { + if block.1.initial_funds.is_empty() { + return Ok(vec![]); + } + + let inserted_transactions = + Transaction::insert_many(block.1.initial_funds.keys().map(|address| { + let tx_id = blake2b256(&address.to_raw_bytes()); + + TransactionActiveModel { + block_id: Set(inserted_block.id), + hash: Set(tx_id.to_vec()), + is_valid: Set(true), + payload: Set(vec![]), + tx_index: Set(0), + ..Default::default() + } + })) + .exec_many_with_returning(db_tx) + .await?; + + let inserted_addresses = Address::insert_many( + block + .1 + .initial_funds + .iter() + .zip(inserted_transactions.iter()) + .map(|((address, _), inserted_tx)| AddressActiveModel { + payload: Set(address.to_raw_bytes()), + first_tx: Set(inserted_tx.id), + ..Default::default() + }), + ) + .exec_many_with_returning(db_tx) + .await?; + + TransactionOutput::insert_many(block.1.initial_funds.iter().zip(inserted_addresses).map( + |((address, coin), address_model)| { + TransactionOutputActiveModel { + address_id: Set(address_model.id), + tx_id: Set(address_model.first_tx), + payload: Set( + cml_chain::transaction::TransactionOutput::AlonzoFormatTxOut( + AlonzoFormatTxOut::new( + address.clone(), + cml_chain::Value::new(*coin, Default::default()), + ), + ) + .to_cbor_bytes(), + ), + output_index: Set(0), + ..Default::default() + } + }, + )) + .exec_many_with_returning(db_tx) + .await?; + + let inserted_credentials = StakeCredential::insert_many( + block + .1 + .initial_funds + .iter() + .zip(inserted_transactions) + .filter_map(|((address, _), inserted_tx)| { + let stake_credential = match address { + cml_chain::address::Address::Base(base) => Some(base.stake.clone()), + // TODO: this doesn't seem possible? + cml_chain::address::Address::Ptr(_) => todo!(), + cml_chain::address::Address::Enterprise(_) => None, + cml_chain::address::Address::Reward(_) => None, + cml_chain::address::Address::Byron(_) => None, + }; + + if let Some(stake_credential) = stake_credential { + Some(StakeCredentialActiveModel { + credential: Set(stake_credential.to_cbor_bytes()), + first_tx: Set(inserted_tx.id), + ..Default::default() + }) + } else { + None + } + }), + ) + .exec_many_with_returning(db_tx) + .await?; + + Ok(inserted_credentials) +} diff --git a/indexer/tasks/src/utils.rs b/indexer/tasks/src/utils.rs index 65f4434c..99785fe0 100644 --- a/indexer/tasks/src/utils.rs +++ b/indexer/tasks/src/utils.rs @@ -58,6 +58,11 @@ pub fn find_task_registry_entry(task_name: &str) -> Option { return Some(*registry_entry); } } + TaskRegistryEntry::ShelleyGenesis(entry) => { + if entry.builder.get_name() == task_name { + return Some(*registry_entry); + } + } } } None