/
nodesecrets.go
107 lines (97 loc) · 3.09 KB
/
nodesecrets.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
package generate
import (
"fmt"
"github.com/vegaprotocol/devopstools/secrets"
)
func GenerateVegaNodeSecrets() (*secrets.VegaNodePrivate, error) {
metadata, err := GenerateNodeMetadata()
if err != nil {
return nil, err
}
ethereumWallet, err := GenerateNewEthereumWallet()
if err != nil {
return nil, err
}
vegaWallet, err := GenerateVegaWallet()
if err != nil {
return nil, err
}
vegaPubKeyIndex := uint64(1)
deHistory, err := GenerateDeHistoryIdentity(vegaWallet.RecoveryPhrase)
if err != nil {
return nil, err
}
tendermintNodeKeys := GenerateTendermintKeys()
tendermintValidatorKeys := GenerateTendermintKeys()
walletBinaryPassphrase, err := GeneratePassword()
if err != nil {
return nil, err
}
binaryWallets, err := CreateBinaryWallets(
tendermintValidatorKeys.PublicKey,
vegaWallet.RecoveryPhrase,
ethereumWallet.PrivateKey,
walletBinaryPassphrase,
)
if err != nil {
return nil, err
}
newNodeSecrets := &secrets.VegaNodePrivate{
Name: metadata.Name,
Country: metadata.Country,
InfoURL: metadata.InfoURL,
AvatarURL: metadata.AvatarURL,
EthereumAddress: ethereumWallet.Address,
EthereumPrivateKey: ethereumWallet.PrivateKey,
EthereumMnemonic: ethereumWallet.Mnemonic,
VegaId: vegaWallet.Id,
VegaPubKey: vegaWallet.PublicKey,
VegaPrivateKey: vegaWallet.PrivateKey,
VegaRecoveryPhrase: vegaWallet.RecoveryPhrase,
VegaPubKeyIndex: &vegaPubKeyIndex,
DeHistoryPeerId: deHistory.PeerID,
DeHistoryPrivateKey: deHistory.PrivKey,
NetworkHistoryPeerId: deHistory.PeerID,
NetworkHistoryPrivateKey: deHistory.PrivKey,
TendermintNodeId: tendermintNodeKeys.Address,
TendermintNodePubKey: tendermintNodeKeys.PublicKey,
TendermintNodePrivateKey: tendermintNodeKeys.PrivateKey,
TendermintValidatorAddress: tendermintValidatorKeys.Address,
TendermintValidatorPubKey: tendermintValidatorKeys.PublicKey,
TendermintValidatorPrivateKey: tendermintValidatorKeys.PrivateKey,
WalletBinaryPassphrase: walletBinaryPassphrase,
BinaryWallets: binaryWallets,
}
return newNodeSecrets, nil
}
type VegaNodeMetadata struct {
Name string `json:"name"`
Country string `json:"country"`
InfoURL string `json:"info_url"`
AvatarURL string `json:"avatar_url"`
}
func GenerateNodeMetadata() (*VegaNodeMetadata, error) {
errMsg := "failed to generate metadata for node, %w"
name, err := GenerateName()
if err != nil {
return nil, fmt.Errorf(errMsg, err)
}
country, err := GenerateCountryCode()
if err != nil {
return nil, fmt.Errorf(errMsg, err)
}
infoURL, err := GenerateRandomWikiURL()
if err != nil {
return nil, fmt.Errorf(errMsg, err)
}
avatarURL, err := GenerateAvatarURL()
if err != nil {
return nil, fmt.Errorf(errMsg, err)
}
return &VegaNodeMetadata{
Name: name,
Country: country,
InfoURL: infoURL,
AvatarURL: avatarURL,
}, nil
}