From 4e361b6c84bcf998f48cac6a133b66350d8d35ba Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Tue, 10 Dec 2024 18:01:13 -0500 Subject: [PATCH 1/5] merge in master --- Cargo.lock | 1165 +++++++++++++++++++++++++++------- Cargo.toml | 1 + core/Cargo.toml | 2 + core/src/ballot_box.rs | 35 +- core/src/epoch_snapshot.rs | 80 ++- core/src/mint_entry_serde.rs | 83 +++ core/src/tracked_mints.rs | 31 +- package.json | 2 +- scripts/generate-clients.js | 21 + scripts/update-attributes.js | 60 ++ 10 files changed, 1226 insertions(+), 254 deletions(-) create mode 100644 core/src/mint_entry_serde.rs create mode 100644 scripts/update-attributes.js diff --git a/Cargo.lock b/Cargo.lock index ba0eeeb1..f82782b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -324,9 +324,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -339,9 +339,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" @@ -373,9 +373,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "aquamarine" @@ -551,7 +551,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -584,9 +584,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "brotli", "flate2", @@ -613,7 +613,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -713,9 +713,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" dependencies = [ "arrayref", "arrayvec", @@ -772,11 +772,11 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ - "borsh-derive 1.5.1", + "borsh-derive 1.5.3", "cfg_aliases", ] @@ -808,16 +808,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.85", - "syn_derive", + "syn 2.0.90", ] [[package]] @@ -918,9 +917,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" dependencies = [ "bytemuck_derive", ] @@ -933,7 +932,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -944,9 +943,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "bzip2" @@ -1001,9 +1000,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" dependencies = [ "jobserver", "libc", @@ -1024,9 +1023,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1066,7 +1065,7 @@ dependencies = [ "bitflags 1.3.2", "strsim 0.8.0", "textwrap 0.11.0", - "unicode-width", + "unicode-width 0.1.14", "vec_map", ] @@ -1088,9 +1087,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -1098,13 +1097,13 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.2", + "clap_lex 0.7.4", "strsim 0.11.1", ] @@ -1117,7 +1116,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1131,9 +1130,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" @@ -1172,7 +1171,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -1235,9 +1234,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -1334,6 +1333,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "darling" version = "0.20.10" @@ -1355,7 +1382,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1366,7 +1393,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1535,7 +1562,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1558,7 +1585,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1588,7 +1615,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 3.2.1", "ed25519", "rand 0.7.3", "serde", @@ -1658,7 +1685,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1671,7 +1698,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1717,12 +1744,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1742,9 +1769,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "feature-probe" @@ -1752,6 +1779,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "filetime" version = "0.2.25" @@ -1764,11 +1797,26 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "five8_const" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b4f62f0f8ca357f93ae90c8c2dd1041a1f665fde2f889ea9b1787903829015" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94474d15a76982be62ca8a39570dccce148d98c238ebb7408b0a21b2c4bdddc4" + [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1860,7 +1908,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -1969,10 +2017,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.6.0", + "indexmap 2.7.0", "slab", "tokio", - "tokio-util 0.7.12", + "tokio-util 0.7.13", "tracing", ] @@ -2209,6 +2257,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2217,12 +2383,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2268,9 +2445,9 @@ dependencies = [ [[package]] name = "index_list" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6ba961c14e98151cd6416dd3685efe786a94c38bc1a535c06ceff0a1600813" +checksum = "fa38453685e5fe724fd23ff6c1a158c1e2ca21ce0c2718fa11e96e70e99fd4de" [[package]] name = "indexmap" @@ -2285,9 +2462,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -2296,24 +2473,15 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -2350,9 +2518,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jito-account-traits-derive" @@ -2361,7 +2529,7 @@ source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca28 dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -2387,7 +2555,7 @@ dependencies = [ "solana-program 1.18.26", "spl-associated-token-account", "spl-token", - "spl-token-2022 3.0.4", + "spl-token-2022 3.0.5", "thiserror", ] @@ -2443,7 +2611,7 @@ dependencies = [ "solana-security-txt", "spl-associated-token-account", "spl-token", - "spl-token-2022 3.0.4", + "spl-token-2022 3.0.5", "thiserror", ] @@ -2474,7 +2642,7 @@ dependencies = [ "borsh 0.10.4", "bytemuck", "chrono", - "clap 4.5.20", + "clap 4.5.23", "env_logger 0.10.2", "jito-bytemuck", "jito-restaking-client", @@ -2524,6 +2692,8 @@ dependencies = [ "jito-vault-core", "jito-vault-sdk", "meta-merkle-tree", + "serde", + "serde_with 3.11.0", "shank", "solana-program 1.18.26", "spl-associated-token-account", @@ -2596,7 +2766,7 @@ name = "jito-tip-router-shank-cli" version = "0.0.1" dependencies = [ "anyhow", - "clap 4.5.20", + "clap 4.5.23", "env_logger 0.10.2", "envfile", "log", @@ -2635,7 +2805,7 @@ dependencies = [ "solana-program 1.18.26", "spl-associated-token-account", "spl-token", - "spl-token-2022 3.0.4", + "spl-token-2022 3.0.5", "thiserror", ] @@ -2657,7 +2827,7 @@ dependencies = [ "solana-security-txt", "spl-associated-token-account", "spl-token", - "spl-token-2022 3.0.4", + "spl-token-2022 3.0.5", "thiserror", ] @@ -2684,10 +2854,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2723,9 +2894,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libredox" @@ -2804,6 +2975,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -2943,11 +3120,10 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -3100,7 +3276,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -3181,7 +3357,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -3193,7 +3369,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -3374,7 +3550,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -3426,9 +3602,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -3529,9 +3705,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -3553,7 +3729,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -3759,9 +3935,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -3807,7 +3983,7 @@ dependencies = [ "system-configuration", "tokio", "tokio-rustls", - "tokio-util 0.7.12", + "tokio-util 0.7.13", "tower-service", "url", "wasm-bindgen", @@ -3900,15 +4076,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.38" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4007,7 +4183,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -4060,9 +4236,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -4078,20 +4254,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -4140,7 +4316,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_derive", "serde_json", @@ -4157,7 +4333,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -4169,7 +4345,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -4178,7 +4354,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "itoa", "ryu", "serde", @@ -4390,9 +4566,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4423,6 +4599,19 @@ dependencies = [ "zstd", ] +[[package]] +name = "solana-account-info" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885a819467268110e40a728ef09ff296b5f18e69de729af44c0a28671f274580" +dependencies = [ + "bincode", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + [[package]] name = "solana-accounts-db" version = "1.18.26" @@ -4505,13 +4694,22 @@ dependencies = [ "thiserror", ] +[[package]] +name = "solana-atomic-u64" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e63b09d9058cea0bc0ea0e6227ceaadaa4f9e9a2c184e4743fb62900e9ad7d" +dependencies = [ + "parking_lot", +] + [[package]] name = "solana-banks-client" version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.3", "futures", "solana-banks-interface", "solana-program 1.18.26", @@ -4553,6 +4751,27 @@ dependencies = [ "tokio-serde", ] +[[package]] +name = "solana-bincode" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d6232690ae84a8183101d795c34cc43742fe72f9aba49a8724c13e13c2d52c8" +dependencies = [ + "bincode", + "serde", + "solana-instruction", +] + +[[package]] +name = "solana-borsh" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e70388e69fa1df45afc5a3b3b2e572e5a435106164ffc764be2f1cdf0d6d08f" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.3", +] + [[package]] name = "solana-bpf-loader-program" version = "1.18.26" @@ -4634,7 +4853,7 @@ dependencies = [ "dashmap", "futures", "futures-util", - "indexmap 2.6.0", + "indexmap 2.7.0", "indicatif", "log", "quinn", @@ -4656,6 +4875,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-clock" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1969ec04d32c713949cdb85256620a4e1f08856d6ae2d56b3cb0d981ff67ea2" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro 2.1.5", + "solana-sysvar-id", +] + [[package]] name = "solana-compute-budget-program" version = "1.18.26" @@ -4690,7 +4921,7 @@ dependencies = [ "bincode", "crossbeam-channel", "futures-util", - "indexmap 2.6.0", + "indexmap 2.7.0", "log", "rand 0.8.5", "rayon", @@ -4726,6 +4957,58 @@ dependencies = [ "solana-vote-program", ] +[[package]] +name = "solana-cpi" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a164c4b9fb754e2d58dbf93969170727e98097f2cf12249ab7286afde8bb199e" +dependencies = [ + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-stable-layout", +] + +[[package]] +name = "solana-decode-error" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbec80e0c0480edfedfdd37b5e5704348df251b9ec3661a20ed4c5952cea48ca" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dae93c2bfe6a19a652d9b7c5c085540aac1e5ed6504d40ed0cb7271c935121b" + +[[package]] +name = "solana-epoch-schedule" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e0a219e92b4a1517686f70eb69331abf62c7043ec846d41bf7c00496489572" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro 2.1.5", + "solana-sysvar-id", +] + +[[package]] +name = "solana-fee-calculator" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb19a3de34185a388bba7ff5849d11199ca3f44e2d9458da0743dd3ee764fd4" +dependencies = [ + "log", + "serde", + "serde_derive", +] + [[package]] name = "solana-frozen-abi" version = "1.18.26" @@ -4760,7 +5043,55 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.85", + "syn 2.0.90", +] + +[[package]] +name = "solana-hash" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453b0d210de622407b7264f14a786e785c98fd1438bd1d4c882bd15b0ad1b5a8" +dependencies = [ + "borsh 1.5.3", + "bs58 0.5.1", + "bytemuck", + "bytemuck_derive", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1538578b25d17016fed279b3c3a714cce37c82ccbdc0c0b3926029e689a38d02" +dependencies = [ + "bincode", + "borsh 1.5.3", + "getrandom 0.2.15", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-last-restart-slot" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75665b3505c411abf16c0ac97cef6b9f97b2dbf0d1a3cd1532d9f39dfec8547" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro 2.1.5", + "solana-sysvar-id", ] [[package]] @@ -4812,6 +5143,21 @@ dependencies = [ "thiserror", ] +[[package]] +name = "solana-msg" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efdc384958aa8083295c137ea80da165818c23bfbe92669b2caed2349409b2ff" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-native-token" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe69b2e7a08b2e3c399164ec39f578adfbfb873bfa3e444680a7c6bca86766ef" + [[package]] name = "solana-net-utils" version = "1.18.26" @@ -4850,7 +5196,7 @@ dependencies = [ "bincode", "bv", "caps", - "curve25519-dalek", + "curve25519-dalek 3.2.1", "dlopen2", "fnv", "lazy_static", @@ -4885,14 +5231,14 @@ dependencies = [ "blake3", "borsh 0.10.4", "borsh 0.9.3", - "borsh 1.5.1", + "borsh 1.5.3", "bs58 0.4.0", "bv", "bytemuck", "cc", "console_error_panic_hook", "console_log", - "curve25519-dalek", + "curve25519-dalek 3.2.1", "getrandom 0.2.15", "itertools", "js-sys", @@ -4926,31 +5272,27 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.0.14" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2625a23c3813b620141ee447819b08d1b9a5f1c69a309754834e3f35798a21fb" +checksum = "e18203c102b59adb673098abea6f370d35e21a755dbe6356b14f4fb666a36cb4" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", "base64 0.22.1", "bincode", "bitflags 2.6.0", "blake3", "borsh 0.10.4", - "borsh 1.5.1", + "borsh 1.5.3", "bs58 0.5.1", "bv", "bytemuck", "bytemuck_derive", "console_error_panic_hook", "console_log", - "curve25519-dalek", + "curve25519-dalek 4.1.3", + "five8_const", "getrandom 0.2.15", "js-sys", "lazy_static", - "libsecp256k1", "log", "memoffset 0.9.1", "num-bigint 0.4.6", @@ -4958,18 +5300,102 @@ dependencies = [ "num-traits", "parking_lot", "rand 0.8.5", - "rustc_version", - "rustversion", "serde", "serde_bytes", "serde_derive", "sha2 0.10.8", "sha3 0.10.8", - "solana-sdk-macro 2.0.14", + "solana-account-info", + "solana-atomic-u64", + "solana-bincode", + "solana-borsh", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-define-syscall", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-macro 2.1.5", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "solana-slot-hashes", + "solana-slot-history", + "solana-stable-layout", + "solana-sysvar-id", + "solana-transaction-error", "thiserror", "wasm-bindgen", ] +[[package]] +name = "solana-program-entrypoint" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb29a59145a7535b29e9c3a0bc00b75ac709461239434ce31dd25001c6297ac" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b5a23fa370c03e48f586f133db902b7b51ac6c99b2f02ac61639e2fe5cfe37" +dependencies = [ + "borsh 1.5.3", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6d7ca2ce51d8366ead44309221118ebab00f2afc85ab33342b0e17378d630" +dependencies = [ + "num-traits", + "solana-define-syscall", +] + +[[package]] +name = "solana-program-option" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645cd0a0ffff04b6fe0e69b20229137a6241d3cdac5f8bd35807b29b9bec7f3b" + +[[package]] +name = "solana-program-pack" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9c953adc32f4e877a7dcbdf685770dae978aa91ecc62ce6a963c9cc1ad0542" +dependencies = [ + "solana-program-error", +] + [[package]] name = "solana-program-runtime" version = "1.18.26" @@ -5028,6 +5454,32 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-pubkey" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e3480e24e3f8127dbe32d6fe22dc76dd143fa9b7622ef2345dcb5fa3a70bbfe" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.3", + "bs58 0.5.1", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8_const", + "getrandom 0.2.15", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + [[package]] name = "solana-pubsub-client" version = "1.18.26" @@ -5109,6 +5561,18 @@ dependencies = [ "uriparse", ] +[[package]] +name = "solana-rent" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51a6f5fd26b7e21caf414ef03b88b93eb4220a2aedda78085c64fa1bf4f45d69" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-macro 2.1.5", + "solana-sysvar-id", +] + [[package]] name = "solana-rpc-client" version = "1.18.26" @@ -5247,6 +5711,12 @@ dependencies = [ "zstd", ] +[[package]] +name = "solana-sanitize" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4487b5a078a0132533456ef14ca51a6ba2ce92b0d20f384ac518d0ff565a1235" + [[package]] name = "solana-sdk" version = "1.18.26" @@ -5257,7 +5727,7 @@ dependencies = [ "base64 0.21.7", "bincode", "bitflags 2.6.0", - "borsh 1.5.1", + "borsh 1.5.3", "bs58 0.4.0", "bytemuck", "byteorder", @@ -5312,20 +5782,30 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] name = "solana-sdk-macro" -version = "2.0.14" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93a5a1eabc890415d326707afe62cd7a2009236e8d899c1519566fc8f7e3977b" +checksum = "42b60e5789a960153794568f1eeb48a08908fc9d090aeb71fd2b6079a0842534" dependencies = [ "bs58 0.5.1", "proc-macro2", "quote", - "rustversion", - "syn 2.0.85", + "syn 2.0.90", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5299f38be33f0e8df79ebf335ef69824fae237d942fb3021ef37185a782ac72d" +dependencies = [ + "libsecp256k1", + "solana-define-syscall", + "thiserror", ] [[package]] @@ -5350,6 +5830,80 @@ dependencies = [ "solana-tpu-client", ] +[[package]] +name = "solana-serde-varint" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ca166cb1b22c4cf57a22dc3361dcb3b4e9e13c2988f01d6ecf1f17d6cbaf24" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed854c3d6f93ac585d3b3ab7d9c1517d7b23790d20a050b2c40b63db1ec1546b" +dependencies = [ + "solana-instruction", + "solana-pubkey", + "solana-sanitize", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95731a17cb43f11972296b53d930d0cbdb3f665e76a8d35a36393e7adcba21" +dependencies = [ + "sha2 0.10.8", + "solana-define-syscall", + "solana-hash", +] + +[[package]] +name = "solana-short-vec" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "094937132155615ceccad771b146828a1893d16e19d696d92ea5846b5f77caac" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "160bc9cecd8b27c3b63277dabfc5bcff19b986d1863a1ade50191eb177aab490" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sysvar-id", +] + +[[package]] +name = "solana-slot-history" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4abcfab5789313d9f1635b69e47ca9940d7e4b7eb3fdacfef155c5b9d2a75fc" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sysvar-id", +] + +[[package]] +name = "solana-stable-layout" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfcfffdb3ad08144f3a3e781f49df4416bba0863770bb6b4c8b776746a49f0bf" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + [[package]] name = "solana-stake-program" version = "1.18.26" @@ -5376,7 +5930,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "histogram", - "indexmap 2.6.0", + "indexmap 2.7.0", "itertools", "libc", "log", @@ -5412,6 +5966,15 @@ dependencies = [ "solana-sdk", ] +[[package]] +name = "solana-sysvar-id" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba12c593ed5e9bf2a31214212a8e1769037b6161c9df9efc0d27d69c8407dd" +dependencies = [ + "solana-pubkey", +] + [[package]] name = "solana-thin-client" version = "1.18.26" @@ -5436,7 +5999,7 @@ dependencies = [ "async-trait", "bincode", "futures-util", - "indexmap 2.6.0", + "indexmap 2.7.0", "indicatif", "log", "rayon", @@ -5451,6 +6014,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-transaction-error" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc6386499d3267e70c7d469e68372020d5e958ace19c78671eb7b09c2f4eef2" +dependencies = [ + "solana-instruction", + "solana-sanitize", +] + [[package]] name = "solana-transaction-status" version = "1.18.26" @@ -5573,7 +6146,7 @@ dependencies = [ "bincode", "bytemuck", "byteorder", - "curve25519-dalek", + "curve25519-dalek 3.2.1", "getrandom 0.1.16", "itertools", "lazy_static", @@ -5678,7 +6251,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn 0.1.2", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -5689,7 +6262,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn 0.2.0", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -5701,7 +6274,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", + "syn 2.0.90", "thiserror", ] @@ -5714,7 +6287,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", + "syn 2.0.90", "thiserror", ] @@ -5724,10 +6297,10 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cc5a6cc7a4f0cf7813ce44153bba73280909f697d7f6baf7b9f223a255e7887" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.3", "num-derive 0.4.2", "num-traits", - "solana-program 2.0.14", + "solana-program 2.1.5", "thiserror", "uint", ] @@ -5760,7 +6333,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c52d84c55efeef8edcc226743dc089d7e3888b8e3474569aa3eff152b37b9996" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.3", "bytemuck", "solana-program 1.18.26", "solana-zk-token-sdk", @@ -5802,7 +6375,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -5814,7 +6387,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -5886,9 +6459,9 @@ dependencies = [ [[package]] name = "spl-token-2022" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d1b2851964e257187c0bca43a0de38d0af59192479ca01ac3e2b58b1bd95a" +checksum = "4c39e416aeb1ea0b22f3b2bbecaf7e38a92a1aa8f4a0c5785c94179694e846a0" dependencies = [ "arrayref", "bytemuck", @@ -5954,7 +6527,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3da00495b602ebcf5d8ba8b3ecff1ee454ce4c125c9077747be49c2d62335ba" dependencies = [ - "borsh 1.5.1", + "borsh 1.5.3", "solana-program 1.18.26", "spl-discriminator 0.2.5", "spl-pod 0.2.5", @@ -6020,6 +6593,12 @@ dependencies = [ "spl-program-error 0.4.4", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -6091,27 +6670,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.85", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -6130,6 +6697,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -6199,9 +6777,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -6243,7 +6821,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -6254,7 +6832,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", "test-case-core", ] @@ -6264,7 +6842,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -6275,22 +6853,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -6305,9 +6883,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -6326,9 +6904,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -6353,6 +6931,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -6370,9 +6958,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -6394,7 +6982,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] @@ -6425,9 +7013,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -6466,9 +7054,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -6513,7 +7101,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "toml_datetime", "winnow 0.5.40", ] @@ -6524,7 +7112,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -6539,9 +7127,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -6551,20 +7139,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -6585,9 +7173,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "sharded-slab", "thread_local", @@ -6639,17 +7227,11 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -6672,6 +7254,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -6733,9 +7321,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -6748,6 +7336,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -6811,9 +7411,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -6822,36 +7422,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6859,28 +7459,38 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -7117,6 +7727,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "x509-parser" version = "0.14.0" @@ -7155,6 +7777,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -7173,7 +7819,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure 0.13.1", ] [[package]] @@ -7193,7 +7860,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.90", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 3ed20cac..7996e7af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,6 +57,7 @@ rand = "0.8.5" serde = { version = "^1.0", features = ["derive"] } serde_json = "1.0.102" serde_with = "3.9.0" +serde-big-array = "0.5.1" shank = "0.4.2" shank_idl = "0.4.2" spl-math = { version = "0.3.0", features = ["no-entrypoint"] } diff --git a/core/Cargo.toml b/core/Cargo.toml index b55f125d..95a5e3c9 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -19,6 +19,8 @@ jito-restaking-sdk = { workspace = true } jito-vault-core = { workspace = true } jito-vault-sdk = { workspace = true } meta-merkle-tree = { workspace = true } +serde = { workspace = true } +serde_with = { workspace = true } shank = { workspace = true } solana-program = { workspace = true } spl-associated-token-account = { workspace = true } diff --git a/core/src/ballot_box.rs b/core/src/ballot_box.rs index 01969e54..0d7d1129 100644 --- a/core/src/ballot_box.rs +++ b/core/src/ballot_box.rs @@ -11,7 +11,7 @@ use solana_program::{ use spl_math::precise_number::PreciseNumber; use crate::{ - constants::{precise_consensus, DEFAULT_CONSENSUS_REACHED_SLOT}, + constants::{precise_consensus, DEFAULT_CONSENSUS_REACHED_SLOT, MAX_OPERATORS}, discriminators::Discriminators, error::TipRouterError, stake_weight::StakeWeights, @@ -212,9 +212,8 @@ pub struct BallotBox { winning_ballot: Ballot, - //TODO fix 32 -> MAX_OPERATORS - operator_votes: [OperatorVote; 16], - ballot_tallies: [BallotTally; 16], + operator_votes: [OperatorVote; 256], + ballot_tallies: [BallotTally; 256], } impl Discriminator for BallotBox { @@ -232,9 +231,8 @@ impl BallotBox { operators_voted: PodU64::from(0), unique_ballots: PodU64::from(0), winning_ballot: Ballot::default(), - //TODO fix 32 -> MAX_OPERATORS - operator_votes: [OperatorVote::default(); 16], - ballot_tallies: [BallotTally::default(); 16], + operator_votes: [OperatorVote::default(); MAX_OPERATORS], + ballot_tallies: [BallotTally::default(); MAX_OPERATORS], reserved: [0; 128], } } @@ -572,6 +570,29 @@ impl BallotBox { mod tests { use super::*; + #[test] + fn test_len() { + use std::mem::size_of; + + let expected_total = size_of::() // ncn + + size_of::() // epoch + + 1 // bump + + size_of::() // slot_created + + size_of::() // slot_consensus_reached + + 128 // reserved + + size_of::() // operators_voted + + size_of::() // unique_ballots + + size_of::() // winning_ballot + + size_of::() * MAX_OPERATORS // operator_votes + + size_of::() * MAX_OPERATORS; // ballot_tallies + + assert_eq!(size_of::(), expected_total); + + let ballot_box = BallotBox::new(Pubkey::default(), 0, 0, 0); + assert_eq!(ballot_box.operator_votes.len(), MAX_OPERATORS); + assert_eq!(ballot_box.ballot_tallies.len(), MAX_OPERATORS); + } + #[test] #[ignore] // TODO? fn test_verify_merkle_root() { diff --git a/core/src/epoch_snapshot.rs b/core/src/epoch_snapshot.rs index 7ffa6c0d..4c17e4bc 100644 --- a/core/src/epoch_snapshot.rs +++ b/core/src/epoch_snapshot.rs @@ -9,8 +9,9 @@ use solana_program::{account_info::AccountInfo, msg, program_error::ProgramError use spl_math::precise_number::PreciseNumber; use crate::{ - discriminators::Discriminators, error::TipRouterError, fees::Fees, ncn_fee_group::NcnFeeGroup, - stake_weight::StakeWeights, weight_table::WeightTable, + constants::MAX_VAULT_OPERATOR_DELEGATIONS, discriminators::Discriminators, + error::TipRouterError, fees::Fees, ncn_fee_group::NcnFeeGroup, stake_weight::StakeWeights, + weight_table::WeightTable, }; // PDA'd ["epoch_snapshot", NCN, NCN_EPOCH_SLOT] @@ -217,6 +218,49 @@ pub struct OperatorSnapshot { vault_operator_stake_weight: [VaultOperatorStakeWeight; 32], } +#[derive(Debug, Clone, Copy, Zeroable, ShankType, Pod, ShankType)] +#[repr(C)] +pub struct VaultOperatorStakeWeight { + vault: Pubkey, + stake_weight: PodU128, + vault_index: PodU64, + reserved: [u8; 32], +} + +impl Default for VaultOperatorStakeWeight { + fn default() -> Self { + Self { + vault: Pubkey::default(), + vault_index: PodU64::from(u64::MAX), + stake_weight: PodU128::from(0), + reserved: [0; 32], + } + } +} + +impl VaultOperatorStakeWeight { + pub fn new(vault: Pubkey, stake_weight: u128, vault_index: u64) -> Self { + Self { + vault, + vault_index: PodU64::from(vault_index), + stake_weight: PodU128::from(stake_weight), + reserved: [0; 32], + } + } + + pub fn is_empty(&self) -> bool { + self.vault_index() == u64::MAX + } + + pub fn vault_index(&self) -> u64 { + self.vault_index.into() + } + + pub fn stake_weight(&self) -> u128 { + self.stake_weight.into() + } +} + impl Discriminator for OperatorSnapshot { const DISCRIMINATOR: u8 = Discriminators::OperatorSnapshot as u8; } @@ -257,7 +301,8 @@ impl OperatorSnapshot { valid_operator_vault_delegations: PodU64::from(0), stake_weights: StakeWeights::default(), reserved: [0; 256], - vault_operator_stake_weight: [VaultOperatorStakeWeight::default(); 32], + vault_operator_stake_weight: [VaultOperatorStakeWeight::default(); + MAX_VAULT_OPERATOR_DELEGATIONS], }) } @@ -550,3 +595,32 @@ impl VaultOperatorStakeWeight { self.ncn_fee_group } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_len() { + use std::mem::size_of; + + let expected_total = size_of::() // operator + + size_of::() // ncn + + size_of::() // ncn_epoch + + 1 // bump + + size_of::() // slot_created + + size_of::() // slot_finalized + + size_of::() // is_active + + size_of::() // ncn_operator_index + + size_of::() // operator_index + + size_of::() // operator_fee_bps + + size_of::() // vault_operator_delegation_count + + size_of::() // vault_operator_delegations_registered + + size_of::() // valid_operator_vault_delegations + + size_of::() // stake_weight + + 256 // reserved + + size_of::() * MAX_VAULT_OPERATOR_DELEGATIONS; // vault_operator_stake_weight + + assert_eq!(size_of::(), expected_total); + } +} diff --git a/core/src/mint_entry_serde.rs b/core/src/mint_entry_serde.rs new file mode 100644 index 00000000..f6a6ac01 --- /dev/null +++ b/core/src/mint_entry_serde.rs @@ -0,0 +1,83 @@ +// mint_entry_serde.rs +use std::{fmt, marker::PhantomData}; + +use serde::{ + de::{Error, SeqAccess, Visitor}, + ser::SerializeSeq, + Deserialize, Deserializer, Serialize, Serializer, +}; + +use crate::tracked_mints::MintEntry; + +// Helper struct for serialization +#[derive(Serialize, Deserialize)] +struct SerializableMintEntry { + st_mint: String, // Pubkey as base58 string + vault_index: u64, + #[serde(with = "serde_with::As::")] + reserved: [u8; 32], +} + +impl From<&MintEntry> for SerializableMintEntry { + fn from(entry: &MintEntry) -> Self { + Self { + st_mint: entry.st_mint.to_string(), + vault_index: entry.vault_index.into(), + reserved: entry.reserved, + } + } +} + +impl From for MintEntry { + fn from(entry: SerializableMintEntry) -> Self { + Self { + st_mint: entry.st_mint.parse().unwrap_or_default(), + vault_index: entry.vault_index.into(), + reserved: entry.reserved, + } + } +} +pub struct MintEntryArraySerializer; + +impl MintEntryArraySerializer { + pub fn serialize(entries: &[MintEntry; 64], serializer: S) -> Result + where + S: Serializer, + { + let mut seq = serializer.serialize_seq(Some(64))?; + for entry in entries.iter() { + seq.serialize_element(&SerializableMintEntry::from(entry))?; + } + seq.end() + } + + pub fn deserialize<'de, D>(deserializer: D) -> Result<[MintEntry; 64], D::Error> + where + D: Deserializer<'de>, + { + struct MintEntryArrayVisitor(PhantomData); + + impl<'de> Visitor<'de> for MintEntryArrayVisitor { + type Value = [MintEntry; 64]; + + fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.write_str("an array of 64 MintEntry") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: SeqAccess<'de>, + { + let mut entries = [MintEntry::default(); 64]; + for i in 0..64 { + entries[i] = seq + .next_element()? + .ok_or_else(|| Error::invalid_length(i, &self))?; + } + Ok(entries) + } + } + + deserializer.deserialize_seq(MintEntryArrayVisitor(PhantomData)) + } +} diff --git a/core/src/tracked_mints.rs b/core/src/tracked_mints.rs index 783548a9..be73db2b 100644 --- a/core/src/tracked_mints.rs +++ b/core/src/tracked_mints.rs @@ -5,7 +5,10 @@ use jito_bytemuck::{types::PodU64, AccountDeserialize, Discriminator}; use shank::{ShankAccount, ShankType}; use solana_program::{account_info::AccountInfo, msg, program_error::ProgramError, pubkey::Pubkey}; -use crate::{discriminators::Discriminators, error::TipRouterError, ncn_fee_group::NcnFeeGroup}; +use crate::{ + constants::MAX_VAULT_OPERATOR_DELEGATIONS, discriminators::Discriminators, + error::TipRouterError, +, ncn_fee_group::NcnFeeGroup}; #[derive(Debug, Clone, Copy, Zeroable, ShankType, Pod)] #[repr(C)] @@ -54,8 +57,8 @@ impl Default for MintEntry { pub struct TrackedMints { pub ncn: Pubkey, pub bump: u8, - pub reserved: [u8; 7], // TODO extend to 127; figure out serde issue - pub st_mint_list: [MintEntry; 16], // TODO extend to 64; figure out serde issue + pub reserved: [u8; 127], + pub st_mint_list: [MintEntry; 64], } impl Discriminator for TrackedMints { @@ -67,8 +70,8 @@ impl TrackedMints { Self { ncn, bump, - reserved: [0; 7], - st_mint_list: [MintEntry::default(); 16], + reserved: [0; 127], + st_mint_list: [MintEntry::default(); MAX_VAULT_OPERATOR_DELEGATIONS], } } @@ -212,6 +215,24 @@ impl TrackedMints { mod tests { use super::*; + #[test] + fn test_len() { + use std::mem::size_of; + + let expected_total = size_of::() // ncn + + 1 // bump + + 127 // reserved + + size_of::() * MAX_VAULT_OPERATOR_DELEGATIONS; // st_mint_list + + assert_eq!(size_of::(), expected_total); + + let tracked_mints = TrackedMints::new(Pubkey::default(), 0); + assert_eq!( + tracked_mints.st_mint_list.len(), + MAX_VAULT_OPERATOR_DELEGATIONS + ); + } + #[test] fn test_add_mint() { let mut tracked_mints = TrackedMints::new(Pubkey::default(), 0); diff --git a/package.json b/package.json index 57bf1771..5ac2eaa8 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,6 @@ "yarn": "2.4.3" }, "scripts": { - "generate-clients": "node scripts/generate-clients.js" + "generate-clients": "node scripts/generate-clients.js && node scripts/update-attributes.js" } } \ No newline at end of file diff --git a/scripts/generate-clients.js b/scripts/generate-clients.js index 3119c703..366ada77 100644 --- a/scripts/generate-clients.js +++ b/scripts/generate-clients.js @@ -119,11 +119,32 @@ weightTableKinobi.update(kinobi.bottomUpTransformerVisitor([ }; }, }, + // Override the default behavior for large arrays + { + select: (node) => { + return ( + (kinobi.isNode(node, "structFieldTypeNode") && + ((kinobi.isNode(node.type, "arrayTypeNode") && + kinobi.isNode(node.type.count, "fixedCountNode") && + node.type.count.value > 32) || + (kinobi.isNode(node.type, ["bytesTypeNode", "stringTypeNode"]) && + kinobi.isNode(node.type, "fixedSizeTypeNode") && + node.type.size > 32))) + ); + }, + transform: (node) => { + // Just return the node without adding the serde_with attribute + return node; + }, + }, + + ])); weightTableKinobi.accept(renderers.renderRustVisitor(path.join(rustWeightTableClientDir, "src", "generated"), { formatCode: true, crateFolder: rustWeightTableClientDir, deleteFolderBeforeRendering: true, toolchain: "+nightly-2024-07-25" + })); weightTableKinobi.accept(renderers.renderJavaScriptVisitor(path.join(jsWeightTableClientDir), {})); diff --git a/scripts/update-attributes.js b/scripts/update-attributes.js new file mode 100644 index 00000000..37ef7acb --- /dev/null +++ b/scripts/update-attributes.js @@ -0,0 +1,60 @@ +const fs = require('fs'); +const path = require('path'); + +// Function to recursively find all .rs files +function findRustFiles(dir, fileList = []) { + const files = fs.readdirSync(dir); + + files.forEach(file => { + const filePath = path.join(dir, file); + const stat = fs.statSync(filePath); + + if (stat.isDirectory()) { + findRustFiles(filePath, fileList); + } else if (path.extname(file) === '.rs') { + fileList.push(filePath); + } + }); + + return fileList; +} + +// Function to replace text in a file +function replaceInFile(filePath, searchText, replaceText) { + try { + const content = fs.readFileSync(filePath, 'utf8'); + const updatedContent = content.replace(new RegExp(searchText, 'g'), replaceText); + + // Only write if content changed + if (content !== updatedContent) { + fs.writeFileSync(filePath, updatedContent, 'utf8'); + console.log(`Updated ${filePath}`); + } + } catch (err) { + console.error(`Error processing ${filePath}:`, err); + } +} + +// Main execution +try { + const rustDir = path.join(__dirname, '../clients/rust'); + const rustFiles = findRustFiles(rustDir); + + if (rustFiles.length === 0) { + console.log('No .rs files found in', rustDir); + process.exit(1); + } + + // Replace text in each file + const searchText = 'serde\\(with = "serde_with::As::"\\)'; + const replaceText = 'serde(with = "serde_big_array::BigArray")'; + + rustFiles.forEach(file => { + replaceInFile(file, searchText, replaceText); + }); + + console.log('Finished processing', rustFiles.length, 'files'); +} catch (err) { + console.error('Script failed:', err); + process.exit(1); +} From 55f3a71cda291113f8f4d1a0b3a8fc20e4438a51 Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Tue, 10 Dec 2024 18:35:02 -0500 Subject: [PATCH 2/5] All accounts resized --- Cargo.lock | 10 ++++ .../js/jito_tip_router/accounts/ballotBox.ts | 8 +-- .../accounts/baseRewardRouter.ts | 4 +- .../accounts/ncnRewardRouter.ts | 4 +- .../accounts/operatorSnapshot.ts | 4 +- .../jito_tip_router/accounts/trackedMints.ts | 8 +-- clients/rust/jito_tip_router/Cargo.toml | 1 + .../src/generated/accounts/ballot_box.rs | 8 +-- .../generated/accounts/base_reward_router.rs | 5 +- .../src/generated/accounts/epoch_snapshot.rs | 2 +- .../src/generated/accounts/ncn_config.rs | 2 +- .../generated/accounts/ncn_reward_router.rs | 5 +- .../generated/accounts/operator_snapshot.rs | 5 +- .../src/generated/accounts/tracked_mints.rs | 6 ++- .../src/generated/accounts/weight_table.rs | 2 +- .../src/generated/types/ballot.rs | 2 +- .../src/generated/types/fee_config.rs | 2 +- .../src/generated/types/fees.rs | 2 +- .../src/generated/types/operator_vote.rs | 2 +- .../src/generated/types/weight_entry.rs | 2 +- core/src/ballot_box.rs | 2 +- core/src/base_reward_router.rs | 27 ++++++++-- core/src/constants.rs | 1 + core/src/epoch_snapshot.rs | 52 ++----------------- core/src/ncn_reward_router.rs | 29 +++++++++-- core/src/tracked_mints.rs | 4 +- idl/jito_tip_router.json | 14 ++--- 27 files changed, 113 insertions(+), 100 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f82782b3..23d1bf91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2672,6 +2672,7 @@ dependencies = [ "num-derive 0.4.2", "num-traits", "serde", + "serde-big-array", "serde_with 3.11.0", "solana-program 1.18.26", "solana-sdk", @@ -4243,6 +4244,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.15" diff --git a/clients/js/jito_tip_router/accounts/ballotBox.ts b/clients/js/jito_tip_router/accounts/ballotBox.ts index 5514b641..1ec4ec16 100644 --- a/clients/js/jito_tip_router/accounts/ballotBox.ts +++ b/clients/js/jito_tip_router/accounts/ballotBox.ts @@ -91,8 +91,8 @@ export function getBallotBoxEncoder(): Encoder { ['operatorsVoted', getU64Encoder()], ['uniqueBallots', getU64Encoder()], ['winningBallot', getBallotEncoder()], - ['operatorVotes', getArrayEncoder(getOperatorVoteEncoder(), { size: 16 })], - ['ballotTallies', getArrayEncoder(getBallotTallyEncoder(), { size: 16 })], + ['operatorVotes', getArrayEncoder(getOperatorVoteEncoder(), { size: 256 })], + ['ballotTallies', getArrayEncoder(getBallotTallyEncoder(), { size: 256 })], ]); } @@ -108,8 +108,8 @@ export function getBallotBoxDecoder(): Decoder { ['operatorsVoted', getU64Decoder()], ['uniqueBallots', getU64Decoder()], ['winningBallot', getBallotDecoder()], - ['operatorVotes', getArrayDecoder(getOperatorVoteDecoder(), { size: 16 })], - ['ballotTallies', getArrayDecoder(getBallotTallyDecoder(), { size: 16 })], + ['operatorVotes', getArrayDecoder(getOperatorVoteDecoder(), { size: 256 })], + ['ballotTallies', getArrayDecoder(getBallotTallyDecoder(), { size: 256 })], ]); } diff --git a/clients/js/jito_tip_router/accounts/baseRewardRouter.ts b/clients/js/jito_tip_router/accounts/baseRewardRouter.ts index 30039a34..2342f7e0 100644 --- a/clients/js/jito_tip_router/accounts/baseRewardRouter.ts +++ b/clients/js/jito_tip_router/accounts/baseRewardRouter.ts @@ -96,7 +96,7 @@ export function getBaseRewardRouterEncoder(): Encoder { ], [ 'ncnFeeGroupRewardRoutes', - getArrayEncoder(getNcnRewardRouteEncoder(), { size: 32 }), + getArrayEncoder(getNcnRewardRouteEncoder(), { size: 256 }), ], ]); } @@ -122,7 +122,7 @@ export function getBaseRewardRouterDecoder(): Decoder { ], [ 'ncnFeeGroupRewardRoutes', - getArrayDecoder(getNcnRewardRouteDecoder(), { size: 32 }), + getArrayDecoder(getNcnRewardRouteDecoder(), { size: 256 }), ], ]); } diff --git a/clients/js/jito_tip_router/accounts/ncnRewardRouter.ts b/clients/js/jito_tip_router/accounts/ncnRewardRouter.ts index ac679ce5..e678ea47 100644 --- a/clients/js/jito_tip_router/accounts/ncnRewardRouter.ts +++ b/clients/js/jito_tip_router/accounts/ncnRewardRouter.ts @@ -93,7 +93,7 @@ export function getNcnRewardRouterEncoder(): Encoder { ['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })], [ 'vaultRewardRoutes', - getArrayEncoder(getVaultRewardRouteEncoder(), { size: 32 }), + getArrayEncoder(getVaultRewardRouteEncoder(), { size: 64 }), ], ]); } @@ -114,7 +114,7 @@ export function getNcnRewardRouterDecoder(): Decoder { ['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })], [ 'vaultRewardRoutes', - getArrayDecoder(getVaultRewardRouteDecoder(), { size: 32 }), + getArrayDecoder(getVaultRewardRouteDecoder(), { size: 64 }), ], ]); } diff --git a/clients/js/jito_tip_router/accounts/operatorSnapshot.ts b/clients/js/jito_tip_router/accounts/operatorSnapshot.ts index 69a2e01b..1894d73e 100644 --- a/clients/js/jito_tip_router/accounts/operatorSnapshot.ts +++ b/clients/js/jito_tip_router/accounts/operatorSnapshot.ts @@ -109,7 +109,7 @@ export function getOperatorSnapshotEncoder(): Encoder { ['reserved', getArrayEncoder(getU8Encoder(), { size: 256 })], [ 'vaultOperatorStakeWeight', - getArrayEncoder(getVaultOperatorStakeWeightEncoder(), { size: 32 }), + getArrayEncoder(getVaultOperatorStakeWeightEncoder(), { size: 64 }), ], ]); } @@ -134,7 +134,7 @@ export function getOperatorSnapshotDecoder(): Decoder { ['reserved', getArrayDecoder(getU8Decoder(), { size: 256 })], [ 'vaultOperatorStakeWeight', - getArrayDecoder(getVaultOperatorStakeWeightDecoder(), { size: 32 }), + getArrayDecoder(getVaultOperatorStakeWeightDecoder(), { size: 64 }), ], ]); } diff --git a/clients/js/jito_tip_router/accounts/trackedMints.ts b/clients/js/jito_tip_router/accounts/trackedMints.ts index 75d2ad59..ac8920ab 100644 --- a/clients/js/jito_tip_router/accounts/trackedMints.ts +++ b/clients/js/jito_tip_router/accounts/trackedMints.ts @@ -62,8 +62,8 @@ export function getTrackedMintsEncoder(): Encoder { ['discriminator', getU64Encoder()], ['ncn', getAddressEncoder()], ['bump', getU8Encoder()], - ['reserved', getArrayEncoder(getU8Encoder(), { size: 7 })], - ['stMintList', getArrayEncoder(getMintEntryEncoder(), { size: 16 })], + ['reserved', getArrayEncoder(getU8Encoder(), { size: 127 })], + ['stMintList', getArrayEncoder(getMintEntryEncoder(), { size: 64 })], ]); } @@ -72,8 +72,8 @@ export function getTrackedMintsDecoder(): Decoder { ['discriminator', getU64Decoder()], ['ncn', getAddressDecoder()], ['bump', getU8Decoder()], - ['reserved', getArrayDecoder(getU8Decoder(), { size: 7 })], - ['stMintList', getArrayDecoder(getMintEntryDecoder(), { size: 16 })], + ['reserved', getArrayDecoder(getU8Decoder(), { size: 127 })], + ['stMintList', getArrayDecoder(getMintEntryDecoder(), { size: 64 })], ]); } diff --git a/clients/rust/jito_tip_router/Cargo.toml b/clients/rust/jito_tip_router/Cargo.toml index 78aef95a..d4accf2d 100644 --- a/clients/rust/jito_tip_router/Cargo.toml +++ b/clients/rust/jito_tip_router/Cargo.toml @@ -21,6 +21,7 @@ bytemuck = { workspace = true } num-derive = { workspace = true } num-traits = { workspace = true } serde = { workspace = true } +serde-big-array = { workspace = true } serde_with = { workspace = true } solana-program = { workspace = true } solana-sdk = { workspace = true } diff --git a/clients/rust/jito_tip_router/src/generated/accounts/ballot_box.rs b/clients/rust/jito_tip_router/src/generated/accounts/ballot_box.rs index 63eafb2a..24d5c5fc 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/ballot_box.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/ballot_box.rs @@ -22,13 +22,15 @@ pub struct BallotBox { pub bump: u8, pub slot_created: u64, pub slot_consensus_reached: u64, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], pub operators_voted: u64, pub unique_ballots: u64, pub winning_ballot: Ballot, - pub operator_votes: [OperatorVote; 16], - pub ballot_tallies: [BallotTally; 16], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub operator_votes: [OperatorVote; 256], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub ballot_tallies: [BallotTally; 256], } impl BallotBox { diff --git a/clients/rust/jito_tip_router/src/generated/accounts/base_reward_router.rs b/clients/rust/jito_tip_router/src/generated/accounts/base_reward_router.rs index df94a734..3252eb24 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/base_reward_router.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/base_reward_router.rs @@ -24,11 +24,12 @@ pub struct BaseRewardRouter { pub total_rewards: u64, pub reward_pool: u64, pub rewards_processed: u64, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], pub base_fee_group_rewards: [BaseRewardRouterRewards; 8], pub ncn_fee_group_rewards: [BaseRewardRouterRewards; 8], - pub ncn_fee_group_reward_routes: [NcnRewardRoute; 32], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub ncn_fee_group_reward_routes: [NcnRewardRoute; 256], } impl BaseRewardRouter { diff --git a/clients/rust/jito_tip_router/src/generated/accounts/epoch_snapshot.rs b/clients/rust/jito_tip_router/src/generated/accounts/epoch_snapshot.rs index 9734e69c..d6573fe9 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/epoch_snapshot.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/epoch_snapshot.rs @@ -28,7 +28,7 @@ pub struct EpochSnapshot { pub operators_registered: u64, pub valid_operator_vault_delegations: u64, pub stake_weights: StakeWeights, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], } diff --git a/clients/rust/jito_tip_router/src/generated/accounts/ncn_config.rs b/clients/rust/jito_tip_router/src/generated/accounts/ncn_config.rs index 6c235c08..a11a2712 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/ncn_config.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/ncn_config.rs @@ -32,7 +32,7 @@ pub struct NcnConfig { pub epochs_before_stall: u64, pub fee_config: FeeConfig, pub bump: u8, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 127], } diff --git a/clients/rust/jito_tip_router/src/generated/accounts/ncn_reward_router.rs b/clients/rust/jito_tip_router/src/generated/accounts/ncn_reward_router.rs index 4e887bce..7d14fa10 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/ncn_reward_router.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/ncn_reward_router.rs @@ -31,9 +31,10 @@ pub struct NcnRewardRouter { pub reward_pool: u64, pub rewards_processed: u64, pub operator_rewards: u64, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], - pub vault_reward_routes: [VaultRewardRoute; 32], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub vault_reward_routes: [VaultRewardRoute; 64], } impl NcnRewardRouter { diff --git a/clients/rust/jito_tip_router/src/generated/accounts/operator_snapshot.rs b/clients/rust/jito_tip_router/src/generated/accounts/operator_snapshot.rs index c47bd07c..5ebabc8e 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/operator_snapshot.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/operator_snapshot.rs @@ -35,9 +35,10 @@ pub struct OperatorSnapshot { pub vault_operator_delegations_registered: u64, pub valid_operator_vault_delegations: u64, pub stake_weights: StakeWeights, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 256], - pub vault_operator_stake_weight: [VaultOperatorStakeWeight; 32], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub vault_operator_stake_weight: [VaultOperatorStakeWeight; 64], } impl OperatorSnapshot { diff --git a/clients/rust/jito_tip_router/src/generated/accounts/tracked_mints.rs b/clients/rust/jito_tip_router/src/generated/accounts/tracked_mints.rs index da3fec60..db5acc4e 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/tracked_mints.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/tracked_mints.rs @@ -19,8 +19,10 @@ pub struct TrackedMints { )] pub ncn: Pubkey, pub bump: u8, - pub reserved: [u8; 7], - pub st_mint_list: [MintEntry; 16], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub reserved: [u8; 127], + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] + pub st_mint_list: [MintEntry; 64], } impl TrackedMints { diff --git a/clients/rust/jito_tip_router/src/generated/accounts/weight_table.rs b/clients/rust/jito_tip_router/src/generated/accounts/weight_table.rs index 72be4627..9625c302 100644 --- a/clients/rust/jito_tip_router/src/generated/accounts/weight_table.rs +++ b/clients/rust/jito_tip_router/src/generated/accounts/weight_table.rs @@ -21,7 +21,7 @@ pub struct WeightTable { pub ncn_epoch: u64, pub slot_created: u64, pub bump: u8, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], pub table: [WeightEntry; 32], } diff --git a/clients/rust/jito_tip_router/src/generated/types/ballot.rs b/clients/rust/jito_tip_router/src/generated/types/ballot.rs index 444eefc3..bfae04c4 100644 --- a/clients/rust/jito_tip_router/src/generated/types/ballot.rs +++ b/clients/rust/jito_tip_router/src/generated/types/ballot.rs @@ -11,6 +11,6 @@ use borsh::{BorshDeserialize, BorshSerialize}; pub struct Ballot { pub merkle_root: [u8; 32], pub is_valid: bool, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 63], } diff --git a/clients/rust/jito_tip_router/src/generated/types/fee_config.rs b/clients/rust/jito_tip_router/src/generated/types/fee_config.rs index f5b7cb64..52662a39 100644 --- a/clients/rust/jito_tip_router/src/generated/types/fee_config.rs +++ b/clients/rust/jito_tip_router/src/generated/types/fee_config.rs @@ -14,7 +14,7 @@ use crate::generated::types::Fees; pub struct FeeConfig { pub block_engine_fee_bps: u16, pub base_fee_wallets: [Pubkey; 8], - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], pub fee1: Fees, pub fee2: Fees, diff --git a/clients/rust/jito_tip_router/src/generated/types/fees.rs b/clients/rust/jito_tip_router/src/generated/types/fees.rs index cfcf5776..71100211 100644 --- a/clients/rust/jito_tip_router/src/generated/types/fees.rs +++ b/clients/rust/jito_tip_router/src/generated/types/fees.rs @@ -12,7 +12,7 @@ use crate::generated::types::Fee; #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Fees { pub activation_epoch: u64, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], pub base_fee_groups_bps: [Fee; 8], pub ncn_fee_groups_bps: [Fee; 8], diff --git a/clients/rust/jito_tip_router/src/generated/types/operator_vote.rs b/clients/rust/jito_tip_router/src/generated/types/operator_vote.rs index 4a0aec5c..aaba60a3 100644 --- a/clients/rust/jito_tip_router/src/generated/types/operator_vote.rs +++ b/clients/rust/jito_tip_router/src/generated/types/operator_vote.rs @@ -20,6 +20,6 @@ pub struct OperatorVote { pub slot_voted: u64, pub stake_weights: StakeWeights, pub ballot_index: u16, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 64], } diff --git a/clients/rust/jito_tip_router/src/generated/types/weight_entry.rs b/clients/rust/jito_tip_router/src/generated/types/weight_entry.rs index fb3123bc..c848ce82 100644 --- a/clients/rust/jito_tip_router/src/generated/types/weight_entry.rs +++ b/clients/rust/jito_tip_router/src/generated/types/weight_entry.rs @@ -18,6 +18,6 @@ pub struct WeightEntry { pub weight: u128, pub slot_set: u64, pub slot_updated: u64, - #[cfg_attr(feature = "serde", serde(with = "serde_with::As::"))] + #[cfg_attr(feature = "serde", serde(with = "serde_big_array::BigArray"))] pub reserved: [u8; 128], } diff --git a/core/src/ballot_box.rs b/core/src/ballot_box.rs index 0d7d1129..5df3e4cb 100644 --- a/core/src/ballot_box.rs +++ b/core/src/ballot_box.rs @@ -353,7 +353,7 @@ impl BallotBox { self.winning_ballot.is_valid() } - pub const fn operator_votes(&self) -> &[OperatorVote; 16] { + pub const fn operator_votes(&self) -> &[OperatorVote; MAX_OPERATORS] { &self.operator_votes } diff --git a/core/src/base_reward_router.rs b/core/src/base_reward_router.rs index 442485f1..6ab8be50 100644 --- a/core/src/base_reward_router.rs +++ b/core/src/base_reward_router.rs @@ -9,8 +9,8 @@ use solana_program::{ use spl_math::precise_number::PreciseNumber; use crate::{ - ballot_box::BallotBox, base_fee_group::BaseFeeGroup, discriminators::Discriminators, - error::TipRouterError, fees::Fees, ncn_fee_group::NcnFeeGroup, + ballot_box::BallotBox, base_fee_group::BaseFeeGroup, constants::MAX_OPERATORS, + discriminators::Discriminators, error::TipRouterError, fees::Fees, ncn_fee_group::NcnFeeGroup, }; // PDA'd ["epoch_reward_router", NCN, NCN_EPOCH_SLOT] @@ -36,8 +36,7 @@ pub struct BaseRewardRouter { base_fee_group_rewards: [BaseRewardRouterRewards; 8], ncn_fee_group_rewards: [BaseRewardRouterRewards; 8], - //TODO change to 256 - ncn_fee_group_reward_routes: [NcnRewardRoute; 32], + ncn_fee_group_reward_routes: [NcnRewardRoute; 256], } impl Discriminator for BaseRewardRouter { @@ -59,7 +58,7 @@ impl BaseRewardRouter { NcnFeeGroup::FEE_GROUP_COUNT], ncn_fee_group_rewards: [BaseRewardRouterRewards::default(); NcnFeeGroup::FEE_GROUP_COUNT], - ncn_fee_group_reward_routes: [NcnRewardRoute::default(); 32], + ncn_fee_group_reward_routes: [NcnRewardRoute::default(); MAX_OPERATORS], } } @@ -659,6 +658,24 @@ mod tests { use solana_program::pubkey::Pubkey; use super::*; + #[test] + fn test_len() { + use std::mem::size_of; + + let expected_total = size_of::() // ncn + + size_of::() // ncn_epoch + + 1 // bump + + size_of::() // slot_created + + size_of::() // total_rewards + + size_of::() // reward_pool + + size_of::() // rewards_processed + + 128 // reserved + + size_of::() * NcnFeeGroup::FEE_GROUP_COUNT // base_fee_group_rewards + + size_of::() * NcnFeeGroup::FEE_GROUP_COUNT // ncn_fee_group_rewards + + size_of::() * MAX_OPERATORS; // ncn_fee_group_reward_routes + + assert_eq!(size_of::(), expected_total); + } #[test] fn test_route_incoming_rewards() { diff --git a/core/src/constants.rs b/core/src/constants.rs index 109a91bb..d25c003c 100644 --- a/core/src/constants.rs +++ b/core/src/constants.rs @@ -4,6 +4,7 @@ use crate::error::TipRouterError; pub const MAX_FEE_BPS: u64 = 10_000; pub const MAX_VAULT_OPERATOR_DELEGATIONS: usize = 64; +pub const MAX_OPERATORS: usize = 256; const PRECISE_CONSENSUS_NUMERATOR: u128 = 2; const PRECISE_CONSENSUS_DENOMINATOR: u128 = 3; pub fn precise_consensus() -> Result { diff --git a/core/src/epoch_snapshot.rs b/core/src/epoch_snapshot.rs index 4c17e4bc..2978cf43 100644 --- a/core/src/epoch_snapshot.rs +++ b/core/src/epoch_snapshot.rs @@ -214,51 +214,7 @@ pub struct OperatorSnapshot { stake_weights: StakeWeights, reserved: [u8; 256], - //TODO change to 64 - vault_operator_stake_weight: [VaultOperatorStakeWeight; 32], -} - -#[derive(Debug, Clone, Copy, Zeroable, ShankType, Pod, ShankType)] -#[repr(C)] -pub struct VaultOperatorStakeWeight { - vault: Pubkey, - stake_weight: PodU128, - vault_index: PodU64, - reserved: [u8; 32], -} - -impl Default for VaultOperatorStakeWeight { - fn default() -> Self { - Self { - vault: Pubkey::default(), - vault_index: PodU64::from(u64::MAX), - stake_weight: PodU128::from(0), - reserved: [0; 32], - } - } -} - -impl VaultOperatorStakeWeight { - pub fn new(vault: Pubkey, stake_weight: u128, vault_index: u64) -> Self { - Self { - vault, - vault_index: PodU64::from(vault_index), - stake_weight: PodU128::from(stake_weight), - reserved: [0; 32], - } - } - - pub fn is_empty(&self) -> bool { - self.vault_index() == u64::MAX - } - - pub fn vault_index(&self) -> u64 { - self.vault_index.into() - } - - pub fn stake_weight(&self) -> u128 { - self.stake_weight.into() - } + vault_operator_stake_weight: [VaultOperatorStakeWeight; 64], } impl Discriminator for OperatorSnapshot { @@ -601,7 +557,7 @@ mod tests { use super::*; #[test] - fn test_len() { + fn test_operator_snapshot_size() { use std::mem::size_of; let expected_total = size_of::() // operator @@ -617,10 +573,12 @@ mod tests { + size_of::() // vault_operator_delegation_count + size_of::() // vault_operator_delegations_registered + size_of::() // valid_operator_vault_delegations - + size_of::() // stake_weight + + size_of::() // stake_weight + 256 // reserved + size_of::() * MAX_VAULT_OPERATOR_DELEGATIONS; // vault_operator_stake_weight assert_eq!(size_of::(), expected_total); + println!("expected_total: {}", expected_total); + assert!(false); } } diff --git a/core/src/ncn_reward_router.rs b/core/src/ncn_reward_router.rs index 3a26edc4..a2b83881 100644 --- a/core/src/ncn_reward_router.rs +++ b/core/src/ncn_reward_router.rs @@ -10,8 +10,8 @@ use solana_program::{ use spl_math::precise_number::PreciseNumber; use crate::{ - discriminators::Discriminators, epoch_snapshot::OperatorSnapshot, error::TipRouterError, - ncn_fee_group::NcnFeeGroup, + constants::MAX_VAULT_OPERATOR_DELEGATIONS, discriminators::Discriminators, + epoch_snapshot::OperatorSnapshot, error::TipRouterError, ncn_fee_group::NcnFeeGroup, }; // PDA'd ["epoch_reward_router", NCN, NCN_EPOCH_SLOT] @@ -40,8 +40,7 @@ pub struct NcnRewardRouter { reserved: [u8; 128], - //TODO change to 64 - vault_reward_routes: [VaultRewardRoute; 32], + vault_reward_routes: [VaultRewardRoute; 64], } impl Discriminator for NcnRewardRouter { @@ -69,7 +68,7 @@ impl NcnRewardRouter { rewards_processed: PodU64::from(0), operator_rewards: PodU64::from(0), reserved: [0; 128], - vault_reward_routes: [VaultRewardRoute::default(); 32], + vault_reward_routes: [VaultRewardRoute::default(); MAX_VAULT_OPERATOR_DELEGATIONS], } } @@ -552,6 +551,26 @@ mod tests { use super::*; + #[test] + fn test_len() { + use std::mem::size_of; + + let expected_total = size_of::() // ncn_fee_group + + size_of::() // operator + + size_of::() // ncn + + size_of::() // ncn_epoch + + 1 // bump + + size_of::() // slot_created + + size_of::() // total_rewards + + size_of::() // reward_pool + + size_of::() // rewards_processed + + size_of::() // operator_rewards + + 128 // reserved + + size_of::() * MAX_VAULT_OPERATOR_DELEGATIONS; // vault_reward_routes + + assert_eq!(size_of::(), expected_total); + } + #[test] fn test_route_incoming_rewards() { let mut router = NcnRewardRouter::new( diff --git a/core/src/tracked_mints.rs b/core/src/tracked_mints.rs index be73db2b..82cc25a8 100644 --- a/core/src/tracked_mints.rs +++ b/core/src/tracked_mints.rs @@ -7,8 +7,8 @@ use solana_program::{account_info::AccountInfo, msg, program_error::ProgramError use crate::{ constants::MAX_VAULT_OPERATOR_DELEGATIONS, discriminators::Discriminators, - error::TipRouterError, -, ncn_fee_group::NcnFeeGroup}; + error::TipRouterError, ncn_fee_group::NcnFeeGroup, +}; #[derive(Debug, Clone, Copy, Zeroable, ShankType, Pod)] #[repr(C)] diff --git a/idl/jito_tip_router.json b/idl/jito_tip_router.json index 9746d4e1..78bce846 100644 --- a/idl/jito_tip_router.json +++ b/idl/jito_tip_router.json @@ -1348,7 +1348,7 @@ { "defined": "OperatorVote" }, - 16 + 256 ] } }, @@ -1359,7 +1359,7 @@ { "defined": "BallotTally" }, - 16 + 256 ] } } @@ -1447,7 +1447,7 @@ { "defined": "NcnRewardRoute" }, - 32 + 256 ] } } @@ -1632,7 +1632,7 @@ { "defined": "VaultOperatorStakeWeight" }, - 32 + 64 ] } } @@ -1765,7 +1765,7 @@ { "defined": "VaultRewardRoute" }, - 32 + 64 ] } } @@ -1790,7 +1790,7 @@ "type": { "array": [ "u8", - 7 + 127 ] } }, @@ -1801,7 +1801,7 @@ { "defined": "MintEntry" }, - 16 + 64 ] } } From 8ce7c66a86df23a96b2a21bea72157fc12c91598 Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Tue, 10 Dec 2024 18:39:21 -0500 Subject: [PATCH 3/5] delete rando --- core/src/mint_entry_serde.rs | 83 ------------------------------------ 1 file changed, 83 deletions(-) delete mode 100644 core/src/mint_entry_serde.rs diff --git a/core/src/mint_entry_serde.rs b/core/src/mint_entry_serde.rs deleted file mode 100644 index f6a6ac01..00000000 --- a/core/src/mint_entry_serde.rs +++ /dev/null @@ -1,83 +0,0 @@ -// mint_entry_serde.rs -use std::{fmt, marker::PhantomData}; - -use serde::{ - de::{Error, SeqAccess, Visitor}, - ser::SerializeSeq, - Deserialize, Deserializer, Serialize, Serializer, -}; - -use crate::tracked_mints::MintEntry; - -// Helper struct for serialization -#[derive(Serialize, Deserialize)] -struct SerializableMintEntry { - st_mint: String, // Pubkey as base58 string - vault_index: u64, - #[serde(with = "serde_with::As::")] - reserved: [u8; 32], -} - -impl From<&MintEntry> for SerializableMintEntry { - fn from(entry: &MintEntry) -> Self { - Self { - st_mint: entry.st_mint.to_string(), - vault_index: entry.vault_index.into(), - reserved: entry.reserved, - } - } -} - -impl From for MintEntry { - fn from(entry: SerializableMintEntry) -> Self { - Self { - st_mint: entry.st_mint.parse().unwrap_or_default(), - vault_index: entry.vault_index.into(), - reserved: entry.reserved, - } - } -} -pub struct MintEntryArraySerializer; - -impl MintEntryArraySerializer { - pub fn serialize(entries: &[MintEntry; 64], serializer: S) -> Result - where - S: Serializer, - { - let mut seq = serializer.serialize_seq(Some(64))?; - for entry in entries.iter() { - seq.serialize_element(&SerializableMintEntry::from(entry))?; - } - seq.end() - } - - pub fn deserialize<'de, D>(deserializer: D) -> Result<[MintEntry; 64], D::Error> - where - D: Deserializer<'de>, - { - struct MintEntryArrayVisitor(PhantomData); - - impl<'de> Visitor<'de> for MintEntryArrayVisitor { - type Value = [MintEntry; 64]; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("an array of 64 MintEntry") - } - - fn visit_seq(self, mut seq: A) -> Result - where - A: SeqAccess<'de>, - { - let mut entries = [MintEntry::default(); 64]; - for i in 0..64 { - entries[i] = seq - .next_element()? - .ok_or_else(|| Error::invalid_length(i, &self))?; - } - Ok(entries) - } - } - - deserializer.deserialize_seq(MintEntryArrayVisitor(PhantomData)) - } -} From 65eb30863c4986df33e166bc93fd406e75981fa5 Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Tue, 10 Dec 2024 18:40:05 -0500 Subject: [PATCH 4/5] dont' need that --- scripts/generate-clients.js | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/scripts/generate-clients.js b/scripts/generate-clients.js index 366ada77..3119c703 100644 --- a/scripts/generate-clients.js +++ b/scripts/generate-clients.js @@ -119,32 +119,11 @@ weightTableKinobi.update(kinobi.bottomUpTransformerVisitor([ }; }, }, - // Override the default behavior for large arrays - { - select: (node) => { - return ( - (kinobi.isNode(node, "structFieldTypeNode") && - ((kinobi.isNode(node.type, "arrayTypeNode") && - kinobi.isNode(node.type.count, "fixedCountNode") && - node.type.count.value > 32) || - (kinobi.isNode(node.type, ["bytesTypeNode", "stringTypeNode"]) && - kinobi.isNode(node.type, "fixedSizeTypeNode") && - node.type.size > 32))) - ); - }, - transform: (node) => { - // Just return the node without adding the serde_with attribute - return node; - }, - }, - - ])); weightTableKinobi.accept(renderers.renderRustVisitor(path.join(rustWeightTableClientDir, "src", "generated"), { formatCode: true, crateFolder: rustWeightTableClientDir, deleteFolderBeforeRendering: true, toolchain: "+nightly-2024-07-25" - })); weightTableKinobi.accept(renderers.renderJavaScriptVisitor(path.join(jsWeightTableClientDir), {})); From f1b098e3b43e1211213b8eb4ee5f52504d7a9119 Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Wed, 11 Dec 2024 14:36:29 -0500 Subject: [PATCH 5/5] Fix build? --- Cargo.lock | 492 +++-------------------------------------------------- 1 file changed, 23 insertions(+), 469 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 23d1bf91..9617713a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -211,7 +211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" dependencies = [ "anchor-syn", - "borsh-derive-internal 0.10.4", + "borsh-derive-internal 0.9.3", "proc-macro2", "quote", "syn 1.0.109", @@ -247,7 +247,7 @@ dependencies = [ "arrayref", "base64 0.21.7", "bincode", - "borsh 0.10.4", + "borsh 0.9.3", "bytemuck", "getrandom 0.2.15", "solana-program 1.18.26", @@ -767,7 +767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" dependencies = [ "borsh-derive 0.10.4", - "hashbrown 0.13.2", + "hashbrown 0.11.2", ] [[package]] @@ -1333,34 +1333,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest 0.10.7", - "fiat-crypto", - "rand_core 0.6.4", - "rustc_version", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "darling" version = "0.20.10" @@ -1615,7 +1587,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek 3.2.1", + "curve25519-dalek", "ed25519", "rand 0.7.3", "serde", @@ -1779,12 +1751,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - [[package]] name = "filetime" version = "0.2.25" @@ -1797,21 +1763,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "five8_const" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b4f62f0f8ca357f93ae90c8c2dd1041a1f665fde2f889ea9b1787903829015" -dependencies = [ - "five8_core", -] - -[[package]] -name = "five8_core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94474d15a76982be62ca8a39570dccce148d98c238ebb7408b0a21b2c4bdddc4" - [[package]] name = "flate2" version = "1.0.35" @@ -3367,7 +3318,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 2.0.90", @@ -4609,19 +4560,6 @@ dependencies = [ "zstd", ] -[[package]] -name = "solana-account-info" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885a819467268110e40a728ef09ff296b5f18e69de729af44c0a28671f274580" -dependencies = [ - "bincode", - "serde", - "solana-program-error", - "solana-program-memory", - "solana-pubkey", -] - [[package]] name = "solana-accounts-db" version = "1.18.26" @@ -4704,15 +4642,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "solana-atomic-u64" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e63b09d9058cea0bc0ea0e6227ceaadaa4f9e9a2c184e4743fb62900e9ad7d" -dependencies = [ - "parking_lot", -] - [[package]] name = "solana-banks-client" version = "1.18.26" @@ -4761,27 +4690,6 @@ dependencies = [ "tokio-serde", ] -[[package]] -name = "solana-bincode" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6232690ae84a8183101d795c34cc43742fe72f9aba49a8724c13e13c2d52c8" -dependencies = [ - "bincode", - "serde", - "solana-instruction", -] - -[[package]] -name = "solana-borsh" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e70388e69fa1df45afc5a3b3b2e572e5a435106164ffc764be2f1cdf0d6d08f" -dependencies = [ - "borsh 0.10.4", - "borsh 1.5.3", -] - [[package]] name = "solana-bpf-loader-program" version = "1.18.26" @@ -4885,18 +4793,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "solana-clock" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1969ec04d32c713949cdb85256620a4e1f08856d6ae2d56b3cb0d981ff67ea2" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-macro 2.1.5", - "solana-sysvar-id", -] - [[package]] name = "solana-compute-budget-program" version = "1.18.26" @@ -4967,58 +4863,6 @@ dependencies = [ "solana-vote-program", ] -[[package]] -name = "solana-cpi" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a164c4b9fb754e2d58dbf93969170727e98097f2cf12249ab7286afde8bb199e" -dependencies = [ - "solana-account-info", - "solana-define-syscall", - "solana-instruction", - "solana-program-error", - "solana-pubkey", - "solana-stable-layout", -] - -[[package]] -name = "solana-decode-error" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbec80e0c0480edfedfdd37b5e5704348df251b9ec3661a20ed4c5952cea48ca" -dependencies = [ - "num-traits", -] - -[[package]] -name = "solana-define-syscall" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dae93c2bfe6a19a652d9b7c5c085540aac1e5ed6504d40ed0cb7271c935121b" - -[[package]] -name = "solana-epoch-schedule" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e0a219e92b4a1517686f70eb69331abf62c7043ec846d41bf7c00496489572" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-macro 2.1.5", - "solana-sysvar-id", -] - -[[package]] -name = "solana-fee-calculator" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb19a3de34185a388bba7ff5849d11199ca3f44e2d9458da0743dd3ee764fd4" -dependencies = [ - "log", - "serde", - "serde_derive", -] - [[package]] name = "solana-frozen-abi" version = "1.18.26" @@ -5056,54 +4900,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "solana-hash" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453b0d210de622407b7264f14a786e785c98fd1438bd1d4c882bd15b0ad1b5a8" -dependencies = [ - "borsh 1.5.3", - "bs58 0.5.1", - "bytemuck", - "bytemuck_derive", - "js-sys", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", -] - -[[package]] -name = "solana-instruction" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1538578b25d17016fed279b3c3a714cce37c82ccbdc0c0b3926029e689a38d02" -dependencies = [ - "bincode", - "borsh 1.5.3", - "getrandom 0.2.15", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", -] - -[[package]] -name = "solana-last-restart-slot" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75665b3505c411abf16c0ac97cef6b9f97b2dbf0d1a3cd1532d9f39dfec8547" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-macro 2.1.5", - "solana-sysvar-id", -] - [[package]] name = "solana-loader-v4-program" version = "1.18.26" @@ -5153,21 +4949,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "solana-msg" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efdc384958aa8083295c137ea80da165818c23bfbe92669b2caed2349409b2ff" -dependencies = [ - "solana-define-syscall", -] - -[[package]] -name = "solana-native-token" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe69b2e7a08b2e3c399164ec39f578adfbfb873bfa3e444680a7c6bca86766ef" - [[package]] name = "solana-net-utils" version = "1.18.26" @@ -5206,7 +4987,7 @@ dependencies = [ "bincode", "bv", "caps", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "dlopen2", "fnv", "lazy_static", @@ -5248,7 +5029,7 @@ dependencies = [ "cc", "console_error_panic_hook", "console_log", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "getrandom 0.2.15", "itertools", "js-sys", @@ -5282,10 +5063,14 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.5" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e18203c102b59adb673098abea6f370d35e21a755dbe6356b14f4fb666a36cb4" +checksum = "3c75b255c34423a56d35bf695ada268d15112f782771f2a0ad12f28b5fb07cd3" dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", "base64 0.22.1", "bincode", "bitflags 2.6.0", @@ -5298,11 +5083,11 @@ dependencies = [ "bytemuck_derive", "console_error_panic_hook", "console_log", - "curve25519-dalek 4.1.3", - "five8_const", + "curve25519-dalek", "getrandom 0.2.15", "js-sys", "lazy_static", + "libsecp256k1", "log", "memoffset 0.9.1", "num-bigint 0.4.6", @@ -5310,102 +5095,18 @@ dependencies = [ "num-traits", "parking_lot", "rand 0.8.5", + "rustc_version", + "rustversion", "serde", "serde_bytes", "serde_derive", "sha2 0.10.8", "sha3 0.10.8", - "solana-account-info", - "solana-atomic-u64", - "solana-bincode", - "solana-borsh", - "solana-clock", - "solana-cpi", - "solana-decode-error", - "solana-define-syscall", - "solana-epoch-schedule", - "solana-fee-calculator", - "solana-hash", - "solana-instruction", - "solana-last-restart-slot", - "solana-msg", - "solana-native-token", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sanitize", - "solana-sdk-macro 2.1.5", - "solana-secp256k1-recover", - "solana-serde-varint", - "solana-serialize-utils", - "solana-sha256-hasher", - "solana-short-vec", - "solana-slot-hashes", - "solana-slot-history", - "solana-stable-layout", - "solana-sysvar-id", - "solana-transaction-error", + "solana-sdk-macro 2.0.4", "thiserror", "wasm-bindgen", ] -[[package]] -name = "solana-program-entrypoint" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb29a59145a7535b29e9c3a0bc00b75ac709461239434ce31dd25001c6297ac" -dependencies = [ - "solana-account-info", - "solana-msg", - "solana-program-error", - "solana-pubkey", -] - -[[package]] -name = "solana-program-error" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b5a23fa370c03e48f586f133db902b7b51ac6c99b2f02ac61639e2fe5cfe37" -dependencies = [ - "borsh 1.5.3", - "num-traits", - "serde", - "serde_derive", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-pubkey", -] - -[[package]] -name = "solana-program-memory" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6d7ca2ce51d8366ead44309221118ebab00f2afc85ab33342b0e17378d630" -dependencies = [ - "num-traits", - "solana-define-syscall", -] - -[[package]] -name = "solana-program-option" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645cd0a0ffff04b6fe0e69b20229137a6241d3cdac5f8bd35807b29b9bec7f3b" - -[[package]] -name = "solana-program-pack" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9c953adc32f4e877a7dcbdf685770dae978aa91ecc62ce6a963c9cc1ad0542" -dependencies = [ - "solana-program-error", -] - [[package]] name = "solana-program-runtime" version = "1.18.26" @@ -5464,32 +5165,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "solana-pubkey" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e3480e24e3f8127dbe32d6fe22dc76dd143fa9b7622ef2345dcb5fa3a70bbfe" -dependencies = [ - "borsh 0.10.4", - "borsh 1.5.3", - "bs58 0.5.1", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8_const", - "getrandom 0.2.15", - "js-sys", - "num-traits", - "serde", - "serde_derive", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", -] - [[package]] name = "solana-pubsub-client" version = "1.18.26" @@ -5571,18 +5246,6 @@ dependencies = [ "uriparse", ] -[[package]] -name = "solana-rent" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51a6f5fd26b7e21caf414ef03b88b93eb4220a2aedda78085c64fa1bf4f45d69" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-macro 2.1.5", - "solana-sysvar-id", -] - [[package]] name = "solana-rpc-client" version = "1.18.26" @@ -5721,12 +5384,6 @@ dependencies = [ "zstd", ] -[[package]] -name = "solana-sanitize" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4487b5a078a0132533456ef14ca51a6ba2ce92b0d20f384ac518d0ff565a1235" - [[package]] name = "solana-sdk" version = "1.18.26" @@ -5797,27 +5454,17 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.5" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b60e5789a960153794568f1eeb48a08908fc9d090aeb71fd2b6079a0842534" +checksum = "e6073cfb240aa571f11511ea3add3a699a44e7e80c696b34b30a6fc126827c9f" dependencies = [ "bs58 0.5.1", "proc-macro2", "quote", + "rustversion", "syn 2.0.90", ] -[[package]] -name = "solana-secp256k1-recover" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5299f38be33f0e8df79ebf335ef69824fae237d942fb3021ef37185a782ac72d" -dependencies = [ - "libsecp256k1", - "solana-define-syscall", - "thiserror", -] - [[package]] name = "solana-security-txt" version = "1.1.1" @@ -5840,80 +5487,6 @@ dependencies = [ "solana-tpu-client", ] -[[package]] -name = "solana-serde-varint" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ca166cb1b22c4cf57a22dc3361dcb3b4e9e13c2988f01d6ecf1f17d6cbaf24" -dependencies = [ - "serde", -] - -[[package]] -name = "solana-serialize-utils" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed854c3d6f93ac585d3b3ab7d9c1517d7b23790d20a050b2c40b63db1ec1546b" -dependencies = [ - "solana-instruction", - "solana-pubkey", - "solana-sanitize", -] - -[[package]] -name = "solana-sha256-hasher" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a95731a17cb43f11972296b53d930d0cbdb3f665e76a8d35a36393e7adcba21" -dependencies = [ - "sha2 0.10.8", - "solana-define-syscall", - "solana-hash", -] - -[[package]] -name = "solana-short-vec" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094937132155615ceccad771b146828a1893d16e19d696d92ea5846b5f77caac" -dependencies = [ - "serde", -] - -[[package]] -name = "solana-slot-hashes" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "160bc9cecd8b27c3b63277dabfc5bcff19b986d1863a1ade50191eb177aab490" -dependencies = [ - "serde", - "serde_derive", - "solana-hash", - "solana-sysvar-id", -] - -[[package]] -name = "solana-slot-history" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4abcfab5789313d9f1635b69e47ca9940d7e4b7eb3fdacfef155c5b9d2a75fc" -dependencies = [ - "bv", - "serde", - "serde_derive", - "solana-sysvar-id", -] - -[[package]] -name = "solana-stable-layout" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfcfffdb3ad08144f3a3e781f49df4416bba0863770bb6b4c8b776746a49f0bf" -dependencies = [ - "solana-instruction", - "solana-pubkey", -] - [[package]] name = "solana-stake-program" version = "1.18.26" @@ -5976,15 +5549,6 @@ dependencies = [ "solana-sdk", ] -[[package]] -name = "solana-sysvar-id" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba12c593ed5e9bf2a31214212a8e1769037b6161c9df9efc0d27d69c8407dd" -dependencies = [ - "solana-pubkey", -] - [[package]] name = "solana-thin-client" version = "1.18.26" @@ -6024,16 +5588,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "solana-transaction-error" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc6386499d3267e70c7d469e68372020d5e958ace19c78671eb7b09c2f4eef2" -dependencies = [ - "solana-instruction", - "solana-sanitize", -] - [[package]] name = "solana-transaction-status" version = "1.18.26" @@ -6156,7 +5710,7 @@ dependencies = [ "bincode", "bytemuck", "byteorder", - "curve25519-dalek 3.2.1", + "curve25519-dalek", "getrandom 0.1.16", "itertools", "lazy_static", @@ -6310,7 +5864,7 @@ dependencies = [ "borsh 1.5.3", "num-derive 0.4.2", "num-traits", - "solana-program 2.1.5", + "solana-program 2.0.4", "thiserror", "uint", ]