-
Notifications
You must be signed in to change notification settings - Fork 991
/
Copy pathchain.cljs
59 lines (48 loc) · 1.51 KB
/
chain.cljs
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
(ns utils.ethereum.chain)
(def BSC-mainnet-chain-id 56)
(def BSC-testnet-chain-id 97)
;; IDs standardized in https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md#list-of-chain-ids
(def chains
{:mainnet {:id 1 :name "Mainnet"}
:xdai {:id 100 :name "xDai"}
:sepolia {:id 11155111 :name "Sepolia"}
:bsc {:id BSC-mainnet-chain-id
:name "BSC"}
:bsc-testnet {:id BSC-testnet-chain-id
:name "BSC testnet"}
:arbitrum {:id 42161 :name "Arbitrum"}
:optimism {:id 10 :name "Optimism"}
:base {:id 8453 :name "Base"}})
(defn chain-id->chain-keyword
[i]
(or (some #(when (= i (:id (val %))) (key %)) chains)
:custom))
(defn chain-keyword->chain-id
[k]
(get-in chains [k :id]))
(defn network->chain-id
[network]
(get-in network [:config :NetworkId]))
(defn network->chain-keyword
[network]
(chain-id->chain-keyword (network->chain-id network)))
(defn network->chain-name
[network]
(-> network
network->chain-keyword
name))
(defn get-current-network
[_]
nil)
(defn chain-keyword
[db]
(network->chain-keyword (get-current-network db)))
(defn chain-id
[db]
(network->chain-id (get-current-network db)))
(defn chain-ids
[db]
(let [test-networks-enabled? (get-in db [:profile/profile :test-networks-enabled?])
networks (get-in db [:wallet :networks])
env-networks (get networks (if test-networks-enabled? :test :prod))]
(map :chain-id env-networks)))