diff --git a/cmd/kaspawallet/config.go b/cmd/kaspawallet/config.go index cd0ddb7a2..d8ecbb83f 100644 --- a/cmd/kaspawallet/config.go +++ b/cmd/kaspawallet/config.go @@ -113,12 +113,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"` + ValidUsedOutpointsTime uint32 `long:"valid-used-outpoints-time" short:"t" description:"Used outpoints will be valid after seconds (default: 60)"` config.NetworkFlags } @@ -181,8 +182,9 @@ func parseCommandLine() (subCommand string, config interface{}) { "the funds. Use only on safe environment.", dumpUnencryptedDataConf) startDaemonConf := &startDaemonConfig{ - RPCServer: defaultRPCServer, - Listen: defaultListen, + RPCServer: defaultRPCServer, + Listen: defaultListen, + ValidUsedOutpointsTime: uint32(60), } parser.AddCommand(startDaemonSubCmd, "Start the wallet daemon", "Start the wallet daemon", startDaemonConf) diff --git a/cmd/kaspawallet/daemon/server/create_unsigned_transaction.go b/cmd/kaspawallet/daemon/server/create_unsigned_transaction.go index ac11817eb..c325e4386 100644 --- a/cmd/kaspawallet/daemon/server/create_unsigned_transaction.go +++ b/cmd/kaspawallet/daemon/server/create_unsigned_transaction.go @@ -118,7 +118,7 @@ func (s *server) selectUTXOs(spendAmount uint64, isSendAll bool, feePerInput uin } if broadcastTime, ok := s.usedOutpoints[*utxo.Outpoint]; ok { - if time.Since(broadcastTime) > time.Minute { + if time.Since(broadcastTime) > s.validUsedOutpointsTime { delete(s.usedOutpoints, *utxo.Outpoint) } else { continue diff --git a/cmd/kaspawallet/daemon/server/server.go b/cmd/kaspawallet/daemon/server/server.go index 55d9ce74a..f85b825f8 100644 --- a/cmd/kaspawallet/daemon/server/server.go +++ b/cmd/kaspawallet/daemon/server/server.go @@ -42,6 +42,7 @@ type server struct { isLogFinalProgressLineShown bool maxUsedAddressesForLog uint32 maxProcessedAddressesForLog uint32 + validUsedOutpointsTime time.Duration } // MaxDaemonSendMsgSize is the max send message size used for the daemon server. @@ -49,7 +50,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, validUsedOutpointsTime uint32) error { initLog(defaultLogFile, defaultErrLogFile) defer panics.HandlePanic(log, "MAIN", nil) @@ -95,6 +96,7 @@ func Start(params *dagconfig.Params, listen, rpcServer string, keysFilePath stri isLogFinalProgressLineShown: false, maxUsedAddressesForLog: 0, maxProcessedAddressesForLog: 0, + validUsedOutpointsTime: time.Duration(validUsedOutpointsTime) * time.Second, } log.Infof("Read, syncing the wallet...") diff --git a/cmd/kaspawallet/start_daemon.go b/cmd/kaspawallet/start_daemon.go index db819aa2f..01c1a6c23 100644 --- a/cmd/kaspawallet/start_daemon.go +++ b/cmd/kaspawallet/start_daemon.go @@ -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.ValidUsedOutpointsTime) }