Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
b3841e7054 [#218] adm: Refactor helper in part of reading alphabet wallets
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 1m32s
DCO action / DCO (pull_request) Successful in 4m3s
Build / Build Components (1.21) (pull_request) Successful in 4m26s
Pre-commit hooks / Pre-commit (pull_request) Successful in 4m46s
Build / Build Components (1.22) (pull_request) Successful in 5m11s
Tests and linters / gopls check (pull_request) Successful in 5m29s
Tests and linters / Staticcheck (pull_request) Successful in 5m59s
Tests and linters / Lint (pull_request) Successful in 7m6s
Tests and linters / Tests with -race (pull_request) Successful in 10m9s
Tests and linters / Tests (1.21) (pull_request) Successful in 10m27s
Tests and linters / Tests (1.22) (pull_request) Successful in 10m54s
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-06-26 17:10:38 +03:00
2a6ae71b35 [#218] adm: Update doc for morph generate-alphabet
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2024-06-26 17:10:27 +03:00
3 changed files with 37 additions and 28 deletions

View file

@ -56,7 +56,8 @@ credentials: # passwords for consensus node / alphabet wallets
#### Network deployment #### Network deployment
- `generate-alphabet` generates a set of wallets for consensus and - `generate-alphabet` generates a set of wallets for consensus and
Alphabet nodes. Alphabet nodes. The list of the name for alphabet wallets(no gaps between names allowed, order is important):
- az, buky, vedi, glagoli, dobro, yest, zhivete, dzelo, zemlja, izhe, izhei, gerv, kako, ljudi, mislete, nash, on, pokoj, rtsi, slovo, tverdo, uk
- `init` initializes the sidechain by deploying smart contracts and - `init` initializes the sidechain by deploying smart contracts and
setting provided FrostFS network configuration. setting provided FrostFS network configuration.

View file

@ -64,6 +64,11 @@ alphabet-wallets: /home/user/deploy/alphabet-wallets
wallet[0]: hunter2 wallet[0]: hunter2
``` ```
This command generates wallets with the following names:
- az, buky, vedi, glagoli, dobro, yest, zhivete, dzelo, zemlja, izhe, izhei, gerv, kako, ljudi, mislete, nash, on, pokoj, rtsi, slovo, tverdo, uk
No gaps between names allowed, order is important.
Do not lose wallet files and network config. Store it in an encrypted backed up Do not lose wallet files and network config. Store it in an encrypted backed up
storage. storage.

View file

@ -40,45 +40,48 @@ func openAlphabetWallets(v *viper.Viper, walletDir string) ([]*wallet.Wallet, er
return nil, fmt.Errorf("can't read alphabet wallets dir: %w", err) return nil, fmt.Errorf("can't read alphabet wallets dir: %w", err)
} }
var size int var wallets []*wallet.Wallet
loop: var letter string
for i := 0; i < len(walletFiles); i++ { for i := 0; i < constants.MaxAlphabetNodes; i++ {
name := innerring.GlagoliticLetter(i).String() + ".json" letter = innerring.GlagoliticLetter(i).String()
for j := range walletFiles {
if walletFiles[j].Name() == name {
size++
continue loop
}
}
break
}
if size == 0 {
return nil, errors.New("alphabet wallets dir is empty (run `generate-alphabet` command first)")
}
wallets := make([]*wallet.Wallet, size)
for i := 0; i < size; i++ {
letter := innerring.GlagoliticLetter(i).String()
p := filepath.Join(walletDir, letter+".json") p := filepath.Join(walletDir, letter+".json")
w, err := wallet.NewWalletFromFile(p) var w *wallet.Wallet
w, err = wallet.NewWalletFromFile(p)
if err != nil { if err != nil {
return nil, fmt.Errorf("can't open wallet: %w", err) if errors.Is(err, os.ErrNotExist) {
err = nil
} else {
err = fmt.Errorf("can't open wallet: %w", err)
}
break
} }
password, err := config.GetPassword(v, letter) var password string
password, err = config.GetPassword(v, letter)
if err != nil { if err != nil {
return nil, fmt.Errorf("can't fetch password: %w", err) err = fmt.Errorf("can't fetch password: %w", err)
break
} }
for i := range w.Accounts { for i := range w.Accounts {
if err := w.Accounts[i].Decrypt(password, keys.NEP2ScryptParams()); err != nil { if err = w.Accounts[i].Decrypt(password, keys.NEP2ScryptParams()); err != nil {
return nil, fmt.Errorf("can't unlock wallet: %w", err) err = fmt.Errorf("can't unlock wallet: %w", err)
break
} }
} }
wallets[i] = w wallets = append(wallets, w)
}
if err != nil {
return nil, fmt.Errorf("can't read wallet for letter '%s': %w", letter, err)
}
if len(wallets) == 0 {
err = errors.New("there are no alphabet wallets in dir (run `generate-alphabet` command first)")
if len(walletFiles) > 0 {
err = fmt.Errorf("use glagolitic names for wallets(run `print-alphabet`): %w", err)
}
return nil, err
} }
return wallets, nil return wallets, nil
} }