diff --git a/Cargo.lock b/Cargo.lock index 7fe7cc7e..5854fd67 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,9 +65,8 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba33235ec4f28b2da5f5de26ba7382248a2d3150b7482769f574e615f8bcf95" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "log", "solana-sdk", @@ -75,6 +74,69 @@ dependencies = [ "thiserror", ] +[[package]] +name = "agave-validator" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" +dependencies = [ + "agave-geyser-plugin-interface", + "chrono", + "clap 2.34.0", + "console", + "core_affinity", + "crossbeam-channel", + "fd-lock", + "indicatif", + "itertools 0.10.5", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-ipc-server", + "jsonrpc-server-utils", + "lazy_static", + "libc", + "libloading", + "log", + "num_cpus", + "rand 0.8.5", + "rayon", + "serde", + "serde_json", + "serde_yaml", + "signal-hook", + "solana-accounts-db", + "solana-clap-utils", + "solana-cli-config", + "solana-core", + "solana-download-utils", + "solana-entry", + "solana-faucet", + "solana-genesis-utils", + "solana-geyser-plugin-manager", + "solana-gossip", + "solana-ledger", + "solana-logger", + "solana-metrics", + "solana-net-utils", + "solana-perf", + "solana-poh", + "solana-rpc", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "solana-storage-bigtable", + "solana-streamer", + "solana-test-validator", + "solana-tpu-client", + "solana-version", + "solana-vote-program", + "symlink", + "thiserror", + "tikv-jemallocator", +] + [[package]] name = "ahash" version = "0.7.7" @@ -2627,6 +2689,7 @@ dependencies = [ name = "jito-transaction-relayer" version = "0.1.11" dependencies = [ + "agave-validator", "bincode", "clap 4.4.8", "crossbeam-channel", @@ -2654,7 +2717,6 @@ dependencies = [ "solana-perf", "solana-program", "solana-sdk", - "solana-validator", "tikv-jemallocator", "tokio", "tokio-stream", @@ -4847,9 +4909,8 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d76c43ef61f527d719b5c6bfa5a62ebba60839739125da9e8a00fb82349afd2" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "Inflector", "base64 0.21.5", @@ -4872,9 +4933,8 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36d5bd37de55b19efecc842f48f465edc588b107acf0c9f94d79b1182147e299" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "arrayref", "bincode", @@ -4931,9 +4991,8 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d143225217baaf524eac490475802eb095a563833735a4dc0f1e84d5f57e03" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "bytemuck", @@ -4952,9 +5011,8 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de7daee8af1a4555236d6537ce9d5c10bc945f65e6468382699ad91d020a592" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "borsh 0.10.3", "futures 0.3.29", @@ -4969,9 +5027,8 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab9eec320b5202c44693cdfdda3b674c92d95def8b0fe5ff2857108d5a81918" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "serde", "solana-sdk", @@ -4980,9 +5037,8 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaf48c1c27ae104b7aefdac5f2a024007cb24f01d1f50e3ea4a97588dc29056" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "crossbeam-channel", @@ -5000,9 +5056,8 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae5ebd42684259e9d9b5d2e1cc7b6cc5463be4df69f0f45a44f858c94baefdd" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bv", "fnv", @@ -5019,9 +5074,8 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce801a3dc8a060446a0d4545e882f07635ef1ff57503917c7d3a8769dc5fed6" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "byteorder", @@ -5038,9 +5092,8 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2977fbe89d8edd3f15ec06bd8d4d518017456ee2a8636972e5eb4b2b0a5e76e5" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bv", "bytemuck", @@ -5056,9 +5109,8 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb19b9bbd92eee2d8f637026559a9fb48bd98aba534caedf070498a50c91fce8" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "chrono", "clap 2.34.0", @@ -5073,9 +5125,8 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677c2b5da3a4788e2eb04c35f947c2f23754244177ae24db38344675c67ca825" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "dirs-next", "lazy_static", @@ -5089,9 +5140,8 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddbf06ae70f42263d7ee251f0481e150300c08678a08ae8a2c6ad02f2a80d3ae" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "Inflector", "base64 0.21.5", @@ -5116,9 +5166,8 @@ dependencies = [ [[package]] name = "solana-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9538e3db584a8b1e70060f1f24222b8e0429f18b607f531fb45eb826f4917265" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-trait", "bincode", @@ -5149,9 +5198,8 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb8cfc7f4448db4c766e97b9175f96b73f947df8cf27dbbad8f1b9d40d9069" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -5159,9 +5207,8 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3afd4e309d304e296765cab716fb1fd66c66ec300465c8b26f8cce763275132" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "chrono", @@ -5173,9 +5220,8 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92716758e8c0e1c0bc2a5ac2eb3df443a0337fd3991cd38a3b02b12c3fbd18ce" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-trait", "bincode", @@ -5195,9 +5241,8 @@ dependencies = [ [[package]] name = "solana-core" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dec9cf94945bac555057e576346d90274fbaf3ee8d6a51d27fab397cc4fb555" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "base64 0.21.5", "bincode", @@ -5252,6 +5297,7 @@ dependencies = [ "solana-send-transaction-service", "solana-streamer", "solana-tpu-client", + "solana-transaction-metrics-tracker", "solana-transaction-status", "solana-turbine", "solana-version", @@ -5269,9 +5315,8 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab342bd6a42e6c2fa21fe1d72801fbd98858eef44b1b8c1ecdf54f82c58dd496" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "lazy_static", "log", @@ -5293,9 +5338,8 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f64d88256543f73743cba7e43299092b5a8a879f44f823e5489131a592a0e9e" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "console", "indicatif", @@ -5307,9 +5351,8 @@ dependencies = [ [[package]] name = "solana-entry" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8eba7c38e17fad1781471b841e31e68a54fd898e329a75aa57102f1a76f3bf3" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "crossbeam-channel", @@ -5329,9 +5372,8 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e001d384576317028fd682943ae9321eadd25a17c50e59d71f387e67c6a22266" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "byteorder", @@ -5353,9 +5395,8 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1b8230474ae9f7c841060c299999124582e8d2a0448d7847720792e98cc64e" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "ahash 0.8.5", "blake3", @@ -5383,9 +5424,8 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793910ab733b113b80c357f8f492dda2fabd5671c4ea03db3aa4e46b938fdbe3" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "proc-macro2", "quote", @@ -5395,9 +5435,8 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "988f29633f21a8c13af96333278d9f4bd6e78d6dde14a5a34246afc6a7c0a635" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "log", "solana-accounts-db", @@ -5406,23 +5445,10 @@ dependencies = [ "solana-sdk", ] -[[package]] -name = "solana-geyser-plugin-interface" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f633425dc9409c6d3f019658b90bb1ad53747ed55acd45e0a18f58b95a0b89e5" -dependencies = [ - "log", - "solana-sdk", - "solana-transaction-status", - "thiserror", -] - [[package]] name = "solana-geyser-plugin-manager" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "669b750935c7b66a6086cd2e27e7e996148b5654e4197c4e33756b53a364f92a" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -5447,9 +5473,8 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "827a17c45c5c1e5a90ac71eca9d1e76653594d870247779ab14dcee332b8a826" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "assert_matches", "bincode", @@ -5497,9 +5522,8 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "582759d25163768c5ec2adf0d812463c71735bd01e132d53e88abc2c2616755d" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "assert_matches", "bincode", @@ -5563,9 +5587,8 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99507b87522b861b164673a127c5a291c2837ecf04b7466a3b5201053c1c267a" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "log", "solana-measure", @@ -5576,9 +5599,8 @@ dependencies = [ [[package]] name = "solana-logger" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3f819af39632dc538a566c937253bf46256e4c0e60f621c6db448bc7c76294" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "env_logger", "lazy_static", @@ -5587,9 +5609,8 @@ dependencies = [ [[package]] name = "solana-measure" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb045f0235b16f7d926f6e0338db822747d61559a1368c3cb017ba6e02c516d0" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "log", "solana-sdk", @@ -5597,9 +5618,8 @@ dependencies = [ [[package]] name = "solana-merkle-tree" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae327b27d64c593227d70a57440e95303130ecc17e45d607a3cc68d00688f5c8" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "fast-math", "solana-program", @@ -5607,9 +5627,8 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1af84362ad5804dc64ca88b1ca5c35bd41321e12d42c798ac06a6fbb60dd0e70" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "crossbeam-channel", "gethostname", @@ -5622,9 +5641,8 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e640a95d317cad1322015c5a2b6a71697fd8dabebcb8dd33ed7f5a22869d12" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "clap 3.2.25", @@ -5644,9 +5662,8 @@ dependencies = [ [[package]] name = "solana-perf" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4266c4bd46620a925b8d508c26578d5559e97fcff6735fd22e39f369c3996ee1" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "ahash 0.8.5", "bincode", @@ -5673,9 +5690,8 @@ dependencies = [ [[package]] name = "solana-poh" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a168ea51ef10ed9892b302a8617ed73cec092ac9c1d4497a2d3643c2537ede8" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "core_affinity", "crossbeam-channel", @@ -5691,9 +5707,8 @@ dependencies = [ [[package]] name = "solana-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581f38a870bffbe623d900c68579984671f8dfa35bbfb3309d7134de22ce8652" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "ark-bn254", "ark-ec", @@ -5745,9 +5760,8 @@ dependencies = [ [[package]] name = "solana-program-runtime" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490b6f65aced077e0c5e57c20f151a134458fc350905c20d7dcf3f2162eaa6f6" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "base64 0.21.5", "bincode", @@ -5773,9 +5787,8 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3756bfd3a7e55711c7042fbd63b27651f16ae9a2e780cc2c6d7128cefb0fb763" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "assert_matches", "async-trait", @@ -5803,9 +5816,8 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0dc2b26a7a9860f180ce11f69b0ff2a8bea0d4b9e97daee741b1e76565b3c82" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "crossbeam-channel", "futures-util", @@ -5828,9 +5840,8 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727474945d51be37ffe03e7b1d6c9630da41228c7b298a8f45098c203a78ac89" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-mutex", "async-trait", @@ -5855,9 +5866,8 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "853794cccf3bd1984419a594040dfed19666e5a9ad33b0906d4174bc394b22af" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "lazy_static", "num_cpus", @@ -5865,9 +5875,8 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b368f270526a5f92ec47c45a6b74ac304b62b08c169b45cf91e0d2f1703889bd" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "console", "dialoguer", @@ -5884,9 +5893,8 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa27b17af32b59e55cb823c6eb1a8a4c052f3133111a63642e7c07e833178ec0" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "base64 0.21.5", "bincode", @@ -5941,9 +5949,8 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b766876b0c56950ab530d8495ef7eeaeb79e162f03dadaffc0d6852de9e844" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-trait", "base64 0.21.5", @@ -5967,9 +5974,8 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876b2e410cc2403ea3216893f05034b02a180431100eb831d0b67b14fca4d29f" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "base64 0.21.5", "bs58", @@ -5989,9 +5995,8 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebdb3f02fb3cce3c967f718bc77b79433c24aa801b63dc70f374e8759b2424e4" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "clap 2.34.0", "solana-clap-utils", @@ -6002,9 +6007,8 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35b7851486b7b3deb2a6efee81cd1466b77beff914cb5cc93940d9f7f0430b7d" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "arrayref", "base64 0.21.5", @@ -6079,9 +6083,8 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d70ab837cc79ed67df6fdb145f1ffd544f1eaa60b0757b750f4864b90498bad" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "assert_matches", "base64 0.21.5", @@ -6133,9 +6136,8 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9d0433c4084a3260a32ec67f6b4272c4232d15e732be542cd5dfdf0ae1e784" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bs58", "proc-macro2", @@ -6152,9 +6154,8 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a0ac42573098147bf1d1dc8d4455fa2756757cd58435ffc75951e3d4858c1" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "crossbeam-channel", "log", @@ -6168,9 +6169,8 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c695b516f57e0291cdb18e994c22d9478e7f49be631782c352327ba5bee46a88" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "log", @@ -6183,9 +6183,8 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a47a505182e5d6736e796b03cc19241cd1efffffee1d788c24d5e3aec501179" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "backoff", "bincode", @@ -6217,9 +6216,8 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1960d4d9b4c1bbb0d2d706c8152ff81c38208d67302e93e53bf778721dad6443" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "bs58", @@ -6234,13 +6232,13 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70eda40efb5bc57ad50b1ac8452485065c1adae0e701a0348b397db054e2ab5" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-channel", "bytes", "crossbeam-channel", + "futures 0.3.29", "futures-util", "histogram", "indexmap 2.2.6", @@ -6256,9 +6254,11 @@ dependencies = [ "rand 0.8.5", "rcgen", "rustls", + "solana-measure", "solana-metrics", "solana-perf", "solana-sdk", + "solana-transaction-metrics-tracker", "thiserror", "tokio", "x509-parser", @@ -6266,9 +6266,8 @@ dependencies = [ [[package]] name = "solana-system-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f0b104dc8b94642988324a291c70f1c728be2276761e5523da1b4aa940b0f7a" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "log", @@ -6280,9 +6279,8 @@ dependencies = [ [[package]] name = "solana-test-validator" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c62d8b73e9b352e52e9c263e0bf0ca7796fff9d9e46b8e61f1970ce58700d0f" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "base64 0.21.5", "bincode", @@ -6312,9 +6310,8 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3c510144695c3d1ee1f84dd9975af7f7d35c168447c484bbd35c21e903c515" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "log", @@ -6327,9 +6324,8 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f27c8fec609179a7dfc287060df2a926c8cd89329235c4b8d78bd019a72462" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-trait", "bincode", @@ -6349,11 +6345,25 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-transaction-metrics-tracker" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" +dependencies = [ + "Inflector", + "base64 0.21.5", + "bincode", + "lazy_static", + "log", + "rand 0.8.5", + "solana-perf", + "solana-sdk", +] + [[package]] name = "solana-transaction-status" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f58f2f864d900eddf2e21a99ebe445b6be525d597e44952f075d8237035b8e" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "Inflector", "base64 0.21.5", @@ -6376,9 +6386,8 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e905b3ff727edcc180462cc7037001a4b5275626d35ed7ab8f0b617ababee3cb" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "bytes", @@ -6413,9 +6422,8 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ead118c5d549e4345dc59cbc5d9b282164f3e5334707f186e3aa10d40e3b30" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "async-trait", "solana-connection-cache", @@ -6426,75 +6434,10 @@ dependencies = [ "tokio", ] -[[package]] -name = "solana-validator" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc6f977e4be5cfea609622086532fd641f1564fcf43e83347ae9936e3296a6" -dependencies = [ - "chrono", - "clap 2.34.0", - "console", - "core_affinity", - "crossbeam-channel", - "fd-lock", - "indicatif", - "itertools 0.10.5", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-ipc-server", - "jsonrpc-server-utils", - "lazy_static", - "libc", - "libloading", - "log", - "num_cpus", - "rand 0.8.5", - "rayon", - "serde", - "serde_json", - "serde_yaml", - "signal-hook", - "solana-accounts-db", - "solana-clap-utils", - "solana-cli-config", - "solana-core", - "solana-download-utils", - "solana-entry", - "solana-faucet", - "solana-genesis-utils", - "solana-geyser-plugin-interface", - "solana-geyser-plugin-manager", - "solana-gossip", - "solana-ledger", - "solana-logger", - "solana-metrics", - "solana-net-utils", - "solana-perf", - "solana-poh", - "solana-rpc", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "solana-storage-bigtable", - "solana-streamer", - "solana-test-validator", - "solana-tpu-client", - "solana-version", - "solana-vote-program", - "symlink", - "thiserror", - "tikv-jemallocator", -] - [[package]] name = "solana-version" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532f5d631562587facc5fe88abd2e31c0d1f29012b6766c664db9f05a39fb05b" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "log", "rustc_version", @@ -6508,9 +6451,8 @@ dependencies = [ [[package]] name = "solana-vote" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ee806a47c6b1a3790e7d49f57a2037e631fee6b83e608e3315fdfc485c5826" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "crossbeam-channel", "itertools 0.10.5", @@ -6527,9 +6469,8 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c684430058b0a2e733936a8851c8843a3a6316ccd5c969d39411a479d6489642" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bincode", "log", @@ -6549,9 +6490,8 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b04ec720b6cf2d852f7aac4153e1f2b9eb4b88e7d6653a169989b2e4bcbd050" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "bytemuck", "num-derive 0.3.3", @@ -6563,9 +6503,8 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "1.17.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aef1b48d9fdb2619349d2d15942d83c99aabe995ff945d9b418176373aa823c" +version = "1.17.30" +source = "git+https://github.com/lijunwangs/solana.git?rev=6ead4acf9e11e4fe81e712e706d22dfbc9094dbc#6ead4acf9e11e4fe81e712e706d22dfbc9094dbc" dependencies = [ "aes-gcm-siv", "base64 0.21.5", diff --git a/Cargo.toml b/Cargo.toml index c46dde6f..617504f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,20 +57,21 @@ serde = { version = "1.0.160", features = ["derive"] } serde_json = "1.0.96" serde_yaml = "0.9.32" sha2 = "0.10.6" -solana-address-lookup-table-program = "=1.17.28" -solana-client = "=1.17.28" -solana-core = "=1.17.28" -solana-gossip = "=1.17.28" -solana-measure = "=1.17.28" -solana-metrics = "=1.17.28" -solana-net-utils = "=1.17.28" -solana-perf = "=1.17.28" -solana-program = "=1.17.28" -solana-rayon-threadlimit = "=1.17.28" -solana-runtime = "=1.17.28" -solana-sdk = "=1.17.28" -solana-streamer = "=1.17.28" -solana-validator = "=1.17.28" +solana-address-lookup-table-program = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-client = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-core = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-gossip = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-measure = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-metrics = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-net-utils = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-perf = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-program = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-rayon-threadlimit = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-runtime = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-sdk = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-streamer = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-zk-token-sdk = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +agave-validator = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} thiserror = "1.0.40" tikv-jemallocator = { version = "0.4", features = ["profiling"] } tokio = { version = "1.29.1", features = ["full"] } @@ -79,6 +80,11 @@ tonic = { version = "0.10.2", features = ["tls", "tls-roots", "tls-webpki-roots" tonic-build = "0.10.2" tower = { version = "0.4.1", features = ["limit"] } +[patch.crates-io] + +solana-program = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} +solana-zk-token-sdk = {git = "https://github.com/lijunwangs/solana.git", rev = "6ead4acf9e11e4fe81e712e706d22dfbc9094dbc"} + [profile.release] # thin has minimal overhead vs none (default): https://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html lto = "thin" diff --git a/core/src/tpu.rs b/core/src/tpu.rs index b78d89c7..4d1f8135 100644 --- a/core/src/tpu.rs +++ b/core/src/tpu.rs @@ -19,7 +19,9 @@ use solana_core::{ }; use solana_sdk::{pubkey::Pubkey, signature::Keypair}; use solana_streamer::{ - nonblocking::quic::DEFAULT_WAIT_FOR_CHUNK_TIMEOUT, quic::spawn_server, streamer::StakedNodes, + nonblocking::quic::{TpuType, DEFAULT_WAIT_FOR_CHUNK_TIMEOUT}, + quic::spawn_server_multi, + streamer::StakedNodes, }; use crate::{fetch_stage::FetchStage, staked_nodes_updater_service::StakedNodesUpdaterService}; @@ -31,8 +33,8 @@ pub const MAX_QUIC_CONNECTIONS_PER_IP: usize = 8; #[derive(Debug)] pub struct TpuSockets { - pub transactions_quic_sockets: Vec, - pub transactions_forwards_quic_sockets: Vec, + pub transactions_quic_sockets: Vec>, + pub transactions_forwards_quic_sockets: Vec>, } pub struct Tpu { @@ -79,8 +81,9 @@ impl Tpu { let mut quic_tasks = transactions_quic_sockets .into_iter() .map(|sock| { - spawn_server( + spawn_server_multi( "quic_streamer_tpu", + TpuType::Regular, sock, keypair, *tpu_ip, @@ -90,6 +93,7 @@ impl Tpu { staked_nodes.clone(), max_staked_quic_connections, max_unstaked_quic_connections, + 25_000 / 10, DEFAULT_WAIT_FOR_CHUNK_TIMEOUT, Duration::from_millis(DEFAULT_TPU_COALESCE_MS), ) @@ -102,8 +106,9 @@ impl Tpu { transactions_forwards_quic_sockets .into_iter() .map(|sock| { - spawn_server( + spawn_server_multi( "quic_streamer_tpu_forwards", + TpuType::Staked, sock, keypair, *tpu_fwd_ip, @@ -113,6 +118,7 @@ impl Tpu { staked_nodes.clone(), max_staked_quic_connections.saturating_add(max_unstaked_quic_connections), 0, // Prevent unstaked nodes from forwarding transactions + 5_000 / 10, DEFAULT_WAIT_FOR_CHUNK_TIMEOUT, Duration::from_millis(DEFAULT_TPU_COALESCE_MS), ) diff --git a/docker-compose.yaml b/docker-compose.yaml index a8d82c7f..9139cc5d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -13,9 +13,10 @@ services: - KEYPAIR_PATH=/etc/solana/id.json - PUBLIC_IP=127.0.0.1 - TPU_BIND_IP=0.0.0.0 + - NUM_QUIC_ENDPOINTS=4 - TPU_QUIC_PORT=10006 - NUM_TPU_QUIC_SERVERS=10 - - TPU_QUIC_FWD_PORT=10016 + - TPU_QUIC_FWD_PORT=10052 - NUM_TPU_FWD_QUIC_SERVERS=10 - GRPC_BIND_IP=0.0.0.0 - GRPC_BIND_PORT=11226 diff --git a/relayer/src/relayer.rs b/relayer/src/relayer.rs index ff1495c4..586db29d 100644 --- a/relayer/src/relayer.rs +++ b/relayer/src/relayer.rs @@ -399,8 +399,8 @@ impl RelayerHandle { } pub struct RelayerImpl { - tpu_quic_ports: Vec, - tpu_fwd_quic_ports: Vec, + tpu_quic_ports: Vec>, + tpu_fwd_quic_ports: Vec>, public_ip: IpAddr, seq: AtomicU64, @@ -419,8 +419,8 @@ impl RelayerImpl { delay_packet_receiver: Receiver, leader_schedule_cache: LeaderScheduleUpdatingHandle, public_ip: IpAddr, - tpu_quic_ports: Vec, - tpu_fwd_quic_ports: Vec, + tpu_quic_ports: Vec>, + tpu_fwd_quic_ports: Vec>, health_state: Arc>, exit: Arc, ofac_addresses: HashSet, @@ -788,11 +788,13 @@ impl Relayer for RelayerImpl { return Ok(Response::new(GetTpuConfigsResponse { tpu: Some(Socket { ip: self.public_ip.to_string(), - port: (self.tpu_quic_ports[seq as usize % self.tpu_quic_ports.len()] - 6) as i64, + // give first port of multi-quic server + port: (self.tpu_quic_ports[seq as usize % self.tpu_quic_ports.len()][0] - 6) as i64, }), tpu_forward: Some(Socket { ip: self.public_ip.to_string(), - port: (self.tpu_fwd_quic_ports[seq as usize % self.tpu_fwd_quic_ports.len()] - 6) + // give first port of multi-quic server + port: (self.tpu_fwd_quic_ports[seq as usize % self.tpu_fwd_quic_ports.len()][0] - 6) as i64, }), })); diff --git a/transaction-relayer/Cargo.toml b/transaction-relayer/Cargo.toml index 13261166..8142f6f5 100644 --- a/transaction-relayer/Cargo.toml +++ b/transaction-relayer/Cargo.toml @@ -36,7 +36,7 @@ solana-net-utils = { workspace = true } solana-perf = { workspace = true } solana-program = { workspace = true } solana-sdk = { workspace = true } -solana-validator = { workspace = true } +agave-validator = { workspace = true } tikv-jemallocator = { workspace = true } tokio = { workspace = true } tokio-stream = { workspace = true } diff --git a/transaction-relayer/src/main.rs b/transaction-relayer/src/main.rs index cf983d40..84c6d638 100644 --- a/transaction-relayer/src/main.rs +++ b/transaction-relayer/src/main.rs @@ -14,6 +14,7 @@ use std::{ time::{Duration, Instant}, }; +use agave_validator::admin_rpc_service::StakedNodesOverrides; use clap::Parser; use crossbeam_channel::tick; use dashmap::DashMap; @@ -41,19 +42,16 @@ use log::{debug, error, info, warn}; use openssl::{hash::MessageDigest, pkey::PKey}; use solana_address_lookup_table_program::state::AddressLookupTable; use solana_metrics::{datapoint_error, datapoint_info}; -use solana_net_utils::multi_bind_in_range; +use solana_net_utils::{bind_more_with_config, multi_bind_in_range, SocketConfig}; use solana_sdk::{ address_lookup_table_account::AddressLookupTableAccount, pubkey::Pubkey, signature::{read_keypair_file, Signer}, }; -use solana_validator::admin_rpc_service::StakedNodesOverrides; use tikv_jemallocator::Jemalloc; use tokio::{runtime::Builder, signal, sync::mpsc::channel}; use tonic::transport::Server; -// no-op change to test ci - #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; @@ -83,18 +81,22 @@ struct Args { num_tpu_quic_servers: u16, /// Port to bind to for tpu quic fwd packets. - /// Make sure to set this to at least (num_tpu_fwd_quic_servers + 6) higher than tpu_fwd_quic_port, + /// Make sure to set this to at least (num_tpu_fwd_quic_servers * num_quic_endpoints + 6) higher than tpu_quic_port, /// to avoid overlap any tpu forward ports with the normal tpu ports. /// TPU_FWD will bind to all ports in the range of (tpu_fwd_quic_port, tpu_fwd_quic_port + num_tpu_fwd_quic_servers). /// Open firewall ports for this entire range /// Note: get_tpu_configs will return ths port - 6 to validators to match old UDP TPU definition. - #[arg(long, env, default_value_t = 11_229)] + #[arg(long, env, default_value_t = 11_238)] tpu_quic_fwd_port: u16, /// Number of tpu fwd quic servers to spawn. #[arg(long, env, default_value_t = 1)] num_tpu_fwd_quic_servers: u16, + /// Number of endpoints per quic server + #[arg(long, env, default_value_t = 4)] + num_quic_endpoints: u16, + /// Bind IP address for GRPC server #[arg(long, env, default_value_t = IpAddr::V4(std::net::Ipv4Addr::new(0, 0, 0, 0)))] grpc_bind_ip: IpAddr, @@ -247,14 +249,22 @@ fn get_sockets(args: &Args) -> Sockets { start: args.tpu_quic_port, end: args .tpu_quic_port - .checked_add(args.num_tpu_quic_servers) + .checked_add( + args.num_tpu_quic_servers + .checked_mul(args.num_quic_endpoints) + .unwrap(), + ) .unwrap(), }; let tpu_fwd_ports = Range { start: args.tpu_quic_fwd_port, end: args .tpu_quic_fwd_port - .checked_add(args.num_tpu_fwd_quic_servers) + .checked_add( + args.num_tpu_fwd_quic_servers + .checked_mul(args.num_quic_endpoints) + .unwrap(), + ) .unwrap(), }; @@ -262,34 +272,77 @@ fn get_sockets(args: &Args) -> Sockets { assert!(!tpu_fwd_ports.contains(&tpu_port)); } - let (tpu_p, tpu_quic_sockets): (Vec<_>, Vec<_>) = (0..args.num_tpu_quic_servers) + let (tpu_p, tpu_quic_sockets): (Vec>, Vec>) = (0..args.num_tpu_quic_servers) .map(|i| { let (port, mut sock) = multi_bind_in_range( IpAddr::V4(Ipv4Addr::from([0, 0, 0, 0])), - (tpu_ports.start + i, tpu_ports.start + 1 + i), + ( + tpu_ports.start + i * args.num_quic_endpoints, + tpu_ports.start + i * args.num_quic_endpoints + 1, + ), 1, ) .unwrap(); - (port, sock.pop().unwrap()) + let quic_config = SocketConfig { + reuseaddr: false, + reuseport: true, + }; + + let transactions_quic_sockets = bind_more_with_config( + sock.pop().unwrap(), + args.num_quic_endpoints.into(), + quic_config.clone(), + ) + .unwrap(); + + ( + (port..port + args.num_quic_endpoints).collect(), + transactions_quic_sockets, + ) }) .unzip(); - let (tpu_fwd_p, tpu_fwd_quic_sockets): (Vec<_>, Vec<_>) = (0..args.num_tpu_fwd_quic_servers) + let (tpu_fwd_p, tpu_fwd_quic_sockets): (Vec>, Vec>) = (0..args + .num_tpu_fwd_quic_servers) .map(|i| { let (port, mut sock) = multi_bind_in_range( IpAddr::V4(Ipv4Addr::from([0, 0, 0, 0])), - (tpu_fwd_ports.start + i, tpu_fwd_ports.start + 1 + i), + ( + tpu_fwd_ports.start + i * args.num_quic_endpoints, + tpu_fwd_ports.start + i * args.num_quic_endpoints + 1, + ), 1, ) .unwrap(); - (port, sock.pop().unwrap()) + let quic_config = SocketConfig { + reuseaddr: false, + reuseport: true, + }; + + let transactions_forwards_quic_sockets = bind_more_with_config( + sock.pop().unwrap(), + args.num_quic_endpoints.into(), + quic_config, + ) + .unwrap(); + + ( + (port..port + args.num_quic_endpoints).collect(), + transactions_forwards_quic_sockets, + ) }) .unzip(); - assert_eq!(tpu_ports.collect::>(), tpu_p); - assert_eq!(tpu_fwd_ports.collect::>(), tpu_fwd_p); + assert_eq!( + tpu_ports.collect::>(), + tpu_p.into_iter().flatten().collect::>() + ); + assert_eq!( + tpu_fwd_ports.collect::>(), + tpu_fwd_p.into_iter().flatten().collect::>() + ); Sockets { tpu_sockets: TpuSockets { @@ -356,14 +409,25 @@ fn main() { // make sure to allow your firewall to accept UDP packets on these ports // if you're using staked overrides, you can provide one of these addresses // to --rpc-send-transaction-tpu-peer - for s in &sockets.tpu_sockets.transactions_quic_sockets { + for s in sockets + .tpu_sockets + .transactions_quic_sockets + .iter() + .flatten() + { info!( "TPU quic socket is listening at: {}:{}", public_ip.to_string(), s.local_addr().unwrap().port() ); } - for s in &sockets.tpu_sockets.transactions_forwards_quic_sockets { + + for s in sockets + .tpu_sockets + .transactions_forwards_quic_sockets + .iter() + .flatten() + { info!( "TPU forward quic socket is listening at: {}:{}", public_ip.to_string(), @@ -505,8 +569,19 @@ fn main() { delay_packet_receiver, leader_cache.handle(), public_ip, - (args.tpu_quic_port..args.tpu_quic_port + args.num_tpu_quic_servers as u16).collect(), - (args.tpu_quic_fwd_port..args.tpu_quic_fwd_port + args.num_tpu_fwd_quic_servers as u16) + (0..args.num_tpu_quic_servers) + .map(|i| { + (args.tpu_quic_port + i * args.num_quic_endpoints + ..args.tpu_quic_port + (i + 1) * args.num_quic_endpoints) + .collect() + }) + .collect(), + (0..args.num_tpu_quic_servers) + .map(|i| { + (args.tpu_quic_fwd_port + i * args.num_quic_endpoints + ..args.tpu_quic_fwd_port + (i + 1) * args.num_quic_endpoints) + .collect() + }) .collect(), health_manager.handle(), exit.clone(),