Use one of the From addresses as a change address

This commit is contained in:
Ori Newman 2022-10-31 15:46:36 +02:00
parent 6c774c966b
commit 3c1b4b2125
2 changed files with 22 additions and 16 deletions

View File

@ -10,8 +10,12 @@ import (
"github.com/pkg/errors"
)
func (s *server) changeAddress(useFirst bool) (util.Address, *walletAddress, error) {
func (s *server) changeAddress(useFirst bool, fromAddresses []*walletAddress) (util.Address, *walletAddress, error) {
internalIndex := uint32(0)
var walletAddr *walletAddress
if len(fromAddresses) != 0 {
walletAddr = fromAddresses[0]
} else {
if !useFirst {
err := s.keysFile.SetLastUsedInternalIndex(s.keysFile.LastUsedInternalIndex() + 1)
if err != nil {
@ -26,11 +30,13 @@ func (s *server) changeAddress(useFirst bool) (util.Address, *walletAddress, err
internalIndex = s.keysFile.LastUsedInternalIndex()
}
walletAddr := &walletAddress{
walletAddr = &walletAddress{
index: internalIndex,
cosignerIndex: s.keysFile.CosignerIndex,
keyChain: libkaspawallet.InternalKeychain,
}
}
path := s.walletAddressPath(walletAddr)
address, err := libkaspawallet.Address(s.params, s.keysFile.ExtendedPublicKeys, s.keysFile.MinimumSignatures, path, s.keysFile.ECDSA)
if err != nil {

View File

@ -61,7 +61,7 @@ func (s *server) createUnsignedTransactions(address string, amount uint64, fromA
return nil, err
}
changeAddress, changeWalletAddress, err := s.changeAddress(useExistingChangeAddress)
changeAddress, changeWalletAddress, err := s.changeAddress(useExistingChangeAddress, fromAddresses)
if err != nil {
return nil, err
}