gmsol_solana_utils/utils/
inspect.rs1use solana_sdk::message::VersionedMessage;
2
3use crate::cluster::Cluster;
4
5pub fn inspect_transaction(
7 message: &VersionedMessage,
8 cluster: Option<&Cluster>,
9 raw: bool,
10) -> String {
11 use base64::{prelude::BASE64_STANDARD, Engine};
12 use url::form_urlencoded;
13
14 let message = BASE64_STANDARD.encode(message.serialize());
15
16 if raw {
17 message
18 } else {
19 let mut serializer = form_urlencoded::Serializer::new(String::new());
20 serializer.append_pair("message", &message);
21
22 let cluster = cluster.cloned().unwrap_or(Cluster::Mainnet);
23 match cluster {
24 Cluster::Localnet => {
25 serializer
26 .append_pair("cluster", "custom")
27 .append_pair("customUrl", "http://localhost:8899");
28 }
29 Cluster::Custom(url, _) => {
30 serializer
31 .append_pair("cluster", "custom")
32 .append_pair("customUrl", &url);
33 }
34 _ => {
35 serializer.append_pair("cluster", &cluster.to_string());
36 }
37 }
38
39 format!(
40 "https://explorer.solana.com/tx/inspector?{}",
41 serializer.finish()
42 )
43 }
44}