mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-07-04 03:42:30 +00:00
Export DefaultPath + Add logging to kaspawallet daemon (#1730)
* Export DefaultPath + Add logging to kaspawallet daemon * Export purpose and CoinType instead of defaultPath * Move TODO to correct place
This commit is contained in:
parent
6613faee2d
commit
16ba2bd312
@ -1,6 +1,12 @@
|
|||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/kaspanet/kaspad/util"
|
||||||
|
|
||||||
"github.com/kaspanet/kaspad/infrastructure/logger"
|
"github.com/kaspanet/kaspad/infrastructure/logger"
|
||||||
"github.com/kaspanet/kaspad/util/panics"
|
"github.com/kaspanet/kaspad/util/panics"
|
||||||
)
|
)
|
||||||
@ -9,4 +15,33 @@ var (
|
|||||||
backendLog = logger.NewBackend()
|
backendLog = logger.NewBackend()
|
||||||
log = backendLog.Logger("KSWD")
|
log = backendLog.Logger("KSWD")
|
||||||
spawn = panics.GoroutineWrapperFunc(log)
|
spawn = panics.GoroutineWrapperFunc(log)
|
||||||
|
|
||||||
|
defaultAppDir = util.AppDir("kaspawallet", false)
|
||||||
|
defaultLogFile = filepath.Join(defaultAppDir, "daemon.log")
|
||||||
|
defaultErrLogFile = filepath.Join(defaultAppDir, "daemon_err.log")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func initLog(logFile, errLogFile string) {
|
||||||
|
log.SetLevel(logger.LevelDebug)
|
||||||
|
err := backendLog.AddLogFile(logFile, logger.LevelTrace)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", logFile, logger.LevelTrace, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
err = backendLog.AddLogFile(errLogFile, logger.LevelWarn)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", errLogFile, logger.LevelWarn, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
err = backendLog.AddLogWriter(os.Stdout, logger.LevelInfo)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error adding stdout to the loggerfor level %s: %s", logger.LevelWarn, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
err = backendLog.Run()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error starting the logger: %s ", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -2,6 +2,11 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"os"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/pb"
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/pb"
|
||||||
"github.com/kaspanet/kaspad/cmd/kaspawallet/keys"
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/keys"
|
||||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||||
@ -10,10 +15,6 @@ import (
|
|||||||
"github.com/kaspanet/kaspad/infrastructure/os/signal"
|
"github.com/kaspanet/kaspad/infrastructure/os/signal"
|
||||||
"github.com/kaspanet/kaspad/util/panics"
|
"github.com/kaspanet/kaspad/util/panics"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"net"
|
|
||||||
"os"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
@ -33,6 +34,8 @@ type server struct {
|
|||||||
|
|
||||||
// Start starts the kaspawalletd server
|
// Start starts the kaspawalletd server
|
||||||
func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath string) error {
|
func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath string) error {
|
||||||
|
initLog(defaultLogFile, defaultErrLogFile)
|
||||||
|
|
||||||
defer panics.HandlePanic(log, "MAIN", nil)
|
defer panics.HandlePanic(log, "MAIN", nil)
|
||||||
interrupt := signal.InterruptListener()
|
interrupt := signal.InterruptListener()
|
||||||
|
|
||||||
@ -40,6 +43,7 @@ func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath stri
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return (errors.Wrapf(err, "Error listening to tcp at %s", listen))
|
return (errors.Wrapf(err, "Error listening to tcp at %s", listen))
|
||||||
}
|
}
|
||||||
|
log.Infof("Listening on %s", listen)
|
||||||
|
|
||||||
rpcClient, err := connectToRPC(params, rpcServer)
|
rpcClient, err := connectToRPC(params, rpcServer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -16,23 +16,23 @@ func CreateMnemonic() (string, error) {
|
|||||||
return bip39.NewMnemonic(entropy)
|
return bip39.NewMnemonic(entropy)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Purpose and CoinType constants
|
||||||
|
const (
|
||||||
|
SingleSignerPurpose = 44
|
||||||
|
// Note: this is not entirely compatible to BIP 45 since
|
||||||
|
// BIP 45 doesn't have a coin type in its derivation path.
|
||||||
|
MultiSigPurpose = 45
|
||||||
|
// TODO: Register the coin type in https://github.com/satoshilabs/slips/blob/master/slip-0044.md
|
||||||
|
CoinType = 111111
|
||||||
|
)
|
||||||
|
|
||||||
func defaultPath(isMultisig bool) string {
|
func defaultPath(isMultisig bool) string {
|
||||||
const (
|
purpose := SingleSignerPurpose
|
||||||
singleSignerPurpose = 44
|
|
||||||
|
|
||||||
// Note: this is not entirely compatible to BIP 45 since
|
|
||||||
// BIP 45 doesn't have a coin type in its derivation path.
|
|
||||||
multiSigPurpose = 45
|
|
||||||
)
|
|
||||||
|
|
||||||
purpose := singleSignerPurpose
|
|
||||||
if isMultisig {
|
if isMultisig {
|
||||||
purpose = multiSigPurpose
|
purpose = MultiSigPurpose
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Register the coin type in https://github.com/satoshilabs/slips/blob/master/slip-0044.md
|
return fmt.Sprintf("m/%d'/%d'/0'", purpose, CoinType)
|
||||||
const coinType = 111111
|
|
||||||
return fmt.Sprintf("m/%d'/%d'/0'", purpose, coinType)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MasterPublicKeyFromMnemonic returns the master public key with the correct derivation for the given mnemonic.
|
// MasterPublicKeyFromMnemonic returns the master public key with the correct derivation for the given mnemonic.
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
package libkaspawallet
|
package libkaspawallet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/kaspanet/go-secp256k1"
|
"github.com/kaspanet/go-secp256k1"
|
||||||
"github.com/kaspanet/kaspad/cmd/kaspawallet/libkaspawallet/bip32"
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/libkaspawallet/bip32"
|
||||||
"github.com/kaspanet/kaspad/domain/dagconfig"
|
"github.com/kaspanet/kaspad/domain/dagconfig"
|
||||||
"github.com/kaspanet/kaspad/util"
|
"github.com/kaspanet/kaspad/util"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"math"
|
|
||||||
"sort"
|
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CreateKeyPair generates a private-public key pair
|
// CreateKeyPair generates a private-public key pair
|
||||||
|
@ -3,13 +3,15 @@ package utils
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ReadLine reads one line from the given reader with trimmed white space.
|
// ReadLine reads one line from the given reader with trimmed white space.
|
||||||
func ReadLine(reader *bufio.Reader) (string, error) {
|
func ReadLine(reader *bufio.Reader) (string, error) {
|
||||||
line, err := reader.ReadBytes('\n')
|
line, err := reader.ReadBytes('\n')
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", errors.WithStack(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return strings.TrimSpace(string(line)), nil
|
return strings.TrimSpace(string(line)), nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user