diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..7f607d8 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,31 @@ +name: Rust + +on: + push: + branches: + - main + pull_request: + branches: + - "**" + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: "recursive" + fetch-depth: 1 + + - name: Setup Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + + - name: Run tests + working-directory: program + run: cargo test --features test-bpf diff --git a/.gitignore b/.gitignore index fb91289..cdf1787 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,6 @@ */node_modules js/lib -cli/target -cli/target/.rustc_info.json /node_modules -js/dist \ No newline at end of file +**/wallet.json \ No newline at end of file diff --git a/README.md b/README.md index 5567d85..3fc35f5 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,6 @@ The [Bonfida Token Vesting UI](https://vesting.bonfida.org) can be used to unloc

Structure


-- `cli` : CLI tool to interact with on-chain token vesting contract - `js` : JavaScript binding to interact with on-chain token vesting contract - `program` : The BPF compatible token vesting on-chain program/smart contract diff --git a/cli/.gitignore b/cli/.gitignore deleted file mode 100644 index 1de5659..0000000 --- a/cli/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target \ No newline at end of file diff --git a/cli/Cargo.lock b/cli/Cargo.lock deleted file mode 100644 index 324730e..0000000 --- a/cli/Cargo.lock +++ /dev/null @@ -1,3838 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" - -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - -[[package]] -name = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.51" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203" - -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "backtrace" -version = "0.3.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "serde", -] - -[[package]] -name = "base32" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa" - -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitvec" -version = "0.19.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55f93d0ef3363c364d5976646a38f04cf67cfe1d4c8d160cdea02cab2c116b33" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake3" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if 0.1.10", - "constant_time_eq", - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding 0.1.5", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "block-padding 0.2.1", - "generic-array 0.14.4", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - -[[package]] -name = "borsh" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18dda7dc709193c0d86a1a51050a926dc3df1cf262ec46a23a25dba421ea1924" -dependencies = [ - "borsh-derive", - "hashbrown 0.9.1", -] - -[[package]] -name = "borsh-derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684155372435f578c0fa1acd13ebbb182cc19d6b38b64ae7901da4393217d264" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2 1.0.32", - "syn 1.0.82", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2102f62f8b6d3edeab871830782285b64cc1830168094db05c8e458f209bc5c3" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196c978c4c9b0b142d446ef3240690bf5a8a33497074a113ff9a337ccb750483" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "bs58" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bumpalo" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" - -[[package]] -name = "bv" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" -dependencies = [ - "feature-probe", - "serde", -] - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "bytemuck" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e215f8c2f9f79cb53c8335e687ffd07d5bfcb6fe5fc80723762d0be46e7cc54" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -dependencies = [ - "byteorder", - "either", - "iovec", -] - -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - -[[package]] -name = "bytes" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" - -[[package]] -name = "bzip2" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "caps" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61bf7211aad104ce2769ec05efcdfabf85ee84ac92461d142f22cf8badd0e54c" -dependencies = [ - "errno", - "libc", - "thiserror", -] - -[[package]] -name = "cc" -version = "1.0.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" -dependencies = [ - "jobserver", -] - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "serde", - "time", - "winapi", -] - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - -[[package]] -name = "console" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c0994e656bba7b922d8dd1245db90672ffb701e684e45be58f20719d69abc5a" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "regex", - "terminal_size", - "termios", - "unicode-width", - "winapi", - "winapi-util", -] - -[[package]] -name = "console" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "regex", - "terminal_size", - "unicode-width", - "winapi", -] - -[[package]] -name = "console" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "regex", - "terminal_size", - "unicode-width", - "winapi", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "core-foundation" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" - -[[package]] -name = "cpufeatures" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils 0.8.5", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", - "lazy_static", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" -dependencies = [ - "cfg-if 1.0.0", - "lazy_static", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array 0.14.4", - "subtle", -] - -[[package]] -name = "crypto-mac" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bcd97a54c7ca5ce2f6eb16f6bede5b0ab5f0055fedc17d2f0b4466e21671ca" -dependencies = [ - "generic-array 0.14.4", - "subtle", -] - -[[package]] -name = "crypto-mac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" -dependencies = [ - "generic-array 0.14.4", - "subtle", -] - -[[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[package]] -name = "dashmap" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" -dependencies = [ - "cfg-if 1.0.0", - "num_cpus", - "rayon", -] - -[[package]] -name = "derivation-path" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193388a8c8c75a490b604ff61775e236541b8975e98e5ca1f6ea97d122b7e2db" -dependencies = [ - "failure", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "dialoguer" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aa86af7b19b40ef9cbef761ed411a49f0afa06b7b6dcd3dfe2f96a3c546138" -dependencies = [ - "console 0.11.3", - "lazy_static", - "tempfile", -] - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "dir-diff" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2860407d7d7e2e004bb2128510ad9e8d669e76fa005ccf567977b5d71b8b4a0b" -dependencies = [ - "walkdir", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dlopen" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e80ad39f814a9abe68583cd50a2d45c8a67561c3361ab8da240587dda80937" -dependencies = [ - "dlopen_derive", - "lazy_static", - "libc", - "winapi", -] - -[[package]] -name = "dlopen_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f236d9e1b1fbd81cea0f9cbdc8dcc7e8ebcd80e6659cd7cb2ad5f6c05946c581" -dependencies = [ - "libc", - "quote 0.6.13", - "syn 0.15.44", -] - -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - -[[package]] -name = "ed25519" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" -dependencies = [ - "serde", - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", - "serde", - "serde_bytes", - "sha2", - "zeroize", -] - -[[package]] -name = "ed25519-dalek-bip32" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057f328f31294b5ab432e6c39642f54afd1531677d6d4ba2905932844cc242f3" -dependencies = [ - "derivation-path", - "ed25519-dalek", - "failure", - "hmac 0.9.0", - "sha2", -] - -[[package]] -name = "either" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" - -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "encoding_rs" -version = "0.8.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74ea89a0a1b98f6332de42c95baff457ada66d1cb4030f9ff151b2041a1c746" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "env_logger" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "errno" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" -dependencies = [ - "errno-dragonfly", - "libc", - "winapi", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "synstructure", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "feature-probe" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" - -[[package]] -name = "filetime" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.2.10", - "winapi", -] - -[[package]] -name = "flate2" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" -dependencies = [ - "cfg-if 1.0.0", - "crc32fast", - "libc", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" -dependencies = [ - "matches", - "percent-encoding", -] - -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - -[[package]] -name = "futures" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd0210d8c325c245ff06fd95a3b13689a1a276ac8cfa8e8720cb840bfb84b9e" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445" - -[[package]] -name = "futures-executor" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b808bf53348a36cab739d7e04755909b9fcaaa69b7d7e588b37b6ec62704c97" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11" - -[[package]] -name = "futures-macro" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "futures-sink" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af" - -[[package]] -name = "futures-task" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12" - -[[package]] -name = "futures-util" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" -dependencies = [ - "serde", - "typenum", - "version_check", -] - -[[package]] -name = "gethostname" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e692e296bfac1d2533ef168d0b60ff5897b8b70a4009276834014dd8924cc028" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.10.2+wasi-snapshot-preview1", -] - -[[package]] -name = "gimli" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" - -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - -[[package]] -name = "h2" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd819562fcebdac5afc5c113c3ec36f902840b70fd4fc458799c8ce4607ae55" -dependencies = [ - "bytes 1.1.0", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hidapi" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6f5e247bc66f3255d755e96d9d43f6b191f4e182072b811d55584ff58c510f" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "hmac" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deae6d9dbb35ec2c502d62b8f7b1c000a0822c3b0794ba36b3149c0a1c840dff" -dependencies = [ - "crypto-mac 0.9.1", - "digest 0.9.0", -] - -[[package]] -name = "hmac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" -dependencies = [ - "crypto-mac 0.10.1", - "digest 0.9.0", -] - -[[package]] -name = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest 0.9.0", - "generic-array 0.14.4", - "hmac 0.8.1", -] - -[[package]] -name = "http" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" -dependencies = [ - "bytes 1.1.0", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" -dependencies = [ - "bytes 1.1.0", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "0.14.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436ec0091e4f20e655156a30a0df3770fe2900aa301e548e08446ec794b6953c" -dependencies = [ - "bytes 1.1.0", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.4.2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" -dependencies = [ - "http", - "hyper", - "rustls", - "tokio", - "tokio-rustls", -] - -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" -dependencies = [ - "autocfg", - "hashbrown 0.11.2", -] - -[[package]] -name = "indicatif" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7baab56125e25686df467fe470785512329883aab42696d661247aca2a2896e4" -dependencies = [ - "console 0.15.0", - "lazy_static", - "number_prefix", - "regex", -] - -[[package]] -name = "input_buffer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" -dependencies = [ - "bytes 0.5.6", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipnet" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" - -[[package]] -name = "iso8601-duration" -version = "0.1.0" -source = "git+https://github.com/rrichardson/iso8601-duration.git?rev=9e01f51ea253e95e0fba5e4d7ad0c537922931e7#9e01f51ea253e95e0fba5e4d7ad0c537922931e7" -dependencies = [ - "nom", -] - -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "jobserver" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" -dependencies = [ - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "keccak" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -dependencies = [ - "spin", -] - -[[package]] -name = "lexical-core" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" -dependencies = [ - "arrayvec", - "bitflags", - "cfg-if 1.0.0", - "ryu", - "static_assertions", -] - -[[package]] -name = "libc" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" - -[[package]] -name = "libloading" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" -dependencies = [ - "cfg-if 1.0.0", - "winapi", -] - -[[package]] -name = "libsecp256k1" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" -dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2", - "typenum", -] - -[[package]] -name = "libsecp256k1-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" -dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", -] - -[[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" -dependencies = [ - "libsecp256k1-core", -] - -[[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" -dependencies = [ - "libsecp256k1-core", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" - -[[package]] -name = "lock_api" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "lock_api" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "memmap2" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" - -[[package]] -name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" -dependencies = [ - "adler", - "autocfg", -] - -[[package]] -name = "mio" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - -[[package]] -name = "native-tls" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "net2" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi", -] - -[[package]] -name = "nix" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" -dependencies = [ - "bitflags", - "cc", - "cfg-if 1.0.0", - "libc", -] - -[[package]] -name = "nom" -version = "6.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" -dependencies = [ - "bitvec", - "funty", - "lexical-core", - "memchr", - "version_check", -] - -[[package]] -name = "ntapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" -dependencies = [ - "winapi", -] - -[[package]] -name = "num-derive" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9bd055fb730c4f8f4f57d45d35cd6b3f0980535b056dc7ff119cee6a66ed6f" -dependencies = [ - "derivative", - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486ea01961c4a818096de679a8b740b26d9033146ac5291b1c98557658f8cdd9" -dependencies = [ - "proc-macro-crate 1.1.0", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "number_prefix" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a" - -[[package]] -name = "object" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl" -version = "0.10.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" -dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-sys", -] - -[[package]] -name = "openssl-probe" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" - -[[package]] -name = "openssl-sys" -version = "0.9.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df13d165e607909b363a4757a6f133f8a818a74e9d3a98d09c6128e15fa4c73" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "ouroboros" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84236d64f1718c387232287cf036eb6632a5ecff226f4ff9dccb8c2b79ba0bde" -dependencies = [ - "aliasable", - "ouroboros_macro", - "stable_deref_trait", -] - -[[package]] -name = "ouroboros_macro" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f463857a6eb96c0136b1d56e56c718350cef30412ec065b48294799a088bca68" -dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "parking_lot" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.7.2", -] - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api 0.4.5", - "parking_lot_core 0.8.5", -] - -[[package]] -name = "parking_lot_core" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall 0.2.10", - "smallvec", - "winapi", -] - -[[package]] -name = "pbkdf2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" -dependencies = [ - "crypto-mac 0.8.0", -] - -[[package]] -name = "pbkdf2" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b8c0d71734018084da0c0354193a5edfb81b20d2d57a92c5b154aefc554a4a" -dependencies = [ - "crypto-mac 0.10.1", -] - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" - -[[package]] -name = "ppv-lite86" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" -dependencies = [ - "thiserror", - "toml", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - -[[package]] -name = "proc-macro2" -version = "1.0.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" -dependencies = [ - "unicode-xid 0.2.2", -] - -[[package]] -name = "qstring" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - -[[package]] -name = "quote" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" -dependencies = [ - "proc-macro2 1.0.32", -] - -[[package]] -name = "radium" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", -] - -[[package]] -name = "rand" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.3", - "rand_hc 0.3.1", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.3", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" -dependencies = [ - "getrandom 0.2.3", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core 0.6.3", -] - -[[package]] -name = "rayon" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" -dependencies = [ - "autocfg", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" -dependencies = [ - "crossbeam-channel 0.5.1", - "crossbeam-deque", - "crossbeam-utils 0.8.5", - "lazy_static", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" -dependencies = [ - "getrandom 0.2.3", - "redox_syscall 0.2.10", -] - -[[package]] -name = "regex" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - -[[package]] -name = "reqwest" -version = "0.11.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bea77bc708afa10e59905c3d4af7c8fd43c9214251673095ff8b14345fcbc5" -dependencies = [ - "base64 0.13.0", - "bytes 1.1.0", - "encoding_rs", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "lazy_static", - "log", - "mime", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-rustls", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", - "winreg", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "rpassword" -version = "4.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustls" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d37e5e2290f3e040b594b1a9e04377c2c671f1a1cfd9bfdef82106ac1c113f84" -dependencies = [ - "log", - "ring", - "sct", - "webpki 0.22.0", -] - -[[package]] -name = "rustls-pemfile" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" -dependencies = [ - "base64 0.13.0", -] - -[[package]] -name = "rustversion" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" - -[[package]] -name = "ryu" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9613b5a66ab9ba26415184cfc41156594925a9cf3a2057e57f31ff145f6568" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" -dependencies = [ - "lazy_static", - "winapi", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "security-framework" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.2", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.130" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_bytes" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.130" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "serde_json" -version = "1.0.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c608a35705a5d3cdc9fbe403147647ff34b921f8e833e49306df898f9b20af" -dependencies = [ - "dtoa", - "indexmap", - "serde", - "yaml-rust", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - -[[package]] -name = "sha2" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sha3" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "keccak", - "opaque-debug 0.3.0", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" - -[[package]] -name = "slab" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" - -[[package]] -name = "smallvec" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" - -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "solana-account-decoder" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b56798104006af2a9f38663aa69771420b47ee613d06fce3fa44e696b92e5bde" -dependencies = [ - "Inflector", - "base64 0.12.3", - "bincode", - "bs58 0.3.1", - "bv", - "lazy_static", - "serde", - "serde_derive", - "serde_json", - "solana-config-program", - "solana-sdk", - "solana-vote-program", - "spl-token", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-clap-utils" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697c68b13bf82a38037bd3d8a14e2f2f9897b798956f9d370683adbf06cbe41d" -dependencies = [ - "chrono", - "clap", - "rpassword", - "solana-perf", - "solana-remote-wallet", - "solana-sdk", - "thiserror", - "tiny-bip39", - "uriparse", - "url", -] - -[[package]] -name = "solana-cli-config" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aba541bdd235ce4c0c9ede3d11289f75ef13f33bcee3bd111aea10295d3b9a" -dependencies = [ - "dirs-next", - "lazy_static", - "serde", - "serde_derive", - "serde_yaml", - "url", -] - -[[package]] -name = "solana-client" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e205d2d785d2d60ca7585d6bd47c13ca78165a774aac02a4a98f2c30f3037db0" -dependencies = [ - "base64 0.13.0", - "bincode", - "bs58 0.3.1", - "clap", - "indicatif", - "jsonrpc-core", - "log", - "net2", - "rayon", - "reqwest", - "semver 0.11.0", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-clap-utils", - "solana-faucet", - "solana-net-utils", - "solana-sdk", - "solana-transaction-status", - "solana-version", - "solana-vote-program", - "thiserror", - "tokio", - "tungstenite", - "url", -] - -[[package]] -name = "solana-compute-budget-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672d672e2fec80f0d85e3d735189fe70405cb18450ddbaeea9623b933c7434b1" -dependencies = [ - "solana-sdk", -] - -[[package]] -name = "solana-config-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6d8b73f4f89b88cc88790dfbc269c1178a553b07a07f72b619e2f7bde517aa2" -dependencies = [ - "bincode", - "chrono", - "log", - "rand_core 0.6.3", - "serde", - "serde_derive", - "solana-sdk", -] - -[[package]] -name = "solana-crate-features" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb84a95527eadc9d32b4adc40be7b8b7b184d50b3350dc7ca6588bdbdf8ae4d3" -dependencies = [ - "backtrace", - "bytes 0.4.12", - "cc", - "curve25519-dalek 2.1.3", - "ed25519-dalek", - "either", - "lazy_static", - "libc", - "rand_chacha 0.2.2", - "regex-syntax", - "reqwest", - "ring", - "serde", - "syn 0.15.44", - "syn 1.0.82", - "winapi", -] - -[[package]] -name = "solana-ed25519-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a5fdbe8098549f10643e14fcf81fad5ab9abbc556824ca54d27cce67a55e766" -dependencies = [ - "solana-sdk", -] - -[[package]] -name = "solana-faucet" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24bfbdd33d5301a7d1d484388e79ed1c8d477cac22af97538d2dde6b3702ee53" -dependencies = [ - "bincode", - "byteorder", - "clap", - "log", - "serde", - "serde_derive", - "solana-clap-utils", - "solana-cli-config", - "solana-logger", - "solana-metrics", - "solana-sdk", - "solana-version", - "spl-memo", - "thiserror", - "tokio", -] - -[[package]] -name = "solana-frozen-abi" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03105023ee2e50eef15d4d43fa6d3acbbc5265f570ebb021d0af9c62e6f5189" -dependencies = [ - "bs58 0.3.1", - "bv", - "generic-array 0.14.4", - "log", - "memmap2", - "rustc_version", - "serde", - "serde_derive", - "sha2", - "solana-frozen-abi-macro", - "solana-logger", - "thiserror", -] - -[[package]] -name = "solana-frozen-abi-macro" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f372aa625bbde216f9f769a348585a41ecd8dcea8b9fe7b3f89565028fb670" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "rustc_version", - "syn 1.0.82", -] - -[[package]] -name = "solana-logger" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82ae204d12a5b885edb857684d9f6770be1ce4031d6cc90bbe272a1631ec671" -dependencies = [ - "env_logger", - "lazy_static", - "log", -] - -[[package]] -name = "solana-measure" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26c6d03be819cb69114885f82988e5126d2a7192adc0cf89de5935b1c7d500e" -dependencies = [ - "log", - "solana-metrics", - "solana-sdk", -] - -[[package]] -name = "solana-metrics" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3024fb88ad4e2901fb7ebdc81523cede88edf4cd1e2326185d7e6885f294df13" -dependencies = [ - "env_logger", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", -] - -[[package]] -name = "solana-net-utils" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e2fd7eb5e65460db0c67d5ceeb90b1e43a063fd2a02cc77d58c83d56df81a7" -dependencies = [ - "bincode", - "clap", - "log", - "nix", - "rand 0.7.3", - "serde", - "serde_derive", - "socket2 0.3.19", - "solana-clap-utils", - "solana-logger", - "solana-sdk", - "solana-version", - "tokio", - "url", -] - -[[package]] -name = "solana-perf" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbb934986ec7cdfcc4e4d56e0e5e41c812cd9c0b198cb7f88f3b9f1871b010f" -dependencies = [ - "bincode", - "caps", - "curve25519-dalek 2.1.3", - "dlopen", - "dlopen_derive", - "lazy_static", - "libc", - "log", - "nix", - "rand 0.7.3", - "rayon", - "serde", - "solana-logger", - "solana-metrics", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-vote-program", -] - -[[package]] -name = "solana-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c119435aa5b6d5f1dd9af1057f5311ce9e5a1ed6a2d19e2830c3d6cec25c74" -dependencies = [ - "base64 0.13.0", - "bincode", - "blake3", - "borsh", - "borsh-derive", - "bs58 0.3.1", - "bv", - "bytemuck", - "curve25519-dalek 2.1.3", - "hex", - "itertools", - "lazy_static", - "libsecp256k1", - "log", - "num-derive", - "num-traits", - "rand 0.7.3", - "rustc_version", - "rustversion", - "serde", - "serde_bytes", - "serde_derive", - "sha2", - "sha3", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-sdk-macro", - "thiserror", -] - -[[package]] -name = "solana-rayon-threadlimit" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf47cddc6593b226fcc6090509364183f833b0cd45ee6fbb8ab8988e15afcce7" -dependencies = [ - "lazy_static", - "num_cpus", -] - -[[package]] -name = "solana-remote-wallet" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22c18678560eac53651df88126abfc6a6919c27fe25166c9242090ac60842196" -dependencies = [ - "base32", - "console 0.14.1", - "dialoguer", - "hidapi", - "log", - "num-derive", - "num-traits", - "parking_lot 0.10.2", - "qstring", - "semver 0.9.0", - "solana-sdk", - "thiserror", - "uriparse", -] - -[[package]] -name = "solana-runtime" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e6b4f1ba56fb38af55a5d7517822b876cb5d0216930cea9e127479e883ab4f" -dependencies = [ - "arrayref", - "bincode", - "blake3", - "bv", - "byteorder", - "bzip2", - "crossbeam-channel 0.4.4", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "itertools", - "lazy_static", - "libc", - "libloading", - "log", - "memmap2", - "num-derive", - "num-traits", - "num_cpus", - "ouroboros", - "rand 0.7.3", - "rayon", - "regex", - "rustc_version", - "serde", - "serde_derive", - "solana-compute-budget-program", - "solana-config-program", - "solana-ed25519-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-measure", - "solana-metrics", - "solana-rayon-threadlimit", - "solana-sdk", - "solana-secp256k1-program", - "solana-stake-program", - "solana-vote-program", - "symlink", - "tar", - "tempfile", - "thiserror", - "zstd", -] - -[[package]] -name = "solana-sdk" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b48cc3de1292cab47af5d0235ebbe0fd8fb99c668728b1d5d5c7c74e711fc50a" -dependencies = [ - "assert_matches", - "base64 0.13.0", - "bincode", - "borsh", - "borsh-derive", - "bs58 0.4.0", - "bv", - "bytemuck", - "byteorder", - "chrono", - "derivation-path", - "digest 0.9.0", - "ed25519-dalek", - "ed25519-dalek-bip32", - "generic-array 0.14.4", - "hex", - "hmac 0.10.1", - "itertools", - "lazy_static", - "libsecp256k1", - "log", - "memmap2", - "num-derive", - "num-traits", - "pbkdf2 0.6.0", - "qstring", - "rand 0.7.3", - "rand_chacha 0.2.2", - "rand_core 0.6.3", - "rustc_version", - "rustversion", - "serde", - "serde_bytes", - "serde_derive", - "serde_json", - "sha2", - "sha3", - "solana-crate-features", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-program", - "solana-sdk-macro", - "thiserror", - "uriparse", -] - -[[package]] -name = "solana-sdk-macro" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868cdefdbb43424b4915b8aaa767a112d62537d8d2c6d1d4d01a647e4842ed7b" -dependencies = [ - "bs58 0.3.1", - "proc-macro2 1.0.32", - "quote 1.0.10", - "rustversion", - "syn 1.0.82", -] - -[[package]] -name = "solana-secp256k1-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8faea8604b39a2dd7cc0077c1bd931fe61bdded477c9f3f7694c232dc676397f" -dependencies = [ - "solana-sdk", -] - -[[package]] -name = "solana-stake-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b94e612f378d70d76a44f6f9ea5b6e074c826b8751465ab824e93f8e9695208" -dependencies = [ - "bincode", - "log", - "num-derive", - "num-traits", - "rustc_version", - "serde", - "serde_derive", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-metrics", - "solana-sdk", - "solana-vote-program", - "thiserror", -] - -[[package]] -name = "solana-transaction-status" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a119a6ad35e0ef7a2032aeec162b0524dbdac41c072daeffb0e4b45eeb65f4" -dependencies = [ - "Inflector", - "base64 0.12.3", - "bincode", - "bs58 0.3.1", - "lazy_static", - "log", - "serde", - "serde_derive", - "serde_json", - "solana-account-decoder", - "solana-measure", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "solana-vote-program", - "spl-associated-token-account", - "spl-memo", - "spl-token", - "thiserror", -] - -[[package]] -name = "solana-version" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f69d6fca18db74ff358994711d7f86c39a565674ad8c757b3884dc821d1ea7" -dependencies = [ - "log", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-sdk", -] - -[[package]] -name = "solana-vote-program" -version = "1.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4635b4c088a34aba63abe529167a10db73f221f0a25e641f59cfba58a0d08d" -dependencies = [ - "bincode", - "log", - "num-derive", - "num-traits", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-metrics", - "solana-sdk", - "thiserror", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spl-associated-token-account" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393e2240d521c3dd770806bff25c2c00d761ac962be106e14e22dd912007f428" -dependencies = [ - "solana-program", - "spl-token", -] - -[[package]] -name = "spl-memo" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" -dependencies = [ - "solana-program", -] - -[[package]] -name = "spl-token" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bfdd5bd7c869cb565c7d7635c4fafe189b988a0bdef81063cd9585c6b8dc01" -dependencies = [ - "arrayref", - "num-derive", - "num-traits", - "num_enum", - "solana-program", - "thiserror", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "symlink" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - -[[package]] -name = "syn" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "unicode-xid 0.2.2", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "unicode-xid 0.2.2", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tar" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f5515d3add52e0bbdcad7b83c388bb36ba7b754dda3b5f5bc2d38640cdba5c" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tempfile" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "rand 0.8.4", - "redox_syscall 0.2.10", - "remove_dir_all", - "winapi", -] - -[[package]] -name = "termcolor" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "termios" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b" -dependencies = [ - "libc", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "time" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "tiny-bip39" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" -dependencies = [ - "anyhow", - "hmac 0.8.1", - "once_cell", - "pbkdf2 0.4.0", - "rand 0.7.3", - "rustc-hash", - "sha2", - "thiserror", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - -[[package]] -name = "tinyvec" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" - -[[package]] -name = "token-vesting" -version = "0.1.0" -dependencies = [ - "arrayref", - "num-derive", - "num-traits", - "solana-program", - "spl-associated-token-account", - "spl-token", - "thiserror", -] - -[[package]] -name = "tokio" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" -dependencies = [ - "autocfg", - "bytes 1.1.0", - "libc", - "memchr", - "mio", - "num_cpus", - "once_cell", - "parking_lot 0.11.2", - "pin-project-lite", - "signal-hook-registry", - "tokio-macros", - "winapi", -] - -[[package]] -name = "tokio-macros" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", -] - -[[package]] -name = "tokio-rustls" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4baa378e417d780beff82bf54ceb0d195193ea6a00c14e22359e7f39456b5689" -dependencies = [ - "rustls", - "tokio", - "webpki 0.22.0", -] - -[[package]] -name = "tokio-util" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" -dependencies = [ - "bytes 1.1.0", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] - -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - -[[package]] -name = "tracing" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" -dependencies = [ - "cfg-if 1.0.0", - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "tungstenite" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfea31758bf674f990918962e8e5f07071a3161bd7c4138ed23e416e1ac4264e" -dependencies = [ - "base64 0.11.0", - "byteorder", - "bytes 0.5.6", - "http", - "httparse", - "input_buffer", - "log", - "native-tls", - "rand 0.7.3", - "sha-1", - "url", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "unicode-bidi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" - -[[package]] -name = "unicode-normalization" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "uriparse" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e515b1ada404168e145ac55afba3c42f04cf972201a8552d42e2abb17c1b7221" -dependencies = [ - "fnv", - "lazy_static", -] - -[[package]] -name = "url" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" -dependencies = [ - "form_urlencoded", - "idna", - "matches", - "percent-encoding", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" - -[[package]] -name = "vesting-contract-cli" -version = "0.1.0" -dependencies = [ - "chrono", - "clap", - "iso8601-duration", - "solana-clap-utils", - "solana-client", - "solana-program", - "solana-sdk", - "spl-associated-token-account", - "spl-token", - "token-vesting", -] - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - -[[package]] -name = "wasm-bindgen" -version = "0.2.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" -dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" -dependencies = [ - "bumpalo", - "lazy_static", - "log", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" -dependencies = [ - "quote 1.0.10", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" - -[[package]] -name = "web-sys" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" -dependencies = [ - "webpki 0.21.4", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "winreg" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" -dependencies = [ - "winapi", -] - -[[package]] -name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - -[[package]] -name = "xattr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" -dependencies = [ - "libc", -] - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "zeroize" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f1a51723ec88c66d5d1fe80c841f17f63587d6691901d66be9bec6c3b51f73" -dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "synstructure", -] - -[[package]] -name = "zstd" -version = "0.5.4+zstd.1.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "2.0.6+zstd.1.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "1.4.18+zstd.1.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81" -dependencies = [ - "cc", - "glob", - "itertools", - "libc", -] diff --git a/cli/Cargo.toml b/cli/Cargo.toml deleted file mode 100644 index bf767f5..0000000 --- a/cli/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "vesting-contract-cli" -version = "0.1.0" -authors = ["Bonfida "] -edition = "2018" - -[dependencies] -solana-program = "1.5.0" -solana-client = "1.5.0" -solana-sdk = "1.5.0" -solana-clap-utils = "1.5.0" -token-vesting = { version = "0.1.0", path="../program", features=["no-entrypoint"] } -spl-token = {version = "3.0.1", features = ["no-entrypoint"]} -spl-associated-token-account = {version = "1.0.2", features = ["no-entrypoint"]} -clap = "2.33.3" -chrono = "0.4.19" -iso8601-duration = { git = "https://github.com/rrichardson/iso8601-duration.git", rev = "9e01f51ea253e95e0fba5e4d7ad0c537922931e7"} \ No newline at end of file diff --git a/cli/README.md b/cli/README.md deleted file mode 100644 index 4727ebb..0000000 --- a/cli/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# Testing - -Create participants accounts: -```bash -solana-keygen new --outfile ~/.config/solana/id_owner.json --force -solana-keygen new --outfile ~/.config/solana/id_dest.json --force -solana-keygen new --outfile ~/.config/solana/id_new_dest.json --force -``` - -Owner would do all operations, so put some SOL to his account: -```bash -solana airdrop 2 --url https://api.devnet.solana.com ~/.config/solana/id_owner.json -``` - -Build program: -```bash -( cd ../program ; cargo build-bpf; ) -``` - -Deploy program and copy `PROGRAM_ID`. -```bash -solana deploy ../program/target/deploy/token_vesting.so --url https://api.devnet.solana.com --keypair ~/.config/solana/id_owner.json -``` - -Create mint and get its public key(`MINT`): -```bash -spl-token create-token --url https://api.devnet.solana.com --fee-payer ~/.config/solana/id_owner.json -``` - -Create source token account(`TOKEN_ACCOUNT_SOURCE`) -```bash -spl-token create-account $MINT --url https://api.devnet.solana.com --owner ~/.config/solana/id_owner.json --fee-payer ~/.config/solana/id_owner.json -``` - -Mint test source token: -```bash -spl-token mint $MINT 100000 --url https://api.devnet.solana.com $TOKEN_ACCOUNT_SOURCE --fee-payer ~/.config/solana/id_owner.json -``` - -Create vesting destination token account(`ACCOUNT_TOKEN_DEST`): -```bash -spl-token create-account $MINT --url https://api.devnet.solana.com --owner ~/.config/solana/id_dest.json --fee-payer ~/.config/solana/id_owner.json -``` - -And new one(`ACCOUNT_TOKEN_NEW_DEST`): -```bash -spl-token create-account $MINT --url https://api.devnet.solana.com --owner ~/.config/solana/id_new_dest.json --fee-payer ~/.config/solana/id_owner.json -``` - -Build CLI: - -```bash -cargo build -``` - -Create vesting instance and store its SEED value -```bash -echo "RUST_BACKTRACE=1 ./target/debug/vesting-contract-cli \ ---url https://api.devnet.solana.com \ ---program_id $PROGRAM_ID \ -create \ ---mint_address $MINT \ ---source_owner ~/.config/solana/id_owner.json \ ---source_token_address $TOKEN_ACCOUNT_SOURCE \ ---destination_token_address $ACCOUNT_TOKEN_DEST \ ---amounts 2,1,3,! \ ---release-times 1,28504431,2850600000000000,! \ ---payer ~/.config/solana/id_owner.json" \ ---verbose | bash -``` - -To use [Associated Token Account](https://spl.solana.com/associated-token-account) as destination use `--destination_address`(with public key of `id_dest`) instead of `--destination_token_address`. - -Observe contract state: -```bash -echo "RUST_BACKTRACE=1 ./target/debug/vesting-contract-cli \ ---url https://api.devnet.solana.com \ ---program_id $PROGRAM_ID \ -info \ ---seed $SEED " | bash -``` - -Change owner: -```bash -echo "RUST_BACKTRACE=1 ./target/debug/vesting-contract-cli \ ---url https://api.devnet.solana.com \ ---program_id $PROGRAM_ID \ -change-destination \ ---seed $SEED \ ---current_destination_owner ~/.config/solana/id_dest.json \ ---new_destination_token_address $ACCOUNT_TOKEN_NEW_DEST \ ---payer ~/.config/solana/id_owner.json" | bash -``` - -And unlock tokens according schedule: -```bash -echo "RUST_BACKTRACE=1 ./target/debug/vesting-contract-cli \ ---url https://api.devnet.solana.com \ ---program_id $PROGRAM_ID \ -unlock \ ---seed $SEED \ ---payer ~/.config/solana/id_owner.json" | bash -``` - -Create linear vesting: -```bash -echo "RUST_BACKTRACE=1 ./target/debug/vesting-contract-cli \ ---url https://api.devnet.solana.com \ ---program_id $PROGRAM_ID \ -create \ ---mint_address $MINT \ ---source_owner ~/.config/solana/id_owner.json \ ---source_token_address $TOKEN_ACCOUNT_SOURCE \ ---destination_token_address $ACCOUNT_TOKEN_DEST \ ---amounts 42,! \ ---release-frequency 'P1D' \ ---start-date-time '2022-01-06T20:11:18Z' \ ---end-date-time '2022-01-12T20:11:18Z' \ ---payer ~/.config/solana/id_owner.json" \ ---verbose | bash -``` - -## Links - -https://spl.solana.com/token diff --git a/cli/src/main.rs b/cli/src/main.rs deleted file mode 100644 index 8a8b399..0000000 --- a/cli/src/main.rs +++ /dev/null @@ -1,657 +0,0 @@ -use chrono::{DateTime, Duration}; -use clap::{ - crate_description, crate_name, crate_version, value_t, App, AppSettings, Arg, SubCommand, -}; -use solana_clap_utils::{ - input_parsers::{keypair_of, pubkey_of, value_of, values_of}, - input_validators::{is_amount, is_keypair, is_parsable, is_pubkey, is_slot, is_url}, -}; -use solana_client::rpc_client::RpcClient; -use solana_program::{msg, program_pack::Pack, pubkey::Pubkey, system_program, sysvar}; -use solana_sdk::{ - self, commitment_config::CommitmentConfig, signature::Keypair, signature::Signer, - transaction::Transaction, -}; -use spl_associated_token_account::{create_associated_token_account, get_associated_token_address}; -use spl_token; -use std::convert::TryInto; -use token_vesting::{ - instruction::{change_destination, create, init, unlock, Schedule}, - state::{unpack_schedules, VestingScheduleHeader}, -}; - -// Lock the vesting contract -fn command_create_svc( - rpc_client: RpcClient, - program_id: Pubkey, - payer: Keypair, - source_token_owner: Keypair, - possible_source_token_pubkey: Option, - destination_token_pubkey: Pubkey, - mint_address: Pubkey, - schedules: Vec, - confirm: bool, -) { - // If no source token account was given, use the associated source account - let source_token_pubkey = match possible_source_token_pubkey { - None => get_associated_token_address(&source_token_owner.pubkey(), &mint_address), - _ => possible_source_token_pubkey.unwrap(), - }; - - // Find a valid seed for the vesting program account key to be non reversible and unused - let mut not_found = true; - let mut vesting_seed: [u8; 32] = [0; 32]; - let mut vesting_pubkey = Pubkey::new_unique(); - while not_found { - vesting_seed = Pubkey::new_unique().to_bytes(); - let program_id_bump = Pubkey::find_program_address(&[&vesting_seed[..31]], &program_id); - vesting_pubkey = program_id_bump.0; - vesting_seed[31] = program_id_bump.1; - not_found = match rpc_client.get_account(&vesting_pubkey) { - Ok(_) => true, - Err(_) => false, - } - } - - let vesting_token_pubkey = get_associated_token_address(&vesting_pubkey, &mint_address); - - let instructions = [ - init( - &system_program::id(), - &sysvar::rent::id(), - &program_id, - &payer.pubkey(), - &vesting_pubkey, - vesting_seed, - schedules.len() as u32, - ) - .unwrap(), - create_associated_token_account( - &source_token_owner.pubkey(), - &vesting_pubkey, - &mint_address, - ), - create( - &program_id, - &spl_token::id(), - &vesting_pubkey, - &vesting_token_pubkey, - &source_token_owner.pubkey(), - &source_token_pubkey, - &destination_token_pubkey, - &mint_address, - schedules, - vesting_seed, - ) - .unwrap(), - ]; - - let mut transaction = Transaction::new_with_payer(&instructions, Some(&payer.pubkey())); - - let recent_blockhash = rpc_client.get_recent_blockhash().unwrap().0; - transaction.sign(&[&payer], recent_blockhash); - - msg!( - "\nThe seed of the contract is: {:?}", - Pubkey::new_from_array(vesting_seed) - ); - msg!("Please write it down as it is needed to interact with the contract!"); - - msg!("The vesting account pubkey: {:?}", vesting_pubkey,); - - if confirm { - rpc_client - .send_and_confirm_transaction_with_spinner_and_commitment( - &transaction, - CommitmentConfig::finalized(), - ) - .unwrap(); - } else { - rpc_client.send_transaction(&transaction).unwrap(); - } -} - -fn command_unlock_svc( - rpc_client: RpcClient, - program_id: Pubkey, - vesting_seed: [u8; 32], - payer: Keypair, -) { - // Find the non reversible public key for the vesting contract via the seed - let (vesting_pubkey, _) = Pubkey::find_program_address(&[&vesting_seed[..31]], &program_id); - - let packed_state = rpc_client.get_account_data(&vesting_pubkey).unwrap(); - let header_state = - VestingScheduleHeader::unpack(&packed_state[..VestingScheduleHeader::LEN]).unwrap(); - let destination_token_pubkey = header_state.destination_address; - - let vesting_token_pubkey = - get_associated_token_address(&vesting_pubkey, &header_state.mint_address); - - let unlock_instruction = unlock( - &program_id, - &spl_token::id(), - &sysvar::clock::id(), - &vesting_pubkey, - &vesting_token_pubkey, - &destination_token_pubkey, - vesting_seed, - ) - .unwrap(); - - let mut transaction = Transaction::new_with_payer(&[unlock_instruction], Some(&payer.pubkey())); - - let recent_blockhash = rpc_client.get_recent_blockhash().unwrap().0; - transaction.sign(&[&payer], recent_blockhash); - - rpc_client.send_transaction(&transaction).unwrap(); -} - -fn command_change_destination( - rpc_client: RpcClient, - program_id: Pubkey, - destination_token_account_owner: Keypair, - opt_new_destination_account: Option, - opt_new_destination_token_account: Option, - vesting_seed: [u8; 32], - payer: Keypair, -) { - // Find the non reversible public key for the vesting contract via the seed - let (vesting_pubkey, _) = Pubkey::find_program_address(&[&vesting_seed[..31]], &program_id); - - let packed_state = rpc_client.get_account_data(&vesting_pubkey).unwrap(); - let state_header = - VestingScheduleHeader::unpack(&packed_state[..VestingScheduleHeader::LEN]).unwrap(); - let destination_token_pubkey = state_header.destination_address; - - let new_destination_token_account = match opt_new_destination_token_account { - None => get_associated_token_address( - &opt_new_destination_account.unwrap(), - &state_header.mint_address, - ), - Some(new_destination_token_account) => new_destination_token_account, - }; - - let unlock_instruction = change_destination( - &program_id, - &vesting_pubkey, - &destination_token_account_owner.pubkey(), - &destination_token_pubkey, - &new_destination_token_account, - vesting_seed, - ) - .unwrap(); - - let mut transaction = Transaction::new_with_payer(&[unlock_instruction], Some(&payer.pubkey())); - - let recent_blockhash = rpc_client.get_recent_blockhash().unwrap().0; - transaction.sign( - &[&payer, &destination_token_account_owner], - recent_blockhash, - ); - - rpc_client.send_transaction(&transaction).unwrap(); -} - -fn command_info( - rpc_client: RpcClient, - rpc_url: String, - program_id: Pubkey, - vesting_seed: [u8; 32], -) { - msg!("\n---------------VESTING--CONTRACT--INFO-----------------\n"); - msg!("RPC URL: {:?}", &rpc_url); - msg!("Program ID: {:?}", &program_id); - msg!("Vesting Seed: {:?}", Pubkey::new_from_array(vesting_seed)); - - // Find the non reversible public key for the vesting contract via the seed - let (vesting_pubkey, _) = Pubkey::find_program_address(&[&vesting_seed[..31]], &program_id); - msg!("Vesting Account Pubkey: {:?}", &vesting_pubkey); - - let packed_state = rpc_client.get_account_data(&vesting_pubkey).unwrap(); - let state_header = - VestingScheduleHeader::unpack(&packed_state[..VestingScheduleHeader::LEN]).unwrap(); - let vesting_token_pubkey = - get_associated_token_address(&vesting_pubkey, &state_header.mint_address); - msg!("Vesting Token Account Pubkey: {:?}", &vesting_token_pubkey); - msg!("Initialized: {:?}", &state_header.is_initialized); - msg!("Mint Address: {:?}", &state_header.mint_address); - msg!( - "Destination Token Address: {:?}", - &state_header.destination_address - ); - - let schedules = unpack_schedules(&packed_state[VestingScheduleHeader::LEN..]).unwrap(); - - for i in 0..schedules.len() { - msg!("\nSCHEDULE {:?}", i); - msg!("Release Height: {:?}", &schedules[i].release_time); - msg!("Amount: {:?}", &schedules[i].amount); - } -} - -fn main() { - let matches = App::new(crate_name!()) - .about(crate_description!()) - .version(crate_version!()) - .setting(AppSettings::SubcommandRequiredElseHelp) - .arg( - Arg::with_name("verbose") - .long("verbose") - .short("v") - .takes_value(false) - .global(true) - .help("Show additional information"), - ) - .arg( - Arg::with_name("rpc_url") - .long("url") - .value_name("URL") - .validator(is_url) - .takes_value(true) - .global(true) - .help( - "Specify the url of the rpc client (solana network).", - ), - ) - .arg( - Arg::with_name("program_id") - .long("program_id") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the address (public key) of the program.", - ), - ) - .subcommand(SubCommand::with_name("create").about("Create a new vesting contract with an optional release schedule") - .arg( - Arg::with_name("mint_address") - .long("mint_address") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the address (publickey) of the mint for the token that should be used.", - ), - ) - .arg( - Arg::with_name("source_owner") - .long("source_owner") - .value_name("KEYPAIR") - .validator(is_keypair) - .takes_value(true) - .help( - "Specify the source account owner. \ - This may be a keypair file, the ASK keyword. \ - Defaults to the client keypair.", - ), - ) - .arg( - Arg::with_name("source_token_address") - .long("source_token_address") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the source token account address.", - ), - ) - .arg( - Arg::with_name("destination_address") - .long("destination_address") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the destination (non-token) account address. \ - If specified, the vesting destination will be the associated \ - token account for the mint of the contract." - ), - ) - .arg( - Arg::with_name("destination_token_address") - .long("destination_token_address") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the destination token account address. \ - If specified, this address will be used as a destination, \ - and overwrite the associated token account.", - ), - ) - .arg( - Arg::with_name("amounts") - .long("amounts") - .value_name("AMOUNT") - .validator(is_amount) - .takes_value(true) - .multiple(true) - .use_delimiter(true) - .value_terminator("!") - .allow_hyphen_values(true) - .help( - "Amounts of tokens to transfer via the vesting \ - contract. Multiple inputs separated by a comma are - accepted for the creation of multiple schedules. The sequence of inputs \ - needs to end with an exclamation mark ( e.g. 1,2,3,! )", - ), - ) - // scheduled vesting - .arg( - Arg::with_name("release-times") - .long("release-times") - .conflicts_with("release-frequency") - .value_name("SLOT") - .validator(is_slot) - .takes_value(true) - .multiple(true) - .use_delimiter(true) - .value_terminator("!") - .allow_hyphen_values(true) - .help( - "Release times in unix timestamp to decide when the contract is \ - unlockable. Multiple inputs separated by a comma are - accepted for the creation of multiple schedules. The sequence of inputs \ - needs to end with an exclamation mark ( e.g. 1,2,3,! ).", - ), - ) - // linear vesting - .arg( - Arg::with_name("release-frequency") - .long("release-frequency") - .value_name("RELEASE_FREQUENCY") - .takes_value(true) - .conflicts_with("release-times") - .help( - "Frequency of release amount. \ - You start on 1sth of Nov and end on 5th of Nov. \ - With 1 day frequency it will vest from total amount 5 times \ - splitted linearly. - Duration must be ISO8601 duration format. Example, P1D. - Internally all dates will be transformed into schedule.", - ), - ) - .arg( - Arg::with_name("start-date-time") - .long("start-date-time") - .value_name("START_DATE_TIME") - .takes_value(true) - .help( - "First time of release in linear vesting. \ - Must be RFC 3339 and ISO 8601 sortable date time. \ - Example, 2022-01-06T20:11:18Z", - ), - ) - .arg( - Arg::with_name("end-date-time") - .long("end-date-time") - .value_name("END_DATE_TIME") - .takes_value(true) - .help( - "Last time of release in linear vesting. \ - If frequency will go over last release time, \ - tokens will be released later than end date. - Must be RFC 3339 and ISO 8601 sortable date time. \ - Example, 2022-17-06T20:11:18Z", - ), - ) - .arg( - Arg::with_name("payer") - .long("payer") - .value_name("KEYPAIR") - .validator(is_keypair) - .takes_value(true) - .help( - "Specify the transaction fee payer account address. \ - This may be a keypair file, the ASK keyword. \ - Defaults to the client keypair.", - ), - ) - .arg( - Arg::with_name("confirm") - .long("confirm") - .value_name("CONFIRM") - .takes_value(true) - .default_value("true") - .help( - "Specify whether to wait transaction confirmation" - ), - ) - ) - .subcommand(SubCommand::with_name("unlock").about("Unlock a vesting contract. This will only release \ - the schedules that have reached maturity.") - .arg( - Arg::with_name("seed") - .long("seed") - .value_name("SEED") - .validator(is_parsable::) - .takes_value(true) - .help( - "Specify the seed for the vesting contract.", - ), - ) - .arg( - Arg::with_name("payer") - .long("payer") - .value_name("KEYPAIR") - .validator(is_keypair) - .takes_value(true) - .help( - "Specify the transaction fee payer account address. \ - This may be a keypair file, the ASK keyword. \ - Defaults to the client keypair.", - ), - ) - ) - .subcommand(SubCommand::with_name("change-destination").about("Change the destination of a vesting contract") - .arg( - Arg::with_name("seed") - .long("seed") - .value_name("SEED") - .validator(is_parsable::) - .takes_value(true) - .help( - "Specify the seed for the vesting contract.", - ), - ) - .arg( - Arg::with_name("current_destination_owner") - .long("current_destination_owner") - .value_name("KEYPAIR") - .validator(is_keypair) - .takes_value(true) - .help( - "Specify the current destination owner account keypair. \ - This may be a keypair file, the ASK keyword. \ - Defaults to the client keypair.", - ), - ) - .arg( - Arg::with_name("new_destination_address") - .long("new_destination_address") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the new destination (non-token) account address. \ - If specified, the vesting destination will be the associated \ - token account for the mint of the contract." - ), - ) - .arg( - Arg::with_name("new_destination_token_address") - .long("new_destination_token_address") - .value_name("ADDRESS") - .validator(is_pubkey) - .takes_value(true) - .help( - "Specify the new destination token account address. \ - If specified, this address will be used as a destination, \ - and overwrite the associated token account.", - ), - ) - .arg( - Arg::with_name("payer") - .long("payer") - .value_name("KEYPAIR") - .validator(is_keypair) - .takes_value(true) - .help( - "Specify the transaction fee payer account address. \ - This may be a keypair file, the ASK keyword. \ - Defaults to the client keypair.", - ), - ) - ) - .subcommand(SubCommand::with_name("info").about("Print information about a vesting contract") - .arg( - Arg::with_name("seed") - .long("seed") - .value_name("SEED") - .validator(is_parsable::) - .takes_value(true) - .help( - "Specify the seed for the vesting contract.", - ), - ) - ) - .get_matches(); - - let rpc_url = value_t!(matches, "rpc_url", String).unwrap(); - let rpc_client = RpcClient::new(rpc_url); - let program_id = pubkey_of(&matches, "program_id").unwrap(); - - let _ = match matches.subcommand() { - ("create", Some(arg_matches)) => { - let source_keypair = keypair_of(arg_matches, "source_owner").unwrap(); - let source_token_pubkey = pubkey_of(arg_matches, "source_token_address"); - let mint_address = pubkey_of(arg_matches, "mint_address").unwrap(); - let destination_pubkey = match pubkey_of(arg_matches, "destination_token_address") { - None => get_associated_token_address( - &pubkey_of(arg_matches, "destination_address").unwrap(), - &mint_address, - ), - Some(destination_token_pubkey) => destination_token_pubkey, - }; - let payer_keypair = keypair_of(arg_matches, "payer").unwrap(); - - // Parsing schedules - let mut schedule_amounts: Vec = values_of(arg_matches, "amounts").unwrap(); - let confirm: bool = value_of(arg_matches, "confirm").unwrap(); - let release_frequency: Option = value_of(arg_matches, "release-frequency"); - - let schedule_times = if release_frequency.is_some() { - // best found in rust - let release_frequency: iso8601_duration::Duration = - release_frequency.unwrap().parse().unwrap(); - let release_frequency: u64 = Duration::from_std(release_frequency.to_std()) - .unwrap() - .num_seconds() - .try_into() - .unwrap(); - if schedule_amounts.len() > 1 { - panic!("Linear vesting must have one amount which will split into parts per period") - } - let start: u64 = DateTime::parse_from_rfc3339( - &value_of::(arg_matches, "start-date-time").unwrap(), - ) - .unwrap() - .timestamp() - .try_into() - .unwrap(); - let end: u64 = DateTime::parse_from_rfc3339( - &value_of::(arg_matches, "end-date-time").unwrap(), - ) - .unwrap() - .timestamp() - .try_into() - .unwrap(); - let total = schedule_amounts[0]; - let part = (((total as u128) * (release_frequency as u128)) - / ((end - start) as u128)) - .try_into() - .unwrap(); - schedule_amounts.clear(); - let mut linear_vesting = Vec::new(); - - let q = total / part; - let r = total % part; - - for n in 0..q { - linear_vesting.push(start + n * release_frequency); - schedule_amounts.push(part); - } - - if r != 0 { - schedule_amounts[(q - 1) as usize] += r; - } - - if linear_vesting.len() > 365 { - panic!("Total count of vesting periods is more than 365. Not sure if you want to do that.") - } - - assert_eq!(schedule_amounts.iter().sum::(), total); - - linear_vesting - } else { - values_of(arg_matches, "release-times").unwrap() - }; - - if schedule_amounts.len() != schedule_times.len() { - eprintln!("error: Number of amounts given is not equal to number of release heights given."); - std::process::exit(1); - } - let mut schedules: Vec = Vec::with_capacity(schedule_amounts.len()); - for (&a, &h) in schedule_amounts.iter().zip(schedule_times.iter()) { - schedules.push(Schedule { - release_time: h, - amount: a, - }); - } - - command_create_svc( - rpc_client, - program_id, - payer_keypair, - source_keypair, - source_token_pubkey, - destination_pubkey, - mint_address, - schedules, - confirm, - ) - } - ("unlock", Some(arg_matches)) => { - // The seed is given in the format of a pubkey on the user side but it's handled as a [u8;32] in the program - let vesting_seed = pubkey_of(arg_matches, "seed").unwrap().to_bytes(); - let payer_keypair = keypair_of(arg_matches, "payer").unwrap(); - command_unlock_svc(rpc_client, program_id, vesting_seed, payer_keypair) - } - ("change-destination", Some(arg_matches)) => { - let vesting_seed = pubkey_of(arg_matches, "seed").unwrap().to_bytes(); - let destination_account_owner = - keypair_of(arg_matches, "current_destination_owner").unwrap(); - let opt_new_destination_account = pubkey_of(arg_matches, "new_destination_address"); - let opt_new_destination_token_account = - pubkey_of(arg_matches, "new_destination_token_address"); - let payer_keypair = keypair_of(arg_matches, "payer").unwrap(); - command_change_destination( - rpc_client, - program_id, - destination_account_owner, - opt_new_destination_account, - opt_new_destination_token_account, - vesting_seed, - payer_keypair, - ) - } - ("info", Some(arg_matches)) => { - let vesting_seed = pubkey_of(arg_matches, "seed").unwrap().to_bytes(); - let rpcurl = value_of(arg_matches, "rpc_url").unwrap(); - command_info(rpc_client, rpcurl, program_id, vesting_seed) - } - _ => unreachable!(), - }; -} diff --git a/cli/target/.rustc_info.json b/cli/target/.rustc_info.json deleted file mode 100644 index 559deb7..0000000 --- a/cli/target/.rustc_info.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc_fingerprint":14240607006267589363,"outputs":{"17598535894874457435":{"success":true,"status":"","code":0,"stdout":"rustc 1.57.0 (f1edd0429 2021-11-29)\nbinary: rustc\ncommit-hash: f1edd0429582dd29cccacaf50fd134b05593bd9c\ncommit-date: 2021-11-29\nhost: x86_64-unknown-linux-gnu\nrelease: 1.57.0\nLLVM version: 13.0.0\n","stderr":""},"931469667778813386":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/dz/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\ndebug_assertions\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"15537503139010883884":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n","stderr":""},"2797684049618456168":{"success":false,"status":"exit status: 1","code":1,"stdout":"","stderr":"error: `-Csplit-debuginfo` is unstable on this platform\n\n"}},"successes":{}} \ No newline at end of file diff --git a/cli/target/debug/.cargo-lock b/cli/target/debug/.cargo-lock deleted file mode 100644 index e69de29..0000000 diff --git a/js/README.md b/js/README.md index a170a62..e9e6d16 100644 --- a/js/README.md +++ b/js/README.md @@ -22,7 +22,6 @@ The code allows you to - Create vesting instructions for any SPL token: `createCreateInstruction` - Create unlock instructions: `createUnlockInstruction` -- Change the destination of the vested tokens: `createChangeDestinationInstruction` (To import Solana accounts created with [Sollet](https://sollet.io) you can use `getAccountFromSeed`) @@ -37,7 +36,4 @@ Fetching contract r2p2mLJvyrTzetxxsttQ54CS1m18zMgYqKSRzxP9WpE ✅ Successfully created unlocking instructions 🚚 Transaction signature: 2Vg3W1w8WBdRAWBEwFTn2BtMkKPD3Xor7SRvzC193UnsUnhmneUChPHe7vLF9Lfw9BKxWH5JbbJmnda4XztHMVHz -Fetching contract r2p2mLJvyrTzetxxsttQ54CS1m18zMgYqKSRzxP9WpE -✅ Successfully changed destination -🚚 Transaction signature: 4tgPgCdM5ubaSKNLKD1WrfAJPZgRajxRSnmcPkHcN1TCeCRmq3cUCYVdCzsYwr63JRf4D2K1UZnt8rwu2pkGxeYe ``` diff --git a/js/dist/index.d.ts b/js/dist/index.d.ts new file mode 100644 index 0000000..803381a --- /dev/null +++ b/js/dist/index.d.ts @@ -0,0 +1,4 @@ +export * from './instructions'; +export * from './main'; +export * from './state'; +export * from './utils'; diff --git a/js/dist/index.js b/js/dist/index.js new file mode 100644 index 0000000..364520f --- /dev/null +++ b/js/dist/index.js @@ -0,0 +1 @@ +"use strict";var e,r=require("@solana/web3.js"),t=require("@solana/spl-token"),n=require("bn.js"),i=require("bs58");function s(e,t,n,i,s){let o=[Buffer.from(Int8Array.from([0]).buffer),Buffer.concat(s)];const a=Buffer.concat(o),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:c,programId:t,data:a})}function o(e,t,n,i,s,o,a,c,u,f){let l=[Buffer.from(Int8Array.from([1]).buffer),Buffer.concat(f),c.toBuffer()];l.push(u.toBuffer());const d=Buffer.concat(l),g=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:g,programId:e,data:d})}function a(e,t,n,i,s,o,a){const c=Buffer.concat([Buffer.from(Int8Array.from([2]).buffer),Buffer.concat(a)]),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:u,programId:e,data:c})}function c(e,t,n,i,s,o,a){const c=Buffer.concat([Buffer.from(Int8Array.from([3]).buffer),Buffer.concat(a)]),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}];return new r.TransactionInstruction({keys:u,programId:e,data:c})}exports.Instruction=void 0,(e=exports.Instruction||(exports.Instruction={}))[e.Init=0]="Init",e[e.Create=1]="Create";class u extends n{toBuffer(){const e=super.toArray().reverse(),r=Buffer.from(e);if(8===r.length)return r;if(r.length>8)throw new Error("Numberu64 too large");const t=Buffer.alloc(8);return r.copy(t),t}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new n([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class f{constructor(e,r){this.timeDelta=e,this.amount=r}toBuffer(){return Buffer.concat([this.timeDelta.toBuffer(),this.amount.toBuffer()])}static fromBuffer(e){const r=u.fromBuffer(e.slice(0,8)),t=u.fromBuffer(e.slice(8,16));return new f(r,t)}}class l{constructor(e,r,t){this.destinationAddress=e,this.mintAddress=r,this.isInitialized=t}static fromBuffer(e){return{destinationAddress:new r.PublicKey(e.slice(0,32)),mintAddress:new r.PublicKey(e.slice(32,64)),isInitialized:1==e[64]}}}class d{constructor(e,r,t){this.destinationAddress=e,this.mintAddress=r,this.schedules=t}static fromBuffer(e){const r=l.fromBuffer(e.slice(0,65));if(!r.isInitialized)return;const t=[];for(let r=65;r4)throw new Error("Numberu32 too large");const t=Buffer.alloc(4);return r.copy(t),t}static fromBuffer(e){if(4!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new n([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}},exports.Numberu64=u,exports.Schedule=f,exports.TOKEN_VESTING_PROGRAM_ID=g,exports.VestingScheduleHeader=l,exports.create=async function(e,n,a,c,u,f,l,d,g){null==f&&(f=await t.getAssociatedTokenAddress(d,u,!0)),a=a.slice(0,31);const[b,p]=await r.PublicKey.findProgramAddress([a],n),m=await t.getAssociatedTokenAddress(d,b,!0);if(a=Buffer.from(a.toString("hex")+p.toString(16),"hex"),console.log("Vesting contract account pubkey: ",b.toBase58()),console.log("contract ID: ",i.encode(a)),await e.getAccountInfo(b))throw"Contract already exists.";return[s(r.SystemProgram.programId,n,c,b,[a]),t.createAssociatedTokenAccountInstruction(c,m,b,d),o(n,t.TOKEN_PROGRAM_ID,r.SYSVAR_CLOCK_PUBKEY,b,m,u,f,d,g,[a])]},exports.createCreateInstruction=o,exports.createInitInstruction=s,exports.createInitializeUnlockInstruction=c,exports.createUnlockInstruction=a,exports.generateRandomSeed=()=>{let e="";for(let r=0;r<64;r++)e+=Math.floor(10*Math.random());return e},exports.getContractInfo=b,exports.initializeUnlock=async function(e,n,i,s){i=i.slice(0,31);const[o,a]=await r.PublicKey.findProgramAddress([i],n);i=Buffer.from(i.toString("hex")+a.toString(16),"hex");const u=await t.getAssociatedTokenAddress(s,o,!0),f=await b(e,o);return[c(n,t.TOKEN_PROGRAM_ID,r.SYSVAR_CLOCK_PUBKEY,o,u,f.destinationAddress,[i])]},exports.unlock=async function(e,n,i,s){i=i.slice(0,31);const[o,c]=await r.PublicKey.findProgramAddress([i],n);i=Buffer.from(i.toString("hex")+c.toString(16),"hex");const u=await t.getAssociatedTokenAddress(s,o,!0),f=await b(e,o);return[a(n,t.TOKEN_PROGRAM_ID,r.SYSVAR_CLOCK_PUBKEY,o,u,f.destinationAddress,[i])]}; diff --git a/js/dist/instructions.d.ts b/js/dist/instructions.d.ts new file mode 100644 index 0000000..c66ac35 --- /dev/null +++ b/js/dist/instructions.d.ts @@ -0,0 +1,11 @@ +/// +import { PublicKey, TransactionInstruction } from '@solana/web3.js'; +import { Schedule } from './state'; +export declare enum Instruction { + Init = 0, + Create = 1 +} +export declare function createInitInstruction(systemProgramId: PublicKey, vestingProgramId: PublicKey, payerKey: PublicKey, vestingAccountKey: PublicKey, seeds: Array): TransactionInstruction; +export declare function createCreateInstruction(vestingProgramId: PublicKey, tokenProgramId: PublicKey, clockSysvarId: PublicKey, vestingAccountKey: PublicKey, vestingTokenAccountKey: PublicKey, sourceTokenAccountOwnerKey: PublicKey, sourceTokenAccountKey: PublicKey, mintAddress: PublicKey, schedule: Schedule, seeds: Array): TransactionInstruction; +export declare function createUnlockInstruction(vestingProgramId: PublicKey, tokenProgramId: PublicKey, clockSysvarId: PublicKey, vestingAccountKey: PublicKey, vestingTokenAccountKey: PublicKey, destinationTokenAccountKey: PublicKey, seeds: Array): TransactionInstruction; +export declare function createInitializeUnlockInstruction(vestingProgramId: PublicKey, tokenProgramId: PublicKey, clockSysvarId: PublicKey, vestingAccountKey: PublicKey, vestingTokenAccountKey: PublicKey, destinationTokenAccountKey: PublicKey, seeds: Array): TransactionInstruction; diff --git a/js/dist/main.d.ts b/js/dist/main.d.ts new file mode 100644 index 0000000..f8e2c5f --- /dev/null +++ b/js/dist/main.d.ts @@ -0,0 +1,46 @@ +/// +import { PublicKey, TransactionInstruction, Connection } from '@solana/web3.js'; +import { ContractInfo, Schedule } from './state'; +/** + * The vesting schedule program ID on mainnet + */ +export declare const TOKEN_VESTING_PROGRAM_ID: PublicKey; +/** + * This function can be used to lock tokens + * @param connection The Solana RPC connection object + * @param programId The token vesting program ID + * @param seedWord Seed words used to derive the vesting account + * @param payer The fee payer of the transaction + * @param sourceTokenOwner The owner of the source token account (i.e where locked tokens are originating from) + * @param possibleSourceTokenPubkey The source token account (i.e where locked tokens are originating from), if null it defaults to the ATA + * @param destinationTokenPubkey The destination token account i.e where unlocked tokens will be transfered + * @param mintAddress The mint of the tokens being vested + * @param schedule The vesting schedule + * @returns An array of `TransactionInstruction` + */ +export declare function create(connection: Connection, programId: PublicKey, seedWord: Buffer | Uint8Array, payer: PublicKey, sourceTokenOwner: PublicKey, possibleSourceTokenPubkey: PublicKey | null, destinationTokenPubkey: PublicKey, mintAddress: PublicKey, schedule: Schedule): Promise>; +/** + * This function can be used to unlock vested tokens + * @param connection The Solana RPC connection object + * @param programId The token vesting program ID + * @param seedWord Seed words used to derive the vesting account + * @param mintAddress The mint of the vested tokens + * @returns An array of `TransactionInstruction` + */ +export declare function unlock(connection: Connection, programId: PublicKey, seedWord: Buffer | Uint8Array, mintAddress: PublicKey): Promise>; +/** + * This function can be used to initialize the unlock of vested tokens + * @param connection The Solana RPC connection object + * @param programId The token vesting program ID + * @param seedWord Seed words used to derive the vesting account + * @param mintAddress The mint of the vested tokens + * @returns An array of `TransactionInstruction` + */ +export declare function initializeUnlock(connection: Connection, programId: PublicKey, seedWord: Buffer | Uint8Array, mintAddress: PublicKey): Promise>; +/** + * This function can be used retrieve information about a vesting account + * @param connection The Solana RPC connection object + * @param vestingAccountKey The vesting account public key + * @returns A `ContractInfo` object + */ +export declare function getContractInfo(connection: Connection, vestingAccountKey: PublicKey): Promise; diff --git a/js/dist/state.d.ts b/js/dist/state.d.ts new file mode 100644 index 0000000..a2571a7 --- /dev/null +++ b/js/dist/state.d.ts @@ -0,0 +1,24 @@ +/// +import { PublicKey } from '@solana/web3.js'; +import { Numberu64 } from './utils'; +export declare class Schedule { + timeDelta: Numberu64; + amount: Numberu64; + constructor(timeDelta: Numberu64, amount: Numberu64); + toBuffer(): Buffer; + static fromBuffer(buf: Buffer): Schedule; +} +export declare class VestingScheduleHeader { + destinationAddress: PublicKey; + mintAddress: PublicKey; + isInitialized: boolean; + constructor(destinationAddress: PublicKey, mintAddress: PublicKey, isInitialized: boolean); + static fromBuffer(buf: Buffer): VestingScheduleHeader; +} +export declare class ContractInfo { + destinationAddress: PublicKey; + mintAddress: PublicKey; + schedules: Array; + constructor(destinationAddress: PublicKey, mintAddress: PublicKey, schedules: Array); + static fromBuffer(buf: Buffer): ContractInfo | undefined; +} diff --git a/js/dist/utils.d.ts b/js/dist/utils.d.ts new file mode 100644 index 0000000..40d952b --- /dev/null +++ b/js/dist/utils.d.ts @@ -0,0 +1,23 @@ +/// +import BN from 'bn.js'; +export declare const generateRandomSeed: () => string; +export declare class Numberu64 extends BN { + /** + * Convert to Buffer representation + */ + toBuffer(): Buffer; + /** + * Construct a Numberu64 from Buffer representation + */ + static fromBuffer(buffer: any): any; +} +export declare class Numberu32 extends BN { + /** + * Convert to Buffer representation + */ + toBuffer(): Buffer; + /** + * Construct a Numberu32 from Buffer representation + */ + static fromBuffer(buffer: any): any; +} diff --git a/js/src/example.ts b/js/src/example.ts index 172fbea..3282daa 100644 --- a/js/src/example.ts +++ b/js/src/example.ts @@ -20,32 +20,7 @@ const wallet = Keypair.fromSecretKey( ); /** There are better way to generate an array of dates but be careful as it's irreversible */ -const DATES = [ - new Date(2022, 12), - new Date(2023, 1), - new Date(2023, 2), - new Date(2023, 3), - new Date(2023, 4), - new Date(2023, 5), - new Date(2023, 6), - new Date(2023, 7), - new Date(2023, 8), - new Date(2023, 9), - new Date(2023, 10), - new Date(2023, 11), - new Date(2024, 12), - new Date(2024, 2), - new Date(2024, 3), - new Date(2024, 4), - new Date(2024, 5), - new Date(2024, 6), - new Date(2024, 7), - new Date(2024, 8), - new Date(2024, 9), - new Date(2024, 10), - new Date(2024, 11), - new Date(2024, 12), -]; +const DATE = new Date(2022, 12); /** Info about the desintation */ const DESTINATION_OWNER = new PublicKey(''); @@ -59,7 +34,7 @@ const DECIMALS = 0; const SOURCE_TOKEN_ACCOUNT = new PublicKey(''); /** Amount to give per schedule */ -const AMOUNT_PER_SCHEDULE = 0; +const LOCKED_AMOUNT = 0; /** Your RPC connection */ const connection = new Connection(''); @@ -86,19 +61,14 @@ const checks = async () => { /** Function that locks the tokens */ const lock = async () => { await checks(); - const schedules: Schedule[] = []; - for (let date of DATES) { - schedules.push( - new Schedule( - /** Has to be in seconds */ - // @ts-ignore - new Numberu64(date.getTime() / 1_000), - /** Don't forget to add decimals */ - // @ts-ignore - new Numberu64(AMOUNT_PER_SCHEDULE * Math.pow(10, DECIMALS)), - ), - ); - } + const schedule: Schedule = new Schedule( + /** Has to be in seconds */ + // @ts-ignore + new Numberu64(60), + /** Don't forget to add decimals */ + // @ts-ignore + new Numberu64(LOCKED_AMOUNT * Math.pow(10, DECIMALS)), + ); const seed = generateRandomSeed(); console.log(`Seed: ${seed}`); @@ -112,7 +82,7 @@ const lock = async () => { SOURCE_TOKEN_ACCOUNT, DESTINATION_TOKEN_ACCOUNT, MINT, - schedules, + schedule, ); const tx = await signAndSendInstructions(connection, [], wallet, instruction); diff --git a/js/src/instructions.ts b/js/src/instructions.ts index c1d450f..4db40da 100644 --- a/js/src/instructions.ts +++ b/js/src/instructions.ts @@ -1,4 +1,8 @@ -import { PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js'; +import { + PublicKey, + SYSVAR_RENT_PUBKEY, + TransactionInstruction, +} from '@solana/web3.js'; import { Schedule } from './state'; import { Numberu32 } from './utils'; @@ -13,14 +17,8 @@ export function createInitInstruction( payerKey: PublicKey, vestingAccountKey: PublicKey, seeds: Array, - numberOfSchedules: number, ): TransactionInstruction { - let buffers = [ - Buffer.from(Int8Array.from([0]).buffer), - Buffer.concat(seeds), - // @ts-ignore - new Numberu32(numberOfSchedules).toBuffer(), - ]; + let buffers = [Buffer.from(Int8Array.from([0]).buffer), Buffer.concat(seeds)]; const data = Buffer.concat(buffers); const keys = [ @@ -56,25 +54,22 @@ export function createInitInstruction( export function createCreateInstruction( vestingProgramId: PublicKey, tokenProgramId: PublicKey, + clockSysvarId: PublicKey, vestingAccountKey: PublicKey, vestingTokenAccountKey: PublicKey, sourceTokenAccountOwnerKey: PublicKey, sourceTokenAccountKey: PublicKey, - destinationTokenAccountKey: PublicKey, mintAddress: PublicKey, - schedules: Array, + schedule: Schedule, seeds: Array, ): TransactionInstruction { let buffers = [ Buffer.from(Int8Array.from([1]).buffer), Buffer.concat(seeds), mintAddress.toBuffer(), - destinationTokenAccountKey.toBuffer(), ]; - schedules.forEach(s => { - buffers.push(s.toBuffer()); - }); + buffers.push(schedule.toBuffer()); const data = Buffer.concat(buffers); const keys = [ @@ -83,6 +78,11 @@ export function createCreateInstruction( isSigner: false, isWritable: false, }, + { + pubkey: clockSysvarId, + isSigner: false, + isWritable: false, + }, { pubkey: vestingAccountKey, isSigner: false, @@ -159,12 +159,13 @@ export function createUnlockInstruction( }); } -export function createChangeDestinationInstruction( +export function createInitializeUnlockInstruction( vestingProgramId: PublicKey, + tokenProgramId: PublicKey, + clockSysvarId: PublicKey, vestingAccountKey: PublicKey, - currentDestinationTokenAccountOwner: PublicKey, - currentDestinationTokenAccount: PublicKey, - targetDestinationTokenAccount: PublicKey, + vestingTokenAccountKey: PublicKey, + destinationTokenAccountKey: PublicKey, seeds: Array, ): TransactionInstruction { const data = Buffer.concat([ @@ -174,24 +175,29 @@ export function createChangeDestinationInstruction( const keys = [ { - pubkey: vestingAccountKey, + pubkey: tokenProgramId, isSigner: false, - isWritable: true, + isWritable: false, }, { - pubkey: currentDestinationTokenAccount, + pubkey: clockSysvarId, isSigner: false, isWritable: false, }, { - pubkey: currentDestinationTokenAccountOwner, - isSigner: true, - isWritable: false, + pubkey: vestingAccountKey, + isSigner: false, + isWritable: true, }, { - pubkey: targetDestinationTokenAccount, + pubkey: vestingTokenAccountKey, isSigner: false, - isWritable: false, + isWritable: true, + }, + { + pubkey: destinationTokenAccountKey, + isSigner: false, + isWritable: true, }, ]; return new TransactionInstruction({ diff --git a/js/src/main.ts b/js/src/main.ts index aba24e8..bad6c69 100644 --- a/js/src/main.ts +++ b/js/src/main.ts @@ -11,10 +11,10 @@ import { getAssociatedTokenAddress, } from '@solana/spl-token'; import { - createChangeDestinationInstruction, createCreateInstruction, createInitInstruction, createUnlockInstruction, + createInitializeUnlockInstruction, } from './instructions'; import { ContractInfo, Schedule } from './state'; import { assert } from 'console'; @@ -37,7 +37,7 @@ export const TOKEN_VESTING_PROGRAM_ID = new PublicKey( * @param possibleSourceTokenPubkey The source token account (i.e where locked tokens are originating from), if null it defaults to the ATA * @param destinationTokenPubkey The destination token account i.e where unlocked tokens will be transfered * @param mintAddress The mint of the tokens being vested - * @param schedules The array of vesting schedules + * @param schedule The vesting schedule * @returns An array of `TransactionInstruction` */ export async function create( @@ -49,7 +49,7 @@ export async function create( possibleSourceTokenPubkey: PublicKey | null, destinationTokenPubkey: PublicKey, mintAddress: PublicKey, - schedules: Array, + schedule: Schedule, ): Promise> { // If no source token account was given, use the associated source account if (possibleSourceTokenPubkey == null) { @@ -94,7 +94,6 @@ export async function create( payer, vestingAccountKey, [seedWord], - schedules.length, ), createAssociatedTokenAccountInstruction( payer, @@ -105,13 +104,13 @@ export async function create( createCreateInstruction( programId, TOKEN_PROGRAM_ID, + SYSVAR_CLOCK_PUBKEY, vestingAccountKey, vestingTokenAccountKey, sourceTokenOwner, possibleSourceTokenPubkey, - destinationTokenPubkey, mintAddress, - schedules, + schedule, [seedWord], ), ]; @@ -162,6 +161,50 @@ export async function unlock( return instruction; } +/** + * This function can be used to initialize the unlock of vested tokens + * @param connection The Solana RPC connection object + * @param programId The token vesting program ID + * @param seedWord Seed words used to derive the vesting account + * @param mintAddress The mint of the vested tokens + * @returns An array of `TransactionInstruction` + */ +export async function initializeUnlock( + connection: Connection, + programId: PublicKey, + seedWord: Buffer | Uint8Array, + mintAddress: PublicKey, +): Promise> { + seedWord = seedWord.slice(0, 31); + const [vestingAccountKey, bump] = await PublicKey.findProgramAddress( + [seedWord], + programId, + ); + seedWord = Buffer.from(seedWord.toString('hex') + bump.toString(16), 'hex'); + + const vestingTokenAccountKey = await getAssociatedTokenAddress( + mintAddress, + vestingAccountKey, + true, + ); + + const vestingInfo = await getContractInfo(connection, vestingAccountKey); + + let instruction = [ + createInitializeUnlockInstruction( + programId, + TOKEN_PROGRAM_ID, + SYSVAR_CLOCK_PUBKEY, + vestingAccountKey, + vestingTokenAccountKey, + vestingInfo.destinationAddress, + [seedWord], + ), + ]; + + return instruction; +} + /** * This function can be used retrieve information about a vesting account * @param connection The Solana RPC connection object @@ -186,54 +229,3 @@ export async function getContractInfo( } return info!; } - -/** - * This function can be used to transfer a vesting account to a new wallet. It requires the current owner to sign. - * @param connection The Solana RPC connection object - * @param programId The token vesting program ID - * @param currentDestinationTokenAccountPublicKey The current token account to which the vested tokens are transfered to as they unlock - * @param newDestinationTokenAccountOwner The new owner of the vesting account - * @param newDestinationTokenAccount The new token account to which the vested tokens will be transfered to as they unlock - * @param vestingSeed Seed words used to derive the vesting account - * @returns An array of `TransactionInstruction` - */ -export async function changeDestination( - connection: Connection, - programId: PublicKey, - currentDestinationTokenAccountPublicKey: PublicKey, - newDestinationTokenAccountOwner: PublicKey | undefined, - newDestinationTokenAccount: PublicKey | undefined, - vestingSeed: Array, -): Promise> { - let seedWord = vestingSeed[0]; - seedWord = seedWord.slice(0, 31); - const [vestingAccountKey, bump] = await PublicKey.findProgramAddress( - [seedWord], - programId, - ); - seedWord = Buffer.from(seedWord.toString('hex') + bump.toString(16), 'hex'); - - const contractInfo = await getContractInfo(connection, vestingAccountKey); - if (!newDestinationTokenAccount) { - assert( - !!newDestinationTokenAccountOwner, - 'At least one of newDestinationTokenAccount and newDestinationTokenAccountOwner must be provided!', - ); - newDestinationTokenAccount = await getAssociatedTokenAddress( - contractInfo.mintAddress, - newDestinationTokenAccountOwner!, - true, - ); - } - - return [ - createChangeDestinationInstruction( - programId, - vestingAccountKey, - currentDestinationTokenAccountPublicKey, - contractInfo.destinationAddress, - newDestinationTokenAccount, - [seedWord], - ), - ]; -} diff --git a/js/src/state.ts b/js/src/state.ts index c5874ce..d3920b1 100644 --- a/js/src/state.ts +++ b/js/src/state.ts @@ -3,22 +3,22 @@ import { Numberu64 } from './utils'; export class Schedule { // Release time in unix timestamp - releaseTime!: Numberu64; + timeDelta!: Numberu64; amount!: Numberu64; - constructor(releaseTime: Numberu64, amount: Numberu64) { - this.releaseTime = releaseTime; + constructor(timeDelta: Numberu64, amount: Numberu64) { + this.timeDelta = timeDelta; this.amount = amount; } public toBuffer(): Buffer { - return Buffer.concat([this.releaseTime.toBuffer(), this.amount.toBuffer()]); + return Buffer.concat([this.timeDelta.toBuffer(), this.amount.toBuffer()]); } static fromBuffer(buf: Buffer): Schedule { - const releaseTime: Numberu64 = Numberu64.fromBuffer(buf.slice(0, 8)); + const timeDelta: Numberu64 = Numberu64.fromBuffer(buf.slice(0, 8)); const amount: Numberu64 = Numberu64.fromBuffer(buf.slice(8, 16)); - return new Schedule(releaseTime, amount); + return new Schedule(timeDelta, amount); } } diff --git a/program/Cargo.lock b/program/Cargo.lock index 1b02e32..6a95bf8 100644 --- a/program/Cargo.lock +++ b/program/Cargo.lock @@ -7,2641 +7,4972 @@ name = "Inflector" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] [[package]] name = "addr2line" -version = "0.17.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] -name = "ahash" -version = "0.4.7" +name = "aead" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array", +] [[package]] -name = "aho-corasick" -version = "0.7.18" +name = "aes" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "memchr", + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", ] [[package]] -name = "aliasable" -version = "0.1.3" +name = "aes-gcm-siv" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" +checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] [[package]] -name = "anyhow" -version = "1.0.51" +name = "ahash" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] [[package]] -name = "arbitrary" -version = "0.4.7" +name = "ahash" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db55d72333851e17d572bec876e390cd3b11eb1ef53ae821dd9f3b653d2b4569" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ - "derive_arbitrary", + "cfg-if", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy", ] [[package]] -name = "arbitrary" -version = "1.0.3" +name = "aho-corasick" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510c76ecefdceada737ea728f4f9a84bd2e1ef29f1ba555e560940fe279954de" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] [[package]] -name = "arrayref" -version = "0.3.6" +name = "aliasable" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" [[package]] -name = "arrayvec" -version = "0.5.2" +name = "alloc-no-stdlib" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] -name = "ascii" -version = "0.9.3" +name = "alloc-stdlib" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] [[package]] -name = "assert_matches" -version = "1.5.0" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] -name = "async-trait" -version = "0.1.51" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "libc", ] [[package]] -name = "atty" -version = "0.2.14" +name = "ansi_term" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "hermit-abi", - "libc", "winapi", ] [[package]] -name = "autocfg" -version = "1.0.1" +name = "anyhow" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] -name = "backtrace" -version = "0.3.63" +name = "aquamarine" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" +checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "serde", + "include_dir", + "itertools", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "base64" -version = "0.12.3" +name = "arbitrary" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "db55d72333851e17d572bec876e390cd3b11eb1ef53ae821dd9f3b653d2b4569" +dependencies = [ + "derive_arbitrary", +] [[package]] -name = "base64" -version = "0.13.0" +name = "arbitrary" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" [[package]] -name = "bincode" -version = "1.3.3" +name = "ark-bn254" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" dependencies = [ - "serde", + "ark-ec", + "ark-ff", + "ark-std", ] [[package]] -name = "bitflags" -version = "1.3.2" +name = "ark-ec" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "zeroize", +] [[package]] -name = "blake3" -version = "0.3.8" +name = "ark-ff" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if 0.1.10", - "constant_time_eq", - "crypto-mac 0.8.0", - "digest 0.9.0", + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", ] [[package]] -name = "block-buffer" -version = "0.9.0" +name = "ark-ff-asm" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "block-padding", - "generic-array 0.14.4", + "quote", + "syn 1.0.109", ] [[package]] -name = "block-padding" -version = "0.2.1" +name = "ark-ff-macros" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "borsh" -version = "0.9.1" +name = "ark-poly" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18dda7dc709193c0d86a1a51050a926dc3df1cf262ec46a23a25dba421ea1924" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "borsh-derive", - "hashbrown 0.9.1", + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", ] [[package]] -name = "borsh-derive" -version = "0.9.1" +name = "ark-serialize" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684155372435f578c0fa1acd13ebbb182cc19d6b38b64ae7901da4393217d264" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2 1.0.32", - "syn 1.0.82", + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint 0.4.6", ] [[package]] -name = "borsh-derive-internal" -version = "0.9.1" +name = "ark-serialize-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2102f62f8b6d3edeab871830782285b64cc1830168094db05c8e458f209bc5c3" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "borsh-schema-derive-internal" -version = "0.9.1" +name = "ark-std" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196c978c4c9b0b142d446ef3240690bf5a8a33497074a113ff9a337ccb750483" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "num-traits", + "rand 0.8.5", ] [[package]] -name = "bs58" -version = "0.3.1" +name = "arrayref" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] -name = "bs58" -version = "0.4.0" +name = "arrayvec" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "bumpalo" -version = "3.8.0" +name = "ascii" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" [[package]] -name = "bv" -version = "0.11.1" +name = "asn1-rs" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ - "feature-probe", - "serde", + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", ] [[package]] -name = "bytemuck" -version = "1.7.2" +name = "asn1-rs-derive" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "bytemuck_derive", + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", ] [[package]] -name = "bytemuck_derive" -version = "1.0.1" +name = "asn1-rs-impl" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e215f8c2f9f79cb53c8335e687ffd07d5bfcb6fe5fc80723762d0be46e7cc54" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "byteorder" -version = "1.4.3" +name = "assert_matches" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] -name = "bytes" -version = "0.4.12" +name = "async-channel" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ - "byteorder", - "either", - "iovec", + "concurrent-queue", + "event-listener", + "futures-core", ] [[package]] -name = "bytes" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" - -[[package]] -name = "bzip2" -version = "0.3.3" +name = "async-compression" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" +checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" dependencies = [ - "bzip2-sys", - "libc", + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", ] [[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" +name = "async-mutex" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" dependencies = [ - "cc", - "libc", - "pkg-config", + "event-listener", ] [[package]] -name = "cc" -version = "1.0.72" +name = "async-trait" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ - "jobserver", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "cfg-if" -version = "0.1.10" +name = "atty" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "autocfg" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] -name = "chrono" -version = "0.4.19" +name = "backtrace" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ + "addr2line", + "cfg-if", "libc", - "num-integer", - "num-traits", - "serde", - "time", - "winapi", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] -name = "chrono-humanize" -version = "0.2.1" +name = "base64" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eddc119501d583fd930cb92144e605f44e0252c38dd89d9247fffa1993375cb" -dependencies = [ - "chrono", -] +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" [[package]] -name = "combine" -version = "3.8.1" +name = "base64" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] -name = "constant_time_eq" -version = "0.1.5" +name = "base64" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "cpufeatures" -version = "0.2.1" +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" -dependencies = [ - "libc", -] +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] -name = "crc32fast" -version = "1.3.0" +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "cfg-if 1.0.0", + "serde", ] [[package]] -name = "crossbeam-channel" -version = "0.4.4" +name = "bitflags" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", -] +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "crossbeam-channel" -version = "0.5.1" +name = "bitflags" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", + "serde", ] [[package]] -name = "crossbeam-deque" -version = "0.8.1" +name = "bitmaps" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils 0.8.5", + "typenum", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.5" +name = "blake3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", - "lazy_static", - "memoffset", - "scopeguard", + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", ] [[package]] -name = "crossbeam-utils" -version = "0.7.2" +name = "block-buffer" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", + "block-padding", + "generic-array", ] [[package]] -name = "crossbeam-utils" -version = "0.8.5" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "cfg-if 1.0.0", - "lazy_static", + "generic-array", ] [[package]] -name = "crunchy" -version = "0.2.2" +name = "block-padding" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] -name = "crypto-mac" -version = "0.8.0" +name = "borsh" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" dependencies = [ - "generic-array 0.14.4", - "subtle", + "borsh-derive 0.9.3", + "hashbrown 0.11.2", ] [[package]] -name = "crypto-mac" -version = "0.9.1" +name = "borsh" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bcd97a54c7ca5ce2f6eb16f6bede5b0ab5f0055fedc17d2f0b4466e21671ca" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" dependencies = [ - "generic-array 0.14.4", - "subtle", + "borsh-derive 0.10.3", + "hashbrown 0.13.2", ] [[package]] -name = "crypto-mac" -version = "0.10.1" +name = "borsh" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ - "generic-array 0.14.4", - "subtle", + "borsh-derive 1.5.1", + "cfg_aliases", ] [[package]] -name = "curve25519-dalek" -version = "2.1.3" +name = "borsh-derive" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle", - "zeroize", + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", ] [[package]] -name = "curve25519-dalek" -version = "3.2.0" +name = "borsh-derive" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", ] [[package]] -name = "dashmap" -version = "4.0.2" +name = "borsh-derive" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ - "cfg-if 1.0.0", - "num_cpus", - "rayon", + "once_cell", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.77", + "syn_derive", ] [[package]] -name = "derivation-path" -version = "0.1.3" +name = "borsh-derive-internal" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193388a8c8c75a490b604ff61775e236541b8975e98e5ca1f6ea97d122b7e2db" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ - "failure", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "derivative" -version = "2.2.0" +name = "borsh-derive-internal" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "derive_arbitrary" -version = "0.4.7" +name = "borsh-schema-derive-internal" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a012b5e473dc912f0db0546a1c9c6a194ce8494feb66fa0237160926f9e0e6" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "digest" -version = "0.8.1" +name = "borsh-schema-derive-internal" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" dependencies = [ - "generic-array 0.12.4", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "digest" -version = "0.9.0" +name = "brotli" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ - "generic-array 0.14.4", + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", ] [[package]] -name = "dir-diff" -version = "0.3.2" +name = "brotli-decompressor" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2860407d7d7e2e004bb2128510ad9e8d669e76fa005ccf567977b5d71b8b4a0b" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ - "walkdir", + "alloc-no-stdlib", + "alloc-stdlib", ] [[package]] -name = "ed25519" -version = "1.3.0" +name = "bs58" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" -dependencies = [ - "serde", - "signature", -] +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] -name = "ed25519-dalek" -version = "1.0.1" +name = "bumpalo" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", + "feature-probe", "serde", - "serde_bytes", - "sha2", - "zeroize", ] [[package]] -name = "ed25519-dalek-bip32" -version = "0.1.1" +name = "bytemuck" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057f328f31294b5ab432e6c39642f54afd1531677d6d4ba2905932844cc242f3" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ - "derivation-path", - "ed25519-dalek", - "failure", - "hmac 0.9.0", - "sha2", + "bytemuck_derive", ] [[package]] -name = "educe" -version = "0.4.18" +name = "bytemuck_derive" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86b50932a01e7ec5c06160492ab660fb19b6bb2a7878030dd6cd68d21df9d4d" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ - "enum-ordinalize", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "either" -version = "1.6.1" +name = "byteorder" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "encoding_rs" -version = "0.8.29" +name = "bytes" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74ea89a0a1b98f6332de42c95baff457ada66d1cb4030f9ff151b2041a1c746" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] -name = "enum-ordinalize" -version = "3.1.10" +name = "bzip2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b166c9e378360dd5a6666a9604bb4f54ae0cac39023ffbac425e917a2a04fef" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "bzip2-sys", + "libc", ] [[package]] -name = "env_logger" -version = "0.8.4" +name = "bzip2-sys" +version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", + "cc", + "libc", + "pkg-config", ] [[package]] -name = "failure" -version = "0.1.8" +name = "caps" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" dependencies = [ - "backtrace", - "failure_derive", + "libc", + "thiserror", ] [[package]] -name = "failure_derive" -version = "0.1.8" +name = "cc" +version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "synstructure", + "jobserver", + "libc", + "shlex", ] [[package]] -name = "feature-probe" -version = "0.1.1" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "filetime" -version = "0.2.15" +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall", - "winapi", -] +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "flate2" -version = "1.0.22" +name = "chrono" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ - "cfg-if 1.0.0", - "crc32fast", - "libc", - "miniz_oxide", + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", ] [[package]] -name = "fnv" -version = "1.0.7" +name = "chrono-humanize" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", +] [[package]] -name = "foreign-types" -version = "0.3.2" +name = "cipher" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "foreign-types-shared", + "generic-array", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "clap" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] [[package]] -name = "form_urlencoded" -version = "1.0.1" +name = "clap" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ - "matches", - "percent-encoding", + "atty", + "bitflags 1.3.2", + "clap_lex", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", ] [[package]] -name = "futures" -version = "0.3.18" +name = "clap_lex" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd0210d8c325c245ff06fd95a3b13689a1a276ac8cfa8e8720cb840bfb84b9e" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "os_str_bytes", ] [[package]] -name = "futures-channel" -version = "0.3.18" +name = "combine" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" dependencies = [ - "futures-core", - "futures-sink", + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", ] [[package]] -name = "futures-core" -version = "0.3.18" +name = "concurrent-queue" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] [[package]] -name = "futures-executor" -version = "0.3.18" +name = "console" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b808bf53348a36cab739d7e04755909b9fcaaa69b7d7e588b37b6ec62704c97" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", ] [[package]] -name = "futures-io" -version = "0.3.18" +name = "console_error_panic_hook" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] [[package]] -name = "futures-macro" -version = "0.3.18" +name = "console_log" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "log", + "web-sys", ] [[package]] -name = "futures-sink" -version = "0.3.18" +name = "const-oid" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] -name = "futures-task" -version = "0.3.18" +name = "constant_time_eq" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] -name = "futures-util" -version = "0.3.18" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", + "core-foundation-sys", + "libc", ] [[package]] -name = "generic-array" -version = "0.12.4" +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ - "typenum", + "libc", ] [[package]] -name = "generic-array" -version = "0.14.4" +name = "crc32fast" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "serde", - "typenum", - "version_check", + "cfg-if", ] [[package]] -name = "gethostname" -version = "0.2.1" +name = "crossbeam-channel" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e692e296bfac1d2533ef168d0b60ff5897b8b70a4009276834014dd8924cc028" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ - "libc", - "winapi", + "crossbeam-utils", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "crossbeam-deque" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "getrandom" -version = "0.2.3" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", + "crossbeam-utils", ] [[package]] -name = "gimli" -version = "0.26.1" +name = "crossbeam-utils" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] -name = "glob" -version = "0.3.0" +name = "crunchy" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] -name = "goblin" -version = "0.3.4" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "669cdc3826f69a51d3f8fc3f86de81c2378110254f678b8407977736122057a4" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "log", - "plain", - "scroll", + "generic-array", + "typenum", ] [[package]] -name = "h2" -version = "0.3.7" +name = "crypto-mac" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd819562fcebdac5afc5c113c3ec36f902840b70fd4fc458799c8ce4607ae55" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ - "bytes 1.1.0", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", + "generic-array", + "subtle", ] [[package]] -name = "hash32" -version = "0.1.1" +name = "ctr" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" dependencies = [ - "byteorder", + "cipher", ] [[package]] -name = "hashbrown" -version = "0.9.1" +name = "curve25519-dalek" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" dependencies = [ - "ahash", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "serde", + "subtle", + "zeroize", ] [[package]] -name = "hashbrown" -version = "0.11.2" +name = "darling" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "darling_core" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ - "libc", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.77", ] [[package]] -name = "hex" -version = "0.4.3" +name = "darling_macro" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.77", +] [[package]] -name = "hmac" -version = "0.8.1" +name = "dashmap" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", ] [[package]] -name = "hmac" -version = "0.9.0" +name = "data-encoding" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deae6d9dbb35ec2c502d62b8f7b1c000a0822c3b0794ba36b3149c0a1c840dff" -dependencies = [ - "crypto-mac 0.9.1", - "digest 0.9.0", -] +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] -name = "hmac" -version = "0.10.1" +name = "der" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" dependencies = [ - "crypto-mac 0.10.1", - "digest 0.9.0", + "const-oid", ] [[package]] -name = "hmac-drbg" -version = "0.3.0" +name = "der-parser" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "digest 0.9.0", - "generic-array 0.14.4", - "hmac 0.8.1", + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.6", + "num-traits", + "rusticata-macros", ] [[package]] -name = "honggfuzz" -version = "0.5.54" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea09577d948a98a5f59b7c891e274c4fb35ad52f67782b3d0cb53b9c05301f1" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "arbitrary 1.0.3", - "lazy_static", - "memmap", + "powerfmt", ] [[package]] -name = "http" -version = "0.2.5" +name = "derivation-path" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" -dependencies = [ - "bytes 1.1.0", - "fnv", - "itoa", -] +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" [[package]] -name = "http-body" -version = "0.4.4" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "bytes 1.1.0", - "http", - "pin-project-lite", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "httparse" -version = "1.5.1" +name = "derive_arbitrary" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" +checksum = "b1a012b5e473dc912f0db0546a1c9c6a194ce8494feb66fa0237160926f9e0e6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "httpdate" -version = "1.0.2" +name = "dialoguer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] [[package]] -name = "humantime" -version = "2.1.0" +name = "difflib" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] -name = "hyper" -version = "0.14.15" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436ec0091e4f20e655156a30a0df3770fe2900aa301e548e08446ec794b6953c" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "bytes 1.1.0", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", + "generic-array", ] [[package]] -name = "hyper-rustls" -version = "0.23.0" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "http", - "hyper", - "rustls", - "tokio", - "tokio-rustls", + "block-buffer 0.10.4", + "crypto-common", + "subtle", ] [[package]] -name = "idna" -version = "0.2.3" +name = "dir-diff" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", + "walkdir", ] [[package]] -name = "indexmap" -version = "1.7.0" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "autocfg", - "hashbrown 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "instant" -version = "0.1.12" +name = "dlopen2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" dependencies = [ - "cfg-if 1.0.0", + "dlopen2_derive", + "libc", + "once_cell", + "winapi", ] [[package]] -name = "iovec" -version = "0.1.4" +name = "dlopen2_derive" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ - "libc", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "ipnet" -version = "2.3.1" +name = "downcast" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] -name = "itertools" -version = "0.9.0" +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ed25519" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "either", + "signature", ] [[package]] -name = "itoa" -version = "0.4.8" +name = "ed25519-dalek" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] [[package]] -name = "jobserver" -version = "0.1.24" +name = "ed25519-dalek-bip32" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" dependencies = [ - "libc", + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.8", ] [[package]] -name = "js-sys" -version = "0.3.55" +name = "educe" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" dependencies = [ - "wasm-bindgen", + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "keccak" -version = "0.1.0" +name = "either" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] -name = "lazy_static" -version = "1.4.0" +name = "encode_unicode" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -dependencies = [ - "spin", -] - -[[package]] -name = "libc" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] -name = "libloading" -version = "0.6.7" +name = "encoding_rs" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ - "cfg-if 1.0.0", - "winapi", + "cfg-if", ] [[package]] -name = "libsecp256k1" -version = "0.5.0" +name = "enum-iterator" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd1137239ab33b41aa9637a88a28249e5e70c40a42ccc92db7f12cc356c1fcd7" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2", - "typenum", + "enum-iterator-derive", ] [[package]] -name = "libsecp256k1-core" -version = "0.2.2" +name = "enum-iterator-derive" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.2.1" +name = "enum-ordinalize" +version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ - "libsecp256k1-core", + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" +name = "env_logger" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ - "libsecp256k1-core", + "atty", + "humantime", + "log", + "regex", + "termcolor", ] [[package]] -name = "lock_api" -version = "0.4.5" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" -dependencies = [ - "scopeguard", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "log" -version = "0.4.14" +name = "errno" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "cfg-if 1.0.0", + "libc", + "windows-sys 0.52.0", ] [[package]] -name = "matches" -version = "0.1.9" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] -name = "maybe-uninit" -version = "2.0.0" +name = "fastrand" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] -name = "memchr" -version = "2.4.1" +name = "feature-probe" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" [[package]] -name = "memmap" -version = "0.7.0" +name = "filetime" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ + "cfg-if", "libc", - "winapi", + "libredox", + "windows-sys 0.59.0", ] [[package]] -name = "memmap2" -version = "0.1.0" +name = "flate2" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ - "libc", + "crc32fast", + "miniz_oxide", ] [[package]] -name = "memoffset" -version = "0.6.4" +name = "float-cmp" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" dependencies = [ - "autocfg", + "num-traits", ] [[package]] -name = "mime" -version = "0.3.16" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "miniz_oxide" -version = "0.4.4" +name = "form_urlencoded" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "adler", - "autocfg", + "percent-encoding", ] [[package]] -name = "mio" -version = "0.7.14" +name = "fragile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] -name = "miow" -version = "0.3.7" +name = "futures" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ - "winapi", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "ntapi" -version = "0.3.6" +name = "futures-channel" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ - "winapi", + "futures-core", + "futures-sink", ] [[package]] -name = "num-bigint" -version = "0.4.3" +name = "futures-core" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] -name = "num-derive" -version = "0.3.3" +name = "futures-executor" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "futures-core", + "futures-task", + "futures-util", ] [[package]] -name = "num-integer" -version = "0.1.44" +name = "futures-io" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] -name = "num-traits" -version = "0.2.14" +name = "futures-macro" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ - "autocfg", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "num_cpus" -version = "1.13.0" +name = "futures-sink" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] -name = "num_enum" -version = "0.5.4" +name = "futures-task" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9bd055fb730c4f8f4f57d45d35cd6b3f0980535b056dc7ff119cee6a66ed6f" -dependencies = [ - "derivative", - "num_enum_derive", -] +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] -name = "num_enum_derive" -version = "0.5.4" +name = "futures-util" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486ea01961c4a818096de679a8b740b26d9033146ac5291b1c98557658f8cdd9" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ - "proc-macro-crate 1.1.0", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", ] [[package]] -name = "object" -version = "0.27.1" +name = "generic-array" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "memchr", + "serde", + "typenum", + "version_check", ] [[package]] -name = "once_cell" -version = "1.8.0" +name = "gethostname" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] [[package]] -name = "opaque-debug" -version = "0.3.0" +name = "getrandom" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] [[package]] -name = "openssl" -version = "0.10.38" +name = "getrandom" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "foreign-types", + "cfg-if", + "js-sys", "libc", - "once_cell", - "openssl-sys", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "openssl-sys" -version = "0.9.71" +name = "gimli" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" + +[[package]] +name = "goblin" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df13d165e607909b363a4757a6f133f8a818a74e9d3a98d09c6128e15fa4c73" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", + "log", + "plain", + "scroll", ] [[package]] -name = "ouroboros" -version = "0.10.1" +name = "h2" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84236d64f1718c387232287cf036eb6632a5ecff226f4ff9dccb8c2b79ba0bde" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ - "aliasable", - "ouroboros_macro", - "stable_deref_trait", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.5.0", + "slab", + "tokio", + "tokio-util 0.7.12", + "tracing", ] [[package]] -name = "ouroboros_macro" -version = "0.10.1" +name = "hash32" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f463857a6eb96c0136b1d56e56c718350cef30412ec065b48294799a088bca68" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" dependencies = [ - "Inflector", - "proc-macro-error", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "byteorder", ] [[package]] -name = "parking_lot" +name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "instant", - "lock_api", - "parking_lot_core", + "ahash 0.7.8", ] [[package]] -name = "parking_lot_core" -version = "0.8.5" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", + "ahash 0.7.8", ] [[package]] -name = "pbkdf2" -version = "0.6.0" +name = "hashbrown" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b8c0d71734018084da0c0354193a5edfb81b20d2d57a92c5b154aefc554a4a" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "crypto-mac 0.10.1", + "ahash 0.8.11", ] [[package]] -name = "percent-encoding" -version = "2.1.0" +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] -name = "pin-project" -version = "1.0.8" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" -dependencies = [ - "pin-project-internal", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "pin-project-internal" -version = "1.0.8" +name = "hermit-abi" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "libc", ] [[package]] -name = "pin-project-lite" -version = "0.2.7" +name = "hermit-abi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] -name = "pin-utils" -version = "0.1.0" +name = "histogram" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" [[package]] -name = "pkg-config" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" - -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - -[[package]] -name = "ppv-lite86" -version = "0.2.15" +name = "hmac" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] [[package]] -name = "proc-macro-crate" -version = "0.1.5" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "toml", + "digest 0.10.7", ] [[package]] -name = "proc-macro-crate" -version = "1.1.0" +name = "hmac-drbg" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "thiserror", - "toml", + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "honggfuzz" +version = "0.5.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "7c76b6234c13c9ea73946d1379d33186151148e0da231506b964b44f3d023505" dependencies = [ - "proc-macro-error-attr", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "version_check", + "arbitrary 1.3.2", + "lazy_static", + "memmap2 0.9.5", + "rustc_version", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "http" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "version_check", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "proc-macro2" -version = "0.4.30" +name = "http-body" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "unicode-xid 0.1.0", + "bytes", + "http", + "pin-project-lite", ] [[package]] -name = "proc-macro2" -version = "1.0.32" +name = "httparse" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" -dependencies = [ - "unicode-xid 0.2.2", -] +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] -name = "qstring" -version = "0.7.2" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" -dependencies = [ - "percent-encoding", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "quote" -version = "0.6.13" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] -name = "quote" -version = "1.0.10" +name = "hyper" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ - "proc-macro2 1.0.32", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", ] [[package]] -name = "rand" -version = "0.7.3" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", - "rand_pcg", + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", ] [[package]] -name = "rand" -version = "0.8.4" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.3", - "rand_hc 0.3.1", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "rand_chacha" -version = "0.2.2" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "cc", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.3", -] +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "rand_core" -version = "0.5.1" +name = "idna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "getrandom 0.1.16", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "rand_core" -version = "0.6.3" +name = "im" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" dependencies = [ - "getrandom 0.2.3", + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "include_dir" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ - "rand_core 0.5.1", + "include_dir_macros", ] [[package]] -name = "rand_hc" -version = "0.3.1" +name = "include_dir_macros" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ - "rand_core 0.6.3", + "proc-macro2", + "quote", ] [[package]] -name = "rand_pcg" -version = "0.2.1" +name = "index_list" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] +checksum = "4e6ba961c14e98151cd6416dd3685efe786a94c38bc1a535c06ceff0a1600813" [[package]] -name = "rayon" -version = "1.5.1" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "crossbeam-deque", - "either", - "rayon-core", + "hashbrown 0.12.3", ] [[package]] -name = "rayon-core" -version = "1.9.1" +name = "indexmap" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ - "crossbeam-channel 0.5.1", - "crossbeam-deque", - "crossbeam-utils 0.8.5", - "lazy_static", - "num_cpus", + "equivalent", + "hashbrown 0.14.5", ] [[package]] -name = "redox_syscall" -version = "0.2.10" +name = "indicatif" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ - "bitflags", + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", ] [[package]] -name = "regex" -version = "1.5.4" +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "cfg-if", ] [[package]] -name = "regex-syntax" -version = "0.6.25" +name = "ipnet" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "itertools" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "winapi", + "either", ] [[package]] -name = "reqwest" -version = "0.11.7" +name = "itoa" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bea77bc708afa10e59905c3d4af7c8fd43c9214251673095ff8b14345fcbc5" -dependencies = [ - "base64 0.13.0", - "bytes 1.1.0", - "encoding_rs", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "lazy_static", - "log", - "mime", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-rustls", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", - "winreg", -] +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] -name = "ring" -version = "0.16.20" +name = "jobserver" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ - "cc", "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi", ] [[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - -[[package]] -name = "rustc_version" -version = "0.2.3" +name = "js-sys" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ - "semver", + "wasm-bindgen", ] [[package]] -name = "rustls" -version = "0.20.2" +name = "jsonrpc-core" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d37e5e2290f3e040b594b1a9e04377c2c671f1a1cfd9bfdef82106ac1c113f84" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ + "futures", + "futures-executor", + "futures-util", "log", - "ring", - "sct", - "webpki 0.22.0", + "serde", + "serde_derive", + "serde_json", ] [[package]] -name = "rustls-pemfile" -version = "0.2.1" +name = "keccak" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ - "base64 0.13.0", + "cpufeatures", ] [[package]] -name = "rustversion" -version = "1.0.5" +name = "lazy_static" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "ryu" -version = "1.0.6" +name = "libc" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9613b5a66ab9ba26415184cfc41156594925a9cf3a2057e57f31ff145f6568" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] -name = "same-file" -version = "1.0.6" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "winapi-util", + "bitflags 2.6.0", + "libc", + "redox_syscall", ] [[package]] -name = "scopeguard" -version = "1.1.0" +name = "libsecp256k1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] [[package]] -name = "scroll" -version = "0.10.2" +name = "libsecp256k1-core" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" dependencies = [ - "scroll_derive", + "crunchy", + "digest 0.9.0", + "subtle", ] [[package]] -name = "scroll_derive" -version = "0.10.5" +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "libsecp256k1-core", ] [[package]] -name = "sct" -version = "0.7.0" +name = "libsecp256k1-gen-genmult" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" dependencies = [ - "ring", - "untrusted", + "libsecp256k1-core", ] [[package]] -name = "semver" -version = "0.9.0" +name = "light-poseidon" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" dependencies = [ - "semver-parser", + "ark-bn254", + "ark-ff", + "num-bigint 0.4.6", + "thiserror", ] [[package]] -name = "semver-parser" -version = "0.7.0" +name = "linux-raw-sys" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] -name = "serde" -version = "1.0.130" +name = "lock_api" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ - "serde_derive", + "autocfg", + "scopeguard", ] [[package]] -name = "serde_bytes" -version = "0.11.5" +name = "log" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" dependencies = [ - "serde", + "hashbrown 0.12.3", ] [[package]] -name = "serde_derive" -version = "1.0.130" +name = "lz4" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +checksum = "a231296ca742e418c43660cb68e082486ff2538e8db432bc818580f3965025ed" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "lz4-sys", ] [[package]] -name = "serde_json" -version = "1.0.72" +name = "lz4-sys" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527" +checksum = "fcb44a01837a858d47e5a630d2ccf304c8efcc4b83b8f9f75b7a9ee4fcc6e57d" dependencies = [ - "itoa", - "ryu", - "serde", + "cc", + "libc", ] [[package]] -name = "serde_urlencoded" -version = "0.7.0" +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", + "libc", ] [[package]] -name = "sha2" -version = "0.9.8" +name = "memmap2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ - "block-buffer", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "libc", ] [[package]] -name = "sha3" +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ - "block-buffer", - "digest 0.9.0", - "keccak", - "opaque-debug", + "autocfg", ] [[package]] -name = "signal-hook-registry" -version = "1.4.0" +name = "merlin" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ - "libc", + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", ] [[package]] -name = "signature" -version = "1.4.0" +name = "mime" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "slab" -version = "0.4.5" +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "smallvec" -version = "1.7.0" +name = "miniz_oxide" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] [[package]] -name = "socket2" -version = "0.4.2" +name = "mio" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", - "winapi", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", ] [[package]] -name = "solana-banks-client" -version = "1.8.6" +name = "mockall" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb317452336458a82cdaaecd4b897e3b2bd23f07b1ec5221bbd59bd0b8ac42d5" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" dependencies = [ - "bincode", - "borsh", - "borsh-derive", - "futures", - "mio", - "solana-banks-interface", - "solana-program", - "solana-sdk", - "tarpc", - "tokio", - "tokio-serde", + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", ] [[package]] -name = "solana-banks-interface" -version = "1.8.6" +name = "mockall_derive" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c199bb2061a27768d065f14544dccbce37475101ca33223f5f37f91fa0e1898" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ - "mio", - "serde", - "solana-sdk", - "tarpc", + "cfg-if", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "solana-banks-server" -version = "1.8.6" +name = "modular-bitfield" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a516ee119c2ff8ce401680a8fbe26925118ab12acf6ae4c84af23caa92e1f784" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" dependencies = [ - "bincode", - "futures", - "log", - "mio", - "solana-banks-interface", - "solana-metrics", - "solana-runtime", - "solana-sdk", - "tarpc", - "tokio", - "tokio-serde", - "tokio-stream", + "modular-bitfield-impl", + "static_assertions", ] [[package]] -name = "solana-bpf-loader-program" -version = "1.8.6" +name = "modular-bitfield-impl" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686196a7f598c2dee5c31361198d15818dc8ee20062f9efee6ae324e1c52f31" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" dependencies = [ - "bincode", - "byteorder", - "libsecp256k1", - "log", - "num-derive", - "num-traits", - "openssl", - "rand_core 0.6.3", - "sha3", - "solana-measure", - "solana-runtime", - "solana-sdk", - "solana_rbpf", - "thiserror", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "solana-compute-budget-program" -version = "1.8.6" +name = "nix" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672d672e2fec80f0d85e3d735189fe70405cb18450ddbaeea9623b933c7434b1" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ - "solana-sdk", + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", ] [[package]] -name = "solana-config-program" -version = "1.8.6" +name = "nom" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6d8b73f4f89b88cc88790dfbc269c1178a553b07a07f72b619e2f7bde517aa2" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ - "bincode", - "chrono", - "log", - "rand_core 0.6.3", - "serde", - "serde_derive", - "solana-sdk", + "memchr", + "minimal-lexical", ] [[package]] -name = "solana-crate-features" -version = "1.8.6" +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb84a95527eadc9d32b4adc40be7b8b7b184d50b3350dc7ca6588bdbdf8ae4d3" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" dependencies = [ - "backtrace", - "bytes 0.4.12", - "cc", - "curve25519-dalek 2.1.3", - "ed25519-dalek", - "either", - "lazy_static", - "libc", - "rand_chacha 0.2.2", - "regex-syntax", - "reqwest", - "ring", - "serde", - "syn 0.15.44", - "syn 1.0.82", - "winapi", + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", ] [[package]] -name = "solana-ed25519-program" -version = "1.8.6" +name = "num-bigint" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a5fdbe8098549f10643e14fcf81fad5ab9abbc556824ca54d27cce67a55e766" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ - "solana-sdk", + "autocfg", + "num-integer", + "num-traits", ] [[package]] -name = "solana-frozen-abi" -version = "1.8.6" +name = "num-bigint" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03105023ee2e50eef15d4d43fa6d3acbbc5265f570ebb021d0af9c62e6f5189" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "bs58 0.3.1", - "bv", - "generic-array 0.14.4", - "log", - "memmap2", - "rustc_version", - "serde", - "serde_derive", - "sha2", - "solana-frozen-abi-macro", - "solana-logger", - "thiserror", + "num-integer", + "num-traits", ] [[package]] -name = "solana-frozen-abi-macro" -version = "1.8.6" +name = "num-complex" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f372aa625bbde216f9f769a348585a41ecd8dcea8b9fe7b3f89565028fb670" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "rustc_version", - "syn 1.0.82", + "autocfg", + "num-traits", ] [[package]] -name = "solana-logger" -version = "1.8.6" +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82ae204d12a5b885edb857684d9f6770be1ce4031d6cc90bbe272a1631ec671" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "env_logger", - "lazy_static", - "log", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "solana-measure" -version = "1.8.6" +name = "num-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26c6d03be819cb69114885f82988e5126d2a7192adc0cf89de5935b1c7d500e" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ - "log", - "solana-metrics", - "solana-sdk", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "solana-metrics" -version = "1.8.6" +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3024fb88ad4e2901fb7ebdc81523cede88edf4cd1e2326185d7e6885f294df13" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "env_logger", - "gethostname", - "lazy_static", - "log", - "reqwest", - "solana-sdk", + "num-traits", ] [[package]] -name = "solana-program" -version = "1.8.6" +name = "num-iter" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c119435aa5b6d5f1dd9af1057f5311ce9e5a1ed6a2d19e2830c3d6cec25c74" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ - "base64 0.13.0", - "bincode", - "blake3", - "borsh", - "borsh-derive", - "bs58 0.3.1", - "bv", - "bytemuck", - "curve25519-dalek 2.1.3", - "hex", - "itertools", - "lazy_static", - "libsecp256k1", - "log", - "num-derive", + "autocfg", + "num-integer", "num-traits", - "rand 0.7.3", - "rustc_version", - "rustversion", - "serde", - "serde_bytes", - "serde_derive", - "sha2", - "sha3", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-sdk-macro", - "thiserror", ] [[package]] -name = "solana-program-test" -version = "1.8.6" +name = "num-rational" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45f34b69a3953efeec3141fb52cdf4d1979b1c25e19b812b740082bccd9626e6" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" dependencies = [ - "async-trait", - "base64 0.12.3", - "bincode", - "chrono", - "chrono-humanize", - "log", - "mio", - "serde", - "serde_derive", - "solana-banks-client", - "solana-banks-server", - "solana-bpf-loader-program", + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive 0.7.3", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +dependencies = [ + "crypto-mac", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der", + "spki", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" + +[[package]] +name = "predicates-tree" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.21", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring 0.16.20", + "rustc-hash", + "rustls", + "rustls-native-certs", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring 0.16.20", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tokio-util 0.7.12", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "seqlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solana-account-decoder" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e54ec43b0262c19a3c87bf2dbd52c6bc6d4f9307246fe4b666fd87f06305e5" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "bs58", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-config-program", + "solana-sdk", + "spl-token 4.0.0", + "spl-token-2022 1.0.0", + "spl-token-group-interface", + "spl-token-metadata-interface", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-accounts-db" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da22e7afc30fa3d6367f4a5230c843ec2bfd27456b9f3b7ec144c112eaca303a" +dependencies = [ + "arrayref", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lz4", + "memmap2 0.5.10", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.3", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "seqlock", + "serde", + "serde_derive", + "smallvec", + "solana-bucket-map", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-nohash-hasher", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "static_assertions", + "strum", + "strum_macros", + "tar", + "tempfile", + "thiserror", +] + +[[package]] +name = "solana-address-lookup-table-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2601a7879e6db5f9af09801f2c99032a204849643832dae4a96495b86e789b0e" +dependencies = [ + "bincode", + "bytemuck", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-banks-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48b38e77fde55eaa036666461c61df36238416908c5a4737b59cd1b6165736dc" +dependencies = [ + "borsh 1.5.1", + "futures", + "solana-banks-interface", + "solana-program", + "solana-sdk", + "tarpc", + "thiserror", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44cb66654fa16a519efe8bb54eacfd0e9a3862f916d925cd24b63041b113c8a1" +dependencies = [ + "serde", + "solana-sdk", + "tarpc", +] + +[[package]] +name = "solana-banks-server" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964127e858fb510ff017981acab11ac376ecfee3b10c03c379ff084a52e14969" +dependencies = [ + "bincode", + "crossbeam-channel", + "futures", + "solana-accounts-db", + "solana-banks-interface", + "solana-client", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "tarpc", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da1c1bf12ec90f8a67706e6e5ffc91e2198b85a07bd12c56c44967d13bba7e7f" +dependencies = [ + "bincode", + "byteorder", + "libsecp256k1", + "log", + "scopeguard", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-bucket-map" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71ed4b533159ec832f534a5b4efb10946d392b15efc88ca2107bdbb39b5d0646" +dependencies = [ + "bv", + "bytemuck", + "log", + "memmap2 0.5.10", + "modular-bitfield", + "num_enum 0.7.3", + "rand 0.8.5", + "solana-measure", + "solana-sdk", + "tempfile", +] + +[[package]] +name = "solana-clap-utils" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117bf11e4d15b529dd9dfa2680abaf8bd3c1d8f7cb0586a5accdac5a2ecc7cc5" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-remote-wallet", + "solana-sdk", + "thiserror", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1501330d85c1a790f45f11330616bd6f0b9acd2193477268a65a38ce3b7cfdd0" +dependencies = [ + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap 2.5.0", + "indicatif", + "log", + "quinn", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-sdk", + "solana-streamer", + "solana-thin-client", + "solana-tpu-client", + "solana-udp-client", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-compute-budget-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a43d1ca229c5f761b9be38bd7dbc7c034cfb214dcbfef9691314ae4c778451c" +dependencies = [ + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-config-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00d0d031f3d97e3f59305c4aabf9da7359fad86dbaeb43b61a1ea13224e0b8a" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-connection-cache" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fa9ff6c33772441670e446b1d43e787aa315e95f2f9c14e3e9508b814bc8e5" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.5.0", + "log", + "rand 0.8.5", + "rayon", + "rcgen", + "solana-measure", + "solana-metrics", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-cost-model" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992d3d9e5cd8df6a393d66c2d52ba18afd3988f142a44f1ff26541fb3c0dd5b7" +dependencies = [ + "lazy_static", + "log", + "rustc_version", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bfcde2fc6946c99c7e3400fadd04d1628d675bfd66cb34d461c0f3224bd27d1" +dependencies = [ + "block-buffer 0.10.4", + "bs58", + "bv", + "either", + "generic-array", + "im", + "lazy_static", + "log", + "memmap2 0.5.10", + "rustc_version", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "solana-frozen-abi-macro", + "subtle", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5024d241425f4e99f112ee03bfa89e526c86c7ca9bd7e13448a7f2dffb7e060" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.77", +] + +[[package]] +name = "solana-loader-v4-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5607358636671522978533b77ff409b634b2ea53d94fd32dec4b4bcf7fe5c7e" +dependencies = [ + "log", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana_rbpf", +] + +[[package]] +name = "solana-logger" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10948c30d138d6fbfc2ae78a4882be5a9ebffa4bb1239c4efc386104ebc35b7f" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-measure" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "379355a731abf50bb5ef1e4afba02ac8c835c25bb18e32229bb481657d5c9eca" +dependencies = [ + "log", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a6f767cf39d69104bff52602f3141d6abfbdd55b4eb310f8fbbbf862b27e6f" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-net-utils" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c81ade42b553c7de08fb97cf3cfe44545f59a247e90042a67d224d62a8a189d7" +dependencies = [ + "bincode", + "clap 3.2.25", + "crossbeam-channel", + "log", + "nix", + "rand 0.8.5", + "serde", + "serde_derive", + "socket2", + "solana-logger", + "solana-sdk", + "solana-version", + "tokio", + "url", +] + +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + +[[package]] +name = "solana-perf" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecdf31e535743515d31392f210d132463300b5d3de7c3e26f6b344b6c941c42" +dependencies = [ + "ahash 0.8.11", + "bincode", + "bv", + "caps", + "curve25519-dalek", + "dlopen2", + "fnv", + "lazy_static", + "libc", + "log", + "nix", + "rand 0.8.5", + "rayon", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76056fecde0fe0ece8b457b719729c17173333471c72ad41969982975a10d6e0" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "blake3", + "borsh 0.10.3", + "borsh 0.9.3", + "borsh 1.5.1", + "bs58", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "itertools", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset 0.9.1", + "num-bigint 0.4.6", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk-macro", + "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-program-runtime" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e566a9e61ecdc250824314864654dd370abf561fa8328f6e08b3bc96ccc5b80d" +dependencies = [ + "base64 0.21.7", + "bincode", + "eager", + "enum-iterator", + "itertools", + "libc", + "log", + "num-derive 0.4.2", + "num-traits", + "percentage", + "rand 0.8.5", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-program-test" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b841ea7e55ee7b7e2cac034fd008c7d8cabd8b474958d4f64fcfaf76220846f5" +dependencies = [ + "assert_matches", + "async-trait", + "base64 0.21.7", + "bincode", + "chrono-humanize", + "crossbeam-channel", + "log", + "serde", + "solana-accounts-db", + "solana-banks-client", + "solana-banks-interface", + "solana-banks-server", + "solana-bpf-loader-program", + "solana-logger", + "solana-program-runtime", + "solana-runtime", + "solana-sdk", + "solana-vote-program", + "solana_rbpf", + "test-case", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d997840e6d033edc4fca8f06b920726dc18d3a5bbc1e538b2154cc3b71acd1" +dependencies = [ + "crossbeam-channel", + "futures-util", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e689a97cefa6a005cd305210234f3dc78aacc934c0f76d210a264fae36ee432" +dependencies = [ + "async-mutex", + "async-trait", + "futures", + "itertools", + "lazy_static", + "log", + "quinn", + "quinn-proto", + "rcgen", + "rustls", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-rpc-client-api", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbf70f0441603e553fc3db30c1eec9f10cecc27849e7dc74d5f692d5a41a56ca" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-remote-wallet" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9651b3f2c3df39a1a6fc87fe792bdb3ec3d84a8169c0a57c86335b48d6cb1491" +dependencies = [ + "console", + "dialoguer", + "log", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-sdk", + "thiserror", + "uriparse", +] + +[[package]] +name = "solana-rpc-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d753d116aacc43ef64a2bc8d25f8b20af47c366b29aa859186124e226d6e3819" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bincode", + "bs58", + "indicatif", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617df2c53f948c821cefca6824e376aac04ff0d844bb27f4d3ada9e211bcffe7" +dependencies = [ + "base64 0.21.7", + "bs58", + "jsonrpc-core", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d34cf36289cc35a0b18cd518a256312090368a37f40b448520e260923558a9" +dependencies = [ + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-runtime" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18dca69c7d3127d7b35014e703675a5665ed5680f6e1892acd24d612da059be9" +dependencies = [ + "aquamarine", + "arrayref", + "base64 0.21.7", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "dir-diff", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lru", + "lz4", + "memmap2 0.5.10", + "mockall", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.3", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "serde", + "serde_derive", + "serde_json", + "solana-accounts-db", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-bucket-map", + "solana-compute-budget-program", + "solana-config-program", + "solana-cost-model", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-measure", + "solana-metrics", + "solana-perf", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-version", + "solana-vote", + "solana-vote-program", + "solana-zk-token-proof-program", + "solana-zk-token-sdk", + "static_assertions", + "strum", + "strum_macros", + "symlink", + "tar", + "tempfile", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-sdk" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b3f2080eddef6552fde7f149c429cf05b9bb0605a068b0d28e19d793e24df4" +dependencies = [ + "assert_matches", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "borsh 1.5.1", + "bs58", + "bytemuck", + "byteorder", + "chrono", + "derivation-path", + "digest 0.10.7", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", + "libsecp256k1", + "log", + "memmap2 0.5.10", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.3", + "pbkdf2 0.11.0", + "qstring", + "qualifier_attr", + "rand 0.7.3", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "sha2 0.10.8", + "sha3 0.10.8", + "siphasher", + "solana-frozen-abi", + "solana-frozen-abi-macro", "solana-logger", + "solana-program", + "solana-sdk-macro", + "thiserror", + "uriparse", + "wasm-bindgen", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8613ca80150f7e277e773620ba65d2c5fcc3a08eb8026627d601421ab43aef" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.77", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-send-transaction-service" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff268c2c8a9490acfe40daeb650067e053684167c371d6d02a3bc3ad701d4c1f" +dependencies = [ + "crossbeam-channel", + "log", + "solana-client", + "solana-measure", + "solana-metrics", "solana-runtime", "solana-sdk", + "solana-tpu-client", +] + +[[package]] +name = "solana-stake-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22aaa33150c76b5c2d11b31b8e7fceb9c147ecf40ae9050af34c619a5bf4ff3f" +dependencies = [ + "bincode", + "log", + "rustc_version", + "solana-config-program", + "solana-program-runtime", + "solana-sdk", "solana-vote-program", +] + +[[package]] +name = "solana-streamer" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "979d470dd7c589679a2e036078921989a2563f333b73b31e2fdceb09a6d55a29" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.5.0", + "itertools", + "libc", + "log", + "nix", + "pem", + "percentage", + "pkcs8", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "rustls", + "smallvec", + "solana-metrics", + "solana-perf", + "solana-sdk", "thiserror", "tokio", + "x509-parser", ] [[package]] -name = "solana-rayon-threadlimit" -version = "1.8.6" +name = "solana-system-program" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf47cddc6593b226fcc6090509364183f833b0cd45ee6fbb8ab8988e15afcce7" +checksum = "873b17e54d30a7834e5b2224351fb277e0608e40261e9a408d3706737d2a61f8" dependencies = [ - "lazy_static", - "num_cpus", + "bincode", + "log", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", ] [[package]] -name = "solana-runtime" -version = "1.8.6" +name = "solana-test-framework" +version = "1.18.0" +source = "git+https://github.com/halbornteam/solana-test-framework?branch=solana1.18#946016679bf8d9c85b2e72fd441d4920b43ef716" +dependencies = [ + "async-trait", + "bincode", + "borsh 0.9.3", + "chrono-humanize", + "futures", + "log", + "serde", + "solana-banks-client", + "solana-client", + "solana-program", + "solana-program-runtime", + "solana-program-test", + "solana-sdk", + "spl-associated-token-account 1.1.3", + "spl-token 4.0.0", + "thiserror", +] + +[[package]] +name = "solana-thin-client" +version = "1.18.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e6b4f1ba56fb38af55a5d7517822b876cb5d0216930cea9e127479e883ab4f" +checksum = "851b9ae239d098c766aee3558330cc16edd0524c9cf3f9cf7c64f53b1024d507" dependencies = [ - "arrayref", "bincode", - "blake3", - "bv", - "byteorder", - "bzip2", - "crossbeam-channel 0.4.4", - "dashmap", - "dir-diff", - "flate2", - "fnv", - "itertools", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a7a7e5a522fe5333fcb47e02fb7da73ff614d917754167937b5523c383ce161" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.5.0", + "indicatif", + "log", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-transaction-status" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51be349fb9301d2a0fdd0b9ba5341e5f72bf4900ca4c0ede04748bc9038d15e8" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bs58", "lazy_static", - "libc", - "libloading", "log", - "memmap2", - "num-derive", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "spl-associated-token-account 2.3.0", + "spl-memo 4.0.0", + "spl-token 4.0.0", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-udp-client" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3274b4bfccd57ecffcf4037cd09fc61777633e0d0c5f8b76abcaa10ee83f3ae5" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-version" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf45873439f73420f60a5e0f87b529923c3489d24a228d5eb8f5ce6955bdc1b" +dependencies = [ + "log", + "rustc_version", + "semver", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", +] + +[[package]] +name = "solana-vote" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f54cb2827041a2acb79e3855e7310466d9bef71650e2304994076b209eaf4d9f" +dependencies = [ + "crossbeam-channel", + "itertools", + "log", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", + "solana-vote-program", + "thiserror", +] + +[[package]] +name = "solana-vote-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7c7525bda137bbb9bc0dc967a4ffca82786147eb2d1efbf76a8dc52978f0b8" +dependencies = [ + "bincode", + "log", + "num-derive 0.4.2", "num-traits", - "num_cpus", - "ouroboros", - "rand 0.7.3", - "rayon", - "regex", "rustc_version", "serde", "serde_derive", - "solana-compute-budget-program", - "solana-config-program", - "solana-ed25519-program", "solana-frozen-abi", "solana-frozen-abi-macro", - "solana-logger", - "solana-measure", "solana-metrics", - "solana-rayon-threadlimit", + "solana-program", + "solana-program-runtime", "solana-sdk", - "solana-secp256k1-program", - "solana-stake-program", - "solana-vote-program", - "symlink", - "tar", - "tempfile", "thiserror", - "zstd", ] [[package]] -name = "solana-sdk" -version = "1.8.6" +name = "solana-zk-token-proof-program" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8bf8a6d43db385a2beb324110282ae8140a4a040d39f3a0870c43df24c5055" +dependencies = [ + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "1.18.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a57b2f269f24088b6b8e426de05e5c1faa6b5d6f26175c06eb80df96ec685e" +dependencies = [ + "aes-gcm-siv", + "base64 0.21.7", + "bincode", + "bytemuck", + "byteorder", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "lazy_static", + "merlin", + "num-derive 0.4.2", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", + "thiserror", + "zeroize", +] + +[[package]] +name = "solana_rbpf" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da5d083187e3b3f453e140f292c09186881da8a02a7b5e27f645ee26de3d9cc5" +dependencies = [ + "byteorder", + "combine", + "goblin", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "scroll", + "thiserror", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "spl-associated-token-account" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978dba3bcbe88d0c2c58366c254d9ea41c5f73357e72fc0bdee4d6b5fc99c8f4" +dependencies = [ + "assert_matches", + "borsh 0.9.3", + "num-derive 0.3.3", + "num-traits", + "solana-program", + "spl-token 3.5.0", + "spl-token-2022 0.6.1", + "thiserror", +] + +[[package]] +name = "spl-associated-token-account" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" +dependencies = [ + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token 4.0.0", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "spl-discriminator" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.77", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.77", + "thiserror", +] + +[[package]] +name = "spl-memo" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b48cc3de1292cab47af5d0235ebbe0fd8fb99c668728b1d5d5c7c74e711fc50a" +checksum = "bd0dc6f70db6bacea7ff25870b016a65ba1d1b6013536f08e4fd79a8f9005325" dependencies = [ - "assert_matches", - "base64 0.13.0", - "bincode", - "borsh", - "borsh-derive", - "bs58 0.4.0", - "bv", + "solana-program", +] + +[[package]] +name = "spl-memo" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +dependencies = [ + "solana-program", +] + +[[package]] +name = "spl-pod" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +dependencies = [ + "borsh 0.10.3", "bytemuck", - "byteorder", - "chrono", - "derivation-path", - "digest 0.9.0", - "ed25519-dalek", - "ed25519-dalek-bip32", - "generic-array 0.14.4", - "hex", - "hmac 0.10.1", - "itertools", - "lazy_static", - "libsecp256k1", - "log", - "memmap2", - "num-derive", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error", +] + +[[package]] +name = "spl-program-error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +dependencies = [ + "num-derive 0.4.2", "num-traits", - "pbkdf2", - "qstring", - "rand 0.7.3", - "rand_chacha 0.2.2", - "rand_core 0.6.3", - "rustc_version", - "rustversion", - "serde", - "serde_bytes", - "serde_derive", - "serde_json", - "sha2", - "sha3", - "solana-crate-features", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", "solana-program", - "solana-sdk-macro", + "spl-program-error-derive", "thiserror", - "uriparse", ] [[package]] -name = "solana-sdk-macro" -version = "1.8.6" +name = "spl-program-error-derive" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868cdefdbb43424b4915b8aaa767a112d62537d8d2c6d1d4d01a647e4842ed7b" +checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" dependencies = [ - "bs58 0.3.1", - "proc-macro2 1.0.32", - "quote 1.0.10", - "rustversion", - "syn 1.0.82", + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.77", ] [[package]] -name = "solana-secp256k1-program" -version = "1.8.6" +name = "spl-tlv-account-resolution" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8faea8604b39a2dd7cc0077c1bd931fe61bdded477c9f3f7694c232dc676397f" +checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" dependencies = [ - "solana-sdk", + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", ] [[package]] -name = "solana-stake-program" -version = "1.8.6" +name = "spl-token" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b94e612f378d70d76a44f6f9ea5b6e074c826b8751465ab824e93f8e9695208" +checksum = "8e85e168a785e82564160dcb87b2a8e04cee9bfd1f4d488c729d53d6a4bd300d" dependencies = [ - "bincode", - "log", - "num-derive", + "arrayref", + "bytemuck", + "num-derive 0.3.3", "num-traits", - "rustc_version", - "serde", - "serde_derive", - "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-metrics", - "solana-sdk", - "solana-vote-program", + "num_enum 0.5.11", + "solana-program", "thiserror", ] [[package]] -name = "solana-vote-program" -version = "1.8.6" +name = "spl-token" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4635b4c088a34aba63abe529167a10db73f221f0a25e641f59cfba58a0d08d" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" dependencies = [ - "bincode", - "log", - "num-derive", + "arrayref", + "bytemuck", + "num-derive 0.3.3", "num-traits", - "rustc_version", - "serde", - "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", - "solana-metrics", - "solana-sdk", + "num_enum 0.6.1", + "solana-program", "thiserror", ] [[package]] -name = "solana_rbpf" -version = "0.2.11" +name = "spl-token-2022" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c1c5bdfa63c68d848d95024c7f4335bae4b1917f7df2e48e2d945f4664a8b45" +checksum = "0043b590232c400bad5ee9eb983ced003d15163c4c5d56b090ac6d9a57457b47" dependencies = [ - "byteorder", - "combine", - "goblin", - "hash32", - "libc", - "log", - "rand 0.7.3", - "rustc-demangle", - "scroll", + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.5.11", + "solana-program", + "solana-zk-token-sdk", + "spl-memo 3.0.1", + "spl-token 3.5.0", "thiserror", - "time", ] [[package]] -name = "spin" -version = "0.5.2" +name = "spl-token-2022" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.3", + "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo 4.0.0", + "spl-pod", + "spl-token 4.0.0", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", + "thiserror", +] [[package]] -name = "spl-associated-token-account" -version = "1.0.3" +name = "spl-token-group-interface" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "393e2240d521c3dd770806bff25c2c00d761ac962be106e14e22dd912007f428" +checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" dependencies = [ + "bytemuck", "solana-program", - "spl-token", + "spl-discriminator", + "spl-pod", + "spl-program-error", ] [[package]] -name = "spl-token" -version = "3.2.0" +name = "spl-token-metadata-interface" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" +dependencies = [ + "borsh 0.10.3", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", +] + +[[package]] +name = "spl-transfer-hook-interface" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bfdd5bd7c869cb565c7d7635c4fafe189b988a0bdef81063cd9585c6b8dc01" +checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" dependencies = [ "arrayref", - "num-derive", - "num-traits", - "num_enum", + "bytemuck", "solana-program", - "thiserror", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", ] [[package]] -name = "stable_deref_trait" -version = "1.2.0" +name = "spl-type-length-value" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator", + "spl-pod", + "spl-program-error", +] [[package]] name = "static_assertions" @@ -2649,6 +4980,46 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + [[package]] name = "subtle" version = "2.4.1" @@ -2663,43 +5034,82 @@ checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" [[package]] name = "syn" -version = "0.15.44" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] name = "syn" -version = "1.0.82" +version = "2.0.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "unicode-xid 0.2.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.77", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "synstructure" version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "unicode-xid 0.2.2", + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] name = "tar" -version = "0.4.37" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f5515d3add52e0bbdcad7b83c388bb36ba7b754dda3b5f5bc2d38640cdba5c" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -2708,104 +5118,209 @@ dependencies = [ [[package]] name = "tarpc" -version = "0.24.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e325774dd5b35d979e9f4db2b0f0d7d85dc2ff2b676a3150af56c09eafc14b07" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" dependencies = [ "anyhow", "fnv", "futures", "humantime", - "log", + "opentelemetry", "pin-project", - "rand 0.7.3", + "rand 0.8.5", "serde", "static_assertions", "tarpc-plugins", + "thiserror", "tokio", "tokio-serde", - "tokio-util", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", ] [[package]] name = "tarpc-plugins" -version = "0.9.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3240378a22b1195734e085ba71d1d4188d50f034aea82635acc430b7005afb5" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] name = "tempfile" -version = "3.2.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ - "cfg-if 1.0.0", - "libc", - "rand 0.8.4", - "redox_syscall", - "remove_dir_all", - "winapi", + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.1.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "test-case-core", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "thread_local" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "cfg-if", + "once_cell", ] [[package]] name = "time" -version = "0.1.44" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-bip39" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +dependencies = [ + "anyhow", + "hmac 0.8.1", + "once_cell", + "pbkdf2 0.4.0", + "rand 0.7.3", + "rustc-hash", + "sha2 0.9.9", + "thiserror", + "unicode-normalization", + "wasm-bindgen", + "zeroize", ] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-vesting" @@ -2814,13 +5329,14 @@ dependencies = [ "arbitrary 0.4.7", "arrayref", "honggfuzz", - "num-derive", + "num-derive 0.3.3", "num-traits", "solana-program", "solana-program-test", "solana-sdk", - "spl-associated-token-account", - "spl-token", + "solana-test-framework", + "spl-associated-token-account 1.1.3", + "spl-token 3.5.0", "thiserror", "tokio", ] @@ -2834,52 +5350,49 @@ dependencies = [ "solana-program", "solana-program-test", "solana-sdk", - "spl-associated-token-account", - "spl-token", + "spl-associated-token-account 1.1.3", + "spl-token 3.5.0", "token-vesting", "tokio", ] [[package]] name = "tokio" -version = "1.14.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ - "autocfg", - "bytes 1.1.0", + "backtrace", + "bytes", "libc", - "memchr", "mio", - "num_cpus", - "once_cell", "parking_lot", "pin-project-lite", "signal-hook-registry", + "socket2", "tokio-macros", - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "1.6.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] name = "tokio-rustls" -version = "0.23.1" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4baa378e417d780beff82bf54ceb0d195193ea6a00c14e22359e7f39456b5689" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki 0.22.0", ] [[package]] @@ -2889,7 +5402,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" dependencies = [ "bincode", - "bytes 1.1.0", + "bytes", "educe", "futures-core", "futures-sink", @@ -2900,102 +5413,233 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.8" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", "tokio", ] +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.25.4", +] + [[package]] name = "tokio-util" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-core", "futures-sink", "log", "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", "tokio", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.5.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf" +dependencies = [ + "indexmap 2.5.0", + "toml_datetime", + "winnow 0.6.18", +] + [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.29" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if 1.0.0", + "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "tracing-core" -version = "0.1.21" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ - "lazy_static", + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", ] [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki-roots 0.24.0", +] [[package]] name = "typenum" -version = "1.14.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] -name = "unicode-xid" -version = "0.1.0" +name = "unicode-width" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" + +[[package]] +name = "universal-hash" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array", + "subtle", +] [[package]] name = "unreachable" @@ -3012,11 +5656,17 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "uriparse" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e515b1ada404168e145ac55afba3c42f04cf972201a8552d42e2abb17c1b7221" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" dependencies = [ "fnv", "lazy_static", @@ -3024,27 +5674,38 @@ dependencies = [ [[package]] name = "url" -version = "2.2.2" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", ] [[package]] -name = "vcpkg" -version = "0.2.15" +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vec_map" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -3054,22 +5715,20 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -3081,42 +5740,43 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.78" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.78" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", - "lazy_static", "log", - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.28" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -3124,71 +5784,57 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.78" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ - "quote 1.0.10", + "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.78" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", + "proc-macro2", + "quote", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.78" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.55" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki" -version = "0.22.0" +name = "webpki-roots" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "ring", - "untrusted", + "rustls-webpki", ] [[package]] name = "webpki-roots" -version = "0.21.1" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" -dependencies = [ - "webpki 0.21.4", -] +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "winapi" @@ -3208,11 +5854,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -3221,59 +5867,284 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" -version = "0.7.0" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", ] [[package]] name = "xattr" -version = "0.2.2" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] name = "zeroize" -version = "1.4.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.2.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f1a51723ec88c66d5d1fe80c841f17f63587d6691901d66be9bec6c3b51f73" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.32", - "quote 1.0.10", - "syn 1.0.82", - "synstructure", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] name = "zstd" -version = "0.5.4+zstd.1.4.7" +version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "2.0.6+zstd.1.4.7" +version = "5.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" dependencies = [ "libc", "zstd-sys", @@ -3281,12 +6152,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.4.18+zstd.1.4.7" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", - "glob", - "itertools", - "libc", + "pkg-config", ] diff --git a/program/Cargo.toml b/program/Cargo.toml index 3ca5f4e..582b91d 100644 --- a/program/Cargo.toml +++ b/program/Cargo.toml @@ -28,8 +28,9 @@ arbitrary = { version = "0.4", features = ["derive"], optional = true } honggfuzz = { version = "0.5", optional = true } [dev-dependencies] -solana-sdk = "1.5.6" -solana-program-test = "1.5.6" +solana-sdk = "1.18.23" +solana-program-test = "1.18.23" +solana-test-framework = { git = "https://github.com/halbornteam/solana-test-framework", branch = "solana1.18" } tokio = { version = "1.0", features = ["macros"]} [lib] diff --git a/program/fuzz/src/vesting_fuzz.rs b/program/fuzz/src/vesting_fuzz.rs index 28dcde8..19a7c96 100644 --- a/program/fuzz/src/vesting_fuzz.rs +++ b/program/fuzz/src/vesting_fuzz.rs @@ -1,25 +1,33 @@ -use token_vesting::instruction; use spl_token::instruction::{initialize_mint, mint_to}; +use token_vesting::instruction; +use spl_associated_token_account::{create_associated_token_account, get_associated_token_address}; use std::{convert::TryInto, str::FromStr}; -use spl_associated_token_account::{get_associated_token_address, create_associated_token_account}; -use solana_program::{hash::Hash, instruction::Instruction, pubkey::Pubkey, rent::Rent, system_program, sysvar}; -use honggfuzz::fuzz; -use solana_program_test::{BanksClient, ProgramTest, processor}; -use solana_sdk::{signature::Keypair, signature::Signer, system_instruction, transaction::Transaction, transport::TransportError}; use arbitrary::Arbitrary; -use std::collections::HashMap; -use token_vesting::{instruction::{Schedule, VestingInstruction}, processor::Processor}; -use token_vesting::instruction::{init, unlock, change_destination, create}; +use honggfuzz::fuzz; +use solana_program::{ + hash::Hash, instruction::Instruction, pubkey::Pubkey, rent::Rent, system_program, sysvar, +}; +use solana_program_test::{processor, BanksClient, ProgramTest}; use solana_sdk::{account::Account, instruction::InstructionError, transaction::TransactionError}; +use solana_sdk::{ + signature::Keypair, signature::Signer, system_instruction, transaction::Transaction, + transport::TransportError, +}; +use std::collections::HashMap; +use token_vesting::instruction::{create, init, unlock}; +use token_vesting::{ + instruction::{Schedule, VestingInstruction}, + processor::Processor, +}; struct TokenVestingEnv { system_program_id: Pubkey, token_program_id: Pubkey, sysvarclock_program_id: Pubkey, rent_program_id: Pubkey, vesting_program_id: Pubkey, - mint_authority: Keypair + mint_authority: Keypair, } #[derive(Debug, Arbitrary, Clone)] @@ -36,18 +44,17 @@ struct FuzzInstruction { schedules: Vec, payer_key: AccountId, vesting_program_account: AccountId, - seeds:[u8; 32], + seeds: [u8; 32], number_of_schedules: u8, instruction: instruction::VestingInstruction, // This flag decides wether the instruction will be executed with inputs that should // not provoke any errors. (The accounts and contracts will be set up before if needed) - correct_inputs: bool + correct_inputs: bool, } /// Use u8 as an account id to simplify the address space and re-use accounts /// more often. type AccountId = u8; - fn main() { let rt = tokio::runtime::Runtime::new().unwrap(); @@ -57,11 +64,11 @@ fn main() { sysvarclock_program_id: sysvar::clock::id(), rent_program_id: sysvar::rent::id(), token_program_id: spl_token::id(), - vesting_program_id: Pubkey::from_str("VestingbGKPFXCWuBvfkegQfZyiNwAJb9Ss623VQ5DA").unwrap(), - mint_authority: Keypair::new() + vesting_program_id: Pubkey::from_str("VestingbGKPFXCWuBvfkegQfZyiNwAJb9Ss623VQ5DA") + .unwrap(), + mint_authority: Keypair::new(), }; - loop { fuzz!(|fuzz_instructions: Vec| { // Initialize and start the test network @@ -71,24 +78,32 @@ fn main() { processor!(Processor::process_instruction), ); - program_test.add_account(token_vesting_testenv.mint_authority.pubkey(), Account { - lamports: u32::MAX as u64, - ..Account::default() - }); + program_test.add_account( + token_vesting_testenv.mint_authority.pubkey(), + Account { + lamports: u32::MAX as u64, + ..Account::default() + }, + ); let mut test_state = rt.block_on(program_test.start_with_context()); - rt.block_on(run_fuzz_instructions(&token_vesting_testenv, &mut test_state.banks_client, fuzz_instructions, &test_state.payer, test_state.last_blockhash)); + rt.block_on(run_fuzz_instructions( + &token_vesting_testenv, + &mut test_state.banks_client, + fuzz_instructions, + &test_state.payer, + test_state.last_blockhash, + )); }); } } - async fn run_fuzz_instructions( token_vesting_testenv: &TokenVestingEnv, banks_client: &mut BanksClient, fuzz_instructions: Vec, correct_payer: &Keypair, - recent_blockhash: Hash + recent_blockhash: Hash, ) { // keep track of all accounts let mut vesting_account_keys: HashMap = HashMap::new(); @@ -104,7 +119,6 @@ async fn run_fuzz_instructions( let mut global_signer_keys = vec![]; for fuzz_instruction in fuzz_instructions { - // Add accounts vesting_account_keys .entry(fuzz_instruction.vesting_account_key) @@ -136,71 +150,73 @@ async fn run_fuzz_instructions( &fuzz_instruction, &correct_payer, mint_keys.get(&fuzz_instruction.mint_key).unwrap(), - vesting_account_keys.get(&fuzz_instruction.vesting_account_key).unwrap(), - vesting_token_account_keys.get(&fuzz_instruction.vesting_token_account_key).unwrap(), - source_token_account_owner_keys.get( - &fuzz_instruction.source_token_account_owner_key - ).unwrap(), - destination_token_owner_keys.get( - &fuzz_instruction.destination_token_owner_key - ).unwrap(), - destination_token_keys.get( - &fuzz_instruction.destination_token_key - ).unwrap(), - new_destination_token_keys.get( - &fuzz_instruction.new_destination_token_key - ).unwrap(), - payer_keys.get(&fuzz_instruction.payer_key).unwrap() + vesting_account_keys + .get(&fuzz_instruction.vesting_account_key) + .unwrap(), + vesting_token_account_keys + .get(&fuzz_instruction.vesting_token_account_key) + .unwrap(), + source_token_account_owner_keys + .get(&fuzz_instruction.source_token_account_owner_key) + .unwrap(), + destination_token_owner_keys + .get(&fuzz_instruction.destination_token_owner_key) + .unwrap(), + destination_token_keys + .get(&fuzz_instruction.destination_token_key) + .unwrap(), + new_destination_token_keys + .get(&fuzz_instruction.new_destination_token_key) + .unwrap(), + payer_keys.get(&fuzz_instruction.payer_key).unwrap(), ); global_output_instructions.append(&mut output_instructions); global_signer_keys.append(&mut signer_keys); } // Process transaction on test network - let mut transaction = Transaction::new_with_payer( - &global_output_instructions, - Some(&correct_payer.pubkey()), - ); - let signers = [correct_payer].iter().map(|&v| v).chain(global_signer_keys.iter()).collect::>(); - transaction.partial_sign( - &signers, - recent_blockhash - ); - - banks_client.process_transaction(transaction).await.unwrap_or_else(|e| { - if let TransportError::TransactionError(te) = e { - match te { - TransactionError::InstructionError(_, ie) => { - match ie { + let mut transaction = + Transaction::new_with_payer(&global_output_instructions, Some(&correct_payer.pubkey())); + let signers = [correct_payer] + .iter() + .map(|&v| v) + .chain(global_signer_keys.iter()) + .collect::>(); + transaction.partial_sign(&signers, recent_blockhash); + + banks_client + .process_transaction(transaction) + .await + .unwrap_or_else(|e| { + if let TransportError::TransactionError(te) = e { + match te { + TransactionError::InstructionError(_, ie) => match ie { InstructionError::InvalidArgument | InstructionError::InvalidInstructionData | InstructionError::InvalidAccountData | InstructionError::InsufficientFunds | InstructionError::AccountAlreadyInitialized | InstructionError::InvalidSeeds - | InstructionError::Custom(0) => {}, + | InstructionError::Custom(0) => {} _ => { print!("{:?}", ie); Err(ie).unwrap() } + }, + TransactionError::SignatureFailure + | TransactionError::InvalidAccountForFee + | TransactionError::InsufficientFundsForFee => {} + _ => { + print!("{:?}", te); + panic!() } - }, - TransactionError::SignatureFailure - | TransactionError::InvalidAccountForFee - | TransactionError::InsufficientFundsForFee => {}, - _ => { - print!("{:?}", te); - panic!() } + } else { + print!("{:?}", e); + panic!() } - - } else { - print!("{:?}", e); - panic!() - } - }); + }); } - fn run_fuzz_instruction( token_vesting_testenv: &TokenVestingEnv, fuzz_instruction: &FuzzInstruction, @@ -212,43 +228,43 @@ fn run_fuzz_instruction( destination_token_owner_key: &Keypair, destination_token_key: &Pubkey, new_destination_token_key: &Pubkey, - payer_key: &Keypair + payer_key: &Keypair, ) -> (Vec, Vec) { - // Execute the fuzzing in a more restrained way in order to go deeper into the program branches. // For each possible fuzz instruction we first instantiate the needed accounts for the instruction if fuzz_instruction.correct_inputs { - let mut correct_seeds = fuzz_instruction.seeds; let (correct_vesting_account_key, bump) = Pubkey::find_program_address( &[&correct_seeds[..31]], - &token_vesting_testenv.vesting_program_id + &token_vesting_testenv.vesting_program_id, ); correct_seeds[31] = bump; - let correct_vesting_token_key = get_associated_token_address( - &correct_vesting_account_key, - &mint_key.pubkey() - ); + let correct_vesting_token_key = + get_associated_token_address(&correct_vesting_account_key, &mint_key.pubkey()); let correct_source_token_account_key = get_associated_token_address( &source_token_account_owner_key.pubkey(), - &mint_key.pubkey() + &mint_key.pubkey(), ); match fuzz_instruction { FuzzInstruction { - instruction: VestingInstruction::Init{ .. }, + instruction: VestingInstruction::Init { .. }, .. } => { - return (vec![init( - &token_vesting_testenv.system_program_id, - &token_vesting_testenv.rent_program_id, - &token_vesting_testenv.vesting_program_id, - &correct_payer.pubkey(), - &correct_vesting_account_key, - correct_seeds, - fuzz_instruction.number_of_schedules as u32 - ).unwrap()], vec![]); - }, + return ( + vec![init( + &token_vesting_testenv.system_program_id, + &token_vesting_testenv.rent_program_id, + &token_vesting_testenv.vesting_program_id, + &correct_payer.pubkey(), + &correct_vesting_account_key, + correct_seeds, + fuzz_instruction.number_of_schedules as u32, + ) + .unwrap()], + vec![], + ); + } FuzzInstruction { instruction: VestingInstruction::Create { .. }, @@ -261,8 +277,9 @@ fn run_fuzz_instruction( &correct_payer.pubkey(), &correct_vesting_account_key, correct_seeds, - fuzz_instruction.number_of_schedules as u32 - ).unwrap()]; + fuzz_instruction.number_of_schedules as u32, + ) + .unwrap()]; let mut create_instructions = create_fuzzinstruction( token_vesting_testenv, fuzz_instruction, @@ -275,16 +292,21 @@ fn run_fuzz_instruction( &correct_vesting_token_key, correct_seeds, mint_key, - fuzz_instruction.source_token_amount + fuzz_instruction.source_token_amount, ); instructions_acc.append(&mut create_instructions); - return (instructions_acc, vec![clone_keypair(mint_key), - clone_keypair(&token_vesting_testenv.mint_authority), - clone_keypair(source_token_account_owner_key)]); - }, + return ( + instructions_acc, + vec![ + clone_keypair(mint_key), + clone_keypair(&token_vesting_testenv.mint_authority), + clone_keypair(source_token_account_owner_key), + ], + ); + } FuzzInstruction { - instruction: VestingInstruction::Unlock{ .. }, + instruction: VestingInstruction::Unlock { .. }, .. } => { let mut instructions_acc = vec![init( @@ -294,8 +316,9 @@ fn run_fuzz_instruction( &correct_payer.pubkey(), &correct_vesting_account_key, correct_seeds, - fuzz_instruction.number_of_schedules as u32 - ).unwrap()]; + fuzz_instruction.number_of_schedules as u32, + ) + .unwrap()]; let mut create_instructions = create_fuzzinstruction( token_vesting_testenv, fuzz_instruction, @@ -308,7 +331,7 @@ fn run_fuzz_instruction( &correct_vesting_token_key, correct_seeds, mint_key, - fuzz_instruction.source_token_amount + fuzz_instruction.source_token_amount, ); instructions_acc.append(&mut create_instructions); @@ -319,88 +342,42 @@ fn run_fuzz_instruction( &correct_vesting_account_key, &correct_vesting_token_key, destination_token_key, - correct_seeds - ).unwrap(); - instructions_acc.push(unlock_instruction); - return (instructions_acc, vec![ - clone_keypair(mint_key), - clone_keypair(&token_vesting_testenv.mint_authority), - clone_keypair(source_token_account_owner_key), - ]); - }, - - FuzzInstruction { - instruction: VestingInstruction::ChangeDestination{ .. }, - .. - } => { - let mut instructions_acc = vec![init( - &token_vesting_testenv.system_program_id, - &token_vesting_testenv.rent_program_id, - &token_vesting_testenv.vesting_program_id, - &correct_payer.pubkey(), - &correct_vesting_account_key, - correct_seeds, - fuzz_instruction.number_of_schedules as u32 - ).unwrap()]; - let mut create_instructions = create_fuzzinstruction( - token_vesting_testenv, - fuzz_instruction, - correct_payer, - &correct_source_token_account_key, - source_token_account_owner_key, - destination_token_key, - &destination_token_owner_key.pubkey(), - &correct_vesting_account_key, - &correct_vesting_token_key, correct_seeds, - mint_key, - fuzz_instruction.source_token_amount - ); - instructions_acc.append(&mut create_instructions); - - let new_destination_instruction = create_associated_token_account( - &correct_payer.pubkey(), - &Pubkey::new_unique(), // Arbitrary - &mint_key.pubkey() + ) + .unwrap(); + instructions_acc.push(unlock_instruction); + return ( + instructions_acc, + vec![ + clone_keypair(mint_key), + clone_keypair(&token_vesting_testenv.mint_authority), + clone_keypair(source_token_account_owner_key), + ], ); - instructions_acc.push(new_destination_instruction); - - let change_instruction = change_destination( - &token_vesting_testenv.vesting_program_id, - &correct_vesting_account_key, - &destination_token_owner_key.pubkey(), - &destination_token_key, - new_destination_token_key, - correct_seeds - ).unwrap(); - instructions_acc.push(change_instruction); - return (instructions_acc, vec![ - clone_keypair(mint_key), - clone_keypair(&token_vesting_testenv.mint_authority), - clone_keypair(source_token_account_owner_key), - clone_keypair(destination_token_owner_key), - ]); } }; // Execute a more random input fuzzing (these should give an error almost surely) } else { match fuzz_instruction { - FuzzInstruction { - instruction: VestingInstruction::Init{ .. }, + instruction: VestingInstruction::Init { .. }, .. } => { - return (vec![init( - &token_vesting_testenv.system_program_id, - &token_vesting_testenv.rent_program_id, - &token_vesting_testenv.vesting_program_id, - &payer_key.pubkey(), - vesting_account_key, - fuzz_instruction.seeds, - fuzz_instruction.number_of_schedules as u32 - ).unwrap()], vec![]); - }, + return ( + vec![init( + &token_vesting_testenv.system_program_id, + &token_vesting_testenv.rent_program_id, + &token_vesting_testenv.vesting_program_id, + &payer_key.pubkey(), + vesting_account_key, + fuzz_instruction.seeds, + fuzz_instruction.number_of_schedules as u32, + ) + .unwrap()], + vec![], + ); + } FuzzInstruction { instruction: VestingInstruction::Create { .. }, @@ -416,16 +393,17 @@ fn run_fuzz_instruction( destination_token_key, &mint_key.pubkey(), fuzz_instruction.schedules.clone(), - fuzz_instruction.seeds - ).unwrap(); + fuzz_instruction.seeds, + ) + .unwrap(); return ( vec![create_instructions], - vec![clone_keypair(source_token_account_owner_key)] + vec![clone_keypair(source_token_account_owner_key)], ); - }, + } FuzzInstruction { - instruction: VestingInstruction::Unlock{ .. }, + instruction: VestingInstruction::Unlock { .. }, .. } => { let unlock_instruction = unlock( @@ -436,36 +414,14 @@ fn run_fuzz_instruction( vesting_token_account_key, destination_token_key, fuzz_instruction.seeds, - ).unwrap(); - return ( - vec![unlock_instruction], - vec![] - ); - }, - - FuzzInstruction { - instruction: VestingInstruction::ChangeDestination{ .. }, - .. - } => { - let change_instruction = change_destination( - &token_vesting_testenv.vesting_program_id, - vesting_account_key, - &destination_token_owner_key.pubkey(), - &destination_token_key, - new_destination_token_key, - fuzz_instruction.seeds, - ).unwrap(); - return ( - vec![change_instruction], - vec![clone_keypair(destination_token_owner_key)] - ); + ) + .unwrap(); + return (vec![unlock_instruction], vec![]); } }; } - } - // A correct vesting create fuzz instruction fn create_fuzzinstruction( token_vesting_testenv: &TokenVestingEnv, @@ -479,35 +435,31 @@ fn create_fuzzinstruction( correct_vesting_token_key: &Pubkey, correct_seeds: [u8; 32], mint_key: &Keypair, - source_amount: u64 + source_amount: u64, ) -> Vec { - // Initialize the token mint account - let mut instructions_acc = mint_init_instruction( - &payer, - &mint_key, - &token_vesting_testenv.mint_authority - ); + let mut instructions_acc = + mint_init_instruction(&payer, &mint_key, &token_vesting_testenv.mint_authority); // Create the associated token accounts let source_instruction = create_associated_token_account( &payer.pubkey(), &source_token_account_owner_key.pubkey(), - &mint_key.pubkey() + &mint_key.pubkey(), ); instructions_acc.push(source_instruction); let vesting_instruction = create_associated_token_account( - &payer.pubkey(), - &correct_vesting_account_key, - &mint_key.pubkey() + &payer.pubkey(), + &correct_vesting_account_key, + &mint_key.pubkey(), ); instructions_acc.push(vesting_instruction); let destination_instruction = create_associated_token_account( - &payer.pubkey(), - &destination_token_owner_key, - &mint_key.pubkey() + &payer.pubkey(), + &destination_token_owner_key, + &mint_key.pubkey(), ); instructions_acc.push(destination_instruction); @@ -518,12 +470,17 @@ fn create_fuzzinstruction( &correct_source_token_account_key, &token_vesting_testenv.mint_authority.pubkey(), &[], - source_amount - ).unwrap(); + source_amount, + ) + .unwrap(); instructions_acc.push(setup_instruction); let used_number_of_schedules = fuzz_instruction.number_of_schedules.min( - fuzz_instruction.schedules.len().try_into().unwrap_or(u8::MAX) + fuzz_instruction + .schedules + .len() + .try_into() + .unwrap_or(u8::MAX), ); // Initialize the vesting program account let create_instruction = create( @@ -537,34 +494,35 @@ fn create_fuzzinstruction( &mint_key.pubkey(), fuzz_instruction.schedules.clone()[..used_number_of_schedules.into()].into(), correct_seeds, - ).unwrap(); + ) + .unwrap(); instructions_acc.push(create_instruction); return instructions_acc; } - // Helper functions fn mint_init_instruction( payer: &Keypair, - mint:&Keypair, - mint_authority: &Keypair) -> Vec { + mint: &Keypair, + mint_authority: &Keypair, +) -> Vec { let instructions = vec![ system_instruction::create_account( &payer.pubkey(), &mint.pubkey(), Rent::default().minimum_balance(82), 82, - &spl_token::id() - + &spl_token::id(), ), initialize_mint( &spl_token::id(), &mint.pubkey(), &mint_authority.pubkey(), None, - 0 - ).unwrap(), + 0, + ) + .unwrap(), ]; return instructions; } diff --git a/program/src/error.rs b/program/src/error.rs index a993155..9be569e 100644 --- a/program/src/error.rs +++ b/program/src/error.rs @@ -7,7 +7,7 @@ use thiserror::Error; pub enum VestingError { // Invalid instruction #[error("Invalid Instruction")] - InvalidInstruction + InvalidInstruction, } impl From for ProgramError { diff --git a/program/src/instruction.rs b/program/src/instruction.rs index 0836f10..747afc9 100644 --- a/program/src/instruction.rs +++ b/program/src/instruction.rs @@ -4,7 +4,7 @@ use solana_program::{ instruction::{AccountMeta, Instruction}, msg, program_error::ProgramError, - pubkey::Pubkey + pubkey::Pubkey, }; use std::convert::TryInto; @@ -20,27 +20,21 @@ impl Arbitrary for VestingInstruction { let choice = u.choose(&[0, 1, 2, 3])?; match choice { 0 => { - let number_of_schedules = u.arbitrary()?; - return Ok(Self::Init { - seeds, - number_of_schedules, - }); + return Ok(Self::Init { seeds }); } 1 => { - let schedules: [Schedule; 10] = u.arbitrary()?; + let schedule: [Schedule; 10] = u.arbitrary()?; let key_bytes: [u8; 32] = u.arbitrary()?; - let mint_address: Pubkey = Pubkey::new(&key_bytes); + let mint_address: Pubkey = Pubkey::new_from_array(key_bytes); let key_bytes: [u8; 32] = u.arbitrary()?; - let destination_token_address: Pubkey = Pubkey::new(&key_bytes); return Ok(Self::Create { seeds, mint_address, - destination_token_address, - schedules: schedules.to_vec(), + schedule: schedule, }); } 2 => return Ok(Self::Unlock { seeds }), - _ => return Ok(Self::ChangeDestination { seeds }), + _ => return Ok(Self::InitializeUnlock { seeds }), } } } @@ -50,7 +44,7 @@ impl Arbitrary for VestingInstruction { #[derive(Clone, Debug, PartialEq)] pub struct Schedule { // Schedule release time in unix timestamp - pub release_time: u64, + pub time_delta: u64, pub amount: u64, } @@ -71,8 +65,6 @@ pub enum VestingInstruction { Init { // The seed used to derive the vesting accounts address seeds: [u8; 32], - // The number of release schedules for this contract to hold - number_of_schedules: u32, }, /// Creates a new vesting schedule contract /// @@ -80,6 +72,7 @@ pub enum VestingInstruction { /// /// * Single owner /// 0. `[]` The spl-token program account + /// 1. `[]` The clock sysvar account /// 1. `[writable]` The vesting account /// 2. `[writable]` The vesting spl-token account /// 3. `[signer]` The source spl-token account owner @@ -87,8 +80,7 @@ pub enum VestingInstruction { Create { seeds: [u8; 32], mint_address: Pubkey, - destination_token_address: Pubkey, - schedules: Vec, + schedule: Schedule, }, /// Unlocks a simple vesting contract (SVC) - can only be invoked by the program itself /// Accounts expected by this instruction: @@ -101,17 +93,16 @@ pub enum VestingInstruction { /// 3. `[writable]` The destination spl-token account Unlock { seeds: [u8; 32] }, - /// Change the destination account of a given simple vesting contract (SVC) - /// - can only be invoked by the present destination address of the contract. - /// + /// Initializes the unlocking period - can only be invoked by the program itself /// Accounts expected by this instruction: /// /// * Single owner - /// 0. `[]` The vesting account - /// 1. `[]` The current destination token account - /// 2. `[signer]` The destination spl-token account owner - /// 3. `[]` The new destination spl-token account - ChangeDestination { seeds: [u8; 32] }, + /// 0. `[]` The spl-token program account + /// 1. `[]` The clock sysvar account + /// 1. `[writable]` The vesting account + /// 2. `[writable]` The vesting spl-token account + /// 3. `[writable]` The destination spl-token account + InitializeUnlock { seeds: [u8; 32] }, } impl VestingInstruction { @@ -124,15 +115,7 @@ impl VestingInstruction { .get(..32) .and_then(|slice| slice.try_into().ok()) .unwrap(); - let number_of_schedules = rest - .get(32..36) - .and_then(|slice| slice.try_into().ok()) - .map(u32::from_le_bytes) - .ok_or(InvalidInstruction)?; - Self::Init { - seeds, - number_of_schedules, - } + Self::Init { seeds } } 1 => { let seeds: [u8; 32] = rest @@ -142,38 +125,24 @@ impl VestingInstruction { let mint_address = rest .get(32..64) .and_then(|slice| slice.try_into().ok()) - .map(Pubkey::new) + .map(Pubkey::new_from_array) .ok_or(InvalidInstruction)?; - let destination_token_address = rest - .get(64..96) + let offset = 64; + let time_delta = rest + .get(offset..offset + 8) .and_then(|slice| slice.try_into().ok()) - .map(Pubkey::new) + .map(u64::from_le_bytes) .ok_or(InvalidInstruction)?; - let number_of_schedules = rest[96..].len() / SCHEDULE_SIZE; - let mut schedules: Vec = Vec::with_capacity(number_of_schedules); - let mut offset = 96; - for _ in 0..number_of_schedules { - let release_time = rest - .get(offset..offset + 8) - .and_then(|slice| slice.try_into().ok()) - .map(u64::from_le_bytes) - .ok_or(InvalidInstruction)?; - let amount = rest - .get(offset + 8..offset + 16) - .and_then(|slice| slice.try_into().ok()) - .map(u64::from_le_bytes) - .ok_or(InvalidInstruction)?; - offset += SCHEDULE_SIZE; - schedules.push(Schedule { - release_time, - amount, - }) - } + let amount = rest + .get(offset + 8..offset + 16) + .and_then(|slice| slice.try_into().ok()) + .map(u64::from_le_bytes) + .ok_or(InvalidInstruction)?; + let schedule = Schedule { time_delta, amount }; Self::Create { seeds, mint_address, - destination_token_address, - schedules, + schedule, } } 2 | 3 => { @@ -183,7 +152,7 @@ impl VestingInstruction { .unwrap(); match tag { 2 => Self::Unlock { seeds }, - _ => Self::ChangeDestination { seeds }, + _ => Self::InitializeUnlock { seeds }, } } _ => { @@ -196,34 +165,26 @@ impl VestingInstruction { pub fn pack(&self) -> Vec { let mut buf = Vec::with_capacity(size_of::()); match self { - &Self::Init { - seeds, - number_of_schedules, - } => { + &Self::Init { seeds } => { buf.push(0); buf.extend_from_slice(&seeds); - buf.extend_from_slice(&number_of_schedules.to_le_bytes()) } Self::Create { seeds, mint_address, - destination_token_address, - schedules, + schedule, } => { buf.push(1); buf.extend_from_slice(seeds); buf.extend_from_slice(&mint_address.to_bytes()); - buf.extend_from_slice(&destination_token_address.to_bytes()); - for s in schedules.iter() { - buf.extend_from_slice(&s.release_time.to_le_bytes()); - buf.extend_from_slice(&s.amount.to_le_bytes()); - } + buf.extend_from_slice(&schedule.time_delta.to_le_bytes()); + buf.extend_from_slice(&schedule.amount.to_le_bytes()); } &Self::Unlock { seeds } => { buf.push(2); buf.extend_from_slice(&seeds); } - &Self::ChangeDestination { seeds } => { + &Self::InitializeUnlock { seeds } => { buf.push(3); buf.extend_from_slice(&seeds); } @@ -240,13 +201,8 @@ pub fn init( payer_key: &Pubkey, vesting_account: &Pubkey, seeds: [u8; 32], - number_of_schedules: u32, ) -> Result { - let data = VestingInstruction::Init { - seeds, - number_of_schedules, - } - .pack(); + let data = VestingInstruction::Init { seeds }.pack(); let accounts = vec![ AccountMeta::new_readonly(*system_program_id, false), AccountMeta::new_readonly(*rent_program_id, false), @@ -264,24 +220,24 @@ pub fn init( pub fn create( vesting_program_id: &Pubkey, token_program_id: &Pubkey, + clock_sysvar_id: &Pubkey, vesting_account_key: &Pubkey, vesting_token_account_key: &Pubkey, source_token_account_owner_key: &Pubkey, source_token_account_key: &Pubkey, - destination_token_account_key: &Pubkey, mint_address: &Pubkey, - schedules: Vec, + schedule: Schedule, seeds: [u8; 32], ) -> Result { let data = VestingInstruction::Create { mint_address: *mint_address, seeds, - destination_token_address: *destination_token_account_key, - schedules, + schedule, } .pack(); let accounts = vec![ AccountMeta::new_readonly(*token_program_id, false), + AccountMeta::new_readonly(*clock_sysvar_id, false), AccountMeta::new(*vesting_account_key, false), AccountMeta::new(*vesting_token_account_key, false), AccountMeta::new_readonly(*source_token_account_owner_key, true), @@ -319,20 +275,23 @@ pub fn unlock( }) } -pub fn change_destination( +// Creates an `Unlock` instruction +pub fn initialize_unlock( vesting_program_id: &Pubkey, + token_program_id: &Pubkey, + clock_sysvar_id: &Pubkey, vesting_account_key: &Pubkey, - current_destination_token_account_owner: &Pubkey, - current_destination_token_account: &Pubkey, - target_destination_token_account: &Pubkey, + vesting_token_account_key: &Pubkey, + destination_token_account_key: &Pubkey, seeds: [u8; 32], ) -> Result { - let data = VestingInstruction::ChangeDestination { seeds }.pack(); + let data = VestingInstruction::InitializeUnlock { seeds }.pack(); let accounts = vec![ + AccountMeta::new_readonly(*token_program_id, false), + AccountMeta::new_readonly(*clock_sysvar_id, false), AccountMeta::new(*vesting_account_key, false), - AccountMeta::new_readonly(*current_destination_token_account, false), - AccountMeta::new_readonly(*current_destination_token_account_owner, true), - AccountMeta::new_readonly(*target_destination_token_account, false), + AccountMeta::new(*vesting_token_account_key, false), + AccountMeta::new(*destination_token_account_key, false), ]; Ok(Instruction { program_id: *vesting_program_id, @@ -348,16 +307,14 @@ mod test { #[test] fn test_instruction_packing() { let mint_address = Pubkey::new_unique(); - let destination_token_address = Pubkey::new_unique(); let original_create = VestingInstruction::Create { seeds: [50u8; 32], - schedules: vec![Schedule { + schedule: Schedule { amount: 42, - release_time: 250, - }], + time_delta: 250, + }, mint_address: mint_address.clone(), - destination_token_address, }; let packed_create = original_create.pack(); let unpacked_create = VestingInstruction::unpack(&packed_create).unwrap(); @@ -369,19 +326,10 @@ mod test { VestingInstruction::unpack(&original_unlock.pack()).unwrap() ); - let original_init = VestingInstruction::Init { - number_of_schedules: 42, - seeds: [50u8; 32], - }; + let original_init = VestingInstruction::Init { seeds: [50u8; 32] }; assert_eq!( original_init, VestingInstruction::unpack(&original_init.pack()).unwrap() ); - - let original_change = VestingInstruction::ChangeDestination { seeds: [50u8; 32] }; - assert_eq!( - original_change, - VestingInstruction::unpack(&original_change.pack()).unwrap() - ); } } diff --git a/program/src/processor.rs b/program/src/processor.rs index b33799a..b5ac208 100644 --- a/program/src/processor.rs +++ b/program/src/processor.rs @@ -18,8 +18,8 @@ use spl_token::{instruction::transfer, state::Account}; use crate::{ error::VestingError, - instruction::{Schedule, VestingInstruction, SCHEDULE_SIZE}, - state::{pack_schedules_into_slice, unpack_schedules, VestingSchedule, VestingScheduleHeader}, + instruction::{Schedule, VestingInstruction}, + state::{pack_schedule_into_slice, unpack_schedule, VestingSchedule, VestingScheduleHeader}, }; pub struct Processor {} @@ -29,7 +29,6 @@ impl Processor { program_id: &Pubkey, accounts: &[AccountInfo], seeds: [u8; 32], - schedules: u32 ) -> ProgramResult { let accounts_iter = &mut accounts.iter(); @@ -47,7 +46,7 @@ impl Processor { return Err(ProgramError::InvalidArgument); } - let state_size = (schedules as usize) * VestingSchedule::LEN + VestingScheduleHeader::LEN; + let state_size = VestingSchedule::LEN + VestingScheduleHeader::LEN; let init_vesting_account = create_account( &payer.key, @@ -74,12 +73,12 @@ impl Processor { accounts: &[AccountInfo], seeds: [u8; 32], mint_address: &Pubkey, - destination_token_address: &Pubkey, - schedules: Vec, + schedule: Schedule, ) -> ProgramResult { let accounts_iter = &mut accounts.iter(); let spl_token_account = next_account_info(accounts_iter)?; + let clock_sysvar_account = next_account_info(accounts_iter)?; let vesting_account = next_account_info(accounts_iter)?; let vesting_token_account = next_account_info(accounts_iter)?; let source_token_account_owner = next_account_info(accounts_iter)?; @@ -128,37 +127,56 @@ impl Processor { } let state_header = VestingScheduleHeader { - destination_address: *destination_token_address, + destination_address: *source_token_account.key, mint_address: *mint_address, is_initialized: true, }; let mut data = vesting_account.data.borrow_mut(); - if data.len() != VestingScheduleHeader::LEN + schedules.len() * VestingSchedule::LEN { - return Err(ProgramError::InvalidAccountData) + if data.len() != VestingScheduleHeader::LEN + VestingSchedule::LEN { + return Err(ProgramError::InvalidAccountData); } state_header.pack_into_slice(&mut data); - - let mut offset = VestingScheduleHeader::LEN; + + let clock = Clock::from_account_info(&clock_sysvar_account)?; let mut total_amount: u64 = 0; - - for s in schedules.iter() { - let state_schedule = VestingSchedule { - release_time: s.release_time, - amount: s.amount, - }; - state_schedule.pack_into_slice(&mut data[offset..]); - let delta = total_amount.checked_add(s.amount); - match delta { - Some(n) => total_amount = n, - None => return Err(ProgramError::InvalidInstructionData), // Total amount overflows u64 + + // NOTE: validate time delta to be 0 (unlocked), or a set of predefined values (1 month, 3 months, ...) + let release_time; + match schedule.time_delta { + /* Valid time_delta values: + * 0: unlocked (with 7 day withdrawal period) + * 12 months = 12 * 30 * 86400 = 31_104_000 + * 18 months = 18 * 30 * 86400 = 46_656_000 + * 24 months = 24 * 30 * 86400 = 62_208_000 + * 36 months = 36 * 30 * 86400 = 93_312_000 + */ + 0 => { + release_time = 0; + } + 31_104_000 | 46_656_000 | 62_208_000 | 93_312_000 => { + release_time = clock.unix_timestamp as u64 + schedule.time_delta; + } + _ => { + msg!("Unsupported time delta: {}", schedule.time_delta); + return Err(ProgramError::InvalidInstructionData); } - offset += SCHEDULE_SIZE; } - + + let state_schedule = VestingSchedule { + release_time: release_time, + amount: schedule.amount, + }; + state_schedule.pack_into_slice(&mut data[VestingScheduleHeader::LEN..]); + let delta = total_amount.checked_add(schedule.amount); + match delta { + Some(n) => total_amount = n, + None => return Err(ProgramError::InvalidInstructionData), // Total amount overflows u64 + } + if Account::unpack(&source_token_account.data.borrow())?.amount < total_amount { msg!("The source token account has insufficient funds."); - return Err(ProgramError::InsufficientFunds) + return Err(ProgramError::InsufficientFunds); }; let transfer_tokens_to_vesting_account = transfer( @@ -203,7 +221,7 @@ impl Processor { if spl_token_account.key != &spl_token::id() { msg!("The provided spl token program account is invalid"); - return Err(ProgramError::InvalidArgument) + return Err(ProgramError::InvalidArgument); } let packed_state = &vesting_account.data; @@ -224,15 +242,20 @@ impl Processor { // Unlock the schedules that have reached maturity let clock = Clock::from_account_info(&clock_sysvar_account)?; + let mut schedule = unpack_schedule(&packed_state.borrow()[VestingScheduleHeader::LEN..])?; + let mut total_amount_to_transfer = 0; - let mut schedules = unpack_schedules(&packed_state.borrow()[VestingScheduleHeader::LEN..])?; - for s in schedules.iter_mut() { - if clock.unix_timestamp as u64 >= s.release_time { - total_amount_to_transfer += s.amount; - s.amount = 0; - } + if schedule.release_time == 0 { + msg!("Should initialize withdrawal first"); + return Err(ProgramError::InvalidArgument); } + + if clock.unix_timestamp as u64 >= schedule.release_time { + total_amount_to_transfer += schedule.amount; + schedule.amount = 0; + } + if total_amount_to_transfer == 0 { msg!("Vesting contract has not yet reached release time"); return Err(ProgramError::InvalidArgument); @@ -259,60 +282,76 @@ impl Processor { )?; // Reset released amounts to 0. This makes the simple unlock safe with complex scheduling contracts - pack_schedules_into_slice( - schedules, + pack_schedule_into_slice( + schedule, &mut packed_state.borrow_mut()[VestingScheduleHeader::LEN..], ); Ok(()) } - pub fn process_change_destination( + pub fn process_initialize_unlock( program_id: &Pubkey, - accounts: &[AccountInfo], + _accounts: &[AccountInfo], seeds: [u8; 32], ) -> ProgramResult { - let accounts_iter = &mut accounts.iter(); + let accounts_iter = &mut _accounts.iter(); + let spl_token_account = next_account_info(accounts_iter)?; + let clock_sysvar_account = next_account_info(accounts_iter)?; let vesting_account = next_account_info(accounts_iter)?; + let vesting_token_account = next_account_info(accounts_iter)?; let destination_token_account = next_account_info(accounts_iter)?; - let destination_token_account_owner = next_account_info(accounts_iter)?; - let new_destination_token_account = next_account_info(accounts_iter)?; - if vesting_account.data.borrow().len() < VestingScheduleHeader::LEN { - return Err(ProgramError::InvalidAccountData) - } let vesting_account_key = Pubkey::create_program_address(&[&seeds], program_id)?; - let state = VestingScheduleHeader::unpack( - &vesting_account.data.borrow()[..VestingScheduleHeader::LEN], - )?; - if vesting_account_key != *vesting_account.key { msg!("Invalid vesting account key"); return Err(ProgramError::InvalidArgument); } - if state.destination_address != *destination_token_account.key { + if spl_token_account.key != &spl_token::id() { + msg!("The provided spl token program account is invalid"); + return Err(ProgramError::InvalidArgument); + } + + let packed_state = &vesting_account.data; + let header_state = + VestingScheduleHeader::unpack(&packed_state.borrow()[..VestingScheduleHeader::LEN])?; + + if header_state.destination_address != *destination_token_account.key { msg!("Contract destination account does not matched provided account"); return Err(ProgramError::InvalidArgument); } - if !destination_token_account_owner.is_signer { - msg!("Destination token account owner should be a signer."); + let vesting_token_account_data = Account::unpack(&vesting_token_account.data.borrow())?; + + if vesting_token_account_data.owner != vesting_account_key { + msg!("The vesting token account should be owned by the vesting account."); return Err(ProgramError::InvalidArgument); } - let destination_token_account = Account::unpack(&destination_token_account.data.borrow())?; + // Unlock the schedules that have reached maturity + let clock = Clock::from_account_info(&clock_sysvar_account)?; + let mut schedule = unpack_schedule(&packed_state.borrow()[VestingScheduleHeader::LEN..])?; + + if schedule.amount == 0 { + msg!("Vesting contract already claimed"); + return Err(ProgramError::InvalidArgument); + } - if destination_token_account.owner != *destination_token_account_owner.key { - msg!("The current destination token account isn't owned by the provided owner"); + if schedule.release_time != 0 { + msg!("Shouldn't initialize withdrawal for already initialized schedule"); return Err(ProgramError::InvalidArgument); } + + // Withdrawal period is 7 days = 7 * 86400 = 604_800 + schedule.release_time = clock.unix_timestamp as u64 + 604_800; - let mut new_state = state; - new_state.destination_address = *new_destination_token_account.key; - new_state - .pack_into_slice(&mut vesting_account.data.borrow_mut()[..VestingScheduleHeader::LEN]); + // Reset released amounts to 0. This makes the simple unlock safe with complex scheduling contracts + pack_schedule_into_slice( + schedule, + &mut packed_state.borrow_mut()[VestingScheduleHeader::LEN..], + ); Ok(()) } @@ -326,36 +365,25 @@ impl Processor { let instruction = VestingInstruction::unpack(instruction_data)?; msg!("Instruction unpacked"); match instruction { - VestingInstruction::Init { - seeds, - number_of_schedules, - } => { + VestingInstruction::Init { seeds } => { msg!("Instruction: Init"); - Self::process_init(program_id, accounts, seeds, number_of_schedules) + Self::process_init(program_id, accounts, seeds) } VestingInstruction::Unlock { seeds } => { msg!("Instruction: Unlock"); Self::process_unlock(program_id, accounts, seeds) } - VestingInstruction::ChangeDestination { seeds } => { - msg!("Instruction: Change Destination"); - Self::process_change_destination(program_id, accounts, seeds) + VestingInstruction::InitializeUnlock { seeds } => { + msg!("Instruction: InitializeUnlock"); + Self::process_initialize_unlock(program_id, accounts, seeds) } VestingInstruction::Create { seeds, mint_address, - destination_token_address, - schedules, + schedule, } => { msg!("Instruction: Create Schedule"); - Self::process_create( - program_id, - accounts, - seeds, - &mint_address, - &destination_token_address, - schedules, - ) + Self::process_create(program_id, accounts, seeds, &mint_address, schedule) } } } diff --git a/program/src/state.rs b/program/src/state.rs index b59605e..a899a2e 100644 --- a/program/src/state.rs +++ b/program/src/state.rs @@ -4,7 +4,7 @@ use solana_program::{ pubkey::Pubkey, }; -use std::convert::TryInto; +use std::convert::{TryFrom, TryInto}; #[derive(Debug, PartialEq)] pub struct VestingSchedule { pub release_time: u64, @@ -39,10 +39,12 @@ impl Pack for VestingScheduleHeader { fn unpack_from_slice(src: &[u8]) -> Result { if src.len() < 65 { - return Err(ProgramError::InvalidAccountData) + return Err(ProgramError::InvalidAccountData); } - let destination_address = Pubkey::new(&src[..32]); - let mint_address = Pubkey::new(&src[32..64]); + let destination_address = + Pubkey::try_from(&src[..32]).map_err(|_| ProgramError::InvalidArgument)?; + let mint_address = + Pubkey::try_from(&src[32..64]).map_err(|_| ProgramError::InvalidArgument)?; let is_initialized = src[64] == 1; Ok(Self { destination_address, @@ -71,7 +73,7 @@ impl Pack for VestingSchedule { fn unpack_from_slice(src: &[u8]) -> Result { if src.len() < 16 { - return Err(ProgramError::InvalidAccountData) + return Err(ProgramError::InvalidAccountData); } let release_time = u64::from_le_bytes(src[0..8].try_into().unwrap()); let amount = u64::from_le_bytes(src[8..16].try_into().unwrap()); @@ -88,30 +90,19 @@ impl IsInitialized for VestingScheduleHeader { } } -pub fn unpack_schedules(input: &[u8]) -> Result, ProgramError> { - let number_of_schedules = input.len() / VestingSchedule::LEN; - let mut output: Vec = Vec::with_capacity(number_of_schedules); - let mut offset = 0; - for _ in 0..number_of_schedules { - output.push(VestingSchedule::unpack_from_slice( - &input[offset..offset + VestingSchedule::LEN], - )?); - offset += VestingSchedule::LEN; - } +pub fn unpack_schedule(input: &[u8]) -> Result { + let output: VestingSchedule = + VestingSchedule::unpack_from_slice(&input[..VestingSchedule::LEN])?; Ok(output) } -pub fn pack_schedules_into_slice(schedules: Vec, target: &mut [u8]) { - let mut offset = 0; - for s in schedules.iter() { - s.pack_into_slice(&mut target[offset..]); - offset += VestingSchedule::LEN; - } +pub fn pack_schedule_into_slice(schedule: VestingSchedule, target: &mut [u8]) { + schedule.pack_into_slice(target); } #[cfg(test)] mod tests { - use super::{unpack_schedules, VestingSchedule, VestingScheduleHeader}; + use super::{unpack_schedule, VestingSchedule, VestingScheduleHeader}; use solana_program::{program_pack::Pack, pubkey::Pubkey}; #[test] @@ -121,40 +112,31 @@ mod tests { mint_address: Pubkey::new_unique(), is_initialized: true, }; - let schedule_state_0 = VestingSchedule { + let schedule_state = VestingSchedule { release_time: 30767976, amount: 969, }; - let schedule_state_1 = VestingSchedule { - release_time: 32767076, - amount: 420, - }; - let state_size = VestingScheduleHeader::LEN + 2 * VestingSchedule::LEN; - let mut state_array = [0u8; 97]; + let state_size = VestingScheduleHeader::LEN + VestingSchedule::LEN; + let mut state_array = [0u8; 81]; header_state.pack_into_slice(&mut state_array[..VestingScheduleHeader::LEN]); - schedule_state_0.pack_into_slice( + schedule_state.pack_into_slice( &mut state_array [VestingScheduleHeader::LEN..VestingScheduleHeader::LEN + VestingSchedule::LEN], ); - schedule_state_1 - .pack_into_slice(&mut state_array[VestingScheduleHeader::LEN + VestingSchedule::LEN..]); let packed = Vec::from(state_array); let mut expected = Vec::with_capacity(state_size); expected.extend_from_slice(&header_state.destination_address.to_bytes()); expected.extend_from_slice(&header_state.mint_address.to_bytes()); expected.extend_from_slice(&[header_state.is_initialized as u8]); - expected.extend_from_slice(&schedule_state_0.release_time.to_le_bytes()); - expected.extend_from_slice(&schedule_state_0.amount.to_le_bytes()); - expected.extend_from_slice(&schedule_state_1.release_time.to_le_bytes()); - expected.extend_from_slice(&schedule_state_1.amount.to_le_bytes()); + expected.extend_from_slice(&schedule_state.release_time.to_le_bytes()); + expected.extend_from_slice(&schedule_state.amount.to_le_bytes()); assert_eq!(expected, packed); assert_eq!(packed.len(), state_size); let unpacked_header = VestingScheduleHeader::unpack(&packed[..VestingScheduleHeader::LEN]).unwrap(); assert_eq!(unpacked_header, header_state); - let unpacked_schedules = unpack_schedules(&packed[VestingScheduleHeader::LEN..]).unwrap(); - assert_eq!(unpacked_schedules[0], schedule_state_0); - assert_eq!(unpacked_schedules[1], schedule_state_1); + let unpacked_schedules = unpack_schedule(&packed[VestingScheduleHeader::LEN..]).unwrap(); + assert_eq!(unpacked_schedules, schedule_state); } } diff --git a/program/tests/functional.rs b/program/tests/functional.rs index 3038f1f..d9ea900 100644 --- a/program/tests/functional.rs +++ b/program/tests/functional.rs @@ -1,21 +1,22 @@ #![cfg(feature = "test-bpf")] use std::str::FromStr; -use solana_program::{hash::Hash, - pubkey::Pubkey, - rent::Rent, - sysvar, - system_program +use solana_program::{hash::Hash, pubkey::Pubkey, rent::Rent, system_program, sysvar}; +use solana_program_test::{processor, ProgramTest, ProgramTestContext}; +use solana_sdk::{ + account::Account, signature::Keypair, signature::Signer, system_instruction, + transaction::Transaction, }; -use solana_program_test::{processor, ProgramTest}; -use solana_sdk::{account::Account, keyed_account, signature::Keypair, signature::Signer, system_instruction, transaction::Transaction}; +use solana_test_framework::ProgramTestContextExtension; +use spl_token::{ + self, + instruction::{initialize_account, initialize_mint, mint_to}, +}; +use token_vesting::instruction::{create, init, initialize_unlock, unlock}; use token_vesting::{entrypoint::process_instruction, instruction::Schedule}; -use token_vesting::instruction::{init, unlock, change_destination, create}; -use spl_token::{self, instruction::{initialize_mint, initialize_account, mint_to}}; #[tokio::test] async fn test_token_vesting() { - // Create program and test environment let program_id = Pubkey::from_str("VestingbGKPFXCWuBvfkegQfZyiNwAJb9Ss623VQ5DA").unwrap(); let mint_authority = Keypair::new(); @@ -24,24 +25,15 @@ async fn test_token_vesting() { let source_account = Keypair::new(); let source_token_account = Keypair::new(); - let destination_account = Keypair::new(); - let destination_token_account = Keypair::new(); - - let new_destination_account = Keypair::new(); - let new_destination_token_account = Keypair::new(); - let mut seeds = [42u8; 32]; let (vesting_account_key, bump) = Pubkey::find_program_address(&[&seeds[..31]], &program_id); seeds[31] = bump; let vesting_token_account = Keypair::new(); - - let mut program_test = ProgramTest::new( - "token_vesting", - program_id, - processor!(process_instruction), - ); - // Add accounts + let mut program_test = + ProgramTest::new("token_vesting", program_id, processor!(process_instruction)); + + // Add accounts program_test.add_account( source_account.pubkey(), Account { @@ -61,184 +53,339 @@ async fn test_token_vesting() { &payer.pubkey(), &vesting_account_key, seeds, - 3 - ).unwrap() - ]; - let mut init_transaction = Transaction::new_with_payer( - &init_instruction, - Some(&payer.pubkey()), - ); - init_transaction.partial_sign( - &[&payer], - recent_blockhash - ); - banks_client.process_transaction(init_transaction).await.unwrap(); - + ) + .unwrap()]; + let mut init_transaction = + Transaction::new_with_payer(&init_instruction, Some(&payer.pubkey())); + init_transaction.partial_sign(&[&payer], recent_blockhash); + banks_client + .process_transaction(init_transaction) + .await + .unwrap(); // Initialize the token accounts - banks_client.process_transaction(mint_init_transaction( - &payer, - &mint, - &mint_authority, - recent_blockhash - )).await.unwrap(); - - banks_client.process_transaction( - create_token_account(&payer, &mint, recent_blockhash, &source_token_account, &source_account.pubkey()) - ).await.unwrap(); - banks_client.process_transaction( - create_token_account(&payer, &mint, recent_blockhash, &vesting_token_account, &vesting_account_key) - ).await.unwrap(); - banks_client.process_transaction( - create_token_account(&payer, &mint, recent_blockhash, &destination_token_account, &destination_account.pubkey()) - ).await.unwrap(); - banks_client.process_transaction( - create_token_account(&payer, &mint, recent_blockhash, &new_destination_token_account, &new_destination_account.pubkey()) - ).await.unwrap(); + banks_client + .process_transaction(mint_init_transaction( + &payer, + &mint, + &mint_authority, + recent_blockhash, + )) + .await + .unwrap(); + banks_client + .process_transaction(create_token_account( + &payer, + &mint, + recent_blockhash, + &source_token_account, + &source_account.pubkey(), + )) + .await + .unwrap(); + banks_client + .process_transaction(create_token_account( + &payer, + &mint, + recent_blockhash, + &vesting_token_account, + &vesting_account_key, + )) + .await + .unwrap(); // Create and process the vesting transactions - let setup_instructions = [ - mint_to( - &spl_token::id(), - &mint.pubkey(), - &source_token_account.pubkey(), - &mint_authority.pubkey(), - &[], - 100 - ).unwrap() - ]; + let setup_instructions = [mint_to( + &spl_token::id(), + &mint.pubkey(), + &source_token_account.pubkey(), + &mint_authority.pubkey(), + &[], + 100, + ) + .unwrap()]; - let schedules = vec![ - Schedule {amount: 20, release_time: 0}, - Schedule {amount: 20, release_time: 2}, - Schedule {amount: 20, release_time: 5} - ]; + let schedule = Schedule { + amount: 100, + time_delta: 60, + }; let test_instructions = [ create( &program_id, &spl_token::id(), + &sysvar::clock::id(), &vesting_account_key, &vesting_token_account.pubkey(), &source_account.pubkey(), &source_token_account.pubkey(), - &destination_token_account.pubkey(), &mint.pubkey(), - schedules, - seeds.clone() - ).unwrap(), + schedule, + seeds.clone(), + ) + .unwrap(), unlock( &program_id, &spl_token::id(), &sysvar::clock::id(), &vesting_account_key, &vesting_token_account.pubkey(), - &destination_token_account.pubkey(), - seeds.clone() - ).unwrap() + &source_token_account.pubkey(), + seeds.clone(), + ) + .unwrap(), ]; - let change_destination_instructions = [ - change_destination( - &program_id, - &vesting_account_key, - &destination_account.pubkey(), - &destination_token_account.pubkey(), - &new_destination_token_account.pubkey(), - seeds.clone() - ).unwrap() - ]; - // Process transaction on test network - let mut setup_transaction = Transaction::new_with_payer( - &setup_instructions, - Some(&payer.pubkey()), - ); - setup_transaction.partial_sign( - &[ - &payer, - &mint_authority - ], - recent_blockhash - ); - - banks_client.process_transaction(setup_transaction).await.unwrap(); + let mut setup_transaction = + Transaction::new_with_payer(&setup_instructions, Some(&payer.pubkey())); + setup_transaction.partial_sign(&[&payer, &mint_authority], recent_blockhash); + + banks_client + .process_transaction(setup_transaction) + .await + .unwrap(); // Process transaction on test network - let mut test_transaction = Transaction::new_with_payer( - &test_instructions, - Some(&payer.pubkey()), - ); - test_transaction.partial_sign( - &[ - &payer, - &source_account - ], - recent_blockhash - ); - - banks_client.process_transaction(test_transaction).await.unwrap(); - - let mut change_destination_transaction = Transaction::new_with_payer( - &change_destination_instructions, - Some(&payer.pubkey()) - ); + let mut test_transaction = + Transaction::new_with_payer(&test_instructions, Some(&payer.pubkey())); + test_transaction.partial_sign(&[&payer, &source_account], recent_blockhash); - change_destination_transaction.partial_sign( - &[ - &payer, - &destination_account - ], - recent_blockhash + // NOTE: we're NOT doing `now() + time_delta` in the program (but we should), that's why this test passes + // TODO: add warp_to_timestamp to correctly test the behaviour + banks_client + .process_transaction(test_transaction) + .await + .unwrap(); +} + +#[tokio::test] +async fn test_token_unlocking() { + // Create program and test environment + let program_id = Pubkey::from_str("VestingbGKPFXCWuBvfkegQfZyiNwAJb9Ss623VQ5DA").unwrap(); + let mint_authority = Keypair::new(); + let mint = Keypair::new(); + + let source_account = Keypair::new(); + let source_token_account = Keypair::new(); + + let mut seeds = [42u8; 32]; + let (vesting_account_key, bump) = Pubkey::find_program_address(&[&seeds[..31]], &program_id); + seeds[31] = bump; + let vesting_token_account = Keypair::new(); + + let mut program_test = + ProgramTest::new("token_vesting", program_id, processor!(process_instruction)); + + // Add accounts + program_test.add_account( + source_account.pubkey(), + Account { + lamports: 5000000, + ..Account::default() + }, ); - banks_client.process_transaction(change_destination_transaction).await.unwrap(); - + // Start and process transactions on the test network + let mut context: ProgramTestContext = program_test.start_with_context().await; + + // NOTE: using scopes to allow partial borrows when context.warp_to_timestamp is called + { + let banks_client = &mut context.banks_client; + let payer = &mut context.payer; + let recent_blockhash = context.last_blockhash; + + // Initialize the vesting program account + let init_instruction = [init( + &system_program::id(), + &sysvar::rent::id(), + &program_id, + &payer.pubkey(), + &vesting_account_key, + seeds, + ) + .unwrap()]; + let mut init_transaction = + Transaction::new_with_payer(&init_instruction, Some(&payer.pubkey())); + init_transaction.partial_sign(&[&payer], recent_blockhash); + banks_client + .process_transaction(init_transaction) + .await + .unwrap(); + + // Initialize the token accounts + banks_client + .process_transaction(mint_init_transaction( + &payer, + &mint, + &mint_authority, + recent_blockhash, + )) + .await + .unwrap(); + + banks_client + .process_transaction(create_token_account( + &payer, + &mint, + recent_blockhash, + &source_token_account, + &source_account.pubkey(), + )) + .await + .unwrap(); + banks_client + .process_transaction(create_token_account( + &payer, + &mint, + recent_blockhash, + &vesting_token_account, + &vesting_account_key, + )) + .await + .unwrap(); + + // Create and process the vesting transactions + let setup_instructions = [mint_to( + &spl_token::id(), + &mint.pubkey(), + &source_token_account.pubkey(), + &mint_authority.pubkey(), + &[], + 100, + ) + .unwrap()]; + + let schedule = Schedule { + amount: 100, + time_delta: 0, + }; + + let test_instructions = [ + create( + &program_id, + &spl_token::id(), + &sysvar::clock::id(), + &vesting_account_key, + &vesting_token_account.pubkey(), + &source_account.pubkey(), + &source_token_account.pubkey(), + &mint.pubkey(), + schedule, + seeds.clone(), + ) + .unwrap(), + initialize_unlock( + &program_id, + &spl_token::id(), + &sysvar::clock::id(), + &vesting_account_key, + &vesting_token_account.pubkey(), + &source_token_account.pubkey(), + seeds.clone(), + ) + .unwrap(), + // TODO: move unlock after warp_to_timestamp + unlock( + &program_id, + &spl_token::id(), + &sysvar::clock::id(), + &vesting_account_key, + &vesting_token_account.pubkey(), + &source_token_account.pubkey(), + seeds.clone(), + ) + .unwrap(), + ]; + + // Process transaction on test network + let mut setup_transaction = + Transaction::new_with_payer(&setup_instructions, Some(&payer.pubkey())); + setup_transaction.partial_sign(&[&payer, &mint_authority], recent_blockhash); + + banks_client + .process_transaction(setup_transaction) + .await + .unwrap(); + + // Process transaction on test network + let mut test_transaction = + Transaction::new_with_payer(&test_instructions, Some(&payer.pubkey())); + test_transaction.partial_sign(&[&payer, &source_account], recent_blockhash); + + banks_client + .process_transaction(test_transaction) + .await + .unwrap(); + } + + // Warp to a future slot + // TODO: this should increase the timestamp, and it does not. + let _ = context.warp_to_timestamp(99999999).await; + + // { + // let banks_client = &mut context.banks_client; + // let payer = &mut context.payer; + // let recent_blockhash = context.last_blockhash; + + // let unlock_instructions = [unlock( + // &program_id, + // &spl_token::id(), + // &sysvar::clock::id(), + // &vesting_account_key, + // &vesting_token_account.pubkey(), + // &source_token_account.pubkey(), + // seeds.clone(), + // ) + // .unwrap()]; + + // let mut unlock_transaction = + // Transaction::new_with_payer(&unlock_instructions, Some(&payer.pubkey())); + + // unlock_transaction.partial_sign(&[&payer], recent_blockhash); + + // banks_client + // .process_transaction(unlock_transaction) + // .await + // .unwrap(); + // } } fn mint_init_transaction( - payer: &Keypair, - mint:&Keypair, - mint_authority: &Keypair, - recent_blockhash: Hash) -> Transaction{ + payer: &Keypair, + mint: &Keypair, + mint_authority: &Keypair, + recent_blockhash: Hash, +) -> Transaction { let instructions = [ system_instruction::create_account( &payer.pubkey(), &mint.pubkey(), Rent::default().minimum_balance(82), 82, - &spl_token::id() - + &spl_token::id(), ), initialize_mint( - &spl_token::id(), - &mint.pubkey(), + &spl_token::id(), + &mint.pubkey(), &mint_authority.pubkey(), - None, - 0 - ).unwrap(), + None, + 0, + ) + .unwrap(), ]; - let mut transaction = Transaction::new_with_payer( - &instructions, - Some(&payer.pubkey()), - ); - transaction.partial_sign( - &[ - payer, - mint - ], - recent_blockhash - ); + let mut transaction = Transaction::new_with_payer(&instructions, Some(&payer.pubkey())); + transaction.partial_sign(&[payer, mint], recent_blockhash); transaction } fn create_token_account( - payer: &Keypair, - mint:&Keypair, + payer: &Keypair, + mint: &Keypair, recent_blockhash: Hash, - token_account:&Keypair, - token_account_owner: &Pubkey + token_account: &Keypair, + token_account_owner: &Pubkey, ) -> Transaction { let instructions = [ system_instruction::create_account( @@ -246,25 +393,17 @@ fn create_token_account( &token_account.pubkey(), Rent::default().minimum_balance(165), 165, - &spl_token::id() + &spl_token::id(), ), initialize_account( - &spl_token::id(), - &token_account.pubkey(), - &mint.pubkey(), - token_account_owner - ).unwrap() - ]; - let mut transaction = Transaction::new_with_payer( - &instructions, - Some(&payer.pubkey()), - ); - transaction.partial_sign( - &[ - payer, - token_account - ], - recent_blockhash - ); + &spl_token::id(), + &token_account.pubkey(), + &mint.pubkey(), + token_account_owner, + ) + .unwrap(), + ]; + let mut transaction = Transaction::new_with_payer(&instructions, Some(&payer.pubkey())); + transaction.partial_sign(&[payer, token_account], recent_blockhash); transaction -} \ No newline at end of file +}