diff --git a/CHANGELOG.md b/CHANGELOG.md index f74c5a37a..4ee74ad62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,21 @@ incremented upon a breaking change and the patch version will be incremented for ## [dev] - Unreleased +## [0.8.1] - 2024-11-14 + +**Removed** + +- removed unnecesarry deserialization with AccountsSnapshots, to deserialize data implementation AccountDeserialize can be used ([221](https://github.com/Ackee-Blockchain/trident/pull/221)) + +**Changed** + +- improve AccountsStorage module structure and remove unnecessary methods in FuzzClient ([223](https://github.com/Ackee-Blockchain/trident/pull/223)) +- improve manipulations with AccountsStorages in get_accounts() function ([219](https://github.com/Ackee-Blockchain/trident/pull/219)) + +**Added** + +- add pre_sequence!, middle_sequence! and post_sequence! for easier sequence definition ([220](https://github.com/Ackee-Blockchain/trident/pull/220)) +- add/ add support for Clock sysvar manipulations with the client(i.e. warp to slot/epoch and forward in time) ([217](https://github.com/Ackee-Blockchain/trident/pull/217)) ## [0.8.0] - 2024-10-21 diff --git a/Cargo.lock b/Cargo.lock index 508867c99..b0dffbeb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -348,43 +348,43 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -569,7 +569,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -631,7 +631,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -784,11 +784,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", ] @@ -820,16 +820,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.82", - "syn_derive", + "syn 2.0.87", ] [[package]] @@ -945,7 +944,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1025,9 +1024,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", @@ -1090,7 +1089,7 @@ dependencies = [ "bitflags 1.3.2", "strsim 0.8.0", "textwrap 0.11.0", - "unicode-width", + "unicode-width 0.1.14", "vec_map", ] @@ -1112,9 +1111,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -1122,13 +1121,13 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.2", + "clap_lex 0.7.3", "strsim 0.11.1", ] @@ -1141,7 +1140,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1155,15 +1154,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "combine" @@ -1196,7 +1195,7 @@ dependencies = [ "encode_unicode 0.3.6", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -1268,9 +1267,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6" dependencies = [ "libc", ] @@ -1419,9 +1418,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", @@ -1482,7 +1481,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1493,7 +1492,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1567,13 +1566,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1658,7 +1657,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1681,7 +1680,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1763,9 +1762,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1787,7 +1786,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1800,7 +1799,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -1840,9 +1839,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "feature-probe" @@ -1884,9 +1883,9 @@ dependencies = [ [[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", @@ -1978,7 +1977,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2138,9 +2137,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2342,6 +2341,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2350,12 +2467,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]] @@ -2416,29 +2544,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[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]] @@ -2541,7 +2660,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -2552,9 +2671,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.162" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" [[package]] name = "libredox" @@ -2633,6 +2752,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2921,7 +3046,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3002,7 +3127,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3014,7 +3139,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3186,29 +3311,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3323,7 +3448,7 @@ dependencies = [ "is-terminal", "lazy_static", "term", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -3380,9 +3505,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3404,7 +3529,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3599,9 +3724,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3611,9 +3736,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", @@ -3752,9 +3877,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" dependencies = [ "bitflags 2.6.0", "errno", @@ -3859,7 +3984,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3887,9 +4012,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -3915,9 +4040,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -3933,13 +4058,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -3994,7 +4119,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -4265,7 +4390,7 @@ 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", @@ -4498,7 +4623,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -4623,7 +4748,7 @@ dependencies = [ "blake3", "borsh 0.10.4", "borsh 0.9.3", - "borsh 1.5.1", + "borsh 1.5.3", "bs58 0.4.0", "bv", "bytemuck", @@ -4949,7 +5074,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", @@ -5004,7 +5129,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5346,7 +5471,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5358,7 +5483,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.82", + "syn 2.0.87", "thiserror", ] @@ -5406,7 +5531,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5518,6 +5643,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5595,27 +5726,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" 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.82", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -5634,6 +5753,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5657,9 +5787,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5703,9 +5833,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", @@ -5747,7 +5877,7 @@ dependencies = [ "minimad", "serde", "thiserror", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -5774,7 +5904,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5785,7 +5915,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "test-case-core", ] @@ -5795,7 +5925,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]] @@ -5806,22 +5936,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -5884,6 +6014,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" @@ -5901,9 +6041,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", @@ -5925,7 +6065,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6089,7 +6229,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", ] [[package]] @@ -6128,10 +6268,10 @@ dependencies = [ [[package]] name = "trident-cli" -version = "0.8.0" +version = "0.8.1" dependencies = [ "anyhow", - "clap 4.5.20", + "clap 4.5.21", "fehler", "termimad", "tokio", @@ -6140,7 +6280,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.8.0" +version = "0.8.1" dependencies = [ "afl", "anchor-lang", @@ -6162,30 +6302,18 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.82", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", - "trident-derive-accounts-snapshots", "trident-derive-displayix", "trident-derive-fuzz-test-executor", "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.2" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.3" +version = "0.0.4" dependencies = [ "proc-macro2", "quote", @@ -6194,7 +6322,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.3" +version = "0.0.4" dependencies = [ "proc-macro2", "quote", @@ -6203,7 +6331,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.2.0" +version = "0.2.1" dependencies = [ "anchor-lang", "anyhow", @@ -6217,6 +6345,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -6256,12 +6386,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6289,6 +6413,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" @@ -6338,9 +6468,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6353,6 +6483,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" @@ -6436,7 +6578,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -6470,7 +6612,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6491,6 +6633,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.24.0" @@ -6722,6 +6874,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" @@ -6772,6 +6936,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6790,7 +6978,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6810,7 +7019,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 238e829de..d2e0d9f6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,5 +19,7 @@ solana-program = "1.17.4" solana-banks-client = "1.17.4" solana-program-runtime = "1.17.4" solana-program-test = "1.17.4" +solana-vote-program = "1.17.4" +solana-stake-program = "1.17.4" spl-associated-token-account = { version = "2", features = ["no-entrypoint"] } spl-token = { version = "4", features = ["no-entrypoint"] } diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index c759cfdfc..e21c22853 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trident-cli" -version = "0.8.0" +version = "0.8.1" edition = "2021" repository = "https://github.com/Ackee-Blockchain/trident" license-file = "../../LICENSE" @@ -9,7 +9,7 @@ description = "Trident is Rust based testing framework providing several conveni [dependencies] # TRIDENT -trident-client = { path = "../client", version = "0.8.0" } +trident-client = { path = "../client", version = "0.8.1" } # MISC clap = { version = "4", features = ["derive"] } diff --git a/crates/cli/src/howto.md b/crates/cli/src/howto.md index a3f0cff39..c2701fcc5 100644 --- a/crates/cli/src/howto.md +++ b/crates/cli/src/howto.md @@ -20,24 +20,7 @@ For more info about Honggfuzz installation check https://github.com/rust-fuzz/ho trident init ``` -- Derive ***AccountsSnapshots*** for each account context in the program: - -```rust -use trident_derive_accounts_snapshots::AccountsSnapshots; - -#[derive(AccountsSnapshots, Accounts)] -pub struct InitializeContext<'info> { -// ... -} - -``` - -- Link Account Context Aliases in the ***fuzz_instructions.rs*** with desired Snapshots - -```rust -use hello_world::trident_fuzz_initialize_context_snapshot::InitializeContextAlias; -type InitializeFnSnapshot<'info> = InitializeContextAlias<'info>; -``` +## Write Fuzz Test - Implement the ***todo!*** placeholders in ***fuzz_instructions.rs*** based on the provided descriptions. diff --git a/crates/client/Cargo.toml b/crates/client/Cargo.toml index fddec46f9..863a241af 100644 --- a/crates/client/Cargo.toml +++ b/crates/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trident-client" -version = "0.8.0" +version = "0.8.1" edition = "2021" repository = "https://github.com/Ackee-Blockchain/trident" license-file = "../../LICENSE" @@ -10,10 +10,9 @@ description = "The trident_client crate helps you build and deploy an Anchor pro [dependencies] # TRIDENT -trident-derive-displayix = { path = "../fuzz/derive/display_ix", version = "0.0.3" } -trident-derive-fuzz-test-executor = { path = "../fuzz/derive/fuzz_test_executor", version = "0.0.3" } -trident-fuzz = { path = "../fuzz", version = "0.2.0" } -trident-derive-accounts-snapshots = { path = "../fuzz/derive/accounts_snapshots", version = "0.0.2" } +trident-derive-displayix = { path = "../fuzz/derive/display_ix", version = "0.0.4" } +trident-derive-fuzz-test-executor = { path = "../fuzz/derive/fuzz_test_executor", version = "0.0.4" } +trident-fuzz = { path = "../fuzz", version = "0.2.1" } # ANCHOR # INFO: Anchor-spl is here as dependency only to activate the idl-build feature, so that # users do not have to do it manually in their program's Cargo.toml diff --git a/crates/client/config.json b/crates/client/config.json index 1df63daa0..5e1fadef1 100644 --- a/crates/client/config.json +++ b/crates/client/config.json @@ -1,5 +1,3 @@ { - "trident_fuzz": "0.2.0", - "trident_derive_accounts_snapshots": "0.0.2", - "trident_client": "0.8.0" + "trident_client": "0.8.1" } diff --git a/crates/client/src/anchor_idl.rs b/crates/client/src/anchor_idl.rs index 9dd397cb5..3cfe44af1 100644 --- a/crates/client/src/anchor_idl.rs +++ b/crates/client/src/anchor_idl.rs @@ -1,6 +1,5 @@ use anchor_lang_idl_spec::Idl; use cargo_metadata::Package; -use convert_case::{Case, Casing}; use std::error::Error; use std::fs::{self, File}; @@ -13,13 +12,9 @@ pub fn load_idls( ) -> Result, Box> { let mut idls = Vec::new(); - let package_names: Vec = program_packages + let mut package_names = program_packages .iter() - .map(|package| { - let name = &package.name; - name.to_case(Case::Snake) - }) - .collect(); + .map(|package| package.name.replace("-", "_")); // Read the directory and iterate over each entry for entry in fs::read_dir(dir_path)? { @@ -34,7 +29,7 @@ pub fn load_idls( let package_name = idl_name_str.trim_end_matches(".json"); // Check if the package name is in the list of known packages - if package_names.iter().any(|name| name == package_name) { + if package_names.any(|package| package == package_name) { // Open the file in read-only mode let mut file = File::open(&path)?; diff --git a/crates/client/src/lib.rs b/crates/client/src/lib.rs index fdd41e690..31b4b5e11 100644 --- a/crates/client/src/lib.rs +++ b/crates/client/src/lib.rs @@ -8,6 +8,7 @@ pub mod fuzzing { /// anchor_lang pub use anchor_lang; pub use anchor_lang::solana_program::hash::Hash; + pub use anchor_lang::AccountDeserialize; pub use anchor_lang::InstructionData; pub use anchor_lang::Key; pub use anchor_lang::ToAccountInfo; @@ -15,10 +16,13 @@ pub mod fuzzing { /// solana_sdk pub use solana_sdk; + pub use solana_sdk::account::AccountSharedData; + pub use solana_sdk::account::ReadableAccount; pub use solana_sdk::account_info::AccountInfo; pub use solana_sdk::entrypoint::ProcessInstruction; pub use solana_sdk::instruction::AccountMeta; pub use solana_sdk::instruction::Instruction; + pub use solana_sdk::native_token::LAMPORTS_PER_SOL; pub use solana_sdk::pubkey::Pubkey; pub use solana_sdk::signer::keypair::Keypair; pub use solana_sdk::signer::Signer; @@ -36,6 +40,9 @@ pub mod fuzzing { /// trident macros pub use trident_fuzz::convert_entry; pub use trident_fuzz::fuzz_trident; + pub use trident_fuzz::middle_sequence; + pub use trident_fuzz::post_sequence; + pub use trident_fuzz::pre_sequence; pub use trident_fuzz::show_account; pub use trident_fuzz::*; @@ -51,16 +58,24 @@ pub mod fuzzing { pub use trident_fuzz::fuzz_client::FuzzClient; pub use trident_fuzz::fuzz_data::build_ix_fuzz_data; pub use trident_fuzz::fuzz_data::*; - pub use trident_fuzz::fuzz_deserialize::FuzzDeserialize; pub use trident_fuzz::fuzz_stats::FuzzingStatistics; pub use trident_fuzz::fuzz_test_executor::FuzzTestExecutor; pub use trident_fuzz::ix_ops::IxOps; pub use trident_fuzz::program_test_client_blocking::ProgramTestClientBlocking; pub use trident_fuzz::snapshot::Snapshot; + pub use trident_fuzz::snapshot::SnapshotAccount; pub use trident_fuzz::transaction_executor::TransactionExecutor; pub use std::cell::RefCell; pub use std::collections::HashMap; + + pub use trident_fuzz::accounts_storage::KeypairStore; + pub use trident_fuzz::accounts_storage::MintStore; + pub use trident_fuzz::accounts_storage::PdaStore; + pub use trident_fuzz::accounts_storage::ProgramStore; + pub use trident_fuzz::accounts_storage::StakeStore; + pub use trident_fuzz::accounts_storage::TokenStore; + pub use trident_fuzz::accounts_storage::VoteStore; } mod anchor_idl; diff --git a/crates/client/src/source_code_generators/fuzz_instructions_generator.rs b/crates/client/src/source_code_generators/fuzz_instructions_generator.rs index 951ac7f73..458b17a39 100644 --- a/crates/client/src/source_code_generators/fuzz_instructions_generator.rs +++ b/crates/client/src/source_code_generators/fuzz_instructions_generator.rs @@ -11,7 +11,6 @@ pub fn generate_source_code(idls: &[Idl]) -> String { let mut all_instruction_inputs: Vec = Vec::new(); let mut all_instructions_ixops_impls: Vec = Vec::new(); let mut all_fuzz_accounts: Vec = Vec::new(); - let mut all_snapshot_types: Vec = Vec::new(); // Mappings for instructions and accounts let mut instructions_mappings: HashMap = HashMap::new(); @@ -25,7 +24,6 @@ pub fn generate_source_code(idls: &[Idl]) -> String { all_instructions.extend(get_instruction_variants(idl, &instructions_mappings)); all_instruction_inputs.extend(get_instruction_inputs(idl, &instructions_mappings)); all_instructions_ixops_impls.extend(get_instruction_ixops(idl, &instructions_mappings)); - all_snapshot_types.extend(get_snapshot_types(idl, &instructions_mappings)); all_fuzz_accounts.extend(get_fuzz_accounts(idl, &accounts_mappings)); } @@ -33,11 +31,6 @@ pub fn generate_source_code(idls: &[Idl]) -> String { let module_definition = quote! { use trident_client::fuzzing::*; - /// Link the relevant Account Context Alias from the program. - /// Aliases are generated by the `AccountsSnapshots` macro. - #(#all_snapshot_types)* - - /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -49,8 +42,8 @@ pub fn generate_source_code(idls: &[Idl]) -> String { #(#all_instructions_ixops_impls)* - /// Use AccountsStorage where T can be one of: - /// Keypair, PdaStore, TokenStore, MintStore, ProgramStore + /// Check supported AccountsStorages at + /// https://ackee.xyz/trident/docs/latest/features/account-storages/ #[derive(Default)] pub struct FuzzAccounts { #(#all_fuzz_accounts),* @@ -124,31 +117,6 @@ fn get_instruction_variants( }) } -// Generate snapshot types for each instruction -fn get_snapshot_types(idl: &Idl, instruction_mappings: &HashMap) -> Vec { - let program_name = idl.metadata.name.to_case(Case::UpperCamel); - - idl.instructions - .iter() - .fold(Vec::new(), |mut snapshot_types, instruction| { - let mut instruction_name = instruction.name.to_case(Case::UpperCamel); - let count = instruction_mappings.get(&instruction_name).unwrap_or(&1); - - // Append the program name if the instruction name is not unique - if *count > 1 { - instruction_name.push_str(&program_name); - } - - let ix_snapshot: syn::Ident = format_ident!("{}Snapshot", &instruction_name); - let ix_alias: syn::Ident = format_ident!("{}Alias", &instruction_name); - - let snapshot_type: syn::ItemType = - parse_quote! (type #ix_snapshot<'info> = #ix_alias<'info>;); - snapshot_types.push(snapshot_type); - snapshot_types - }) -} - // Generate input structures for each instruction fn get_instruction_inputs( idl: &Idl, @@ -219,7 +187,7 @@ fn get_instruction_inputs( /// Custom data types must derive `Debug` and `Arbitrary`. /// To do this, redefine the type in the fuzz test and implement the `From` trait /// to convert it into the type defined in the program. - /// For more details, see: https://ackee.xyz/trident/docs/dev/features/arbitrary-data/#custom-data-types + /// For more details, see: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#custom-data-types #[derive(Arbitrary, Debug)] pub struct #instruction_data_name { #(pub #parameters),* @@ -255,7 +223,6 @@ fn get_instruction_ixops( let instruction_ident_name_modified: syn::Ident = format_ident!("{}", &instruction_name); - let ix_snapshot: syn::Ident = format_ident!("{}Snapshot", &instruction_name); // Map arguments to their types let parameters = instruction @@ -296,10 +263,9 @@ fn get_instruction_ixops( ); let ix_impl: syn::ItemImpl = parse_quote! { #[doc = #doc_comment] - impl<'info> IxOps<'info> for #instruction_ident_name_modified { + impl IxOps for #instruction_ident_name_modified { type IxData = #module_name::instruction::#instruction_ident_name; type IxAccounts = FuzzAccounts; - type IxSnapshot = #ix_snapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { @@ -309,7 +275,7 @@ fn get_instruction_ixops( /// Definition of the Instruction data. /// Use randomly generated data from the fuzzer using `self.data.arg_name` /// or customize the data as needed. - /// For more details, visit: https://ackee.xyz/trident/docs/dev/features/fuzz-instructions/#get-data + /// For more details, visit: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#get-data fn get_data( &self, _client: &mut impl FuzzClient, @@ -322,10 +288,11 @@ fn get_instruction_ixops( } /// Definition of of the accounts required by the Instruction. - /// To utilize accounts stored in `FuzzAccounts`, use `fuzz_accounts.account_name.get_or_create_account()`. + /// To utilize accounts stored in `FuzzAccounts`, use + /// `fuzz_accounts.account_name.get_or_create_account()`. /// If no signers are required, leave the vector empty. /// For AccountMetas use ::accounts:: - /// For more details, see: https://ackee.xyz/trident/docs/dev/features/fuzz-instructions/#get-accounts + /// For more details, see: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#get-accounts fn get_accounts( &self, client: &mut impl FuzzClient, diff --git a/crates/client/src/source_code_generators/test_fuzz_generator.rs b/crates/client/src/source_code_generators/test_fuzz_generator.rs index 0df0cdaac..133c47835 100644 --- a/crates/client/src/source_code_generators/test_fuzz_generator.rs +++ b/crates/client/src/source_code_generators/test_fuzz_generator.rs @@ -1,5 +1,4 @@ use anchor_lang_idl_spec::Idl; -use convert_case::{Case, Casing}; use quote::{format_ident, ToTokens}; use syn::parse_quote; @@ -17,20 +16,21 @@ pub fn generate_source_code(idl_instructions: &[Idl]) -> String { #(#program_names)* - struct MyFuzzData; + struct InstructionsSequence; /// Define instruction sequences for invocation. - /// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. - /// For example, to call `InitializeFn` at the start of each fuzzing iteration: + /// `pre` runs at the start, `middle` in the middle, and `post` at the end. + /// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during each fuzzing iteration: /// ``` - /// fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - /// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); - /// Ok(vec![init]) - /// } + /// use fuzz_instructions::{InitializeFn, UpdateFn, WithdrawFn}; + /// impl FuzzDataBuilder for InstructionsSequence { + /// pre_sequence!(InitializeFn,UpdateFn); + /// middle_sequence!(WithdrawFn); + ///} /// ``` - /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences - impl FuzzDataBuilder for MyFuzzData {} + /// For more details, see: https://ackee.xyz/trident/docs/latest/features/instructions-sequences/#instructions-sequences + impl FuzzDataBuilder for InstructionsSequence {} /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -47,7 +47,7 @@ pub fn generate_source_code(idl_instructions: &[Idl]) -> String { fn main() { let config = Config::new(); - fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: MyFuzzData| { + fuzz_trident!(fuzz_ix: FuzzInstruction, |fuzz_data: InstructionsSequence| { fuzz_iteration(fuzz_data,&config); @@ -63,7 +63,7 @@ fn get_program_names(idl_instructions: &[Idl]) -> Vec { .iter() .map(|idl| { let program_name = &idl.metadata.name; - let program_name_upper = idl.metadata.name.to_case(Case::UpperSnake); + let program_name_upper = &idl.metadata.name; let program_name_ident = format_ident!("PROGRAM_NAME_{}", program_name_upper); parse_quote!(const #program_name_ident: &str = #program_name;) @@ -75,8 +75,8 @@ fn get_program_imports(idl_instructions: &[Idl]) -> Vec { idl_instructions .iter() .flat_map(|idl| { - let program_name = idl.metadata.name.to_case(Case::Snake); - let program_name_upper = idl.metadata.name.to_case(Case::UpperSnake); + let program_name = &idl.metadata.name; + let program_name_upper = &idl.metadata.name; let program_name_ident = format_ident!("{}", program_name); let program_entry_ident = format_ident!("entry_{}", program_name); let program_id_name_ident = format_ident!("PROGRAM_ID_{}", program_name_upper); @@ -97,8 +97,8 @@ fn get_fuzzing_programs(idl_instructions: &[Idl]) -> (Vec, syn::ExprA let fuzzing_programs: Vec = idl_instructions .iter() .map(|idl| { - let program_name = idl.metadata.name.to_case(Case::Snake); - let program_name_upper = idl.metadata.name.to_case(Case::UpperSnake); + let program_name = &idl.metadata.name; + let program_name_upper = &idl.metadata.name; let fuzzing_program_name_ident = format_ident!("fuzzing_program_{}", program_name); let program_id_name_ident = format_ident!("PROGRAM_ID_{}", program_name_upper); let program_name_ident = format_ident!("PROGRAM_NAME_{}", program_name_upper); diff --git a/crates/client/src/test_generator.rs b/crates/client/src/test_generator.rs index 701197c9b..93e8d475e 100644 --- a/crates/client/src/test_generator.rs +++ b/crates/client/src/test_generator.rs @@ -72,7 +72,7 @@ impl TestGenerator { update_gitignore(&self.root, CARGO_TARGET_DIR_DEFAULT_HFUZZ)?; // update_gitignore(&self.root, CARGO_TARGET_DIR_DEFAULT_AFL)?; - initialize_package_metadata(&self.program_packages, &self.versions_config).await?; + // initialize_package_metadata(&self.program_packages, &self.versions_config).await?; } #[throws] @@ -84,7 +84,7 @@ impl TestGenerator { self.generate_source_codes().await?; self.add_new_fuzz_test().await?; - update_package_metadata(&self.program_packages, &self.versions_config).await?; + // update_package_metadata(&self.program_packages, &self.versions_config).await?; } #[throws] diff --git a/crates/client/src/utils.rs b/crates/client/src/utils.rs index a268f18a5..ef0de3319 100644 --- a/crates/client/src/utils.rs +++ b/crates/client/src/utils.rs @@ -148,128 +148,128 @@ pub fn ensure_table<'a>(content: &'a mut Value, table_name: &str) -> Result<&'a .as_table_mut() .ok_or(Error::ParsingCargoTomlDependenciesFailed) } -#[throws] -pub async fn initialize_package_metadata( - packages: &[Package], - versions_config: &TridentVersionsConfig, -) { - for package in packages { - let manifest_path = package.manifest_path.as_std_path(); - let cargo_toml_content = fs::read_to_string(&manifest_path).await?; - let mut cargo_toml: Value = toml::from_str(&cargo_toml_content)?; - - // Ensure the 'trident-fuzzing' feature exists with the required dependency. - let features_table = ensure_table(&mut cargo_toml, "features")?; - - features_table.insert( - "trident-fuzzing".to_string(), - Value::Array(vec![Value::String("dep:trident-fuzz".to_string())]), - ); - - // Ensure the required dependencies are present in the 'dependencies' section. - let dependencies_table = ensure_table(&mut cargo_toml, "dependencies")?; - - // Add 'trident-derive-accounts-snapshots' dependency in table format. - dependencies_table.insert( - "trident-derive-accounts-snapshots".to_string(), - Value::Table({ - let mut snapshots_table = toml::Table::new(); - snapshots_table.insert( - "version".to_string(), - Value::String(versions_config.trident_derive_accounts_snapshots.clone()), - ); - snapshots_table - }), - ); - - // Add 'trident-fuzz' dependency with specified attributes if not present. - dependencies_table.insert( - "trident-fuzz".to_string(), - Value::Table({ - let mut trident_fuzz_table = toml::Table::new(); - trident_fuzz_table.insert( - "version".to_string(), - Value::String(versions_config.trident_fuzz.clone()), - ); - trident_fuzz_table.insert("optional".to_string(), Value::Boolean(true)); - trident_fuzz_table - }), - ); - - // Write the updated Cargo.toml back to the file. - fs::write(&manifest_path, toml::to_string(&cargo_toml).unwrap()).await?; - } -} - -#[throws] -pub async fn update_package_metadata( - packages: &[Package], - versions_config: &TridentVersionsConfig, -) { - for package in packages { - let manifest_path = package.manifest_path.as_std_path(); - let cargo_toml_content = fs::read_to_string(&manifest_path).await?; - let mut cargo_toml: Value = toml::from_str(&cargo_toml_content)?; - - // Ensure the 'trident-fuzzing' feature exists with the required dependency. - let features_table = ensure_table(&mut cargo_toml, "features")?; - if features_table.contains_key("trident-fuzzing") { - println!( - "{SKIP} 'trident-fuzzing' feature already exists in package: {}", - package.name - ); - } else { - features_table.insert( - "trident-fuzzing".to_string(), - Value::Array(vec![Value::String("dep:trident-fuzz".to_string())]), - ); - } - - // Ensure the required dependencies are present in the 'dependencies' section. - let dependencies_table = ensure_table(&mut cargo_toml, "dependencies")?; - - // Add 'trident-derive-accounts-snapshots' dependency in table format. - if dependencies_table.contains_key("trident-derive-accounts-snapshots") { - println!("{SKIP} 'trident-derive-accounts-snapshots' dependency already exists in package: {}", package.name); - } else { - dependencies_table.insert( - "trident-derive-accounts-snapshots".to_string(), - Value::Table({ - let mut snapshots_table = toml::Table::new(); - snapshots_table.insert( - "version".to_string(), - Value::String(versions_config.trident_derive_accounts_snapshots.clone()), - ); - snapshots_table - }), - ); - } - - // Add 'trident-fuzz' dependency with specified attributes if not present. - if dependencies_table.contains_key("trident-fuzz") { - println!( - "{SKIP} 'trident-fuzz' dependency already exists in package: {}", - package.name - ); - } else { - dependencies_table.insert( - "trident-fuzz".to_string(), - Value::Table({ - let mut trident_fuzz_table = toml::Table::new(); - trident_fuzz_table.insert( - "version".to_string(), - Value::String(versions_config.trident_fuzz.clone()), - ); - trident_fuzz_table.insert("optional".to_string(), Value::Boolean(true)); - trident_fuzz_table - }), - ); - } - - // Write the updated Cargo.toml back to the file. - fs::write(&manifest_path, toml::to_string(&cargo_toml).unwrap()).await?; - } -} +// #[throws] +// pub async fn initialize_package_metadata( +// packages: &[Package], +// versions_config: &TridentVersionsConfig, +// ) { +// for package in packages { +// let manifest_path = package.manifest_path.as_std_path(); +// let cargo_toml_content = fs::read_to_string(&manifest_path).await?; +// let mut cargo_toml: Value = toml::from_str(&cargo_toml_content)?; + +// // Ensure the 'trident-fuzzing' feature exists with the required dependency. +// let features_table = ensure_table(&mut cargo_toml, "features")?; + +// features_table.insert( +// "trident-fuzzing".to_string(), +// Value::Array(vec![Value::String("dep:trident-fuzz".to_string())]), +// ); + +// // Ensure the required dependencies are present in the 'dependencies' section. +// let dependencies_table = ensure_table(&mut cargo_toml, "dependencies")?; + +// // Add 'trident-derive-accounts-snapshots' dependency in table format. +// dependencies_table.insert( +// "trident-derive-accounts-snapshots".to_string(), +// Value::Table({ +// let mut snapshots_table = toml::Table::new(); +// snapshots_table.insert( +// "version".to_string(), +// Value::String(versions_config.trident_derive_accounts_snapshots.clone()), +// ); +// snapshots_table +// }), +// ); + +// // Add 'trident-fuzz' dependency with specified attributes if not present. +// dependencies_table.insert( +// "trident-fuzz".to_string(), +// Value::Table({ +// let mut trident_fuzz_table = toml::Table::new(); +// trident_fuzz_table.insert( +// "version".to_string(), +// Value::String(versions_config.trident_fuzz.clone()), +// ); +// trident_fuzz_table.insert("optional".to_string(), Value::Boolean(true)); +// trident_fuzz_table +// }), +// ); + +// // Write the updated Cargo.toml back to the file. +// fs::write(&manifest_path, toml::to_string(&cargo_toml).unwrap()).await?; +// } +// } + +// #[throws] +// pub async fn update_package_metadata( +// packages: &[Package], +// versions_config: &TridentVersionsConfig, +// ) { +// for package in packages { +// let manifest_path = package.manifest_path.as_std_path(); +// let cargo_toml_content = fs::read_to_string(&manifest_path).await?; +// let mut cargo_toml: Value = toml::from_str(&cargo_toml_content)?; + +// // Ensure the 'trident-fuzzing' feature exists with the required dependency. +// let features_table = ensure_table(&mut cargo_toml, "features")?; +// if features_table.contains_key("trident-fuzzing") { +// println!( +// "{SKIP} 'trident-fuzzing' feature already exists in package: {}", +// package.name +// ); +// } else { +// features_table.insert( +// "trident-fuzzing".to_string(), +// Value::Array(vec![Value::String("dep:trident-fuzz".to_string())]), +// ); +// } + +// // Ensure the required dependencies are present in the 'dependencies' section. +// let dependencies_table = ensure_table(&mut cargo_toml, "dependencies")?; + +// // Add 'trident-derive-accounts-snapshots' dependency in table format. +// if dependencies_table.contains_key("trident-derive-accounts-snapshots") { +// println!("{SKIP} 'trident-derive-accounts-snapshots' dependency already exists in package: {}", package.name); +// } else { +// dependencies_table.insert( +// "trident-derive-accounts-snapshots".to_string(), +// Value::Table({ +// let mut snapshots_table = toml::Table::new(); +// snapshots_table.insert( +// "version".to_string(), +// Value::String(versions_config.trident_derive_accounts_snapshots.clone()), +// ); +// snapshots_table +// }), +// ); +// } + +// // Add 'trident-fuzz' dependency with specified attributes if not present. +// if dependencies_table.contains_key("trident-fuzz") { +// println!( +// "{SKIP} 'trident-fuzz' dependency already exists in package: {}", +// package.name +// ); +// } else { +// dependencies_table.insert( +// "trident-fuzz".to_string(), +// Value::Table({ +// let mut trident_fuzz_table = toml::Table::new(); +// trident_fuzz_table.insert( +// "version".to_string(), +// Value::String(versions_config.trident_fuzz.clone()), +// ); +// trident_fuzz_table.insert("optional".to_string(), Value::Boolean(true)); +// trident_fuzz_table +// }), +// ); +// } + +// // Write the updated Cargo.toml back to the file. +// fs::write(&manifest_path, toml::to_string(&cargo_toml).unwrap()).await?; +// } +// } #[throws] pub async fn add_workspace_member(root: &Path, member: &str) { @@ -383,10 +383,10 @@ pub async fn initialize_fuzz_tests_manifest( "path".to_string(), Value::String(relative_path_str.to_owned()), ); - package_entry.insert( - "features".to_string(), - Value::Array(vec![Value::String("trident-fuzzing".to_string())]), - ); + // package_entry.insert( + // "features".to_string(), + // Value::Array(vec![Value::String("trident-fuzzing".to_string())]), + // ); package_entry }), ); diff --git a/crates/client/src/versions_config.rs b/crates/client/src/versions_config.rs index 801b547bc..063129997 100644 --- a/crates/client/src/versions_config.rs +++ b/crates/client/src/versions_config.rs @@ -2,7 +2,5 @@ use serde::Deserialize; #[derive(Deserialize, Default)] pub struct TridentVersionsConfig { - pub trident_fuzz: String, - pub trident_derive_accounts_snapshots: String, pub trident_client: String, } diff --git a/crates/client/tests/expected_source_codes/expected_fuzz_instructions.rs b/crates/client/tests/expected_source_codes/expected_fuzz_instructions.rs index 08208d17e..293a934ed 100644 --- a/crates/client/tests/expected_source_codes/expected_fuzz_instructions.rs +++ b/crates/client/tests/expected_source_codes/expected_fuzz_instructions.rs @@ -1,8 +1,4 @@ use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitializeIxDummy2Snapshot<'info> = InitializeIxDummy2Alias<'info>; -type InitializeIxDummyExampleSnapshot<'info> = InitializeIxDummyExampleAlias<'info>; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -23,7 +19,7 @@ pub struct InitializeIxDummy2Accounts { /// To do this, redefine the type in the fuzz test and implement the `From` /// trait /// to convert it into the type defined in the program. -/// For more details, see: https://ackee.xyz/trident/docs/dev/features/arbitrary-data/#custom-data-types +/// For more details, see: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#custom-data-types #[derive(Arbitrary, Debug)] pub struct InitializeIxDummy2Data { pub _var1: bool, @@ -73,7 +69,7 @@ pub struct InitializeIxDummyExampleAccounts { /// To do this, redefine the type in the fuzz test and implement the `From` /// trait /// to convert it into the type defined in the program. -/// For more details, see: https://ackee.xyz/trident/docs/dev/features/arbitrary-data/#custom-data-types +/// For more details, see: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#custom-data-types #[derive(Arbitrary, Debug)] pub struct InitializeIxDummyExampleData { pub _var1: bool, @@ -100,10 +96,9 @@ pub struct InitializeIxDummyExampleData { pub _var22: Vec>>>>>, } ///IxOps implementation for `InitializeIxDummy2` with all required functions. -impl<'info> IxOps<'info> for InitializeIxDummy2 { +impl IxOps for InitializeIxDummy2 { type IxData = dummy_2::instruction::InitializeIx; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeIxDummy2Snapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { dummy_2::ID @@ -111,7 +106,7 @@ impl<'info> IxOps<'info> for InitializeIxDummy2 { /// Definition of the Instruction data. /// Use randomly generated data from the fuzzer using `self.data.arg_name` /// or customize the data as needed. - /// For more details, visit: https://ackee.xyz/trident/docs/dev/features/fuzz-instructions/#get-data + /// For more details, visit: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#get-data fn get_data( &self, _client: &mut impl FuzzClient, @@ -148,7 +143,7 @@ impl<'info> IxOps<'info> for InitializeIxDummy2 { /// `fuzz_accounts.account_name.get_or_create_account()`. /// If no signers are required, leave the vector empty. /// For AccountMetas use ::accounts:: - /// For more details, see: https://ackee.xyz/trident/docs/dev/features/fuzz-instructions/#get-accounts + /// For more details, see: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#get-accounts fn get_accounts( &self, client: &mut impl FuzzClient, @@ -161,10 +156,9 @@ impl<'info> IxOps<'info> for InitializeIxDummy2 { } ///IxOps implementation for `InitializeIxDummyExample` with all required /// functions. -impl<'info> IxOps<'info> for InitializeIxDummyExample { +impl IxOps for InitializeIxDummyExample { type IxData = dummy_example::instruction::InitializeIx; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeIxDummyExampleSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { dummy_example::ID @@ -172,7 +166,7 @@ impl<'info> IxOps<'info> for InitializeIxDummyExample { /// Definition of the Instruction data. /// Use randomly generated data from the fuzzer using `self.data.arg_name` /// or customize the data as needed. - /// For more details, visit: https://ackee.xyz/trident/docs/dev/features/fuzz-instructions/#get-data + /// For more details, visit: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#get-data fn get_data( &self, _client: &mut impl FuzzClient, @@ -209,7 +203,7 @@ impl<'info> IxOps<'info> for InitializeIxDummyExample { /// `fuzz_accounts.account_name.get_or_create_account()`. /// If no signers are required, leave the vector empty. /// For AccountMetas use ::accounts:: - /// For more details, see: https://ackee.xyz/trident/docs/dev/features/fuzz-instructions/#get-accounts + /// For more details, see: https://ackee.xyz/trident/docs/latest/features/fuzz-instructions/#get-accounts fn get_accounts( &self, client: &mut impl FuzzClient, @@ -220,8 +214,8 @@ impl<'info> IxOps<'info> for InitializeIxDummyExample { Ok((signers, acc_meta)) } } -/// Use AccountsStorage where T can be one of: -/// Keypair, PdaStore, TokenStore, MintStore, ProgramStore +/// Check supported AccountsStorages at +/// https://ackee.xyz/trident/docs/latest/features/account-storages/ #[derive(Default)] pub struct FuzzAccounts { signer_dummy_2: AccountsStorage, diff --git a/crates/client/tests/expected_source_codes/expected_test_fuzz.rs b/crates/client/tests/expected_source_codes/expected_test_fuzz.rs index 342881434..61baf4ddd 100644 --- a/crates/client/tests/expected_source_codes/expected_test_fuzz.rs +++ b/crates/client/tests/expected_source_codes/expected_test_fuzz.rs @@ -1,25 +1,26 @@ use trident_client::fuzzing::*; mod fuzz_instructions; use dummy_2::entry as entry_dummy_2; -use dummy_2::ID as PROGRAM_ID_DUMMY_2; +use dummy_2::ID as PROGRAM_ID_dummy_2; use dummy_example::entry as entry_dummy_example; -use dummy_example::ID as PROGRAM_ID_DUMMY_EXAMPLE; +use dummy_example::ID as PROGRAM_ID_dummy_example; use fuzz_instructions::FuzzInstruction; -const PROGRAM_NAME_DUMMY_2: &str = "dummy_2"; -const PROGRAM_NAME_DUMMY_EXAMPLE: &str = "dummy_example"; -struct MyFuzzData; +const PROGRAM_NAME_dummy_2: &str = "dummy_2"; +const PROGRAM_NAME_dummy_example: &str = "dummy_example"; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// use fuzz_instructions::{InitializeFn, UpdateFn, WithdrawFn}; +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` -/// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData {} +/// For more details, see: https://ackee.xyz/trident/docs/latest/features/instructions-sequences/#instructions-sequences +impl FuzzDataBuilder for InstructionsSequence {} /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. fn fuzz_iteration + std::fmt::Display, U>( @@ -27,13 +28,13 @@ fn fuzz_iteration + std::fmt::Display, U>( config: &Config, ) { let fuzzing_program_dummy_2 = FuzzingProgram::new( - PROGRAM_NAME_DUMMY_2, - &PROGRAM_ID_DUMMY_2, + PROGRAM_NAME_dummy_2, + &PROGRAM_ID_dummy_2, processor!(convert_entry!(entry_dummy_2)), ); let fuzzing_program_dummy_example = FuzzingProgram::new( - PROGRAM_NAME_DUMMY_EXAMPLE, - &PROGRAM_ID_DUMMY_EXAMPLE, + PROGRAM_NAME_dummy_example, + &PROGRAM_ID_dummy_example, processor!(convert_entry!(entry_dummy_example)), ); let mut client = ProgramTestClientBlocking::new( @@ -45,5 +46,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/crates/fuzz/Cargo.toml b/crates/fuzz/Cargo.toml index 4c5a7007c..deb600d98 100644 --- a/crates/fuzz/Cargo.toml +++ b/crates/fuzz/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trident-fuzz" -version = "0.2.0" +version = "0.2.1" edition = "2021" repository = "https://github.com/Ackee-Blockchain/trident" license-file = "../../LICENSE" @@ -11,9 +11,11 @@ description = "The trident_fuzz crate helps you to write Rust Fuzz Tests for you # SOLANA solana-sdk = { workspace = true } solana-banks-client = { workspace = true } -spl-token = { workspace = true } +solana-stake-program = { workspace = true } +solana-vote-program = { workspace = true } solana-program-runtime = { workspace = true } solana-program-test = { workspace = true } +spl-token = { workspace = true } # ANCHOR anchor-lang = { workspace = true, features = ["init-if-needed"] } diff --git a/crates/fuzz/derive/accounts_snapshots/Cargo.toml b/crates/fuzz/derive/accounts_snapshots/Cargo.toml deleted file mode 100644 index c40166e0d..000000000 --- a/crates/fuzz/derive/accounts_snapshots/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "trident-derive-accounts-snapshots" -version = "0.0.2" -rust-version = "1.60" -edition = "2021" -license-file = "../../../../LICENSE" -readme = "../../../../README.md" -description = "trident-accounts-snapshots" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -proc-macro = true - -[dependencies] -anchor-syn = { workspace = true } -proc-macro2 = { version = "1", features = ["span-locations"] } -quote = "1" -syn = { version = "1", features = ["full"] } -convert_case = "0.6.0" diff --git a/crates/fuzz/derive/accounts_snapshots/src/lib.rs b/crates/fuzz/derive/accounts_snapshots/src/lib.rs deleted file mode 100644 index 5dfc8192b..000000000 --- a/crates/fuzz/derive/accounts_snapshots/src/lib.rs +++ /dev/null @@ -1,798 +0,0 @@ -use anchor_syn::{AccountField, AccountTy}; -use convert_case::{Case, Casing}; -use proc_macro2::TokenStream; -use quote::{quote, ToTokens}; -use syn::parse::{Parse, ParseStream}; -use syn::parse_macro_input; -use syn::{Ident, ItemStruct, Result as ParseResult}; - -#[proc_macro_derive(AccountsSnapshots)] -pub fn derive_accounts_snapshots(item: proc_macro::TokenStream) -> proc_macro::TokenStream { - parse_macro_input!(item as TridentAccountsStruct) - .to_token_stream() - .into() -} - -struct TridentAccountsStruct(anchor_syn::AccountsStruct); - -impl Parse for TridentAccountsStruct { - fn parse(input: ParseStream) -> ParseResult { - let strct = ::parse(input)?; - // TODO make sure that these convertions between types are correct - Ok(TridentAccountsStruct(anchor_syn::parser::accounts::parse( - &strct, - )?)) - } -} - -fn snapshot_field(field: &anchor_syn::Field, is_optional: bool) -> proc_macro2::TokenStream { - let account_ty = field.account_ty(); - let container_ty = field.container_ty(); - - let inner_ty = match &field.ty { - anchor_syn::Ty::AccountInfo => { - quote! { - &'info AccountInfo<'info> - } - } - anchor_syn::Ty::UncheckedAccount => { - quote! { - UncheckedAccount<'info> - } - } - anchor_syn::Ty::AccountLoader(_) => { - quote! { - #container_ty<'info,#account_ty> - } - } - anchor_syn::Ty::Sysvar(_) => { - quote! { - Sysvar<'info,#account_ty> - } - } - anchor_syn::Ty::Account(AccountTy { boxed, .. }) => { - // Verbously say that if the account is boxed we dont care. - #[allow(clippy::if_same_then_else)] - if *boxed { - quote! { - #container_ty<'info,#account_ty> - } - } else { - quote! { - #container_ty<'info,#account_ty> - } - } - } - anchor_syn::Ty::Program(_) => { - quote! { - #container_ty<'info,#account_ty> - } - } - anchor_syn::Ty::Interface(_) => { - quote! { - #container_ty<'info,#account_ty> - } - } - anchor_syn::Ty::InterfaceAccount(_) => { - quote! { - #container_ty<'info,#account_ty> - } - } - anchor_syn::Ty::Signer => { - quote! { - Signer<'info> - } - } - anchor_syn::Ty::SystemAccount => { - quote! { - SystemAccount<'info> - } - } - anchor_syn::Ty::ProgramData => { - todo!() - } - }; - let f_name = &field.ident; - - if is_optional { - quote! { - #f_name:Option<#inner_ty> - } - } else { - quote! { - #f_name:#inner_ty - } - } -} -fn type_decl_try_from(field: &anchor_syn::Field) -> proc_macro2::TokenStream { - let _account_ty = field.account_ty(); - let _container_ty = field.container_ty(); - - let inner_ty = match &field.ty { - anchor_syn::Ty::AccountInfo => { - quote! {} - } - anchor_syn::Ty::UncheckedAccount => { - quote! { - anchor_lang::accounts::unchecked_account::UncheckedAccount - } - } - anchor_syn::Ty::AccountLoader(_) => { - quote! { - anchor_lang::accounts::account_loader::AccountLoader - } - } - anchor_syn::Ty::Sysvar(_) => { - quote! { - anchor_lang::accounts::sysvar::Sysvar - } - } - anchor_syn::Ty::Account(AccountTy { boxed, .. }) => { - // Verbously say that if the account is boxed we dont care. - #[allow(clippy::if_same_then_else)] - if *boxed { - quote! { - anchor_lang::accounts::account::Account - } - } else { - quote! { - anchor_lang::accounts::account::Account - } - } - } - anchor_syn::Ty::Program(_) => { - quote! { - anchor_lang::accounts::program::Program - } - } - anchor_syn::Ty::Interface(_) => { - quote! { - anchor_lang::accounts::interface::Interface - } - } - anchor_syn::Ty::InterfaceAccount(_) => { - quote! { - anchor_lang::accounts::interface_account::InterfaceAccount - } - } - anchor_syn::Ty::Signer => { - quote! { - anchor_lang::accounts::signer::Signer - } - } - anchor_syn::Ty::SystemAccount => { - quote! { - anchor_lang::accounts::system_account::SystemAccount - } - } - anchor_syn::Ty::ProgramData => { - quote! {} - } - }; - quote! { - #inner_ty - } -} - -fn type_decl_deserialize(field: &anchor_syn::Field, is_optional: bool) -> proc_macro2::TokenStream { - let name = &field.ident; - let account_ty = field.account_ty(); - let container_ty = field.container_ty(); - - let ty_decl = match &field.ty { - anchor_syn::Ty::AccountInfo => { - quote! { - AccountInfo - } - } - anchor_syn::Ty::UncheckedAccount => { - quote! { - UncheckedAccount - } - } - anchor_syn::Ty::AccountLoader(_) => { - quote! { - anchor_lang::accounts::account_loader::AccountLoader<#account_ty> - } - } - anchor_syn::Ty::Sysvar(_) => { - quote! { - Sysvar<#account_ty> - } - } - anchor_syn::Ty::Account(AccountTy { boxed, .. }) => { - // Verbously say that if the account is boxed we dont care. - #[allow(clippy::if_same_then_else)] - if *boxed { - quote! { - #container_ty<#account_ty> - } - } else { - quote! { - #container_ty<#account_ty> - } - } - } - anchor_syn::Ty::Program(_) => { - quote! { - #container_ty<#account_ty> - } - } - anchor_syn::Ty::Interface(_) => { - quote! { - anchor_lang::accounts::interface::Interface<#account_ty> - } - } - anchor_syn::Ty::InterfaceAccount(_) => { - quote! { - anchor_lang::accounts::interface_account::InterfaceAccount<#account_ty> - } - } - anchor_syn::Ty::Signer => { - quote! { - Signer - } - } - anchor_syn::Ty::SystemAccount => { - quote! { - SystemAccount - } - } - anchor_syn::Ty::ProgramData => { - quote! {} - } - }; - if is_optional { - quote! { - #name: Option<#ty_decl> - } - } else { - quote! { - #name: #ty_decl - } - } -} - -impl From<&TridentAccountsStruct> for TokenStream { - fn from(accounts: &TridentAccountsStruct) -> Self { - generate(accounts) - } -} - -impl ToTokens for TridentAccountsStruct { - fn to_tokens(&self, tokens: &mut TokenStream) { - tokens.extend::(self.into()); - } -} - -fn deserialize_option_account( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - // TODO It would be helpful to do something like line below. - // where we propagate anchor error - // However I suggest that this is not possible right now as for - // fuzz_example3 the anchor_lang has version 0.28.0. However trident - // uses 0.29.0 I think this is the reason why the '?' operator cannot propagate - // the error even though I implemnted From trait - // that i - // .map_err(|e| e.with_account_name(#name_str).into())?; - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn deserialize_option_account_info( - f_name: &Ident, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #f_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref(); - } - } else { - quote! { - let #f_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))?; - } - } -} -fn deserialize_option_unchecked_account( - f_name: &Ident, - f_name_as_string: String, - ty_decl: TokenStream, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #f_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from); - } - } else { - quote! { - let #f_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))?; - } - } -} -// TODO optional ? -fn deserialize_option_program( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -// TODO optional ? -fn deserialize_option_signer( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn deserialize_option_sysvar( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::from_account_info(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::from_account_info) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn deserialize_option_interface( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn deserialize_option_interface_account( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn deserialize_option_system_account( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn deserialize_option_account_loader( - typed_name: TokenStream, - ty_decl: TokenStream, - f_name_as_string: String, - is_optional: bool, -) -> proc_macro2::TokenStream { - if is_optional { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(|acc| { - if acc.key() != *_program_id { - #ty_decl::try_from(acc).map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string())) - } else {Err(trident_fuzz::error::FuzzingError::OptionalAccountNotProvided( - #f_name_as_string.to_string(), - )) - } - }) - .transpose() - .unwrap_or(None); - } - } else { - quote! { - let #typed_name = accounts_iter - .next() - .ok_or(trident_fuzz::error::FuzzingError::NotEnoughAccounts(#f_name_as_string.to_string()))? - .as_ref() - .map(#ty_decl::try_from) - .ok_or(trident_fuzz::error::FuzzingError::AccountNotFound(#f_name_as_string.to_string()))? - .map_err(|_| trident_fuzz::error::FuzzingError::CannotDeserializeAccount(#f_name_as_string.to_string()))?; - } - } -} - -fn generate(accs: &TridentAccountsStruct) -> proc_macro2::TokenStream { - let context_name = &accs.0.ident; - let snapshot_name = syn::Ident::new(&format!("{}Alias", context_name), context_name.span()); - let context_name_snake_case = context_name.to_string().to_case(Case::Snake); - let module_name = syn::Ident::new( - &format!("trident_fuzz_{}_snapshot", context_name_snake_case), - context_name.span(), - ); - - // CONSTRUCT DESERIALIZE OPTION - let deserialize_fields = accs.0.fields.iter().map(|field| { - let is_optional = is_optional(field); - match &field { - anchor_syn::AccountField::Field(field) => { - let f_name = &field.ident; - let f_name_as_string = f_name.to_string(); - let typed_name = type_decl_deserialize(field, is_optional); - let ty_decl = type_decl_try_from(field); - - match field.ty { - anchor_syn::Ty::AccountInfo => { - deserialize_option_account_info(f_name, f_name_as_string, is_optional) - } - anchor_syn::Ty::UncheckedAccount => deserialize_option_unchecked_account( - f_name, - f_name_as_string, - ty_decl, - is_optional, - ), - anchor_syn::Ty::AccountLoader(_) => deserialize_option_account_loader( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::Sysvar(_) => deserialize_option_sysvar( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::Account(_) => deserialize_option_account( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::Program(_) => deserialize_option_program( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::Interface(_) => deserialize_option_interface( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::InterfaceAccount(_) => deserialize_option_interface_account( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::Signer => deserialize_option_signer( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::SystemAccount => deserialize_option_system_account( - typed_name, - ty_decl, - f_name_as_string, - is_optional, - ), - anchor_syn::Ty::ProgramData => todo!(), - } - } - anchor_syn::AccountField::CompositeField(_) => todo!(), - } - }); - - // CONSTRUCT SNAPSHOT STRUCT - let snapshot_fields = accs.0.fields.iter().map(|field| { - let is_optional = is_optional(field); - - let snapshot_field = match &field { - anchor_syn::AccountField::Field(field) => snapshot_field(field, is_optional), - anchor_syn::AccountField::CompositeField(_composite) => todo!(), - }; - quote! { - pub #snapshot_field, - } - }); - - // CONSTRUCT RETURN VALUE - let struct_fields = accs.0.fields.iter().map(|field| { - let field_name = match &field { - anchor_syn::AccountField::Field(field) => field.ident.to_owned(), - anchor_syn::AccountField::CompositeField(_composite) => todo!(), - }; - quote! { #field_name } - }); - - // CHECK IF STRUCT HAS ANY FIELDS - let has_fields = !accs.0.fields.is_empty(); - - // USE PHANTOMDATA IF NO FIELDS PRESENT - let struct_definition = if has_fields { - quote! { - pub struct #snapshot_name<'info> { - #(#snapshot_fields)* - } - } - } else { - quote! { - pub struct #snapshot_name<'info> { - #[allow(dead_code)] - _phantom: std::marker::PhantomData<&'info ()>, - } - } - }; - - // IF IT HAS FIELDS JUST FOLLOW STANDARD BEHAVIOR - let deserialize_impl = if has_fields { - quote! { - impl<'info> trident_fuzz::fuzz_deserialize::FuzzDeserialize<'info> for #snapshot_name<'info> { - fn deserialize_option( - _program_id: &anchor_lang::prelude::Pubkey, - accounts: &mut &'info [Option>], - ) -> core::result::Result { - let mut accounts_iter = accounts.iter(); - - #(#deserialize_fields)* - - Ok(Self { - #(#struct_fields),* - }) - } - } - } - } else { - // IF IT HAS NO FIELDS RETURN THE PHANTOM DATA - quote! { - impl<'info> trident_fuzz::fuzz_deserialize::FuzzDeserialize<'info> for #snapshot_name<'info> { - fn deserialize_option( - _program_id: &anchor_lang::prelude::Pubkey, - _accounts: &mut &'info [Option>], - ) -> core::result::Result { - Ok(Self { _phantom: std::marker::PhantomData }) - } - } - } - }; - - quote! { - #[cfg(feature = "trident-fuzzing")] - pub mod #module_name { - #[cfg(target_os = "solana")] - compile_error!("Do not use fuzzing with Production Code"); - use super::*; - - #deserialize_impl - - #struct_definition - } - } -} - -/// Determines if an Account should be wrapped into the `Option` type. -/// The function returns true if the account has the init or close constraints set -/// or if it is wrapped into the `Option` type. -fn is_optional(parsed_field: &AccountField) -> bool { - let is_optional = match parsed_field { - AccountField::Field(field) => field.is_optional, - AccountField::CompositeField(_) => false, - }; - let constraints = match parsed_field { - AccountField::Field(f) => &f.constraints, - AccountField::CompositeField(f) => &f.constraints, - }; - - constraints.init.is_some() || constraints.is_close() || is_optional || constraints.is_zeroed() -} diff --git a/crates/fuzz/derive/display_ix/Cargo.toml b/crates/fuzz/derive/display_ix/Cargo.toml index 2e9692b85..053ffa911 100644 --- a/crates/fuzz/derive/display_ix/Cargo.toml +++ b/crates/fuzz/derive/display_ix/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trident-derive-displayix" -version = "0.0.3" +version = "0.0.4" rust-version = "1.60" edition = "2021" license-file = "../../../../LICENSE" diff --git a/crates/fuzz/derive/fuzz_test_executor/Cargo.toml b/crates/fuzz/derive/fuzz_test_executor/Cargo.toml index 397142b71..a44b5e0bd 100644 --- a/crates/fuzz/derive/fuzz_test_executor/Cargo.toml +++ b/crates/fuzz/derive/fuzz_test_executor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trident-derive-fuzz-test-executor" -version = "0.0.3" +version = "0.0.4" rust-version = "1.60" edition = "2021" license-file = "../../../../LICENSE" diff --git a/crates/fuzz/derive/fuzz_test_executor/src/lib.rs b/crates/fuzz/derive/fuzz_test_executor/src/lib.rs index 1dd2b3429..4d098a061 100644 --- a/crates/fuzz/derive/fuzz_test_executor/src/lib.rs +++ b/crates/fuzz/derive/fuzz_test_executor/src/lib.rs @@ -14,15 +14,11 @@ pub fn fuzz_test_executor(input: TokenStream) -> TokenStream { quote! { #enum_name::#variant_name (ix) => { - // snapshot has to live as long as ix, thus we declare it here - let mut snaphot = Snapshot::new_empty(ix); - if cfg!(honggfuzz){ TransactionExecutor::process_transaction_honggfuzz( &self.to_context_string(), client, ix, - &mut snaphot, sent_txs, config, accounts @@ -32,7 +28,6 @@ pub fn fuzz_test_executor(input: TokenStream) -> TokenStream { &self.to_context_string(), client, ix, - &mut snaphot, sent_txs, config, accounts diff --git a/crates/fuzz/src/accounts_storage.rs b/crates/fuzz/src/accounts_storage.rs deleted file mode 100644 index 4e5145d6e..000000000 --- a/crates/fuzz/src/accounts_storage.rs +++ /dev/null @@ -1,143 +0,0 @@ -#![allow(dead_code)] -use std::collections::HashMap; - -use solana_sdk::{pubkey::Pubkey, signature::Keypair}; - -use crate::{fuzz_client::FuzzClient, AccountId}; - -pub struct PdaStore { - pub pubkey: Pubkey, - pub seeds: Vec>, -} -impl PdaStore { - pub fn pubkey(&self) -> Pubkey { - self.pubkey - } -} - -pub struct TokenStore { - pub pubkey: Pubkey, -} - -pub struct MintStore { - pub pubkey: Pubkey, -} - -pub struct ProgramStore { - pub pubkey: u8, -} - -pub struct AccountsStorage { - accounts: HashMap, - _max_accounts: u8, -} - -impl AccountsStorage { - pub fn new(max_accounts: u8) -> Self { - let accounts: HashMap = HashMap::new(); - Self { - accounts, - _max_accounts: max_accounts, - } - } - - /// Gets a reference to the account with the given account ID - pub fn get(&self, account_id: AccountId) -> Option<&T> { - self.accounts.get(&account_id) - } - - /// Returns a mutable reference to the underlying HashMap that stores accounts with IDs as keys - pub fn storage(&mut self) -> &mut HashMap { - &mut self.accounts - } -} - -impl Default for AccountsStorage { - fn default() -> Self { - Self::new(2) - } -} -// TODO Add an easy way to limit the number of created accounts -impl AccountsStorage { - pub fn get_or_create_account( - &mut self, - account_id: AccountId, - client: &mut impl FuzzClient, - lamports: u64, - ) -> Keypair { - let key = self - .accounts - .entry(account_id) - .or_insert_with(|| client.set_account(lamports)); - key.insecure_clone() - } -} - -impl AccountsStorage { - #[allow(clippy::too_many_arguments)] - pub fn get_or_create_account( - &mut self, - account_id: AccountId, - client: &mut impl FuzzClient, - mint: Pubkey, - owner: Pubkey, - amount: u64, - delegate: Option, - is_native: Option, - delegated_amount: u64, - close_authority: Option, - ) -> Option { - let key = self.accounts.entry(account_id).or_insert_with(|| { - let key = client.set_token_account( - mint, - owner, - amount, - delegate, - is_native, - delegated_amount, - close_authority, - ); - TokenStore { pubkey: key } - }); - Some(key.pubkey) - } -} - -impl AccountsStorage { - pub fn get_or_create_account( - &mut self, - account_id: AccountId, - client: &mut impl FuzzClient, - decimals: u8, - owner: &Pubkey, - freeze_authority: Option, - ) -> Option { - let key = self.accounts.entry(account_id).or_insert_with(|| { - let key = client.set_mint_account(decimals, owner, freeze_authority); - MintStore { pubkey: key } - }); - Some(key.pubkey) - } -} - -impl AccountsStorage { - pub fn get_or_create_account( - &mut self, - account_id: AccountId, - seeds: &[&[u8]], - program_id: &Pubkey, - ) -> Option<&PdaStore> { - let key = self.accounts.entry(account_id).or_insert( - if let Some((key, _)) = Pubkey::try_find_program_address(seeds, program_id) { - let seeds_vec: Vec<_> = seeds.iter().map(|&s| s.to_vec()).collect(); - PdaStore { - pubkey: key, - seeds: seeds_vec, - } - } else { - return None; - }, - ); - Some(key) - } -} diff --git a/crates/fuzz/src/accounts_storage/keypair_store.rs b/crates/fuzz/src/accounts_storage/keypair_store.rs new file mode 100644 index 000000000..e01a56e31 --- /dev/null +++ b/crates/fuzz/src/accounts_storage/keypair_store.rs @@ -0,0 +1,43 @@ +use solana_sdk::{account::AccountSharedData, pubkey::Pubkey, signature::Keypair, signer::Signer}; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct KeypairStore { + pub keypair: Keypair, +} + +impl KeypairStore { + pub fn pubkey(&self) -> Pubkey { + self.keypair.pubkey() + } +} + +// TODO Add an easy way to limit the number of created accounts +impl AccountsStorage { + pub fn get_or_create_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + lamports: u64, + ) -> Keypair { + let key = self.accounts.entry(account_id).or_insert_with(|| { + let keypair = Keypair::new(); + + let empty_account = + AccountSharedData::new(lamports, 0, &solana_sdk::system_program::ID); + client.set_account_custom(&keypair.pubkey(), &empty_account); + KeypairStore { + keypair: keypair.insecure_clone(), + } + }); + key.keypair.insecure_clone() + } + pub fn get(&self, account_id: AccountId) -> Keypair { + match self.accounts.get(&account_id) { + Some(v) => v.keypair.insecure_clone(), + None => Keypair::new(), + } + } +} diff --git a/crates/fuzz/src/accounts_storage/mint_store.rs b/crates/fuzz/src/accounts_storage/mint_store.rs new file mode 100644 index 000000000..b2dc7b535 --- /dev/null +++ b/crates/fuzz/src/accounts_storage/mint_store.rs @@ -0,0 +1,69 @@ +use solana_sdk::{ + account::AccountSharedData, program_option::COption, program_pack::Pack, pubkey::Pubkey, + rent::Rent, signature::Keypair, signer::Signer, +}; +use spl_token::state::Mint; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct MintStore { + pub pubkey: Pubkey, +} + +impl From for MintStore { + fn from(pubkey: Pubkey) -> Self { + MintStore { pubkey } + } +} + +impl AccountsStorage { + pub fn get_or_create_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + decimals: u8, + owner: &Pubkey, + freeze_authority: Option, + ) -> Pubkey { + let key = self.accounts.entry(account_id).or_insert_with(|| { + let mint_account = Keypair::new(); + + let authority = match freeze_authority { + Some(a) => COption::Some(a), + _ => COption::None, + }; + + let r = Rent::default(); + let lamports = r.minimum_balance(Mint::LEN); + + let mut account = AccountSharedData::new(lamports, Mint::LEN, &spl_token::id()); + + let mint = Mint { + is_initialized: true, + mint_authority: COption::Some(*owner), + freeze_authority: authority, + decimals, + ..Default::default() + }; + + let mut data = vec![0u8; Mint::LEN]; + Mint::pack(mint, &mut data[..]).unwrap(); + account.set_data_from_slice(&data); + + client.set_account_custom(&mint_account.pubkey(), &account); + + MintStore { + pubkey: mint_account.pubkey(), + } + }); + key.pubkey + } + pub fn get(&self, account_id: AccountId) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => Pubkey::new_unique(), + } + } +} diff --git a/crates/fuzz/src/accounts_storage/mod.rs b/crates/fuzz/src/accounts_storage/mod.rs new file mode 100644 index 000000000..053d14712 --- /dev/null +++ b/crates/fuzz/src/accounts_storage/mod.rs @@ -0,0 +1,56 @@ +#![allow(dead_code)] +use std::collections::HashMap; + +use crate::AccountId; + +pub mod keypair_store; +pub mod mint_store; +pub mod pda_store; +pub mod program_store; +pub mod stake_store; +pub mod token_store; +pub mod vote_store; + +use crate::fuzz_client::FuzzClient; +pub use keypair_store::KeypairStore; +pub use mint_store::MintStore; +pub use pda_store::PdaStore; +pub use program_store::ProgramStore; +use solana_sdk::account::AccountSharedData; +use solana_sdk::pubkey::Pubkey; +pub use stake_store::StakeStore; +pub use token_store::TokenStore; +pub use vote_store::VoteStore; + +pub struct AccountsStorage { + accounts: HashMap, + _max_accounts: u8, +} + +impl AccountsStorage { + pub fn new(max_accounts: u8) -> Self { + let accounts: HashMap = HashMap::new(); + Self { + accounts, + _max_accounts: max_accounts, + } + } + + pub fn set_custom( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + address: Pubkey, + account: AccountSharedData, + ) where + T: From, + { + client.set_account_custom(&address, &account); + self.accounts.insert(account_id, T::from(address)); + } +} +impl Default for AccountsStorage { + fn default() -> Self { + Self::new(2) + } +} diff --git a/crates/fuzz/src/accounts_storage/pda_store.rs b/crates/fuzz/src/accounts_storage/pda_store.rs new file mode 100644 index 000000000..73283297e --- /dev/null +++ b/crates/fuzz/src/accounts_storage/pda_store.rs @@ -0,0 +1,61 @@ +use solana_sdk::{account::AccountSharedData, pubkey::Pubkey}; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct PdaStore { + pub pubkey: Pubkey, + pub seeds: Vec>, +} +impl PdaStore { + pub fn pubkey(&self) -> Pubkey { + self.pubkey + } +} + +impl From for PdaStore { + fn from(pubkey: Pubkey) -> Self { + PdaStore { + pubkey, + seeds: Vec::new(), // Note: This creates empty seeds + } + } +} + +impl AccountsStorage { + pub fn get_or_create_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + seeds: &[&[u8]], + program_id: &Pubkey, + ) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => { + if let Some((key, _)) = Pubkey::try_find_program_address(seeds, program_id) { + let seeds_vec: Vec<_> = seeds.iter().map(|&s| s.to_vec()).collect(); + let pda_store = PdaStore { + pubkey: key, + seeds: seeds_vec, + }; + self.accounts.insert(account_id, pda_store); + client.set_account_custom( + &key, + &AccountSharedData::new(0, 0, &solana_sdk::system_program::ID), + ); + key + } else { + Pubkey::new_unique() + } + } + } + } + pub fn get(&self, account_id: AccountId) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => Pubkey::new_unique(), + } + } +} diff --git a/crates/fuzz/src/accounts_storage/program_store.rs b/crates/fuzz/src/accounts_storage/program_store.rs new file mode 100644 index 000000000..82dcab15c --- /dev/null +++ b/crates/fuzz/src/accounts_storage/program_store.rs @@ -0,0 +1,35 @@ +use solana_sdk::pubkey::Pubkey; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct ProgramStore { + pub pubkey: Pubkey, +} +impl From for ProgramStore { + fn from(pubkey: Pubkey) -> Self { + ProgramStore { pubkey } + } +} + +impl AccountsStorage { + pub fn get_or_create_account( + &mut self, + account_id: AccountId, + _client: &mut impl FuzzClient, + program_id: Pubkey, + ) -> Pubkey { + let program_id = self + .accounts + .entry(account_id) + .or_insert_with(|| ProgramStore { pubkey: program_id }); + program_id.pubkey + } + pub fn get(&self, account_id: AccountId) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => Pubkey::new_unique(), + } + } +} diff --git a/crates/fuzz/src/accounts_storage/stake_store.rs b/crates/fuzz/src/accounts_storage/stake_store.rs new file mode 100644 index 000000000..064ecd047 --- /dev/null +++ b/crates/fuzz/src/accounts_storage/stake_store.rs @@ -0,0 +1,126 @@ +use solana_sdk::{ + account::AccountSharedData, clock::Epoch, native_token::LAMPORTS_PER_SOL, pubkey::Pubkey, + rent::Rent, signature::Keypair, signer::Signer, stake::stake_flags::StakeFlags, +}; +use solana_stake_program::stake_state::{ + Authorized, Delegation, Lockup, Meta, Stake, StakeStateV2, +}; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct StakeStore { + pub pubkey: Pubkey, +} +impl From for StakeStore { + fn from(pubkey: Pubkey) -> Self { + StakeStore { pubkey } + } +} + +impl AccountsStorage { + #[allow(clippy::too_many_arguments)] + pub fn get_or_create_delegated_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + voter_pubkey: Pubkey, + staker: Pubkey, + withdrawer: Pubkey, + stake: u64, + activation_epoch: Epoch, + deactivation_epoch: Option, + lockup: Option, + ) -> Pubkey { + let key = self.accounts.entry(account_id).or_insert_with(|| { + let stake_account = Keypair::new(); + + let rent = Rent::default(); + let rent_exempt_lamports = rent.minimum_balance(StakeStateV2::size_of()); + let minimum_delegation = LAMPORTS_PER_SOL; // TODO: a way to get minimum delegation with feature set? + let minimum_lamports = rent_exempt_lamports.saturating_add(minimum_delegation); + + let stake_state = StakeStateV2::Stake( + Meta { + authorized: Authorized { staker, withdrawer }, + lockup: lockup.unwrap_or_default(), + rent_exempt_reserve: rent_exempt_lamports, + }, + Stake { + delegation: Delegation { + stake, + activation_epoch, + voter_pubkey, + deactivation_epoch: if let Some(epoch) = deactivation_epoch { + epoch + } else { + u64::MAX + }, + ..Delegation::default() + }, + ..Stake::default() + }, + StakeFlags::default(), + ); + let account = AccountSharedData::new_data_with_space( + if stake > minimum_lamports { + stake + } else { + minimum_lamports + }, + &stake_state, + StakeStateV2::size_of(), + &solana_sdk::stake::program::ID, + ) + .unwrap(); + + client.set_account_custom(&stake_account.pubkey(), &account); + + StakeStore { + pubkey: stake_account.pubkey(), + } + }); + key.pubkey + } + pub fn get_or_create_initialized_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + staker: Pubkey, + withdrawer: Pubkey, + lockup: Option, + ) -> Pubkey { + let key = self.accounts.entry(account_id).or_insert_with(|| { + let stake_account = Keypair::new(); + + let rent = Rent::default(); + let rent_exempt_lamports = rent.minimum_balance(StakeStateV2::size_of()); + + let stake_state = StakeStateV2::Initialized(Meta { + authorized: Authorized { staker, withdrawer }, + lockup: lockup.unwrap_or_default(), + rent_exempt_reserve: rent_exempt_lamports, + }); + let account = AccountSharedData::new_data_with_space( + rent_exempt_lamports, + &stake_state, + StakeStateV2::size_of(), + &solana_sdk::stake::program::ID, + ) + .unwrap(); + client.set_account_custom(&stake_account.pubkey(), &account); + + StakeStore { + pubkey: stake_account.pubkey(), + } + }); + key.pubkey + } + pub fn get(&self, account_id: AccountId) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => Pubkey::new_unique(), + } + } +} diff --git a/crates/fuzz/src/accounts_storage/token_store.rs b/crates/fuzz/src/accounts_storage/token_store.rs new file mode 100644 index 000000000..67cb83c7f --- /dev/null +++ b/crates/fuzz/src/accounts_storage/token_store.rs @@ -0,0 +1,87 @@ +use solana_sdk::{ + account::AccountSharedData, program_option::COption, program_pack::Pack, pubkey::Pubkey, + rent::Rent, signature::Keypair, signer::Signer, +}; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct TokenStore { + pub pubkey: Pubkey, +} + +impl From for TokenStore { + fn from(pubkey: Pubkey) -> Self { + TokenStore { pubkey } + } +} + +impl AccountsStorage { + #[allow(clippy::too_many_arguments)] + pub fn get_or_create_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + mint: Pubkey, + owner: Pubkey, + amount: u64, + delegate: Option, + is_native: Option, + delegated_amount: u64, + close_authority: Option, + ) -> Pubkey { + let key = self.accounts.entry(account_id).or_insert_with(|| { + let token_account = Keypair::new(); + + let delegate = match delegate { + Some(a) => COption::Some(a), + _ => COption::None, + }; + + let is_native = match is_native { + Some(a) => COption::Some(a), + _ => COption::None, + }; + + let close_authority = match close_authority { + Some(a) => COption::Some(a), + _ => COption::None, + }; + + let r = Rent::default(); + let lamports = r.minimum_balance(spl_token::state::Account::LEN); + + let mut account = + AccountSharedData::new(lamports, spl_token::state::Account::LEN, &spl_token::id()); + + let token_account_ = spl_token::state::Account { + mint, + owner, + amount, + delegate, + state: spl_token::state::AccountState::Initialized, + is_native, + delegated_amount, + close_authority, + }; + + let mut data = vec![0u8; spl_token::state::Account::LEN]; + spl_token::state::Account::pack(token_account_, &mut data[..]).unwrap(); + account.set_data_from_slice(&data); + + client.set_account_custom(&token_account.pubkey(), &account); + + TokenStore { + pubkey: token_account.pubkey(), + } + }); + key.pubkey + } + pub fn get(&self, account_id: AccountId) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => Pubkey::default(), + } + } +} diff --git a/crates/fuzz/src/accounts_storage/vote_store.rs b/crates/fuzz/src/accounts_storage/vote_store.rs new file mode 100644 index 000000000..eb86b6a10 --- /dev/null +++ b/crates/fuzz/src/accounts_storage/vote_store.rs @@ -0,0 +1,78 @@ +use solana_sdk::{ + account::{AccountSharedData, WritableAccount}, + clock::Clock, + pubkey::Pubkey, + rent::Rent, + signature::Keypair, + signer::Signer, +}; +use solana_vote_program::vote_state::{VoteInit, VoteState, VoteStateVersions}; + +use crate::{fuzz_client::FuzzClient, AccountId}; + +use super::AccountsStorage; + +pub struct VoteStore { + pub pubkey: Pubkey, +} + +impl From for VoteStore { + fn from(pubkey: Pubkey) -> Self { + VoteStore { pubkey } + } +} + +impl AccountsStorage { + #[allow(clippy::too_many_arguments)] + pub fn get_or_create_account( + &mut self, + account_id: AccountId, + client: &mut impl FuzzClient, + node_pubkey: &Pubkey, + authorized_voter: &Pubkey, + authorized_withdrawer: &Pubkey, + commission: u8, + clock: &Clock, + ) -> Pubkey { + let key = self.accounts.entry(account_id).or_insert_with(|| { + let vote_account = Keypair::new(); + + let rent = Rent::default(); + let lamports = rent.minimum_balance(VoteState::size_of()); + let mut account = AccountSharedData::new( + lamports, + VoteState::size_of(), + &solana_sdk::vote::program::ID, + ); + + let vote_state = VoteState::new( + &VoteInit { + node_pubkey: *node_pubkey, + authorized_voter: *authorized_voter, + authorized_withdrawer: *authorized_withdrawer, + commission, + }, + clock, + ); + + VoteState::serialize( + &VoteStateVersions::Current(Box::new(vote_state)), + account.data_as_mut_slice(), + ) + .unwrap(); + + client.set_account_custom(&vote_account.pubkey(), &account); + + VoteStore { + pubkey: vote_account.pubkey(), + } + }); + key.pubkey + } + pub fn get(&self, account_id: AccountId) -> Pubkey { + match self.accounts.get(&account_id) { + Some(v) => v.pubkey, + None => Pubkey::new_unique(), + } + } +} diff --git a/crates/fuzz/src/fuzz_client.rs b/crates/fuzz/src/fuzz_client.rs index 6fe11334f..6a5c06f53 100644 --- a/crates/fuzz/src/fuzz_client.rs +++ b/crates/fuzz/src/fuzz_client.rs @@ -1,63 +1,41 @@ #![allow(dead_code)] -use anchor_lang::prelude::Rent; use anchor_lang::solana_program::hash::Hash; -use solana_sdk::account::{Account, AccountSharedData}; -use solana_sdk::instruction::AccountMeta; +use solana_sdk::account::AccountSharedData; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::Keypair; +use solana_sdk::sysvar::Sysvar; use solana_sdk::transaction::VersionedTransaction; use crate::error::*; /// A trait providing methods to read and write (manipulate) accounts pub trait FuzzClient { - /// Create an empty account and add lamports to it - fn set_account(&mut self, lamports: u64) -> Keypair; + /// Get the cluster rent + fn get_sysvar(&mut self) -> T; - /// Create or overwrite a custom account, subverting normal runtime checks. - fn set_account_custom(&mut self, address: &Pubkey, account: &AccountSharedData); + /// Warp to specific epoch + fn warp_to_epoch(&mut self, warp_epoch: u64); - /// Create an SPL token account - #[allow(clippy::too_many_arguments)] - fn set_token_account( - &mut self, - mint: Pubkey, - owner: Pubkey, - amount: u64, - delegate: Option, - is_native: Option, - delegated_amount: u64, - close_authority: Option, - ) -> Pubkey; + /// Warp to specific slot + fn warp_to_slot(&mut self, warp_slot: u64); - /// Create an SPL mint account - fn set_mint_account( - &mut self, - decimals: u8, - owner: &Pubkey, - freeze_authority: Option, - ) -> Pubkey; + /// Forward in time by the desired number of seconds + fn forward_in_time(&mut self, seconds: i64) -> Result<(), FuzzClientError>; + + /// Create or overwrite a custom account, subverting normal runtime checks. + fn set_account_custom(&mut self, address: &Pubkey, account: &AccountSharedData); /// Get the Keypair of the client's payer account fn payer(&self) -> Keypair; /// Get the account at the given address - fn get_account(&mut self, key: &Pubkey) -> Result, FuzzClientError>; - - /// Get accounts based on the supplied meta information - fn get_accounts( - &mut self, - metas: &[AccountMeta], - ) -> Result>, FuzzClientErrorWithOrigin>; + fn get_account(&mut self, key: &Pubkey) -> AccountSharedData; /// Get last blockhash fn get_last_blockhash(&self) -> Hash; - /// Get the cluster rent - fn get_rent(&mut self) -> Result; - /// Send a transaction and return until the transaction has been finalized or rejected. fn process_transaction( &mut self, diff --git a/crates/fuzz/src/fuzz_data.rs b/crates/fuzz/src/fuzz_data.rs index bf96e5e62..30b0154d9 100644 --- a/crates/fuzz/src/fuzz_data.rs +++ b/crates/fuzz/src/fuzz_data.rs @@ -1,5 +1,5 @@ #![allow(dead_code)] - +#![allow(unexpected_cfgs)] use anchor_lang::solana_program::account_info::{Account as AccountTrait, AccountInfo}; use anchor_lang::solana_program::hash::Hash; use arbitrary::Arbitrary; @@ -69,7 +69,7 @@ where // fuzz_target=info", // ); - #[cfg(fuzzing_debug)] + #[cfg(feature = "fuzzing_debug")] { eprintln!("\x1b[34mInstructions sequence\x1b[0m:"); for ix in self.iter() { @@ -81,7 +81,7 @@ where let mut sent_txs: HashMap = HashMap::new(); for fuzz_ix in &mut self.iter() { - #[cfg(fuzzing_debug)] + #[cfg(feature = "fuzzing_debug")] eprintln!("\x1b[34mCurrently processing\x1b[0m: {}", fuzz_ix); if fuzz_ix diff --git a/crates/fuzz/src/fuzz_deserialize.rs b/crates/fuzz/src/fuzz_deserialize.rs deleted file mode 100644 index fbc2724b9..000000000 --- a/crates/fuzz/src/fuzz_deserialize.rs +++ /dev/null @@ -1,14 +0,0 @@ -#![allow(dead_code)] - -use anchor_lang::solana_program::account_info::AccountInfo; - -use crate::error::FuzzingError; - -pub trait FuzzDeserialize<'info>: Sized { - // TODO return also remaining accounts - - fn deserialize_option( - _program_id: &anchor_lang::prelude::Pubkey, - accounts: &mut &'info [Option>], - ) -> Result; -} diff --git a/crates/fuzz/src/instructions_sequence.rs b/crates/fuzz/src/instructions_sequence.rs new file mode 100644 index 000000000..6b608f20b --- /dev/null +++ b/crates/fuzz/src/instructions_sequence.rs @@ -0,0 +1,46 @@ +#[macro_export] +macro_rules! pre_sequence { + // Accept a list of FuzzInstruction variants using parentheses `()` + ($($ix_variant:ident),* $(,)?) => { + fn pre_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { + let mut instructions = Vec::new(); + $( + let ix = FuzzInstruction::$ix_variant($ix_variant::arbitrary(_u)?); + instructions.push(ix); + )* + Ok(instructions) + } + }; +} + +#[macro_export] +macro_rules! middle_sequence { + // Accept a list of FuzzInstruction variants (which may include duplicates) + ($($ix_variant:ident),* $(,)?) => { + fn ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { + #[allow(unused_mut)] + let mut instructions = Vec::new(); + $( + let ix = FuzzInstruction::$ix_variant($ix_variant::arbitrary(_u)?); + instructions.push(ix); + )* + Ok(instructions) + } + }; +} + +#[macro_export] +macro_rules! post_sequence { + // Accept a list of FuzzInstruction variants (which may include duplicates) + ($($ix_variant:ident),* $(,)?) => { + fn post_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { + #[allow(unused_mut)] + let mut instructions = Vec::new(); + $( + let ix = FuzzInstruction::$ix_variant($ix_variant::arbitrary(_u)?); + instructions.push(ix); + )* + Ok(instructions) + } + }; +} diff --git a/crates/fuzz/src/ix_ops.rs b/crates/fuzz/src/ix_ops.rs index 983fc0557..850e436c6 100644 --- a/crates/fuzz/src/ix_ops.rs +++ b/crates/fuzz/src/ix_ops.rs @@ -2,21 +2,18 @@ use crate::error::*; use crate::fuzz_client::FuzzClient; -use crate::fuzz_deserialize::FuzzDeserialize; -use anchor_lang::solana_program::account_info::AccountInfo; +use crate::snapshot::SnapshotAccount; use anchor_lang::InstructionData; use solana_sdk::instruction::AccountMeta; use solana_sdk::signature::Keypair; /// A trait providing methods to prepare data and accounts for the fuzzed instructions and allowing /// users to implement custom invariants checks and transactions error handling. -pub trait IxOps<'info> { +pub trait IxOps { /// The data to be passed as instruction data parameter type IxData: InstructionData; /// The accounts to be passed as instruction accounts type IxAccounts; - /// The structure to which the instruction accounts will be deserialized - type IxSnapshot: FuzzDeserialize<'info>; /// Specify Program ID to which the Instruction corresponds. This is particularly helpful when using multiple /// programs in the workspace, to differentiate between possible program calls. @@ -49,8 +46,8 @@ pub trait IxOps<'info> { #[allow(unused_variables)] fn check( &self, - pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], ix_data: Self::IxData, ) -> Result<(), FuzzingError> { Ok(()) @@ -80,19 +77,8 @@ pub trait IxOps<'info> { &self, e: FuzzClientErrorWithOrigin, ix_data: Self::IxData, - pre_ix_acc_infos: &mut &'info [Option>], + pre_ix_acc_infos: &[SnapshotAccount], ) -> Result<(), FuzzClientErrorWithOrigin> { Err(e) } - - /// A method implemented for each instruction variant. - /// This method calls the corresponding `deserialize_option`, which is defined - /// by deriving the `AccountsSnapshot` macro. - /// No changes are needed for this function. - fn deserialize_accounts( - &self, - accounts: &mut &'info [Option>], - ) -> Result { - Self::IxSnapshot::deserialize_option(&self.get_program_id(), accounts) - } } diff --git a/crates/fuzz/src/lib.rs b/crates/fuzz/src/lib.rs index 614575856..043b41c67 100644 --- a/crates/fuzz/src/lib.rs +++ b/crates/fuzz/src/lib.rs @@ -7,8 +7,8 @@ pub mod snapshot; pub type AccountId = u8; pub mod config; pub mod fuzz_client; -pub mod fuzz_deserialize; pub mod fuzz_test_executor; pub mod fuzz_trident; +pub mod instructions_sequence; pub mod ix_ops; pub mod transaction_executor; diff --git a/crates/fuzz/src/program_test_client_blocking.rs b/crates/fuzz/src/program_test_client_blocking.rs index 227f81d79..ccc5bee32 100644 --- a/crates/fuzz/src/program_test_client_blocking.rs +++ b/crates/fuzz/src/program_test_client_blocking.rs @@ -3,14 +3,13 @@ use solana_program_test::ProgramTest; use solana_program_test::ProgramTestContext; use solana_sdk::account::Account; use solana_sdk::account_info::AccountInfo; +use solana_sdk::clock::Clock; use solana_sdk::entrypoint::ProgramResult; -use solana_sdk::system_program::ID as SYSTEM_PROGRAM_ID; +use solana_sdk::sysvar::Sysvar; use solana_sdk::{ - account::AccountSharedData, hash::Hash, instruction::AccountMeta, program_option::COption, - program_pack::Pack, pubkey::Pubkey, rent::Rent, signature::Keypair, signature::Signer, + account::AccountSharedData, hash::Hash, pubkey::Pubkey, rent::Rent, signature::Keypair, transaction::VersionedTransaction, }; -use spl_token::state::Mint; use tokio::runtime::Builder; use crate::config::Config; @@ -105,125 +104,27 @@ macro_rules! convert_entry { } impl FuzzClient for ProgramTestClientBlocking { - fn set_account(&mut self, lamports: u64) -> Keypair { - let owner = Keypair::new(); - let account = AccountSharedData::new(lamports, 0, &SYSTEM_PROGRAM_ID); - self.ctx.set_account(&owner.pubkey(), &account); - owner - } - - fn set_token_account( - &mut self, - mint: Pubkey, - owner: Pubkey, - amount: u64, - delegate: Option, - is_native: Option, - delegated_amount: u64, - close_authority: Option, - ) -> Pubkey { - let mint_account_key = Keypair::new().pubkey(); - - let delegate = match delegate { - Some(a) => COption::Some(a), - _ => COption::None, - }; - - let is_native = match is_native { - Some(a) => COption::Some(a), - _ => COption::None, - }; - - let close_authority = match close_authority { - Some(a) => COption::Some(a), - _ => COption::None, - }; - - let r = Rent::default(); - let lamports = r.minimum_balance(spl_token::state::Account::LEN); - - let mut account = - AccountSharedData::new(lamports, spl_token::state::Account::LEN, &spl_token::id()); - - let token_account = spl_token::state::Account { - mint, - owner, - amount, - delegate, - state: spl_token::state::AccountState::Initialized, - is_native, - delegated_amount, - close_authority, - }; - - let mut data = vec![0u8; spl_token::state::Account::LEN]; - spl_token::state::Account::pack(token_account, &mut data[..]).unwrap(); - account.set_data_from_slice(&data); - self.ctx.set_account(&mint_account_key, &account); - - mint_account_key - } - - fn set_mint_account( - &mut self, - decimals: u8, - owner: &Pubkey, - freeze_authority: Option, - ) -> Pubkey { - let mint_account = Keypair::new(); - - let authority = match freeze_authority { - Some(a) => COption::Some(a), - _ => COption::None, - }; - - let r = Rent::default(); - let lamports = r.minimum_balance(Mint::LEN); - - let mut account = AccountSharedData::new(lamports, Mint::LEN, &spl_token::id()); - - let mint = Mint { - is_initialized: true, - mint_authority: COption::Some(*owner), - freeze_authority: authority, - decimals, - ..Default::default() - }; - - let mut data = vec![0u8; Mint::LEN]; - Mint::pack(mint, &mut data[..]).unwrap(); - account.set_data_from_slice(&data); - self.ctx.set_account(&mint_account.pubkey(), &account); - - mint_account.pubkey() - } - fn payer(&self) -> Keypair { self.ctx.payer.insecure_clone() } - fn get_account(&mut self, key: &Pubkey) -> Result, FuzzClientError> { - Ok(self + fn get_account(&mut self, key: &Pubkey) -> AccountSharedData { + let account = self .rt .block_on(self.ctx.banks_client.get_account_with_commitment( *key, solana_sdk::commitment_config::CommitmentLevel::Confirmed, - ))?) - } - fn get_accounts( - &mut self, - metas: &[AccountMeta], - ) -> Result>, FuzzClientErrorWithOrigin> { - let result: Vec<_> = metas - .iter() - .map(|m| { - self.get_account(&m.pubkey) - .map_err(|e| e.with_origin(Origin::Account(m.pubkey))) - }) - .collect(); - result.into_iter().collect() + )) + .unwrap_or_default(); + match account { + Some(account) => account.into(), + None => { + let account = AccountSharedData::new(0, 0, &solana_sdk::system_program::ID); + self.ctx.set_account(key, &account); + account + } + } } - fn get_last_blockhash(&self) -> Hash { self.ctx.last_blockhash } @@ -240,7 +141,31 @@ impl FuzzClient for ProgramTestClientBlocking { self.ctx.set_account(address, account); } - fn get_rent(&mut self) -> Result { - Ok(self.rt.block_on(self.ctx.banks_client.get_rent())?) + fn forward_in_time(&mut self, seconds: i64) -> Result<(), FuzzClientError> { + // Get the current clock state from the program test context. + let mut clock = self + .rt + .block_on(self.ctx.banks_client.get_sysvar::())?; + + // Calculate the new timestamp after advancing time. + let new_timestamp = clock.unix_timestamp.saturating_add(seconds); + + // Update the Clock instance with the new timestamp. + clock.unix_timestamp = new_timestamp; + + // Update the sysvar in the program test context with the new Clock state. + self.ctx.set_sysvar(&clock); + Ok(()) + } + fn warp_to_slot(&mut self, warp_slot: u64) { + let _ = self.ctx.warp_to_slot(warp_slot); + } + fn warp_to_epoch(&mut self, warp_epoch: u64) { + let _ = self.ctx.warp_to_epoch(warp_epoch); + } + fn get_sysvar(&mut self) -> T { + self.rt + .block_on(self.ctx.banks_client.get_sysvar::()) + .unwrap_or_default() } } diff --git a/crates/fuzz/src/snapshot.rs b/crates/fuzz/src/snapshot.rs index 94f56cff4..1e3593b24 100644 --- a/crates/fuzz/src/snapshot.rs +++ b/crates/fuzz/src/snapshot.rs @@ -1,57 +1,56 @@ #![allow(dead_code)] // The Snapshot is constructed in the FuzzTestExecutor macro and is generated automatically -use anchor_lang::solana_program::account_info::Account as Acc; -use anchor_lang::solana_program::account_info::AccountInfo; -use solana_sdk::{account::Account, instruction::AccountMeta}; +use solana_sdk::account::{AccountSharedData, ReadableAccount}; +use solana_sdk::clock::Epoch; +use solana_sdk::instruction::AccountMeta; +use solana_sdk::pubkey::Pubkey; use crate::fuzz_client::FuzzClient; use crate::error::*; -use crate::ix_ops::IxOps; -pub struct Snapshot<'info, T> { - before: Vec>, - before_acc_inf: Vec>>, - after: Vec>, - after_acc_inf: Vec>>, - metas: Vec, - ix: &'info T, + +pub struct SnapshotAccount { + address: Pubkey, + account: AccountSharedData, } -impl<'info, T> Snapshot<'info, T> -where - T: IxOps<'info>, -{ - pub fn new_empty(ix: &'info T) -> Snapshot<'info, T> { - let capacity = 0; - Self { - before: Vec::with_capacity(capacity), - before_acc_inf: Vec::with_capacity(capacity), - after: Vec::with_capacity(capacity), - after_acc_inf: Vec::with_capacity(capacity), - metas: vec![], - ix, - } +impl SnapshotAccount { + pub fn get_account(&self) -> &AccountSharedData { + &self.account + } + pub fn pubkey(&self) -> Pubkey { + self.address + } + pub fn data(&self) -> &[u8] { + self.account.data() } - pub fn add_metas(&mut self, metas: &[AccountMeta]) { - let capacity = metas.len(); - self.before = Vec::with_capacity(capacity); - self.before_acc_inf = Vec::with_capacity(capacity); - self.after = Vec::with_capacity(capacity); - self.after_acc_inf = Vec::with_capacity(capacity); - self.metas = metas.to_vec(); + pub fn lamports(&self) -> u64 { + self.account.lamports() } - pub fn new(metas: &[AccountMeta], ix: &'info T) -> Snapshot<'info, T> { - let capacity = metas.len(); + pub fn owner(&self) -> &Pubkey { + self.account.owner() + } + pub fn executable(&self) -> bool { + self.account.executable() + } + pub fn rent_epoch(&self) -> Epoch { + self.account.rent_epoch() + } +} +pub struct Snapshot { + before: Vec, + after: Vec, + metas: Vec, +} + +impl Snapshot { + pub fn new(metas: &[AccountMeta]) -> Snapshot { Self { - before: Vec::with_capacity(capacity), - before_acc_inf: Vec::with_capacity(capacity), - after: Vec::with_capacity(capacity), - after_acc_inf: Vec::with_capacity(capacity), + before: Default::default(), + after: Default::default(), metas: metas.to_vec(), - ix, } } - pub fn capture_before( &mut self, client: &mut impl FuzzClient, @@ -75,78 +74,30 @@ where fn capture( &mut self, client: &mut impl FuzzClient, - ) -> Result>, FuzzClientErrorWithOrigin> { - client.get_accounts(&self.metas) - } - - fn calculate_account_info( - accounts: &'info mut [Option], - metas: &'info [AccountMeta], - ) -> Vec>> { - accounts - .iter_mut() - .zip(metas) - .map(|(account, meta)| { - if let Some(account) = account { - let (lamports, data, owner, executable, rent_epoch) = account.get(); - Some(AccountInfo::new( - &meta.pubkey, - meta.is_signer, - meta.is_writable, - lamports, - data, - owner, - executable, - rent_epoch, - )) - } else { - None + ) -> Result, FuzzClientErrorWithOrigin> { + let snapshot_accounts = self + .metas + .iter() + .map(|meta| { + let account = client.get_account(&meta.pubkey); + SnapshotAccount { + address: meta.pubkey, + account, } }) - .collect() - } + .collect(); - fn set_missing_accounts_to_default(accounts: &mut [Option]) { - for acc in accounts.iter_mut() { - if acc.is_none() { - *acc = Some(solana_sdk::account::Account::default()); - } - } + Ok(snapshot_accounts) } - pub fn get_raw_pre_ix_accounts(&'info mut self) -> &[Option>] { - Self::set_missing_accounts_to_default(&mut self.before); - self.before_acc_inf = Self::calculate_account_info(&mut self.before, &self.metas); - &self.before_acc_inf + pub fn get_before(&self) -> &[SnapshotAccount] { + &self.before + } + pub fn get_after(&self) -> &[SnapshotAccount] { + &self.after } - pub fn get_snapshot( - &'info mut self, - ) -> Result<(T::IxSnapshot, T::IxSnapshot), FuzzingErrorWithOrigin> { - // When user passes an account that is not initialized, the runtime will provide - // a default empty account to the program. If the uninitialized account is of type - // AccountInfo, Signer or UncheckedAccount, Anchor will not return an error. However - // when we try to fetch "on-chain" accounts and an account is not initilized, this - // account simply does not exist and the get_account() method returns None. To prevent - // errors during deserialization due to missing accounts, we replace the missing accounts - // with default values similar as the runtime does. - Self::set_missing_accounts_to_default(&mut self.before); - Self::set_missing_accounts_to_default(&mut self.after); - - self.before_acc_inf = Self::calculate_account_info(&mut self.before, &self.metas); - self.after_acc_inf = Self::calculate_account_info(&mut self.after, &self.metas); - - let mut remaining_accounts_before: &[Option>] = &self.before_acc_inf; - let mut remaining_accounts_after: &[Option>] = &self.after_acc_inf; - - let pre_ix = self - .ix - .deserialize_accounts(&mut remaining_accounts_before) - .map_err(|e| e.with_context(Context::Pre))?; - let post_ix = self - .ix - .deserialize_accounts(&mut remaining_accounts_after) - .map_err(|e| e.with_context(Context::Post))?; - Ok((pre_ix, post_ix)) + pub fn get_snapshot(&self) -> (&[SnapshotAccount], &[SnapshotAccount]) { + (self.get_before(), self.get_after()) } } diff --git a/crates/fuzz/src/transaction_executor.rs b/crates/fuzz/src/transaction_executor.rs index 3c2f53729..089376aa2 100644 --- a/crates/fuzz/src/transaction_executor.rs +++ b/crates/fuzz/src/transaction_executor.rs @@ -18,17 +18,16 @@ pub struct TransactionExecutor; impl TransactionExecutor { #[allow(clippy::too_many_arguments)] - pub fn process_transaction_honggfuzz<'info, I>( + pub fn process_transaction_honggfuzz( instruction_name: &str, client: &mut impl FuzzClient, - ix: &'info I, - snapshot: &'info mut Snapshot<'info, I>, + ix: &I, sent_txs: &mut HashMap, config: &Config, accounts: &RefCell, ) -> core::result::Result<(), FuzzClientErrorWithOrigin> where - I: IxOps<'info>, + I: IxOps, { let program_id = ix.get_program_id(); @@ -37,13 +36,13 @@ impl TransactionExecutor { .map_err(|e| e.with_origin(Origin::Instruction(instruction_name.to_owned()))) .expect("Accounts calculation expect"); + let mut snapshot = Snapshot::new(&account_metas); + let data = ix .get_data(client, &mut accounts.borrow_mut()) .map_err(|e| e.with_origin(Origin::Instruction(instruction_name.to_owned()))) .expect("Data calculation expect"); - snapshot.add_metas(&account_metas); - snapshot.capture_before(client).unwrap(); let ixx = Instruction { @@ -84,12 +83,7 @@ impl TransactionExecutor { stats_logger.increase_successful(instruction_name.to_owned()); snapshot.capture_after(client).unwrap(); - let (acc_before, acc_after) = snapshot - .get_snapshot() - .map_err(|e| { - e.with_origin(Origin::Instruction(instruction_name.to_owned())) - }) - .expect("Snapshot deserialization expect"); // we want to panic if we cannot unwrap to cause a crash + let (acc_before, acc_after) = snapshot.get_snapshot(); if let Err(e) = ix.check(acc_before, acc_after, data).map_err(|e| { e.with_origin(Origin::Instruction(instruction_name.to_owned())) @@ -106,8 +100,8 @@ impl TransactionExecutor { stats_logger.increase_failed(instruction_name.to_owned()); stats_logger.output_serialized(); - let mut raw_accounts = snapshot.get_raw_pre_ix_accounts(); - ix.tx_error_handler(e, data, &mut raw_accounts)? + let raw_accounts = snapshot.get_before(); + ix.tx_error_handler(e, data, raw_accounts)? } } } else { @@ -117,12 +111,7 @@ impl TransactionExecutor { match tx_result { Ok(_) => { snapshot.capture_after(client).unwrap(); - let (acc_before, acc_after) = snapshot - .get_snapshot() - .map_err(|e| { - e.with_origin(Origin::Instruction(instruction_name.to_owned())) - }) - .expect("Snapshot deserialization expect"); // we want to panic if we cannot unwrap to cause a crash + let (acc_before, acc_after) = snapshot.get_snapshot(); if let Err(e) = ix.check(acc_before, acc_after, data).map_err(|e| { e.with_origin(Origin::Instruction(instruction_name.to_owned())) @@ -132,8 +121,8 @@ impl TransactionExecutor { } } Err(e) => { - let mut raw_accounts = snapshot.get_raw_pre_ix_accounts(); - ix.tx_error_handler(e, data, &mut raw_accounts)? + let raw_accounts = snapshot.get_before(); + ix.tx_error_handler(e, data, raw_accounts)? } } } @@ -142,17 +131,16 @@ impl TransactionExecutor { Ok(()) } #[allow(clippy::too_many_arguments)] - pub fn process_transaction_afl<'info, I>( + pub fn process_transaction_afl( instruction_name: &str, client: &mut impl FuzzClient, - ix: &'info I, - snapshot: &'info mut Snapshot<'info, I>, + ix: &I, sent_txs: &mut HashMap, config: &Config, accounts: &RefCell, ) -> core::result::Result<(), FuzzClientErrorWithOrigin> where - I: IxOps<'info>, + I: IxOps, { let program_id = ix.get_program_id(); @@ -161,13 +149,13 @@ impl TransactionExecutor { .map_err(|e| e.with_origin(Origin::Instruction(instruction_name.to_owned()))) .expect("Accounts calculation expect"); + let mut snapshot = Snapshot::new(&account_metas); + let data = ix .get_data(client, &mut accounts.borrow_mut()) .map_err(|e| e.with_origin(Origin::Instruction(instruction_name.to_owned()))) .expect("Data calculation expect"); - snapshot.add_metas(&account_metas); - snapshot.capture_before(client).unwrap(); let ixx = Instruction { @@ -201,12 +189,7 @@ impl TransactionExecutor { match tx_result { Ok(_) => { snapshot.capture_after(client).unwrap(); - let (acc_before, acc_after) = snapshot - .get_snapshot() - .map_err(|e| { - e.with_origin(Origin::Instruction(instruction_name.to_owned())) - }) - .expect("Snapshot deserialization expect"); // we want to panic if we cannot unwrap to cause a crash + let (acc_before, acc_after) = snapshot.get_snapshot(); if let Err(e) = ix.check(acc_before, acc_after, data).map_err(|e| { e.with_origin(Origin::Instruction(instruction_name.to_owned())) @@ -216,8 +199,8 @@ impl TransactionExecutor { } } Err(e) => { - let mut raw_accounts = snapshot.get_raw_pre_ix_accounts(); - ix.tx_error_handler(e, data, &mut raw_accounts)? + let raw_accounts = snapshot.get_before(); + ix.tx_error_handler(e, data, raw_accounts)? } } } diff --git a/documentation/docs/faq/faq.md b/documentation/docs/faq/faq.md index f043d4964..f16518231 100644 --- a/documentation/docs/faq/faq.md +++ b/documentation/docs/faq/faq.md @@ -7,7 +7,7 @@ hide: ### Is Trident supported only with Anchor ? -- Currently yes, Trident under the hood obtains data from the IDL generated by Anchor and it has to have access to the AccountsSnapshots derived for each Instruction Context. +- Currently yes, Trident under the hood obtains data from the IDL generated by Anchor. ### I created the Fuzz Test what should I do next ? diff --git a/documentation/docs/features/account-storages.md b/documentation/docs/features/account-storages.md index 35d276cba..145fd2fde 100644 --- a/documentation/docs/features/account-storages.md +++ b/documentation/docs/features/account-storages.md @@ -18,16 +18,20 @@ Instead, Trident generates random **AccountIDs** which are indexes to **Account Currently, supported types of Account Storages: - - Signer - - PDA - - Token Account - - Program account + - Signer (KeypairStore) + - Program Derived Address (PdaStore) + - Token Account (TokenStore) + - Mint Account (MintStore) + - Program Account (ProgramStore) + - Stake Account (StakeStore) + - Vote Account (VoteStore) + Then use the corresponding AccountsStorage. ```rust pub struct FuzzAccounts { - signer: AccountsStorage, + signer: AccountsStorage, some_pda: AccountsStorage, token_vault: AccountsStorage, mint: AccountsStorage, diff --git a/documentation/docs/features/error-handlers.md b/documentation/docs/features/error-handlers.md index ab6d7f5e7..901d5d2cc 100644 --- a/documentation/docs/features/error-handlers.md +++ b/documentation/docs/features/error-handlers.md @@ -17,7 +17,7 @@ fn tx_error_handler( &self, e: FuzzClientErrorWithOrigin, ix_data: Self::IxData, - pre_ix_acc_infos: &'info mut [Option>], + pre_ix_acc_infos: &[SnapshotAccount],, ) -> Result<(), FuzzClientErrorWithOrigin> { Err(e) } diff --git a/documentation/docs/features/fuzz-instructions.md b/documentation/docs/features/fuzz-instructions.md index 9cea29906..7db685014 100644 --- a/documentation/docs/features/fuzz-instructions.md +++ b/documentation/docs/features/fuzz-instructions.md @@ -27,21 +27,21 @@ pub struct Update { Each Instruction variant has to define `IxOps` trait containing the following methods: -- `get_program_id()` (required) -- `get_data()` (required) -- `get_accounts()` (required) -- `check()` (optional) -- `tx_error_handler()` (optional) +- [`get_program_id()`](./fuzz-instructions.md/#get_program_id) (automatically implemented) +- [`get_data()`](./fuzz-instructions.md/#get_data) (required) +- [`get_accounts()`](./fuzz-instructions.md/#get_accounts) (required) +- [`check()`](./fuzz-instructions.md/#check) (optional) +- [`tx_error_handler()`](./fuzz-instructions.md/#tx_error_handler) (optional) - `deserialize_accounts()` (automatically implemented) -## Get Program ID +## `get_program_id()` This method specifies **program ID** to which the Instruction corresponds. In case you have only one program in the Anchor Workspace it is not really important. The importance occurs when you have multiple programs in the Workspace and you want to call Instructions of every Program. In that case each Instruction Variant corresponds to its program by the Program ID. -## Get Data +## `get_data()` This method specifies what the Instruction Input Data should look like. You can use completely random data generated by the fuzzer, such as: @@ -105,134 +105,79 @@ Then, you would also need to implement the [`std::convert::From`](https://doc Consider checking the [Examples](../examples/examples.md) section for more tips. -## Get Accounts +## `get_accounts()` This method specifies how the **Accounts** for the corresponding Instruction should be resolved. You can use accounts stored within the **FuzzAccounts Account Storages**, or you can define custom Account using the **client**. +There are two main functions to use within the `get_accounts()`: -!!! important +- [`get_or_create_account()`](./fuzz-instructions.md/#get_or_create_account) +- [`get()`](./fuzz-instructions.md/#get) +- [`set_custom()`](./fuzz-instructions.md/#set_custom) - Source Code below +### `get_or_create_account()` - - Take the author from the `FuzzAccounts` Account Storage author on `self.accounts.author` index. If Account on that index does not exist yet, it will be created and returned. In case it is already created, the corresponding Account will be returned. - - `hello_world_account` Account Storage is of type PdaStore, in this case `get_or_create_account` function do the same as for the authority, but you need to specify seeds to derive its PDA. - - Next, you need to specify signers if there should be any. - - Lastly, specify the Account Metas of the corresponding Instruction. - - for example `::accounts:: {}.to_account_metas(None);` +Insert a new record into AccountsStorage based on the `account_id`. If a record with the entered `account_id` already exists, it is returned, and no insertion is performed. -```rust -fn get_accounts( - &self, - client: &mut impl FuzzClient, - fuzz_accounts: &mut FuzzAccounts, -) -> Result<(Vec, Vec), FuzzingError> { - let author = fuzz_accounts.author.get_or_create_account( - self.accounts.author, +!!! tip + + - This function is particularly useful for instructions that initialize accounts. + + Example: + + ```rust + let hello_world_account = fuzz_accounts.hello_world_account.get_or_create_account( + self.accounts.hello_world_account, client, - 5 * LAMPORTS_PER_SOL, + &[b"hello_world_seed"], + &hello_world::ID, ); + ``` + The code above will return the PDA from `hello_world`'s AccountsStorage if a record for the entered `account_id` exists. If not, the function will create a new record corresponding to the PDA derived from the provided seeds and return the PDA. - let hello_world_account = fuzz_accounts - .hello_world_account - .get_or_create_account( - self.accounts.hello_world_account, - &[b"hello_world_seed"], - &hello_world::ID, - ) - .unwrap(); - let signers = vec![author.clone()]; - let acc_meta = hello_world::accounts::InitializeContext { - author: author.pubkey(), - hello_world_account: hello_world_account.pubkey(), - system_program: solana_sdk::system_program::ID, - } - .to_account_metas(None); - Ok((signers, acc_meta)) -} -``` +### `get()` + +Retrieves a record from AccountsStorage based on the entered `account_id`. If no record exists for the `account_id`, a random public key is returned. +!!! tip -### Create an arbitrary account -The `AccountsStorage` type provides an implementation of the `get_or_create_account` method that helps you create new or read already existing accounts. There are different implementations for different types of storage (`Keypair`, `TokenStore`, `MintStore`, `PdaStore`) to simplify the creation of new accounts. + - This function is particularly useful for instructions other than those that perform initialization. -However, there are cases when the provided implementation is not sufficient and it is necessary to create an account manually. These cases can be (but are not limited to) for example: + Example: -- you need to create a new account with a predefined address -- you need to create a new account that is not owned by the system program -- you need to create and initialize a new PDA account -- your program expects an account to be initialized in a previous instruction + ```rust + let hello_world_account = fuzz_accounts + .hello_world_account + .get(self.accounts.hello_world_account); + ``` + The code above will return the PDA from `hello_world`'s AccountsStorage if a record for the entered `account_id` exists. If not, the function will return a random public key. -In that case, you can use the `storage` method of the `AccountsStorage` struct that exposes the underlying `HashMap` and you can add new accounts directly to it. -It is possible to create and store any kind of account. For example: +### `set_custom()` -- to add an account that uses the `#[account(zero)]` anchor constraint (must be rent exempt, owned by your program, with empty data): +If the previous two functions are insufficient, you can use `set_custom()` to manually set an account with data you select. This function accepts `account_id`, which specifies the record in the corresponding AccountsStorage; `client`, which handles the insertion of AccountSharedData; the account's `address` (particularly helpful if a predefined address is needed); and `AccountSharedData`, which you can configure as needed. -```rust -let state = fuzz_accounts - .state - // gets the storage of all `state` account variants - .storage() - // returns the Keypair of the `state` account with - // the given `AccountId` if it has been added previously - .entry(self.accounts.state) - .or_insert_with(|| { - let space = State::SIZE; - let rent_exempt_lamports = client.get_rent().unwrap() - .minimum_balance(space); - let keypair = Keypair::new(); - let account = AccountSharedData::new_data_with_space::<[u8; 0]>( - rent_exempt_lamports, - &[], - space, - &my_program::id(), - ).unwrap(); - // insert the custom account also into the client - client.set_account_custom(&keypair.pubkey(), &account); - keypair - }); -``` +!!! tip -- to add a new system-owned account with a specific PDA (address): + Example: + + ```rust + let address = Keypair::new(); + fuzz_accounts.hello_world_account.set_custom( + self.accounts.hello_world_account, + client, + address.pubkey(), + AccountSharedData::new(10 * LAMPORTS_PER_SOL, 0, &solana_sdk::system_program::ID), + ); + ``` + The code above will generate a new random keypair. The `set_account` function will insert the specified `AccountSharedData` into the client and create a record in the corresponding AccountsStorage based on the entered `account_id`. -```rust -let rent_exempt_for_token_acc = client - .get_rent() - .unwrap() - .minimum_balance(anchor_spl::token::spl_token::state::Account::LEN); - -let my_pda = fuzz_accounts - .my_pda - // gets the storage of all `my_pda` account variants - .storage() - // returns the PdaStore struct of the `my_pda` account with - // the given `AccountId` if it has been added previously - .entry(self.accounts.my_pda) - .or_insert_with(|| { - let seeds = &[b"some-seeds"]; - let pda = Pubkey::find_program_address(seeds, &my_program::id()).0; - let account = AccountSharedData::new_data_with_space::<[u8; 0]>( - rent_exempt_for_token_acc, - &[], - 0, - &SYSTEM_PROGRAM_ID, - ).unwrap(); - // insert the custom account also into the client - client.set_account_custom(&pda, &account); - let vec_of_seeds: Vec> = seeds.iter().map(|&seed| seed.to_vec()) - .collect(); - PdaStore { - pubkey: pda, - seeds: vec_of_seeds, - } - }).pubkey(); -``` -## Check +## `check()` This method provides Invariant Check for the corresponding Instruction. Check [Invariant Checks](./invariant-checks.md). -## Tx Error Handler +## `tx_error_handler()` This method provides Tx Error Handler for the corresponding Instruction. Check [Error Handler](./error-handlers.md). diff --git a/documentation/docs/features/instructions-sequences.md b/documentation/docs/features/instructions-sequences.md index f718302c1..404fbf4d4 100644 --- a/documentation/docs/features/instructions-sequences.md +++ b/documentation/docs/features/instructions-sequences.md @@ -1,22 +1,52 @@ # Instructions Sequences -Trident allows you to specify Custom Instruction Sequences you would like to execute. +Trident allows you to specify __custom Instruction squences__ you would like to execute. Possible Instruction sequences are split into 3 parts -- pre-Instructions -- Instructions -- post-Instructions +- __pre-Instructions__ +- __Instructions__ +- __post-Instructions__ -For example if you program always needs to start with some kind of Initialization instruction, you can specify this Initialize Instruction in `pre_ixs` as shown in the source code below. +For example if you program always needs to start with some kind of Initialization instruction, you can specify this Initialize Instruction using the `pre_sequence()` macro as shown in the source code below. +```rust +// test_fuzz.rs + +/// ... + +struct InstructionsSequence; +/// Define instruction sequences for invocation. +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: +/// ``` +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} +/// ``` +/// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(InitializeFn); + middle_sequence!(); + post_sequence!(); +} +/// ... + +``` !!! tip - - returning `Ok(vec![])` will result in None Instructions executed in the corresponding part. + - The arguments to the macro are variants of `FuzzInstruction` specified in `fuzz_instructions.rs`. + - Empty macro parameters (such as `middle_sequence!()`), will skip that section, meaning no instructions will be executed during the section. + - If no macro is defined for a section, a random instruction sequence will be generated for the section. + +## Manual trait override +It is not necessary to use the macro as explained above. The trait implementation (i.e., the methods) can be implemented manually, as shown in the code below. This approach allows for greater customization if needed. The rules are the same as described above. ```rust // test_fuzz.rs diff --git a/documentation/docs/features/invariant-checks.md b/documentation/docs/features/invariant-checks.md index 326d8cdf9..ae2be94f9 100644 --- a/documentation/docs/features/invariant-checks.md +++ b/documentation/docs/features/invariant-checks.md @@ -12,11 +12,13 @@ The Invariant Check will be called after the Instruction was successfully invoke ```rust fn check( &self, - _pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + _pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], _ix_data: Self::IxData, ) -> Result<(), FuzzingError> { - if let Some(hello_world_account) = post_ix.hello_world_account { + if let Ok(hello_world_account) = + hello_world::StoreHelloWorld::try_deserialize(&mut post_ix[1].data()) + { if hello_world_account.input == 253 { return Err(FuzzingError::Custom(1)); } @@ -25,6 +27,17 @@ fn check( } ``` +!!! important + + Order of accounts within the array is the same as the order of accounts on the instruction input of your program. + + +## Account Deserialization + +The `SnapshotAccount` provides methods to obtain parts of the account (e.g. address, its data, owner etc.). If you want to deserialize data into struct defined within your program (or within for example `anchor-spl`), you can use approach from source code above, meaning utilze `try_deserialize` generated by anchor within your program. + + + !!! tip Consider checking the [Examples](../examples/examples.md) section for more tips. diff --git a/documentation/docs/installation/installation.md b/documentation/docs/installation/installation.md index 5ad8e4cea..89838f9e7 100644 --- a/documentation/docs/installation/installation.md +++ b/documentation/docs/installation/installation.md @@ -63,7 +63,7 @@ cargo install trident-cli | ***{{ config.site_name }} CLI*** | ***Anchor*** | ***Solana*** | ***Rust*** | ***Honggfuzz*** | |-:|-:|-:|-:|-:| | :material-developer-board: ***`develop`*** | `0.30.1` | `^1.17.4` | `nightly` | `0.5.56` | -| :material-tag: ***`0.8.0`*** | `0.30.1` | `^1.17.4` | `nightly` | `0.5.56` | +| :material-tag: ***`0.8.*`*** | `0.30.1` | `^1.17.4` | `nightly` | `0.5.56` | | :material-tag: ***`0.7.0`*** | `>=0.29.*`1 | `^1.17.4` | `nightly` | `0.5.56` | | :material-tag: ***`0.6.0`*** | `>=0.29.*`1 | `^1.17` | `nightly` | `0.5.55` | | :material-tag: ***`0.5.0`*** | `~0.28.*` | `=1.16.6` | - | - | diff --git a/documentation/docs/writing-fuzz-test/writing-fuzz-test.md b/documentation/docs/writing-fuzz-test/writing-fuzz-test.md index 299313512..66f7df894 100644 --- a/documentation/docs/writing-fuzz-test/writing-fuzz-test.md +++ b/documentation/docs/writing-fuzz-test/writing-fuzz-test.md @@ -26,59 +26,6 @@ trident init ## Fill the Fuzz test Template - -### Derive AccountsSnapshots - -For every Account Context specified in the Anchor project derive `AccountsSnapshots` such as: - -```rust -// ... - -use trident_derive_accounts_snapshots::AccountsSnapshots; - -// ... - - -#[derive(Accounts, AccountsSnapshots)] -pub struct InitializeContext<'info> { - #[account(mut)] - pub author: Signer<'info>, - #[account( - init, - payer=author, - space=8+100, - seeds=[b"hello_world_seed"], - bump - )] - pub hello_world_account: Account<'info, StoreHelloWorld>, - pub system_program: Program<'info, System>, - // ... - -} - -``` - -### Link the AccountsSnapshots - -Fuzz Instructions use the derived `AccountsSnapshots`. You need to link the derived `AccountsSnapshots` to the corresponding aliases. - -!!! important - - Modules where the Contexts (with the derived AccountsSnapshots) are specified need to be public. - -```rust -// fuzz_instructions.rs - -use hello_world::trident_fuzz_initialize_context_snapshot::InitializeContextAlias; - -type InitializeFnSnapshot<'info> = InitializeContextAlias<'info>; - -``` - -!!! tip - - For more examples, check the [Examples](../examples/examples.md). - ### Define Fuzz Accounts Define `AccountsStorage` type for each Account you would like to use. diff --git a/documentation/mkdocs.yml b/documentation/mkdocs.yml index 5240810ba..7c0a47a1b 100644 --- a/documentation/mkdocs.yml +++ b/documentation/mkdocs.yml @@ -96,6 +96,8 @@ plugins: minify_html: true - git-revision-date-localized: type: timeago + - mike: + canonical_version: latest # https://squidfunk.github.io/mkdocs-material/customization/?h=extra+css#additional-css extra_css: diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/Cargo.lock b/examples/fuzz-tests/arbitrary-custom-types-4/Cargo.lock index 43f766f47..1a1a9e32e 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/Cargo.lock +++ b/examples/fuzz-tests/arbitrary-custom-types-4/Cargo.lock @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -356,9 +356,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -368,8 +368,6 @@ name = "arbitrary-custom-types-4" version = "0.1.0" dependencies = [ "anchor-lang", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -532,7 +530,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -565,9 +563,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -594,7 +592,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -791,7 +789,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -893,22 +891,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -919,9 +917,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -998,9 +996,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.28" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1327,7 +1325,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1338,7 +1336,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1412,13 +1410,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1497,7 +1495,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1520,7 +1518,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1602,9 +1600,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1626,7 +1624,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1639,7 +1637,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1817,7 +1815,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1987,9 +1985,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2126,9 +2124,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2185,6 +2183,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2193,12 +2309,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]] @@ -2259,7 +2386,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2327,9 +2454,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2366,9 +2493,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2447,6 +2574,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2725,7 +2858,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2806,7 +2939,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2818,7 +2951,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2990,29 +3123,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3174,9 +3307,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3198,7 +3331,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3393,9 +3526,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3546,9 +3679,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3602,9 +3735,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3623,9 +3756,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3653,7 +3786,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3709,9 +3842,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3727,20 +3860,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3788,7 +3921,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3927,9 +4060,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3952,9 +4085,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4013,9 +4146,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4034,9 +4167,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4051,9 +4184,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4062,9 +4195,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4082,9 +4215,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4101,9 +4234,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4119,9 +4252,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4136,9 +4269,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4169,9 +4302,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4179,9 +4312,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4193,9 +4326,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4215,9 +4348,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4239,9 +4372,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4264,21 +4397,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4289,9 +4422,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4300,9 +4433,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4310,9 +4443,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4325,9 +4458,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4353,9 +4486,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4382,9 +4515,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4437,9 +4570,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4465,9 +4598,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4495,9 +4628,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4520,9 +4653,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4547,9 +4680,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4557,9 +4690,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4576,9 +4709,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4602,9 +4735,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4624,9 +4757,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4637,9 +4770,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4714,9 +4847,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4769,15 +4902,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4788,9 +4921,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4804,9 +4937,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4819,9 +4952,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4852,9 +4985,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4866,9 +4999,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4881,9 +5014,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4905,9 +5038,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4930,9 +5063,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4945,9 +5078,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4961,9 +5094,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4980,9 +5113,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5002,9 +5135,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5016,9 +5149,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5119,7 +5252,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5131,7 +5264,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5179,7 +5312,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5291,6 +5424,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5362,9 +5501,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5380,7 +5519,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5401,6 +5540,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5424,9 +5574,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5525,7 +5675,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5536,7 +5686,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5557,22 +5707,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5635,6 +5785,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" @@ -5652,9 +5812,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5676,7 +5836,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5840,7 +6000,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5879,7 +6039,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -5900,7 +6060,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -5909,20 +6069,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5931,7 +6080,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5940,7 +6089,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -5954,6 +6103,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -5993,12 +6144,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6075,9 +6220,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6090,6 +6235,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 = "valuable" version = "0.1.0" @@ -6147,9 +6304,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6158,24 +6315,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6185,9 +6342,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6195,28 +6352,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6453,6 +6610,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" @@ -6497,6 +6666,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6515,7 +6708,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6535,7 +6749,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/Cargo.toml b/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/Cargo.toml index 1b7723837..08c52a937 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/Cargo.toml +++ b/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/Cargo.toml @@ -15,14 +15,6 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/src/lib.rs b/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/src/lib.rs index 02d8f226a..c6b6c69a4 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/src/lib.rs +++ b/examples/fuzz-tests/arbitrary-custom-types-4/programs/arbitrary-custom-types-4/src/lib.rs @@ -4,8 +4,6 @@ declare_id!("CdWkp3CY9CAjBQP73SDCwDDfsumwY7e6DDSjrN5u8Cii"); const MAGIC_NUMBER: u8 = 254; -use trident_derive_accounts_snapshots::AccountsSnapshots; - #[program] pub mod arbitrary_custom_types_4 { use super::*; @@ -50,7 +48,7 @@ pub fn buggy_math_function(input1: u8, input2: u8) -> u8 { input1 / divisor } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Initialize<'info> { #[account(init, payer = user, space = 8 + 40)] pub counter: Account<'info, Counter>, @@ -61,7 +59,7 @@ pub struct Initialize<'info> { pub system_program: Program<'info, System>, } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Update<'info> { #[account(mut, has_one = authority)] pub counter: Account<'info, Counter>, diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/Cargo.toml index 4d72c7798..f41661250 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/Cargo.toml @@ -17,4 +17,3 @@ path = "../../../../../crates/client" [dependencies.arbitrary-custom-types-4] path = "../../programs/arbitrary-custom-types-4" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 50e061c07..acb425069 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,11 +1,5 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitializeSnapshot<'info> = InitializeAlias<'info>; -type UpdateSnapshot<'info> = UpdateAlias<'info>; -use arbitrary_custom_types_4::trident_fuzz_initialize_snapshot::InitializeAlias; -use arbitrary_custom_types_4::trident_fuzz_update_snapshot::UpdateAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -52,10 +46,9 @@ pub struct UpdateData { pub variant: InputUpdateVariantTrident, } ///IxOps implementation for `Initialize` with all required functions. -impl<'info> IxOps<'info> for Initialize { +impl IxOps for Initialize { type IxData = arbitrary_custom_types_4::instruction::Initialize; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { arbitrary_custom_types_4::ID @@ -104,10 +97,9 @@ impl<'info> IxOps<'info> for Initialize { } } ///IxOps implementation for `Update` with all required functions. -impl<'info> IxOps<'info> for Update { +impl IxOps for Update { type IxData = arbitrary_custom_types_4::instruction::Update; type IxAccounts = FuzzAccounts; - type IxSnapshot = UpdateSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { arbitrary_custom_types_4::ID @@ -161,8 +153,8 @@ impl<'info> IxOps<'info> for Update { /// Keypair, PdaStore, TokenStore, MintStore, ProgramStore #[derive(Default)] pub struct FuzzAccounts { - user: AccountsStorage, - counter: AccountsStorage, + user: AccountsStorage, + counter: AccountsStorage, // _authority: AccountsStorage, // _system_program: AccountsStorage, } diff --git a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index dff433797..f8908d96d 100644 --- a/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/arbitrary-custom-types-4/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -6,24 +6,20 @@ use arbitrary_custom_types_4::entry as entry_arbitrary_custom_types_4; use arbitrary_custom_types_4::ID as PROGRAM_ID_ARBITRARY_CUSTOM_TYPES_4; use fuzz_instructions::FuzzInstruction; const PROGRAM_NAME_ARBITRARY_CUSTOM_TYPES_4: &str = "arbitrary_custom_types_4"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - let update = FuzzInstruction::Update(Update::arbitrary(u)?); - Ok(vec![init, update]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(Initialize, Update); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -43,5 +39,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/Cargo.lock b/examples/fuzz-tests/arbitrary-limit-inputs-5/Cargo.lock index 692d75789..07c1c58f0 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/Cargo.lock +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/Cargo.lock @@ -351,9 +351,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -371,9 +371,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -384,8 +384,6 @@ version = "0.1.0" dependencies = [ "anchor-lang", "anchor-spl", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -548,7 +546,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -581,9 +579,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -610,7 +608,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -807,7 +805,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -909,22 +907,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -935,9 +933,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -1014,9 +1012,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.28" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1343,7 +1341,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1354,7 +1352,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1428,13 +1426,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1513,7 +1511,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1536,7 +1534,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1618,9 +1616,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1642,7 +1640,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1655,7 +1653,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1833,7 +1831,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2004,9 +2002,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2143,9 +2141,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2202,6 +2200,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2210,12 +2326,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]] @@ -2276,7 +2403,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2344,9 +2471,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2383,9 +2510,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2464,6 +2591,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2742,7 +2875,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2823,7 +2956,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2835,7 +2968,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3007,29 +3140,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3191,9 +3324,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3215,7 +3348,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3410,9 +3543,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3563,9 +3696,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3619,9 +3752,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3640,9 +3773,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3670,7 +3803,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3726,9 +3859,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3744,20 +3877,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3805,7 +3938,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3944,9 +4077,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3969,9 +4102,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4030,9 +4163,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4051,9 +4184,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4068,9 +4201,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4079,9 +4212,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4099,9 +4232,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4118,9 +4251,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4136,9 +4269,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4153,9 +4286,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4186,9 +4319,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4196,9 +4329,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4210,9 +4343,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4232,9 +4365,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4256,9 +4389,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4281,21 +4414,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4306,9 +4439,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4317,9 +4450,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4327,9 +4460,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4342,9 +4475,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4370,9 +4503,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4399,9 +4532,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4454,9 +4587,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4482,9 +4615,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4512,9 +4645,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4537,9 +4670,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4564,9 +4697,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4574,9 +4707,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4593,9 +4726,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4619,9 +4752,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4641,9 +4774,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4654,9 +4787,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4731,9 +4864,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4786,15 +4919,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4805,9 +4938,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4821,9 +4954,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4836,9 +4969,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4869,9 +5002,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4883,9 +5016,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4898,9 +5031,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4922,9 +5055,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4947,9 +5080,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4962,9 +5095,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4978,9 +5111,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4997,9 +5130,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5019,9 +5152,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5033,9 +5166,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5163,7 +5296,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn 0.1.2", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5174,7 +5307,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn 0.2.0", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5186,7 +5319,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5199,7 +5332,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5273,7 +5406,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5285,7 +5418,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5491,6 +5624,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" @@ -5562,9 +5701,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5580,7 +5719,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5601,6 +5740,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5624,9 +5774,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5725,7 +5875,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5736,7 +5886,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5757,22 +5907,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5835,6 +5985,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" @@ -5852,9 +6012,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5876,7 +6036,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6040,7 +6200,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6079,7 +6239,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -6100,7 +6260,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -6109,20 +6269,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -6131,7 +6280,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -6140,7 +6289,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -6154,6 +6303,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -6193,12 +6344,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6275,9 +6420,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6290,6 +6435,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 = "valuable" version = "0.1.0" @@ -6347,9 +6504,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6358,24 +6515,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6385,9 +6542,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6395,28 +6552,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6653,6 +6810,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" @@ -6697,6 +6866,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6715,7 +6908,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6735,7 +6949,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/Trident.toml b/examples/fuzz-tests/arbitrary-limit-inputs-5/Trident.toml index 6de0eb954..2c1032328 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/Trident.toml +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/Trident.toml @@ -34,4 +34,4 @@ save_all = false allow_duplicate_txs = false # Trident will show statistics after the fuzzing session. This option forces use of honggfuzz parameter # `keep_output` as true in order to be able to catch fuzzer stdout. (default: false) -fuzzing_with_stats = false +fuzzing_with_stats = true diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/Cargo.toml b/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/Cargo.toml index 84b90a2f2..b8210d00d 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/Cargo.toml +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/Cargo.toml @@ -15,15 +15,7 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" anchor-spl = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/initialize.rs b/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/initialize.rs index fe7355485..12fb5f3df 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/initialize.rs +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/initialize.rs @@ -2,7 +2,6 @@ use anchor_lang::prelude::*; use anchor_spl::token::{ set_authority, transfer, Mint, SetAuthority, Token, TokenAccount, Transfer, }; -use trident_derive_accounts_snapshots::AccountsSnapshots; use crate::state::Escrow; use crate::VestingError; @@ -62,7 +61,7 @@ pub fn _init_vesting( Ok(()) } -#[derive(AccountsSnapshots, Accounts)] +#[derive(Accounts)] #[instruction(recipient: Pubkey)] pub struct InitVestingContext<'info> { #[account(mut)] diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/withdraw.rs b/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/withdraw.rs index f4a2ac026..3170ad7a0 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/withdraw.rs +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/programs/arbitrary-limit-inputs-5/src/instructions/withdraw.rs @@ -3,8 +3,6 @@ use anchor_spl::token::{transfer, Mint, Token, TokenAccount, Transfer}; use crate::{state::Escrow, VestingError}; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _withdraw_unlocked(ctx: Context) -> Result<()> { let escrow = &mut ctx.accounts.escrow; @@ -34,7 +32,7 @@ pub fn _withdraw_unlocked(ctx: Context) -> Result<()> { Ok(()) } -#[derive(AccountsSnapshots, Accounts)] +#[derive(Accounts)] pub struct WithdrawUnlocked<'info> { #[account(mut)] pub recipient: Signer<'info>, diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/Cargo.toml index 0208762a2..1a3880c61 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/Cargo.toml @@ -18,4 +18,3 @@ path = "../../../../../crates/client" [dependencies.arbitrary-limit-inputs-5] path = "../../programs/arbitrary-limit-inputs-5" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 6d355267b..b9a7ddfc8 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,11 +1,5 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitVestingSnapshot<'info> = InitVestingContextAlias<'info>; -type WithdrawUnlockedSnapshot<'info> = WithdrawUnlockedAlias<'info>; -use arbitrary_limit_inputs_5::trident_fuzz_init_vesting_context_snapshot::InitVestingContextAlias; -use arbitrary_limit_inputs_5::trident_fuzz_withdraw_unlocked_snapshot::WithdrawUnlockedAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -121,10 +115,9 @@ pub struct WithdrawUnlockedAccounts { #[derive(Arbitrary, Debug)] pub struct WithdrawUnlockedData {} ///IxOps implementation for `InitVesting` with all required functions. -impl<'info> IxOps<'info> for InitVesting { +impl IxOps for InitVesting { type IxData = arbitrary_limit_inputs_5::instruction::InitVesting; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitVestingSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { arbitrary_limit_inputs_5::ID @@ -172,57 +165,48 @@ impl<'info> IxOps<'info> for InitVesting { // and also we can easily link to Withdraw let mint = fuzz_accounts .mint - .get_or_create_account(0, client, 6, &sender.pubkey(), None) - .unwrap(); + .get_or_create_account(0, client, 6, &sender.pubkey(), None); - let sender_token_account = fuzz_accounts - .sender_token_account - .get_or_create_account( - self.accounts.sender_token_account, - client, - mint, - sender.pubkey(), - u64::MAX, - None, - None, - 0, - None, - ) - .unwrap(); + let sender_token_account = fuzz_accounts.sender_token_account.get_or_create_account( + self.accounts.sender_token_account, + client, + mint, + sender.pubkey(), + u64::MAX, + None, + None, + 0, + None, + ); let recipient = fuzz_accounts.recipient.get_or_create_account( self.data.recipient, client, 10 * LAMPORTS_PER_SOL, ); - let escrow = fuzz_accounts - .escrow - .get_or_create_account( - self.accounts.escrow, - &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], - &arbitrary_limit_inputs_5::ID, - ) - .unwrap(); + let escrow = fuzz_accounts.escrow.get_or_create_account( + self.accounts.escrow, + client, + &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], + &arbitrary_limit_inputs_5::ID, + ); - let escrow_token_account = fuzz_accounts - .escrow_token_account - .get_or_create_account( - self.accounts.escrow_token_account, - client, - mint, - sender.pubkey(), - 0, - None, - None, - 0, - None, - ) - .unwrap(); + let escrow_token_account = fuzz_accounts.escrow_token_account.get_or_create_account( + self.accounts.escrow_token_account, + client, + mint, + sender.pubkey(), + 0, + None, + None, + 0, + None, + ); let acc_meta = arbitrary_limit_inputs_5::accounts::InitVestingContext { sender: sender.pubkey(), sender_token_account, - escrow: escrow.pubkey(), + escrow, escrow_token_account, mint, token_program: anchor_spl::token::ID, @@ -234,10 +218,9 @@ impl<'info> IxOps<'info> for InitVesting { } } ///IxOps implementation for `WithdrawUnlocked` with all required functions. -impl<'info> IxOps<'info> for WithdrawUnlocked { +impl IxOps for WithdrawUnlocked { type IxData = arbitrary_limit_inputs_5::instruction::WithdrawUnlocked; type IxAccounts = FuzzAccounts; - type IxSnapshot = WithdrawUnlockedSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { arbitrary_limit_inputs_5::ID @@ -273,83 +256,86 @@ impl<'info> IxOps<'info> for WithdrawUnlocked { // INFO use constant Account ID, so we will not generate multiple mints, // and also we can easily link to Initialize - let mint = fuzz_accounts - .mint - .get_or_create_account(0, client, 6, &recipient.pubkey(), None) - .unwrap(); + let mint = + fuzz_accounts + .mint + .get_or_create_account(0, client, 6, &recipient.pubkey(), None); - let recipient_token_account = fuzz_accounts - .recipient_token_account - .get_or_create_account( - self.accounts.recipient_token_account, - client, - mint, - recipient.pubkey(), - 0, - None, - None, - 0, - None, - ) - .unwrap(); + let recipient_token_account = fuzz_accounts.recipient_token_account.get_or_create_account( + self.accounts.recipient_token_account, + client, + mint, + recipient.pubkey(), + 0, + None, + None, + 0, + None, + ); - let escrow = fuzz_accounts - .escrow - .get_or_create_account( - self.accounts.escrow, - &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], - &arbitrary_limit_inputs_5::ID, - ) - .unwrap(); + let escrow = fuzz_accounts.escrow.get_or_create_account( + self.accounts.escrow, + client, + &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], + &arbitrary_limit_inputs_5::ID, + ); - let escrow_pda_authority = fuzz_accounts - .escrow_pda_authority - .get_or_create_account( - self.accounts.escrow_pda_authority, - &[b"ESCROW_PDA_AUTHORITY"], - &arbitrary_limit_inputs_5::ID, - ) - .unwrap(); + let escrow_pda_authority = fuzz_accounts.escrow_pda_authority.get_or_create_account( + self.accounts.escrow_pda_authority, + client, + &[b"ESCROW_PDA_AUTHORITY"], + &arbitrary_limit_inputs_5::ID, + ); - let escrow_token_account = fuzz_accounts - .escrow_token_account - .get_or_create_account( - self.accounts.escrow_token_account, - client, - mint, - escrow_pda_authority.pubkey(), - u64::MAX, - None, - None, - 0, - None, - ) - .unwrap(); + let escrow_token_account = fuzz_accounts.escrow_token_account.get_or_create_account( + self.accounts.escrow_token_account, + client, + mint, + escrow_pda_authority, + u64::MAX, + None, + None, + 0, + None, + ); let acc_meta = arbitrary_limit_inputs_5::accounts::WithdrawUnlocked { recipient: recipient.pubkey(), recipient_token_account, - escrow: escrow.pubkey(), + escrow, escrow_token_account, - escrow_pda_authority: escrow_pda_authority.pubkey(), + escrow_pda_authority, mint, token_program: anchor_spl::token::ID, system_program: solana_sdk::system_program::ID, } .to_account_metas(None); + Ok((vec![recipient], acc_meta)) } fn check( &self, - pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], _ix_data: Self::IxData, ) -> Result<(), FuzzingError> { - if let Some(escrow) = pre_ix.escrow { - let recipient = pre_ix.recipient; - let recipient_token_account_pre = pre_ix.recipient_token_account; - let recipient_token_account_post = post_ix.recipient_token_account; - if escrow.recipient == *recipient.key { + if let Ok(escrow) = arbitrary_limit_inputs_5::Escrow::try_deserialize(&mut pre_ix[2].data()) + { + let recipient = pre_ix[0].pubkey(); + + let recipient_token_account_pre = + match anchor_spl::token::TokenAccount::try_deserialize(&mut pre_ix[1].data()) { + Ok(recipient_token_account_pre) => recipient_token_account_pre, + Err(_) => return Ok(()), + }; + + let recipient_token_account_post = + match anchor_spl::token::TokenAccount::try_deserialize(&mut post_ix[1].data()) { + Ok(recipient_token_account_post) => recipient_token_account_post, + Err(_) => return Ok(()), + }; + + if escrow.recipient == recipient.key() { if recipient_token_account_pre.amount == recipient_token_account_post.amount { // Recipient was not able to withdraw return Err(FuzzingError::BalanceMismatch); @@ -380,11 +366,11 @@ pub struct FuzzAccounts { sender_token_account: AccountsStorage, escrow_token_account: AccountsStorage, escrow_pda_authority: AccountsStorage, - sender: AccountsStorage, + sender: AccountsStorage, // No need to fuzz System Program // _system_program: AccountsStorage, recipient_token_account: AccountsStorage, - recipient: AccountsStorage, + recipient: AccountsStorage, mint: AccountsStorage, escrow: AccountsStorage, } diff --git a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index da70edad3..89116464d 100644 --- a/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/arbitrary-limit-inputs-5/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -6,31 +6,22 @@ use arbitrary_limit_inputs_5::entry as entry_arbitrary_limit_inputs_5; use arbitrary_limit_inputs_5::ID as PROGRAM_ID_ARBITRARY_LIMIT_INPUTS_5; use fuzz_instructions::FuzzInstruction; const PROGRAM_NAME_ARBITRARY_LIMIT_INPUTS_5: &str = "arbitrary_limit_inputs_5"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::InitVesting(InitVesting::arbitrary(u)?); - - Ok(vec![init_ix]) - } - fn ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let withdraw_ix = FuzzInstruction::WithdrawUnlocked(WithdrawUnlocked::arbitrary(u)?); - Ok(vec![withdraw_ix]) - } - fn post_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(InitVesting); + middle_sequence!(WithdrawUnlocked); + post_sequence!(); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -50,5 +41,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock b/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock index f15592be3..aaabdc440 100644 --- a/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock +++ b/examples/fuzz-tests/cpi-metaplex-7/Cargo.lock @@ -351,9 +351,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -371,9 +371,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -538,7 +538,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -571,9 +571,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -600,7 +600,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -797,7 +797,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -899,22 +899,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -925,9 +925,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -1004,9 +1004,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.28" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1197,8 +1197,6 @@ dependencies = [ "anchor-lang", "anchor-spl", "mpl-token-metadata", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -1344,7 +1342,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1355,7 +1353,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1429,13 +1427,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1514,7 +1512,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1537,7 +1535,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1619,9 +1617,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1643,7 +1641,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1656,7 +1654,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1834,7 +1832,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2006,9 +2004,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2145,9 +2143,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2204,6 +2202,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2212,12 +2328,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]] @@ -2278,7 +2405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2346,9 +2473,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2385,9 +2512,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2466,6 +2593,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2757,7 +2890,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2838,7 +2971,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2850,7 +2983,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3022,29 +3155,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3206,9 +3339,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3230,7 +3363,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3425,9 +3558,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3578,9 +3711,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3634,9 +3767,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3655,9 +3788,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3685,7 +3818,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3741,9 +3874,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3759,20 +3892,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3820,7 +3953,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3959,9 +4092,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3984,9 +4117,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4045,9 +4178,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4066,9 +4199,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4083,9 +4216,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4094,9 +4227,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4114,9 +4247,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4133,9 +4266,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4151,9 +4284,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4168,9 +4301,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4201,9 +4334,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4211,9 +4344,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4225,9 +4358,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4247,9 +4380,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4271,9 +4404,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4296,21 +4429,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4321,9 +4454,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4332,9 +4465,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4342,9 +4475,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4357,9 +4490,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4385,9 +4518,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4414,9 +4547,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4469,9 +4602,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4497,9 +4630,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4527,9 +4660,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4552,9 +4685,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4579,9 +4712,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4589,9 +4722,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4608,9 +4741,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4634,9 +4767,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4656,9 +4789,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4669,9 +4802,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4746,9 +4879,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4801,15 +4934,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4820,9 +4953,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4836,9 +4969,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4851,9 +4984,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4884,9 +5017,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4898,9 +5031,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4913,9 +5046,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4937,9 +5070,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4962,9 +5095,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4977,9 +5110,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4993,9 +5126,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -5012,9 +5145,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5034,9 +5167,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5048,9 +5181,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5178,7 +5311,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn 0.1.2", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5189,7 +5322,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn 0.2.0", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5201,7 +5334,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5214,7 +5347,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5288,7 +5421,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5300,7 +5433,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5506,6 +5639,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" @@ -5577,9 +5716,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5595,7 +5734,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5616,6 +5755,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5639,9 +5789,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5740,7 +5890,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5751,7 +5901,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5772,22 +5922,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5850,6 +6000,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" @@ -5867,9 +6027,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5891,7 +6051,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6055,7 +6215,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6094,7 +6254,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -6115,7 +6275,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -6124,20 +6284,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -6146,7 +6295,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -6155,7 +6304,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -6169,6 +6318,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -6208,12 +6359,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6290,9 +6435,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6305,6 +6450,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 = "valuable" version = "0.1.0" @@ -6362,9 +6519,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6373,24 +6530,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6400,9 +6557,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6410,28 +6567,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6668,6 +6825,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" @@ -6712,6 +6881,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6730,7 +6923,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6750,7 +6964,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml index 219209980..60a1bedf4 100644 --- a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml +++ b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/Cargo.toml @@ -15,16 +15,8 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" anchor-spl = "0.30.1" mpl-token-metadata = "4.1.2" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs index 823344979..78b0debe4 100644 --- a/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs +++ b/examples/fuzz-tests/cpi-metaplex-7/programs/cpi-metaplex-7/src/lib.rs @@ -9,8 +9,6 @@ use mpl_token_metadata::{ ID as MPL_METADATA_PROGRAM, }; -use trident_derive_accounts_snapshots::AccountsSnapshots; - declare_id!("3XtULmXDGS867VbBXiPkjYr4EMjytGW8X12F6BS23Zcw"); #[program] @@ -35,7 +33,7 @@ pub mod cpi_metaplex_7 { } } -#[derive(AccountsSnapshots, Accounts)] +#[derive(Accounts)] pub struct Initialize<'info> { #[account(mut)] pub signer: Signer<'info>, diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml index 88df68794..ae1b19aa1 100644 --- a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/Cargo.toml @@ -19,4 +19,3 @@ path = "../../../../../crates/client" [dependencies.cpi-metaplex-7] path = "../../programs/cpi-metaplex-7" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index ac5bd3995..6b07a8d75 100644 --- a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,9 +1,5 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitializeSnapshot<'info> = InitializeAlias<'info>; -use cpi_metaplex_7::trident_fuzz_initialize_snapshot::InitializeAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -37,10 +33,9 @@ pub struct InitializeData { pub uri: String, } ///IxOps implementation for `Initialize` with all required functions. -impl<'info> IxOps<'info> for Initialize { +impl IxOps for Initialize { type IxData = cpi_metaplex_7::instruction::Initialize; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { cpi_metaplex_7::ID @@ -105,9 +100,9 @@ impl<'info> IxOps<'info> for Initialize { #[derive(Default)] pub struct FuzzAccounts { _metadata_account: AccountsStorage, - mint: AccountsStorage, + mint: AccountsStorage, _mpl_token_metadata: AccountsStorage, - signer: AccountsStorage, + signer: AccountsStorage, _system_program: AccountsStorage, _token_program: AccountsStorage, } diff --git a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index a1d7f2cc8..e55b42e9f 100644 --- a/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/cpi-metaplex-7/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -5,29 +5,22 @@ use cpi_metaplex_7::entry as entry_cpi_metaplex_7; use cpi_metaplex_7::ID as PROGRAM_ID_CPI_METAPLEX_7; use fuzz_instructions::FuzzInstruction; const PROGRAM_NAME_CPI_METAPLEX_7: &str = "cpi_metaplex_7"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - Ok(vec![init]) - } - fn ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } - fn post_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(Initialize); + middle_sequence!(); + post_sequence!(); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -46,5 +39,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/hello_world/Cargo.lock b/examples/fuzz-tests/hello_world/Cargo.lock index 65a3145ad..a2ad485e9 100644 --- a/examples/fuzz-tests/hello_world/Cargo.lock +++ b/examples/fuzz-tests/hello_world/Cargo.lock @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -356,9 +356,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -523,7 +523,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -556,9 +556,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -585,7 +585,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -782,7 +782,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -884,22 +884,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -910,9 +910,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -989,9 +989,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.24" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1318,7 +1318,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1329,7 +1329,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1403,13 +1403,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1488,7 +1488,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1511,7 +1511,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1593,9 +1593,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1617,7 +1617,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1630,7 +1630,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1754,9 +1754,9 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1769,9 +1769,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1779,15 +1779,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1796,38 +1796,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1978,9 +1978,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2002,8 +2002,6 @@ name = "hello_world" version = "0.1.0" dependencies = [ "anchor-lang", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -2126,9 +2124,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2185,6 +2183,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2193,12 +2309,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]] @@ -2259,7 +2386,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2327,9 +2454,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2366,9 +2493,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2447,6 +2574,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2725,7 +2858,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2806,7 +2939,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2818,7 +2951,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2847,12 +2980,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.1" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -2945,9 +3075,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" [[package]] name = "pbkdf2" @@ -2993,29 +3123,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3177,9 +3307,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3201,7 +3331,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3396,9 +3526,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3549,9 +3679,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3605,9 +3735,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3626,9 +3756,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3656,7 +3786,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3712,9 +3842,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3730,20 +3860,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3791,7 +3921,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3930,9 +4060,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3955,9 +4085,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4016,9 +4146,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4037,9 +4167,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4054,9 +4184,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4065,9 +4195,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4085,9 +4215,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4104,9 +4234,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4122,9 +4252,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4139,9 +4269,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4172,9 +4302,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4182,9 +4312,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4196,9 +4326,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4218,9 +4348,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4242,9 +4372,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4267,21 +4397,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4292,9 +4422,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4303,9 +4433,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4313,9 +4443,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4328,9 +4458,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4356,9 +4486,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4385,9 +4515,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4440,9 +4570,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4468,9 +4598,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4498,9 +4628,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4523,9 +4653,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4550,9 +4680,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4560,9 +4690,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4579,9 +4709,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4605,9 +4735,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4627,9 +4757,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4640,9 +4770,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4717,9 +4847,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4772,15 +4902,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4791,9 +4921,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4807,9 +4937,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4822,9 +4952,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4855,9 +4985,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4869,9 +4999,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4884,9 +5014,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4908,9 +5038,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4933,9 +5063,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4948,9 +5078,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4964,9 +5094,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4983,9 +5113,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5005,9 +5135,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5019,9 +5149,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5122,7 +5252,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5134,7 +5264,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5182,7 +5312,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5294,6 +5424,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5365,9 +5501,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5383,7 +5519,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5404,6 +5540,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5427,9 +5574,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5528,7 +5675,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5539,7 +5686,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5560,22 +5707,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5638,6 +5785,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" @@ -5655,9 +5812,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5679,7 +5836,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5843,7 +6000,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5882,7 +6039,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -5903,7 +6060,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -5912,20 +6069,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5934,7 +6080,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5943,7 +6089,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -5957,6 +6103,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -5996,12 +6144,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6078,9 +6220,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6093,6 +6235,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 = "valuable" version = "0.1.0" @@ -6150,9 +6304,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6161,24 +6315,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6188,9 +6342,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6198,28 +6352,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6456,6 +6610,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" @@ -6500,6 +6666,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6518,7 +6708,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6538,7 +6749,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/hello_world/programs/hello_world/Cargo.toml b/examples/fuzz-tests/hello_world/programs/hello_world/Cargo.toml index fe31e5c5d..d8ce97699 100644 --- a/examples/fuzz-tests/hello_world/programs/hello_world/Cargo.toml +++ b/examples/fuzz-tests/hello_world/programs/hello_world/Cargo.toml @@ -15,14 +15,6 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/hello_world/programs/hello_world/src/lib.rs b/examples/fuzz-tests/hello_world/programs/hello_world/src/lib.rs index 2b91d34d1..49f98a6eb 100644 --- a/examples/fuzz-tests/hello_world/programs/hello_world/src/lib.rs +++ b/examples/fuzz-tests/hello_world/programs/hello_world/src/lib.rs @@ -1,5 +1,4 @@ use anchor_lang::prelude::*; -use trident_derive_accounts_snapshots::AccountsSnapshots; declare_id!("FtevoQoDMv6ZB3N9Lix5Tbjs8EVuNL8vDSqG9kzaZPit"); @@ -14,7 +13,7 @@ pub mod hello_world { } } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct InitializeContext<'info> { #[account(mut)] pub author: Signer<'info>, diff --git a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/Cargo.toml index 0f4f9e07b..883a8d57e 100644 --- a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/Cargo.toml @@ -17,4 +17,3 @@ path = "../../../../../crates/client" [dependencies.hello_world] path = "../../programs/hello_world" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 4c5d1fa18..f0a4d38ff 100644 --- a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,9 +1,5 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitializeFnSnapshot<'info> = InitializeContextAlias<'info>; -use hello_world::trident_fuzz_initialize_context_snapshot::InitializeContextAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -31,10 +27,9 @@ pub struct InitializeFnData { pub input: u8, } ///IxOps implementation for `InitializeFn` with all required functions. -impl<'info> IxOps<'info> for InitializeFn { +impl IxOps for InitializeFn { type IxData = hello_world::instruction::InitializeFn; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeFnSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { hello_world::ID @@ -70,18 +65,16 @@ impl<'info> IxOps<'info> for InitializeFn { 5 * LAMPORTS_PER_SOL, ); - let hello_world_account = fuzz_accounts - .hello_world_account - .get_or_create_account( - self.accounts.hello_world_account, - &[b"hello_world_seed"], - &hello_world::ID, - ) - .unwrap(); + let hello_world_account = fuzz_accounts.hello_world_account.get_or_create_account( + self.accounts.hello_world_account, + client, + &[b"hello_world_seed"], + &hello_world::ID, + ); let signers = vec![author.clone()]; let acc_meta = hello_world::accounts::InitializeContext { author: author.pubkey(), - hello_world_account: hello_world_account.pubkey(), + hello_world_account, system_program: solana_sdk::system_program::ID, } .to_account_metas(None); @@ -89,11 +82,13 @@ impl<'info> IxOps<'info> for InitializeFn { } fn check( &self, - _pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + _pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], _ix_data: Self::IxData, ) -> Result<(), FuzzingError> { - if let Some(hello_world_account) = post_ix.hello_world_account { + if let Ok(hello_world_account) = + hello_world::StoreHelloWorld::try_deserialize(&mut post_ix[1].data()) + { if hello_world_account.input == 253 { return Err(FuzzingError::Custom(1)); } @@ -105,7 +100,7 @@ impl<'info> IxOps<'info> for InitializeFn { /// Keypair, PdaStore, TokenStore, MintStore, ProgramStore #[derive(Default)] pub struct FuzzAccounts { - author: AccountsStorage, + author: AccountsStorage, hello_world_account: AccountsStorage, // No need to fuzz system_program // system_program: AccountsStorage, diff --git a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 9df4c363e..bcd4f41c0 100644 --- a/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/hello_world/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -5,29 +5,22 @@ use fuzz_instructions::FuzzInstruction; use hello_world::entry as entry_hello_world; use hello_world::ID as PROGRAM_ID_HELLO_WORLD; const PROGRAM_NAME_HELLO_WORLD: &str = "hello_world"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); - Ok(vec![init]) - } - fn ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } - fn post_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(InitializeFn); + middle_sequence!(); + post_sequence!(); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -46,5 +39,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/Cargo.lock b/examples/fuzz-tests/incorrect-integer-arithmetic-3/Cargo.lock index f772d3a27..ccfb95fe5 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/Cargo.lock +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/Cargo.lock @@ -351,9 +351,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -371,9 +371,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -538,7 +538,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -571,9 +571,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -600,7 +600,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -797,7 +797,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -899,22 +899,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -925,9 +925,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -1004,9 +1004,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.28" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1333,7 +1333,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1344,7 +1344,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1418,13 +1418,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1503,7 +1503,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1526,7 +1526,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1608,9 +1608,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1632,7 +1632,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1645,7 +1645,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1823,7 +1823,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1994,9 +1994,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2133,9 +2133,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2192,6 +2192,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2200,12 +2318,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]] @@ -2249,8 +2378,6 @@ version = "0.1.0" dependencies = [ "anchor-lang", "anchor-spl", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -2276,7 +2403,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2344,9 +2471,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2383,9 +2510,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2464,6 +2591,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2742,7 +2875,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2823,7 +2956,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2835,7 +2968,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3007,29 +3140,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3191,9 +3324,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3215,7 +3348,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3410,9 +3543,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3563,9 +3696,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3619,9 +3752,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3640,9 +3773,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3670,7 +3803,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3726,9 +3859,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3744,20 +3877,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3805,7 +3938,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3944,9 +4077,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3969,9 +4102,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4030,9 +4163,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4051,9 +4184,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4068,9 +4201,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4079,9 +4212,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4099,9 +4232,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4118,9 +4251,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4136,9 +4269,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4153,9 +4286,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4186,9 +4319,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4196,9 +4329,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4210,9 +4343,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4232,9 +4365,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4256,9 +4389,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4281,21 +4414,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4306,9 +4439,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4317,9 +4450,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4327,9 +4460,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4342,9 +4475,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4370,9 +4503,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4399,9 +4532,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4454,9 +4587,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4482,9 +4615,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4512,9 +4645,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4537,9 +4670,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4564,9 +4697,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4574,9 +4707,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4593,9 +4726,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4619,9 +4752,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4641,9 +4774,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4654,9 +4787,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4731,9 +4864,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4786,15 +4919,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4805,9 +4938,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4821,9 +4954,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4836,9 +4969,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4869,9 +5002,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4883,9 +5016,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4898,9 +5031,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4922,9 +5055,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4947,9 +5080,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4962,9 +5095,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4978,9 +5111,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4997,9 +5130,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5019,9 +5152,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5033,9 +5166,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5163,7 +5296,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn 0.1.2", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5174,7 +5307,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn 0.2.0", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5186,7 +5319,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5199,7 +5332,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5273,7 +5406,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5285,7 +5418,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5491,6 +5624,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" @@ -5562,9 +5701,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5580,7 +5719,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5601,6 +5740,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5624,9 +5774,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5725,7 +5875,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5736,7 +5886,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5757,22 +5907,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5835,6 +5985,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" @@ -5852,9 +6012,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5876,7 +6036,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6040,7 +6200,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6079,7 +6239,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -6100,7 +6260,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -6109,20 +6269,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -6131,7 +6280,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -6140,7 +6289,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -6154,6 +6303,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -6193,12 +6344,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6275,9 +6420,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6290,6 +6435,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 = "valuable" version = "0.1.0" @@ -6347,9 +6504,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6358,24 +6515,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6385,9 +6542,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6395,28 +6552,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6653,6 +6810,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" @@ -6697,6 +6866,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6715,7 +6908,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6735,7 +6949,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/Trident.toml b/examples/fuzz-tests/incorrect-integer-arithmetic-3/Trident.toml index b976b8222..f4f804949 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/Trident.toml +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/Trident.toml @@ -2,7 +2,7 @@ # Timeout in seconds (default: 10) timeout = 10 # Number of fuzzing iterations (default: 0 [no limit]) -iterations = 0 +iterations = 1000 # Number of concurrent fuzzing threads (default: 0 [number of CPUs / 2]) threads = 0 # Don't close children's stdin, stdout, stderr; can be noisy (default: false) @@ -34,4 +34,4 @@ save_all = false allow_duplicate_txs = false # Trident will show statistics after the fuzzing session. This option forces use of honggfuzz parameter # `keep_output` as true in order to be able to catch fuzzer stdout. (default: false) -fuzzing_with_stats = false +fuzzing_with_stats = true diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/Cargo.toml b/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/Cargo.toml index a13f69157..2656cfd38 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/Cargo.toml +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/Cargo.toml @@ -15,15 +15,7 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" anchor-spl = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/initialize.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/initialize.rs index 2a2acf955..8677c3c7a 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/initialize.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/initialize.rs @@ -6,8 +6,6 @@ use anchor_spl::token::{ use crate::state::Escrow; use crate::VestingError; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _init_vesting( ctx: Context, recipient: Pubkey, @@ -63,7 +61,7 @@ pub fn _init_vesting( Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] #[instruction(recipient: Pubkey)] pub struct InitVesting<'info> { #[account(mut)] diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/withdraw.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/withdraw.rs index d0f1a89c5..3170ad7a0 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/withdraw.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/programs/incorrect-integer-arithmetic-3/src/instructions/withdraw.rs @@ -3,8 +3,6 @@ use anchor_spl::token::{transfer, Mint, Token, TokenAccount, Transfer}; use crate::{state::Escrow, VestingError}; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _withdraw_unlocked(ctx: Context) -> Result<()> { let escrow = &mut ctx.accounts.escrow; @@ -34,7 +32,7 @@ pub fn _withdraw_unlocked(ctx: Context) -> Result<()> { Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct WithdrawUnlocked<'info> { #[account(mut)] pub recipient: Signer<'info>, diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/Cargo.toml index 65f8709d8..9bf4fd658 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/Cargo.toml @@ -18,4 +18,3 @@ path = "../../../../../crates/client" [dependencies.incorrect-integer-arithmetic-3] path = "../../programs/incorrect-integer-arithmetic-3" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 59a0951fe..2bc579bbc 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,11 +1,5 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitVestingSnapshot<'info> = InitVestingAlias<'info>; -type WithdrawUnlockedSnapshot<'info> = WithdrawUnlockedAlias<'info>; -use incorrect_integer_arithmetic_3::trident_fuzz_init_vesting_snapshot::InitVestingAlias; -use incorrect_integer_arithmetic_3::trident_fuzz_withdraw_unlocked_snapshot::WithdrawUnlockedAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -71,10 +65,9 @@ pub struct WithdrawUnlockedAccounts { #[derive(Arbitrary, Debug)] pub struct WithdrawUnlockedData {} ///IxOps implementation for `InitVesting` with all required functions. -impl<'info> IxOps<'info> for InitVesting { +impl IxOps for InitVesting { type IxData = incorrect_integer_arithmetic_3::instruction::InitVesting; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitVestingSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { incorrect_integer_arithmetic_3::ID @@ -122,57 +115,48 @@ impl<'info> IxOps<'info> for InitVesting { // and also we can easily link to Withdraw let mint = fuzz_accounts .mint - .get_or_create_account(0, client, 6, &sender.pubkey(), None) - .unwrap(); + .get_or_create_account(0, client, 6, &sender.pubkey(), None); - let sender_token_account = fuzz_accounts - .sender_token_account - .get_or_create_account( - self.accounts.sender_token_account, - client, - mint, - sender.pubkey(), - u64::MAX, - None, - None, - 0, - None, - ) - .unwrap(); + let sender_token_account = fuzz_accounts.sender_token_account.get_or_create_account( + self.accounts.sender_token_account, + client, + mint, + sender.pubkey(), + u64::MAX, + None, + None, + 0, + None, + ); let recipient = fuzz_accounts.recipient.get_or_create_account( self.data.recipient, client, 10 * LAMPORTS_PER_SOL, ); - let escrow = fuzz_accounts - .escrow - .get_or_create_account( - self.accounts.escrow, - &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], - &incorrect_integer_arithmetic_3::ID, - ) - .unwrap(); + let escrow = fuzz_accounts.escrow.get_or_create_account( + self.accounts.escrow, + client, + &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], + &incorrect_integer_arithmetic_3::ID, + ); - let escrow_token_account = fuzz_accounts - .escrow_token_account - .get_or_create_account( - self.accounts.escrow_token_account, - client, - mint, - sender.pubkey(), - 0, - None, - None, - 0, - None, - ) - .unwrap(); + let escrow_token_account = fuzz_accounts.escrow_token_account.get_or_create_account( + self.accounts.escrow_token_account, + client, + mint, + sender.pubkey(), + 0, + None, + None, + 0, + None, + ); let acc_meta = incorrect_integer_arithmetic_3::accounts::InitVesting { sender: sender.pubkey(), sender_token_account, - escrow: escrow.pubkey(), + escrow, escrow_token_account, mint, token_program: anchor_spl::token::ID, @@ -184,10 +168,9 @@ impl<'info> IxOps<'info> for InitVesting { } } ///IxOps implementation for `WithdrawUnlocked` with all required functions. -impl<'info> IxOps<'info> for WithdrawUnlocked { +impl IxOps for WithdrawUnlocked { type IxData = incorrect_integer_arithmetic_3::instruction::WithdrawUnlocked; type IxAccounts = FuzzAccounts; - type IxSnapshot = WithdrawUnlockedSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { incorrect_integer_arithmetic_3::ID @@ -223,65 +206,55 @@ impl<'info> IxOps<'info> for WithdrawUnlocked { // INFO use constant Account ID, so we will not generate multiple mints, // and also we can easily link to Initialize - let mint = fuzz_accounts - .mint - .get_or_create_account(0, client, 6, &recipient.pubkey(), None) - .unwrap(); + let mint = + fuzz_accounts + .mint + .get_or_create_account(0, client, 6, &recipient.pubkey(), None); - let recipient_token_account = fuzz_accounts - .recipient_token_account - .get_or_create_account( - self.accounts.recipient_token_account, - client, - mint, - recipient.pubkey(), - 0, - None, - None, - 0, - None, - ) - .unwrap(); + let recipient_token_account = fuzz_accounts.recipient_token_account.get_or_create_account( + self.accounts.recipient_token_account, + client, + mint, + recipient.pubkey(), + 0, + None, + None, + 0, + None, + ); - let escrow = fuzz_accounts - .escrow - .get_or_create_account( - self.accounts.escrow, - &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], - &incorrect_integer_arithmetic_3::ID, - ) - .unwrap(); + let escrow = fuzz_accounts.escrow.get_or_create_account( + self.accounts.escrow, + client, + &[recipient.pubkey().as_ref(), b"ESCROW_SEED"], + &incorrect_integer_arithmetic_3::ID, + ); - let escrow_pda_authority = fuzz_accounts - .escrow_pda_authority - .get_or_create_account( - self.accounts.escrow_pda_authority, - &[b"ESCROW_PDA_AUTHORITY"], - &incorrect_integer_arithmetic_3::ID, - ) - .unwrap(); + let escrow_pda_authority = fuzz_accounts.escrow_pda_authority.get_or_create_account( + self.accounts.escrow_pda_authority, + client, + &[b"ESCROW_PDA_AUTHORITY"], + &incorrect_integer_arithmetic_3::ID, + ); - let escrow_token_account = fuzz_accounts - .escrow_token_account - .get_or_create_account( - self.accounts.escrow_token_account, - client, - mint, - escrow_pda_authority.pubkey(), - u64::MAX, - None, - None, - 0, - None, - ) - .unwrap(); + let escrow_token_account = fuzz_accounts.escrow_token_account.get_or_create_account( + self.accounts.escrow_token_account, + client, + mint, + escrow_pda_authority, + u64::MAX, + None, + None, + 0, + None, + ); let acc_meta = incorrect_integer_arithmetic_3::accounts::WithdrawUnlocked { recipient: recipient.pubkey(), recipient_token_account, - escrow: escrow.pubkey(), + escrow, escrow_token_account, - escrow_pda_authority: escrow_pda_authority.pubkey(), + escrow_pda_authority, mint, token_program: anchor_spl::token::ID, system_program: solana_sdk::system_program::ID, @@ -291,14 +264,27 @@ impl<'info> IxOps<'info> for WithdrawUnlocked { } fn check( &self, - pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], _ix_data: Self::IxData, ) -> Result<(), FuzzingError> { - if let Some(escrow) = pre_ix.escrow { - let recipient = pre_ix.recipient; - let recipient_token_account_pre = pre_ix.recipient_token_account; - let recipient_token_account_post = post_ix.recipient_token_account; + if let Ok(escrow) = + incorrect_integer_arithmetic_3::Escrow::try_deserialize(&mut pre_ix[2].data()) + { + let recipient = pre_ix[0].pubkey(); + + let recipient_token_account_pre = + match anchor_spl::token::TokenAccount::try_deserialize(&mut pre_ix[1].data()) { + Ok(recipient_token_account_pre) => recipient_token_account_pre, + Err(_) => return Ok(()), + }; + + let recipient_token_account_post = + match anchor_spl::token::TokenAccount::try_deserialize(&mut post_ix[1].data()) { + Ok(recipient_token_account_post) => recipient_token_account_post, + Err(_) => return Ok(()), + }; + if escrow.recipient == recipient.key() { if recipient_token_account_pre.amount == recipient_token_account_post.amount { // Recipient was not able to withdraw @@ -330,11 +316,11 @@ pub struct FuzzAccounts { sender_token_account: AccountsStorage, escrow_token_account: AccountsStorage, escrow_pda_authority: AccountsStorage, - sender: AccountsStorage, + sender: AccountsStorage, // No need to fuzz System Program // _system_program: AccountsStorage, recipient_token_account: AccountsStorage, - recipient: AccountsStorage, + recipient: AccountsStorage, mint: AccountsStorage, escrow: AccountsStorage, } diff --git a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 68d6410a9..c3390fc51 100644 --- a/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/incorrect-integer-arithmetic-3/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -5,24 +5,20 @@ use fuzz_instructions::FuzzInstruction; use incorrect_integer_arithmetic_3::entry as entry_incorrect_integer_arithmetic_3; use incorrect_integer_arithmetic_3::ID as PROGRAM_ID_INCORRECT_INTEGER_ARITHMETIC_3; const PROGRAM_NAME_INCORRECT_INTEGER_ARITHMETIC_3: &str = "incorrect_integer_arithmetic_3"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::InitVesting(InitVesting::arbitrary(u)?); - - Ok(vec![init_ix]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(InitVesting); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -42,5 +38,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/Cargo.lock b/examples/fuzz-tests/incorrect-ix-sequence-1/Cargo.lock index ed03d9ef2..e2cffbdc6 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/Cargo.lock +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/Cargo.lock @@ -223,7 +223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" dependencies = [ "anchor-syn", - "borsh-derive-internal 0.10.3", + "borsh-derive-internal 0.10.4", "proc-macro2", "quote", "syn 1.0.109", @@ -259,7 +259,7 @@ dependencies = [ "arrayref", "base64 0.21.7", "bincode", - "borsh 0.10.3", + "borsh 0.10.4", "bytemuck", "getrandom 0.2.15", "solana-program", @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -356,9 +356,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -482,9 +482,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -523,7 +523,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -585,7 +585,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -601,9 +601,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" @@ -728,11 +728,11 @@ dependencies = [ [[package]] name = "borsh" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" dependencies = [ - "borsh-derive 0.10.3", + "borsh-derive 0.10.4", "hashbrown 0.13.2", ] @@ -761,12 +761,12 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", + "borsh-derive-internal 0.10.4", + "borsh-schema-derive-internal 0.10.4", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -782,7 +782,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "syn_derive", ] @@ -799,9 +799,9 @@ dependencies = [ [[package]] name = "borsh-derive-internal" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" dependencies = [ "proc-macro2", "quote", @@ -821,9 +821,9 @@ dependencies = [ [[package]] name = "borsh-schema-derive-internal" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" dependencies = [ "proc-macro2", "quote", @@ -884,22 +884,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.17.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -910,9 +910,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -989,9 +989,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.15" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1177,9 +1177,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1318,7 +1318,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1329,7 +1329,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1403,13 +1403,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1488,7 +1488,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1511,7 +1511,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1593,9 +1593,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1617,7 +1617,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1630,7 +1630,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1808,7 +1808,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1927,7 +1927,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.4.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util 0.7.12", @@ -1976,6 +1976,12 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" + [[package]] name = "heck" version = "0.3.3" @@ -2170,6 +2176,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2178,12 +2302,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]] @@ -2226,8 +2361,6 @@ name = "incorrect-ix-sequence-1" version = "0.1.0" dependencies = [ "anchor-lang", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -2248,12 +2381,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.1", ] [[package]] @@ -2321,9 +2454,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2360,9 +2493,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2441,6 +2574,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2719,7 +2858,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -2800,7 +2939,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -2812,7 +2951,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -2841,9 +2980,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -2984,29 +3123,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3139,7 +3278,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -3168,9 +3307,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3192,7 +3331,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -3367,9 +3506,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -3387,9 +3526,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3399,9 +3538,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -3410,9 +3549,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -3540,9 +3679,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3596,9 +3735,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3647,7 +3786,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -3703,9 +3842,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3721,20 +3860,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3744,9 +3883,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -3782,7 +3921,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -4139,7 +4278,7 @@ dependencies = [ "dashmap", "futures", "futures-util", - "indexmap 2.4.0", + "indexmap 2.6.0", "indicatif", "log", "quinn", @@ -4195,7 +4334,7 @@ dependencies = [ "bincode", "crossbeam-channel", "futures-util", - "indexmap 2.4.0", + "indexmap 2.6.0", "log", "rand 0.8.5", "rayon", @@ -4265,7 +4404,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -4388,7 +4527,7 @@ dependencies = [ "bincode", "bitflags 2.6.0", "blake3", - "borsh 0.10.3", + "borsh 0.10.4", "borsh 0.9.3", "borsh 1.5.1", "bs58 0.4.0", @@ -4771,7 +4910,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -4822,7 +4961,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "histogram", - "indexmap 2.4.0", + "indexmap 2.6.0", "itertools", "libc", "log", @@ -4882,7 +5021,7 @@ dependencies = [ "async-trait", "bincode", "futures-util", - "indexmap 2.4.0", + "indexmap 2.6.0", "indicatif", "log", "rayon", @@ -4906,7 +5045,7 @@ dependencies = [ "Inflector", "base64 0.21.7", "bincode", - "borsh 0.10.3", + "borsh 0.10.4", "bs58 0.4.0", "lazy_static", "log", @@ -5085,7 +5224,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" dependencies = [ "assert_matches", - "borsh 0.10.3", + "borsh 0.10.4", "num-derive 0.4.2", "num-traits", "solana-program", @@ -5113,7 +5252,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5125,7 +5264,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.76", + "syn 2.0.87", "thiserror", ] @@ -5144,7 +5283,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" dependencies = [ - "borsh 0.10.3", + "borsh 0.10.4", "bytemuck", "solana-program", "solana-zk-token-sdk", @@ -5173,7 +5312,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5248,7 +5387,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" dependencies = [ - "borsh 0.10.3", + "borsh 0.10.4", "solana-program", "spl-discriminator", "spl-pod", @@ -5285,6 +5424,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5356,9 +5501,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5374,7 +5519,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5395,6 +5540,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5418,9 +5574,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5519,7 +5675,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5530,7 +5686,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "test-case-core", ] @@ -5551,22 +5707,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5629,6 +5785,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" @@ -5646,9 +5812,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5670,7 +5836,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5768,11 +5934,11 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -5790,22 +5956,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.6.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.20", ] [[package]] @@ -5834,7 +6000,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5873,7 +6039,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -5894,7 +6060,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.76", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -5903,20 +6069,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5925,7 +6080,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5934,7 +6089,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -5948,6 +6103,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -5987,32 +6144,26 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" @@ -6069,9 +6220,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6084,6 +6235,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 = "valuable" version = "0.1.0" @@ -6141,9 +6304,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6152,24 +6315,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6179,9 +6342,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6189,28 +6352,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6430,9 +6593,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -6447,6 +6610,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" @@ -6491,6 +6666,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6509,7 +6708,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6529,7 +6749,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/Cargo.toml b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/Cargo.toml index 8b30dd7f1..c235e575f 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/Cargo.toml +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/Cargo.toml @@ -15,15 +15,6 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/end_registrations.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/end_registrations.rs index d046d876f..34a74c723 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/end_registrations.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/end_registrations.rs @@ -2,8 +2,6 @@ pub use anchor_lang::prelude::*; use crate::state::{State, STATE_SEED}; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _end_registration(ctx: Context) -> Result<()> { let state = &mut ctx.accounts.state; @@ -11,7 +9,7 @@ pub fn _end_registration(ctx: Context) -> Result<()> { Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct EndRegistration<'info> { pub author: Signer<'info>, #[account( diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/initialize.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/initialize.rs index eaae274ee..4648eb656 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/initialize.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/initialize.rs @@ -1,7 +1,6 @@ pub use anchor_lang::prelude::*; use crate::state::{State, STATE_SEED}; -use trident_derive_accounts_snapshots::AccountsSnapshots; pub fn _initialize(ctx: Context) -> Result<()> { let state = &mut ctx.accounts.state; @@ -12,7 +11,7 @@ pub fn _initialize(ctx: Context) -> Result<()> { Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Initialize<'info> { #[account(mut)] pub author: Signer<'info>, diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/invest.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/invest.rs index e530e2224..e73c7e232 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/invest.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/invest.rs @@ -5,8 +5,6 @@ use crate::{ state::{Project, State, PROJECT_SEED, STATE_SEED}, }; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _invest(ctx: Context, amount: u64) -> Result<()> { let project = &mut ctx.accounts.project; let state = &mut ctx.accounts.state; @@ -43,7 +41,7 @@ pub fn _invest(ctx: Context, amount: u64) -> Result<()> { Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Invest<'info> { #[account(mut)] pub investor: Signer<'info>, diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/register.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/register.rs index 7fa2edd4b..32020e3b5 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/register.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/programs/incorrect-ix-sequence-1/src/instructions/register.rs @@ -2,8 +2,6 @@ pub use anchor_lang::prelude::*; use crate::state::{Project, State, PROJECT_SEED, STATE_SEED}; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _register(ctx: Context) -> Result<()> { let project = &mut ctx.accounts.project; @@ -14,7 +12,7 @@ pub fn _register(ctx: Context) -> Result<()> { Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Register<'info> { #[account(mut)] pub project_author: Signer<'info>, diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/Cargo.toml index 0ae727677..a186f0f7b 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/Cargo.toml @@ -17,4 +17,3 @@ path = "../../../../../crates/client" [dependencies.incorrect-ix-sequence-1] path = "../../programs/incorrect-ix-sequence-1" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 9cee12e63..a75316d8b 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,16 +1,6 @@ use incorrect_ix_sequence_1::{PROJECT_SEED, STATE_SEED}; use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type EndRegistrationsSnapshot<'info> = EndRegistrationAlias<'info>; -type InitializeSnapshot<'info> = InitializeAlias<'info>; -type InvestSnapshot<'info> = InvestAlias<'info>; -type RegisterSnapshot<'info> = RegisterAlias<'info>; -use incorrect_ix_sequence_1::trident_fuzz_end_registration_snapshot::EndRegistrationAlias; -use incorrect_ix_sequence_1::trident_fuzz_initialize_snapshot::InitializeAlias; -use incorrect_ix_sequence_1::trident_fuzz_invest_snapshot::InvestAlias; -use incorrect_ix_sequence_1::trident_fuzz_register_snapshot::RegisterAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -96,10 +86,9 @@ pub struct RegisterAccounts { #[derive(Arbitrary, Debug)] pub struct RegisterData {} ///IxOps implementation for `EndRegistrations` with all required functions. -impl<'info> IxOps<'info> for EndRegistrations { +impl IxOps for EndRegistrations { type IxData = incorrect_ix_sequence_1::instruction::EndRegistrations; type IxAccounts = FuzzAccounts; - type IxSnapshot = EndRegistrationsSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { incorrect_ix_sequence_1::ID @@ -133,15 +122,12 @@ impl<'info> IxOps<'info> for EndRegistrations { 5 * LAMPORTS_PER_SOL, ); let signers = vec![author.clone()]; - let state = fuzz_accounts - .state - .get_or_create_account( - self.accounts.state, - &[author.pubkey().as_ref(), STATE_SEED.as_ref()], - &incorrect_ix_sequence_1::ID, - ) - .ok_or(FuzzingError::Custom(4))? - .pubkey(); + let state = fuzz_accounts.state.get_or_create_account( + self.accounts.state, + client, + &[author.pubkey().as_ref(), STATE_SEED.as_ref()], + &incorrect_ix_sequence_1::ID, + ); let acc_meta = incorrect_ix_sequence_1::accounts::EndRegistration { author: author.pubkey(), state, @@ -151,10 +137,9 @@ impl<'info> IxOps<'info> for EndRegistrations { } } ///IxOps implementation for `Initialize` with all required functions. -impl<'info> IxOps<'info> for Initialize { +impl IxOps for Initialize { type IxData = incorrect_ix_sequence_1::instruction::Initialize; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { incorrect_ix_sequence_1::ID @@ -188,16 +173,12 @@ impl<'info> IxOps<'info> for Initialize { 5 * LAMPORTS_PER_SOL, ); let signers = vec![author.clone()]; - let state = fuzz_accounts - .state - .get_or_create_account( - self.accounts.state, - &[author.pubkey().as_ref(), STATE_SEED.as_ref()], - &incorrect_ix_sequence_1::ID, - ) - .ok_or(FuzzingError::Custom(1))? - .pubkey(); - + let state = fuzz_accounts.state.get_or_create_account( + self.accounts.state, + client, + &[author.pubkey().as_ref(), STATE_SEED.as_ref()], + &incorrect_ix_sequence_1::ID, + ); let acc_meta = incorrect_ix_sequence_1::accounts::Initialize { author: author.pubkey(), state, @@ -208,10 +189,9 @@ impl<'info> IxOps<'info> for Initialize { } } ///IxOps implementation for `Invest` with all required functions. -impl<'info> IxOps<'info> for Invest { +impl IxOps for Invest { type IxData = incorrect_ix_sequence_1::instruction::Invest; type IxAccounts = FuzzAccounts; - type IxSnapshot = InvestSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { incorrect_ix_sequence_1::ID @@ -253,29 +233,23 @@ impl<'info> IxOps<'info> for Invest { client, 5 * LAMPORTS_PER_SOL, ); - let state = fuzz_accounts - .state - .get_or_create_account( - self.accounts.state, - &[project_author.pubkey().as_ref(), STATE_SEED.as_ref()], - &incorrect_ix_sequence_1::ID, - ) - .ok_or(FuzzingError::Custom(5))? - .pubkey(); + let state = fuzz_accounts.state.get_or_create_account( + self.accounts.state, + client, + &[project_author.pubkey().as_ref(), STATE_SEED.as_ref()], + &incorrect_ix_sequence_1::ID, + ); - let project = fuzz_accounts - .project - .get_or_create_account( - self.accounts.project, - &[ - project_author.pubkey().as_ref(), - state.as_ref(), - PROJECT_SEED.as_ref(), - ], - &incorrect_ix_sequence_1::ID, - ) - .ok_or(FuzzingError::Custom(6))? - .pubkey(); + let project = fuzz_accounts.project.get_or_create_account( + self.accounts.project, + client, + &[ + project_author.pubkey().as_ref(), + state.as_ref(), + PROJECT_SEED.as_ref(), + ], + &incorrect_ix_sequence_1::ID, + ); let acc_meta = incorrect_ix_sequence_1::accounts::Invest { investor: investor.pubkey(), project, @@ -287,10 +261,9 @@ impl<'info> IxOps<'info> for Invest { } } ///IxOps implementation for `Register` with all required functions. -impl<'info> IxOps<'info> for Register { +impl IxOps for Register { type IxData = incorrect_ix_sequence_1::instruction::Register; type IxAccounts = FuzzAccounts; - type IxSnapshot = RegisterSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { incorrect_ix_sequence_1::ID @@ -324,29 +297,23 @@ impl<'info> IxOps<'info> for Register { 5 * LAMPORTS_PER_SOL, ); let signers = vec![project_author.clone()]; - let state = fuzz_accounts - .state - .get_or_create_account( - self.accounts.state, - &[project_author.pubkey().as_ref(), STATE_SEED.as_ref()], - &incorrect_ix_sequence_1::ID, - ) - .ok_or(FuzzingError::Custom(2))? - .pubkey(); + let state = fuzz_accounts.state.get_or_create_account( + self.accounts.state, + client, + &[project_author.pubkey().as_ref(), STATE_SEED.as_ref()], + &incorrect_ix_sequence_1::ID, + ); - let project = fuzz_accounts - .project - .get_or_create_account( - self.accounts.project, - &[ - project_author.pubkey().as_ref(), - state.as_ref(), - PROJECT_SEED.as_ref(), - ], - &incorrect_ix_sequence_1::ID, - ) - .ok_or(FuzzingError::Custom(3))? - .pubkey(); + let project = fuzz_accounts.project.get_or_create_account( + self.accounts.project, + client, + &[ + project_author.pubkey().as_ref(), + state.as_ref(), + PROJECT_SEED.as_ref(), + ], + &incorrect_ix_sequence_1::ID, + ); let acc_meta = incorrect_ix_sequence_1::accounts::Register { project_author: project_author.pubkey(), @@ -359,17 +326,26 @@ impl<'info> IxOps<'info> for Register { } fn check( &self, - pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], _ix_data: Self::IxData, ) -> Result<(), FuzzingError> { // This fuzz check will reveal that registrations can be performed // even though registration windows is not open. - let state = pre_ix.state; - if let Some(_project) = post_ix.project { - let registrations_round = state.registrations_round; - if !registrations_round { - return Err(FuzzingError::Custom(1)); + + let state = + incorrect_ix_sequence_1::state::State::try_deserialize_unchecked(&mut pre_ix[2].data()); + + let project = incorrect_ix_sequence_1::state::Project::try_deserialize_unchecked( + &mut post_ix[1].data(), + ); + + if let Ok(_project) = project { + if let Ok(state) = state { + let registrations_round = state.registrations_round; + if !registrations_round { + return Err(FuzzingError::Custom(1)); + } } } Ok(()) @@ -379,11 +355,11 @@ impl<'info> IxOps<'info> for Register { /// Keypair, PdaStore, TokenStore, MintStore, ProgramStore #[derive(Default)] pub struct FuzzAccounts { - project_author: AccountsStorage, - author: AccountsStorage, + project_author: AccountsStorage, + author: AccountsStorage, project: AccountsStorage, // There is no need to fuzz the 'system_program' account. // system_program: AccountsStorage, - investor: AccountsStorage, + investor: AccountsStorage, state: AccountsStorage, } diff --git a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 8b0cbe10b..eae53e698 100644 --- a/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/incorrect-ix-sequence-1/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -5,23 +5,20 @@ use fuzz_instructions::FuzzInstruction; use incorrect_ix_sequence_1::entry as entry_incorrect_ix_sequence_1; use incorrect_ix_sequence_1::ID as PROGRAM_ID_INCORRECT_IX_SEQUENCE_1; const PROGRAM_NAME_INCORRECT_IX_SEQUENCE_1: &str = "incorrect_ix_sequence_1"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - Ok(vec![init_ix]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(Initialize); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -40,5 +37,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/simple-cpi-6/Cargo.lock b/examples/fuzz-tests/simple-cpi-6/Cargo.lock index f09db6fee..93e589a6f 100644 --- a/examples/fuzz-tests/simple-cpi-6/Cargo.lock +++ b/examples/fuzz-tests/simple-cpi-6/Cargo.lock @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -356,9 +356,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -523,7 +523,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -556,9 +556,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -585,7 +585,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -782,7 +782,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -884,22 +884,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -910,9 +910,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -940,8 +940,6 @@ name = "callee" version = "0.1.0" dependencies = [ "anchor-lang", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -950,8 +948,6 @@ version = "0.1.0" dependencies = [ "anchor-lang", "callee", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] [[package]] @@ -1008,9 +1004,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.28" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1337,7 +1333,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1348,7 +1344,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1422,13 +1418,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1507,7 +1503,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1530,7 +1526,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1612,9 +1608,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1636,7 +1632,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1649,7 +1645,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1827,7 +1823,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1998,9 +1994,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2137,9 +2133,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2196,6 +2192,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2204,12 +2318,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]] @@ -2270,7 +2395,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2338,9 +2463,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2377,9 +2502,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2458,6 +2583,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2736,7 +2867,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2817,7 +2948,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2829,7 +2960,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3001,29 +3132,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3185,9 +3316,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3209,7 +3340,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3404,9 +3535,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3557,9 +3688,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3613,9 +3744,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3634,9 +3765,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3664,7 +3795,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3720,9 +3851,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3738,20 +3869,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3799,7 +3930,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3938,9 +4069,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3963,9 +4094,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4024,9 +4155,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4045,9 +4176,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4062,9 +4193,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4073,9 +4204,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4093,9 +4224,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4112,9 +4243,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4130,9 +4261,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4147,9 +4278,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4180,9 +4311,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4190,9 +4321,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4204,9 +4335,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4226,9 +4357,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4250,9 +4381,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4275,21 +4406,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4300,9 +4431,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4311,9 +4442,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4321,9 +4452,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4336,9 +4467,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4364,9 +4495,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4393,9 +4524,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4448,9 +4579,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4476,9 +4607,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4506,9 +4637,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4531,9 +4662,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4558,9 +4689,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4568,9 +4699,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4587,9 +4718,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4613,9 +4744,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4635,9 +4766,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4648,9 +4779,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4725,9 +4856,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4780,15 +4911,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4799,9 +4930,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4815,9 +4946,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4830,9 +4961,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4863,9 +4994,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4877,9 +5008,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4892,9 +5023,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4916,9 +5047,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4941,9 +5072,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4956,9 +5087,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4972,9 +5103,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4991,9 +5122,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5013,9 +5144,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5027,9 +5158,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5130,7 +5261,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5142,7 +5273,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5190,7 +5321,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5302,6 +5433,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5373,9 +5510,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5391,7 +5528,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5412,6 +5549,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5435,9 +5583,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5536,7 +5684,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5547,7 +5695,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5568,22 +5716,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5646,6 +5794,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" @@ -5663,9 +5821,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5687,7 +5845,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5851,7 +6009,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5890,7 +6048,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -5911,7 +6069,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -5920,20 +6078,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5942,7 +6089,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5951,7 +6098,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -5965,6 +6112,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -6004,12 +6153,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[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" @@ -6086,9 +6229,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6101,6 +6244,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 = "valuable" version = "0.1.0" @@ -6158,9 +6313,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6169,24 +6324,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6196,9 +6351,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6206,28 +6361,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6464,6 +6619,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" @@ -6508,6 +6675,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6526,7 +6717,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6546,7 +6758,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/simple-cpi-6/Trident.toml b/examples/fuzz-tests/simple-cpi-6/Trident.toml index 6de0eb954..2c1032328 100644 --- a/examples/fuzz-tests/simple-cpi-6/Trident.toml +++ b/examples/fuzz-tests/simple-cpi-6/Trident.toml @@ -34,4 +34,4 @@ save_all = false allow_duplicate_txs = false # Trident will show statistics after the fuzzing session. This option forces use of honggfuzz parameter # `keep_output` as true in order to be able to catch fuzzer stdout. (default: false) -fuzzing_with_stats = false +fuzzing_with_stats = true diff --git a/examples/fuzz-tests/simple-cpi-6/programs/callee/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/programs/callee/Cargo.toml index b7bd54c3e..73a678805 100644 --- a/examples/fuzz-tests/simple-cpi-6/programs/callee/Cargo.toml +++ b/examples/fuzz-tests/simple-cpi-6/programs/callee/Cargo.toml @@ -15,14 +15,6 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/simple-cpi-6/programs/callee/src/lib.rs b/examples/fuzz-tests/simple-cpi-6/programs/callee/src/lib.rs index 3774bfa78..c7576f3d1 100644 --- a/examples/fuzz-tests/simple-cpi-6/programs/callee/src/lib.rs +++ b/examples/fuzz-tests/simple-cpi-6/programs/callee/src/lib.rs @@ -1,7 +1,5 @@ use anchor_lang::prelude::*; -use trident_derive_accounts_snapshots::AccountsSnapshots; - declare_id!("HJR1TK8bgrUWzysdpS1pBGBYKF7zi1tU9cS4qj8BW8ZL"); #[program] @@ -18,7 +16,7 @@ pub mod callee { } } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct InitializeCallee<'info> { pub signer: Signer<'info>, } diff --git a/examples/fuzz-tests/simple-cpi-6/programs/caller/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/programs/caller/Cargo.toml index 94186555a..e67c1a22c 100644 --- a/examples/fuzz-tests/simple-cpi-6/programs/caller/Cargo.toml +++ b/examples/fuzz-tests/simple-cpi-6/programs/caller/Cargo.toml @@ -15,18 +15,10 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true - [dependencies.callee] path = "../callee" features = ["cpi"] diff --git a/examples/fuzz-tests/simple-cpi-6/programs/caller/src/lib.rs b/examples/fuzz-tests/simple-cpi-6/programs/caller/src/lib.rs index 80e91e90a..96dde54c4 100644 --- a/examples/fuzz-tests/simple-cpi-6/programs/caller/src/lib.rs +++ b/examples/fuzz-tests/simple-cpi-6/programs/caller/src/lib.rs @@ -1,8 +1,6 @@ use anchor_lang::prelude::*; use callee::program::Callee; -use trident_derive_accounts_snapshots::AccountsSnapshots; - declare_id!("FWtSodrkUnovFPnNRCxneP6VWh6JH6jtQZ4PHoP8Ejuz"); #[program] @@ -23,7 +21,7 @@ pub mod caller { Ok(()) } } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct InitializeCaller<'info> { pub signer: Signer<'info>, pub program: Program<'info, Callee>, diff --git a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/Cargo.toml index 8da9491da..7746637b8 100644 --- a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/Cargo.toml @@ -17,8 +17,6 @@ path = "../../../../../crates/client" [dependencies.callee] path = "../../programs/callee" -features = ["trident-fuzzing"] [dependencies.caller] path = "../../programs/caller" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 0c9490699..fe4ed6d56 100644 --- a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,10 +1,4 @@ use trident_client::fuzzing::*; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitializeCalleeSnapshot<'info> = InitializeCalleeAlias<'info>; -type InitializeCallerSnapshot<'info> = InitializeCallerAlias<'info>; -use callee::trident_fuzz_initialize_callee_snapshot::InitializeCalleeAlias; -use caller::trident_fuzz_initialize_caller_snapshot::InitializeCallerAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. @@ -51,10 +45,9 @@ pub struct InitializeCallerData { pub input: u8, } ///IxOps implementation for `InitializeCallee` with all required functions. -impl<'info> IxOps<'info> for InitializeCallee { +impl IxOps for InitializeCallee { type IxData = callee::instruction::InitializeCallee; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeCalleeSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { callee::ID @@ -90,10 +83,9 @@ impl<'info> IxOps<'info> for InitializeCallee { } } ///IxOps implementation for `InitializeCaller` with all required functions. -impl<'info> IxOps<'info> for InitializeCaller { +impl IxOps for InitializeCaller { type IxData = caller::instruction::InitializeCaller; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeCallerSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { caller::ID @@ -142,5 +134,5 @@ impl<'info> IxOps<'info> for InitializeCaller { #[derive(Default)] pub struct FuzzAccounts { _program: AccountsStorage, - signer_caller: AccountsStorage, + signer_caller: AccountsStorage, } diff --git a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index 4a860ade5..63c85243c 100644 --- a/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/simple-cpi-6/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -8,29 +8,22 @@ use caller::ID as PROGRAM_ID_CALLER; use fuzz_instructions::FuzzInstruction; const PROGRAM_NAME_CALLEE: &str = "callee"; const PROGRAM_NAME_CALLER: &str = "caller"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_caller = FuzzInstruction::InitializeCaller(InitializeCaller::arbitrary(u)?); - Ok(vec![init_caller]) - } - fn ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } - fn post_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(InitializeCaller); + middle_sequence!(); + post_sequence!(); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -55,5 +48,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/unauthorized-access-2/Cargo.lock b/examples/fuzz-tests/unauthorized-access-2/Cargo.lock index 562f28909..416c47ca4 100644 --- a/examples/fuzz-tests/unauthorized-access-2/Cargo.lock +++ b/examples/fuzz-tests/unauthorized-access-2/Cargo.lock @@ -336,9 +336,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -356,9 +356,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -523,7 +523,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -556,9 +556,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -585,7 +585,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -782,7 +782,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -884,22 +884,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -910,9 +910,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -989,9 +989,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.28" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1318,7 +1318,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1329,7 +1329,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1403,13 +1403,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1488,7 +1488,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1511,7 +1511,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1593,9 +1593,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1617,7 +1617,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1630,7 +1630,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1808,7 +1808,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1978,9 +1978,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -2117,9 +2117,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2176,6 +2176,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2184,12 +2302,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]] @@ -2250,7 +2379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -2318,9 +2447,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2357,9 +2486,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2438,6 +2567,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2716,7 +2851,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2797,7 +2932,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2809,7 +2944,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2981,29 +3116,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3165,9 +3300,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3189,7 +3324,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3384,9 +3519,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3537,9 +3672,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3593,9 +3728,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3614,9 +3749,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3644,7 +3779,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3700,9 +3835,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3718,20 +3853,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3779,7 +3914,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3918,9 +4053,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e356283399b2c951de982eb62cc1675709b74347ba213dee385258c40bf6edd" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3943,9 +4078,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230bfd49eb42d6b351819dceb5c6ad88343c95470aa5454a42f30358553a286d" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4004,9 +4139,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed8aab3582ef7422bd8936f23b2e275f2046450497c7d9363f94b4038792c7c9" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4025,9 +4160,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39224a595abc172ce3988c4a8a86ee0160c42e866a596c2b11e339af8eb53dd8" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4042,9 +4177,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c10d280d300a2842e61496bddadf36bc6ff905b82c023c60cab1e06e8e9b81" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4053,9 +4188,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac8fca8711cde097e04212e1b40aa29dce914615fdeff716aa92e4a59fbda" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4073,9 +4208,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c52233e6e755f8e373e98360fdcb7c1be2f687dd77f28fee1b729dbb4dcca5c" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4092,9 +4227,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48a53e2c48ddc4228a68e948b2b16667baf34aecb9965c6657a3f0ac06cbacc8" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4110,9 +4245,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c24c90a1269fa8183c1ad0278ba9dd5c852e8123783c5ece8b09bd8b4d66e2b" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4127,9 +4262,9 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4ae9862e933cb25f562a86845b1cef9e69afcaa8ff20649ef62a41720f67e" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", @@ -4160,9 +4295,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bd6622368e53d2ce779c86b1f4b6c3d7d9bff9fa349d46d5395db041d76e43" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4170,9 +4305,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d168e532a44f8651b533904df5ac8ad94db6ffc6e7353fdee148151cbbbbf97" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4184,9 +4319,9 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afec309b7eea9056d3987afbb0cbdbeba15f694e3d8180ce698fc50a8f1940a" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", @@ -4206,9 +4341,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf05970fc6b353bed731b3a64d72423b67894b23800864abc6b50ab0152a77cf" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4230,9 +4365,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45478bad85abd8cc291775463e15bc1031fdbf973d48e2568e8defee3d842a3a" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4255,21 +4390,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5cb05f9051446226cd26ea17f6fbe5e28e922ad6a846166db7fb17865090fcb" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305a01a37cb1d61bc17d4fbac110fa8ae67f2d8009f73533abe30a08c931e07b" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4280,9 +4415,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbcde62a32962c3f80aebe0047476dcb2b693b5d47110071af0d23561c3aa0c" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4291,9 +4426,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4d5a65011530f2cfb0d349e00cc18d73c80cec7a3d35a49cd8ceaa627cb54" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4301,9 +4436,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08e6fc813645eb514ce038fb66785f2a75bbe54d963f27e2bdcf72e351146e6" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4316,9 +4451,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7813329d0cf9db238d8c731959869a969761d10cc043f0bb2ee6e2581f59e3e7" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4344,9 +4479,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97143e2d6f887b3caebf25adef9f6d7532c1dbf86057213573c7f6adf8bbe16c" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4373,9 +4508,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52f4c424433a18b57ae88a35b677c548879a9c4ca1e27e108d1597ff12b95ac" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4428,9 +4563,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebd6ed32dfa7b69aeca65d1f971abc1f7211b4e386a6fb89d514d97d0a01d1c" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4456,9 +4591,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b2afc6ce58c42ba74f055e3b3e2c4b78cd123ae81e7afe14565d7bd7f15cf2" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4486,9 +4621,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee72bfa134d5737792915a013fb149e0d9b61fc13567c534d991cda2ebd8ccb" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4511,9 +4646,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f35db43502fb78b0f47324924d67d701999f870622de8f3aa515ca2a5c1ed97" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4538,9 +4673,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c395a20626d440fe5377fc48e8aed0d4d995250bbf7239e651e7f4a6c7f1a3a9" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4548,9 +4683,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeaeee9f5c950e31daa273a446ad0cb46b5bf7ce579fc9d33f6d528930ac5246" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4567,9 +4702,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c5a1f2465f8ecff7f1ef8026ee45ddd4e26790785fd56214193b7e4f53d69c" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4593,9 +4728,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87eb2c3106e48bc02d61a8f5df98956b7cfb370391dd0aa55bba63142e066519" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4615,9 +4750,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aefdec90fbee3c1bc845b1f2c99271707532bd336e55b4a2362843c0d93cfb9f" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4628,9 +4763,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873dc299dd99af8431f28a2ff5e99291ecd5132394b7f07dcd3023c22288a23f" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4705,9 +4840,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bfb6b467e755620f4d3f8eefd1e5bdfb812ec7076d237e0280d7c988f16f02" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4760,15 +4895,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed90de8086a0e114ab63454a9d066e0f08eb2c9c8aea149ff60e8a492f165fc" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4779,9 +4914,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32debecc6ec07dff24ae78303597cd50d752a40815ef4c05ddeb0215d7ba7399" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4795,9 +4930,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764b9acc6d994f650d9f8a6b8714e9e3827c70e3156d3d103739e3191dbba7d6" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4810,9 +4945,9 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9760ce926b15511f3eacbd465bf221a2f0aa3f5ff7320e978b4ad87c1a8c00e" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", @@ -4843,9 +4978,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9a7c1fc46057d971a7daaf45051f35d8beef15b71986caac362b489afeba80c" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4857,9 +4992,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242cb2a51e362fd4726aa99ac35b79591d5fe6266babe51a1ca2394164452844" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4872,9 +5007,9 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8bed20fc73d3ff987bd61f944286676979476440d6b4712eceb3840d1c27cf" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", @@ -4896,9 +5031,9 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05c9059ee5e9a5e9ae86819ccc3e8d464e128011c586ecb3be696ebba81ac34" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", @@ -4921,9 +5056,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5bf19b261fa8995700507c71687fa4c401000df687602b07189460cf16e803a" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4936,9 +5071,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5318c8f6e0bd979dd36b3e15a9c341dfba7e4414dc9fff6ae23d41cbda6ba41" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4952,9 +5087,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4adb8233c50952389ad749741f9a2475326d09924c145970e91dd91f18b49d" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4971,9 +5106,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451e38f9e64205837eadd69b9928763d167ef93177f3eeb86059b21ed83fcbc" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -4993,9 +5128,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc5ea7581c04de926871d361cc0f295561fdd849292d923524079a6d96fcf" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5007,9 +5142,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.25" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7569e85e3b1c8abc089ec06153b4ded577bc94bf383f607d5017082497f53665" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5110,7 +5245,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5122,7 +5257,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", "thiserror", ] @@ -5170,7 +5305,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5282,6 +5417,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5353,9 +5494,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5371,7 +5512,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5392,6 +5533,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5415,9 +5567,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5516,7 +5668,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5527,7 +5679,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "test-case-core", ] @@ -5548,22 +5700,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5626,6 +5778,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" @@ -5643,9 +5805,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5667,7 +5829,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5831,7 +5993,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5870,7 +6032,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -5891,7 +6053,7 @@ dependencies = [ "serde_json", "solana-program-test", "solana-sdk", - "syn 2.0.79", + "syn 2.0.87", "thiserror", "tokio", "toml 0.8.19", @@ -5900,20 +6062,9 @@ dependencies = [ "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5922,7 +6073,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5931,7 +6082,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -5945,6 +6096,8 @@ dependencies = [ "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", @@ -5989,16 +6142,8 @@ name = "unauthorized-access-2" version = "0.1.0" dependencies = [ "anchor-lang", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] -[[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" @@ -6075,9 +6220,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6090,6 +6235,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 = "valuable" version = "0.1.0" @@ -6147,9 +6304,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6158,24 +6315,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6185,9 +6342,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6195,28 +6352,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6453,6 +6610,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" @@ -6497,6 +6666,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6515,7 +6708,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6535,7 +6749,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/Cargo.toml b/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/Cargo.toml index 401fba4e2..e65d34f95 100644 --- a/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/Cargo.toml +++ b/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/Cargo.toml @@ -15,15 +15,6 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] anchor-lang = "0.30.1" - -[dependencies.trident-derive-accounts-snapshots] -path = "../../../../../crates/fuzz/derive/accounts_snapshots" - - -[dependencies.trident-fuzz] -path = "../../../../../crates/fuzz" -optional = true diff --git a/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/initialize.rs b/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/initialize.rs index 7d9e998f8..f8f8473c2 100644 --- a/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/initialize.rs +++ b/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/initialize.rs @@ -2,8 +2,6 @@ use anchor_lang::{prelude::*, system_program}; use crate::state::{Escrow, ESCROW_SEED}; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _initialize(ctx: Context, receiver: Pubkey, amount: u64) -> Result<()> { let escorw = &mut ctx.accounts.escrow; @@ -26,7 +24,7 @@ pub fn _initialize(ctx: Context, receiver: Pubkey, amount: u64) -> R Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] #[instruction(receiver: Pubkey)] pub struct Initialize<'info> { #[account(mut)] diff --git a/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/withdraw.rs b/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/withdraw.rs index 297ce5eeb..c5631f11b 100644 --- a/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/withdraw.rs +++ b/examples/fuzz-tests/unauthorized-access-2/programs/unauthorized-access-2/src/instructions/withdraw.rs @@ -1,14 +1,12 @@ use crate::state::{Escrow, ESCROW_SEED}; use anchor_lang::prelude::*; -use trident_derive_accounts_snapshots::AccountsSnapshots; - pub fn _withdraw(_ctx: Context) -> Result<()> { // close will transfer everything to the receiver Ok(()) } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Withdraw<'info> { #[account(mut)] pub receiver: Signer<'info>, diff --git a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/Cargo.toml index b3a5b72be..5e7dd96a9 100644 --- a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/Cargo.toml @@ -18,4 +18,3 @@ path = "../../../../../crates/client" [dependencies.unauthorized-access-2] path = "../../programs/unauthorized-access-2" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index c2a1cc76c..b47d22b93 100644 --- a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,12 +1,6 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; use unauthorized_access_2::ESCROW_SEED; -/// Link the relevant Account Context Alias from the program. -/// Aliases are generated by the `AccountsSnapshots` macro. -type InitializeSnapshot<'info> = InitializeAlias<'info>; -type WithdrawSnapshot<'info> = WithdrawAlias<'info>; -use unauthorized_access_2::trident_fuzz_initialize_snapshot::InitializeAlias; -use unauthorized_access_2::trident_fuzz_withdraw_snapshot::WithdrawAlias; /// FuzzInstruction contains all available Instructions. /// Below, the instruction arguments (accounts and data) are defined. #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] @@ -54,10 +48,9 @@ pub struct WithdrawAccounts { #[derive(Arbitrary, Debug)] pub struct WithdrawData {} ///IxOps implementation for `Initialize` with all required functions. -impl<'info> IxOps<'info> for Initialize { +impl IxOps for Initialize { type IxData = unauthorized_access_2::instruction::Initialize; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { unauthorized_access_2::ID @@ -105,21 +98,19 @@ impl<'info> IxOps<'info> for Initialize { 10 * LAMPORTS_PER_SOL, ); - let escrow = fuzz_accounts - .escrow - .get_or_create_account( - self.accounts.escrow, - &[ - author.pubkey().as_ref(), - receiver.pubkey().as_ref(), - ESCROW_SEED.as_ref(), - ], - &unauthorized_access_2::ID, - ) - .unwrap(); + let escrow = fuzz_accounts.escrow.get_or_create_account( + self.accounts.escrow, + client, + &[ + author.pubkey().as_ref(), + receiver.pubkey().as_ref(), + ESCROW_SEED.as_ref(), + ], + &unauthorized_access_2::ID, + ); let acc_meta = unauthorized_access_2::accounts::Initialize { author: author.pubkey(), - escrow: escrow.pubkey(), + escrow, system_program: solana_sdk::system_program::ID, } .to_account_metas(None); @@ -127,10 +118,9 @@ impl<'info> IxOps<'info> for Initialize { } } ///IxOps implementation for `Withdraw` with all required functions. -impl<'info> IxOps<'info> for Withdraw { +impl IxOps for Withdraw { type IxData = unauthorized_access_2::instruction::Withdraw; type IxAccounts = FuzzAccounts; - type IxSnapshot = WithdrawSnapshot<'info>; /// Definition of the program ID that the Instruction is associated with. fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { unauthorized_access_2::ID @@ -164,22 +154,20 @@ impl<'info> IxOps<'info> for Withdraw { 10 * LAMPORTS_PER_SOL, ); - let escrow = fuzz_accounts - .escrow - .get_or_create_account( - self.accounts.escrow, - &[ - receiver.pubkey().as_ref(), - receiver.pubkey().as_ref(), - ESCROW_SEED.as_ref(), - ], - &unauthorized_access_2::ID, - ) - .unwrap(); + let escrow = fuzz_accounts.escrow.get_or_create_account( + self.accounts.escrow, + client, + &[ + receiver.pubkey().as_ref(), + receiver.pubkey().as_ref(), + ESCROW_SEED.as_ref(), + ], + &unauthorized_access_2::ID, + ); let acc_meta = unauthorized_access_2::accounts::Withdraw { receiver: receiver.pubkey(), - escrow: escrow.pubkey(), + escrow, system_program: solana_sdk::system_program::ID, } .to_account_metas(None); @@ -187,18 +175,20 @@ impl<'info> IxOps<'info> for Withdraw { } fn check( &self, - pre_ix: Self::IxSnapshot, - post_ix: Self::IxSnapshot, + pre_ix: &[SnapshotAccount], + post_ix: &[SnapshotAccount], _ix_data: Self::IxData, ) -> Result<(), FuzzingError> { - if let Some(escrow_pre) = pre_ix.escrow { - let receiver = pre_ix.receiver; - let receiver_lamports_before = receiver.lamports(); - let receiver_lamports_after = post_ix.receiver.lamports(); + if let Ok(escrow_pre) = + unauthorized_access_2::Escrow::try_deserialize(&mut pre_ix[1].data()) + { + let receiver_key = pre_ix[0].pubkey(); + let receiver_lamports_before = pre_ix[0].lamports(); + let receiver_lamports_after = post_ix[0].lamports(); // If the Receiver (i.e. Signer in the Context) and stored Receiver inside Escrow Account, // do not match, however the receiver`s balance increased, we found an Error - if receiver.key() != escrow_pre.receiver + if receiver_key != escrow_pre.receiver && receiver_lamports_before < receiver_lamports_after { return Err(FuzzingError::BalanceMismatch); @@ -212,9 +202,9 @@ impl<'info> IxOps<'info> for Withdraw { /// Keypair, PdaStore, TokenStore, MintStore, ProgramStore #[derive(Default)] pub struct FuzzAccounts { - receiver: AccountsStorage, + receiver: AccountsStorage, // No need to fuzz system_program // system_program: AccountsStorage, - author: AccountsStorage, + author: AccountsStorage, escrow: AccountsStorage, } diff --git a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index b16376005..96b9a71c1 100644 --- a/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/unauthorized-access-2/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -5,24 +5,20 @@ use fuzz_instructions::FuzzInstruction; use unauthorized_access_2::entry as entry_unauthorized_access_2; use unauthorized_access_2::ID as PROGRAM_ID_UNAUTHORIZED_ACCESS_2; const PROGRAM_NAME_UNAUTHORIZED_ACCESS_2: &str = "unauthorized_access_2"; -struct MyFuzzData; +struct InstructionsSequence; /// Define instruction sequences for invocation. -/// `pre_ixs` runs at the start, `ixs` in the middle, and `post_ixs` at the end. -/// For example, to call `InitializeFn` at the start of each fuzzing iteration: +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: /// ``` -/// fn pre_ixs(u: &mut arbitrary::Unstructured) -> -/// arbitrary::Result> { -/// let init = FuzzInstruction::InitializeFn(InitializeFn::arbitrary(u)?); -/// Ok(vec![init]) -/// } +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} /// ``` /// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init_ix = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - - Ok(vec![init_ix]) - } +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(Initialize); } /// `fn fuzz_iteration` runs during every fuzzing iteration. /// Modification is not required. @@ -41,5 +37,5 @@ fn fuzz_iteration + std::fmt::Display, U>( } fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock b/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock index 5d63f94ca..a22ff3ffe 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock +++ b/examples/fuzz-tests/unchecked-arithmetic-0/Cargo.lock @@ -14,19 +14,13 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -71,9 +65,9 @@ dependencies = [ [[package]] name = "afl" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c21e10b6947189c5ff61343b5354e9ad1c1722bd47b69cd0a6b49e5fa7f7ecf6" +checksum = "80bb240a3b9ff18002142c1a736e98046461d51a694d687c3e7329b456ab0fe4" dependencies = [ "home", "libc", @@ -229,7 +223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" dependencies = [ "anchor-syn", - "borsh-derive-internal 0.10.3", + "borsh-derive-internal 0.10.4", "proc-macro2", "quote", "syn 1.0.109", @@ -265,7 +259,7 @@ dependencies = [ "arrayref", "base64 0.21.7", "bincode", - "borsh 0.10.3", + "borsh 0.10.4", "bytemuck", "getrandom 0.2.15", "solana-program", @@ -342,9 +336,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "aquamarine" @@ -362,9 +356,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -488,9 +482,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -529,7 +523,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -562,9 +556,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "brotli", "flate2", @@ -585,13 +579,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -607,23 +601,23 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -734,11 +728,11 @@ dependencies = [ [[package]] name = "borsh" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" dependencies = [ - "borsh-derive 0.10.3", + "borsh-derive 0.10.4", "hashbrown 0.13.2", ] @@ -767,12 +761,12 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", + "borsh-derive-internal 0.10.4", + "borsh-schema-derive-internal 0.10.4", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -788,7 +782,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "syn_derive", ] @@ -805,9 +799,9 @@ dependencies = [ [[package]] name = "borsh-derive-internal" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" dependencies = [ "proc-macro2", "quote", @@ -827,9 +821,9 @@ dependencies = [ [[package]] name = "borsh-schema-derive-internal" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" dependencies = [ "proc-macro2", "quote", @@ -838,9 +832,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -890,22 +884,22 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.17.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -916,9 +910,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -971,9 +965,9 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.17.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", @@ -995,9 +989,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.15" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "jobserver", "libc", @@ -1183,9 +1177,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1324,7 +1318,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1335,7 +1329,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1409,13 +1403,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1494,7 +1488,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1517,7 +1511,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1599,9 +1593,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1623,7 +1617,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1636,7 +1630,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -1720,12 +1714,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1760,9 +1754,9 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1775,9 +1769,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1785,15 +1779,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1802,38 +1796,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1906,9 +1900,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "goblin" @@ -1933,10 +1927,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.4.0", + "indexmap 2.6.0", "slab", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tracing", ] @@ -1982,6 +1976,12 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" + [[package]] name = "heck" version = "0.3.3" @@ -2099,9 +2099,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -2117,9 +2117,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2155,9 +2155,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2176,6 +2176,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.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2184,12 +2302,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]] @@ -2245,12 +2374,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.1", ] [[package]] @@ -2277,9 +2406,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" @@ -2318,9 +2447,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2357,9 +2486,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libredox" @@ -2438,6 +2567,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2465,19 +2600,18 @@ dependencies = [ [[package]] name = "lz4" -version = "1.26.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958b4caa893816eea05507c20cfe47574a43d9a697138a7872990bba8a0ece68" +checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.10.0" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -2549,15 +2683,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.8.0" @@ -2726,7 +2851,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -2807,7 +2932,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -2819,7 +2944,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -2830,9 +2955,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.3" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] @@ -2848,9 +2973,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -2943,9 +3068,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" [[package]] name = "pbkdf2" @@ -2991,29 +3116,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3034,9 +3159,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plain" @@ -3058,9 +3183,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -3146,7 +3271,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -3175,9 +3300,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3199,7 +3324,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -3374,9 +3499,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -3394,9 +3519,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3406,9 +3531,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -3417,9 +3542,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -3454,7 +3579,7 @@ dependencies = [ "system-configuration", "tokio", "tokio-rustls", - "tokio-util 0.7.11", + "tokio-util 0.7.12", "tower-service", "url", "wasm-bindgen", @@ -3547,9 +3672,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.35" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -3603,9 +3728,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -3624,11 +3749,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3654,7 +3779,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -3682,9 +3807,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -3710,9 +3835,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -3728,20 +3853,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -3751,9 +3876,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -3789,7 +3914,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -3928,9 +4053,9 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4185d569c062983fc2a618ae4ee6fe1a139b36bce7a25045647c49bf0020a53" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" dependencies = [ "Inflector", "base64 0.21.7", @@ -3953,9 +4078,9 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c156ddd42a2746e14fe267f85a2f802567dfa7c1702836b0ce69ea3be15a3c3" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" dependencies = [ "arrayref", "bincode", @@ -4014,9 +4139,9 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f5967c234aa8281f36999ded250403ddacb77863e2a1e157a3203884a13cfa" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" dependencies = [ "bincode", "bytemuck", @@ -4035,9 +4160,9 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78204433cdb1945ef3622905f806423f5536cc91205dc8e325efe521394d3ca" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.1", "futures", @@ -4052,9 +4177,9 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959539e11afaa554c0ae445bb3c726ad658aa33d8b577b76ab7e0ad6e313405" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" dependencies = [ "serde", "solana-sdk", @@ -4063,9 +4188,9 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5224477dc90857c98bec8ff746926facf525e0216fdfbde51e28d92d5b11b236" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", @@ -4083,9 +4208,9 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfab3aa028e4feac760f28e7fb24760813d451e7cff5a13584509ddab4a94311" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" dependencies = [ "bincode", "byteorder", @@ -4102,9 +4227,9 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06f781213cf76d8840e688d52fbc3876ae8522d2ac594c1c11ab9b982d7f0336" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" dependencies = [ "bv", "bytemuck", @@ -4120,9 +4245,9 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c817832e71886dbea877d1aa911c9ce2e984a39081bb56ee30d4c835567827a6" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" dependencies = [ "chrono", "clap 2.34.0", @@ -4137,16 +4262,16 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa9cc6e8e59adf70acbf5cac21342ae8b5e41cbf05519fe5f6287e84ab40f63" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" dependencies = [ "async-trait", "bincode", "dashmap", "futures", "futures-util", - "indexmap 2.4.0", + "indexmap 2.6.0", "indicatif", "log", "quinn", @@ -4170,9 +4295,9 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b176bad40620d1c443365daf24e19fbfccafe8daff60eb3ddd6cbd9cf0fbec58" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -4180,9 +4305,9 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d02fb29934427f1487d2149fe8bcb405306729b2f22a2ad616bb8ffd024cee7b" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" dependencies = [ "bincode", "chrono", @@ -4194,15 +4319,15 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e5a2e26448b3e04ce673794994ff27f3972ec8a806c224eccc02e09f751ca5" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" dependencies = [ "async-trait", "bincode", "crossbeam-channel", "futures-util", - "indexmap 2.4.0", + "indexmap 2.6.0", "log", "rand 0.8.5", "rayon", @@ -4216,9 +4341,9 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4564996ef9f2983efeedb14a38315fa606d3d2cc0a2c8d899c507c5893fe79" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" dependencies = [ "lazy_static", "log", @@ -4240,9 +4365,9 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a6ef2db80dceb124b7bf81cca3300804bf427d2711973fc3df450ed7dfb26d" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", "bs58 0.4.0", @@ -4265,21 +4390,21 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70088de7d4067d19a7455609e2b393e6086bd847bb39c4d2bf234fc14827ef9e" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] name = "solana-loader-v4-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fde1ab49eb031882f4803bf5a8008dca84356717e120ba9276d229ff24633c" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", "solana-measure", @@ -4290,9 +4415,9 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b129da15193f26db62d62ae6bb9f72361f361bcdc36054be3ab8bc04cc7a4f31" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" dependencies = [ "env_logger", "lazy_static", @@ -4301,9 +4426,9 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d195b73093a4964ba6b5943418054a5fcbba23eafdd0842fd973fcceac1a967" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" dependencies = [ "log", "solana-sdk", @@ -4311,9 +4436,9 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7b06860ffbf4cf4714182e1b7eb00eb3ff0bcc9cff615d05e01e488923883c" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" dependencies = [ "crossbeam-channel", "gethostname", @@ -4326,9 +4451,9 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9400b50b8439868a99b5fa2d961d74e37b7a6c1d5865759d0b1c906c2ad6b2a9" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" dependencies = [ "bincode", "clap 3.2.25", @@ -4354,9 +4479,9 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-perf" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01a386e852df67031195094628851b8d239dd71fe17b721c3993277e68cb3ab" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" dependencies = [ "ahash 0.8.11", "bincode", @@ -4383,9 +4508,9 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2b2c8babfae4cace1a25b6efa00418f3acd852cf55d7cecc0360d3c5050479" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" dependencies = [ "ark-bn254", "ark-ec", @@ -4395,7 +4520,7 @@ dependencies = [ "bincode", "bitflags 2.6.0", "blake3", - "borsh 0.10.3", + "borsh 0.10.4", "borsh 0.9.3", "borsh 1.5.1", "bs58 0.4.0", @@ -4438,9 +4563,9 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0444f9440f4459d377c41470b2eb48b527def81f3052b7a121f6aa8c7350cc52" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" dependencies = [ "base64 0.21.7", "bincode", @@ -4466,9 +4591,9 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76274336971f37dbbd3508aaaa4c98ca0061abd31fb309ad1c6ad132f0c6c0e" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" dependencies = [ "assert_matches", "async-trait", @@ -4496,9 +4621,9 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee4a39e41e789b6f100c97d9f40c1d08381bf6e3d0e351065e542091cddb039" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" dependencies = [ "crossbeam-channel", "futures-util", @@ -4521,9 +4646,9 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baad755c76ee0aab8890f0ef873e61b8b3012c523d33bfa5b062fe9be8cef370" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", @@ -4548,9 +4673,9 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1c2a0ccb0be7ca79e8ff0d7c786bce586433a5687ffbea522453d0b41c4bf4a" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" dependencies = [ "lazy_static", "num_cpus", @@ -4558,9 +4683,9 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d042a812537e3507e1c163c7573fc04c96e12d3eba512e3fe74c7393229fa39" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" dependencies = [ "console", "dialoguer", @@ -4577,9 +4702,9 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6f5560283bd0a6833d1bd816299785058a870fff51b0df399fdb3ce92c8484" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" dependencies = [ "async-trait", "base64 0.21.7", @@ -4603,9 +4728,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e4ca77f89caa9071acadb1eed19c28a6691fd63d0563ed927c96bf734cf1c9c" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" dependencies = [ "base64 0.21.7", "bs58 0.4.0", @@ -4625,9 +4750,9 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a6ea9ad81d63f18fb8b3a9b39643cc43eaf909199d67037e724562301d1df7" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -4638,9 +4763,9 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b50b29b6f5938d2c9b151e9187d4687ca9c26be2c6ebe53ba34826283441" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" dependencies = [ "aquamarine", "arrayref", @@ -4715,9 +4840,9 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e0f0def5c5af07f53d321cea7b104487b522cfff77c3cae3da361bfe956e9e" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" dependencies = [ "assert_matches", "base64 0.21.7", @@ -4770,15 +4895,15 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55c196c8050834c391a34b58e3c9fd86b15452ef1feeeafa1dbeb9d2291dfec" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ "bs58 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -4789,9 +4914,9 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c5fc9df712efd671a5a5b68e58a448dc13b70f59ef16bdd0e8d644813eb67a" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" dependencies = [ "crossbeam-channel", "log", @@ -4805,9 +4930,9 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624f6d0c84c19a17bf882259303e99e1ed2562a0316c989f847a067aa99d4940" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" dependencies = [ "bincode", "log", @@ -4820,16 +4945,16 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749720d82c5f31f7ec326da1e0baac098201de70f0874719172a55309433b449" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" dependencies = [ "async-channel", "bytes", "crossbeam-channel", "futures-util", "histogram", - "indexmap 2.4.0", + "indexmap 2.6.0", "itertools", "libc", "log", @@ -4853,9 +4978,9 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a449f40a516a8e83dcc2ce07643bb3feec4da690f170d438849af06c503cc28" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" dependencies = [ "bincode", "log", @@ -4867,9 +4992,9 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84535de1253afb6ccc4ae6852eb013ca734c439a902ec5e4684b90ed649a37c2" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" dependencies = [ "bincode", "log", @@ -4882,14 +5007,14 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff514462bb715aaea9bc5c0ee60f83ab3f91e04279337c6b07d054153b616dc" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" dependencies = [ "async-trait", "bincode", "futures-util", - "indexmap 2.4.0", + "indexmap 2.6.0", "indicatif", "log", "rayon", @@ -4906,14 +5031,14 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670e387049812d42bdc8fcc4ff75452ff3cb00657af979a90f55f6d37dba9dd9" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" dependencies = [ "Inflector", "base64 0.21.7", "bincode", - "borsh 0.10.3", + "borsh 0.10.4", "bs58 0.4.0", "lazy_static", "log", @@ -4931,9 +5056,9 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11183dae826f942ebd0401712c8a52367a4a6312f1cd325f304cd9551226fc8b" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" dependencies = [ "async-trait", "solana-connection-cache", @@ -4946,9 +5071,9 @@ dependencies = [ [[package]] name = "solana-version" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d518e61ce22c812df23d9c61ab9bcbef4df3e3d3dcaa74a999625f11bcf07" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" dependencies = [ "log", "rustc_version", @@ -4962,9 +5087,9 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae2a4908ac4df02a4adb78f09fe938b31c75f42ba64401b8ac88193eb446943" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" dependencies = [ "crossbeam-channel", "itertools", @@ -4981,9 +5106,9 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5743503143fb2259c41a973a78e9aeeb8e21f1b03543c3bb85449926ea692719" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" dependencies = [ "bincode", "log", @@ -5003,9 +5128,9 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5813dc267bea898ff40d3bd662a0a7659170dd19ae5e7c46e8dc0a414a205868" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" dependencies = [ "bytemuck", "num-derive 0.4.2", @@ -5017,9 +5142,9 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.18.22" +version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ee07fa523b4cfcff68de774db7aa87d2da2c4357155a90bacd9a0a0af70a99" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" dependencies = [ "aes-gcm-siv", "base64 0.21.7", @@ -5092,7 +5217,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" dependencies = [ "assert_matches", - "borsh 0.10.3", + "borsh 0.10.4", "num-derive 0.4.2", "num-traits", "solana-program", @@ -5120,7 +5245,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5132,7 +5257,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.76", + "syn 2.0.87", "thiserror", ] @@ -5151,7 +5276,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" dependencies = [ - "borsh 0.10.3", + "borsh 0.10.4", "bytemuck", "solana-program", "solana-zk-token-sdk", @@ -5180,7 +5305,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5255,7 +5380,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" dependencies = [ - "borsh 0.10.3", + "borsh 0.10.4", "solana-program", "spl-discriminator", "spl-pod", @@ -5292,6 +5417,12 @@ dependencies = [ "spl-program-error", ] +[[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" @@ -5363,9 +5494,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5381,7 +5512,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5402,6 +5533,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.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5425,9 +5567,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.41" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -5471,9 +5613,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -5526,7 +5668,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5537,7 +5679,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "test-case-core", ] @@ -5558,22 +5700,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5636,6 +5778,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" @@ -5653,9 +5805,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.3" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5677,7 +5829,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5708,9 +5860,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -5749,9 +5901,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -5766,7 +5918,6 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "indexmap 1.9.3", "serde", ] @@ -5776,10 +5927,11 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -5797,22 +5949,22 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.6.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.20", ] [[package]] @@ -5841,7 +5993,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", ] [[package]] @@ -5880,7 +6032,7 @@ dependencies = [ [[package]] name = "trident-client" -version = "0.7.0" +version = "0.8.0" dependencies = [ "afl", "anchor-lang", @@ -5889,47 +6041,30 @@ dependencies = [ "anyhow", "arbitrary", "bincode", - "borsh 0.10.3", "cargo_metadata", "convert_case", "fehler", "futures", "honggfuzz", - "indicatif", - "log", "pathdiff", - "proc-macro2", "quinn-proto", "quote", - "regex", "serde", "serde_json", "solana-program-test", "solana-sdk", - "syn 1.0.109", + "syn 2.0.87", "thiserror", "tokio", - "toml 0.5.11", - "trident-derive-accounts-snapshots", + "toml 0.8.19", "trident-derive-displayix", "trident-derive-fuzz-test-executor", "trident-fuzz", ] -[[package]] -name = "trident-derive-accounts-snapshots" -version = "0.0.1" -dependencies = [ - "anchor-syn", - "convert_case", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "trident-derive-displayix" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5938,7 +6073,7 @@ dependencies = [ [[package]] name = "trident-derive-fuzz-test-executor" -version = "0.0.2" +version = "0.0.3" dependencies = [ "proc-macro2", "quote", @@ -5947,7 +6082,7 @@ dependencies = [ [[package]] name = "trident-fuzz" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anchor-lang", "anyhow", @@ -5955,17 +6090,18 @@ dependencies = [ "fehler", "prettytable", "rand 0.8.5", - "regex", "serde", "serde_json", "solana-banks-client", "solana-program-runtime", "solana-program-test", "solana-sdk", + "solana-stake-program", + "solana-vote-program", "spl-token", "thiserror", "tokio", - "toml 0.5.11", + "toml 0.8.19", ] [[package]] @@ -6006,48 +6142,40 @@ name = "unchecked-arithmetic-0" version = "0.1.0" dependencies = [ "anchor-lang", - "trident-derive-accounts-snapshots", - "trident-fuzz", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -6092,9 +6220,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -6107,6 +6235,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 = "valuable" version = "0.1.0" @@ -6164,9 +6304,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6175,24 +6315,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6202,9 +6342,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6212,28 +6352,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6453,9 +6593,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -6470,6 +6610,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" @@ -6514,6 +6666,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -6532,7 +6708,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure 0.13.1", ] [[package]] @@ -6552,7 +6749,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.87", +] + +[[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.87", ] [[package]] diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/Cargo.toml b/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/Cargo.toml index 5ea06186b..06b1d4a8a 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/Cargo.toml +++ b/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/Cargo.toml @@ -15,9 +15,6 @@ no-entrypoint = [] no-idl = [] no-log-ix-name = [] idl-build = ["anchor-lang/idl-build"] -trident-fuzzing = ["dep:trident-fuzz"] [dependencies] -trident-derive-accounts-snapshots = { path = "../../../../../crates/fuzz/derive/accounts_snapshots" } -trident-fuzz = { path = "../../../../../crates/fuzz", optional = true } anchor-lang = "0.30.1" diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/src/lib.rs b/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/src/lib.rs index fbdd2fb80..aba9ce07d 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/src/lib.rs +++ b/examples/fuzz-tests/unchecked-arithmetic-0/programs/unchecked-arithmetic-0/src/lib.rs @@ -2,8 +2,6 @@ use anchor_lang::prelude::*; const MAGIC_NUMBER: u8 = 254; -use trident_derive_accounts_snapshots::AccountsSnapshots; - declare_id!("BM8vocQeC2VuDf1KhbHLsZxTh7owzDNTAkKyZoTxFiUs"); #[program] @@ -38,7 +36,7 @@ pub fn buggy_math_function(input1: u8, input2: u8) -> u8 { input1 / divisor } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Initialize<'info> { #[account(init, payer = user, space = 8 + 40)] pub counter: Account<'info, Counter>, @@ -49,7 +47,7 @@ pub struct Initialize<'info> { pub system_program: Program<'info, System>, } -#[derive(Accounts, AccountsSnapshots)] +#[derive(Accounts)] pub struct Update<'info> { #[account(mut, has_one = authority)] pub counter: Account<'info, Counter>, diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/Cargo.toml b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/Cargo.toml index a8833097c..333abf295 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/Cargo.toml +++ b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/Cargo.toml @@ -15,7 +15,5 @@ assert_matches = "1.4.0" [dependencies.trident-client] path = "../../../../../crates/client" - [dependencies.unchecked-arithmetic-0] path = "../../programs/unchecked-arithmetic-0" -features = ["trident-fuzzing"] diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs index 921b5f6ae..a4865cd5c 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs +++ b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/fuzz_instructions.rs @@ -1,11 +1,6 @@ use solana_sdk::native_token::LAMPORTS_PER_SOL; use trident_client::fuzzing::*; -use unchecked_arithmetic_0::trident_fuzz_initialize_snapshot::InitializeAlias; -use unchecked_arithmetic_0::trident_fuzz_update_snapshot::UpdateAlias; - -type InitializeSnapshot<'info> = InitializeAlias<'info>; -type UpdateSnapshot<'info> = UpdateAlias<'info>; #[derive(Arbitrary, DisplayIx, FuzzTestExecutor)] pub enum FuzzInstruction { Initialize(Initialize), @@ -39,10 +34,9 @@ pub struct UpdateData { pub input1: u8, pub input2: u8, } -impl<'info> IxOps<'info> for Initialize { +impl IxOps for Initialize { type IxData = unchecked_arithmetic_0::instruction::Initialize; type IxAccounts = FuzzAccounts; - type IxSnapshot = InitializeSnapshot<'info>; fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { unchecked_arithmetic_0::ID } @@ -79,10 +73,9 @@ impl<'info> IxOps<'info> for Initialize { Ok((vec![user, counter], acc_meta)) } } -impl<'info> IxOps<'info> for Update { +impl IxOps for Update { type IxData = unchecked_arithmetic_0::instruction::Update; type IxAccounts = FuzzAccounts; - type IxSnapshot = UpdateSnapshot<'info>; fn get_program_id(&self) -> solana_sdk::pubkey::Pubkey { unchecked_arithmetic_0::ID } @@ -131,8 +124,8 @@ pub struct FuzzAccounts { // the user account, just named differently. Therefore, we will use only // the generated user accounts for both 'user' and 'authority account' fields // in this fuzz test. Additionally, there is no need to fuzz the 'system_program' account. - user: AccountsStorage, - counter: AccountsStorage, + user: AccountsStorage, + counter: AccountsStorage, // authority: AccountsStorage, // system_program: AccountsStorage, } diff --git a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs index f039188f0..8eba1bfd6 100644 --- a/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs +++ b/examples/fuzz-tests/unchecked-arithmetic-0/trident-tests/fuzz_tests/fuzz_0/test_fuzz.rs @@ -8,21 +8,21 @@ use unchecked_arithmetic_0::entry as entry_unchecked_arithmetic_0; use unchecked_arithmetic_0::ID as PROGRAM_ID_UNCHECKED_ARITHMETIC_0; const PROGRAM_NAME_UNCHECKED_ARITHMETIC_0: &str = "unchecked_arithmetic_0"; - -struct MyFuzzData; - -impl FuzzDataBuilder for MyFuzzData { - fn pre_ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let init = FuzzInstruction::Initialize(Initialize::arbitrary(u)?); - Ok(vec![init]) - } - fn ixs(u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - let update = FuzzInstruction::Update(Update::arbitrary(u)?); - Ok(vec![update]) - } - fn post_ixs(_u: &mut arbitrary::Unstructured) -> arbitrary::Result> { - Ok(vec![]) - } +struct InstructionsSequence; +/// Define instruction sequences for invocation. +/// `pre` runs at the start, `middle` in the middle, and `post` at the end. +/// For example, to call `InitializeFn`, `UpdateFn` and then `WithdrawFn` during +/// each fuzzing iteration: +/// ``` +/// impl FuzzDataBuilder for InstructionsSequence { +/// pre_sequence!(InitializeFn,UpdateFn); +/// middle_sequence!(WithdrawFn); +///} +/// ``` +/// For more details, see: https://ackee.xyz/trident/docs/dev/features/instructions-sequences/#instructions-sequences +impl FuzzDataBuilder for InstructionsSequence { + pre_sequence!(Initialize); + middle_sequence!(Update); } fn fuzz_iteration + std::fmt::Display, U>( @@ -44,5 +44,5 @@ fn fuzz_iteration + std::fmt::Display, U>( fn main() { let config = Config::new(); - fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : MyFuzzData | { fuzz_iteration (fuzz_data , & config) ; }); + fuzz_trident ! (fuzz_ix : FuzzInstruction , | fuzz_data : InstructionsSequence | { fuzz_iteration (fuzz_data , & config) ; }); } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 628740b12..1de01fa45 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.79.0" +channel = "1.81.0"