-
Notifications
You must be signed in to change notification settings - Fork 35
/
chainnet.go
120 lines (101 loc) · 2.44 KB
/
chainnet.go
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package doge
import (
"errors"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcd/rpcclient"
)
const (
ChainTestnet = "testnet"
ChainMainnet = "mainnet"
)
var (
ErrUnsupportedChain = errors.New("Unsupported Doge chainnet")
// https://pkg.go.dev/github.com/renproject/multichain@v0.2.9/chain/dogecoin
mainnetCfg = chaincfg.Params{
Name: "mainnet",
Net: 0xc0c0c0c0,
PubKeyHashAddrID: 30,
ScriptHashAddrID: 22,
PrivateKeyID: 158,
HDPrivateKeyID: [4]byte{0x02, 0xfa, 0xc3, 0x98},
HDPublicKeyID: [4]byte{0x02, 0xfa, 0xca, 0xfd},
Bech32HRPSegwit: "doge",
}
testnetCfg = chaincfg.Params{
Name: "testnet",
Net: 0xfcc1b7dc,
PubKeyHashAddrID: 113,
ScriptHashAddrID: 196,
PrivateKeyID: 241,
HDPrivateKeyID: [4]byte{0x04, 0x35, 0x83, 0x94},
HDPublicKeyID: [4]byte{0x04, 0x35, 0x87, 0xcf},
Bech32HRPSegwit: "doget",
}
)
func isValidChain(chainnet string) bool {
switch chainnet {
case ChainTestnet, ChainMainnet:
return true
default:
return false
}
}
func netParamsOf(chainnet string) (*chaincfg.Params, error) {
switch chainnet {
case ChainTestnet:
return &testnetCfg, nil
case ChainMainnet:
return &mainnetCfg, nil
}
return nil, ErrUnsupportedChain
}
func restUrlOf(chainnet string) (string, error) {
switch chainnet {
case ChainMainnet:
return "https://api.blockcypher.com/v1/doge/main", nil
case ChainTestnet:
return "", ErrUnsupportedChain
default:
return "", ErrUnsupportedChain
}
}
func scanHostOf(chainnet string) (string, error) {
switch chainnet {
case ChainTestnet:
return "https://electrs-pre.coming.chat", nil
case ChainMainnet:
return "https://electrs-mainnet.coming.chat", nil
default:
return "", ErrUnsupportedChain
}
}
func rpcClientOf(chainnet string) (*rpcclient.Client, error) {
switch chainnet {
case ChainTestnet:
return rpcclient.New(&rpcclient.ConnConfig{
Host: "115.29.163.193:38332",
User: "auth",
Pass: "bitcoin-b2dd077",
HTTPPostMode: true,
DisableTLS: true,
}, nil)
case ChainMainnet:
return rpcclient.New(&rpcclient.ConnConfig{
Host: "115.29.163.193:8332",
User: "auth",
Pass: "bitcoin-b2dd077",
HTTPPostMode: true,
DisableTLS: true,
}, nil)
}
return nil, ErrUnsupportedChain
}
func nameOf(chainnet string) (string, error) {
switch chainnet {
case ChainTestnet:
return "Doge", nil
case ChainMainnet:
return "Doget", nil
}
return "", ErrUnsupportedChain
}