Skip to content

Commit

Permalink
Add MinFeePerTx argument to start-daemon
Browse files Browse the repository at this point in the history
  • Loading branch information
someone235 committed Jun 30, 2024
1 parent 86b8906 commit 01c8114
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 9 deletions.
16 changes: 9 additions & 7 deletions cmd/kaspawallet/config.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package main

import (
"os"

"github.com/kaspanet/kaspad/infrastructure/config"
"github.com/pkg/errors"
"os"

"github.com/jessevdk/go-flags"
)
Expand Down Expand Up @@ -115,12 +116,13 @@ type newAddressConfig struct {
}

type startDaemonConfig struct {
KeysFile string `long:"keys-file" short:"f" description:"Keys file location (default: ~/.kaspawallet/keys.json (*nix), %USERPROFILE%\\AppData\\Local\\Kaspawallet\\key.json (Windows))"`
Password string `long:"password" short:"p" description:"Wallet password"`
RPCServer string `long:"rpcserver" short:"s" description:"RPC server to connect to"`
Listen string `long:"listen" short:"l" description:"Address to listen on (default: 0.0.0.0:8082)"`
Timeout uint32 `long:"wait-timeout" short:"w" description:"Waiting timeout for RPC calls, seconds (default: 30 s)"`
Profile string `long:"profile" description:"Enable HTTP profiling on given port -- NOTE port must be between 1024 and 65536"`
KeysFile string `long:"keys-file" short:"f" description:"Keys file location (default: ~/.kaspawallet/keys.json (*nix), %USERPROFILE%\\AppData\\Local\\Kaspawallet\\key.json (Windows))"`
Password string `long:"password" short:"p" description:"Wallet password"`
RPCServer string `long:"rpcserver" short:"s" description:"RPC server to connect to"`
Listen string `long:"listen" short:"l" description:"Address to listen on (default: 0.0.0.0:8082)"`
Timeout uint32 `long:"wait-timeout" short:"w" description:"Waiting timeout for RPC calls, seconds (default: 30 s)"`
Profile string `long:"profile" description:"Enable HTTP profiling on given port -- NOTE port must be between 1024 and 65536"`
MinFeePerTx uint64 `long:"min-fee-per-tx" description:"Minimum fee per transaction (in sompis) (default: 0)"`
config.NetworkFlags
}

Expand Down
8 changes: 8 additions & 0 deletions cmd/kaspawallet/daemon/server/create_unsigned_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ func (s *server) selectUTXOs(spendAmount uint64, isSendAll bool, feePerInput uin
totalValue += utxo.UTXOEntry.Amount()

fee := feePerInput * uint64(len(selectedUTXOs))
if fee < s.minFeePerTx {
fee = s.minFeePerTx
}

totalSpend := spendAmount + fee
// Two break cases (if not send all):
// 1. totalValue == totalSpend, so there's no change needed -> number of outputs = 1, so a single input is sufficient
Expand All @@ -138,6 +142,10 @@ func (s *server) selectUTXOs(spendAmount uint64, isSendAll bool, feePerInput uin
}

fee := feePerInput * uint64(len(selectedUTXOs))
if fee < s.minFeePerTx {
fee = s.minFeePerTx
}

var totalSpend uint64
if isSendAll {
totalSpend = totalValue
Expand Down
4 changes: 3 additions & 1 deletion cmd/kaspawallet/daemon/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type server struct {
backgroundRPCClient *rpcclient.RPCClient // RPC client dedicated for address and UTXO background fetching
params *dagconfig.Params
coinbaseMaturity uint64 // Is different from default if we use testnet-11
minFeePerTx uint64

lock sync.RWMutex
utxosSortedByAmount []*walletUTXO
Expand All @@ -57,7 +58,7 @@ type server struct {
const MaxDaemonSendMsgSize = 100_000_000

// Start starts the kaspawalletd server
func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath string, profile string, timeout uint32) error {
func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath string, profile string, timeout uint32, minFeePerTx uint64) error {
initLog(defaultLogFile, defaultErrLogFile)

defer panics.HandlePanic(log, "MAIN", nil)
Expand Down Expand Up @@ -110,6 +111,7 @@ func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath stri
backgroundRPCClient: backgroundRPCClient,
params: params,
coinbaseMaturity: coinbaseMaturity,
minFeePerTx: minFeePerTx,
utxosSortedByAmount: []*walletUTXO{},
nextSyncStartIndex: 0,
keysFile: keysFile,
Expand Down
2 changes: 1 addition & 1 deletion cmd/kaspawallet/start_daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ package main
import "github.com/kaspanet/kaspad/cmd/kaspawallet/daemon/server"

func startDaemon(conf *startDaemonConfig) error {
return server.Start(conf.NetParams(), conf.Listen, conf.RPCServer, conf.KeysFile, conf.Profile, conf.Timeout)
return server.Start(conf.NetParams(), conf.Listen, conf.RPCServer, conf.KeysFile, conf.Profile, conf.Timeout, conf.MinFeePerTx)
}

0 comments on commit 01c8114

Please sign in to comment.