diff --git a/background/background.go b/background/background.go index 1e862b1..2d5e1f0 100644 --- a/background/background.go +++ b/background/background.go @@ -87,14 +87,16 @@ func blockConnected() { var e *wsrpc.Error if errors.As(err, &e) && e.Code == rpc.ErrNoTxInfo { log.Infof("%s: Removing unconfirmed ticket from db - no information available "+ - "about transaction %s", funcName, err) + "about transaction (ticketHash=%s)", funcName, ticket.Hash) err = db.DeleteTicket(ticket) if err != nil { - log.Errorf("%s: DeleteTicket error: %v", funcName, err) + log.Errorf("%s: DeleteTicket error (ticketHash=%s): %v", + funcName, ticket.Hash, err) } } else { - log.Errorf("%s: GetRawTransaction error: %v", funcName, err) + log.Errorf("%s: GetRawTransaction for ticket failed (ticketHash=%s): %v", + funcName, ticket.Hash, err) } continue @@ -104,11 +106,11 @@ func blockConnected() { ticket.Confirmed = true err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket error: %v", funcName, err) + log.Errorf("%s: UpdateTicket error (ticketHash=%s): %v", funcName, ticket.Hash, err) continue } - log.Debugf("%s: Ticket confirmed: ticketHash=%s", funcName, ticket.Hash) + log.Debugf("%s: Ticket confirmed (ticketHash=%s)", funcName, ticket.Hash) } } @@ -122,16 +124,18 @@ func blockConnected() { for _, ticket := range pending { err = dcrdClient.SendRawTransaction(ticket.FeeTxHex) if err != nil { - log.Errorf("%s: SendRawTransaction error: %v", funcName, err) + log.Errorf("%s: SendRawTransaction for fee tx failed (ticketHash=%s): %v", + funcName, ticket.Hash, err) ticket.FeeTxStatus = database.FeeError } else { - log.Debugf("%s: Fee tx broadcast for ticket: ticketHash=%s, feeHash=%s", funcName, ticket.Hash, ticket.FeeTxHash) + log.Debugf("%s: Fee tx broadcast for ticket (ticketHash=%s, feeHash=%s)", + funcName, ticket.Hash, ticket.FeeTxHash) ticket.FeeTxStatus = database.FeeBroadcast } err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket error: %v", funcName, err) + log.Errorf("%s: UpdateTicket error (ticketHash=%s): %v", funcName, ticket.Hash, err) } } @@ -163,7 +167,8 @@ func blockConnected() { for _, ticket := range unconfirmedFees { feeTx, err := dcrdClient.GetRawTransaction(ticket.FeeTxHash) if err != nil { - log.Errorf("%s: GetRawTransaction error: %v", funcName, err) + log.Errorf("%s: GetRawTransaction for fee tx failed (feeTxHash=%s, ticketHash=%s): %v", + funcName, ticket.FeeTxHash, ticket.Hash, err) continue } @@ -173,30 +178,31 @@ func blockConnected() { ticket.FeeTxStatus = database.FeeConfirmed err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket error: %v", funcName, err) + log.Errorf("%s: UpdateTicket error (ticketHash=%s): %v", funcName, ticket.Hash, err) return } - log.Debugf("%s: Fee tx confirmed for ticket: ticketHash=%s", funcName, ticket.Hash) + log.Debugf("%s: Fee tx confirmed (ticketHash=%s)", funcName, ticket.Hash) // Add ticket to the voting wallet. rawTicket, err := dcrdClient.GetRawTransaction(ticket.Hash) if err != nil { - log.Errorf("%s: GetRawTransaction error: %v", funcName, err) + log.Errorf("%s: GetRawTransaction for ticket failed (ticketHash=%s): %v", + funcName, ticket.Hash, err) continue } for _, walletClient := range walletClients { err = walletClient.ImportPrivKey(ticket.VotingWIF) if err != nil { - log.Errorf("%s: ImportPrivKey error on dcrwallet '%s': %v", - funcName, walletClient.String(), err) + log.Errorf("%s: ImportPrivKey error on dcrwallet (wallet=%s, ticketHash=%s): %v", + funcName, walletClient.String(), ticket.Hash, err) continue } err = walletClient.AddTransaction(rawTicket.BlockHash, rawTicket.Hex) if err != nil { - log.Errorf("%s: AddTransaction error on dcrwallet '%s': %v", - funcName, walletClient.String(), err) + log.Errorf("%s: AddTransaction error on dcrwallet (wallet=%s, ticketHash=%s): %v", + funcName, walletClient.String(), ticket.Hash, err) continue } @@ -204,12 +210,12 @@ func blockConnected() { for agenda, choice := range ticket.VoteChoices { err = walletClient.SetVoteChoice(agenda, choice, ticket.Hash) if err != nil { - log.Errorf("%s: SetVoteChoice error on dcrwallet '%s': %v", - funcName, walletClient.String(), err) + log.Errorf("%s: SetVoteChoice error on dcrwallet (wallet=%s, ticketHash=%s): %v", + funcName, walletClient.String(), ticket.Hash, err) continue } } - log.Debugf("%s: Ticket added to voting wallet '%s': ticketHash=%s", + log.Debugf("%s: Ticket added to voting wallet (wallet=%s, ticketHash=%s)", funcName, walletClient.String(), ticket.Hash) } } diff --git a/webapi/getfeeaddress.go b/webapi/getfeeaddress.go index 3174997..6a4c676 100644 --- a/webapi/getfeeaddress.go +++ b/webapi/getfeeaddress.go @@ -75,7 +75,7 @@ func feeAddress(c *gin.Context) { var feeAddressRequest FeeAddressRequest if err := c.ShouldBindJSON(&feeAddressRequest); err != nil { - log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Bad request (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -86,7 +86,8 @@ func feeAddress(c *gin.Context) { if ticket.FeeTxStatus == database.FeeReceieved || ticket.FeeTxStatus == database.FeeBroadcast || ticket.FeeTxStatus == database.FeeConfirmed { - log.Warnf("%s: Fee tx already received from %s: ticketHash=%s", funcName, c.ClientIP(), ticket.Hash) + log.Warnf("%s: Fee tx already received (clientIP=%s, ticketHash=%s)", + funcName, c.ClientIP(), ticket.Hash) sendError(errFeeAlreadyReceived, c) return } @@ -94,7 +95,7 @@ func feeAddress(c *gin.Context) { // Get ticket details. rawTicket, err := dcrdClient.GetRawTransaction(ticketHash) if err != nil { - log.Errorf("%s: Could not retrieve tx %s for %s: %v", funcName, ticketHash, c.ClientIP(), err) + log.Errorf("%s: GetRawTransaction for ticket failed (ticketHash=%s): %v", funcName, ticketHash, err) sendError(errInternalError, c) return } @@ -102,12 +103,13 @@ func feeAddress(c *gin.Context) { // Ensure this ticket is eligible to vote at some point in the future. canVote, err := dcrdClient.CanTicketVote(rawTicket, ticketHash, cfg.NetParams) if err != nil { - log.Errorf("%s: canTicketVote error: %v", funcName, err) + log.Errorf("%s: canTicketVote error (ticketHash=%s): %v", funcName, ticketHash, err) sendError(errInternalError, c) return } if !canVote { - log.Warnf("%s: Unvotable ticket %s from %s", funcName, ticketHash, c.ClientIP()) + log.Warnf("%s: Unvotable ticket (clientIP=%s, ticketHash=%s)", + funcName, c.ClientIP(), ticketHash) sendError(errTicketCannotVote, c) return } @@ -120,7 +122,7 @@ func feeAddress(c *gin.Context) { if ticket.FeeExpired() { newFee, err := getCurrentFee(dcrdClient) if err != nil { - log.Errorf("%s: getCurrentFee error: %v", funcName, err) + log.Errorf("%s: getCurrentFee error (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } @@ -129,11 +131,11 @@ func feeAddress(c *gin.Context) { err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket error: %v", funcName, err) + log.Errorf("%s: UpdateTicket failed (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } - log.Debugf("%s: Expired fee updated for ticket: newFeeAmt=%s, ticketHash=%s", + log.Debugf("%s: Expired fee updated (newFeeAmt=%s, ticketHash=%s)", funcName, newFee, ticket.Hash) } sendJSONResponse(feeAddressResponse{ @@ -152,14 +154,14 @@ func feeAddress(c *gin.Context) { fee, err := getCurrentFee(dcrdClient) if err != nil { - log.Errorf("%s: getCurrentFee error: %v", funcName, err) + log.Errorf("%s: getCurrentFee error (ticketHash=%s): %v", funcName, ticketHash, err) sendError(errInternalError, c) return } newAddress, newAddressIdx, err := getNewFeeAddress(db, addrGen) if err != nil { - log.Errorf("%s: getNewFeeAddress error: %v", funcName, err) + log.Errorf("%s: getNewFeeAddress error (ticketHash=%s): %v", funcName, ticketHash, err) } now := time.Now() @@ -180,13 +182,14 @@ func feeAddress(c *gin.Context) { err = db.InsertNewTicket(dbTicket) if err != nil { - log.Errorf("%s: InsertTicket error: %v", funcName, err) + log.Errorf("%s: InsertNewTicket failed (ticketHash=%s): %v", funcName, ticketHash, err) sendError(errInternalError, c) return } - log.Debugf("%s: Fee address created for new ticket: tktConfirmed=%t, feeAddrIdx=%d, "+ - "feeAddr=%s, feeAmt=%s, ticketHash=%s", funcName, confirmed, newAddressIdx, newAddress, fee, ticketHash) + log.Debugf("%s: Fee address created for new ticket: (tktConfirmed=%t, feeAddrIdx=%d, "+ + "feeAddr=%s, feeAmt=%s, ticketHash=%s)", + funcName, confirmed, newAddressIdx, newAddress, fee, ticketHash) sendJSONResponse(feeAddressResponse{ Timestamp: now.Unix(), diff --git a/webapi/middleware.go b/webapi/middleware.go index 4dada64..e4dc4b6 100644 --- a/webapi/middleware.go +++ b/webapi/middleware.go @@ -116,7 +116,7 @@ func vspAuth() gin.HandlerFunc { // downstream handlers to use. reqBytes, err := ioutil.ReadAll(c.Request.Body) if err != nil { - log.Warnf("%s: Error reading request from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Error reading request (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -126,7 +126,7 @@ func vspAuth() gin.HandlerFunc { // Parse request and ensure there is a ticket hash included. var request ticketHashRequest if err := binding.JSON.BindBody(reqBytes, &request); err != nil { - log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Bad request (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -136,13 +136,14 @@ func vspAuth() gin.HandlerFunc { // A ticket hash should be 64 chars (MaxHashStringSize) and should parse // into a chainhash.Hash without error. if len(hash) != chainhash.MaxHashStringSize { - log.Errorf("%s: Invalid hash from %s: incorrect length", funcName, c.ClientIP()) + log.Errorf("%s: Incorrect hash length (clientIP=%s): got %d, expected %d", + funcName, c.ClientIP(), len(hash), chainhash.MaxHashStringSize) sendErrorWithMsg("invalid ticket hash", errBadRequest, c) return } _, err = chainhash.NewHashFromStr(hash) if err != nil { - log.Errorf("%s: Invalid hash from %s: %v", funcName, c.ClientIP(), err) + log.Errorf("%s: Invalid hash (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg("invalid ticket hash", errBadRequest, c) return } @@ -150,7 +151,7 @@ func vspAuth() gin.HandlerFunc { // Check if this ticket already appears in the database. ticket, ticketFound, err := db.GetTicketByHash(hash) if err != nil { - log.Errorf("%s: GetTicketByHash error: %v", funcName, err) + log.Errorf("%s: GetTicketByHash error (ticketHash=%s): %v", funcName, hash, err) sendError(errInternalError, c) return } @@ -165,28 +166,28 @@ func vspAuth() gin.HandlerFunc { resp, err := dcrdClient.GetRawTransaction(hash) if err != nil { - log.Errorf("%s: GetRawTransaction error: %v", funcName, err) + log.Errorf("%s: GetRawTransaction for ticket failed (ticketHash=%s): %v", funcName, hash, err) sendError(errInternalError, c) return } msgTx, err := decodeTransaction(resp.Hex) if err != nil { - log.Errorf("%s: decodeTransaction error: %v", funcName, err) + log.Errorf("%s: Failed to decode ticket hex (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } err = isValidTicket(msgTx) if err != nil { - log.Warnf("%s: Invalid ticket from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Invalid ticket (clientIP=%s, ticketHash=%s): %v", funcName, c.ClientIP(), hash, err) sendError(errInvalidTicket, c) return } addr, err := stake.AddrFromSStxPkScrCommitment(msgTx.TxOut[1].PkScript, cfg.NetParams) if err != nil { - log.Errorf("%s: AddrFromSStxPkScrCommitment error: %v", funcName, err) + log.Errorf("%s: AddrFromSStxPkScrCommitment error (ticketHash=%s): %v", funcName, hash, err) sendError(errInternalError, c) return } @@ -197,7 +198,7 @@ func vspAuth() gin.HandlerFunc { // Validate request signature to ensure ticket ownership. err = validateSignature(reqBytes, commitmentAddress, c) if err != nil { - log.Warnf("%s: Bad signature from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Bad signature (clientIP=%s, ticketHash=%s): %v", funcName, c.ClientIP(), hash, err) sendError(errBadSignature, c) return } diff --git a/webapi/payfee.go b/webapi/payfee.go index b024e33..06cf69e 100644 --- a/webapi/payfee.go +++ b/webapi/payfee.go @@ -26,14 +26,14 @@ func payFee(c *gin.Context) { } if !knownTicket { - log.Warnf("%s: Unknown ticket from %s", funcName, c.ClientIP()) + log.Warnf("%s: Unknown ticket (clientIP=%s)", funcName, c.ClientIP()) sendError(errUnknownTicket, c) return } var payFeeRequest PayFeeRequest if err := c.ShouldBindJSON(&payFeeRequest); err != nil { - log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Bad request (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -42,7 +42,8 @@ func payFee(c *gin.Context) { if ticket.FeeTxStatus == database.FeeReceieved || ticket.FeeTxStatus == database.FeeBroadcast || ticket.FeeTxStatus == database.FeeConfirmed { - log.Warnf("%s: Fee tx already received from %s: ticketHash=%s", funcName, c.ClientIP(), ticket.Hash) + log.Warnf("%s: Fee tx already received (clientIP=%s, ticketHash=%s)", + funcName, c.ClientIP(), ticket.Hash) sendError(errFeeAlreadyReceived, c) return } @@ -50,7 +51,7 @@ func payFee(c *gin.Context) { // Get ticket details. rawTicket, err := dcrdClient.GetRawTransaction(ticket.Hash) if err != nil { - log.Errorf("%s: Could not retrieve tx %s for %s: %v", funcName, ticket.Hash, c.ClientIP(), err) + log.Errorf("%s: GetRawTransaction for ticket failed (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } @@ -58,19 +59,21 @@ func payFee(c *gin.Context) { // Ensure this ticket is eligible to vote at some point in the future. canVote, err := dcrdClient.CanTicketVote(rawTicket, ticket.Hash, cfg.NetParams) if err != nil { - log.Errorf("%s: canTicketVote error: %v", funcName, err) + log.Errorf("%s: canTicketVote error (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } if !canVote { - log.Warnf("%s: Unvotable ticket %s from %s", funcName, ticket.Hash, c.ClientIP()) + log.Warnf("%s: Unvotable ticket (clientIP=%s, ticketHash=%s)", + funcName, c.ClientIP(), ticket.Hash) sendError(errTicketCannotVote, c) return } // Respond early if the fee for this ticket is expired. if ticket.FeeExpired() { - log.Warnf("%s: Expired payfee request from %s", funcName, c.ClientIP()) + log.Warnf("%s: Expired payfee request (clientIP=%s, ticketHash=%s)", + funcName, c.ClientIP(), ticket.Hash) sendError(errFeeExpired, c) return } @@ -79,7 +82,8 @@ func payFee(c *gin.Context) { votingKey := payFeeRequest.VotingKey votingWIF, err := dcrutil.DecodeWIF(votingKey, cfg.NetParams.PrivateKeyID) if err != nil { - log.Warnf("%s: Failed to decode WIF: %v", funcName, err) + log.Warnf("%s: Failed to decode WIF (clientIP=%s, ticketHash=%s): %v", + funcName, c.ClientIP(), ticket.Hash, err) sendError(errInvalidPrivKey, c) return } @@ -88,7 +92,8 @@ func payFee(c *gin.Context) { voteChoices := payFeeRequest.VoteChoices err = isValidVoteChoices(cfg.NetParams, currentVoteVersion(cfg.NetParams), voteChoices) if err != nil { - log.Warnf("%s: Invalid votechoices from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Invalid vote choices (clientIP=%s, ticketHash=%s): %v", + funcName, c.ClientIP(), ticket.Hash, err) sendErrorWithMsg(err.Error(), errInvalidVoteChoices, c) return } @@ -96,7 +101,8 @@ func payFee(c *gin.Context) { // Validate FeeTx. feeTx, err := decodeTransaction(payFeeRequest.FeeTx) if err != nil { - log.Warnf("%s: Failed to decode tx: %v", funcName, err) + log.Warnf("%s: Failed to decode fee tx hex (clientIP=%s, ticketHash=%s): %v", + funcName, c.ClientIP(), ticket.Hash, err) sendError(errInvalidFeeTx, c) return } @@ -109,13 +115,16 @@ func payFee(c *gin.Context) { findAddress: for _, txOut := range feeTx.TxOut { if txOut.Version != scriptVersion { + log.Errorf("%s: Fee tx with invalid script version (clientIP=%s, ticketHash=%s): was %d, expected %d", + funcName, c.ClientIP(), ticket.Hash, txOut.Version, scriptVersion) sendErrorWithMsg("invalid script version", errInvalidFeeTx, c) return } _, addresses, _, err := txscript.ExtractPkScriptAddrs(scriptVersion, txOut.PkScript, cfg.NetParams) if err != nil { - log.Errorf("%s: Extract PK error: %v", funcName, err) + log.Errorf("%s: Extract PK error (clientIP=%s, ticketHash=%s): %v", + funcName, c.ClientIP(), ticket.Hash, err) sendError(errInternalError, c) return } @@ -128,8 +137,8 @@ findAddress: } if feePaid == 0 { - log.Warnf("%s: FeeTx for ticket %s did not include any payments for address %s", - funcName, ticket.Hash, ticket.FeeAddress) + log.Warnf("%s: Fee tx did not include expected payment (ticketHash=%s, feeAddress=%s, clientIP=%s)", + funcName, ticket.Hash, ticket.FeeAddress, c.ClientIP()) sendErrorWithMsg("feetx did not include any payments for fee address", errInvalidFeeTx, c) return } @@ -137,7 +146,8 @@ findAddress: wifAddr, err := dcrutil.NewAddressPubKeyHash(dcrutil.Hash160(votingWIF.PubKey()), cfg.NetParams, dcrec.STEcdsaSecp256k1) if err != nil { - log.Errorf("%s: NewAddressPubKeyHash: %v", funcName, err) + log.Errorf("%s: Failed to get voting address from WIF (ticketHash=%s, clientIP=%s): %v", + funcName, ticket.Hash, c.ClientIP(), err) sendError(errInvalidPrivKey, c) return } @@ -145,7 +155,8 @@ findAddress: // Decode ticket transaction to get its voting address. ticketTx, err := decodeTransaction(rawTicket.Hex) if err != nil { - log.Warnf("%s: Failed to decode tx: %v", funcName, err) + log.Warnf("%s: Failed to decode ticket hex (ticketHash=%s): %v", + funcName, ticket.Hash, err) sendError(errInternalError, c) return } @@ -153,20 +164,20 @@ findAddress: // Get ticket voting address. _, votingAddr, _, err := txscript.ExtractPkScriptAddrs(scriptVersion, ticketTx.TxOut[0].PkScript, cfg.NetParams) if err != nil { - log.Errorf("%s: ExtractPK error: %v", funcName, err) + log.Errorf("%s: ExtractPK error (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } if len(votingAddr) == 0 { - log.Error("%s: No voting address found for ticket %s", funcName, ticket.Hash) + log.Error("%s: No voting address found for ticket (ticketHash=%s)", funcName, ticket.Hash) sendError(errInternalError, c) return } // Ensure provided private key will allow us to vote this ticket. if votingAddr[0].Address() != wifAddr.Address() { - log.Warnf("%s: Voting address does not match provided private key: "+ - "votingAddr=%+v, wifAddr=%+v", funcName, votingAddr[0], wifAddr) + log.Warnf("%s: Voting address does not match provided private key: (ticketHash=%s, votingAddr=%+v, wifAddr=%+v)", + funcName, ticket.Hash, votingAddr[0], wifAddr) sendErrorWithMsg("voting address does not match provided private key", errInvalidPrivKey, c) return @@ -174,13 +185,13 @@ findAddress: minFee := dcrutil.Amount(ticket.FeeAmount) if feePaid < minFee { - log.Warnf("%s: Fee too small from %s: was %v, expected %v", funcName, c.ClientIP(), - feePaid, minFee) + log.Warnf("%s: Fee too small (ticketHash=%s, clientIP=%s): was %s, expected minimum %s", + funcName, ticket.Hash, c.ClientIP(), feePaid, minFee) sendError(errFeeTooSmall, c) return } - // At this point we are satisfied that the request is valid and the FeeTx + // At this point we are satisfied that the request is valid and the fee tx // pays sufficient fees to the expected address. Proceed to update the // database, and if the ticket is confirmed broadcast the transaction. @@ -192,24 +203,25 @@ findAddress: err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: InsertTicket failed: %v", funcName, err) + log.Errorf("%s: InsertTicket failed (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } - log.Debugf("%s: Fee tx received for ticket: minExpectedFee=%v, feePaid=%v, "+ - "ticketHash=%s", funcName, minFee, feePaid, ticket.Hash) + log.Debugf("%s: Fee tx received for ticket (minExpectedFee=%v, feePaid=%v, ticketHash=%s)", + funcName, minFee, feePaid, ticket.Hash) if ticket.Confirmed { err = dcrdClient.SendRawTransaction(payFeeRequest.FeeTx) if err != nil { - log.Errorf("%s: SendRawTransaction failed: %v", funcName, err) + log.Errorf("%s: SendRawTransaction for fee tx failed (ticketHash=%s): %v", + funcName, ticket.Hash, err) ticket.FeeTxStatus = database.FeeError err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket error: %v", funcName, err) + log.Errorf("%s: UpdateTicket failed (ticketHash=%s): %v", funcName, ticket.Hash, err) } sendErrorWithMsg("could not broadcast fee transaction", errInvalidFeeTx, c) @@ -220,12 +232,12 @@ findAddress: err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket failed: %v", funcName, err) + log.Errorf("%s: UpdateTicket failed (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } - log.Debugf("%s: Fee tx broadcast for ticket: ticketHash=%s, feeHash=%s", + log.Debugf("%s: Fee tx broadcast for ticket (ticketHash=%s, feeHash=%s)", funcName, ticket.Hash, ticket.FeeTxHash) } diff --git a/webapi/setvotechoices.go b/webapi/setvotechoices.go index 18ad16e..66ff243 100644 --- a/webapi/setvotechoices.go +++ b/webapi/setvotechoices.go @@ -18,20 +18,21 @@ func setVoteChoices(c *gin.Context) { walletClients := c.MustGet("WalletClients").([]*rpc.WalletRPC) if !knownTicket { - log.Warnf("%s: Unknown ticket from %s", funcName, c.ClientIP()) + log.Warnf("%s: Unknown ticket (clientIP=%s)", funcName, c.ClientIP()) sendError(errUnknownTicket, c) return } if ticket.FeeTxStatus == database.NoFee { - log.Warnf("%s: Setvotechoices without fee tx from %s", funcName, c.ClientIP()) + log.Warnf("%s: No fee tx for ticket (clientIP=%s, ticketHash=%s)", + funcName, c.ClientIP(), ticket.Hash) sendError(errFeeNotReceived, c) return } var setVoteChoicesRequest SetVoteChoicesRequest if err := c.ShouldBindJSON(&setVoteChoicesRequest); err != nil { - log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Bad request (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return } @@ -39,7 +40,8 @@ func setVoteChoices(c *gin.Context) { voteChoices := setVoteChoicesRequest.VoteChoices err := isValidVoteChoices(cfg.NetParams, currentVoteVersion(cfg.NetParams), voteChoices) if err != nil { - log.Warnf("%s: Invalid votechoices from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Invalid vote choices (clientIP=%s, ticketHash=%s): %v", + funcName, c.ClientIP(), ticket.Hash, err) sendErrorWithMsg(err.Error(), errInvalidVoteChoices, c) return } @@ -49,7 +51,7 @@ func setVoteChoices(c *gin.Context) { ticket.VoteChoices = voteChoices err = db.UpdateTicket(ticket) if err != nil { - log.Errorf("%s: UpdateTicket error: %v", funcName, err) + log.Errorf("%s: UpdateTicket error (ticketHash=%s): %v", funcName, ticket.Hash, err) sendError(errInternalError, c) return } @@ -63,13 +65,13 @@ func setVoteChoices(c *gin.Context) { if err != nil { // If this fails, we still want to try the other wallets, so // don't return an error response, just log an error. - log.Errorf("%s: SetVoteChoice failed: %v", funcName, err) + log.Errorf("%s: SetVoteChoice failed (ticketHash=%s): %v", funcName, ticket.Hash, err) } } } } - log.Debugf("%s: Vote choices updated for ticket: ticketHash=%s", funcName, ticket.Hash) + log.Debugf("%s: Vote choices updated (ticketHash=%s)", funcName, ticket.Hash) // TODO: DB - error if given timestamp is older than any previous requests diff --git a/webapi/ticketstatus.go b/webapi/ticketstatus.go index c0c34d4..9632042 100644 --- a/webapi/ticketstatus.go +++ b/webapi/ticketstatus.go @@ -16,14 +16,14 @@ func ticketStatus(c *gin.Context) { knownTicket := c.MustGet("KnownTicket").(bool) if !knownTicket { - log.Warnf("%s: Unknown ticket from %s", funcName, c.ClientIP()) + log.Warnf("%s: Unknown ticket (clientIP=%s)", funcName, c.ClientIP()) sendError(errUnknownTicket, c) return } var ticketStatusRequest TicketStatusRequest if err := c.ShouldBindJSON(&ticketStatusRequest); err != nil { - log.Warnf("%s: Bad request from %s: %v", funcName, c.ClientIP(), err) + log.Warnf("%s: Bad request (clientIP=%s): %v", funcName, c.ClientIP(), err) sendErrorWithMsg(err.Error(), errBadRequest, c) return }