reth_node_core/
version.rs1use alloy_primitives::Bytes;
3use alloy_rpc_types_engine::ClientCode;
4use reth_db::ClientVersion;
5
6pub const CLIENT_CODE: ClientCode = ClientCode::RH;
8
9pub const NAME_CLIENT: &str = "Reth";
11
12pub const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
14
15pub const VERGEN_GIT_SHA_LONG: &str = env!("VERGEN_GIT_SHA");
17
18pub const VERGEN_GIT_SHA: &str = const_format::str_index!(VERGEN_GIT_SHA_LONG, ..8);
20
21pub const VERGEN_BUILD_TIMESTAMP: &str = env!("VERGEN_BUILD_TIMESTAMP");
23
24pub const VERGEN_CARGO_TARGET_TRIPLE: &str = env!("VERGEN_CARGO_TARGET_TRIPLE");
26
27pub const VERGEN_CARGO_FEATURES: &str = env!("VERGEN_CARGO_FEATURES");
29
30pub const SHORT_VERSION: &str = const_format::concatcp!(
41 env!("CARGO_PKG_VERSION"),
42 env!("RETH_VERSION_SUFFIX"),
43 " (",
44 VERGEN_GIT_SHA,
45 ")"
46);
47
48pub const LONG_VERSION: &str = const_format::concatcp!(
66 "Version: ",
67 env!("CARGO_PKG_VERSION"),
68 env!("RETH_VERSION_SUFFIX"),
69 "\n",
70 "Commit SHA: ",
71 VERGEN_GIT_SHA_LONG,
72 "\n",
73 "Build Timestamp: ",
74 env!("VERGEN_BUILD_TIMESTAMP"),
75 "\n",
76 "Build Features: ",
77 env!("VERGEN_CARGO_FEATURES"),
78 "\n",
79 "Build Profile: ",
80 BUILD_PROFILE_NAME
81);
82
83pub const BUILD_PROFILE_NAME: &str = {
85 const OUT_DIR: &str = env!("OUT_DIR");
89 let unix_parts = const_format::str_split!(OUT_DIR, '/');
90 if unix_parts.len() >= 4 {
91 unix_parts[unix_parts.len() - 4]
92 } else {
93 let win_parts = const_format::str_split!(OUT_DIR, '\\');
94 win_parts[win_parts.len() - 4]
95 }
96};
97
98pub(crate) const P2P_CLIENT_VERSION: &str = const_format::concatcp!(
110 "reth/v",
111 env!("CARGO_PKG_VERSION"),
112 "-",
113 VERGEN_GIT_SHA,
114 "/",
115 env!("VERGEN_CARGO_TARGET_TRIPLE")
116);
117
118pub fn default_extra_data() -> String {
129 format!("reth/v{}/{}", env!("CARGO_PKG_VERSION"), std::env::consts::OS)
130}
131
132pub fn default_extra_data_bytes() -> Bytes {
135 Bytes::from(default_extra_data().as_bytes().to_vec())
136}
137
138pub fn default_client_version() -> ClientVersion {
140 ClientVersion {
141 version: CARGO_PKG_VERSION.to_string(),
142 git_sha: VERGEN_GIT_SHA.to_string(),
143 build_timestamp: VERGEN_BUILD_TIMESTAMP.to_string(),
144 }
145}
146
147#[cfg(test)]
148mod tests {
149 use super::*;
150
151 #[test]
152 fn assert_extradata_less_32bytes() {
153 let extradata = default_extra_data();
154 assert!(extradata.len() <= 32, "extradata must be less than 32 bytes: {extradata}")
155 }
156}