ethers_core/utils/
moonbeam.rs

1//! Moonbeam utilities
2
3use std::collections::BTreeMap;
4
5use generic_array::GenericArray;
6use k256::SecretKey;
7
8/// Returns the private developer keys <https://docs.moonbeam.network/builders/get-started/networks/moonbeam-dev/#pre-funded-development-accounts>
9pub fn dev_keys() -> Vec<SecretKey> {
10    MoonbeamDev::default().into_keys().collect()
11}
12
13/// Holds private developer keys with their names
14#[derive(Debug, Clone)]
15pub struct MoonbeamDev {
16    keys: BTreeMap<&'static str, SecretKey>,
17}
18
19impl MoonbeamDev {
20    pub fn keys(&self) -> impl Iterator<Item = &SecretKey> {
21        self.keys.values()
22    }
23
24    pub fn into_keys(self) -> impl Iterator<Item = SecretKey> {
25        self.keys.into_values()
26    }
27
28    /// Get a key by then, like `Alith`
29    pub fn get(&self, name: impl AsRef<str>) -> Option<&SecretKey> {
30        self.keys.get(name.as_ref())
31    }
32
33    pub fn alith(&self) -> &SecretKey {
34        self.get("Alith").unwrap()
35    }
36
37    pub fn baltathar(&self) -> &SecretKey {
38        self.get("Baltathar").unwrap()
39    }
40
41    pub fn charleth(&self) -> &SecretKey {
42        self.get("Charleth").unwrap()
43    }
44
45    pub fn ethan(&self) -> &SecretKey {
46        self.get("Ethan").unwrap()
47    }
48}
49
50fn to_secret_key(s: &str) -> SecretKey {
51    SecretKey::from_bytes(&GenericArray::clone_from_slice(&hex::decode(s).unwrap())).unwrap()
52}
53
54impl Default for MoonbeamDev {
55    fn default() -> Self {
56        Self {
57            keys: BTreeMap::from([
58                (
59                    "Alith",
60                    to_secret_key(
61                        "5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133",
62                    ),
63                ),
64                (
65                    "Baltathar",
66                    to_secret_key(
67                        "8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b",
68                    ),
69                ),
70                (
71                    "Charleth",
72                    to_secret_key(
73                        "0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b",
74                    ),
75                ),
76                (
77                    "Dorothy",
78                    to_secret_key(
79                        "39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68",
80                    ),
81                ),
82                (
83                    "Faith",
84                    to_secret_key(
85                        "b9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df",
86                    ),
87                ),
88                (
89                    "Goliath",
90                    to_secret_key(
91                        "96b8a38e12e1a31dee1eab2fffdf9d9990045f5b37e44d8cc27766ef294acf18",
92                    ),
93                ),
94                (
95                    "Heath",
96                    to_secret_key(
97                        "0d6dcaaef49272a5411896be8ad16c01c35d6f8c18873387b71fbc734759b0ab",
98                    ),
99                ),
100                (
101                    "Ida",
102                    to_secret_key(
103                        "4c42532034540267bf568198ccec4cb822a025da542861fcb146a5fab6433ff8",
104                    ),
105                ),
106                (
107                    "Judith",
108                    to_secret_key(
109                        "94c49300a58d576011096bcb006aa06f5a91b34b4383891e8029c21dc39fbb8b",
110                    ),
111                ),
112            ]),
113        }
114    }
115}