package config import ( "errors" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/encoding/address" "github.com/nspcc-dev/neo-go/pkg/util" "github.com/nspcc-dev/neo-go/pkg/wallet" ) // LoadAccount loads NEP-6 load, unlocks and returns the provided account. func LoadAccount(path, addr, password string) (*wallet.Account, error) { w, err := wallet.NewWalletFromFile(path) if err != nil { return nil, err } var h util.Uint160 if addr == "" { h = w.GetChangeAddress() if h.Equals(util.Uint160{}) { return nil, errors.New("can't find a suitable account in the wallet") } } else { h, err = address.StringToUint160(addr) if err != nil { return nil, err } } acc := w.GetAccount(h) if acc == nil { return nil, errors.New("account is missing") } if err := acc.Decrypt(password, keys.NEP2ScryptParams()); err != nil { return nil, err } return acc, nil }