Moving solana dependencies to v1.16.18
This commit is contained in:
parent
e91c8ee9ee
commit
5e0fdc62d3
File diff suppressed because it is too large
Load Diff
|
@ -8,3 +8,8 @@ members = [
|
|||
debug = true
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
|
||||
[patch.crates-io]
|
||||
solana-geyser-plugin-interface = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.17" }
|
||||
solana-sdk = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.17" }
|
||||
solana-streamer = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.17" }
|
||||
|
|
|
@ -7,12 +7,12 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
tokio = { version = "1.21.2", features = ["rt-multi-thread", "macros", "time", "fs"] }
|
||||
solana-sdk = "1.16.18"
|
||||
solana-geyser-plugin-interface = "1.16.18"
|
||||
solana-streamer = "1.16.18"
|
||||
solana-quic-client = "1.16.18"
|
||||
solana-net-utils = "1.16.18"
|
||||
solana-connection-cache = "1.16.18"
|
||||
solana-sdk = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-geyser-plugin-interface = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-streamer = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-quic-client = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-net-utils = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-connection-cache = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
|
||||
geyser-quic-plugin = { path = "../plugin" }
|
||||
|
||||
|
|
|
@ -2,16 +2,57 @@ use std::{time::Duration, net::{IpAddr, Ipv4Addr, SocketAddr}, sync::Arc};
|
|||
|
||||
use cli::Args;
|
||||
use geyser_quic_plugin::{TransactionResults, ALPN_GEYSER_PROTOCOL_ID};
|
||||
use pkcs8::{AlgorithmIdentifier, ObjectIdentifier, der::Document};
|
||||
use quinn::{TokioRuntime, EndpointConfig, Endpoint, ClientConfig, TransportConfig, IdleTimeout};
|
||||
use solana_quic_client::nonblocking::quic_client:: SkipServerVerification;
|
||||
use rcgen::{RcgenError, CertificateParams, SanType, DistinguishedName, DnType};
|
||||
use skip_server_verification::SkipServerVerification;
|
||||
use solana_sdk::signature::Keypair;
|
||||
use clap::Parser;
|
||||
use solana_streamer::tls_certificates::new_self_signed_tls_certificate;
|
||||
|
||||
mod cli;
|
||||
mod skip_server_verification;
|
||||
|
||||
pub const PACKET_DATA_SIZE: usize = 1280 - 40 - 8;
|
||||
|
||||
pub fn new_self_signed_tls_certificate(
|
||||
keypair: &Keypair,
|
||||
san: IpAddr,
|
||||
) -> Result<(rustls::Certificate, rustls::PrivateKey), RcgenError> {
|
||||
const ED25519_IDENTIFIER: [u32; 4] = [1, 3, 101, 112];
|
||||
let mut private_key = Vec::<u8>::with_capacity(34);
|
||||
private_key.extend_from_slice(&[0x04, 0x20]); // ASN.1 OCTET STRING
|
||||
private_key.extend_from_slice(keypair.secret().as_bytes());
|
||||
let key_pkcs8 = pkcs8::PrivateKeyInfo {
|
||||
algorithm: AlgorithmIdentifier {
|
||||
oid: ObjectIdentifier::from_arcs(&ED25519_IDENTIFIER).expect("Failed to convert OID"),
|
||||
parameters: None,
|
||||
},
|
||||
private_key: &private_key,
|
||||
public_key: None,
|
||||
};
|
||||
let key_pkcs8_der = key_pkcs8
|
||||
.to_der()
|
||||
.expect("Failed to convert keypair to DER")
|
||||
.to_der();
|
||||
|
||||
let rcgen_keypair = rcgen::KeyPair::from_der(&key_pkcs8_der)?;
|
||||
|
||||
let mut cert_params = CertificateParams::default();
|
||||
cert_params.subject_alt_names = vec![SanType::IpAddress(san)];
|
||||
cert_params.alg = &rcgen::PKCS_ED25519;
|
||||
cert_params.key_pair = Some(rcgen_keypair);
|
||||
cert_params.distinguished_name = DistinguishedName::new();
|
||||
cert_params
|
||||
.distinguished_name
|
||||
.push(DnType::CommonName, "Solana node");
|
||||
|
||||
let cert = rcgen::Certificate::from_params(cert_params)?;
|
||||
let cert_der = cert.serialize_der().unwrap();
|
||||
let priv_key = cert.serialize_private_key_der();
|
||||
let priv_key = rustls::PrivateKey(priv_key);
|
||||
Ok((rustls::Certificate(cert_der), priv_key))
|
||||
}
|
||||
|
||||
pub async fn load_identity_keypair(identity_file: &String) -> Option<Keypair> {
|
||||
let identity_file = tokio::fs::read_to_string(identity_file.as_str())
|
||||
.await
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
use std::sync::Arc;
|
||||
|
||||
|
||||
pub struct SkipServerVerification;
|
||||
|
||||
impl SkipServerVerification {
|
||||
pub fn new() -> Arc<Self> {
|
||||
Arc::new(Self)
|
||||
}
|
||||
}
|
||||
|
||||
impl rustls::client::ServerCertVerifier for SkipServerVerification {
|
||||
fn verify_server_cert(
|
||||
&self,
|
||||
_end_entity: &rustls::Certificate,
|
||||
_intermediates: &[rustls::Certificate],
|
||||
_server_name: &rustls::ServerName,
|
||||
_scts: &mut dyn Iterator<Item = &[u8]>,
|
||||
_ocsp_response: &[u8],
|
||||
_now: std::time::SystemTime,
|
||||
) -> Result<rustls::client::ServerCertVerified, rustls::Error> {
|
||||
Ok(rustls::client::ServerCertVerified::assertion())
|
||||
}
|
||||
}
|
|
@ -14,9 +14,9 @@ name = "config-check"
|
|||
|
||||
[dependencies]
|
||||
tokio = { version = "1.21.2", features = ["rt-multi-thread", "macros", "time", "fs"] }
|
||||
solana-sdk = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_result_plugin" }
|
||||
solana-geyser-plugin-interface = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_result_plugin" }
|
||||
solana-streamer = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_result_plugin" }
|
||||
solana-sdk = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-geyser-plugin-interface = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
solana-streamer = { git = "https://github.com/blockworks-foundation/solana.git", branch = "geyser_send_transaction_results_v1.16.18" }
|
||||
itertools = "0.10.5"
|
||||
serde = { version = "1.0.160", features = ["derive"] }
|
||||
serde_json = "1.0.96"
|
||||
|
@ -45,4 +45,10 @@ quinn = "0.9.3"
|
|||
rustls = { version = "=0.20.8", default-features = false }
|
||||
rcgen = "0.10.0"
|
||||
pkcs8 = "0.8.0"
|
||||
pem = "1.1.1"
|
||||
pem = "1.1.1"
|
||||
|
||||
[build-dependencies]
|
||||
anyhow = "1.0.62"
|
||||
cargo-lock = "9.0.0"
|
||||
git-version = "0.3.5"
|
||||
vergen = { version = "8.2.1", features = ["build", "rustc"] }
|
|
@ -0,0 +1,34 @@
|
|||
use {cargo_lock::Lockfile, std::collections::HashSet};
|
||||
|
||||
fn main() -> anyhow::Result<()> {
|
||||
let mut envs = vergen::EmitBuilder::builder();
|
||||
envs.all_build().all_rustc();
|
||||
envs.emit()?;
|
||||
|
||||
// vergen git version does not looks cool
|
||||
println!(
|
||||
"cargo:rustc-env=GIT_VERSION={}",
|
||||
git_version::git_version!()
|
||||
);
|
||||
|
||||
// Extract packages version
|
||||
let lockfile = Lockfile::load("../Cargo.lock")?;
|
||||
println!(
|
||||
"cargo:rustc-env=SOLANA_SDK_VERSION={}",
|
||||
get_pkg_version(&lockfile, "solana-sdk")
|
||||
);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get_pkg_version(lockfile: &Lockfile, pkg_name: &str) -> String {
|
||||
lockfile
|
||||
.packages
|
||||
.iter()
|
||||
.filter(|pkg| pkg.name.as_str() == pkg_name)
|
||||
.map(|pkg| pkg.version.to_string())
|
||||
.collect::<HashSet<_>>()
|
||||
.into_iter()
|
||||
.collect::<Vec<_>>()
|
||||
.join(",")
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
[toolchain]
|
||||
channel = "1.73.0"
|
||||
components = ["clippy", "rustfmt"]
|
||||
targets = []
|
||||
profile = "minimal"
|
Loading…
Reference in New Issue