mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-08 15:16:41 +00:00
Changes to libkaspawallet to support Kaspaper (#1878)
* Add NewFileFromMnemonics * Export InternalKeychain and ExternalKeychain * Rename NewFileFromMnemonics -> NewFileFromMnemonic * NewFileFromMnemonic: change also argument name * Use libkaspawallet.ExternalKeychain instead of externalKeychain
This commit is contained in:
parent
7292438e4a
commit
70900c571b
@ -3,6 +3,7 @@ package server
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/pb"
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/pb"
|
||||||
"github.com/kaspanet/kaspad/cmd/kaspawallet/libkaspawallet"
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/libkaspawallet"
|
||||||
"github.com/kaspanet/kaspad/util"
|
"github.com/kaspanet/kaspad/util"
|
||||||
@ -23,7 +24,7 @@ func (s *server) changeAddress() (util.Address, error) {
|
|||||||
walletAddr := &walletAddress{
|
walletAddr := &walletAddress{
|
||||||
index: s.keysFile.LastUsedInternalIndex(),
|
index: s.keysFile.LastUsedInternalIndex(),
|
||||||
cosignerIndex: s.keysFile.CosignerIndex,
|
cosignerIndex: s.keysFile.CosignerIndex,
|
||||||
keyChain: internalKeychain,
|
keyChain: libkaspawallet.InternalKeychain,
|
||||||
}
|
}
|
||||||
path := s.walletAddressPath(walletAddr)
|
path := s.walletAddressPath(walletAddr)
|
||||||
return libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
|
return libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
|
||||||
@ -42,7 +43,7 @@ func (s *server) ShowAddresses(_ context.Context, request *pb.ShowAddressesReque
|
|||||||
walletAddr := &walletAddress{
|
walletAddr := &walletAddress{
|
||||||
index: i,
|
index: i,
|
||||||
cosignerIndex: s.keysFile.CosignerIndex,
|
cosignerIndex: s.keysFile.CosignerIndex,
|
||||||
keyChain: externalKeychain,
|
keyChain: libkaspawallet.ExternalKeychain,
|
||||||
}
|
}
|
||||||
path := s.walletAddressPath(walletAddr)
|
path := s.walletAddressPath(walletAddr)
|
||||||
address, err := libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
|
address, err := libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
|
||||||
@ -76,7 +77,7 @@ func (s *server) NewAddress(_ context.Context, request *pb.NewAddressRequest) (*
|
|||||||
walletAddr := &walletAddress{
|
walletAddr := &walletAddress{
|
||||||
index: s.keysFile.LastUsedExternalIndex(),
|
index: s.keysFile.LastUsedExternalIndex(),
|
||||||
cosignerIndex: s.keysFile.CosignerIndex,
|
cosignerIndex: s.keysFile.CosignerIndex,
|
||||||
keyChain: externalKeychain,
|
keyChain: libkaspawallet.ExternalKeychain,
|
||||||
}
|
}
|
||||||
path := s.walletAddressPath(walletAddr)
|
path := s.walletAddressPath(walletAddr)
|
||||||
address, err := libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
|
address, err := libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
|
||||||
|
@ -1,20 +1,16 @@
|
|||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/libkaspawallet"
|
||||||
|
|
||||||
"github.com/kaspanet/kaspad/app/appmessage"
|
"github.com/kaspanet/kaspad/app/appmessage"
|
||||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
var keyChains = []uint8{libkaspawallet.ExternalKeychain, libkaspawallet.InternalKeychain}
|
||||||
// externalKeychain is the key chain that is used to create receive addresses
|
|
||||||
externalKeychain = 0
|
|
||||||
// internalKeychain is used to create change addresses
|
|
||||||
internalKeychain = 1
|
|
||||||
)
|
|
||||||
|
|
||||||
var keyChains = []uint8{externalKeychain, internalKeychain}
|
|
||||||
|
|
||||||
type walletAddressSet map[string]*walletAddress
|
type walletAddressSet map[string]*walletAddress
|
||||||
|
|
||||||
@ -180,7 +176,7 @@ func (s *server) updateLastUsedIndexes(addressSet walletAddressSet,
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if walletAddress.keyChain == externalKeychain {
|
if walletAddress.keyChain == libkaspawallet.ExternalKeychain {
|
||||||
if walletAddress.index > lastUsedExternalIndex {
|
if walletAddress.index > lastUsedExternalIndex {
|
||||||
lastUsedExternalIndex = walletAddress.index
|
lastUsedExternalIndex = walletAddress.index
|
||||||
}
|
}
|
||||||
|
@ -6,12 +6,13 @@ import (
|
|||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/kaspanet/kaspad/cmd/kaspawallet/utils"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/kaspanet/kaspad/cmd/kaspawallet/utils"
|
||||||
|
|
||||||
"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"
|
||||||
@ -89,6 +90,23 @@ func (d *File) toJSON() *keysFileJSON {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewFileFromMnemonic generates a new File from the given mnemonic string
|
||||||
|
func NewFileFromMnemonic(params *dagconfig.Params, mnemonic string, password string) (*File, error) {
|
||||||
|
encryptedMnemonics, extendedPublicKeys, err :=
|
||||||
|
encryptedMnemonicExtendedPublicKeyPairs(params, []string{mnemonic}, password, false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &File{
|
||||||
|
Version: LastVersion,
|
||||||
|
NumThreads: defaultNumThreads,
|
||||||
|
EncryptedMnemonics: encryptedMnemonics,
|
||||||
|
ExtendedPublicKeys: extendedPublicKeys,
|
||||||
|
MinimumSignatures: 1,
|
||||||
|
ECDSA: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *File) fromJSON(fileJSON *keysFileJSON) error {
|
func (d *File) fromJSON(fileJSON *keysFileJSON) error {
|
||||||
d.Version = fileJSON.Version
|
d.Version = fileJSON.Version
|
||||||
d.NumThreads = fileJSON.NumThreads
|
d.NumThreads = fileJSON.NumThreads
|
||||||
|
8
cmd/kaspawallet/libkaspawallet/keychains.go
Normal file
8
cmd/kaspawallet/libkaspawallet/keychains.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package libkaspawallet
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ExternalKeychain is the key chain that is used to create receive addresses
|
||||||
|
ExternalKeychain = 0
|
||||||
|
// InternalKeychain is used to create change addresses
|
||||||
|
InternalKeychain = 1
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user