├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── programs └── dex │ ├── Cargo.toml │ └── src │ ├── instructions │ ├── ata.rs │ ├── mod.rs │ ├── pump.rs │ ├── raydium.rs │ └── slot.rs │ ├── lib.rs │ └── processor.rs └── tests ├── Cargo.toml └── src └── main.rs /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.24.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler2" 16 | version = "2.0.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 19 | 20 | [[package]] 21 | name = "aead" 22 | version = "0.5.2" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" 25 | dependencies = [ 26 | "crypto-common", 27 | "generic-array", 28 | ] 29 | 30 | [[package]] 31 | name = "aes" 32 | version = "0.8.4" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" 35 | dependencies = [ 36 | "cfg-if", 37 | "cipher", 38 | "cpufeatures", 39 | ] 40 | 41 | [[package]] 42 | name = "aes-gcm-siv" 43 | version = "0.11.1" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" 46 | dependencies = [ 47 | "aead", 48 | "aes", 49 | "cipher", 50 | "ctr", 51 | "polyval", 52 | "subtle", 53 | "zeroize", 54 | ] 55 | 56 | [[package]] 57 | name = "ahash" 58 | version = "0.8.11" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 61 | dependencies = [ 62 | "cfg-if", 63 | "getrandom 0.2.15", 64 | "once_cell", 65 | "version_check", 66 | "zerocopy 0.7.35", 67 | ] 68 | 69 | [[package]] 70 | name = "aho-corasick" 71 | version = "1.1.3" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 74 | dependencies = [ 75 | "memchr", 76 | ] 77 | 78 | [[package]] 79 | name = "alloc-no-stdlib" 80 | version = "2.0.4" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 83 | 84 | [[package]] 85 | name = "alloc-stdlib" 86 | version = "0.2.2" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 89 | dependencies = [ 90 | "alloc-no-stdlib", 91 | ] 92 | 93 | [[package]] 94 | name = "amm-proxy-contract" 95 | version = "0.1.0" 96 | dependencies = [ 97 | "arrayref", 98 | "solana-program", 99 | ] 100 | 101 | [[package]] 102 | name = "anyhow" 103 | version = "1.0.97" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" 106 | 107 | [[package]] 108 | name = "ark-bn254" 109 | version = "0.4.0" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" 112 | dependencies = [ 113 | "ark-ec", 114 | "ark-ff", 115 | "ark-std", 116 | ] 117 | 118 | [[package]] 119 | name = "ark-ec" 120 | version = "0.4.2" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" 123 | dependencies = [ 124 | "ark-ff", 125 | "ark-poly", 126 | "ark-serialize", 127 | "ark-std", 128 | "derivative", 129 | "hashbrown 0.13.2", 130 | "itertools 0.10.5", 131 | "num-traits", 132 | "zeroize", 133 | ] 134 | 135 | [[package]] 136 | name = "ark-ff" 137 | version = "0.4.2" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" 140 | dependencies = [ 141 | "ark-ff-asm", 142 | "ark-ff-macros", 143 | "ark-serialize", 144 | "ark-std", 145 | "derivative", 146 | "digest 0.10.7", 147 | "itertools 0.10.5", 148 | "num-bigint", 149 | "num-traits", 150 | "paste", 151 | "rustc_version", 152 | "zeroize", 153 | ] 154 | 155 | [[package]] 156 | name = "ark-ff-asm" 157 | version = "0.4.2" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" 160 | dependencies = [ 161 | "quote", 162 | "syn 1.0.109", 163 | ] 164 | 165 | [[package]] 166 | name = "ark-ff-macros" 167 | version = "0.4.2" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" 170 | dependencies = [ 171 | "num-bigint", 172 | "num-traits", 173 | "proc-macro2", 174 | "quote", 175 | "syn 1.0.109", 176 | ] 177 | 178 | [[package]] 179 | name = "ark-poly" 180 | version = "0.4.2" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" 183 | dependencies = [ 184 | "ark-ff", 185 | "ark-serialize", 186 | "ark-std", 187 | "derivative", 188 | "hashbrown 0.13.2", 189 | ] 190 | 191 | [[package]] 192 | name = "ark-serialize" 193 | version = "0.4.2" 194 | source = "registry+https://github.com/rust-lang/crates.io-index" 195 | checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" 196 | dependencies = [ 197 | "ark-serialize-derive", 198 | "ark-std", 199 | "digest 0.10.7", 200 | "num-bigint", 201 | ] 202 | 203 | [[package]] 204 | name = "ark-serialize-derive" 205 | version = "0.4.2" 206 | source = "registry+https://github.com/rust-lang/crates.io-index" 207 | checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" 208 | dependencies = [ 209 | "proc-macro2", 210 | "quote", 211 | "syn 1.0.109", 212 | ] 213 | 214 | [[package]] 215 | name = "ark-std" 216 | version = "0.4.0" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" 219 | dependencies = [ 220 | "num-traits", 221 | "rand 0.8.5", 222 | ] 223 | 224 | [[package]] 225 | name = "arrayref" 226 | version = "0.3.9" 227 | source = "registry+https://github.com/rust-lang/crates.io-index" 228 | checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 229 | 230 | [[package]] 231 | name = "arrayvec" 232 | version = "0.7.6" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 235 | 236 | [[package]] 237 | name = "async-compression" 238 | version = "0.4.22" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64" 241 | dependencies = [ 242 | "brotli", 243 | "flate2", 244 | "futures-core", 245 | "memchr", 246 | "pin-project-lite", 247 | "tokio", 248 | ] 249 | 250 | [[package]] 251 | name = "async-trait" 252 | version = "0.1.88" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" 255 | dependencies = [ 256 | "proc-macro2", 257 | "quote", 258 | "syn 2.0.100", 259 | ] 260 | 261 | [[package]] 262 | name = "atty" 263 | version = "0.2.14" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 266 | dependencies = [ 267 | "hermit-abi", 268 | "libc", 269 | "winapi", 270 | ] 271 | 272 | [[package]] 273 | name = "autocfg" 274 | version = "1.4.0" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 277 | 278 | [[package]] 279 | name = "backtrace" 280 | version = "0.3.74" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" 283 | dependencies = [ 284 | "addr2line", 285 | "cfg-if", 286 | "libc", 287 | "miniz_oxide", 288 | "object", 289 | "rustc-demangle", 290 | "windows-targets 0.52.6", 291 | ] 292 | 293 | [[package]] 294 | name = "base64" 295 | version = "0.12.3" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 298 | 299 | [[package]] 300 | name = "base64" 301 | version = "0.21.7" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 304 | 305 | [[package]] 306 | name = "base64" 307 | version = "0.22.1" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 310 | 311 | [[package]] 312 | name = "bincode" 313 | version = "1.3.3" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 316 | dependencies = [ 317 | "serde", 318 | ] 319 | 320 | [[package]] 321 | name = "bitflags" 322 | version = "1.3.2" 323 | source = "registry+https://github.com/rust-lang/crates.io-index" 324 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 325 | 326 | [[package]] 327 | name = "bitflags" 328 | version = "2.9.0" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 331 | dependencies = [ 332 | "serde", 333 | ] 334 | 335 | [[package]] 336 | name = "blake3" 337 | version = "1.7.0" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "b17679a8d69b6d7fd9cd9801a536cec9fa5e5970b69f9d4747f70b39b031f5e7" 340 | dependencies = [ 341 | "arrayref", 342 | "arrayvec", 343 | "cc", 344 | "cfg-if", 345 | "constant_time_eq", 346 | "digest 0.10.7", 347 | ] 348 | 349 | [[package]] 350 | name = "block-buffer" 351 | version = "0.9.0" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 354 | dependencies = [ 355 | "generic-array", 356 | ] 357 | 358 | [[package]] 359 | name = "block-buffer" 360 | version = "0.10.4" 361 | source = "registry+https://github.com/rust-lang/crates.io-index" 362 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 363 | dependencies = [ 364 | "generic-array", 365 | ] 366 | 367 | [[package]] 368 | name = "borsh" 369 | version = "0.10.4" 370 | source = "registry+https://github.com/rust-lang/crates.io-index" 371 | checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" 372 | dependencies = [ 373 | "borsh-derive 0.10.4", 374 | "hashbrown 0.13.2", 375 | ] 376 | 377 | [[package]] 378 | name = "borsh" 379 | version = "1.5.7" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" 382 | dependencies = [ 383 | "borsh-derive 1.5.7", 384 | "cfg_aliases", 385 | ] 386 | 387 | [[package]] 388 | name = "borsh-derive" 389 | version = "0.10.4" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" 392 | dependencies = [ 393 | "borsh-derive-internal", 394 | "borsh-schema-derive-internal", 395 | "proc-macro-crate 0.1.5", 396 | "proc-macro2", 397 | "syn 1.0.109", 398 | ] 399 | 400 | [[package]] 401 | name = "borsh-derive" 402 | version = "1.5.7" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" 405 | dependencies = [ 406 | "once_cell", 407 | "proc-macro-crate 3.3.0", 408 | "proc-macro2", 409 | "quote", 410 | "syn 2.0.100", 411 | ] 412 | 413 | [[package]] 414 | name = "borsh-derive-internal" 415 | version = "0.10.4" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" 418 | dependencies = [ 419 | "proc-macro2", 420 | "quote", 421 | "syn 1.0.109", 422 | ] 423 | 424 | [[package]] 425 | name = "borsh-schema-derive-internal" 426 | version = "0.10.4" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" 429 | dependencies = [ 430 | "proc-macro2", 431 | "quote", 432 | "syn 1.0.109", 433 | ] 434 | 435 | [[package]] 436 | name = "brotli" 437 | version = "7.0.0" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" 440 | dependencies = [ 441 | "alloc-no-stdlib", 442 | "alloc-stdlib", 443 | "brotli-decompressor", 444 | ] 445 | 446 | [[package]] 447 | name = "brotli-decompressor" 448 | version = "4.0.2" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" 451 | dependencies = [ 452 | "alloc-no-stdlib", 453 | "alloc-stdlib", 454 | ] 455 | 456 | [[package]] 457 | name = "bs58" 458 | version = "0.5.1" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" 461 | dependencies = [ 462 | "tinyvec", 463 | ] 464 | 465 | [[package]] 466 | name = "bumpalo" 467 | version = "3.17.0" 468 | source = "registry+https://github.com/rust-lang/crates.io-index" 469 | checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 470 | 471 | [[package]] 472 | name = "bv" 473 | version = "0.11.1" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" 476 | dependencies = [ 477 | "feature-probe", 478 | "serde", 479 | ] 480 | 481 | [[package]] 482 | name = "bytemuck" 483 | version = "1.22.0" 484 | source = "registry+https://github.com/rust-lang/crates.io-index" 485 | checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" 486 | dependencies = [ 487 | "bytemuck_derive", 488 | ] 489 | 490 | [[package]] 491 | name = "bytemuck_derive" 492 | version = "1.8.1" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" 495 | dependencies = [ 496 | "proc-macro2", 497 | "quote", 498 | "syn 2.0.100", 499 | ] 500 | 501 | [[package]] 502 | name = "byteorder" 503 | version = "1.5.0" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 506 | 507 | [[package]] 508 | name = "bytes" 509 | version = "1.10.1" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 512 | 513 | [[package]] 514 | name = "cc" 515 | version = "1.2.17" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" 518 | dependencies = [ 519 | "jobserver", 520 | "libc", 521 | "shlex", 522 | ] 523 | 524 | [[package]] 525 | name = "cfg-if" 526 | version = "1.0.0" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 529 | 530 | [[package]] 531 | name = "cfg_aliases" 532 | version = "0.2.1" 533 | source = "registry+https://github.com/rust-lang/crates.io-index" 534 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 535 | 536 | [[package]] 537 | name = "cfg_eval" 538 | version = "0.1.2" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" 541 | dependencies = [ 542 | "proc-macro2", 543 | "quote", 544 | "syn 2.0.100", 545 | ] 546 | 547 | [[package]] 548 | name = "chrono" 549 | version = "0.4.40" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" 552 | dependencies = [ 553 | "num-traits", 554 | ] 555 | 556 | [[package]] 557 | name = "cipher" 558 | version = "0.4.4" 559 | source = "registry+https://github.com/rust-lang/crates.io-index" 560 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 561 | dependencies = [ 562 | "crypto-common", 563 | "inout", 564 | ] 565 | 566 | [[package]] 567 | name = "console" 568 | version = "0.15.11" 569 | source = "registry+https://github.com/rust-lang/crates.io-index" 570 | checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" 571 | dependencies = [ 572 | "encode_unicode", 573 | "libc", 574 | "once_cell", 575 | "unicode-width", 576 | "windows-sys 0.59.0", 577 | ] 578 | 579 | [[package]] 580 | name = "console_error_panic_hook" 581 | version = "0.1.7" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 584 | dependencies = [ 585 | "cfg-if", 586 | "wasm-bindgen", 587 | ] 588 | 589 | [[package]] 590 | name = "console_log" 591 | version = "0.2.2" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" 594 | dependencies = [ 595 | "log", 596 | "web-sys", 597 | ] 598 | 599 | [[package]] 600 | name = "constant_time_eq" 601 | version = "0.3.1" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" 604 | 605 | [[package]] 606 | name = "core-foundation" 607 | version = "0.9.4" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 610 | dependencies = [ 611 | "core-foundation-sys", 612 | "libc", 613 | ] 614 | 615 | [[package]] 616 | name = "core-foundation-sys" 617 | version = "0.8.7" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 620 | 621 | [[package]] 622 | name = "cpufeatures" 623 | version = "0.2.17" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 626 | dependencies = [ 627 | "libc", 628 | ] 629 | 630 | [[package]] 631 | name = "crc32fast" 632 | version = "1.4.2" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 635 | dependencies = [ 636 | "cfg-if", 637 | ] 638 | 639 | [[package]] 640 | name = "crunchy" 641 | version = "0.2.3" 642 | source = "registry+https://github.com/rust-lang/crates.io-index" 643 | checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" 644 | 645 | [[package]] 646 | name = "crypto-common" 647 | version = "0.1.6" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 650 | dependencies = [ 651 | "generic-array", 652 | "rand_core 0.6.4", 653 | "typenum", 654 | ] 655 | 656 | [[package]] 657 | name = "crypto-mac" 658 | version = "0.8.0" 659 | source = "registry+https://github.com/rust-lang/crates.io-index" 660 | checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" 661 | dependencies = [ 662 | "generic-array", 663 | "subtle", 664 | ] 665 | 666 | [[package]] 667 | name = "ctr" 668 | version = "0.9.2" 669 | source = "registry+https://github.com/rust-lang/crates.io-index" 670 | checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" 671 | dependencies = [ 672 | "cipher", 673 | ] 674 | 675 | [[package]] 676 | name = "curve25519-dalek" 677 | version = "3.2.0" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" 680 | dependencies = [ 681 | "byteorder", 682 | "digest 0.9.0", 683 | "rand_core 0.5.1", 684 | "subtle", 685 | "zeroize", 686 | ] 687 | 688 | [[package]] 689 | name = "curve25519-dalek" 690 | version = "4.1.3" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" 693 | dependencies = [ 694 | "cfg-if", 695 | "cpufeatures", 696 | "curve25519-dalek-derive", 697 | "digest 0.10.7", 698 | "fiat-crypto", 699 | "rand_core 0.6.4", 700 | "rustc_version", 701 | "serde", 702 | "subtle", 703 | "zeroize", 704 | ] 705 | 706 | [[package]] 707 | name = "curve25519-dalek-derive" 708 | version = "0.1.1" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" 711 | dependencies = [ 712 | "proc-macro2", 713 | "quote", 714 | "syn 2.0.100", 715 | ] 716 | 717 | [[package]] 718 | name = "darling" 719 | version = "0.20.10" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" 722 | dependencies = [ 723 | "darling_core", 724 | "darling_macro", 725 | ] 726 | 727 | [[package]] 728 | name = "darling_core" 729 | version = "0.20.10" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" 732 | dependencies = [ 733 | "fnv", 734 | "ident_case", 735 | "proc-macro2", 736 | "quote", 737 | "strsim", 738 | "syn 2.0.100", 739 | ] 740 | 741 | [[package]] 742 | name = "darling_macro" 743 | version = "0.20.10" 744 | source = "registry+https://github.com/rust-lang/crates.io-index" 745 | checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" 746 | dependencies = [ 747 | "darling_core", 748 | "quote", 749 | "syn 2.0.100", 750 | ] 751 | 752 | [[package]] 753 | name = "derivation-path" 754 | version = "0.2.0" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" 757 | 758 | [[package]] 759 | name = "derivative" 760 | version = "2.2.0" 761 | source = "registry+https://github.com/rust-lang/crates.io-index" 762 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 763 | dependencies = [ 764 | "proc-macro2", 765 | "quote", 766 | "syn 1.0.109", 767 | ] 768 | 769 | [[package]] 770 | name = "digest" 771 | version = "0.9.0" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 774 | dependencies = [ 775 | "generic-array", 776 | ] 777 | 778 | [[package]] 779 | name = "digest" 780 | version = "0.10.7" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 783 | dependencies = [ 784 | "block-buffer 0.10.4", 785 | "crypto-common", 786 | "subtle", 787 | ] 788 | 789 | [[package]] 790 | name = "displaydoc" 791 | version = "0.2.5" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 794 | dependencies = [ 795 | "proc-macro2", 796 | "quote", 797 | "syn 2.0.100", 798 | ] 799 | 800 | [[package]] 801 | name = "dotenvy" 802 | version = "0.15.7" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 805 | 806 | [[package]] 807 | name = "ed25519" 808 | version = "1.5.3" 809 | source = "registry+https://github.com/rust-lang/crates.io-index" 810 | checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" 811 | dependencies = [ 812 | "signature", 813 | ] 814 | 815 | [[package]] 816 | name = "ed25519-dalek" 817 | version = "1.0.1" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" 820 | dependencies = [ 821 | "curve25519-dalek 3.2.0", 822 | "ed25519", 823 | "rand 0.7.3", 824 | "serde", 825 | "sha2 0.9.9", 826 | "zeroize", 827 | ] 828 | 829 | [[package]] 830 | name = "ed25519-dalek-bip32" 831 | version = "0.2.0" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" 834 | dependencies = [ 835 | "derivation-path", 836 | "ed25519-dalek", 837 | "hmac 0.12.1", 838 | "sha2 0.10.8", 839 | ] 840 | 841 | [[package]] 842 | name = "either" 843 | version = "1.15.0" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 846 | 847 | [[package]] 848 | name = "encode_unicode" 849 | version = "1.0.0" 850 | source = "registry+https://github.com/rust-lang/crates.io-index" 851 | checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" 852 | 853 | [[package]] 854 | name = "encoding_rs" 855 | version = "0.8.35" 856 | source = "registry+https://github.com/rust-lang/crates.io-index" 857 | checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 858 | dependencies = [ 859 | "cfg-if", 860 | ] 861 | 862 | [[package]] 863 | name = "env_logger" 864 | version = "0.9.3" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" 867 | dependencies = [ 868 | "atty", 869 | "humantime", 870 | "log", 871 | "regex", 872 | "termcolor", 873 | ] 874 | 875 | [[package]] 876 | name = "equivalent" 877 | version = "1.0.2" 878 | source = "registry+https://github.com/rust-lang/crates.io-index" 879 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 880 | 881 | [[package]] 882 | name = "feature-probe" 883 | version = "0.1.1" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" 886 | 887 | [[package]] 888 | name = "fiat-crypto" 889 | version = "0.2.9" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 892 | 893 | [[package]] 894 | name = "five8_const" 895 | version = "0.1.4" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" 898 | dependencies = [ 899 | "five8_core", 900 | ] 901 | 902 | [[package]] 903 | name = "five8_core" 904 | version = "0.1.2" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" 907 | 908 | [[package]] 909 | name = "flate2" 910 | version = "1.1.0" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" 913 | dependencies = [ 914 | "crc32fast", 915 | "miniz_oxide", 916 | ] 917 | 918 | [[package]] 919 | name = "fnv" 920 | version = "1.0.7" 921 | source = "registry+https://github.com/rust-lang/crates.io-index" 922 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 923 | 924 | [[package]] 925 | name = "foreign-types" 926 | version = "0.3.2" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 929 | dependencies = [ 930 | "foreign-types-shared", 931 | ] 932 | 933 | [[package]] 934 | name = "foreign-types-shared" 935 | version = "0.1.1" 936 | source = "registry+https://github.com/rust-lang/crates.io-index" 937 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 938 | 939 | [[package]] 940 | name = "form_urlencoded" 941 | version = "1.2.1" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 944 | dependencies = [ 945 | "percent-encoding", 946 | ] 947 | 948 | [[package]] 949 | name = "futures" 950 | version = "0.3.31" 951 | source = "registry+https://github.com/rust-lang/crates.io-index" 952 | checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 953 | dependencies = [ 954 | "futures-channel", 955 | "futures-core", 956 | "futures-executor", 957 | "futures-io", 958 | "futures-sink", 959 | "futures-task", 960 | "futures-util", 961 | ] 962 | 963 | [[package]] 964 | name = "futures-channel" 965 | version = "0.3.31" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 968 | dependencies = [ 969 | "futures-core", 970 | "futures-sink", 971 | ] 972 | 973 | [[package]] 974 | name = "futures-core" 975 | version = "0.3.31" 976 | source = "registry+https://github.com/rust-lang/crates.io-index" 977 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 978 | 979 | [[package]] 980 | name = "futures-executor" 981 | version = "0.3.31" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 984 | dependencies = [ 985 | "futures-core", 986 | "futures-task", 987 | "futures-util", 988 | ] 989 | 990 | [[package]] 991 | name = "futures-io" 992 | version = "0.3.31" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 995 | 996 | [[package]] 997 | name = "futures-macro" 998 | version = "0.3.31" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 1001 | dependencies = [ 1002 | "proc-macro2", 1003 | "quote", 1004 | "syn 2.0.100", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "futures-sink" 1009 | version = "0.3.31" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 1012 | 1013 | [[package]] 1014 | name = "futures-task" 1015 | version = "0.3.31" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1018 | 1019 | [[package]] 1020 | name = "futures-util" 1021 | version = "0.3.31" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 1024 | dependencies = [ 1025 | "futures-channel", 1026 | "futures-core", 1027 | "futures-io", 1028 | "futures-macro", 1029 | "futures-sink", 1030 | "futures-task", 1031 | "memchr", 1032 | "pin-project-lite", 1033 | "pin-utils", 1034 | "slab", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "generic-array" 1039 | version = "0.14.7" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1042 | dependencies = [ 1043 | "typenum", 1044 | "version_check", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "getrandom" 1049 | version = "0.1.16" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 1052 | dependencies = [ 1053 | "cfg-if", 1054 | "js-sys", 1055 | "libc", 1056 | "wasi 0.9.0+wasi-snapshot-preview1", 1057 | "wasm-bindgen", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "getrandom" 1062 | version = "0.2.15" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1065 | dependencies = [ 1066 | "cfg-if", 1067 | "js-sys", 1068 | "libc", 1069 | "wasi 0.11.0+wasi-snapshot-preview1", 1070 | "wasm-bindgen", 1071 | ] 1072 | 1073 | [[package]] 1074 | name = "getrandom" 1075 | version = "0.3.2" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" 1078 | dependencies = [ 1079 | "cfg-if", 1080 | "libc", 1081 | "r-efi", 1082 | "wasi 0.14.2+wasi-0.2.4", 1083 | ] 1084 | 1085 | [[package]] 1086 | name = "gimli" 1087 | version = "0.31.1" 1088 | source = "registry+https://github.com/rust-lang/crates.io-index" 1089 | checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 1090 | 1091 | [[package]] 1092 | name = "h2" 1093 | version = "0.3.26" 1094 | source = "registry+https://github.com/rust-lang/crates.io-index" 1095 | checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 1096 | dependencies = [ 1097 | "bytes", 1098 | "fnv", 1099 | "futures-core", 1100 | "futures-sink", 1101 | "futures-util", 1102 | "http", 1103 | "indexmap", 1104 | "slab", 1105 | "tokio", 1106 | "tokio-util", 1107 | "tracing", 1108 | ] 1109 | 1110 | [[package]] 1111 | name = "hashbrown" 1112 | version = "0.13.2" 1113 | source = "registry+https://github.com/rust-lang/crates.io-index" 1114 | checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 1115 | dependencies = [ 1116 | "ahash", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "hashbrown" 1121 | version = "0.15.2" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 1124 | 1125 | [[package]] 1126 | name = "hermit-abi" 1127 | version = "0.1.19" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 1130 | dependencies = [ 1131 | "libc", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "hmac" 1136 | version = "0.8.1" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" 1139 | dependencies = [ 1140 | "crypto-mac", 1141 | "digest 0.9.0", 1142 | ] 1143 | 1144 | [[package]] 1145 | name = "hmac" 1146 | version = "0.12.1" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1149 | dependencies = [ 1150 | "digest 0.10.7", 1151 | ] 1152 | 1153 | [[package]] 1154 | name = "hmac-drbg" 1155 | version = "0.3.0" 1156 | source = "registry+https://github.com/rust-lang/crates.io-index" 1157 | checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" 1158 | dependencies = [ 1159 | "digest 0.9.0", 1160 | "generic-array", 1161 | "hmac 0.8.1", 1162 | ] 1163 | 1164 | [[package]] 1165 | name = "http" 1166 | version = "0.2.12" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 1169 | dependencies = [ 1170 | "bytes", 1171 | "fnv", 1172 | "itoa", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "http-body" 1177 | version = "0.4.6" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 1180 | dependencies = [ 1181 | "bytes", 1182 | "http", 1183 | "pin-project-lite", 1184 | ] 1185 | 1186 | [[package]] 1187 | name = "httparse" 1188 | version = "1.10.1" 1189 | source = "registry+https://github.com/rust-lang/crates.io-index" 1190 | checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 1191 | 1192 | [[package]] 1193 | name = "httpdate" 1194 | version = "1.0.3" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1197 | 1198 | [[package]] 1199 | name = "humantime" 1200 | version = "2.2.0" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" 1203 | 1204 | [[package]] 1205 | name = "hyper" 1206 | version = "0.14.32" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" 1209 | dependencies = [ 1210 | "bytes", 1211 | "futures-channel", 1212 | "futures-core", 1213 | "futures-util", 1214 | "h2", 1215 | "http", 1216 | "http-body", 1217 | "httparse", 1218 | "httpdate", 1219 | "itoa", 1220 | "pin-project-lite", 1221 | "socket2", 1222 | "tokio", 1223 | "tower-service", 1224 | "tracing", 1225 | "want", 1226 | ] 1227 | 1228 | [[package]] 1229 | name = "hyper-rustls" 1230 | version = "0.24.2" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 1233 | dependencies = [ 1234 | "futures-util", 1235 | "http", 1236 | "hyper", 1237 | "rustls", 1238 | "tokio", 1239 | "tokio-rustls", 1240 | ] 1241 | 1242 | [[package]] 1243 | name = "icu_collections" 1244 | version = "1.5.0" 1245 | source = "registry+https://github.com/rust-lang/crates.io-index" 1246 | checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" 1247 | dependencies = [ 1248 | "displaydoc", 1249 | "yoke", 1250 | "zerofrom", 1251 | "zerovec", 1252 | ] 1253 | 1254 | [[package]] 1255 | name = "icu_locid" 1256 | version = "1.5.0" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" 1259 | dependencies = [ 1260 | "displaydoc", 1261 | "litemap", 1262 | "tinystr", 1263 | "writeable", 1264 | "zerovec", 1265 | ] 1266 | 1267 | [[package]] 1268 | name = "icu_locid_transform" 1269 | version = "1.5.0" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" 1272 | dependencies = [ 1273 | "displaydoc", 1274 | "icu_locid", 1275 | "icu_locid_transform_data", 1276 | "icu_provider", 1277 | "tinystr", 1278 | "zerovec", 1279 | ] 1280 | 1281 | [[package]] 1282 | name = "icu_locid_transform_data" 1283 | version = "1.5.1" 1284 | source = "registry+https://github.com/rust-lang/crates.io-index" 1285 | checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" 1286 | 1287 | [[package]] 1288 | name = "icu_normalizer" 1289 | version = "1.5.0" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" 1292 | dependencies = [ 1293 | "displaydoc", 1294 | "icu_collections", 1295 | "icu_normalizer_data", 1296 | "icu_properties", 1297 | "icu_provider", 1298 | "smallvec", 1299 | "utf16_iter", 1300 | "utf8_iter", 1301 | "write16", 1302 | "zerovec", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "icu_normalizer_data" 1307 | version = "1.5.1" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" 1310 | 1311 | [[package]] 1312 | name = "icu_properties" 1313 | version = "1.5.1" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" 1316 | dependencies = [ 1317 | "displaydoc", 1318 | "icu_collections", 1319 | "icu_locid_transform", 1320 | "icu_properties_data", 1321 | "icu_provider", 1322 | "tinystr", 1323 | "zerovec", 1324 | ] 1325 | 1326 | [[package]] 1327 | name = "icu_properties_data" 1328 | version = "1.5.1" 1329 | source = "registry+https://github.com/rust-lang/crates.io-index" 1330 | checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" 1331 | 1332 | [[package]] 1333 | name = "icu_provider" 1334 | version = "1.5.0" 1335 | source = "registry+https://github.com/rust-lang/crates.io-index" 1336 | checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" 1337 | dependencies = [ 1338 | "displaydoc", 1339 | "icu_locid", 1340 | "icu_provider_macros", 1341 | "stable_deref_trait", 1342 | "tinystr", 1343 | "writeable", 1344 | "yoke", 1345 | "zerofrom", 1346 | "zerovec", 1347 | ] 1348 | 1349 | [[package]] 1350 | name = "icu_provider_macros" 1351 | version = "1.5.0" 1352 | source = "registry+https://github.com/rust-lang/crates.io-index" 1353 | checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" 1354 | dependencies = [ 1355 | "proc-macro2", 1356 | "quote", 1357 | "syn 2.0.100", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "ident_case" 1362 | version = "1.0.1" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1365 | 1366 | [[package]] 1367 | name = "idna" 1368 | version = "1.0.3" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 1371 | dependencies = [ 1372 | "idna_adapter", 1373 | "smallvec", 1374 | "utf8_iter", 1375 | ] 1376 | 1377 | [[package]] 1378 | name = "idna_adapter" 1379 | version = "1.2.0" 1380 | source = "registry+https://github.com/rust-lang/crates.io-index" 1381 | checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" 1382 | dependencies = [ 1383 | "icu_normalizer", 1384 | "icu_properties", 1385 | ] 1386 | 1387 | [[package]] 1388 | name = "indexmap" 1389 | version = "2.8.0" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" 1392 | dependencies = [ 1393 | "equivalent", 1394 | "hashbrown 0.15.2", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "indicatif" 1399 | version = "0.17.11" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" 1402 | dependencies = [ 1403 | "console", 1404 | "number_prefix", 1405 | "portable-atomic", 1406 | "unicode-width", 1407 | "web-time", 1408 | ] 1409 | 1410 | [[package]] 1411 | name = "inout" 1412 | version = "0.1.4" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" 1415 | dependencies = [ 1416 | "generic-array", 1417 | ] 1418 | 1419 | [[package]] 1420 | name = "ipnet" 1421 | version = "2.11.0" 1422 | source = "registry+https://github.com/rust-lang/crates.io-index" 1423 | checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 1424 | 1425 | [[package]] 1426 | name = "itertools" 1427 | version = "0.10.5" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1430 | dependencies = [ 1431 | "either", 1432 | ] 1433 | 1434 | [[package]] 1435 | name = "itertools" 1436 | version = "0.12.1" 1437 | source = "registry+https://github.com/rust-lang/crates.io-index" 1438 | checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 1439 | dependencies = [ 1440 | "either", 1441 | ] 1442 | 1443 | [[package]] 1444 | name = "itoa" 1445 | version = "1.0.15" 1446 | source = "registry+https://github.com/rust-lang/crates.io-index" 1447 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 1448 | 1449 | [[package]] 1450 | name = "jobserver" 1451 | version = "0.1.32" 1452 | source = "registry+https://github.com/rust-lang/crates.io-index" 1453 | checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" 1454 | dependencies = [ 1455 | "libc", 1456 | ] 1457 | 1458 | [[package]] 1459 | name = "js-sys" 1460 | version = "0.3.77" 1461 | source = "registry+https://github.com/rust-lang/crates.io-index" 1462 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 1463 | dependencies = [ 1464 | "once_cell", 1465 | "wasm-bindgen", 1466 | ] 1467 | 1468 | [[package]] 1469 | name = "jsonrpc-core" 1470 | version = "18.0.0" 1471 | source = "registry+https://github.com/rust-lang/crates.io-index" 1472 | checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" 1473 | dependencies = [ 1474 | "futures", 1475 | "futures-executor", 1476 | "futures-util", 1477 | "log", 1478 | "serde", 1479 | "serde_derive", 1480 | "serde_json", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "keccak" 1485 | version = "0.1.5" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" 1488 | dependencies = [ 1489 | "cpufeatures", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "lazy_static" 1494 | version = "1.5.0" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 1497 | 1498 | [[package]] 1499 | name = "libc" 1500 | version = "0.2.171" 1501 | source = "registry+https://github.com/rust-lang/crates.io-index" 1502 | checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" 1503 | 1504 | [[package]] 1505 | name = "libsecp256k1" 1506 | version = "0.6.0" 1507 | source = "registry+https://github.com/rust-lang/crates.io-index" 1508 | checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" 1509 | dependencies = [ 1510 | "arrayref", 1511 | "base64 0.12.3", 1512 | "digest 0.9.0", 1513 | "hmac-drbg", 1514 | "libsecp256k1-core", 1515 | "libsecp256k1-gen-ecmult", 1516 | "libsecp256k1-gen-genmult", 1517 | "rand 0.7.3", 1518 | "serde", 1519 | "sha2 0.9.9", 1520 | "typenum", 1521 | ] 1522 | 1523 | [[package]] 1524 | name = "libsecp256k1-core" 1525 | version = "0.2.2" 1526 | source = "registry+https://github.com/rust-lang/crates.io-index" 1527 | checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" 1528 | dependencies = [ 1529 | "crunchy", 1530 | "digest 0.9.0", 1531 | "subtle", 1532 | ] 1533 | 1534 | [[package]] 1535 | name = "libsecp256k1-gen-ecmult" 1536 | version = "0.2.1" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" 1539 | dependencies = [ 1540 | "libsecp256k1-core", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "libsecp256k1-gen-genmult" 1545 | version = "0.2.1" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" 1548 | dependencies = [ 1549 | "libsecp256k1-core", 1550 | ] 1551 | 1552 | [[package]] 1553 | name = "litemap" 1554 | version = "0.7.5" 1555 | source = "registry+https://github.com/rust-lang/crates.io-index" 1556 | checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" 1557 | 1558 | [[package]] 1559 | name = "lock_api" 1560 | version = "0.4.12" 1561 | source = "registry+https://github.com/rust-lang/crates.io-index" 1562 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 1563 | dependencies = [ 1564 | "autocfg", 1565 | "scopeguard", 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "log" 1570 | version = "0.4.27" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 1573 | 1574 | [[package]] 1575 | name = "memchr" 1576 | version = "2.7.4" 1577 | source = "registry+https://github.com/rust-lang/crates.io-index" 1578 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 1579 | 1580 | [[package]] 1581 | name = "memmap2" 1582 | version = "0.5.10" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" 1585 | dependencies = [ 1586 | "libc", 1587 | ] 1588 | 1589 | [[package]] 1590 | name = "memoffset" 1591 | version = "0.9.1" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 1594 | dependencies = [ 1595 | "autocfg", 1596 | ] 1597 | 1598 | [[package]] 1599 | name = "merlin" 1600 | version = "3.0.0" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" 1603 | dependencies = [ 1604 | "byteorder", 1605 | "keccak", 1606 | "rand_core 0.6.4", 1607 | "zeroize", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "mime" 1612 | version = "0.3.17" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1615 | 1616 | [[package]] 1617 | name = "mime_guess" 1618 | version = "2.0.5" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 1621 | dependencies = [ 1622 | "mime", 1623 | "unicase", 1624 | ] 1625 | 1626 | [[package]] 1627 | name = "miniz_oxide" 1628 | version = "0.8.5" 1629 | source = "registry+https://github.com/rust-lang/crates.io-index" 1630 | checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" 1631 | dependencies = [ 1632 | "adler2", 1633 | ] 1634 | 1635 | [[package]] 1636 | name = "mio" 1637 | version = "1.0.3" 1638 | source = "registry+https://github.com/rust-lang/crates.io-index" 1639 | checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" 1640 | dependencies = [ 1641 | "libc", 1642 | "wasi 0.11.0+wasi-snapshot-preview1", 1643 | "windows-sys 0.52.0", 1644 | ] 1645 | 1646 | [[package]] 1647 | name = "num-bigint" 1648 | version = "0.4.6" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 1651 | dependencies = [ 1652 | "num-integer", 1653 | "num-traits", 1654 | ] 1655 | 1656 | [[package]] 1657 | name = "num-derive" 1658 | version = "0.4.2" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 1661 | dependencies = [ 1662 | "proc-macro2", 1663 | "quote", 1664 | "syn 2.0.100", 1665 | ] 1666 | 1667 | [[package]] 1668 | name = "num-integer" 1669 | version = "0.1.46" 1670 | source = "registry+https://github.com/rust-lang/crates.io-index" 1671 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 1672 | dependencies = [ 1673 | "num-traits", 1674 | ] 1675 | 1676 | [[package]] 1677 | name = "num-traits" 1678 | version = "0.2.19" 1679 | source = "registry+https://github.com/rust-lang/crates.io-index" 1680 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1681 | dependencies = [ 1682 | "autocfg", 1683 | ] 1684 | 1685 | [[package]] 1686 | name = "num_enum" 1687 | version = "0.7.3" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" 1690 | dependencies = [ 1691 | "num_enum_derive", 1692 | ] 1693 | 1694 | [[package]] 1695 | name = "num_enum_derive" 1696 | version = "0.7.3" 1697 | source = "registry+https://github.com/rust-lang/crates.io-index" 1698 | checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" 1699 | dependencies = [ 1700 | "proc-macro-crate 3.3.0", 1701 | "proc-macro2", 1702 | "quote", 1703 | "syn 2.0.100", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "number_prefix" 1708 | version = "0.4.0" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" 1711 | 1712 | [[package]] 1713 | name = "object" 1714 | version = "0.36.7" 1715 | source = "registry+https://github.com/rust-lang/crates.io-index" 1716 | checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 1717 | dependencies = [ 1718 | "memchr", 1719 | ] 1720 | 1721 | [[package]] 1722 | name = "once_cell" 1723 | version = "1.21.1" 1724 | source = "registry+https://github.com/rust-lang/crates.io-index" 1725 | checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" 1726 | 1727 | [[package]] 1728 | name = "opaque-debug" 1729 | version = "0.3.1" 1730 | source = "registry+https://github.com/rust-lang/crates.io-index" 1731 | checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" 1732 | 1733 | [[package]] 1734 | name = "openssl" 1735 | version = "0.10.71" 1736 | source = "registry+https://github.com/rust-lang/crates.io-index" 1737 | checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" 1738 | dependencies = [ 1739 | "bitflags 2.9.0", 1740 | "cfg-if", 1741 | "foreign-types", 1742 | "libc", 1743 | "once_cell", 1744 | "openssl-macros", 1745 | "openssl-sys", 1746 | ] 1747 | 1748 | [[package]] 1749 | name = "openssl-macros" 1750 | version = "0.1.1" 1751 | source = "registry+https://github.com/rust-lang/crates.io-index" 1752 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1753 | dependencies = [ 1754 | "proc-macro2", 1755 | "quote", 1756 | "syn 2.0.100", 1757 | ] 1758 | 1759 | [[package]] 1760 | name = "openssl-sys" 1761 | version = "0.9.106" 1762 | source = "registry+https://github.com/rust-lang/crates.io-index" 1763 | checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" 1764 | dependencies = [ 1765 | "cc", 1766 | "libc", 1767 | "pkg-config", 1768 | "vcpkg", 1769 | ] 1770 | 1771 | [[package]] 1772 | name = "parking_lot" 1773 | version = "0.12.3" 1774 | source = "registry+https://github.com/rust-lang/crates.io-index" 1775 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 1776 | dependencies = [ 1777 | "lock_api", 1778 | "parking_lot_core", 1779 | ] 1780 | 1781 | [[package]] 1782 | name = "parking_lot_core" 1783 | version = "0.9.10" 1784 | source = "registry+https://github.com/rust-lang/crates.io-index" 1785 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 1786 | dependencies = [ 1787 | "cfg-if", 1788 | "libc", 1789 | "redox_syscall", 1790 | "smallvec", 1791 | "windows-targets 0.52.6", 1792 | ] 1793 | 1794 | [[package]] 1795 | name = "paste" 1796 | version = "1.0.15" 1797 | source = "registry+https://github.com/rust-lang/crates.io-index" 1798 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 1799 | 1800 | [[package]] 1801 | name = "pbkdf2" 1802 | version = "0.11.0" 1803 | source = "registry+https://github.com/rust-lang/crates.io-index" 1804 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 1805 | dependencies = [ 1806 | "digest 0.10.7", 1807 | ] 1808 | 1809 | [[package]] 1810 | name = "percent-encoding" 1811 | version = "2.3.1" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1814 | 1815 | [[package]] 1816 | name = "pin-project-lite" 1817 | version = "0.2.16" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 1820 | 1821 | [[package]] 1822 | name = "pin-utils" 1823 | version = "0.1.0" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1826 | 1827 | [[package]] 1828 | name = "pkg-config" 1829 | version = "0.3.32" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 1832 | 1833 | [[package]] 1834 | name = "polyval" 1835 | version = "0.6.2" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" 1838 | dependencies = [ 1839 | "cfg-if", 1840 | "cpufeatures", 1841 | "opaque-debug", 1842 | "universal-hash", 1843 | ] 1844 | 1845 | [[package]] 1846 | name = "portable-atomic" 1847 | version = "1.11.0" 1848 | source = "registry+https://github.com/rust-lang/crates.io-index" 1849 | checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" 1850 | 1851 | [[package]] 1852 | name = "ppv-lite86" 1853 | version = "0.2.21" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 1856 | dependencies = [ 1857 | "zerocopy 0.8.24", 1858 | ] 1859 | 1860 | [[package]] 1861 | name = "proc-macro-crate" 1862 | version = "0.1.5" 1863 | source = "registry+https://github.com/rust-lang/crates.io-index" 1864 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 1865 | dependencies = [ 1866 | "toml", 1867 | ] 1868 | 1869 | [[package]] 1870 | name = "proc-macro-crate" 1871 | version = "3.3.0" 1872 | source = "registry+https://github.com/rust-lang/crates.io-index" 1873 | checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" 1874 | dependencies = [ 1875 | "toml_edit", 1876 | ] 1877 | 1878 | [[package]] 1879 | name = "proc-macro2" 1880 | version = "1.0.94" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" 1883 | dependencies = [ 1884 | "unicode-ident", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "qstring" 1889 | version = "0.7.2" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" 1892 | dependencies = [ 1893 | "percent-encoding", 1894 | ] 1895 | 1896 | [[package]] 1897 | name = "quote" 1898 | version = "1.0.40" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 1901 | dependencies = [ 1902 | "proc-macro2", 1903 | ] 1904 | 1905 | [[package]] 1906 | name = "r-efi" 1907 | version = "5.2.0" 1908 | source = "registry+https://github.com/rust-lang/crates.io-index" 1909 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 1910 | 1911 | [[package]] 1912 | name = "rand" 1913 | version = "0.7.3" 1914 | source = "registry+https://github.com/rust-lang/crates.io-index" 1915 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1916 | dependencies = [ 1917 | "getrandom 0.1.16", 1918 | "libc", 1919 | "rand_chacha 0.2.2", 1920 | "rand_core 0.5.1", 1921 | "rand_hc", 1922 | ] 1923 | 1924 | [[package]] 1925 | name = "rand" 1926 | version = "0.8.5" 1927 | source = "registry+https://github.com/rust-lang/crates.io-index" 1928 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1929 | dependencies = [ 1930 | "libc", 1931 | "rand_chacha 0.3.1", 1932 | "rand_core 0.6.4", 1933 | ] 1934 | 1935 | [[package]] 1936 | name = "rand" 1937 | version = "0.9.0" 1938 | source = "registry+https://github.com/rust-lang/crates.io-index" 1939 | checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" 1940 | dependencies = [ 1941 | "rand_chacha 0.9.0", 1942 | "rand_core 0.9.3", 1943 | "zerocopy 0.8.24", 1944 | ] 1945 | 1946 | [[package]] 1947 | name = "rand_chacha" 1948 | version = "0.2.2" 1949 | source = "registry+https://github.com/rust-lang/crates.io-index" 1950 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1951 | dependencies = [ 1952 | "ppv-lite86", 1953 | "rand_core 0.5.1", 1954 | ] 1955 | 1956 | [[package]] 1957 | name = "rand_chacha" 1958 | version = "0.3.1" 1959 | source = "registry+https://github.com/rust-lang/crates.io-index" 1960 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1961 | dependencies = [ 1962 | "ppv-lite86", 1963 | "rand_core 0.6.4", 1964 | ] 1965 | 1966 | [[package]] 1967 | name = "rand_chacha" 1968 | version = "0.9.0" 1969 | source = "registry+https://github.com/rust-lang/crates.io-index" 1970 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 1971 | dependencies = [ 1972 | "ppv-lite86", 1973 | "rand_core 0.9.3", 1974 | ] 1975 | 1976 | [[package]] 1977 | name = "rand_core" 1978 | version = "0.5.1" 1979 | source = "registry+https://github.com/rust-lang/crates.io-index" 1980 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1981 | dependencies = [ 1982 | "getrandom 0.1.16", 1983 | ] 1984 | 1985 | [[package]] 1986 | name = "rand_core" 1987 | version = "0.6.4" 1988 | source = "registry+https://github.com/rust-lang/crates.io-index" 1989 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1990 | dependencies = [ 1991 | "getrandom 0.2.15", 1992 | ] 1993 | 1994 | [[package]] 1995 | name = "rand_core" 1996 | version = "0.9.3" 1997 | source = "registry+https://github.com/rust-lang/crates.io-index" 1998 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 1999 | dependencies = [ 2000 | "getrandom 0.3.2", 2001 | ] 2002 | 2003 | [[package]] 2004 | name = "rand_hc" 2005 | version = "0.2.0" 2006 | source = "registry+https://github.com/rust-lang/crates.io-index" 2007 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2008 | dependencies = [ 2009 | "rand_core 0.5.1", 2010 | ] 2011 | 2012 | [[package]] 2013 | name = "redox_syscall" 2014 | version = "0.5.10" 2015 | source = "registry+https://github.com/rust-lang/crates.io-index" 2016 | checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" 2017 | dependencies = [ 2018 | "bitflags 2.9.0", 2019 | ] 2020 | 2021 | [[package]] 2022 | name = "regex" 2023 | version = "1.11.1" 2024 | source = "registry+https://github.com/rust-lang/crates.io-index" 2025 | checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 2026 | dependencies = [ 2027 | "aho-corasick", 2028 | "memchr", 2029 | "regex-automata", 2030 | "regex-syntax", 2031 | ] 2032 | 2033 | [[package]] 2034 | name = "regex-automata" 2035 | version = "0.4.9" 2036 | source = "registry+https://github.com/rust-lang/crates.io-index" 2037 | checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 2038 | dependencies = [ 2039 | "aho-corasick", 2040 | "memchr", 2041 | "regex-syntax", 2042 | ] 2043 | 2044 | [[package]] 2045 | name = "regex-syntax" 2046 | version = "0.8.5" 2047 | source = "registry+https://github.com/rust-lang/crates.io-index" 2048 | checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 2049 | 2050 | [[package]] 2051 | name = "reqwest" 2052 | version = "0.11.27" 2053 | source = "registry+https://github.com/rust-lang/crates.io-index" 2054 | checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 2055 | dependencies = [ 2056 | "async-compression", 2057 | "base64 0.21.7", 2058 | "bytes", 2059 | "encoding_rs", 2060 | "futures-core", 2061 | "futures-util", 2062 | "h2", 2063 | "http", 2064 | "http-body", 2065 | "hyper", 2066 | "hyper-rustls", 2067 | "ipnet", 2068 | "js-sys", 2069 | "log", 2070 | "mime", 2071 | "mime_guess", 2072 | "once_cell", 2073 | "percent-encoding", 2074 | "pin-project-lite", 2075 | "rustls", 2076 | "rustls-pemfile", 2077 | "serde", 2078 | "serde_json", 2079 | "serde_urlencoded", 2080 | "sync_wrapper", 2081 | "system-configuration", 2082 | "tokio", 2083 | "tokio-rustls", 2084 | "tokio-util", 2085 | "tower-service", 2086 | "url", 2087 | "wasm-bindgen", 2088 | "wasm-bindgen-futures", 2089 | "web-sys", 2090 | "webpki-roots", 2091 | "winreg", 2092 | ] 2093 | 2094 | [[package]] 2095 | name = "reqwest-middleware" 2096 | version = "0.2.5" 2097 | source = "registry+https://github.com/rust-lang/crates.io-index" 2098 | checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216" 2099 | dependencies = [ 2100 | "anyhow", 2101 | "async-trait", 2102 | "http", 2103 | "reqwest", 2104 | "serde", 2105 | "task-local-extensions", 2106 | "thiserror 1.0.69", 2107 | ] 2108 | 2109 | [[package]] 2110 | name = "ring" 2111 | version = "0.17.14" 2112 | source = "registry+https://github.com/rust-lang/crates.io-index" 2113 | checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 2114 | dependencies = [ 2115 | "cc", 2116 | "cfg-if", 2117 | "getrandom 0.2.15", 2118 | "libc", 2119 | "untrusted", 2120 | "windows-sys 0.52.0", 2121 | ] 2122 | 2123 | [[package]] 2124 | name = "rustc-demangle" 2125 | version = "0.1.24" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 2128 | 2129 | [[package]] 2130 | name = "rustc_version" 2131 | version = "0.4.1" 2132 | source = "registry+https://github.com/rust-lang/crates.io-index" 2133 | checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 2134 | dependencies = [ 2135 | "semver", 2136 | ] 2137 | 2138 | [[package]] 2139 | name = "rustls" 2140 | version = "0.21.12" 2141 | source = "registry+https://github.com/rust-lang/crates.io-index" 2142 | checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 2143 | dependencies = [ 2144 | "log", 2145 | "ring", 2146 | "rustls-webpki", 2147 | "sct", 2148 | ] 2149 | 2150 | [[package]] 2151 | name = "rustls-pemfile" 2152 | version = "1.0.4" 2153 | source = "registry+https://github.com/rust-lang/crates.io-index" 2154 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 2155 | dependencies = [ 2156 | "base64 0.21.7", 2157 | ] 2158 | 2159 | [[package]] 2160 | name = "rustls-webpki" 2161 | version = "0.101.7" 2162 | source = "registry+https://github.com/rust-lang/crates.io-index" 2163 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 2164 | dependencies = [ 2165 | "ring", 2166 | "untrusted", 2167 | ] 2168 | 2169 | [[package]] 2170 | name = "rustversion" 2171 | version = "1.0.20" 2172 | source = "registry+https://github.com/rust-lang/crates.io-index" 2173 | checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 2174 | 2175 | [[package]] 2176 | name = "ryu" 2177 | version = "1.0.20" 2178 | source = "registry+https://github.com/rust-lang/crates.io-index" 2179 | checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 2180 | 2181 | [[package]] 2182 | name = "scopeguard" 2183 | version = "1.2.0" 2184 | source = "registry+https://github.com/rust-lang/crates.io-index" 2185 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2186 | 2187 | [[package]] 2188 | name = "sct" 2189 | version = "0.7.1" 2190 | source = "registry+https://github.com/rust-lang/crates.io-index" 2191 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 2192 | dependencies = [ 2193 | "ring", 2194 | "untrusted", 2195 | ] 2196 | 2197 | [[package]] 2198 | name = "semver" 2199 | version = "1.0.26" 2200 | source = "registry+https://github.com/rust-lang/crates.io-index" 2201 | checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" 2202 | 2203 | [[package]] 2204 | name = "serde" 2205 | version = "1.0.219" 2206 | source = "registry+https://github.com/rust-lang/crates.io-index" 2207 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 2208 | dependencies = [ 2209 | "serde_derive", 2210 | ] 2211 | 2212 | [[package]] 2213 | name = "serde-big-array" 2214 | version = "0.5.1" 2215 | source = "registry+https://github.com/rust-lang/crates.io-index" 2216 | checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" 2217 | dependencies = [ 2218 | "serde", 2219 | ] 2220 | 2221 | [[package]] 2222 | name = "serde_bytes" 2223 | version = "0.11.17" 2224 | source = "registry+https://github.com/rust-lang/crates.io-index" 2225 | checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" 2226 | dependencies = [ 2227 | "serde", 2228 | ] 2229 | 2230 | [[package]] 2231 | name = "serde_derive" 2232 | version = "1.0.219" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 2235 | dependencies = [ 2236 | "proc-macro2", 2237 | "quote", 2238 | "syn 2.0.100", 2239 | ] 2240 | 2241 | [[package]] 2242 | name = "serde_json" 2243 | version = "1.0.140" 2244 | source = "registry+https://github.com/rust-lang/crates.io-index" 2245 | checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 2246 | dependencies = [ 2247 | "itoa", 2248 | "memchr", 2249 | "ryu", 2250 | "serde", 2251 | ] 2252 | 2253 | [[package]] 2254 | name = "serde_urlencoded" 2255 | version = "0.7.1" 2256 | source = "registry+https://github.com/rust-lang/crates.io-index" 2257 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 2258 | dependencies = [ 2259 | "form_urlencoded", 2260 | "itoa", 2261 | "ryu", 2262 | "serde", 2263 | ] 2264 | 2265 | [[package]] 2266 | name = "serde_with" 2267 | version = "3.12.0" 2268 | source = "registry+https://github.com/rust-lang/crates.io-index" 2269 | checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" 2270 | dependencies = [ 2271 | "serde", 2272 | "serde_derive", 2273 | "serde_with_macros", 2274 | ] 2275 | 2276 | [[package]] 2277 | name = "serde_with_macros" 2278 | version = "3.12.0" 2279 | source = "registry+https://github.com/rust-lang/crates.io-index" 2280 | checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" 2281 | dependencies = [ 2282 | "darling", 2283 | "proc-macro2", 2284 | "quote", 2285 | "syn 2.0.100", 2286 | ] 2287 | 2288 | [[package]] 2289 | name = "sha2" 2290 | version = "0.9.9" 2291 | source = "registry+https://github.com/rust-lang/crates.io-index" 2292 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 2293 | dependencies = [ 2294 | "block-buffer 0.9.0", 2295 | "cfg-if", 2296 | "cpufeatures", 2297 | "digest 0.9.0", 2298 | "opaque-debug", 2299 | ] 2300 | 2301 | [[package]] 2302 | name = "sha2" 2303 | version = "0.10.8" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 2306 | dependencies = [ 2307 | "cfg-if", 2308 | "cpufeatures", 2309 | "digest 0.10.7", 2310 | ] 2311 | 2312 | [[package]] 2313 | name = "sha3" 2314 | version = "0.10.8" 2315 | source = "registry+https://github.com/rust-lang/crates.io-index" 2316 | checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" 2317 | dependencies = [ 2318 | "digest 0.10.7", 2319 | "keccak", 2320 | ] 2321 | 2322 | [[package]] 2323 | name = "shlex" 2324 | version = "1.3.0" 2325 | source = "registry+https://github.com/rust-lang/crates.io-index" 2326 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 2327 | 2328 | [[package]] 2329 | name = "signal-hook" 2330 | version = "0.3.17" 2331 | source = "registry+https://github.com/rust-lang/crates.io-index" 2332 | checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" 2333 | dependencies = [ 2334 | "libc", 2335 | "signal-hook-registry", 2336 | ] 2337 | 2338 | [[package]] 2339 | name = "signal-hook-registry" 2340 | version = "1.4.2" 2341 | source = "registry+https://github.com/rust-lang/crates.io-index" 2342 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 2343 | dependencies = [ 2344 | "libc", 2345 | ] 2346 | 2347 | [[package]] 2348 | name = "signature" 2349 | version = "1.6.4" 2350 | source = "registry+https://github.com/rust-lang/crates.io-index" 2351 | checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 2352 | 2353 | [[package]] 2354 | name = "siphasher" 2355 | version = "0.3.11" 2356 | source = "registry+https://github.com/rust-lang/crates.io-index" 2357 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 2358 | 2359 | [[package]] 2360 | name = "slab" 2361 | version = "0.4.9" 2362 | source = "registry+https://github.com/rust-lang/crates.io-index" 2363 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2364 | dependencies = [ 2365 | "autocfg", 2366 | ] 2367 | 2368 | [[package]] 2369 | name = "smallvec" 2370 | version = "1.14.0" 2371 | source = "registry+https://github.com/rust-lang/crates.io-index" 2372 | checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" 2373 | 2374 | [[package]] 2375 | name = "socket2" 2376 | version = "0.5.8" 2377 | source = "registry+https://github.com/rust-lang/crates.io-index" 2378 | checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 2379 | dependencies = [ 2380 | "libc", 2381 | "windows-sys 0.52.0", 2382 | ] 2383 | 2384 | [[package]] 2385 | name = "solana-account" 2386 | version = "2.2.1" 2387 | source = "registry+https://github.com/rust-lang/crates.io-index" 2388 | checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" 2389 | dependencies = [ 2390 | "bincode", 2391 | "serde", 2392 | "serde_bytes", 2393 | "serde_derive", 2394 | "solana-account-info", 2395 | "solana-clock", 2396 | "solana-instruction", 2397 | "solana-pubkey", 2398 | "solana-sdk-ids", 2399 | "solana-sysvar", 2400 | ] 2401 | 2402 | [[package]] 2403 | name = "solana-account-decoder-client-types" 2404 | version = "2.2.4" 2405 | source = "registry+https://github.com/rust-lang/crates.io-index" 2406 | checksum = "6329c4f360f5173dd6f65022708486cdd24d302841058e2310945a2502284105" 2407 | dependencies = [ 2408 | "base64 0.22.1", 2409 | "bs58", 2410 | "serde", 2411 | "serde_derive", 2412 | "serde_json", 2413 | "solana-account", 2414 | "solana-pubkey", 2415 | "zstd", 2416 | ] 2417 | 2418 | [[package]] 2419 | name = "solana-account-info" 2420 | version = "2.2.1" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "e0c17d606a298a205fae325489fbed88ee6dc4463c111672172327e741c8905d" 2423 | dependencies = [ 2424 | "bincode", 2425 | "serde", 2426 | "solana-program-error", 2427 | "solana-program-memory", 2428 | "solana-pubkey", 2429 | ] 2430 | 2431 | [[package]] 2432 | name = "solana-address-lookup-table-interface" 2433 | version = "2.2.2" 2434 | source = "registry+https://github.com/rust-lang/crates.io-index" 2435 | checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" 2436 | dependencies = [ 2437 | "bincode", 2438 | "bytemuck", 2439 | "serde", 2440 | "serde_derive", 2441 | "solana-clock", 2442 | "solana-instruction", 2443 | "solana-pubkey", 2444 | "solana-sdk-ids", 2445 | "solana-slot-hashes", 2446 | ] 2447 | 2448 | [[package]] 2449 | name = "solana-atomic-u64" 2450 | version = "2.2.1" 2451 | source = "registry+https://github.com/rust-lang/crates.io-index" 2452 | checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" 2453 | dependencies = [ 2454 | "parking_lot", 2455 | ] 2456 | 2457 | [[package]] 2458 | name = "solana-big-mod-exp" 2459 | version = "2.2.1" 2460 | source = "registry+https://github.com/rust-lang/crates.io-index" 2461 | checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" 2462 | dependencies = [ 2463 | "num-bigint", 2464 | "num-traits", 2465 | "solana-define-syscall", 2466 | ] 2467 | 2468 | [[package]] 2469 | name = "solana-bincode" 2470 | version = "2.2.1" 2471 | source = "registry+https://github.com/rust-lang/crates.io-index" 2472 | checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" 2473 | dependencies = [ 2474 | "bincode", 2475 | "serde", 2476 | "solana-instruction", 2477 | ] 2478 | 2479 | [[package]] 2480 | name = "solana-blake3-hasher" 2481 | version = "2.2.1" 2482 | source = "registry+https://github.com/rust-lang/crates.io-index" 2483 | checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" 2484 | dependencies = [ 2485 | "blake3", 2486 | "solana-define-syscall", 2487 | "solana-hash", 2488 | "solana-sanitize", 2489 | ] 2490 | 2491 | [[package]] 2492 | name = "solana-bn254" 2493 | version = "2.2.2" 2494 | source = "registry+https://github.com/rust-lang/crates.io-index" 2495 | checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" 2496 | dependencies = [ 2497 | "ark-bn254", 2498 | "ark-ec", 2499 | "ark-ff", 2500 | "ark-serialize", 2501 | "bytemuck", 2502 | "solana-define-syscall", 2503 | "thiserror 2.0.12", 2504 | ] 2505 | 2506 | [[package]] 2507 | name = "solana-borsh" 2508 | version = "2.2.1" 2509 | source = "registry+https://github.com/rust-lang/crates.io-index" 2510 | checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" 2511 | dependencies = [ 2512 | "borsh 0.10.4", 2513 | "borsh 1.5.7", 2514 | ] 2515 | 2516 | [[package]] 2517 | name = "solana-client-traits" 2518 | version = "2.2.1" 2519 | source = "registry+https://github.com/rust-lang/crates.io-index" 2520 | checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" 2521 | dependencies = [ 2522 | "solana-account", 2523 | "solana-commitment-config", 2524 | "solana-epoch-info", 2525 | "solana-hash", 2526 | "solana-instruction", 2527 | "solana-keypair", 2528 | "solana-message", 2529 | "solana-pubkey", 2530 | "solana-signature", 2531 | "solana-signer", 2532 | "solana-system-interface", 2533 | "solana-transaction", 2534 | "solana-transaction-error", 2535 | ] 2536 | 2537 | [[package]] 2538 | name = "solana-clock" 2539 | version = "2.2.1" 2540 | source = "registry+https://github.com/rust-lang/crates.io-index" 2541 | checksum = "67c2177a1b9fe8326004f1151a5acd124420b737811080b1035df31349e4d892" 2542 | dependencies = [ 2543 | "serde", 2544 | "serde_derive", 2545 | "solana-sdk-ids", 2546 | "solana-sdk-macro", 2547 | "solana-sysvar-id", 2548 | ] 2549 | 2550 | [[package]] 2551 | name = "solana-cluster-type" 2552 | version = "2.2.1" 2553 | source = "registry+https://github.com/rust-lang/crates.io-index" 2554 | checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" 2555 | dependencies = [ 2556 | "serde", 2557 | "serde_derive", 2558 | "solana-hash", 2559 | ] 2560 | 2561 | [[package]] 2562 | name = "solana-commitment-config" 2563 | version = "2.2.1" 2564 | source = "registry+https://github.com/rust-lang/crates.io-index" 2565 | checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" 2566 | dependencies = [ 2567 | "serde", 2568 | "serde_derive", 2569 | ] 2570 | 2571 | [[package]] 2572 | name = "solana-compute-budget-interface" 2573 | version = "2.2.1" 2574 | source = "registry+https://github.com/rust-lang/crates.io-index" 2575 | checksum = "3a5df17b195d312b66dccdde9beec6709766d8230cb4718c4c08854f780d0309" 2576 | dependencies = [ 2577 | "borsh 1.5.7", 2578 | "serde", 2579 | "serde_derive", 2580 | "solana-instruction", 2581 | "solana-sdk-ids", 2582 | ] 2583 | 2584 | [[package]] 2585 | name = "solana-cpi" 2586 | version = "2.2.1" 2587 | source = "registry+https://github.com/rust-lang/crates.io-index" 2588 | checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" 2589 | dependencies = [ 2590 | "solana-account-info", 2591 | "solana-define-syscall", 2592 | "solana-instruction", 2593 | "solana-program-error", 2594 | "solana-pubkey", 2595 | "solana-stable-layout", 2596 | ] 2597 | 2598 | [[package]] 2599 | name = "solana-curve25519" 2600 | version = "2.2.5" 2601 | source = "registry+https://github.com/rust-lang/crates.io-index" 2602 | checksum = "4895e0943c12a322aa0af8d9f9164c7023dee6ecd9f6a70537709b986ffc3aac" 2603 | dependencies = [ 2604 | "bytemuck", 2605 | "bytemuck_derive", 2606 | "curve25519-dalek 4.1.3", 2607 | "solana-define-syscall", 2608 | "subtle", 2609 | "thiserror 2.0.12", 2610 | ] 2611 | 2612 | [[package]] 2613 | name = "solana-decode-error" 2614 | version = "2.2.1" 2615 | source = "registry+https://github.com/rust-lang/crates.io-index" 2616 | checksum = "10a6a6383af236708048f8bd8d03db8ca4ff7baf4a48e5d580f4cce545925470" 2617 | dependencies = [ 2618 | "num-traits", 2619 | ] 2620 | 2621 | [[package]] 2622 | name = "solana-define-syscall" 2623 | version = "2.2.1" 2624 | source = "registry+https://github.com/rust-lang/crates.io-index" 2625 | checksum = "cf784bb2cb3e02cac9801813c30187344228d2ae952534902108f6150573a33d" 2626 | 2627 | [[package]] 2628 | name = "solana-derivation-path" 2629 | version = "2.2.1" 2630 | source = "registry+https://github.com/rust-lang/crates.io-index" 2631 | checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" 2632 | dependencies = [ 2633 | "derivation-path", 2634 | "qstring", 2635 | "uriparse", 2636 | ] 2637 | 2638 | [[package]] 2639 | name = "solana-ed25519-program" 2640 | version = "2.2.1" 2641 | source = "registry+https://github.com/rust-lang/crates.io-index" 2642 | checksum = "0c0c4dfce08d71d8f1e9b7d1b4e2c7101a8109903ad481acbbc1119a73d459f2" 2643 | dependencies = [ 2644 | "bytemuck", 2645 | "bytemuck_derive", 2646 | "ed25519-dalek", 2647 | "solana-feature-set", 2648 | "solana-instruction", 2649 | "solana-precompile-error", 2650 | "solana-sdk-ids", 2651 | ] 2652 | 2653 | [[package]] 2654 | name = "solana-epoch-info" 2655 | version = "2.2.1" 2656 | source = "registry+https://github.com/rust-lang/crates.io-index" 2657 | checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" 2658 | dependencies = [ 2659 | "serde", 2660 | "serde_derive", 2661 | ] 2662 | 2663 | [[package]] 2664 | name = "solana-epoch-rewards" 2665 | version = "2.2.1" 2666 | source = "registry+https://github.com/rust-lang/crates.io-index" 2667 | checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" 2668 | dependencies = [ 2669 | "serde", 2670 | "serde_derive", 2671 | "solana-hash", 2672 | "solana-sdk-ids", 2673 | "solana-sdk-macro", 2674 | "solana-sysvar-id", 2675 | ] 2676 | 2677 | [[package]] 2678 | name = "solana-epoch-rewards-hasher" 2679 | version = "2.2.1" 2680 | source = "registry+https://github.com/rust-lang/crates.io-index" 2681 | checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" 2682 | dependencies = [ 2683 | "siphasher", 2684 | "solana-hash", 2685 | "solana-pubkey", 2686 | ] 2687 | 2688 | [[package]] 2689 | name = "solana-epoch-schedule" 2690 | version = "2.2.1" 2691 | source = "registry+https://github.com/rust-lang/crates.io-index" 2692 | checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" 2693 | dependencies = [ 2694 | "serde", 2695 | "serde_derive", 2696 | "solana-sdk-ids", 2697 | "solana-sdk-macro", 2698 | "solana-sysvar-id", 2699 | ] 2700 | 2701 | [[package]] 2702 | name = "solana-example-mocks" 2703 | version = "2.2.1" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" 2706 | dependencies = [ 2707 | "serde", 2708 | "serde_derive", 2709 | "solana-address-lookup-table-interface", 2710 | "solana-clock", 2711 | "solana-hash", 2712 | "solana-instruction", 2713 | "solana-keccak-hasher", 2714 | "solana-message", 2715 | "solana-nonce", 2716 | "solana-pubkey", 2717 | "solana-sdk-ids", 2718 | "solana-system-interface", 2719 | "thiserror 2.0.12", 2720 | ] 2721 | 2722 | [[package]] 2723 | name = "solana-feature-gate-interface" 2724 | version = "2.2.1" 2725 | source = "registry+https://github.com/rust-lang/crates.io-index" 2726 | checksum = "0f9c7fbf3e58b64a667c5f35e90af580538a95daea7001ff7806c0662d301bdf" 2727 | dependencies = [ 2728 | "bincode", 2729 | "serde", 2730 | "serde_derive", 2731 | "solana-account", 2732 | "solana-account-info", 2733 | "solana-instruction", 2734 | "solana-program-error", 2735 | "solana-pubkey", 2736 | "solana-rent", 2737 | "solana-sdk-ids", 2738 | "solana-system-interface", 2739 | ] 2740 | 2741 | [[package]] 2742 | name = "solana-feature-set" 2743 | version = "2.2.1" 2744 | source = "registry+https://github.com/rust-lang/crates.io-index" 2745 | checksum = "89e1d3b52b4a014efeaaab67f14e40af3972a4be61c523d612860db8e3145529" 2746 | dependencies = [ 2747 | "ahash", 2748 | "lazy_static", 2749 | "solana-epoch-schedule", 2750 | "solana-hash", 2751 | "solana-pubkey", 2752 | "solana-sha256-hasher", 2753 | ] 2754 | 2755 | [[package]] 2756 | name = "solana-fee-calculator" 2757 | version = "2.2.1" 2758 | source = "registry+https://github.com/rust-lang/crates.io-index" 2759 | checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d" 2760 | dependencies = [ 2761 | "log", 2762 | "serde", 2763 | "serde_derive", 2764 | ] 2765 | 2766 | [[package]] 2767 | name = "solana-fee-structure" 2768 | version = "2.2.1" 2769 | source = "registry+https://github.com/rust-lang/crates.io-index" 2770 | checksum = "f45f94a88efdb512805563181dfa1c85c60a21b6e6d602bf24a2ea88f9399d6e" 2771 | dependencies = [ 2772 | "serde", 2773 | "serde_derive", 2774 | "solana-message", 2775 | "solana-native-token", 2776 | ] 2777 | 2778 | [[package]] 2779 | name = "solana-genesis-config" 2780 | version = "2.2.1" 2781 | source = "registry+https://github.com/rust-lang/crates.io-index" 2782 | checksum = "968dabd2b92d57131473eddbd475339da530e14f54397386abf303de3a2595a2" 2783 | dependencies = [ 2784 | "bincode", 2785 | "chrono", 2786 | "memmap2", 2787 | "serde", 2788 | "serde_derive", 2789 | "solana-account", 2790 | "solana-clock", 2791 | "solana-cluster-type", 2792 | "solana-epoch-schedule", 2793 | "solana-fee-calculator", 2794 | "solana-hash", 2795 | "solana-inflation", 2796 | "solana-keypair", 2797 | "solana-logger", 2798 | "solana-native-token", 2799 | "solana-poh-config", 2800 | "solana-pubkey", 2801 | "solana-rent", 2802 | "solana-sdk-ids", 2803 | "solana-sha256-hasher", 2804 | "solana-shred-version", 2805 | "solana-signer", 2806 | "solana-time-utils", 2807 | ] 2808 | 2809 | [[package]] 2810 | name = "solana-hard-forks" 2811 | version = "2.2.1" 2812 | source = "registry+https://github.com/rust-lang/crates.io-index" 2813 | checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" 2814 | dependencies = [ 2815 | "serde", 2816 | "serde_derive", 2817 | ] 2818 | 2819 | [[package]] 2820 | name = "solana-hash" 2821 | version = "2.2.1" 2822 | source = "registry+https://github.com/rust-lang/crates.io-index" 2823 | checksum = "cf7bcb14392900fe02e4e34e90234fbf0c673d4e327888410ba99fa2ba0f4e99" 2824 | dependencies = [ 2825 | "borsh 1.5.7", 2826 | "bs58", 2827 | "bytemuck", 2828 | "bytemuck_derive", 2829 | "js-sys", 2830 | "serde", 2831 | "serde_derive", 2832 | "solana-atomic-u64", 2833 | "solana-sanitize", 2834 | "wasm-bindgen", 2835 | ] 2836 | 2837 | [[package]] 2838 | name = "solana-inflation" 2839 | version = "2.2.1" 2840 | source = "registry+https://github.com/rust-lang/crates.io-index" 2841 | checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" 2842 | dependencies = [ 2843 | "serde", 2844 | "serde_derive", 2845 | ] 2846 | 2847 | [[package]] 2848 | name = "solana-inline-spl" 2849 | version = "2.2.4" 2850 | source = "registry+https://github.com/rust-lang/crates.io-index" 2851 | checksum = "ed78e6709851bb3fa8a0acb1ee40fbffa888049d042ca132d6ccb8e0b313ac72" 2852 | dependencies = [ 2853 | "bytemuck", 2854 | "solana-pubkey", 2855 | ] 2856 | 2857 | [[package]] 2858 | name = "solana-instruction" 2859 | version = "2.2.1" 2860 | source = "registry+https://github.com/rust-lang/crates.io-index" 2861 | checksum = "9ce496a475e5062ba5de97215ab39d9c358f9c9df4bb7f3a45a1f1a8bd9065ed" 2862 | dependencies = [ 2863 | "bincode", 2864 | "borsh 1.5.7", 2865 | "getrandom 0.2.15", 2866 | "js-sys", 2867 | "num-traits", 2868 | "serde", 2869 | "serde_derive", 2870 | "solana-define-syscall", 2871 | "solana-pubkey", 2872 | "wasm-bindgen", 2873 | ] 2874 | 2875 | [[package]] 2876 | name = "solana-instructions-sysvar" 2877 | version = "2.2.1" 2878 | source = "registry+https://github.com/rust-lang/crates.io-index" 2879 | checksum = "427f2d0d6dc0bb49f16cef5e7f975180d2e80aab9bdd3b2af68e2d029ec63f43" 2880 | dependencies = [ 2881 | "bitflags 2.9.0", 2882 | "solana-account-info", 2883 | "solana-instruction", 2884 | "solana-program-error", 2885 | "solana-pubkey", 2886 | "solana-sanitize", 2887 | "solana-sdk-ids", 2888 | "solana-serialize-utils", 2889 | "solana-sysvar-id", 2890 | ] 2891 | 2892 | [[package]] 2893 | name = "solana-keccak-hasher" 2894 | version = "2.2.1" 2895 | source = "registry+https://github.com/rust-lang/crates.io-index" 2896 | checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" 2897 | dependencies = [ 2898 | "sha3", 2899 | "solana-define-syscall", 2900 | "solana-hash", 2901 | "solana-sanitize", 2902 | ] 2903 | 2904 | [[package]] 2905 | name = "solana-keypair" 2906 | version = "2.2.1" 2907 | source = "registry+https://github.com/rust-lang/crates.io-index" 2908 | checksum = "3dbb7042c2e0c561afa07242b2099d55c57bd1b1da3b6476932197d84e15e3e4" 2909 | dependencies = [ 2910 | "bs58", 2911 | "ed25519-dalek", 2912 | "ed25519-dalek-bip32", 2913 | "rand 0.7.3", 2914 | "solana-derivation-path", 2915 | "solana-pubkey", 2916 | "solana-seed-derivable", 2917 | "solana-seed-phrase", 2918 | "solana-signature", 2919 | "solana-signer", 2920 | "wasm-bindgen", 2921 | ] 2922 | 2923 | [[package]] 2924 | name = "solana-last-restart-slot" 2925 | version = "2.2.1" 2926 | source = "registry+https://github.com/rust-lang/crates.io-index" 2927 | checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" 2928 | dependencies = [ 2929 | "serde", 2930 | "serde_derive", 2931 | "solana-sdk-ids", 2932 | "solana-sdk-macro", 2933 | "solana-sysvar-id", 2934 | ] 2935 | 2936 | [[package]] 2937 | name = "solana-loader-v2-interface" 2938 | version = "2.2.1" 2939 | source = "registry+https://github.com/rust-lang/crates.io-index" 2940 | checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654" 2941 | dependencies = [ 2942 | "serde", 2943 | "serde_bytes", 2944 | "serde_derive", 2945 | "solana-instruction", 2946 | "solana-pubkey", 2947 | "solana-sdk-ids", 2948 | ] 2949 | 2950 | [[package]] 2951 | name = "solana-loader-v3-interface" 2952 | version = "3.0.0" 2953 | source = "registry+https://github.com/rust-lang/crates.io-index" 2954 | checksum = "fa4be76cfa9afd84ca2f35ebc09f0da0f0092935ccdac0595d98447f259538c2" 2955 | dependencies = [ 2956 | "serde", 2957 | "serde_bytes", 2958 | "serde_derive", 2959 | "solana-instruction", 2960 | "solana-pubkey", 2961 | "solana-sdk-ids", 2962 | "solana-system-interface", 2963 | ] 2964 | 2965 | [[package]] 2966 | name = "solana-loader-v4-interface" 2967 | version = "2.2.1" 2968 | source = "registry+https://github.com/rust-lang/crates.io-index" 2969 | checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" 2970 | dependencies = [ 2971 | "serde", 2972 | "serde_bytes", 2973 | "serde_derive", 2974 | "solana-instruction", 2975 | "solana-pubkey", 2976 | "solana-sdk-ids", 2977 | "solana-system-interface", 2978 | ] 2979 | 2980 | [[package]] 2981 | name = "solana-logger" 2982 | version = "2.3.1" 2983 | source = "registry+https://github.com/rust-lang/crates.io-index" 2984 | checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" 2985 | dependencies = [ 2986 | "env_logger", 2987 | "lazy_static", 2988 | "libc", 2989 | "log", 2990 | "signal-hook", 2991 | ] 2992 | 2993 | [[package]] 2994 | name = "solana-message" 2995 | version = "2.2.1" 2996 | source = "registry+https://github.com/rust-lang/crates.io-index" 2997 | checksum = "268486ba8a294ed22a4d7c1ec05f540c3dbe71cfa7c6c54b6d4d13668d895678" 2998 | dependencies = [ 2999 | "bincode", 3000 | "blake3", 3001 | "lazy_static", 3002 | "serde", 3003 | "serde_derive", 3004 | "solana-bincode", 3005 | "solana-hash", 3006 | "solana-instruction", 3007 | "solana-pubkey", 3008 | "solana-sanitize", 3009 | "solana-sdk-ids", 3010 | "solana-short-vec", 3011 | "solana-system-interface", 3012 | "solana-transaction-error", 3013 | "wasm-bindgen", 3014 | ] 3015 | 3016 | [[package]] 3017 | name = "solana-msg" 3018 | version = "2.2.1" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" 3021 | dependencies = [ 3022 | "solana-define-syscall", 3023 | ] 3024 | 3025 | [[package]] 3026 | name = "solana-native-token" 3027 | version = "2.2.1" 3028 | source = "registry+https://github.com/rust-lang/crates.io-index" 3029 | checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec" 3030 | 3031 | [[package]] 3032 | name = "solana-nonce" 3033 | version = "2.2.1" 3034 | source = "registry+https://github.com/rust-lang/crates.io-index" 3035 | checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" 3036 | dependencies = [ 3037 | "serde", 3038 | "serde_derive", 3039 | "solana-fee-calculator", 3040 | "solana-hash", 3041 | "solana-pubkey", 3042 | "solana-sha256-hasher", 3043 | ] 3044 | 3045 | [[package]] 3046 | name = "solana-nonce-account" 3047 | version = "2.2.1" 3048 | source = "registry+https://github.com/rust-lang/crates.io-index" 3049 | checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" 3050 | dependencies = [ 3051 | "solana-account", 3052 | "solana-hash", 3053 | "solana-nonce", 3054 | "solana-sdk-ids", 3055 | ] 3056 | 3057 | [[package]] 3058 | name = "solana-offchain-message" 3059 | version = "2.2.1" 3060 | source = "registry+https://github.com/rust-lang/crates.io-index" 3061 | checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" 3062 | dependencies = [ 3063 | "num_enum", 3064 | "solana-hash", 3065 | "solana-packet", 3066 | "solana-pubkey", 3067 | "solana-sanitize", 3068 | "solana-sha256-hasher", 3069 | "solana-signature", 3070 | "solana-signer", 3071 | ] 3072 | 3073 | [[package]] 3074 | name = "solana-packet" 3075 | version = "2.2.1" 3076 | source = "registry+https://github.com/rust-lang/crates.io-index" 3077 | checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" 3078 | dependencies = [ 3079 | "bincode", 3080 | "bitflags 2.9.0", 3081 | "cfg_eval", 3082 | "serde", 3083 | "serde_derive", 3084 | "serde_with", 3085 | ] 3086 | 3087 | [[package]] 3088 | name = "solana-poh-config" 3089 | version = "2.2.1" 3090 | source = "registry+https://github.com/rust-lang/crates.io-index" 3091 | checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" 3092 | dependencies = [ 3093 | "serde", 3094 | "serde_derive", 3095 | ] 3096 | 3097 | [[package]] 3098 | name = "solana-precompile-error" 3099 | version = "2.2.1" 3100 | source = "registry+https://github.com/rust-lang/crates.io-index" 3101 | checksum = "4ff64daa2933c22982b323d88d0cdf693201ef56ac381ae16737fd5f579e07d6" 3102 | dependencies = [ 3103 | "num-traits", 3104 | "solana-decode-error", 3105 | ] 3106 | 3107 | [[package]] 3108 | name = "solana-precompiles" 3109 | version = "2.2.1" 3110 | source = "registry+https://github.com/rust-lang/crates.io-index" 3111 | checksum = "6a460ab805ec063802105b463ecb5eb02c3ffe469e67a967eea8a6e778e0bc06" 3112 | dependencies = [ 3113 | "lazy_static", 3114 | "solana-ed25519-program", 3115 | "solana-feature-set", 3116 | "solana-message", 3117 | "solana-precompile-error", 3118 | "solana-pubkey", 3119 | "solana-sdk-ids", 3120 | "solana-secp256k1-program", 3121 | "solana-secp256r1-program", 3122 | ] 3123 | 3124 | [[package]] 3125 | name = "solana-presigner" 3126 | version = "2.2.1" 3127 | source = "registry+https://github.com/rust-lang/crates.io-index" 3128 | checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" 3129 | dependencies = [ 3130 | "solana-pubkey", 3131 | "solana-signature", 3132 | "solana-signer", 3133 | ] 3134 | 3135 | [[package]] 3136 | name = "solana-program" 3137 | version = "2.2.1" 3138 | source = "registry+https://github.com/rust-lang/crates.io-index" 3139 | checksum = "586469467e93ceb79048f8d8e3a619bf61d05396ee7de95cb40280301a589d05" 3140 | dependencies = [ 3141 | "bincode", 3142 | "blake3", 3143 | "borsh 0.10.4", 3144 | "borsh 1.5.7", 3145 | "bs58", 3146 | "bytemuck", 3147 | "console_error_panic_hook", 3148 | "console_log", 3149 | "getrandom 0.2.15", 3150 | "lazy_static", 3151 | "log", 3152 | "memoffset", 3153 | "num-bigint", 3154 | "num-derive", 3155 | "num-traits", 3156 | "rand 0.8.5", 3157 | "serde", 3158 | "serde_bytes", 3159 | "serde_derive", 3160 | "solana-account-info", 3161 | "solana-address-lookup-table-interface", 3162 | "solana-atomic-u64", 3163 | "solana-big-mod-exp", 3164 | "solana-bincode", 3165 | "solana-blake3-hasher", 3166 | "solana-borsh", 3167 | "solana-clock", 3168 | "solana-cpi", 3169 | "solana-decode-error", 3170 | "solana-define-syscall", 3171 | "solana-epoch-rewards", 3172 | "solana-epoch-schedule", 3173 | "solana-example-mocks", 3174 | "solana-feature-gate-interface", 3175 | "solana-fee-calculator", 3176 | "solana-hash", 3177 | "solana-instruction", 3178 | "solana-instructions-sysvar", 3179 | "solana-keccak-hasher", 3180 | "solana-last-restart-slot", 3181 | "solana-loader-v2-interface", 3182 | "solana-loader-v3-interface", 3183 | "solana-loader-v4-interface", 3184 | "solana-message", 3185 | "solana-msg", 3186 | "solana-native-token", 3187 | "solana-nonce", 3188 | "solana-program-entrypoint", 3189 | "solana-program-error", 3190 | "solana-program-memory", 3191 | "solana-program-option", 3192 | "solana-program-pack", 3193 | "solana-pubkey", 3194 | "solana-rent", 3195 | "solana-sanitize", 3196 | "solana-sdk-ids", 3197 | "solana-sdk-macro", 3198 | "solana-secp256k1-recover", 3199 | "solana-serde-varint", 3200 | "solana-serialize-utils", 3201 | "solana-sha256-hasher", 3202 | "solana-short-vec", 3203 | "solana-slot-hashes", 3204 | "solana-slot-history", 3205 | "solana-stable-layout", 3206 | "solana-stake-interface", 3207 | "solana-system-interface", 3208 | "solana-sysvar", 3209 | "solana-sysvar-id", 3210 | "solana-vote-interface", 3211 | "thiserror 2.0.12", 3212 | "wasm-bindgen", 3213 | ] 3214 | 3215 | [[package]] 3216 | name = "solana-program-entrypoint" 3217 | version = "2.2.1" 3218 | source = "registry+https://github.com/rust-lang/crates.io-index" 3219 | checksum = "473ffe73c68d93e9f2aa726ad2985fe52760052709aaab188100a42c618060ec" 3220 | dependencies = [ 3221 | "solana-account-info", 3222 | "solana-msg", 3223 | "solana-program-error", 3224 | "solana-pubkey", 3225 | ] 3226 | 3227 | [[package]] 3228 | name = "solana-program-error" 3229 | version = "2.2.1" 3230 | source = "registry+https://github.com/rust-lang/crates.io-index" 3231 | checksum = "d8ae2c1a8d0d4ae865882d5770a7ebca92bab9c685e43f0461682c6c05a35bfa" 3232 | dependencies = [ 3233 | "borsh 1.5.7", 3234 | "num-traits", 3235 | "serde", 3236 | "serde_derive", 3237 | "solana-decode-error", 3238 | "solana-instruction", 3239 | "solana-msg", 3240 | "solana-pubkey", 3241 | ] 3242 | 3243 | [[package]] 3244 | name = "solana-program-memory" 3245 | version = "2.2.1" 3246 | source = "registry+https://github.com/rust-lang/crates.io-index" 3247 | checksum = "1b0268f6c89825fb634a34bd0c3b8fdaeaecfc3728be1d622a8ee6dd577b60d4" 3248 | dependencies = [ 3249 | "num-traits", 3250 | "solana-define-syscall", 3251 | ] 3252 | 3253 | [[package]] 3254 | name = "solana-program-option" 3255 | version = "2.2.1" 3256 | source = "registry+https://github.com/rust-lang/crates.io-index" 3257 | checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" 3258 | 3259 | [[package]] 3260 | name = "solana-program-pack" 3261 | version = "2.2.1" 3262 | source = "registry+https://github.com/rust-lang/crates.io-index" 3263 | checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" 3264 | dependencies = [ 3265 | "solana-program-error", 3266 | ] 3267 | 3268 | [[package]] 3269 | name = "solana-pubkey" 3270 | version = "2.2.1" 3271 | source = "registry+https://github.com/rust-lang/crates.io-index" 3272 | checksum = "40db1ff5a0f8aea2c158d78ab5f2cf897848964251d1df42fef78efd3c85b863" 3273 | dependencies = [ 3274 | "borsh 0.10.4", 3275 | "borsh 1.5.7", 3276 | "bs58", 3277 | "bytemuck", 3278 | "bytemuck_derive", 3279 | "curve25519-dalek 4.1.3", 3280 | "five8_const", 3281 | "getrandom 0.2.15", 3282 | "js-sys", 3283 | "num-traits", 3284 | "rand 0.8.5", 3285 | "serde", 3286 | "serde_derive", 3287 | "solana-atomic-u64", 3288 | "solana-decode-error", 3289 | "solana-define-syscall", 3290 | "solana-sanitize", 3291 | "solana-sha256-hasher", 3292 | "wasm-bindgen", 3293 | ] 3294 | 3295 | [[package]] 3296 | name = "solana-quic-definitions" 3297 | version = "2.2.1" 3298 | source = "registry+https://github.com/rust-lang/crates.io-index" 3299 | checksum = "e606feac5110eb5d8afaa43ccaeea3ec49ccec36773387930b5ba545e745aea2" 3300 | dependencies = [ 3301 | "solana-keypair", 3302 | ] 3303 | 3304 | [[package]] 3305 | name = "solana-rent" 3306 | version = "2.2.1" 3307 | source = "registry+https://github.com/rust-lang/crates.io-index" 3308 | checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" 3309 | dependencies = [ 3310 | "serde", 3311 | "serde_derive", 3312 | "solana-sdk-ids", 3313 | "solana-sdk-macro", 3314 | "solana-sysvar-id", 3315 | ] 3316 | 3317 | [[package]] 3318 | name = "solana-rent-collector" 3319 | version = "2.2.1" 3320 | source = "registry+https://github.com/rust-lang/crates.io-index" 3321 | checksum = "7c1e19f5d5108b0d824244425e43bc78bbb9476e2199e979b0230c9f632d3bf4" 3322 | dependencies = [ 3323 | "serde", 3324 | "serde_derive", 3325 | "solana-account", 3326 | "solana-clock", 3327 | "solana-epoch-schedule", 3328 | "solana-genesis-config", 3329 | "solana-pubkey", 3330 | "solana-rent", 3331 | "solana-sdk-ids", 3332 | ] 3333 | 3334 | [[package]] 3335 | name = "solana-rent-debits" 3336 | version = "2.2.1" 3337 | source = "registry+https://github.com/rust-lang/crates.io-index" 3338 | checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" 3339 | dependencies = [ 3340 | "solana-pubkey", 3341 | "solana-reward-info", 3342 | ] 3343 | 3344 | [[package]] 3345 | name = "solana-reserved-account-keys" 3346 | version = "2.2.1" 3347 | source = "registry+https://github.com/rust-lang/crates.io-index" 3348 | checksum = "2b293f4246626c0e0a991531f08848a713ada965612e99dc510963f04d12cae7" 3349 | dependencies = [ 3350 | "lazy_static", 3351 | "solana-feature-set", 3352 | "solana-pubkey", 3353 | "solana-sdk-ids", 3354 | ] 3355 | 3356 | [[package]] 3357 | name = "solana-reward-info" 3358 | version = "2.2.1" 3359 | source = "registry+https://github.com/rust-lang/crates.io-index" 3360 | checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" 3361 | dependencies = [ 3362 | "serde", 3363 | "serde_derive", 3364 | ] 3365 | 3366 | [[package]] 3367 | name = "solana-rpc-client" 3368 | version = "2.2.4" 3369 | source = "registry+https://github.com/rust-lang/crates.io-index" 3370 | checksum = "44f1809a424bb8d90aa40990451593cde7e734a060fb52b35e475db585450578" 3371 | dependencies = [ 3372 | "async-trait", 3373 | "base64 0.22.1", 3374 | "bincode", 3375 | "bs58", 3376 | "indicatif", 3377 | "log", 3378 | "reqwest", 3379 | "reqwest-middleware", 3380 | "semver", 3381 | "serde", 3382 | "serde_derive", 3383 | "serde_json", 3384 | "solana-account", 3385 | "solana-account-decoder-client-types", 3386 | "solana-clock", 3387 | "solana-commitment-config", 3388 | "solana-epoch-info", 3389 | "solana-epoch-schedule", 3390 | "solana-feature-gate-interface", 3391 | "solana-hash", 3392 | "solana-instruction", 3393 | "solana-message", 3394 | "solana-pubkey", 3395 | "solana-rpc-client-api", 3396 | "solana-signature", 3397 | "solana-transaction", 3398 | "solana-transaction-error", 3399 | "solana-transaction-status-client-types", 3400 | "solana-version", 3401 | "tokio", 3402 | ] 3403 | 3404 | [[package]] 3405 | name = "solana-rpc-client-api" 3406 | version = "2.2.4" 3407 | source = "registry+https://github.com/rust-lang/crates.io-index" 3408 | checksum = "aa2eb4fe573cd2d59d8672f0d8ac65f64e70c948b36cf97218b9aeb80dca3329" 3409 | dependencies = [ 3410 | "anyhow", 3411 | "base64 0.22.1", 3412 | "bs58", 3413 | "jsonrpc-core", 3414 | "reqwest", 3415 | "reqwest-middleware", 3416 | "semver", 3417 | "serde", 3418 | "serde_derive", 3419 | "serde_json", 3420 | "solana-account", 3421 | "solana-account-decoder-client-types", 3422 | "solana-clock", 3423 | "solana-commitment-config", 3424 | "solana-fee-calculator", 3425 | "solana-inflation", 3426 | "solana-inline-spl", 3427 | "solana-pubkey", 3428 | "solana-signer", 3429 | "solana-transaction-error", 3430 | "solana-transaction-status-client-types", 3431 | "solana-version", 3432 | "thiserror 2.0.12", 3433 | ] 3434 | 3435 | [[package]] 3436 | name = "solana-sanitize" 3437 | version = "2.2.1" 3438 | source = "registry+https://github.com/rust-lang/crates.io-index" 3439 | checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" 3440 | 3441 | [[package]] 3442 | name = "solana-sdk" 3443 | version = "2.2.1" 3444 | source = "registry+https://github.com/rust-lang/crates.io-index" 3445 | checksum = "4808e8d7f3c931657e615042d4176b423e66f64dc99e3dc3c735a197e512029b" 3446 | dependencies = [ 3447 | "bincode", 3448 | "bs58", 3449 | "getrandom 0.1.16", 3450 | "js-sys", 3451 | "serde", 3452 | "serde_json", 3453 | "solana-account", 3454 | "solana-bn254", 3455 | "solana-client-traits", 3456 | "solana-cluster-type", 3457 | "solana-commitment-config", 3458 | "solana-compute-budget-interface", 3459 | "solana-decode-error", 3460 | "solana-derivation-path", 3461 | "solana-ed25519-program", 3462 | "solana-epoch-info", 3463 | "solana-epoch-rewards-hasher", 3464 | "solana-feature-set", 3465 | "solana-fee-structure", 3466 | "solana-genesis-config", 3467 | "solana-hard-forks", 3468 | "solana-inflation", 3469 | "solana-instruction", 3470 | "solana-keypair", 3471 | "solana-message", 3472 | "solana-native-token", 3473 | "solana-nonce-account", 3474 | "solana-offchain-message", 3475 | "solana-packet", 3476 | "solana-poh-config", 3477 | "solana-precompile-error", 3478 | "solana-precompiles", 3479 | "solana-presigner", 3480 | "solana-program", 3481 | "solana-program-memory", 3482 | "solana-pubkey", 3483 | "solana-quic-definitions", 3484 | "solana-rent-collector", 3485 | "solana-rent-debits", 3486 | "solana-reserved-account-keys", 3487 | "solana-reward-info", 3488 | "solana-sanitize", 3489 | "solana-sdk-ids", 3490 | "solana-sdk-macro", 3491 | "solana-secp256k1-program", 3492 | "solana-secp256k1-recover", 3493 | "solana-secp256r1-program", 3494 | "solana-seed-derivable", 3495 | "solana-seed-phrase", 3496 | "solana-serde", 3497 | "solana-serde-varint", 3498 | "solana-short-vec", 3499 | "solana-shred-version", 3500 | "solana-signature", 3501 | "solana-signer", 3502 | "solana-system-transaction", 3503 | "solana-time-utils", 3504 | "solana-transaction", 3505 | "solana-transaction-context", 3506 | "solana-transaction-error", 3507 | "solana-validator-exit", 3508 | "thiserror 2.0.12", 3509 | "wasm-bindgen", 3510 | ] 3511 | 3512 | [[package]] 3513 | name = "solana-sdk-ids" 3514 | version = "2.2.1" 3515 | source = "registry+https://github.com/rust-lang/crates.io-index" 3516 | checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" 3517 | dependencies = [ 3518 | "solana-pubkey", 3519 | ] 3520 | 3521 | [[package]] 3522 | name = "solana-sdk-macro" 3523 | version = "2.2.1" 3524 | source = "registry+https://github.com/rust-lang/crates.io-index" 3525 | checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" 3526 | dependencies = [ 3527 | "bs58", 3528 | "proc-macro2", 3529 | "quote", 3530 | "syn 2.0.100", 3531 | ] 3532 | 3533 | [[package]] 3534 | name = "solana-secp256k1-program" 3535 | version = "2.2.1" 3536 | source = "registry+https://github.com/rust-lang/crates.io-index" 3537 | checksum = "a0a1caa972414cc78122c32bdae65ac5fe89df7db598585a5cde19d16a20280a" 3538 | dependencies = [ 3539 | "bincode", 3540 | "digest 0.10.7", 3541 | "libsecp256k1", 3542 | "serde", 3543 | "serde_derive", 3544 | "sha3", 3545 | "solana-feature-set", 3546 | "solana-instruction", 3547 | "solana-precompile-error", 3548 | "solana-sdk-ids", 3549 | ] 3550 | 3551 | [[package]] 3552 | name = "solana-secp256k1-recover" 3553 | version = "2.2.1" 3554 | source = "registry+https://github.com/rust-lang/crates.io-index" 3555 | checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" 3556 | dependencies = [ 3557 | "borsh 1.5.7", 3558 | "libsecp256k1", 3559 | "solana-define-syscall", 3560 | "thiserror 2.0.12", 3561 | ] 3562 | 3563 | [[package]] 3564 | name = "solana-secp256r1-program" 3565 | version = "2.2.1" 3566 | source = "registry+https://github.com/rust-lang/crates.io-index" 3567 | checksum = "c9ea9282950921611bd9e0200da7236fbb1d4f8388942f8451bd55e9f3cb228f" 3568 | dependencies = [ 3569 | "bytemuck", 3570 | "openssl", 3571 | "solana-feature-set", 3572 | "solana-instruction", 3573 | "solana-precompile-error", 3574 | "solana-sdk-ids", 3575 | ] 3576 | 3577 | [[package]] 3578 | name = "solana-security-txt" 3579 | version = "1.1.1" 3580 | source = "registry+https://github.com/rust-lang/crates.io-index" 3581 | checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" 3582 | 3583 | [[package]] 3584 | name = "solana-seed-derivable" 3585 | version = "2.2.1" 3586 | source = "registry+https://github.com/rust-lang/crates.io-index" 3587 | checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" 3588 | dependencies = [ 3589 | "solana-derivation-path", 3590 | ] 3591 | 3592 | [[package]] 3593 | name = "solana-seed-phrase" 3594 | version = "2.2.1" 3595 | source = "registry+https://github.com/rust-lang/crates.io-index" 3596 | checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" 3597 | dependencies = [ 3598 | "hmac 0.12.1", 3599 | "pbkdf2", 3600 | "sha2 0.10.8", 3601 | ] 3602 | 3603 | [[package]] 3604 | name = "solana-serde" 3605 | version = "2.2.1" 3606 | source = "registry+https://github.com/rust-lang/crates.io-index" 3607 | checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" 3608 | dependencies = [ 3609 | "serde", 3610 | ] 3611 | 3612 | [[package]] 3613 | name = "solana-serde-varint" 3614 | version = "2.2.1" 3615 | source = "registry+https://github.com/rust-lang/crates.io-index" 3616 | checksum = "bcc07d00200d82e6def2f7f7a45738e3406b17fe54a18adcf0defa16a97ccadb" 3617 | dependencies = [ 3618 | "serde", 3619 | ] 3620 | 3621 | [[package]] 3622 | name = "solana-serialize-utils" 3623 | version = "2.2.1" 3624 | source = "registry+https://github.com/rust-lang/crates.io-index" 3625 | checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" 3626 | dependencies = [ 3627 | "solana-instruction", 3628 | "solana-pubkey", 3629 | "solana-sanitize", 3630 | ] 3631 | 3632 | [[package]] 3633 | name = "solana-sha256-hasher" 3634 | version = "2.2.1" 3635 | source = "registry+https://github.com/rust-lang/crates.io-index" 3636 | checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea" 3637 | dependencies = [ 3638 | "sha2 0.10.8", 3639 | "solana-define-syscall", 3640 | "solana-hash", 3641 | ] 3642 | 3643 | [[package]] 3644 | name = "solana-short-vec" 3645 | version = "2.2.1" 3646 | source = "registry+https://github.com/rust-lang/crates.io-index" 3647 | checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" 3648 | dependencies = [ 3649 | "serde", 3650 | ] 3651 | 3652 | [[package]] 3653 | name = "solana-shred-version" 3654 | version = "2.2.1" 3655 | source = "registry+https://github.com/rust-lang/crates.io-index" 3656 | checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" 3657 | dependencies = [ 3658 | "solana-hard-forks", 3659 | "solana-hash", 3660 | "solana-sha256-hasher", 3661 | ] 3662 | 3663 | [[package]] 3664 | name = "solana-signature" 3665 | version = "2.2.1" 3666 | source = "registry+https://github.com/rust-lang/crates.io-index" 3667 | checksum = "47d251c8f3dc015f320b4161daac7f108156c837428e5a8cc61136d25beb11d6" 3668 | dependencies = [ 3669 | "bs58", 3670 | "ed25519-dalek", 3671 | "rand 0.8.5", 3672 | "serde", 3673 | "serde-big-array", 3674 | "serde_derive", 3675 | "solana-sanitize", 3676 | ] 3677 | 3678 | [[package]] 3679 | name = "solana-signer" 3680 | version = "2.2.1" 3681 | source = "registry+https://github.com/rust-lang/crates.io-index" 3682 | checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" 3683 | dependencies = [ 3684 | "solana-pubkey", 3685 | "solana-signature", 3686 | "solana-transaction-error", 3687 | ] 3688 | 3689 | [[package]] 3690 | name = "solana-slot-hashes" 3691 | version = "2.2.1" 3692 | source = "registry+https://github.com/rust-lang/crates.io-index" 3693 | checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" 3694 | dependencies = [ 3695 | "serde", 3696 | "serde_derive", 3697 | "solana-hash", 3698 | "solana-sdk-ids", 3699 | "solana-sysvar-id", 3700 | ] 3701 | 3702 | [[package]] 3703 | name = "solana-slot-history" 3704 | version = "2.2.1" 3705 | source = "registry+https://github.com/rust-lang/crates.io-index" 3706 | checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" 3707 | dependencies = [ 3708 | "bv", 3709 | "serde", 3710 | "serde_derive", 3711 | "solana-sdk-ids", 3712 | "solana-sysvar-id", 3713 | ] 3714 | 3715 | [[package]] 3716 | name = "solana-stable-layout" 3717 | version = "2.2.1" 3718 | source = "registry+https://github.com/rust-lang/crates.io-index" 3719 | checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" 3720 | dependencies = [ 3721 | "solana-instruction", 3722 | "solana-pubkey", 3723 | ] 3724 | 3725 | [[package]] 3726 | name = "solana-stake-interface" 3727 | version = "1.2.1" 3728 | source = "registry+https://github.com/rust-lang/crates.io-index" 3729 | checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" 3730 | dependencies = [ 3731 | "borsh 0.10.4", 3732 | "borsh 1.5.7", 3733 | "num-traits", 3734 | "serde", 3735 | "serde_derive", 3736 | "solana-clock", 3737 | "solana-cpi", 3738 | "solana-decode-error", 3739 | "solana-instruction", 3740 | "solana-program-error", 3741 | "solana-pubkey", 3742 | "solana-system-interface", 3743 | "solana-sysvar-id", 3744 | ] 3745 | 3746 | [[package]] 3747 | name = "solana-system-interface" 3748 | version = "1.0.0" 3749 | source = "registry+https://github.com/rust-lang/crates.io-index" 3750 | checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" 3751 | dependencies = [ 3752 | "js-sys", 3753 | "num-traits", 3754 | "serde", 3755 | "serde_derive", 3756 | "solana-decode-error", 3757 | "solana-instruction", 3758 | "solana-pubkey", 3759 | "wasm-bindgen", 3760 | ] 3761 | 3762 | [[package]] 3763 | name = "solana-system-transaction" 3764 | version = "2.2.1" 3765 | source = "registry+https://github.com/rust-lang/crates.io-index" 3766 | checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" 3767 | dependencies = [ 3768 | "solana-hash", 3769 | "solana-keypair", 3770 | "solana-message", 3771 | "solana-pubkey", 3772 | "solana-signer", 3773 | "solana-system-interface", 3774 | "solana-transaction", 3775 | ] 3776 | 3777 | [[package]] 3778 | name = "solana-sysvar" 3779 | version = "2.2.1" 3780 | source = "registry+https://github.com/rust-lang/crates.io-index" 3781 | checksum = "bf6b44740d7f0c9f375d045c165bc0aab4a90658f92d6835aeb0649afaeaff9a" 3782 | dependencies = [ 3783 | "base64 0.22.1", 3784 | "bincode", 3785 | "bytemuck", 3786 | "bytemuck_derive", 3787 | "lazy_static", 3788 | "serde", 3789 | "serde_derive", 3790 | "solana-account-info", 3791 | "solana-clock", 3792 | "solana-define-syscall", 3793 | "solana-epoch-rewards", 3794 | "solana-epoch-schedule", 3795 | "solana-fee-calculator", 3796 | "solana-hash", 3797 | "solana-instruction", 3798 | "solana-instructions-sysvar", 3799 | "solana-last-restart-slot", 3800 | "solana-program-entrypoint", 3801 | "solana-program-error", 3802 | "solana-program-memory", 3803 | "solana-pubkey", 3804 | "solana-rent", 3805 | "solana-sanitize", 3806 | "solana-sdk-ids", 3807 | "solana-sdk-macro", 3808 | "solana-slot-hashes", 3809 | "solana-slot-history", 3810 | "solana-stake-interface", 3811 | "solana-sysvar-id", 3812 | ] 3813 | 3814 | [[package]] 3815 | name = "solana-sysvar-id" 3816 | version = "2.2.1" 3817 | source = "registry+https://github.com/rust-lang/crates.io-index" 3818 | checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" 3819 | dependencies = [ 3820 | "solana-pubkey", 3821 | "solana-sdk-ids", 3822 | ] 3823 | 3824 | [[package]] 3825 | name = "solana-time-utils" 3826 | version = "2.2.1" 3827 | source = "registry+https://github.com/rust-lang/crates.io-index" 3828 | checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" 3829 | 3830 | [[package]] 3831 | name = "solana-transaction" 3832 | version = "2.2.1" 3833 | source = "registry+https://github.com/rust-lang/crates.io-index" 3834 | checksum = "753b3e9afed170e4cfc0ea1e87b5dfdc6d4a50270869414edd24c6ea1f529b29" 3835 | dependencies = [ 3836 | "bincode", 3837 | "serde", 3838 | "serde_derive", 3839 | "solana-bincode", 3840 | "solana-feature-set", 3841 | "solana-hash", 3842 | "solana-instruction", 3843 | "solana-keypair", 3844 | "solana-message", 3845 | "solana-precompiles", 3846 | "solana-pubkey", 3847 | "solana-reserved-account-keys", 3848 | "solana-sanitize", 3849 | "solana-sdk-ids", 3850 | "solana-short-vec", 3851 | "solana-signature", 3852 | "solana-signer", 3853 | "solana-system-interface", 3854 | "solana-transaction-error", 3855 | "wasm-bindgen", 3856 | ] 3857 | 3858 | [[package]] 3859 | name = "solana-transaction-context" 3860 | version = "2.2.1" 3861 | source = "registry+https://github.com/rust-lang/crates.io-index" 3862 | checksum = "5022de04cbba05377f68bf848c8c1322ead733f88a657bf792bb40f3257b8218" 3863 | dependencies = [ 3864 | "bincode", 3865 | "serde", 3866 | "serde_derive", 3867 | "solana-account", 3868 | "solana-instruction", 3869 | "solana-pubkey", 3870 | "solana-rent", 3871 | "solana-signature", 3872 | ] 3873 | 3874 | [[package]] 3875 | name = "solana-transaction-error" 3876 | version = "2.2.1" 3877 | source = "registry+https://github.com/rust-lang/crates.io-index" 3878 | checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" 3879 | dependencies = [ 3880 | "serde", 3881 | "serde_derive", 3882 | "solana-instruction", 3883 | "solana-sanitize", 3884 | ] 3885 | 3886 | [[package]] 3887 | name = "solana-transaction-status-client-types" 3888 | version = "2.2.4" 3889 | source = "registry+https://github.com/rust-lang/crates.io-index" 3890 | checksum = "1458fc750d0df4439bb4c1b418a4fe61afbd2e83963e452256eca99dc0c1cf76" 3891 | dependencies = [ 3892 | "base64 0.22.1", 3893 | "bincode", 3894 | "bs58", 3895 | "serde", 3896 | "serde_derive", 3897 | "serde_json", 3898 | "solana-account-decoder-client-types", 3899 | "solana-commitment-config", 3900 | "solana-message", 3901 | "solana-reward-info", 3902 | "solana-signature", 3903 | "solana-transaction", 3904 | "solana-transaction-context", 3905 | "solana-transaction-error", 3906 | "thiserror 2.0.12", 3907 | ] 3908 | 3909 | [[package]] 3910 | name = "solana-validator-exit" 3911 | version = "2.2.1" 3912 | source = "registry+https://github.com/rust-lang/crates.io-index" 3913 | checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" 3914 | 3915 | [[package]] 3916 | name = "solana-version" 3917 | version = "2.2.4" 3918 | source = "registry+https://github.com/rust-lang/crates.io-index" 3919 | checksum = "374dea09855d46655c776256dda9cc3c854cc70fd923ef22ba0805bc83ca7bfd" 3920 | dependencies = [ 3921 | "semver", 3922 | "serde", 3923 | "serde_derive", 3924 | "solana-feature-set", 3925 | "solana-sanitize", 3926 | "solana-serde-varint", 3927 | ] 3928 | 3929 | [[package]] 3930 | name = "solana-vote-interface" 3931 | version = "2.2.2" 3932 | source = "registry+https://github.com/rust-lang/crates.io-index" 3933 | checksum = "c1e9f6a1651310a94cd5a1a6b7f33ade01d9e5ea38a2220becb5fd737b756514" 3934 | dependencies = [ 3935 | "bincode", 3936 | "num-derive", 3937 | "num-traits", 3938 | "serde", 3939 | "serde_derive", 3940 | "solana-clock", 3941 | "solana-decode-error", 3942 | "solana-hash", 3943 | "solana-instruction", 3944 | "solana-pubkey", 3945 | "solana-rent", 3946 | "solana-sdk-ids", 3947 | "solana-serde-varint", 3948 | "solana-serialize-utils", 3949 | "solana-short-vec", 3950 | "solana-system-interface", 3951 | ] 3952 | 3953 | [[package]] 3954 | name = "solana-zk-sdk" 3955 | version = "2.2.5" 3956 | source = "registry+https://github.com/rust-lang/crates.io-index" 3957 | checksum = "db024ca4f5f87b673e932eae3749bb1c6bc090009283104116b379003c02972d" 3958 | dependencies = [ 3959 | "aes-gcm-siv", 3960 | "base64 0.22.1", 3961 | "bincode", 3962 | "bytemuck", 3963 | "bytemuck_derive", 3964 | "curve25519-dalek 4.1.3", 3965 | "itertools 0.12.1", 3966 | "js-sys", 3967 | "lazy_static", 3968 | "merlin", 3969 | "num-derive", 3970 | "num-traits", 3971 | "rand 0.8.5", 3972 | "serde", 3973 | "serde_derive", 3974 | "serde_json", 3975 | "sha3", 3976 | "solana-derivation-path", 3977 | "solana-instruction", 3978 | "solana-pubkey", 3979 | "solana-sdk-ids", 3980 | "solana-seed-derivable", 3981 | "solana-seed-phrase", 3982 | "solana-signature", 3983 | "solana-signer", 3984 | "subtle", 3985 | "thiserror 2.0.12", 3986 | "wasm-bindgen", 3987 | "zeroize", 3988 | ] 3989 | 3990 | [[package]] 3991 | name = "spl-associated-token-account" 3992 | version = "6.0.0" 3993 | source = "registry+https://github.com/rust-lang/crates.io-index" 3994 | checksum = "76fee7d65013667032d499adc3c895e286197a35a0d3a4643c80e7fd3e9969e3" 3995 | dependencies = [ 3996 | "borsh 1.5.7", 3997 | "num-derive", 3998 | "num-traits", 3999 | "solana-program", 4000 | "spl-associated-token-account-client", 4001 | "spl-token 7.0.0", 4002 | "spl-token-2022", 4003 | "thiserror 1.0.69", 4004 | ] 4005 | 4006 | [[package]] 4007 | name = "spl-associated-token-account-client" 4008 | version = "2.0.0" 4009 | source = "registry+https://github.com/rust-lang/crates.io-index" 4010 | checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" 4011 | dependencies = [ 4012 | "solana-instruction", 4013 | "solana-pubkey", 4014 | ] 4015 | 4016 | [[package]] 4017 | name = "spl-discriminator" 4018 | version = "0.4.1" 4019 | source = "registry+https://github.com/rust-lang/crates.io-index" 4020 | checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" 4021 | dependencies = [ 4022 | "bytemuck", 4023 | "solana-program-error", 4024 | "solana-sha256-hasher", 4025 | "spl-discriminator-derive", 4026 | ] 4027 | 4028 | [[package]] 4029 | name = "spl-discriminator-derive" 4030 | version = "0.2.0" 4031 | source = "registry+https://github.com/rust-lang/crates.io-index" 4032 | checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" 4033 | dependencies = [ 4034 | "quote", 4035 | "spl-discriminator-syn", 4036 | "syn 2.0.100", 4037 | ] 4038 | 4039 | [[package]] 4040 | name = "spl-discriminator-syn" 4041 | version = "0.2.0" 4042 | source = "registry+https://github.com/rust-lang/crates.io-index" 4043 | checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" 4044 | dependencies = [ 4045 | "proc-macro2", 4046 | "quote", 4047 | "sha2 0.10.8", 4048 | "syn 2.0.100", 4049 | "thiserror 1.0.69", 4050 | ] 4051 | 4052 | [[package]] 4053 | name = "spl-elgamal-registry" 4054 | version = "0.1.1" 4055 | source = "registry+https://github.com/rust-lang/crates.io-index" 4056 | checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" 4057 | dependencies = [ 4058 | "bytemuck", 4059 | "solana-program", 4060 | "solana-zk-sdk", 4061 | "spl-pod", 4062 | "spl-token-confidential-transfer-proof-extraction", 4063 | ] 4064 | 4065 | [[package]] 4066 | name = "spl-memo" 4067 | version = "6.0.0" 4068 | source = "registry+https://github.com/rust-lang/crates.io-index" 4069 | checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" 4070 | dependencies = [ 4071 | "solana-account-info", 4072 | "solana-instruction", 4073 | "solana-msg", 4074 | "solana-program-entrypoint", 4075 | "solana-program-error", 4076 | "solana-pubkey", 4077 | ] 4078 | 4079 | [[package]] 4080 | name = "spl-pod" 4081 | version = "0.5.1" 4082 | source = "registry+https://github.com/rust-lang/crates.io-index" 4083 | checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" 4084 | dependencies = [ 4085 | "borsh 1.5.7", 4086 | "bytemuck", 4087 | "bytemuck_derive", 4088 | "num-derive", 4089 | "num-traits", 4090 | "solana-decode-error", 4091 | "solana-msg", 4092 | "solana-program-error", 4093 | "solana-program-option", 4094 | "solana-pubkey", 4095 | "solana-zk-sdk", 4096 | "thiserror 2.0.12", 4097 | ] 4098 | 4099 | [[package]] 4100 | name = "spl-program-error" 4101 | version = "0.6.0" 4102 | source = "registry+https://github.com/rust-lang/crates.io-index" 4103 | checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" 4104 | dependencies = [ 4105 | "num-derive", 4106 | "num-traits", 4107 | "solana-program", 4108 | "spl-program-error-derive", 4109 | "thiserror 1.0.69", 4110 | ] 4111 | 4112 | [[package]] 4113 | name = "spl-program-error-derive" 4114 | version = "0.4.1" 4115 | source = "registry+https://github.com/rust-lang/crates.io-index" 4116 | checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" 4117 | dependencies = [ 4118 | "proc-macro2", 4119 | "quote", 4120 | "sha2 0.10.8", 4121 | "syn 2.0.100", 4122 | ] 4123 | 4124 | [[package]] 4125 | name = "spl-tlv-account-resolution" 4126 | version = "0.9.0" 4127 | source = "registry+https://github.com/rust-lang/crates.io-index" 4128 | checksum = "cd99ff1e9ed2ab86e3fd582850d47a739fec1be9f4661cba1782d3a0f26805f3" 4129 | dependencies = [ 4130 | "bytemuck", 4131 | "num-derive", 4132 | "num-traits", 4133 | "solana-account-info", 4134 | "solana-decode-error", 4135 | "solana-instruction", 4136 | "solana-msg", 4137 | "solana-program-error", 4138 | "solana-pubkey", 4139 | "spl-discriminator", 4140 | "spl-pod", 4141 | "spl-program-error", 4142 | "spl-type-length-value", 4143 | "thiserror 1.0.69", 4144 | ] 4145 | 4146 | [[package]] 4147 | name = "spl-token" 4148 | version = "7.0.0" 4149 | source = "registry+https://github.com/rust-lang/crates.io-index" 4150 | checksum = "ed320a6c934128d4f7e54fe00e16b8aeaecf215799d060ae14f93378da6dc834" 4151 | dependencies = [ 4152 | "arrayref", 4153 | "bytemuck", 4154 | "num-derive", 4155 | "num-traits", 4156 | "num_enum", 4157 | "solana-program", 4158 | "thiserror 1.0.69", 4159 | ] 4160 | 4161 | [[package]] 4162 | name = "spl-token" 4163 | version = "8.0.0" 4164 | source = "registry+https://github.com/rust-lang/crates.io-index" 4165 | checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" 4166 | dependencies = [ 4167 | "arrayref", 4168 | "bytemuck", 4169 | "num-derive", 4170 | "num-traits", 4171 | "num_enum", 4172 | "solana-account-info", 4173 | "solana-cpi", 4174 | "solana-decode-error", 4175 | "solana-instruction", 4176 | "solana-msg", 4177 | "solana-program-entrypoint", 4178 | "solana-program-error", 4179 | "solana-program-memory", 4180 | "solana-program-option", 4181 | "solana-program-pack", 4182 | "solana-pubkey", 4183 | "solana-rent", 4184 | "solana-sdk-ids", 4185 | "solana-sysvar", 4186 | "thiserror 2.0.12", 4187 | ] 4188 | 4189 | [[package]] 4190 | name = "spl-token-2022" 4191 | version = "6.0.0" 4192 | source = "registry+https://github.com/rust-lang/crates.io-index" 4193 | checksum = "5b27f7405010ef816587c944536b0eafbcc35206ab6ba0f2ca79f1d28e488f4f" 4194 | dependencies = [ 4195 | "arrayref", 4196 | "bytemuck", 4197 | "num-derive", 4198 | "num-traits", 4199 | "num_enum", 4200 | "solana-program", 4201 | "solana-security-txt", 4202 | "solana-zk-sdk", 4203 | "spl-elgamal-registry", 4204 | "spl-memo", 4205 | "spl-pod", 4206 | "spl-token 7.0.0", 4207 | "spl-token-confidential-transfer-ciphertext-arithmetic", 4208 | "spl-token-confidential-transfer-proof-extraction", 4209 | "spl-token-confidential-transfer-proof-generation", 4210 | "spl-token-group-interface", 4211 | "spl-token-metadata-interface", 4212 | "spl-transfer-hook-interface", 4213 | "spl-type-length-value", 4214 | "thiserror 1.0.69", 4215 | ] 4216 | 4217 | [[package]] 4218 | name = "spl-token-confidential-transfer-ciphertext-arithmetic" 4219 | version = "0.2.1" 4220 | source = "registry+https://github.com/rust-lang/crates.io-index" 4221 | checksum = "170378693c5516090f6d37ae9bad2b9b6125069be68d9acd4865bbe9fc8499fd" 4222 | dependencies = [ 4223 | "base64 0.22.1", 4224 | "bytemuck", 4225 | "solana-curve25519", 4226 | "solana-zk-sdk", 4227 | ] 4228 | 4229 | [[package]] 4230 | name = "spl-token-confidential-transfer-proof-extraction" 4231 | version = "0.2.1" 4232 | source = "registry+https://github.com/rust-lang/crates.io-index" 4233 | checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" 4234 | dependencies = [ 4235 | "bytemuck", 4236 | "solana-curve25519", 4237 | "solana-program", 4238 | "solana-zk-sdk", 4239 | "spl-pod", 4240 | "thiserror 2.0.12", 4241 | ] 4242 | 4243 | [[package]] 4244 | name = "spl-token-confidential-transfer-proof-generation" 4245 | version = "0.2.0" 4246 | source = "registry+https://github.com/rust-lang/crates.io-index" 4247 | checksum = "8627184782eec1894de8ea26129c61303f1f0adeed65c20e0b10bc584f09356d" 4248 | dependencies = [ 4249 | "curve25519-dalek 4.1.3", 4250 | "solana-zk-sdk", 4251 | "thiserror 1.0.69", 4252 | ] 4253 | 4254 | [[package]] 4255 | name = "spl-token-group-interface" 4256 | version = "0.5.0" 4257 | source = "registry+https://github.com/rust-lang/crates.io-index" 4258 | checksum = "d595667ed72dbfed8c251708f406d7c2814a3fa6879893b323d56a10bedfc799" 4259 | dependencies = [ 4260 | "bytemuck", 4261 | "num-derive", 4262 | "num-traits", 4263 | "solana-decode-error", 4264 | "solana-instruction", 4265 | "solana-msg", 4266 | "solana-program-error", 4267 | "solana-pubkey", 4268 | "spl-discriminator", 4269 | "spl-pod", 4270 | "thiserror 1.0.69", 4271 | ] 4272 | 4273 | [[package]] 4274 | name = "spl-token-metadata-interface" 4275 | version = "0.6.0" 4276 | source = "registry+https://github.com/rust-lang/crates.io-index" 4277 | checksum = "dfb9c89dbc877abd735f05547dcf9e6e12c00c11d6d74d8817506cab4c99fdbb" 4278 | dependencies = [ 4279 | "borsh 1.5.7", 4280 | "num-derive", 4281 | "num-traits", 4282 | "solana-borsh", 4283 | "solana-decode-error", 4284 | "solana-instruction", 4285 | "solana-msg", 4286 | "solana-program-error", 4287 | "solana-pubkey", 4288 | "spl-discriminator", 4289 | "spl-pod", 4290 | "spl-type-length-value", 4291 | "thiserror 1.0.69", 4292 | ] 4293 | 4294 | [[package]] 4295 | name = "spl-transfer-hook-interface" 4296 | version = "0.9.0" 4297 | source = "registry+https://github.com/rust-lang/crates.io-index" 4298 | checksum = "4aa7503d52107c33c88e845e1351565050362c2314036ddf19a36cd25137c043" 4299 | dependencies = [ 4300 | "arrayref", 4301 | "bytemuck", 4302 | "num-derive", 4303 | "num-traits", 4304 | "solana-account-info", 4305 | "solana-cpi", 4306 | "solana-decode-error", 4307 | "solana-instruction", 4308 | "solana-msg", 4309 | "solana-program-error", 4310 | "solana-pubkey", 4311 | "spl-discriminator", 4312 | "spl-pod", 4313 | "spl-program-error", 4314 | "spl-tlv-account-resolution", 4315 | "spl-type-length-value", 4316 | "thiserror 1.0.69", 4317 | ] 4318 | 4319 | [[package]] 4320 | name = "spl-type-length-value" 4321 | version = "0.7.0" 4322 | source = "registry+https://github.com/rust-lang/crates.io-index" 4323 | checksum = "ba70ef09b13af616a4c987797870122863cba03acc4284f226a4473b043923f9" 4324 | dependencies = [ 4325 | "bytemuck", 4326 | "num-derive", 4327 | "num-traits", 4328 | "solana-account-info", 4329 | "solana-decode-error", 4330 | "solana-msg", 4331 | "solana-program-error", 4332 | "spl-discriminator", 4333 | "spl-pod", 4334 | "thiserror 1.0.69", 4335 | ] 4336 | 4337 | [[package]] 4338 | name = "stable_deref_trait" 4339 | version = "1.2.0" 4340 | source = "registry+https://github.com/rust-lang/crates.io-index" 4341 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 4342 | 4343 | [[package]] 4344 | name = "strsim" 4345 | version = "0.11.1" 4346 | source = "registry+https://github.com/rust-lang/crates.io-index" 4347 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4348 | 4349 | [[package]] 4350 | name = "subtle" 4351 | version = "2.6.1" 4352 | source = "registry+https://github.com/rust-lang/crates.io-index" 4353 | checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 4354 | 4355 | [[package]] 4356 | name = "syn" 4357 | version = "1.0.109" 4358 | source = "registry+https://github.com/rust-lang/crates.io-index" 4359 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 4360 | dependencies = [ 4361 | "proc-macro2", 4362 | "quote", 4363 | "unicode-ident", 4364 | ] 4365 | 4366 | [[package]] 4367 | name = "syn" 4368 | version = "2.0.100" 4369 | source = "registry+https://github.com/rust-lang/crates.io-index" 4370 | checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" 4371 | dependencies = [ 4372 | "proc-macro2", 4373 | "quote", 4374 | "unicode-ident", 4375 | ] 4376 | 4377 | [[package]] 4378 | name = "sync_wrapper" 4379 | version = "0.1.2" 4380 | source = "registry+https://github.com/rust-lang/crates.io-index" 4381 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 4382 | 4383 | [[package]] 4384 | name = "synstructure" 4385 | version = "0.13.1" 4386 | source = "registry+https://github.com/rust-lang/crates.io-index" 4387 | checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 4388 | dependencies = [ 4389 | "proc-macro2", 4390 | "quote", 4391 | "syn 2.0.100", 4392 | ] 4393 | 4394 | [[package]] 4395 | name = "system-configuration" 4396 | version = "0.5.1" 4397 | source = "registry+https://github.com/rust-lang/crates.io-index" 4398 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 4399 | dependencies = [ 4400 | "bitflags 1.3.2", 4401 | "core-foundation", 4402 | "system-configuration-sys", 4403 | ] 4404 | 4405 | [[package]] 4406 | name = "system-configuration-sys" 4407 | version = "0.5.0" 4408 | source = "registry+https://github.com/rust-lang/crates.io-index" 4409 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 4410 | dependencies = [ 4411 | "core-foundation-sys", 4412 | "libc", 4413 | ] 4414 | 4415 | [[package]] 4416 | name = "task-local-extensions" 4417 | version = "0.1.4" 4418 | source = "registry+https://github.com/rust-lang/crates.io-index" 4419 | checksum = "ba323866e5d033818e3240feeb9f7db2c4296674e4d9e16b97b7bf8f490434e8" 4420 | dependencies = [ 4421 | "pin-utils", 4422 | ] 4423 | 4424 | [[package]] 4425 | name = "termcolor" 4426 | version = "1.4.1" 4427 | source = "registry+https://github.com/rust-lang/crates.io-index" 4428 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 4429 | dependencies = [ 4430 | "winapi-util", 4431 | ] 4432 | 4433 | [[package]] 4434 | name = "tests" 4435 | version = "0.1.0" 4436 | dependencies = [ 4437 | "borsh 1.5.7", 4438 | "borsh-derive 1.5.7", 4439 | "dotenvy", 4440 | "rand 0.9.0", 4441 | "sha2 0.10.8", 4442 | "solana-rpc-client", 4443 | "solana-rpc-client-api", 4444 | "solana-sdk", 4445 | "spl-associated-token-account", 4446 | "spl-associated-token-account-client", 4447 | "spl-token 8.0.0", 4448 | "tokio", 4449 | ] 4450 | 4451 | [[package]] 4452 | name = "thiserror" 4453 | version = "1.0.69" 4454 | source = "registry+https://github.com/rust-lang/crates.io-index" 4455 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 4456 | dependencies = [ 4457 | "thiserror-impl 1.0.69", 4458 | ] 4459 | 4460 | [[package]] 4461 | name = "thiserror" 4462 | version = "2.0.12" 4463 | source = "registry+https://github.com/rust-lang/crates.io-index" 4464 | checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" 4465 | dependencies = [ 4466 | "thiserror-impl 2.0.12", 4467 | ] 4468 | 4469 | [[package]] 4470 | name = "thiserror-impl" 4471 | version = "1.0.69" 4472 | source = "registry+https://github.com/rust-lang/crates.io-index" 4473 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 4474 | dependencies = [ 4475 | "proc-macro2", 4476 | "quote", 4477 | "syn 2.0.100", 4478 | ] 4479 | 4480 | [[package]] 4481 | name = "thiserror-impl" 4482 | version = "2.0.12" 4483 | source = "registry+https://github.com/rust-lang/crates.io-index" 4484 | checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" 4485 | dependencies = [ 4486 | "proc-macro2", 4487 | "quote", 4488 | "syn 2.0.100", 4489 | ] 4490 | 4491 | [[package]] 4492 | name = "tinystr" 4493 | version = "0.7.6" 4494 | source = "registry+https://github.com/rust-lang/crates.io-index" 4495 | checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" 4496 | dependencies = [ 4497 | "displaydoc", 4498 | "zerovec", 4499 | ] 4500 | 4501 | [[package]] 4502 | name = "tinyvec" 4503 | version = "1.9.0" 4504 | source = "registry+https://github.com/rust-lang/crates.io-index" 4505 | checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" 4506 | dependencies = [ 4507 | "tinyvec_macros", 4508 | ] 4509 | 4510 | [[package]] 4511 | name = "tinyvec_macros" 4512 | version = "0.1.1" 4513 | source = "registry+https://github.com/rust-lang/crates.io-index" 4514 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 4515 | 4516 | [[package]] 4517 | name = "tokio" 4518 | version = "1.44.1" 4519 | source = "registry+https://github.com/rust-lang/crates.io-index" 4520 | checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" 4521 | dependencies = [ 4522 | "backtrace", 4523 | "bytes", 4524 | "libc", 4525 | "mio", 4526 | "parking_lot", 4527 | "pin-project-lite", 4528 | "signal-hook-registry", 4529 | "socket2", 4530 | "tokio-macros", 4531 | "windows-sys 0.52.0", 4532 | ] 4533 | 4534 | [[package]] 4535 | name = "tokio-macros" 4536 | version = "2.5.0" 4537 | source = "registry+https://github.com/rust-lang/crates.io-index" 4538 | checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" 4539 | dependencies = [ 4540 | "proc-macro2", 4541 | "quote", 4542 | "syn 2.0.100", 4543 | ] 4544 | 4545 | [[package]] 4546 | name = "tokio-rustls" 4547 | version = "0.24.1" 4548 | source = "registry+https://github.com/rust-lang/crates.io-index" 4549 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 4550 | dependencies = [ 4551 | "rustls", 4552 | "tokio", 4553 | ] 4554 | 4555 | [[package]] 4556 | name = "tokio-util" 4557 | version = "0.7.14" 4558 | source = "registry+https://github.com/rust-lang/crates.io-index" 4559 | checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" 4560 | dependencies = [ 4561 | "bytes", 4562 | "futures-core", 4563 | "futures-sink", 4564 | "pin-project-lite", 4565 | "tokio", 4566 | ] 4567 | 4568 | [[package]] 4569 | name = "toml" 4570 | version = "0.5.11" 4571 | source = "registry+https://github.com/rust-lang/crates.io-index" 4572 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 4573 | dependencies = [ 4574 | "serde", 4575 | ] 4576 | 4577 | [[package]] 4578 | name = "toml_datetime" 4579 | version = "0.6.8" 4580 | source = "registry+https://github.com/rust-lang/crates.io-index" 4581 | checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" 4582 | 4583 | [[package]] 4584 | name = "toml_edit" 4585 | version = "0.22.24" 4586 | source = "registry+https://github.com/rust-lang/crates.io-index" 4587 | checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" 4588 | dependencies = [ 4589 | "indexmap", 4590 | "toml_datetime", 4591 | "winnow", 4592 | ] 4593 | 4594 | [[package]] 4595 | name = "tower-service" 4596 | version = "0.3.3" 4597 | source = "registry+https://github.com/rust-lang/crates.io-index" 4598 | checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 4599 | 4600 | [[package]] 4601 | name = "tracing" 4602 | version = "0.1.41" 4603 | source = "registry+https://github.com/rust-lang/crates.io-index" 4604 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 4605 | dependencies = [ 4606 | "pin-project-lite", 4607 | "tracing-core", 4608 | ] 4609 | 4610 | [[package]] 4611 | name = "tracing-core" 4612 | version = "0.1.33" 4613 | source = "registry+https://github.com/rust-lang/crates.io-index" 4614 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 4615 | dependencies = [ 4616 | "once_cell", 4617 | ] 4618 | 4619 | [[package]] 4620 | name = "try-lock" 4621 | version = "0.2.5" 4622 | source = "registry+https://github.com/rust-lang/crates.io-index" 4623 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4624 | 4625 | [[package]] 4626 | name = "typenum" 4627 | version = "1.18.0" 4628 | source = "registry+https://github.com/rust-lang/crates.io-index" 4629 | checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 4630 | 4631 | [[package]] 4632 | name = "unicase" 4633 | version = "2.8.1" 4634 | source = "registry+https://github.com/rust-lang/crates.io-index" 4635 | checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 4636 | 4637 | [[package]] 4638 | name = "unicode-ident" 4639 | version = "1.0.18" 4640 | source = "registry+https://github.com/rust-lang/crates.io-index" 4641 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 4642 | 4643 | [[package]] 4644 | name = "unicode-width" 4645 | version = "0.2.0" 4646 | source = "registry+https://github.com/rust-lang/crates.io-index" 4647 | checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" 4648 | 4649 | [[package]] 4650 | name = "universal-hash" 4651 | version = "0.5.1" 4652 | source = "registry+https://github.com/rust-lang/crates.io-index" 4653 | checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" 4654 | dependencies = [ 4655 | "crypto-common", 4656 | "subtle", 4657 | ] 4658 | 4659 | [[package]] 4660 | name = "untrusted" 4661 | version = "0.9.0" 4662 | source = "registry+https://github.com/rust-lang/crates.io-index" 4663 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 4664 | 4665 | [[package]] 4666 | name = "uriparse" 4667 | version = "0.6.4" 4668 | source = "registry+https://github.com/rust-lang/crates.io-index" 4669 | checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" 4670 | dependencies = [ 4671 | "fnv", 4672 | "lazy_static", 4673 | ] 4674 | 4675 | [[package]] 4676 | name = "url" 4677 | version = "2.5.4" 4678 | source = "registry+https://github.com/rust-lang/crates.io-index" 4679 | checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 4680 | dependencies = [ 4681 | "form_urlencoded", 4682 | "idna", 4683 | "percent-encoding", 4684 | ] 4685 | 4686 | [[package]] 4687 | name = "utf16_iter" 4688 | version = "1.0.5" 4689 | source = "registry+https://github.com/rust-lang/crates.io-index" 4690 | checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 4691 | 4692 | [[package]] 4693 | name = "utf8_iter" 4694 | version = "1.0.4" 4695 | source = "registry+https://github.com/rust-lang/crates.io-index" 4696 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 4697 | 4698 | [[package]] 4699 | name = "vcpkg" 4700 | version = "0.2.15" 4701 | source = "registry+https://github.com/rust-lang/crates.io-index" 4702 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 4703 | 4704 | [[package]] 4705 | name = "version_check" 4706 | version = "0.9.5" 4707 | source = "registry+https://github.com/rust-lang/crates.io-index" 4708 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 4709 | 4710 | [[package]] 4711 | name = "want" 4712 | version = "0.3.1" 4713 | source = "registry+https://github.com/rust-lang/crates.io-index" 4714 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 4715 | dependencies = [ 4716 | "try-lock", 4717 | ] 4718 | 4719 | [[package]] 4720 | name = "wasi" 4721 | version = "0.9.0+wasi-snapshot-preview1" 4722 | source = "registry+https://github.com/rust-lang/crates.io-index" 4723 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 4724 | 4725 | [[package]] 4726 | name = "wasi" 4727 | version = "0.11.0+wasi-snapshot-preview1" 4728 | source = "registry+https://github.com/rust-lang/crates.io-index" 4729 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 4730 | 4731 | [[package]] 4732 | name = "wasi" 4733 | version = "0.14.2+wasi-0.2.4" 4734 | source = "registry+https://github.com/rust-lang/crates.io-index" 4735 | checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 4736 | dependencies = [ 4737 | "wit-bindgen-rt", 4738 | ] 4739 | 4740 | [[package]] 4741 | name = "wasm-bindgen" 4742 | version = "0.2.100" 4743 | source = "registry+https://github.com/rust-lang/crates.io-index" 4744 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 4745 | dependencies = [ 4746 | "cfg-if", 4747 | "once_cell", 4748 | "rustversion", 4749 | "wasm-bindgen-macro", 4750 | ] 4751 | 4752 | [[package]] 4753 | name = "wasm-bindgen-backend" 4754 | version = "0.2.100" 4755 | source = "registry+https://github.com/rust-lang/crates.io-index" 4756 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 4757 | dependencies = [ 4758 | "bumpalo", 4759 | "log", 4760 | "proc-macro2", 4761 | "quote", 4762 | "syn 2.0.100", 4763 | "wasm-bindgen-shared", 4764 | ] 4765 | 4766 | [[package]] 4767 | name = "wasm-bindgen-futures" 4768 | version = "0.4.50" 4769 | source = "registry+https://github.com/rust-lang/crates.io-index" 4770 | checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 4771 | dependencies = [ 4772 | "cfg-if", 4773 | "js-sys", 4774 | "once_cell", 4775 | "wasm-bindgen", 4776 | "web-sys", 4777 | ] 4778 | 4779 | [[package]] 4780 | name = "wasm-bindgen-macro" 4781 | version = "0.2.100" 4782 | source = "registry+https://github.com/rust-lang/crates.io-index" 4783 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 4784 | dependencies = [ 4785 | "quote", 4786 | "wasm-bindgen-macro-support", 4787 | ] 4788 | 4789 | [[package]] 4790 | name = "wasm-bindgen-macro-support" 4791 | version = "0.2.100" 4792 | source = "registry+https://github.com/rust-lang/crates.io-index" 4793 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 4794 | dependencies = [ 4795 | "proc-macro2", 4796 | "quote", 4797 | "syn 2.0.100", 4798 | "wasm-bindgen-backend", 4799 | "wasm-bindgen-shared", 4800 | ] 4801 | 4802 | [[package]] 4803 | name = "wasm-bindgen-shared" 4804 | version = "0.2.100" 4805 | source = "registry+https://github.com/rust-lang/crates.io-index" 4806 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 4807 | dependencies = [ 4808 | "unicode-ident", 4809 | ] 4810 | 4811 | [[package]] 4812 | name = "web-sys" 4813 | version = "0.3.77" 4814 | source = "registry+https://github.com/rust-lang/crates.io-index" 4815 | checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 4816 | dependencies = [ 4817 | "js-sys", 4818 | "wasm-bindgen", 4819 | ] 4820 | 4821 | [[package]] 4822 | name = "web-time" 4823 | version = "1.1.0" 4824 | source = "registry+https://github.com/rust-lang/crates.io-index" 4825 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 4826 | dependencies = [ 4827 | "js-sys", 4828 | "wasm-bindgen", 4829 | ] 4830 | 4831 | [[package]] 4832 | name = "webpki-roots" 4833 | version = "0.25.4" 4834 | source = "registry+https://github.com/rust-lang/crates.io-index" 4835 | checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 4836 | 4837 | [[package]] 4838 | name = "winapi" 4839 | version = "0.3.9" 4840 | source = "registry+https://github.com/rust-lang/crates.io-index" 4841 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4842 | dependencies = [ 4843 | "winapi-i686-pc-windows-gnu", 4844 | "winapi-x86_64-pc-windows-gnu", 4845 | ] 4846 | 4847 | [[package]] 4848 | name = "winapi-i686-pc-windows-gnu" 4849 | version = "0.4.0" 4850 | source = "registry+https://github.com/rust-lang/crates.io-index" 4851 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4852 | 4853 | [[package]] 4854 | name = "winapi-util" 4855 | version = "0.1.9" 4856 | source = "registry+https://github.com/rust-lang/crates.io-index" 4857 | checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 4858 | dependencies = [ 4859 | "windows-sys 0.59.0", 4860 | ] 4861 | 4862 | [[package]] 4863 | name = "winapi-x86_64-pc-windows-gnu" 4864 | version = "0.4.0" 4865 | source = "registry+https://github.com/rust-lang/crates.io-index" 4866 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4867 | 4868 | [[package]] 4869 | name = "windows-sys" 4870 | version = "0.48.0" 4871 | source = "registry+https://github.com/rust-lang/crates.io-index" 4872 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4873 | dependencies = [ 4874 | "windows-targets 0.48.5", 4875 | ] 4876 | 4877 | [[package]] 4878 | name = "windows-sys" 4879 | version = "0.52.0" 4880 | source = "registry+https://github.com/rust-lang/crates.io-index" 4881 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4882 | dependencies = [ 4883 | "windows-targets 0.52.6", 4884 | ] 4885 | 4886 | [[package]] 4887 | name = "windows-sys" 4888 | version = "0.59.0" 4889 | source = "registry+https://github.com/rust-lang/crates.io-index" 4890 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 4891 | dependencies = [ 4892 | "windows-targets 0.52.6", 4893 | ] 4894 | 4895 | [[package]] 4896 | name = "windows-targets" 4897 | version = "0.48.5" 4898 | source = "registry+https://github.com/rust-lang/crates.io-index" 4899 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4900 | dependencies = [ 4901 | "windows_aarch64_gnullvm 0.48.5", 4902 | "windows_aarch64_msvc 0.48.5", 4903 | "windows_i686_gnu 0.48.5", 4904 | "windows_i686_msvc 0.48.5", 4905 | "windows_x86_64_gnu 0.48.5", 4906 | "windows_x86_64_gnullvm 0.48.5", 4907 | "windows_x86_64_msvc 0.48.5", 4908 | ] 4909 | 4910 | [[package]] 4911 | name = "windows-targets" 4912 | version = "0.52.6" 4913 | source = "registry+https://github.com/rust-lang/crates.io-index" 4914 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4915 | dependencies = [ 4916 | "windows_aarch64_gnullvm 0.52.6", 4917 | "windows_aarch64_msvc 0.52.6", 4918 | "windows_i686_gnu 0.52.6", 4919 | "windows_i686_gnullvm", 4920 | "windows_i686_msvc 0.52.6", 4921 | "windows_x86_64_gnu 0.52.6", 4922 | "windows_x86_64_gnullvm 0.52.6", 4923 | "windows_x86_64_msvc 0.52.6", 4924 | ] 4925 | 4926 | [[package]] 4927 | name = "windows_aarch64_gnullvm" 4928 | version = "0.48.5" 4929 | source = "registry+https://github.com/rust-lang/crates.io-index" 4930 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4931 | 4932 | [[package]] 4933 | name = "windows_aarch64_gnullvm" 4934 | version = "0.52.6" 4935 | source = "registry+https://github.com/rust-lang/crates.io-index" 4936 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4937 | 4938 | [[package]] 4939 | name = "windows_aarch64_msvc" 4940 | version = "0.48.5" 4941 | source = "registry+https://github.com/rust-lang/crates.io-index" 4942 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4943 | 4944 | [[package]] 4945 | name = "windows_aarch64_msvc" 4946 | version = "0.52.6" 4947 | source = "registry+https://github.com/rust-lang/crates.io-index" 4948 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4949 | 4950 | [[package]] 4951 | name = "windows_i686_gnu" 4952 | version = "0.48.5" 4953 | source = "registry+https://github.com/rust-lang/crates.io-index" 4954 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4955 | 4956 | [[package]] 4957 | name = "windows_i686_gnu" 4958 | version = "0.52.6" 4959 | source = "registry+https://github.com/rust-lang/crates.io-index" 4960 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4961 | 4962 | [[package]] 4963 | name = "windows_i686_gnullvm" 4964 | version = "0.52.6" 4965 | source = "registry+https://github.com/rust-lang/crates.io-index" 4966 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4967 | 4968 | [[package]] 4969 | name = "windows_i686_msvc" 4970 | version = "0.48.5" 4971 | source = "registry+https://github.com/rust-lang/crates.io-index" 4972 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4973 | 4974 | [[package]] 4975 | name = "windows_i686_msvc" 4976 | version = "0.52.6" 4977 | source = "registry+https://github.com/rust-lang/crates.io-index" 4978 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4979 | 4980 | [[package]] 4981 | name = "windows_x86_64_gnu" 4982 | version = "0.48.5" 4983 | source = "registry+https://github.com/rust-lang/crates.io-index" 4984 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4985 | 4986 | [[package]] 4987 | name = "windows_x86_64_gnu" 4988 | version = "0.52.6" 4989 | source = "registry+https://github.com/rust-lang/crates.io-index" 4990 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4991 | 4992 | [[package]] 4993 | name = "windows_x86_64_gnullvm" 4994 | version = "0.48.5" 4995 | source = "registry+https://github.com/rust-lang/crates.io-index" 4996 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4997 | 4998 | [[package]] 4999 | name = "windows_x86_64_gnullvm" 5000 | version = "0.52.6" 5001 | source = "registry+https://github.com/rust-lang/crates.io-index" 5002 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 5003 | 5004 | [[package]] 5005 | name = "windows_x86_64_msvc" 5006 | version = "0.48.5" 5007 | source = "registry+https://github.com/rust-lang/crates.io-index" 5008 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 5009 | 5010 | [[package]] 5011 | name = "windows_x86_64_msvc" 5012 | version = "0.52.6" 5013 | source = "registry+https://github.com/rust-lang/crates.io-index" 5014 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 5015 | 5016 | [[package]] 5017 | name = "winnow" 5018 | version = "0.7.4" 5019 | source = "registry+https://github.com/rust-lang/crates.io-index" 5020 | checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" 5021 | dependencies = [ 5022 | "memchr", 5023 | ] 5024 | 5025 | [[package]] 5026 | name = "winreg" 5027 | version = "0.50.0" 5028 | source = "registry+https://github.com/rust-lang/crates.io-index" 5029 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 5030 | dependencies = [ 5031 | "cfg-if", 5032 | "windows-sys 0.48.0", 5033 | ] 5034 | 5035 | [[package]] 5036 | name = "wit-bindgen-rt" 5037 | version = "0.39.0" 5038 | source = "registry+https://github.com/rust-lang/crates.io-index" 5039 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 5040 | dependencies = [ 5041 | "bitflags 2.9.0", 5042 | ] 5043 | 5044 | [[package]] 5045 | name = "write16" 5046 | version = "1.0.0" 5047 | source = "registry+https://github.com/rust-lang/crates.io-index" 5048 | checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 5049 | 5050 | [[package]] 5051 | name = "writeable" 5052 | version = "0.5.5" 5053 | source = "registry+https://github.com/rust-lang/crates.io-index" 5054 | checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 5055 | 5056 | [[package]] 5057 | name = "yoke" 5058 | version = "0.7.5" 5059 | source = "registry+https://github.com/rust-lang/crates.io-index" 5060 | checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" 5061 | dependencies = [ 5062 | "serde", 5063 | "stable_deref_trait", 5064 | "yoke-derive", 5065 | "zerofrom", 5066 | ] 5067 | 5068 | [[package]] 5069 | name = "yoke-derive" 5070 | version = "0.7.5" 5071 | source = "registry+https://github.com/rust-lang/crates.io-index" 5072 | checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" 5073 | dependencies = [ 5074 | "proc-macro2", 5075 | "quote", 5076 | "syn 2.0.100", 5077 | "synstructure", 5078 | ] 5079 | 5080 | [[package]] 5081 | name = "zerocopy" 5082 | version = "0.7.35" 5083 | source = "registry+https://github.com/rust-lang/crates.io-index" 5084 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 5085 | dependencies = [ 5086 | "zerocopy-derive 0.7.35", 5087 | ] 5088 | 5089 | [[package]] 5090 | name = "zerocopy" 5091 | version = "0.8.24" 5092 | source = "registry+https://github.com/rust-lang/crates.io-index" 5093 | checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" 5094 | dependencies = [ 5095 | "zerocopy-derive 0.8.24", 5096 | ] 5097 | 5098 | [[package]] 5099 | name = "zerocopy-derive" 5100 | version = "0.7.35" 5101 | source = "registry+https://github.com/rust-lang/crates.io-index" 5102 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 5103 | dependencies = [ 5104 | "proc-macro2", 5105 | "quote", 5106 | "syn 2.0.100", 5107 | ] 5108 | 5109 | [[package]] 5110 | name = "zerocopy-derive" 5111 | version = "0.8.24" 5112 | source = "registry+https://github.com/rust-lang/crates.io-index" 5113 | checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" 5114 | dependencies = [ 5115 | "proc-macro2", 5116 | "quote", 5117 | "syn 2.0.100", 5118 | ] 5119 | 5120 | [[package]] 5121 | name = "zerofrom" 5122 | version = "0.1.6" 5123 | source = "registry+https://github.com/rust-lang/crates.io-index" 5124 | checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 5125 | dependencies = [ 5126 | "zerofrom-derive", 5127 | ] 5128 | 5129 | [[package]] 5130 | name = "zerofrom-derive" 5131 | version = "0.1.6" 5132 | source = "registry+https://github.com/rust-lang/crates.io-index" 5133 | checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 5134 | dependencies = [ 5135 | "proc-macro2", 5136 | "quote", 5137 | "syn 2.0.100", 5138 | "synstructure", 5139 | ] 5140 | 5141 | [[package]] 5142 | name = "zeroize" 5143 | version = "1.8.1" 5144 | source = "registry+https://github.com/rust-lang/crates.io-index" 5145 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 5146 | dependencies = [ 5147 | "zeroize_derive", 5148 | ] 5149 | 5150 | [[package]] 5151 | name = "zeroize_derive" 5152 | version = "1.4.2" 5153 | source = "registry+https://github.com/rust-lang/crates.io-index" 5154 | checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" 5155 | dependencies = [ 5156 | "proc-macro2", 5157 | "quote", 5158 | "syn 2.0.100", 5159 | ] 5160 | 5161 | [[package]] 5162 | name = "zerovec" 5163 | version = "0.10.4" 5164 | source = "registry+https://github.com/rust-lang/crates.io-index" 5165 | checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" 5166 | dependencies = [ 5167 | "yoke", 5168 | "zerofrom", 5169 | "zerovec-derive", 5170 | ] 5171 | 5172 | [[package]] 5173 | name = "zerovec-derive" 5174 | version = "0.10.3" 5175 | source = "registry+https://github.com/rust-lang/crates.io-index" 5176 | checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" 5177 | dependencies = [ 5178 | "proc-macro2", 5179 | "quote", 5180 | "syn 2.0.100", 5181 | ] 5182 | 5183 | [[package]] 5184 | name = "zstd" 5185 | version = "0.13.3" 5186 | source = "registry+https://github.com/rust-lang/crates.io-index" 5187 | checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" 5188 | dependencies = [ 5189 | "zstd-safe", 5190 | ] 5191 | 5192 | [[package]] 5193 | name = "zstd-safe" 5194 | version = "7.2.4" 5195 | source = "registry+https://github.com/rust-lang/crates.io-index" 5196 | checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" 5197 | dependencies = [ 5198 | "zstd-sys", 5199 | ] 5200 | 5201 | [[package]] 5202 | name = "zstd-sys" 5203 | version = "2.0.15+zstd.1.5.7" 5204 | source = "registry+https://github.com/rust-lang/crates.io-index" 5205 | checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" 5206 | dependencies = [ 5207 | "cc", 5208 | "pkg-config", 5209 | ] 5210 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | resolver="2" 3 | members = [ 4 | "programs/*", 5 | "tests" 6 | ] 7 | 8 | [profile.release] 9 | # 启用激进优化 10 | opt-level = 3 11 | # 禁用溢出检查(BPF 运行时已强制检查溢出) 12 | overflow-checks = false 13 | # 启用 LTO(链接时优化) 14 | lto = "fat" 15 | # 单代码生成单元,最大化优化效果 16 | codegen-units = 1 17 | # 禁用调试信息(减少二进制体积) 18 | debug = false 19 | 20 | [profile.release.build-override] 21 | # 确保依赖项也使用最高优化 22 | opt-level = 3 23 | codegen-units = 1 24 | incremental = false 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AMM Proxy Contract 2 | 3 | 本项目是基于 [ChainBuff/amm-proxy-contract](https://github.com/ChainBuff/amm-proxy-contract) 进行功能完善的 Solana 区块链 Swap 合约。 4 | 5 | ## 项目来源 6 | 7 | 本项目基于 [ChainBuff/amm-proxy-contract](https://github.com/ChainBuff/amm-proxy-contract) 进行开发,主要完善了以下功能: 8 | 9 | 1. **添加卖出功能**: 10 | - 为 Raydium 添加了卖出操作 11 | - 为 Pump 添加了普通卖出和 AMM 卖出操作 12 | - 完善了相关的测试用例 13 | 14 | 2. **功能特性**: 15 | - 支持多个主流 DEX 的交易操作 16 | - Raydium 买入和卖出 17 | - Pump 买入和卖出(包括普通交易和 AMM 交易) 18 | - 提供关联代币账户(ATA)管理 19 | - 支持时间槽管理 20 | - 高性能优化 21 | - 最高级别编译优化 22 | - 完整的链接时优化(LTO) 23 | - 单一代码生成单元 24 | 25 | ## 最近更新 26 | 27 | ### 2024年4月更新 - 修复Pump协议指令鉴别器不匹配问题 28 | 29 | **问题描述**: 30 | 在使用Pump协议普通交易(内盘)进行卖出操作时,交易失败并返回错误: 31 | ``` 32 | "Instruction #1 Failed - custom program error: 101 | Fallback functions are not supported" 33 | ``` 34 | 35 | **原因分析**: 36 | 内盘和外盘的sell指令鉴别器配置错误。原先假设内盘sell鉴别器是`[103, 6, 61, 18, 1, 218, 235, 234]`,但经过交易分析发现正确的鉴别器是`[51, 230, 133, 164, 1, 127, 131, 173]`,与外盘sell鉴别器相同。 37 | 38 | **修复方案**: 39 | 1. 更新`PUMPFUN_SELL_SELECTOR`为正确的内盘sell鉴别器: `[51, 230, 133, 164, 1, 127, 131, 173]` 40 | 2. 明确定义`PUMPAMM_SELL_SELECTOR`为外盘sell鉴别器: `[51, 230, 133, 164, 1, 127, 131, 173]`(与内盘相同) 41 | 3. 同时定义`PUMPAMM_BUY_SELECTOR`以提高代码清晰度: `[102, 6, 61, 18, 1, 218, 235, 234]` 42 | 43 | ## 支持的 DEX 44 | 45 | 1. **Raydium** 46 | - 支持买入和卖出操作 47 | - 通过 `process_raydium_buy` 和 `process_raydium_sell` 函数处理 48 | 49 | 2. **Pump** 50 | - 支持四种交易操作: 51 | - 普通买入 (`process_pump_buy`) 52 | - AMM 买入 (`process_pump_amm_buy`) 53 | - 普通卖出 (`process_pump_sell`) 54 | - AMM 卖出 (`process_pump_amm_sell`) 55 | 56 | ## 项目结构 57 | 58 | ``` 59 | amm-proxy-contract/ 60 | ├── programs/ # 智能合约代码目录 61 | │ └── dex/ # DEX 代理合约 62 | │ ├── src/ # 源代码目录 63 | │ │ ├── lib.rs # 合约入口文件 64 | │ │ ├── processor.rs # 指令处理器 65 | │ │ └── instructions/ # 指令模块目录 66 | │ │ ├── raydium.rs # Raydium 相关操作 67 | │ │ ├── pump.rs # Pump 相关操作 68 | │ │ ├── ata.rs # 关联代币账户管理 69 | │ │ └── slot.rs # 时间槽管理 70 | │ └── Cargo.toml # 合约项目配置文件 71 | ├── tests/ # 测试代码目录 72 | │ ├── src/ # Rust 测试源码 73 | │ └── Cargo.toml # 测试项目配置文件 74 | ├── Cargo.toml # 工作空间配置文件 75 | ├── Cargo.lock # 依赖锁定文件 76 | └── README.md # 项目说明文档 77 | ``` 78 | 79 | ### 主要组件 80 | 81 | 1. **指令处理器 (processor.rs)** 82 | - 处理所有传入的指令 83 | - 根据指令选择器路由到相应的处理函数 84 | 85 | 2. **指令模块 (instructions/)** 86 | - `raydium.rs`: Raydium DEX 相关操作 87 | - `pump.rs`: Pump DEX 相关操作 88 | - `ata.rs`: 关联代币账户管理 89 | - `slot.rs`: 时间槽管理 90 | 91 | 92 | ## 开发环境要求 93 | 94 | - Rust 1.65.0 或更高版本 95 | - Solana CLI 工具 96 | - Anchor 框架(可选) 97 | - Node.js 16+ 98 | 99 | ## 安装依赖 100 | 101 | ### Rust 依赖 102 | ```bash 103 | cargo build 104 | ``` 105 | 106 | ## 构建和测试 107 | 108 | 1. 克隆项目 109 | ```bash 110 | git clone https://github.com/vnxfsc/amm-proxy-contract.git 111 | cd amm-proxy-contract 112 | ``` 113 | 114 | 2. 构建项目 115 | ```bash 116 | cargo build 117 | ``` 118 | 119 | 3. 运行测试 120 | ```bash 121 | cd tests 122 | cargo run 123 | ``` 124 | 125 | ## 部署 126 | 127 | 1. 构建发布版本 128 | ```bash 129 | cargo build-bpf 130 | ``` 131 | 132 | 2. 部署到 Solana 网络 133 | ```bash 134 | solana program deploy target/deploy/amm_proxy_contract.so 135 | ``` 136 | 137 | ## 部署信息 138 | 139 | - 代理合约程序ID: `AmXoSVCLjsfKrwCUqvkMFXYcDzZ4FeoMYs7SAhGyfMGy` 140 | - Pump程序ID: `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` 141 | - PumpAMM程序ID: `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` 142 | - Raydium程序ID: `675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8` 143 | 144 | ## 使用示例 145 | 146 | ### Raydium 交易 147 | 148 | ```rust 149 | // 买入示例 150 | let buy_instruction = Instruction { 151 | program_id: PROGRAM_ID, 152 | accounts: vec![ 153 | // 账户列表 154 | ], 155 | data: RAYDIUM_BUY_SELECTOR.to_vec(), 156 | }; 157 | 158 | // 卖出示例 159 | let sell_instruction = Instruction { 160 | program_id: PROGRAM_ID, 161 | accounts: vec![ 162 | // 账户列表 163 | ], 164 | data: RAYDIUM_SELL_SELECTOR.to_vec(), 165 | }; 166 | ``` 167 | 168 | ### Pump 交易 169 | 170 | ```rust 171 | // 普通买入示例 172 | let buy_instruction = Instruction { 173 | program_id: PROGRAM_ID, 174 | accounts: vec![ 175 | // 账户列表 176 | ], 177 | data: PUMP_SELECTOR.to_vec(), 178 | }; 179 | 180 | // 普通卖出示例 181 | let sell_instruction = Instruction { 182 | program_id: PROGRAM_ID, 183 | accounts: vec![ 184 | // 账户列表 185 | ], 186 | data: PUMP_SELL_SELECTOR.to_vec(), 187 | }; 188 | 189 | // AMM 买入示例 190 | let amm_buy_instruction = Instruction { 191 | program_id: PROGRAM_ID, 192 | accounts: vec![ 193 | // 账户列表 194 | ], 195 | data: PUMP_AMM_SELECTOR.to_vec(), 196 | }; 197 | 198 | // AMM 卖出示例 199 | let amm_sell_instruction = Instruction { 200 | program_id: PROGRAM_ID, 201 | accounts: vec![ 202 | // 账户列表 203 | ], 204 | data: PUMP_AMM_SELL_SELECTOR.to_vec(), 205 | }; 206 | ``` 207 | 208 | ## 注意事项 209 | 210 | - 使用前请确保账户有足够的代币和 SOL 用于交易 211 | - 建议在测试网进行充分测试后再部署到主网 212 | - 交易时请注意滑点和手续费 213 | 214 | ## 贡献指南 215 | 216 | 1. Fork 项目 217 | 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 218 | 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 219 | 4. 推送到分支 (`git push origin feature/AmazingFeature`) 220 | 5. 创建 Pull Request 221 | 222 | ## 许可证 223 | 224 | MIT License 225 | 226 | ## 联系方式 227 | - 电 报:[小P](https://t.me/caobizhiwang) 228 | - 交流群:[Buff社区](https://t.me/chainbuff) 229 | 230 | ## 环境变量 231 | 232 | 在运行测试之前,需要设置以下环境变量: 233 | 234 | ```bash 235 | # .env 文件 236 | PRIVATE_KEY=你的私钥 237 | ``` 238 | 239 | ## 测试 240 | 241 | ### Rust 测试 242 | ```bash 243 | cd tests 244 | cargo run 245 | ``` 246 | -------------------------------------------------------------------------------- /programs/dex/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "amm-proxy-contract" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | crate-type = ["cdylib", "lib"] 8 | name="amm_proxy_contract" 9 | 10 | [dependencies] 11 | solana-program = "=2.2.1" 12 | arrayref = "0.3.7" -------------------------------------------------------------------------------- /programs/dex/src/instructions/ata.rs: -------------------------------------------------------------------------------- 1 | use arrayref::array_ref; 2 | use solana_program::{ 3 | account_info::AccountInfo, 4 | entrypoint::ProgramResult, 5 | instruction::{AccountMeta, Instruction}, 6 | program::invoke_unchecked, 7 | pubkey::Pubkey, 8 | }; 9 | 10 | pub const ATA_SELECTOR: &[u8; 8] = &[22, 51, 53, 97, 247, 184, 54, 78]; 11 | 12 | const ATA_PROGRAM: Pubkey = solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); 13 | pub fn process_create_associated_token_account( 14 | accounts: &[AccountInfo], 15 | instruction_data: &[u8], 16 | ) -> ProgramResult { 17 | let [funder_info, associated_token_account_info, spl_token_mint_info, system_program_info, spl_token_program_info] = 18 | array_ref![accounts, 0, 5]; 19 | 20 | let funder_key = *funder_info.key; 21 | 22 | invoke_unchecked( 23 | &Instruction { 24 | program_id: ATA_PROGRAM, 25 | accounts: vec![ 26 | AccountMeta::new(funder_key, true), 27 | AccountMeta::new(*associated_token_account_info.key, false), 28 | AccountMeta::new_readonly(funder_key, false), 29 | AccountMeta::new_readonly(*spl_token_mint_info.key, false), 30 | AccountMeta::new_readonly(*system_program_info.key, false), 31 | AccountMeta::new_readonly(*spl_token_program_info.key, false), 32 | ], 33 | data: instruction_data.to_vec(), 34 | }, 35 | accounts, 36 | ) 37 | } 38 | -------------------------------------------------------------------------------- /programs/dex/src/instructions/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod ata; 2 | pub mod pump; 3 | pub mod raydium; 4 | pub mod slot; 5 | -------------------------------------------------------------------------------- /programs/dex/src/instructions/pump.rs: -------------------------------------------------------------------------------- 1 | use solana_program::{ 2 | account_info::AccountInfo, 3 | entrypoint::ProgramResult, 4 | instruction::{AccountMeta, Instruction}, 5 | program::invoke_unchecked, 6 | pubkey, 7 | pubkey::Pubkey, 8 | }; 9 | 10 | const PUMPFUN_BUY_SELECTOR: &[u8; 8] = &[102, 6, 61, 18, 1, 218, 235, 234]; 11 | const PUMPFUN_SELL_SELECTOR: &[u8; 8] = &[51, 230, 133, 164, 1, 127, 131, 173]; 12 | const PUMPAMM_BUY_SELECTOR: &[u8; 8] = &[102, 6, 61, 18, 1, 218, 235, 234]; 13 | const PUMPAMM_SELL_SELECTOR: &[u8; 8] = &[51, 230, 133, 164, 1, 127, 131, 173]; 14 | 15 | pub const PUMP_SELECTOR: &[u8; 8] = &[82, 225, 119, 231, 78, 29, 45, 70]; 16 | pub const PUMP_AMM_SELECTOR: &[u8; 8] = &[129, 59, 179, 195, 110, 135, 61, 2]; 17 | pub const PUMP_SELL_SELECTOR: &[u8; 8] = &[83, 225, 119, 231, 78, 29, 45, 70]; 18 | pub const PUMP_AMM_SELL_SELECTOR: &[u8; 8] = &[130, 59, 179, 195, 110, 135, 61, 2]; 19 | 20 | const PUMP_PROGRAM: Pubkey = pubkey!("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"); 21 | const PUMP_AMM_PROGRAM_ID: Pubkey = pubkey!("pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"); 22 | 23 | const ARG_LEN: usize = 24; 24 | 25 | fn to_account_metas(accounts: &[AccountInfo]) -> Vec { 26 | let mut metas = Vec::with_capacity(accounts.len()); 27 | metas.append( 28 | &mut accounts 29 | .iter() 30 | .map(|acc| match acc.is_writable { 31 | false => AccountMeta::new_readonly(*acc.key, acc.is_signer), 32 | true => AccountMeta::new(*acc.key, acc.is_signer), 33 | }) 34 | .collect(), 35 | ); 36 | metas 37 | } 38 | 39 | pub fn process_pump_buy(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult { 40 | let mut data = Vec::with_capacity(ARG_LEN); 41 | data.extend_from_slice(PUMPFUN_BUY_SELECTOR); 42 | data.extend_from_slice(instruction_data); 43 | 44 | invoke_unchecked( 45 | &Instruction { 46 | program_id: PUMP_PROGRAM, 47 | accounts: to_account_metas(accounts), 48 | data, 49 | }, 50 | accounts, 51 | ) 52 | } 53 | 54 | pub fn process_pump_amm_buy(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult { 55 | let mut data = Vec::with_capacity(ARG_LEN); 56 | data.extend_from_slice(PUMPAMM_BUY_SELECTOR); 57 | data.extend_from_slice(instruction_data); 58 | 59 | invoke_unchecked( 60 | &Instruction { 61 | program_id: PUMP_AMM_PROGRAM_ID, 62 | accounts: to_account_metas(accounts), 63 | data, 64 | }, 65 | accounts, 66 | ) 67 | } 68 | 69 | pub fn process_pump_sell(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult { 70 | let mut data = Vec::with_capacity(ARG_LEN); 71 | data.extend_from_slice(PUMPFUN_SELL_SELECTOR); 72 | data.extend_from_slice(instruction_data); 73 | 74 | invoke_unchecked( 75 | &Instruction { 76 | program_id: PUMP_PROGRAM, 77 | accounts: to_account_metas(accounts), 78 | data, 79 | }, 80 | accounts, 81 | ) 82 | } 83 | 84 | pub fn process_pump_amm_sell(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult { 85 | let mut data = Vec::with_capacity(ARG_LEN); 86 | data.extend_from_slice(PUMPAMM_SELL_SELECTOR); 87 | data.extend_from_slice(instruction_data); 88 | 89 | invoke_unchecked( 90 | &Instruction { 91 | program_id: PUMP_AMM_PROGRAM_ID, 92 | accounts: to_account_metas(accounts), 93 | data, 94 | }, 95 | accounts, 96 | ) 97 | } 98 | -------------------------------------------------------------------------------- /programs/dex/src/instructions/raydium.rs: -------------------------------------------------------------------------------- 1 | use arrayref::array_ref; 2 | use solana_program::{ 3 | account_info::AccountInfo, 4 | entrypoint::ProgramResult, 5 | instruction::{AccountMeta, Instruction}, 6 | program::invoke_unchecked, 7 | }; 8 | 9 | pub const RAYDIUM_BUY_SELECTOR: &[u8; 8] = &[182, 77, 232, 39, 117, 138, 183, 72]; 10 | pub const RAYDIUM_SELL_SELECTOR: &[u8; 8] = &[183, 77, 232, 39, 117, 138, 183, 72]; 11 | 12 | pub fn process_raydium_buy(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult { 13 | let [amm_program, token_program, amm_id, amm_authority, amm_coin_vault, amm_pc_vault, user_source_token, user_destination_token, user_source_owner] = 14 | array_ref![accounts, 0, 9]; 15 | 16 | let amm_pool = *amm_id.key; 17 | 18 | invoke_unchecked( 19 | &Instruction { 20 | program_id: *amm_program.key, 21 | accounts: vec![ 22 | AccountMeta::new_readonly(*token_program.key, false), 23 | AccountMeta::new(amm_pool, false), 24 | AccountMeta::new_readonly(*amm_authority.key, false), 25 | AccountMeta::new(amm_pool, false), 26 | AccountMeta::new(*amm_coin_vault.key, false), 27 | AccountMeta::new(*amm_pc_vault.key, false), 28 | AccountMeta::new_readonly(amm_pool, false), 29 | AccountMeta::new(amm_pool, false), 30 | AccountMeta::new(amm_pool, false), 31 | AccountMeta::new(amm_pool, false), 32 | AccountMeta::new(amm_pool, false), 33 | AccountMeta::new(amm_pool, false), 34 | AccountMeta::new(amm_pool, false), 35 | AccountMeta::new_readonly(amm_pool, false), 36 | AccountMeta::new(*user_source_token.key, false), 37 | AccountMeta::new(*user_destination_token.key, false), 38 | AccountMeta::new_readonly(*user_source_owner.key, true), 39 | ], 40 | data: instruction_data.to_vec(), 41 | }, 42 | accounts, 43 | ) 44 | } 45 | 46 | pub fn process_raydium_sell(accounts: &[AccountInfo], instruction_data: &[u8]) -> ProgramResult { 47 | let [amm_program, token_program, amm_id, amm_authority, amm_coin_vault, amm_pc_vault, user_source_token, user_destination_token, user_source_owner] = 48 | array_ref![accounts, 0, 9]; 49 | 50 | let amm_pool = *amm_id.key; 51 | 52 | invoke_unchecked( 53 | &Instruction { 54 | program_id: *amm_program.key, 55 | accounts: vec![ 56 | AccountMeta::new_readonly(*token_program.key, false), 57 | AccountMeta::new(amm_pool, false), 58 | AccountMeta::new_readonly(*amm_authority.key, false), 59 | AccountMeta::new(amm_pool, false), 60 | AccountMeta::new(*amm_coin_vault.key, false), 61 | AccountMeta::new(*amm_pc_vault.key, false), 62 | AccountMeta::new_readonly(amm_pool, false), 63 | AccountMeta::new(amm_pool, false), 64 | AccountMeta::new(amm_pool, false), 65 | AccountMeta::new(amm_pool, false), 66 | AccountMeta::new(amm_pool, false), 67 | AccountMeta::new(amm_pool, false), 68 | AccountMeta::new(amm_pool, false), 69 | AccountMeta::new_readonly(amm_pool, false), 70 | AccountMeta::new(*user_source_token.key, false), 71 | AccountMeta::new(*user_destination_token.key, false), 72 | AccountMeta::new_readonly(*user_source_owner.key, true), 73 | ], 74 | data: instruction_data.to_vec(), 75 | }, 76 | accounts, 77 | ) 78 | } 79 | -------------------------------------------------------------------------------- /programs/dex/src/instructions/slot.rs: -------------------------------------------------------------------------------- 1 | use solana_program::{ 2 | clock::Clock, entrypoint::ProgramResult, program_error::ProgramError, sysvar::Sysvar, 3 | }; 4 | 5 | pub const EXPIRED_SLOT_SELECTOR: &[u8; 8] = &[169, 134, 33, 62, 168, 2, 246, 176]; 6 | 7 | #[derive(Debug, Clone)] 8 | pub enum MyError { 9 | SlotExpired, 10 | } 11 | 12 | impl From for ProgramError { 13 | fn from(e: MyError) -> Self { 14 | ProgramError::Custom(e as u32) // 自定义错误码更清晰 15 | } 16 | } 17 | pub fn process_expired_slot(instruction_data: &[u8]) -> ProgramResult { 18 | let expiry_slot = u64::from_le_bytes( 19 | instruction_data 20 | .try_into() 21 | .map_err(|_| ProgramError::InvalidInstructionData)?, 22 | ); 23 | 24 | let clock = Clock::get()?; 25 | 26 | if clock.slot > expiry_slot { 27 | return Err(MyError::SlotExpired.into()); 28 | } 29 | 30 | Ok(()) 31 | } 32 | -------------------------------------------------------------------------------- /programs/dex/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![allow(unexpected_cfgs)] 2 | 3 | use solana_program::{ 4 | account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, pubkey::Pubkey, 5 | }; 6 | 7 | pub mod instructions; 8 | pub mod processor; 9 | 10 | entrypoint!(process_instruction); 11 | 12 | fn process_instruction( 13 | program_id: &Pubkey, 14 | accounts: &[AccountInfo], 15 | instruction_data: &[u8], 16 | ) -> ProgramResult { 17 | processor::process_instruction(program_id, accounts, instruction_data) 18 | } 19 | -------------------------------------------------------------------------------- /programs/dex/src/processor.rs: -------------------------------------------------------------------------------- 1 | use solana_program::{ 2 | account_info::AccountInfo, entrypoint::ProgramResult, program_error::ProgramError, 3 | pubkey::Pubkey, 4 | }; 5 | 6 | use crate::instructions::ata::{process_create_associated_token_account, ATA_SELECTOR}; 7 | use crate::instructions::pump::{ 8 | process_pump_amm_buy, process_pump_amm_sell, process_pump_buy, process_pump_sell, 9 | PUMP_AMM_SELL_SELECTOR, PUMP_AMM_SELECTOR, PUMP_SELL_SELECTOR, PUMP_SELECTOR, 10 | }; 11 | use crate::instructions::raydium::{process_raydium_buy, process_raydium_sell, RAYDIUM_BUY_SELECTOR, RAYDIUM_SELL_SELECTOR}; 12 | use crate::instructions::slot::{process_expired_slot, EXPIRED_SLOT_SELECTOR}; 13 | 14 | type SelectorHandler = fn(&[AccountInfo], &[u8]) -> ProgramResult; 15 | 16 | const SELECTORS: [(&[u8; 8], SelectorHandler); 8] = [ 17 | (PUMP_SELECTOR, |accounts, rest| { 18 | process_pump_buy(accounts, rest) 19 | }), 20 | (PUMP_AMM_SELECTOR, |accounts, rest: &[u8]| { 21 | process_pump_amm_buy(accounts, rest) 22 | }), 23 | (PUMP_SELL_SELECTOR, |accounts, rest| { 24 | process_pump_sell(accounts, rest) 25 | }), 26 | (PUMP_AMM_SELL_SELECTOR, |accounts, rest| { 27 | process_pump_amm_sell(accounts, rest) 28 | }), 29 | (ATA_SELECTOR, |accounts, rest| { 30 | process_create_associated_token_account(accounts, rest) 31 | }), 32 | (EXPIRED_SLOT_SELECTOR, |_, rest| process_expired_slot(rest)), 33 | (RAYDIUM_BUY_SELECTOR, |accounts, rest| { 34 | process_raydium_buy(accounts, rest) 35 | }), 36 | (RAYDIUM_SELL_SELECTOR, |accounts, rest| { 37 | process_raydium_sell(accounts, rest) 38 | }), 39 | ]; 40 | 41 | pub fn process_instruction( 42 | _program_id: &Pubkey, 43 | accounts: &[AccountInfo], 44 | instruction_data: &[u8], 45 | ) -> ProgramResult { 46 | let (method, rest) = instruction_data.split_at(8); 47 | 48 | for (selector, handler) in SELECTORS.iter() { 49 | if method == selector.as_slice() { 50 | return handler(accounts, rest); 51 | } 52 | } 53 | 54 | Err(ProgramError::InvalidInstructionData) 55 | } 56 | -------------------------------------------------------------------------------- /tests/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tests" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | borsh="1.5.7" 8 | borsh-derive = "1.5.7" 9 | dotenvy = "0.15.7" 10 | solana-sdk = "2.2.1" 11 | tokio = { version = "1.43.0", features = ["net", "macros", "io-std", "rt-multi-thread", "time", "sync"] } 12 | spl-associated-token-account = { version = "6.0.0", features = [ 13 | "no-entrypoint", 14 | ] } 15 | spl-token = { version = "8.0.0", features = ["no-entrypoint"] } 16 | solana-rpc-client = "2.2.1" 17 | solana-rpc-client-api = "2.2.1" 18 | sha2 = "0.10.8" 19 | spl-associated-token-account-client = "2.0.0" 20 | rand = "0.9.0" -------------------------------------------------------------------------------- /tests/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::{env, fmt::Error}; 2 | 3 | use dotenvy::dotenv; 4 | use rand::{distr::Alphanumeric, Rng}; 5 | use sha2::{Digest, Sha256}; 6 | use solana_rpc_client::nonblocking::rpc_client::RpcClient; 7 | use solana_rpc_client_api::config::RpcSendTransactionConfig; 8 | use solana_sdk::{ 9 | commitment_config::{CommitmentConfig, CommitmentLevel}, 10 | instruction::{AccountMeta, Instruction}, 11 | pubkey::{self, Pubkey}, 12 | rent::sysvar, 13 | signer::Signer, 14 | system_instruction::create_account_with_seed, 15 | system_program, 16 | transaction::Transaction, 17 | }; 18 | use spl_associated_token_account::get_associated_token_address; 19 | use spl_token::instruction::initialize_account; 20 | const RENT_LAMPORTS: u64 = 3000000; 21 | 22 | #[tokio::main(flavor = "multi_thread")] 23 | async fn main() { 24 | dotenv().ok(); 25 | let _ = pump_buy().await; 26 | let _ = pump_sell().await; 27 | let _ = raydium_buy().await; 28 | let _ = raydium_sell().await; 29 | // raydium_buy().await; 30 | // let _ = create_lookup_tabl_1().await; 31 | } 32 | 33 | pub const GLOBAL_ACCOUNT: Pubkey = 34 | solana_sdk::pubkey!("4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf"); 35 | pub const FEE_RECIPIENT: Pubkey = 36 | solana_sdk::pubkey!("62qc2CNXwrYqQScmEdiZFFAnJR262PxWEuNQtxfafNgV"); 37 | const EVENT_AUTHORITY: Pubkey = solana_sdk::pubkey!("Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"); 38 | pub const PUMP_PROGRAM_ID: Pubkey = 39 | solana_sdk::pubkey!("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"); 40 | 41 | const PROXY_PROGRAM: Pubkey = solana_sdk::pubkey!("AmXoSVCLjsfKrwCUqvkMFXYcDzZ4FeoMYs7SAhGyfMGy"); 42 | 43 | const RAYDIUM_PROGRAM_ID: Pubkey = 44 | solana_sdk::pubkey!("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"); 45 | const AMM_AUTHORITY: Pubkey = solana_sdk::pubkey!("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"); 46 | const WSOL: Pubkey = solana_sdk::pubkey!("So11111111111111111111111111111111111111112"); 47 | 48 | pub const PUMP_SELECTOR: &[u8; 8] = &[82, 225, 119, 231, 78, 29, 45, 70]; // 内盘买入鉴别器 49 | pub const PUMP_AMM_SELECTOR: &[u8; 8] = &[129, 59, 179, 195, 110, 135, 61, 2]; // 外盘买入鉴别器 50 | pub const PUMP_SELL_SELECTOR: &[u8; 8] = &[83, 225, 119, 231, 78, 29, 45, 70]; // 内盘卖出鉴别器 51 | pub const PUMP_AMM_SELL_SELECTOR: &[u8; 8] = &[130, 59, 179, 195, 110, 135, 61, 2]; // 外盘卖出鉴别器 52 | 53 | pub const ATA_SELECTOR: &[u8; 8] = &[22, 51, 53, 97, 247, 184, 54, 78]; 54 | pub const RAYDIUM_BUY_SELECTOR: &[u8; 8] = &[182, 77, 232, 39, 117, 138, 183, 72]; 55 | pub const RAYDIUM_SELL_SELECTOR: &[u8; 8] = &[183, 77, 232, 39, 117, 138, 183, 72]; 56 | 57 | const BONDING_CURVE_SEED: &[u8] = b"bonding-curve"; 58 | 59 | // 生成判别符 60 | fn generate_discriminant() -> [u8; 8] { 61 | let mut hasher = Sha256::new(); 62 | hasher.update(b"global:pump_buy"); 63 | let hash = hasher.finalize(); 64 | hash[..8].try_into().unwrap() 65 | } 66 | 67 | pub fn get_account_seed() -> String { 68 | let mut rng = rand::rng(); 69 | 70 | (0..32) 71 | .map(|_| rng.sample(Alphanumeric)) 72 | .map(char::from) 73 | .collect::() 74 | } 75 | async fn pump_buy() -> Result<(), Error> { 76 | let private_key = env::var("PRIVATE_KEY").unwrap(); 77 | let rpc_client = 78 | RpcClient::new_with_commitment("".to_string(), CommitmentConfig::confirmed()); 79 | 80 | let token_amount = 351100_u64; 81 | let max_sol_cost = 11000000_u64; 82 | let mut data = Vec::with_capacity(24); 83 | data.extend_from_slice(PUMP_SELECTOR); 84 | data.extend_from_slice(&token_amount.to_le_bytes()); 85 | data.extend_from_slice(&max_sol_cost.to_le_bytes()); 86 | 87 | let signer = solana_sdk::signature::Keypair::from_base58_string(&private_key); 88 | 89 | let token_mint = solana_sdk::pubkey!("HzTV9ZgLJKGmPnYy2c5Pvganm7A2PsNhWBj3e2sgpump"); 90 | 91 | let bonding_curve_address = 92 | Pubkey::find_program_address(&[BONDING_CURVE_SEED, token_mint.as_ref()], &PUMP_PROGRAM_ID); 93 | 94 | let associated_user = get_associated_token_address(&signer.pubkey(), &token_mint); 95 | 96 | let associated_bonding_curve = 97 | get_associated_token_address(&bonding_curve_address.0, &token_mint); 98 | 99 | let instruction = Instruction::new_with_bytes( 100 | PROXY_PROGRAM, 101 | &data, 102 | vec![ 103 | AccountMeta::new_readonly(GLOBAL_ACCOUNT, false), 104 | AccountMeta::new(FEE_RECIPIENT, false), 105 | AccountMeta::new_readonly(token_mint, false), 106 | AccountMeta::new(bonding_curve_address.0, false), 107 | AccountMeta::new(associated_bonding_curve, false), 108 | AccountMeta::new(associated_user, false), 109 | AccountMeta::new(signer.pubkey(), true), 110 | AccountMeta::new_readonly(system_program::id(), false), 111 | AccountMeta::new_readonly(spl_token::id(), false), 112 | AccountMeta::new_readonly(sysvar::id(), false), 113 | AccountMeta::new_readonly(EVENT_AUTHORITY, false), 114 | AccountMeta::new_readonly(PUMP_PROGRAM_ID, false), 115 | ], 116 | ); 117 | let blockhash = rpc_client 118 | .get_latest_blockhash_with_commitment(CommitmentConfig { 119 | commitment: CommitmentLevel::Confirmed, 120 | }) 121 | .await 122 | .unwrap(); 123 | 124 | let mut ata_data = Vec::with_capacity(9); 125 | 126 | ata_data.extend_from_slice(ATA_SELECTOR); 127 | 128 | ata_data.extend_from_slice(&[0]); 129 | 130 | let ata_instruction = Instruction::new_with_bytes( 131 | PROXY_PROGRAM, 132 | &ata_data, 133 | vec![ 134 | AccountMeta::new(signer.pubkey(), true), 135 | AccountMeta::new(associated_user, false), 136 | AccountMeta::new_readonly(token_mint, false), 137 | AccountMeta::new_readonly(system_program::ID, false), 138 | AccountMeta::new_readonly(spl_token::ID, false), 139 | AccountMeta::new_readonly(spl_associated_token_account::ID, false), 140 | ], 141 | ); 142 | 143 | // 创建 Durable Nonce 账户 144 | let create_nonce_tx = Transaction::new_signed_with_payer( 145 | &[ata_instruction, instruction], 146 | Some(&signer.pubkey()), 147 | &[signer], 148 | blockhash.0, 149 | ); 150 | 151 | // 发送并确认交易 152 | let signature = match rpc_client 153 | .send_transaction_with_config( 154 | &create_nonce_tx, 155 | RpcSendTransactionConfig { 156 | skip_preflight: true, 157 | ..Default::default() 158 | }, 159 | ) 160 | .await 161 | { 162 | Ok(signature) => signature, 163 | Err(e) => { 164 | println!("swap error: {:?}", e); 165 | return Err(Error); 166 | } 167 | }; 168 | println!("signature: {}", signature); 169 | Ok(()) 170 | } 171 | 172 | async fn raydium_buy() -> Result<(), Error> { 173 | let private_key = env::var("PRIVATE_KEY").unwrap(); 174 | let rpc_client = 175 | RpcClient::new_with_commitment("".to_string(), CommitmentConfig::confirmed()); 176 | let signer = solana_sdk::signature::Keypair::from_base58_string(&private_key); 177 | 178 | let token_amount = 351100_u64; 179 | let max_sol_cost = 11000000_u64; 180 | let mut data = Vec::with_capacity(25); 181 | 182 | data.extend_from_slice(RAYDIUM_BUY_SELECTOR); 183 | data.extend_from_slice(&[9]); 184 | data.extend_from_slice(&token_amount.to_le_bytes()); 185 | data.extend_from_slice(&max_sol_cost.to_le_bytes()); 186 | 187 | let output_mint: Pubkey = solana_sdk::pubkey!("DYUjm68jHoQFHMHzuRqomrhRcog9mc4TNrCWHpufpump"); 188 | 189 | let signer = solana_sdk::signature::Keypair::from_base58_string(&private_key); 190 | 191 | let destination = 192 | spl_associated_token_account::get_associated_token_address(&signer.pubkey(), &output_mint); 193 | 194 | let seed = get_account_seed(); 195 | let program_id = spl_token::id(); 196 | 197 | let wsol_pubkey = Pubkey::create_with_seed(&signer.pubkey(), &seed, &program_id).unwrap(); 198 | let mut instructions = Vec::with_capacity(5); 199 | 200 | instructions.extend_from_slice(&[ 201 | create_account_with_seed( 202 | &signer.pubkey(), 203 | &wsol_pubkey, 204 | &signer.pubkey(), 205 | &seed, 206 | max_sol_cost + RENT_LAMPORTS, 207 | 165, 208 | &program_id, 209 | ), 210 | initialize_account(&program_id, &wsol_pubkey, &WSOL, &signer.pubkey()).unwrap(), 211 | ]); 212 | 213 | let amm_pool_id = solana_sdk::pubkey!("B6wsohtrxtsFxpBriMhUcGqcWspMxJcMf7Fzoei8X7d8"); 214 | let amm_coin_vault = solana_sdk::pubkey!("4WTsDp9XMTd7i2kxbgpxMEcp4ypP5VRU3pWuLqxiJxCR"); 215 | let amm_pc_vault = solana_sdk::pubkey!("Ai3GCwGYeGuNq879LKUwyUKeReKV5eLaUpfc7W7DPhf"); 216 | 217 | let ix: Instruction = Instruction { 218 | program_id: PROXY_PROGRAM, 219 | data, 220 | accounts: vec![ 221 | AccountMeta::new_readonly(RAYDIUM_PROGRAM_ID, false), 222 | AccountMeta::new_readonly(spl_token::id(), false), 223 | AccountMeta::new(amm_pool_id, false), 224 | AccountMeta::new(AMM_AUTHORITY, false), 225 | AccountMeta::new(amm_coin_vault, false), 226 | AccountMeta::new(amm_pc_vault, false), 227 | AccountMeta::new(wsol_pubkey, false), 228 | AccountMeta::new(destination, false), 229 | AccountMeta::new(signer.pubkey(), true), 230 | ], 231 | }; 232 | 233 | instructions.push(ix); 234 | 235 | let blockhash = rpc_client 236 | .get_latest_blockhash_with_commitment(CommitmentConfig { 237 | commitment: CommitmentLevel::Confirmed, 238 | }) 239 | .await 240 | .unwrap(); 241 | 242 | // 创建 Durable Nonce 账户 243 | let create_nonce_tx = Transaction::new_signed_with_payer( 244 | &instructions, 245 | Some(&signer.pubkey()), 246 | &[signer], 247 | blockhash.0, 248 | ); 249 | 250 | // 发送并确认交易 251 | let signature = match rpc_client 252 | .send_transaction_with_config( 253 | &create_nonce_tx, 254 | RpcSendTransactionConfig { 255 | skip_preflight: true, 256 | ..Default::default() 257 | }, 258 | ) 259 | .await 260 | { 261 | Ok(signature) => signature, 262 | Err(e) => { 263 | println!("swap error: {:?}", e); 264 | return Err(Error); 265 | } 266 | }; 267 | println!("signature: {}", signature); 268 | Ok(()) 269 | } 270 | 271 | async fn pump_sell() -> Result<(), Error> { 272 | let private_key = env::var("PRIVATE_KEY").unwrap(); 273 | let rpc_client = 274 | RpcClient::new_with_commitment("".to_string(), CommitmentConfig::confirmed()); 275 | 276 | let token_amount = 351100_u64; 277 | let min_sol_receive = 10000000_u64; 278 | let mut data = Vec::with_capacity(24); 279 | data.extend_from_slice(PUMP_SELL_SELECTOR); 280 | data.extend_from_slice(&token_amount.to_le_bytes()); 281 | data.extend_from_slice(&min_sol_receive.to_le_bytes()); 282 | 283 | let signer = solana_sdk::signature::Keypair::from_base58_string(&private_key); 284 | 285 | let token_mint = solana_sdk::pubkey!("HzTV9ZgLJKGmPnYy2c5Pvganm7A2PsNhWBj3e2sgpump"); 286 | 287 | let bonding_curve_address = 288 | Pubkey::find_program_address(&[BONDING_CURVE_SEED, token_mint.as_ref()], &PUMP_PROGRAM_ID); 289 | 290 | let associated_user = get_associated_token_address(&signer.pubkey(), &token_mint); 291 | 292 | let associated_bonding_curve = 293 | get_associated_token_address(&bonding_curve_address.0, &token_mint); 294 | 295 | let instruction = Instruction::new_with_bytes( 296 | PROXY_PROGRAM, 297 | &data, 298 | vec![ 299 | AccountMeta::new_readonly(GLOBAL_ACCOUNT, false), 300 | AccountMeta::new(FEE_RECIPIENT, false), 301 | AccountMeta::new_readonly(token_mint, false), 302 | AccountMeta::new(bonding_curve_address.0, false), 303 | AccountMeta::new(associated_bonding_curve, false), 304 | AccountMeta::new(associated_user, false), 305 | AccountMeta::new(signer.pubkey(), true), 306 | AccountMeta::new_readonly(system_program::id(), false), 307 | AccountMeta::new_readonly(spl_token::id(), false), 308 | AccountMeta::new_readonly(sysvar::id(), false), 309 | AccountMeta::new_readonly(EVENT_AUTHORITY, false), 310 | AccountMeta::new_readonly(PUMP_PROGRAM_ID, false), 311 | ], 312 | ); 313 | 314 | let blockhash = rpc_client 315 | .get_latest_blockhash_with_commitment(CommitmentConfig { 316 | commitment: CommitmentLevel::Confirmed, 317 | }) 318 | .await 319 | .unwrap(); 320 | 321 | let create_nonce_tx = Transaction::new_signed_with_payer( 322 | &[instruction], 323 | Some(&signer.pubkey()), 324 | &[signer], 325 | blockhash.0, 326 | ); 327 | 328 | let signature = match rpc_client 329 | .send_transaction_with_config( 330 | &create_nonce_tx, 331 | RpcSendTransactionConfig { 332 | skip_preflight: true, 333 | ..Default::default() 334 | }, 335 | ) 336 | .await 337 | { 338 | Ok(signature) => signature, 339 | Err(e) => { 340 | println!("swap error: {:?}", e); 341 | return Err(Error); 342 | } 343 | }; 344 | println!("signature: {}", signature); 345 | Ok(()) 346 | } 347 | 348 | async fn raydium_sell() -> Result<(), Error> { 349 | let private_key = env::var("PRIVATE_KEY").unwrap(); 350 | let rpc_client = 351 | RpcClient::new_with_commitment("".to_string(), CommitmentConfig::confirmed()); 352 | let signer = solana_sdk::signature::Keypair::from_base58_string(&private_key); 353 | 354 | let token_amount = 351100_u64; 355 | let min_sol_receive = 10000000_u64; 356 | let mut data = Vec::with_capacity(25); 357 | 358 | data.extend_from_slice(RAYDIUM_SELL_SELECTOR); 359 | data.extend_from_slice(&[9]); 360 | data.extend_from_slice(&token_amount.to_le_bytes()); 361 | data.extend_from_slice(&min_sol_receive.to_le_bytes()); 362 | 363 | let input_mint: Pubkey = solana_sdk::pubkey!("DYUjm68jHoQFHMHzuRqomrhRcog9mc4TNrCWHpufpump"); 364 | 365 | let signer = solana_sdk::signature::Keypair::from_base58_string(&private_key); 366 | 367 | let source = spl_associated_token_account::get_associated_token_address(&signer.pubkey(), &input_mint); 368 | 369 | let seed = get_account_seed(); 370 | let program_id = spl_token::id(); 371 | 372 | let wsol_pubkey = Pubkey::create_with_seed(&signer.pubkey(), &seed, &program_id).unwrap(); 373 | let mut instructions = Vec::with_capacity(5); 374 | 375 | instructions.extend_from_slice(&[ 376 | create_account_with_seed( 377 | &signer.pubkey(), 378 | &wsol_pubkey, 379 | &signer.pubkey(), 380 | &seed, 381 | RENT_LAMPORTS, 382 | 165, 383 | &program_id, 384 | ), 385 | initialize_account(&program_id, &wsol_pubkey, &WSOL, &signer.pubkey()).unwrap(), 386 | ]); 387 | 388 | let amm_pool_id = solana_sdk::pubkey!("B6wsohtrxtsFxpBriMhUcGqcWspMxJcMf7Fzoei8X7d8"); 389 | let amm_coin_vault = solana_sdk::pubkey!("4WTsDp9XMTd7i2kxbgpxMEcp4ypP5VRU3pWuLqxiJxCR"); 390 | let amm_pc_vault = solana_sdk::pubkey!("Ai3GCwGYeGuNq879LKUwyUKeReKV5eLaUpfc7W7DPhf"); 391 | 392 | let ix: Instruction = Instruction { 393 | program_id: PROXY_PROGRAM, 394 | data, 395 | accounts: vec![ 396 | AccountMeta::new_readonly(RAYDIUM_PROGRAM_ID, false), 397 | AccountMeta::new_readonly(spl_token::id(), false), 398 | AccountMeta::new(amm_pool_id, false), 399 | AccountMeta::new(AMM_AUTHORITY, false), 400 | AccountMeta::new(amm_coin_vault, false), 401 | AccountMeta::new(amm_pc_vault, false), 402 | AccountMeta::new(source, false), 403 | AccountMeta::new(wsol_pubkey, false), 404 | AccountMeta::new(signer.pubkey(), true), 405 | ], 406 | }; 407 | 408 | instructions.push(ix); 409 | 410 | let blockhash = rpc_client 411 | .get_latest_blockhash_with_commitment(CommitmentConfig { 412 | commitment: CommitmentLevel::Confirmed, 413 | }) 414 | .await 415 | .unwrap(); 416 | 417 | let create_nonce_tx = Transaction::new_signed_with_payer( 418 | &instructions, 419 | Some(&signer.pubkey()), 420 | &[signer], 421 | blockhash.0, 422 | ); 423 | 424 | let signature = match rpc_client 425 | .send_transaction_with_config( 426 | &create_nonce_tx, 427 | RpcSendTransactionConfig { 428 | skip_preflight: true, 429 | ..Default::default() 430 | }, 431 | ) 432 | .await 433 | { 434 | Ok(signature) => signature, 435 | Err(e) => { 436 | println!("swap error: {:?}", e); 437 | return Err(Error); 438 | } 439 | }; 440 | println!("signature: {}", signature); 441 | Ok(()) 442 | } 443 | --------------------------------------------------------------------------------