1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
use crate::network::{Info, NetworkClient, NetworkInfo};
use crate::result::Result;
use crate::rpc::client::Client;
use std::path::PathBuf;
const RPC_URL: &str = "https://rpc.mainnet.near.org";
const ARCHIVAL_URL: &str = "https://archival-rpc.mainnet.near.org";
pub struct Mainnet {
client: Client,
info: Info,
}
impl Mainnet {
pub(crate) async fn new() -> Result<Self> {
let client = Client::new(RPC_URL);
client.wait_for_rpc().await?;
Ok(Self {
client,
info: Info {
name: "mainnet".into(),
root_id: "near".parse().unwrap(),
keystore_path: PathBuf::from(".near-credentials/mainnet/"),
rpc_url: RPC_URL.into(),
},
})
}
pub(crate) async fn archival() -> Result<Self> {
let client = Client::new(ARCHIVAL_URL);
client.wait_for_rpc().await?;
Ok(Self {
client,
info: Info {
name: "mainnet-archival".into(),
root_id: "near".parse().unwrap(),
keystore_path: PathBuf::from(".near-credentials/mainnet/"),
rpc_url: ARCHIVAL_URL.into(),
},
})
}
}
impl std::fmt::Debug for Mainnet {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Mainnet")
.field("root_id", &self.info.root_id)
.field("rpc_url", &self.info.rpc_url)
.finish()
}
}
impl NetworkClient for Mainnet {
fn client(&self) -> &Client {
&self.client
}
}
impl NetworkInfo for Mainnet {
fn info(&self) -> &Info {
&self.info
}
}