Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Estimated earnings and Ad notifications are not updating for users #11952

Closed
tmancey opened this issue Oct 1, 2020 · 2 comments · Fixed by brave/brave-core#6758
Closed

Estimated earnings and Ad notifications are not updating for users #11952

tmancey opened this issue Oct 1, 2020 · 2 comments · Fixed by brave/brave-core#6758

Comments

@tmancey
Copy link
Contributor

tmancey commented Oct 1, 2020

Description

Estimated earnings and Ad notifications are not updating for users

Steps to Reproduce

  1. Join Rewards
  2. View ad notifications to deplete unblinded token pool to 20 tokens
  3. Restart browser
  4. View an ad notification
  5. Quit browser before tokens are refilled (i.e. use bandwidth throttling to slowdown the internet connection)
  6. Launch browser

Actual result:

Tokens are refilled twice, see "Refill unblinded tokens" in the rewards log

Expected result:

Tokens should only be refilled once

Reproduces how often:

Easily reproduced

Brave version (brave://version info)

Version/Channel Information:

  • Can you reproduce this issue with the current release? Yes
  • Can you reproduce this issue with the beta channel? Yes
  • Can you reproduce this issue with the nightly channel? Yes

Other Additional Information:

  • Does the issue resolve itself when disabling Brave Shields? N/A
  • Does the issue resolve itself when disabling Brave Rewards? N/A
  • Is the issue reproducible on the latest version of Chrome? N/A

Miscellaneous Information:

@tmancey tmancey added bug priority/P1 A very extremely bad problem. We might push a hotfix for it. QA/Yes release-notes/include feature/ads OS/Desktop labels Oct 1, 2020
@tmancey tmancey self-assigned this Oct 1, 2020
@tmancey tmancey added this to the 1.17.x - Nightly milestone Oct 5, 2020
@GeetaSarvadnya
Copy link

GeetaSarvadnya commented Oct 14, 2020

Verification passed using


Brave | 1.15.74 Chromium: 86.0.4240.80 (Official Build) (64-bit)
-- | --
Revision | 7ed88b53bda45a2d19efb4f8706dd6b6cad0d3af-refs/branch-heads/4240@{#1183}
OS | Windows 10 OS Version 1903 (Build 18362.1082)

Confirm unblinded tokens are refilled if we have less than 10 unblinded tokens when triggering an event to server an ad notification
Confirm failed confirmations are retried after attempting to download the catalog
Confirm ad rewards are reconciled upon browser launch
Confirm ad rewards are reconciled after restoring a wallet
Confirm ad rewards are reconciled after redeeming unblinded payment tokens
Confirm ad rewards are reconciled after claiming an ad promotion

Confirm unblinded tokens are refilled if we have less than 10 unblinded tokens when triggering an event to serve an ad notification
[16484:19608:1014/132234.372:VERBOSE2:ads_impl.cc(1166)] You do not have enough unblinded tokens
[16484:19608:1014/132234.372:VERBOSE1:ads_impl.cc(869)] Ad notification not shown: Not allowed based on history
Confirm failed confirmations are retried after attempting to download the catalog

Viewed an ad, enabled Charles re-write rule to make confirmation fail, then dismissed the ad to create a failed confirmation:

[18632:7860:1014/152837.753:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[18632:7860:1014/152837.756:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[18632:7860:1014/152837.757:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/2fa49d0b-78cb-4863-be23-c5d34cae0811/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[18632:7860:1014/152837.758:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 6 minutes, 24 seconds at 3:34 PM
[18632:7860:1014/152838.115:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/2fa49d0b-78cb-4863-be23-c5d34cae0811/paymentToken
[18632:7860:1014/152838.116:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/2fa49d0b-78cb-4863-be23-c5d34cae0811/paymentToken
[18632:7860:1014/152838.117:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[18632:7860:1014/152838.124:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/2fa49d0b-78cb-4863-be23-c5d34cae0811/paymentToken
  Response Status Code: 503
  Response: {"id":"2fa49d0b-78cb-4863-be23-c5d34cae0811","createdAt":"2020-10-14T09:57:16.661Z","type":"view","modifiedAt":"2020-10-14T09:57:16.691Z","creativeInstanceId":"9c57d4ba-c518-4f12-a156-8d682bc2d44d","paymentToken":{"publicKey":"bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=","batchProof":"sLk08T+Vxj4ZEHuJpyA7777fcnvNHq9BA65QyYj9Mw9bj8xNlVR2Q+4QhAKjK1Xsq34Pi8jepL7nplnQyBLHCQ==","signedTokens":["uFilWqC/k6j1GdRaUM39On6YmlIq73lIPbhXlb1uLl0="]}}
[18632:7860:1014/152838.125:VERBOSE1:redeem_unblinded_token.cc(187)] Failed to fetch payment token
[18632:7860:1014/152838.134:VERBOSE1:ads_impl.cc(1465)] Failed to redeem unblinded token with confirmation id 2fa49d0b-78cb-4863-be23-c5d34cae0811, creative instance id 9c57d4ba-c518-4f12-a156-8d682bc2d44d and view
[18632:7860:1014/152838.134:VERBOSE1:confirmations.cc(164)] Added confirmation id 2fa49d0b-78cb-4863-be23-c5d34cae0811, creative instance id 9c57d4ba-c518-4f12-a156-8d682bc2d44d and view to the confirmations queue

Closed browser, disabled rewrite rule, relaunched browser. Confirmed after catalog was downloaded, the failed confirmations for retry were scheduled:

[17596:21472:1014/153535.492:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
[17596:21472:1014/153535.500:VERBOSE1:get_catalog.cc(112)] Parsing catalog
[17596:21472:1014/153535.508:VERBOSE1:get_catalog.cc(130)] Generating bundle
[17596:21472:1014/153535.508:VERBOSE1:bundle.cc(208)] creative set id 7be431a0-c6e4-4ca6-bcac-672e77294b7d has no entries
[17596:21472:1014/153535.512:VERBOSE1:bundle.cc(208)] creative set id 486d1bbe-e460-474e-ac26-d554cb1a21d4 has no entries
[17596:21472:1014/153535.515:VERBOSE1:bundle.cc(208)] creative set id 175bc3ca-50f0-4749-bfc8-c7ff7482de0f has no entries
[17596:21472:1014/153535.522:VERBOSE1:bundle.cc(208)] creative set id 2b67d6ee-e6d1-4d4e-a1b9-6be11a60c11d has no entries
[17596:21472:1014/153535.523:VERBOSE1:get_catalog.cc(138)] Successfully generated bundle
[17596:21472:1014/153535.525:VERBOSE1:confirmations.cc(50)] SetCatalogIssuers:
[17596:21472:1014/153535.533:VERBOSE1:confirmations.cc(51)]   Public key: crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=
[17596:21472:1014/153535.534:VERBOSE1:confirmations.cc(52)]   Issuers:
[17596:21472:1014/153535.542:VERBOSE1:confirmations.cc(55)]     Name: 0.01BAT
[17596:21472:1014/153535.543:VERBOSE1:confirmations.cc(56)]     Public key: JiwFR2EU/Adf1lgox+xqOVPuc6a/rxdy/LguFG5eaXg=
[17596:21472:1014/153535.545:VERBOSE1:confirmations.cc(55)]     Name: 0.025BAT
[17596:21472:1014/153535.545:VERBOSE1:confirmations.cc(56)]     Public key: CrQLMWmUuYog6Q93nScS8Lo1HHSex8WM2Qxij7qhjkQ=
[17596:21472:1014/153535.553:VERBOSE1:confirmations.cc(55)]     Name: 0.15BAT
[17596:21472:1014/153535.553:VERBOSE1:confirmations.cc(56)]     Public key: iJcG3AkH1sgl+5YCZuo+4Q/7aeBOnYyntkIUXeMbDCs=
[17596:21472:1014/153535.553:VERBOSE1:confirmations.cc(55)]     Name: 0.20BAT
[17596:21472:1014/153535.555:VERBOSE1:confirmations.cc(56)]     Public key: VihGXGoiQ5Fjxe4SrskIVMcmERa1LoAgvhFxxfLmNEI=
[17596:21472:1014/153535.556:VERBOSE1:confirmations.cc(55)]     Name: 0.3BAT
[17596:21472:1014/153535.565:VERBOSE1:confirmations.cc(56)]     Public key: 6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA=
[17596:21472:1014/153535.567:VERBOSE1:confirmations.cc(55)]     Name: 0.25BAT
[17596:21472:1014/153535.567:VERBOSE1:confirmations.cc(56)]     Public key: YOIEGq4joK7rtkWdcNdNNGT5xlU/KIrri4AX19qwZW4=
[17596:21472:1014/153535.574:VERBOSE1:confirmations.cc(55)]     Name: 0BAT
[17596:21472:1014/153535.575:VERBOSE1:confirmations.cc(56)]     Public key: lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=
[17596:21472:1014/153535.577:VERBOSE1:confirmations.cc(55)]     Name: 0.05BAT
[17596:21472:1014/153535.578:VERBOSE1:confirmations.cc(56)]     Public key: bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=
[17596:21472:1014/153535.579:VERBOSE1:confirmations.cc(55)]     Name: 0.10BAT
[17596:21472:1014/153535.586:VERBOSE1:confirmations.cc(56)]     Public key: aDD4SJmIj2xwdA6D00K1dopTg90oOFpwd2iiK8bqqlQ=
[17596:21472:1014/153535.586:VERBOSE1:refill_unblinded_tokens.cc(64)] No need to refill unblinded tokens as we already have 48 unblinded tokens which is above the minimum threshold of 20
[17596:21472:1014/153535.587:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 10 minutes, 42 seconds at 3:46 PM

Confirmed at expected time (0 hours, 10 minutes, 42 seconds at 3:46 PM) from logs, the failed confirmation was retried successfully:

[8688:6284:1014/161110.361:VERBOSE1:confirmations.cc(219)] Removed confirmation id 908bc92e-bf55-4b42-b7a9-74dc42b8e96c, creative instance id a0d15395-1fc0-4616-83ff-8d3b9e1e7a5a and dismiss from the confirmations queue
[8688:6284:1014/161110.362:VERBOSE1:redeem_unblinded_token.cc(88)] Redeem token
[8688:6284:1014/161110.367:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[8688:6284:1014/161110.372:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[8688:6284:1014/161110.374:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/908bc92e-bf55-4b42-b7a9-74dc42b8e96c/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[8688:6284:1014/161110.375:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 7 minutes, 40 seconds at 4:18 PM
[8688:6284:1014/161110.414:VERBOSE1:ads_impl.cc(332)] Browser state changed to unidle
[8688:6284:1014/161110.416:INFO:notification_helper_win.cc(166)] Focus Assist is disabled
[8688:6284:1014/161110.425:INFO:notification_helper_win.cc(203)] Notifications are enabled
[8688:6284:1014/161110.427:VERBOSE1:ads_impl.cc(869)] Ad notification not shown: Not in foreground
[8688:6284:1014/161110.832:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/908bc92e-bf55-4b42-b7a9-74dc42b8e96c/paymentToken
[8688:6284:1014/161110.833:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/908bc92e-bf55-4b42-b7a9-74dc42b8e96c/paymentToken
[8688:6284:1014/161110.834:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[8688:6284:1014/161110.842:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/908bc92e-bf55-4b42-b7a9-74dc42b8e96c/paymentToken
  Response Status Code: 200
  Response: {"id":"908bc92e-bf55-4b42-b7a9-74dc42b8e96c","createdAt":"2020-10-14T10:31:41.059Z","type":"dismiss","modifiedAt":"2020-10-14T10:31:41.088Z","creativeInstanceId":"a0d15395-1fc0-4616-83ff-8d3b9e1e7a5a","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"M0g2BOF5FXXiicTFuKZvg7b6nFvBUrlDeemTvRAI/g1BrPOOZ6DlAv7ArpCnaB/A33993VjLqCkoaxyI5IXBDg==","signedTokens":["LmaJQ1HgSLoBOWiAovtwQPURMUdyppHSvt11t1vYsUU="]}}
[8688:6284:1014/161110.843:VERBOSE1:redeem_unblinded_token.cc(335)] Added 1 unblinded payment token with an estimated redemption value of 0 BAT, you now have 2 unblinded payment tokens
[8688:6284:1014/161110.845:VERBOSE1:ads_impl.cc(1457)] Successfully redeemed unblinded token with confirmation id 908bc92e-bf55-4b42-b7a9-74dc42b8e96c, creative instance id a0d15395-1fc0-4616-83ff-8d3b9e1e7a5a and dismiss
Confirm ad rewards are reconciled upon browser launch
[20620:4404:1014/140913.698:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[20620:4404:1014/140913.698:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=92ac46f4-608c-4579-864f-8da83ce6a597
  Response Status Code: 204
  Response: 
[20620:4404:1014/140913.698:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards
Confirm ad rewards are reconciled after restoring a wallet
[21452:16080:1014/141154.946:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[21452:16080:1014/141154.946:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=42e2a46d-26d7-4ddb-a891-a33a3cc7f67d
  Response Status Code: 204
  Response: 
[21452:16080:1014/141154.946:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards

Confirm ad rewards are reconciled after redeeming unblinded payment tokens
[2368:12116:1015/160059.342:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[2368:12116:1015/160059.348:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/c026bb6c-93e5-4895-b2b7-005dafc2a1cf
  Response Status Code: 200
  Response: {"status":"ok"}
[2368:12116:1015/160059.361:VERBOSE1:ads_impl.cc(1469)] Successfully redeemed unblinded payment tokens
[2368:12116:1015/160059.376:VERBOSE1:ad_rewards.cc(158)] Reconcile ad rewards
[2368:12116:1015/160059.379:VERBOSE1:ad_rewards.cc(166)] GetPayments
[2368:12116:1015/160059.380:VERBOSE2:ad_rewards.cc(167)] GET /v1/confirmation/payment/{payment_id}
[2368:12116:1015/160059.389:VERBOSE5:ad_rewards.cc(171)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/c026bb6c-93e5-4895-b2b7-005dafc2a1cf
  Method: BraveAdsUrlRequestMethod::GET
[2368:12116:1015/160059.778:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/payment/c026bb6c-93e5-4895-b2b7-005dafc2a1cf
[2368:12116:1015/160059.779:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/payment/c026bb6c-93e5-4895-b2b7-005dafc2a1cf
[2368:12116:1015/160059.790:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[2368:12116:1015/160059.793:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/c026bb6c-93e5-4895-b2b7-005dafc2a1cf
  Response Status Code: 200
  Response: [{"month":"2020-10","transactionCount":"1","balance":"0.05"}]

[16548:20708:1014/145746.307:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[16548:20708:1014/145746.308:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=c026bb6c-93e5-4895-b2b7-005dafc2a1cf
  Response Status Code: 204
  Response:
[16548:20708:1014/145746.315:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards
Confirm ad rewards are reconciled after claiming an ad promotion
[13852:20692:1014/151258.530:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[13852:20692:1014/151258.530:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=42ae780b-f1fb-4e95-a1d9-d066a3c045a2
  Response Status Code: 204
  Response: 
[13852:20692:1014/151258.530:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards

[21872:21072:1014/151611.815:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/promotions/ads/grants/summary?paymentId=3f2cc01a-4bb1-475b-9132-68e3c1f3739e
[21872:21072:1014/151611.818:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/promotions/ads/grants/summary?paymentId=3f2cc01a-4bb1-475b-9132-68e3c1f3739e
[21872:21072:1014/151611.819:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[21872:21072:1014/151611.819:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=3f2cc01a-4bb1-475b-9132-68e3c1f3739e
  Response Status Code: 200
  Response: {"amount":"20","earnings":"20","lastClaim":"2020-07-28T18:17:06.793378Z","type":"ads"}

[21872:21072:1014/151611.819:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards


Verification passed on

Brave 1.15.74 Chromium: 86.0.4240.80 (Oficjalna wersja) (64-bitowa)
Wersja 7ed88b53bda45a2d19efb4f8706dd6b6cad0d3af-refs/branch-heads/4240@{#1183}
System operacyjny Windows 7 Service Pack 1 (Build 7601.24544)
Verified catalog is downloaded upon browser launch
[4764:4772:1014/105548.641:VERBOSE1:get_catalog.cc(58)] Download catalog
[4764:4772:1014/105548.641:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[4764:4772:1014/105548.641:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[4764:4772:1014/105549.578:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
Verified Confirm catalog is downloaded every ~2 hours

Verified catalog is scheduled to be downloaded

[8684:6632:1014/110333.151:VERBOSE1:get_catalog.cc(186)] Download catalog in 2 godziny, 59 minut i 59 sekund at 14:03

Verified on staging that catalog is downloaded at the appointed hour:

[3716:1284:1014/112750.994:VERBOSE1:get_catalog.cc(186)] Download catalog in 0 godzin, 1 minuta i 30 sekund at 11:29

[3716:1284:1014/112920.999:VERBOSE1:get_catalog.cc(58)] Download catalog
[3716:1284:1014/112920.999:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3716:1284:1014/112920.999:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3716:1284:1014/112921.091:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog

Verified catalog download is not started if currently retrying a previously failed download
[3616:8068:1014/122032.266:VERBOSE1:get_catalog.cc(58)] Download catalog
[3616:8068:1014/122032.266:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3616:8068:1014/122032.266:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3616:8068:1014/122033.254:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[3616:8068:1014/122033.254:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 godzin, 1 minuta i 6 sekund at 12:21
[3616:8068:1014/122139.257:VERBOSE1:get_catalog.cc(172)] Retry downloading catalog
[3616:8068:1014/122139.257:VERBOSE1:get_catalog.cc(58)] Download catalog
[3616:8068:1014/122139.257:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3616:8068:1014/122139.257:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3616:8068:1014/122139.302:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[3616:8068:1014/122139.302:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 godzin, 0 minut i 3 sekundy at 12:21
[3616:8068:1014/122142.302:VERBOSE1:get_catalog.cc(172)] Retry downloading catalog
[3616:8068:1014/122142.302:VERBOSE1:get_catalog.cc(58)] Download catalog
[3616:8068:1014/122142.302:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3616:8068:1014/122142.302:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3616:8068:1014/122142.375:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[3616:8068:1014/122142.376:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 godzin, 5 minut i 33 sekundy at 12:27
[3616:8068:1014/122715.392:VERBOSE1:get_catalog.cc(172)] Retry downloading catalog
[3616:8068:1014/122715.392:VERBOSE1:get_catalog.cc(58)] Download catalog
[3616:8068:1014/122715.392:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3616:8068:1014/122715.392:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3616:8068:1014/122715.646:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[3616:8068:1014/122715.646:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 godzin, 3 minuty i 44 sekundy at 12:30
Verified Confirm unblinded payment tokens are redeemed ~24 hours
[3048:6260:1014/125111.778:VERBOSE1:redeem_unblinded_payment_tokens.cc(71)] Redeem unblinded payment tokens on piątek, 16 października 2020 04:37:03
Verified unblinded payment tokens redemption is not started if currently retrying a previously failed download

Verified Redeem unblinded payment tokens on is not shown during retrying

[592:6980:1014/142148.002:VERBOSE1:redeem_unblinded_payment_tokens.cc(79)] RedeemUnblindedPaymentTokens
[592:6980:1014/142148.002:VERBOSE2:redeem_unblinded_payment_tokens.cc(87)] PUT /v1/confirmation/payment/{payment_id}
[592:6980:1014/142148.002:VERBOSE5:redeem_unblinded_payment_tokens.cc(96)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/41141a4f-1192-4e68-b214-c117f3b79323
  Content: {"payload":"{\"paymentId\":\"41141a4f-1192-4e68-b214-c117f3b79323\"}","paymentCredentials":[{"credential":{"signature":"G/mhYsBpa46qWHfnZcx28VRIPja48gJoqQVnMK+oSNwuBDEMY2vs0iJrvA9kLSxr9er8NLaxxkiQ0zBf5/QHCw==","t":"nyr88Yg3aQ8HGjYzBAobA+wHUYhQuI+UectmllSqKE+rUivqkW550GZl5YpScPJxmvPSBjKCIY+CjiOP4jisbA=="},"publicKey":"6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA="},{"credential":{"signature":"lMaChzLoTjsjk6WC5veyMcOBaBQWXIdyjgWhyO/Wy7bHdT+78bFh6E0kY4kwCkEaIRdb6E0AVIA1izH3dxM9Jg==","t":"ROuB7eOUswu5ejIXXbrJTJq6IVcyrSHtQ9oN5nDCh6GePz62pqPQ34PbAgWQp2n1RgTPK1REdJlPa4DzZ1cM4Q=="},"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8="}]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::PUT
[592:6980:1014/142148.773:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[592:6980:1014/142148.773:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/41141a4f-1192-4e68-b214-c117f3b79323
  Response Status Code: 404
  Response: {"status":"ok"}
[592:6980:1014/142148.774:VERBOSE1:redeem_unblinded_payment_tokens.cc(113)] Failed to redeem unblinded payment tokens
[592:6980:1014/142148.774:VERBOSE1:ads_impl.cc(1475)] Failed to redeem unblinded payment tokens
[592:6980:1014/142148.774:VERBOSE1:redeem_unblinded_payment_tokens.cc(164)] Retry redeeming unblinded payment tokens in 0 godzin, 0 minut i 41 sekund at 14:22
[592:6980:1014/142229.777:VERBOSE1:ads_impl.cc(1479)] Retry redeeming unblinded payment tokens
[592:6980:1014/142229.777:VERBOSE1:redeem_unblinded_payment_tokens.cc(79)] RedeemUnblindedPaymentTokens
[592:6980:1014/142229.777:VERBOSE2:redeem_unblinded_payment_tokens.cc(87)] PUT /v1/confirmation/payment/{payment_id}
[592:6980:1014/142229.777:VERBOSE5:redeem_unblinded_payment_tokens.cc(96)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/41141a4f-1192-4e68-b214-c117f3b79323
  Content: {"payload":"{\"paymentId\":\"41141a4f-1192-4e68-b214-c117f3b79323\"}","paymentCredentials":[{"credential":{"signature":"G/mhYsBpa46qWHfnZcx28VRIPja48gJoqQVnMK+oSNwuBDEMY2vs0iJrvA9kLSxr9er8NLaxxkiQ0zBf5/QHCw==","t":"nyr88Yg3aQ8HGjYzBAobA+wHUYhQuI+UectmllSqKE+rUivqkW550GZl5YpScPJxmvPSBjKCIY+CjiOP4jisbA=="},"publicKey":"6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA="},{"credential":{"signature":"lMaChzLoTjsjk6WC5veyMcOBaBQWXIdyjgWhyO/Wy7bHdT+78bFh6E0kY4kwCkEaIRdb6E0AVIA1izH3dxM9Jg==","t":"ROuB7eOUswu5ejIXXbrJTJq6IVcyrSHtQ9oN5nDCh6GePz62pqPQ34PbAgWQp2n1RgTPK1REdJlPa4DzZ1cM4Q=="},"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8="}]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::PUT
[592:6980:1014/142230.559:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[592:6980:1014/142230.559:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/41141a4f-1192-4e68-b214-c117f3b79323
  Response Status Code: 404
  Response: {"status":"ok"}
[592:6980:1014/142230.559:VERBOSE1:redeem_unblinded_payment_tokens.cc(113)] Failed to redeem unblinded payment tokens
[592:6980:1014/142230.559:VERBOSE1:ads_impl.cc(1475)] Failed to redeem unblinded payment tokens
[592:6980:1014/142230.559:VERBOSE1:redeem_unblinded_payment_tokens.cc(164)] Retry redeeming unblinded payment tokens in 0 godzin, 0 minut i 11 sekund at 14:22
[592:6980:1014/142241.561:VERBOSE1:ads_impl.cc(1479)] Retry redeeming unblinded payment tokens
[592:6980:1014/142241.561:VERBOSE1:redeem_unblinded_payment_tokens.cc(79)] RedeemUnblindedPaymentTokens
[592:6980:1014/142241.561:VERBOSE2:redeem_unblinded_payment_tokens.cc(87)] PUT /v1/confirmation/payment/{payment_id}
[592:6980:1014/142241.561:VERBOSE5:redeem_unblinded_payment_tokens.cc(96)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/41141a4f-1192-4e68-b214-c117f3b79323
  Content: {"payload":"{\"paymentId\":\"41141a4f-1192-4e68-b214-c117f3b79323\"}","paymentCredentials":[{"credential":{"signature":"G/mhYsBpa46qWHfnZcx28VRIPja48gJoqQVnMK+oSNwuBDEMY2vs0iJrvA9kLSxr9er8NLaxxkiQ0zBf5/QHCw==","t":"nyr88Yg3aQ8HGjYzBAobA+wHUYhQuI+UectmllSqKE+rUivqkW550GZl5YpScPJxmvPSBjKCIY+CjiOP4jisbA=="},"publicKey":"6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA="},{"credential":{"signature":"lMaChzLoTjsjk6WC5veyMcOBaBQWXIdyjgWhyO/Wy7bHdT+78bFh6E0kY4kwCkEaIRdb6E0AVIA1izH3dxM9Jg==","t":"ROuB7eOUswu5ejIXXbrJTJq6IVcyrSHtQ9oN5nDCh6GePz62pqPQ34PbAgWQp2n1RgTPK1REdJlPa4DzZ1cM4Q=="},"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8="}]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::PUT
[592:6980:1014/142242.296:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[592:6980:1014/142242.296:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/41141a4f-1192-4e68-b214-c117f3b79323
  Response Status Code: 404
  Response: {"status":"ok"}
[592:6980:1014/142242.296:VERBOSE1:redeem_unblinded_payment_tokens.cc(113)] Failed to redeem unblinded payment tokens
[592:6980:1014/142242.296:VERBOSE1:ads_impl.cc(1475)] Failed to redeem unblinded payment tokens
[592:6980:1014/142242.297:VERBOSE1:redeem_unblinded_payment_tokens.cc(164)] Retry redeeming unblinded payment tokens in 0 godzin, 4 minuty i 39 sekund at 14:27
Confirm failed confirmations are retried when an unblinded token redemption fails

Viewed an ad, enabled Charles re-write rule to make confirmation fail, then dismissed the ad to create a failed confirmation:

[7408:5440:1014/144721.942:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[7408:5440:1014/144721.942:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/7395ba17-2285-46ed-aa9b-fd437d3d7db7/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiMnY5c1UzY3VzMHhERWxPRHljeEVJODVKMmdFdHpUWk1UOE1yU0NjMzNSaz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlBMXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjZjZjA3NGZmLTlkYmQtNDUzOS1iZWE3LThmMTA2MWEwMTVkMlwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIndpbmRvd3NcIixcInR5cGVcIjpcImRpc21pc3NcIn0iLCJzaWduYXR1cmUiOiI5Y1pjL1JrUXowM096cnI3MUpKcGZ2VFA4YTRscFlmYy9kM0VEUDNIVFBFNVcxTHd4dWllcG9SSkJhdU5qZThPR0gwZ3VVYmlMbUV2UjRLcXFzY2FDUT09IiwidCI6InZKWElycmRNL2doQnZTS05WR2U0RnkxTjRLT01PcG5TTGxETmwvdllvM0UyQXJyd3RNMHFReEFRUjYxTXh1d2wwQzJoUGhsSllZdjMvVzZ5RE5uNGxnPT0ifQ==
  Response Status Code: 201
  Response: {"id":"7395ba17-2285-46ed-aa9b-fd437d3d7db7","payload":{},"createdAt":"2020-10-14T12:47:39.118Z","type":"dismiss","modifiedAt":"2020-10-14T12:47:39.118Z","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2"}
[7408:5440:1014/144721.942:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[7408:5440:1014/144721.942:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[7408:5440:1014/144721.942:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/7395ba17-2285-46ed-aa9b-fd437d3d7db7/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[7408:5440:1014/144722.213:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[7408:5440:1014/144722.214:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/7395ba17-2285-46ed-aa9b-fd437d3d7db7/paymentToken
  Response Status Code: 404
  Response: {"id":"7395ba17-2285-46ed-aa9b-fd437d3d7db7","createdAt":"2020-10-14T12:47:39.118Z","type":"dismiss","modifiedAt":"2020-10-14T12:47:39.149Z","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"rgY2zbmephSFSajnM9RkKz3u49k8uVLSFUGoEyZb6Q0BNThYTSZLZ0TSuBFipZLZ26h213CJ5wt0MNOw++SyCw==","signedTokens":["8hCqg9pJh/A+6Q+rlvOpsxcb6N2FM77r3s8mu88EnUI="]}}
[7408:5440:1014/144722.214:VERBOSE1:redeem_unblinded_token.cc(165)] Confirmation not found
[7408:5440:1014/144722.214:VERBOSE1:ads_impl.cc(1465)] Failed to redeem unblinded token with confirmation id 7395ba17-2285-46ed-aa9b-fd437d3d7db7, creative instance id 6cf074ff-9dbd-4539-bea7-8f1061a015d2 and dismiss
[7408:5440:1014/144722.214:VERBOSE1:confirmations.cc(164)] Added confirmation id 4c6984e1-f27e-4fb4-8593-87e146318a71, creative instance id 6cf074ff-9dbd-4539-bea7-8f1061a015d2 and dismiss to the confirmations queue

Disabled Charles rewrite rule and waited until the time mentioned in the logs, confirmed previously failed confirmation was retried and successful:

[7408:5440:1014/145131.506:VERBOSE1:confirmations.cc(219)] Removed confirmation id 957f73c3-3fd1-4eec-8296-0ef8431c179a, creative instance id 6cf074ff-9dbd-4539-bea7-8f1061a015d2 and dismiss from the confirmations queue
[7408:5440:1014/145131.507:VERBOSE1:redeem_unblinded_token.cc(88)] Redeem token
[7408:5440:1014/145131.507:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[7408:5440:1014/145131.507:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[7408:5440:1014/145131.507:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/957f73c3-3fd1-4eec-8296-0ef8431c179a/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwibkhPeG5HTm9nb2g0aEV5aTRYYlFKVy9mSDBSRWJaRGlYckM4aWxJd3Rndz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlBMXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjZjZjA3NGZmLTlkYmQtNDUzOS1iZWE3LThmMTA2MWEwMTVkMlwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIndpbmRvd3NcIixcInR5cGVcIjpcImRpc21pc3NcIn0iLCJzaWduYXR1cmUiOiJwUUJXWUdZc3B0azlwbjN2Nm5ITmhSM1M0KzhCajczZWFFNXdhbnEzd3pmenpycGorU1JJZU5iMmhiSy9la0RmRWRhL1g3OGhVd2F5YnpZM2FET3N6Zz09IiwidCI6Iko3SWlwMy9JLzM4YUFhMzllT295NVErSDM4NjJEWldtOXFGbEltN2R6dFZnejcxeTBGbmIzak0xV0hlbXh1UWUrZlZrNFJoSHhnakZJLzN2MWpyS0ZnPT0ifQ==
  Content: {"blindedPaymentToken":"nHOxnGNogoh4hEyi4XbQJW/fH0REbZDiXrC8ilIwtgw=","buildChannel":"release","countryCode":"PL","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2","payload":{},"platform":"windows","type":"dismiss"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[7408:5440:1014/145131.507:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 godzin, 0 minut i 8 sekund at 14:51
[7408:5440:1014/145132.346:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[7408:5440:1014/145132.346:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/957f73c3-3fd1-4eec-8296-0ef8431c179a/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwibkhPeG5HTm9nb2g0aEV5aTRYYlFKVy9mSDBSRWJaRGlYckM4aWxJd3Rndz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlBMXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjZjZjA3NGZmLTlkYmQtNDUzOS1iZWE3LThmMTA2MWEwMTVkMlwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIndpbmRvd3NcIixcInR5cGVcIjpcImRpc21pc3NcIn0iLCJzaWduYXR1cmUiOiJwUUJXWUdZc3B0azlwbjN2Nm5ITmhSM1M0KzhCajczZWFFNXdhbnEzd3pmenpycGorU1JJZU5iMmhiSy9la0RmRWRhL1g3OGhVd2F5YnpZM2FET3N6Zz09IiwidCI6Iko3SWlwMy9JLzM4YUFhMzllT295NVErSDM4NjJEWldtOXFGbEltN2R6dFZnejcxeTBGbmIzak0xV0hlbXh1UWUrZlZrNFJoSHhnakZJLzN2MWpyS0ZnPT0ifQ==
  Response Status Code: 201
  Response: {"id":"957f73c3-3fd1-4eec-8296-0ef8431c179a","payload":{},"createdAt":"2020-10-14T12:51:49.508Z","type":"dismiss","modifiedAt":"2020-10-14T12:51:49.508Z","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2"}
[7408:5440:1014/145132.346:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[7408:5440:1014/145132.346:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[7408:5440:1014/145132.346:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/957f73c3-3fd1-4eec-8296-0ef8431c179a/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[7408:5440:1014/145132.617:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[7408:5440:1014/145132.617:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/957f73c3-3fd1-4eec-8296-0ef8431c179a/paymentToken
  Response Status Code: 200
  Response: {"id":"957f73c3-3fd1-4eec-8296-0ef8431c179a","createdAt":"2020-10-14T12:51:49.508Z","type":"dismiss","modifiedAt":"2020-10-14T12:51:49.541Z","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"OXw2Z4gL/oDnDaf3oSIIkkR0ehNmLF/pkAInqEszlwqfwFu0zbmkQYwx0ODDeSeO75XhZcWJDk6JFyWINYkUCQ==","signedTokens":["7A6GbWLfZyGA58l0pQtsMkwNxBOyCm1xDRRnbyMPfE4="]}}
[7408:5440:1014/145132.618:VERBOSE1:redeem_unblinded_token.cc(335)] Added 1 unblinded payment token with an estimated redemption value of 0 BAT, you now have 2 unblinded payment tokens
[7408:5440:1014/145132.619:VERBOSE1:ads_impl.cc(1457)] Successfully redeemed unblinded token with confirmation id 957f73c3-3fd1-4eec-8296-0ef8431c179a, creative instance id 6cf074ff-9dbd-4539-bea7-8f1061a015d2 and dismiss
Confirm unblinded tokens are refilled to 50 if we are below the threshold after attempting to download the catalog

Enable Rewards, wait until everything is complete (catalog download, tokens fetched, etc). View an ad, dismiss ad. Enable Charles rewrite rule outlined in https://github.com/brave/internal/issues/731. Use +1/-1 on Ad history to use tokens so that you have less than 20 left:


[4992:4904:1014/152543.010:VERBOSE1:refill_unblinded_tokens.cc(91)] Refill unblinded tokens
[4992:4904:1014/152543.011:VERBOSE1:refill_unblinded_tokens.cc(101)] RequestSignedTokens
[4992:4904:1014/152543.011:VERBOSE2:refill_unblinded_tokens.cc(102)] POST /v1/confirmation/token/{payment_id}
[4992:4904:1014/152543.016:VERBOSE1:refill_unblinded_tokens.cc(340)] Generated and blinded 31 tokens
[4992:4904:1014/152543.019:VERBOSE5:refill_unblinded_tokens.cc(110)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Content: {"blindedTokens":["ONNY9ZwT0VUwgcFmePSZIIZMSQQD1kl4JuZYcxYLTR0=","0MrlXlewFTY5Y2QCWvuooQwavjwVjGhbi8CSKtqr3RI=","zH5psEjYlUoarEa5BEBWcJQ2fGtRYIJnzIg8xVEey0s=","pIvuVezFgnaf33JrFvpgzTkVB6e6JHhjHrXrh5/aA3E=","5EwDQD7fA2VDtOM3kowuM4rMDWvTJ4UHDLI9gQyrpDw=","ahTmltHM6kFlhAaxJxc2Sd8qJQnCOLGPGJrsh6XOHzw=","FrcFiVrSGw74dXwdfQCPFcpImI3tqECrVOmZCs6yxFc=","JoLF9zvHgC/wDNFFdF1p7BQDQaO5xFzG1oElD+D/JiM=","jt3+B9OTEKHZ4UDXmss1utz8KW+wSnl5mf+cuSf9rm8=","NC4Kl14dSwx+hvJNEZQ4GXatcOZWMlcOLhU2SG7+QFg=","9qR9DUpPRN/XvNrf0cUftbPRwEApMIUM2igKyGoO8Es=","ik7QS2pnmdmPbdzZRgwlv8HuTHaO1V5TOE4orjjWn1s=","lKM+KH//lRe8T5ndeX8mOg+vSFobSWJ48TDoznbVDwo=","IMPgmNZ4w5yOa+zTcRanTPPSFGzsFz9YZya3Nskqxng=","rEukFNy/6bqk6TEmXyGX20hm1ATRqeK83ezlZMX4TgY=","YFCWoazDwX8ki8Hwb4NO7mWCQlbBfoU+6/UA90liQTM=","hKNgeVwwX96JNDWm+nqnEh4Z3a8sAbe9A0EkGOk6jiI=","XkLs1oWtumy/lGPIfThfYmOpBaTXaWHQyIfBP8zsQio=","5JlAYm4W5S5ke7JAXRN6G10+M6B3sGKFfqCIPqfOlg8=","KHRuUl0D6ig22lnlCwWGcoK6SzQJdI5yRKKR1xsUNEE=","YigYjDZBFmbYqlBw/nRaVnBgV8b3wqSksguEOkzaDFo=","lCDTUvy9os6it2KYvJsYC50yRk3Vm97/iWq/UGS+hhE=","Bl/WDyi6K1oNZgQqSWtExX0VkhjV7X8AD4EA3Kof0C4=","rCkkBk/NoYPxnxldkUQ9f5xnxxzcOC2RZnuKhN6MOQE=","LC7Sj2y6o6Bn2unCelpjLHd/GinUxIIcAmhVqaPhKyE=","SkiUSrwwK5RomB+GTcmSpxELGYQLDsGnt37UoeEcv0E=","iE8NgZHikkA7RPtWxAJ69vDzLjnoRJzVzu1u1MdIWwo=","7nqQOWKEjfNySVxHAqscxrDcL+2Qw3K3+hc8uslltR8=","HuuvNlmEdl/UGezbalXHSk7nlMREAxpvanG55r1aOks=","RpymoTdqe2HC+lBP79iJi9rTm9HvdLN8BhG8bmiMfz8=","vtvEmFCW5rI0Vk3dmaQZksYtJY8xxO64JdMFEetoFUs="]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4992:4904:1014/152543.020:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 godzin, 5 minut i 55 sekund at 15:31
[4992:4904:1014/152543.024:VERBOSE1:get_catalog.cc(186)] Download catalog in 0 godzin, 8 minut i 12 sekund at 15:33
[4992:4904:1014/152543.271:VERBOSE3:bundle.cc(257)] Successfully saved creative ad notifications state
[4992:4904:1014/152543.271:VERBOSE3:bundle.cc(267)] Successfully purged expired ad conversions
[4992:4904:1014/152543.287:VERBOSE1:refill_unblinded_tokens.cc(120)] OnRequestSignedTokens
[4992:4904:1014/152543.287:VERBOSE6:refill_unblinded_tokens.cc(122)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Response Status Code: 400
  Response: {"nonce":"b266f8ee-6d14-4870-8727-5b96979cb4b8"}
[4992:4904:1014/152543.287:VERBOSE1:refill_unblinded_tokens.cc(126)] Failed to request signed tokens
[4992:4904:1014/152543.287:VERBOSE1:ads_impl.cc(1487)] Failed to refill unblinded tokens
[4992:4904:1014/152543.287:VERBOSE1:refill_unblinded_tokens.cc(305)] Retry refilling unblinded tokens in 0 godzin, 0 minut i 11 sekund at 15:25

Close browser. Disable Charles rewrite rule. Relaunch browser. Confirm after catalog is downloaded that tokens are refilled successfully:

[5100:2772:1014/152954.701:VERBOSE1:get_catalog.cc(58)] Download catalog
[5100:2772:1014/152954.701:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[5100:2772:1014/152954.701:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[5100:2772:1014/152955.059:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
[5100:2772:1014/152955.059:VERBOSE1:get_catalog.cc(112)] Parsing catalog
[5100:2772:1014/152955.060:VERBOSE1:get_catalog.cc(130)] Generating bundle
[5100:2772:1014/152955.060:VERBOSE3:bundle.cc(277)] Successfully saved ad conversions state
[5100:2772:1014/152955.060:VERBOSE1:get_catalog.cc(138)] Successfully generated bundle
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(50)] SetCatalogIssuers:
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(51)]   Public key: crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(52)]   Issuers:
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(55)]     Name: 0.01BAT
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(56)]     Public key: JiwFR2EU/Adf1lgox+xqOVPuc6a/rxdy/LguFG5eaXg=
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(55)]     Name: 0.025BAT
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(56)]     Public key: CrQLMWmUuYog6Q93nScS8Lo1HHSex8WM2Qxij7qhjkQ=
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(55)]     Name: 0.15BAT
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(56)]     Public key: iJcG3AkH1sgl+5YCZuo+4Q/7aeBOnYyntkIUXeMbDCs=
[5100:2772:1014/152955.060:VERBOSE1:confirmations.cc(55)]     Name: 0.20BAT
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(56)]     Public key: VihGXGoiQ5Fjxe4SrskIVMcmERa1LoAgvhFxxfLmNEI=
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(55)]     Name: 0.3BAT
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(56)]     Public key: 6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA=
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(55)]     Name: 0.25BAT
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(56)]     Public key: YOIEGq4joK7rtkWdcNdNNGT5xlU/KIrri4AX19qwZW4=
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(55)]     Name: 0BAT
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(56)]     Public key: lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(55)]     Name: 0.05BAT
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(56)]     Public key: bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(55)]     Name: 0.10BAT
[5100:2772:1014/152955.061:VERBOSE1:confirmations.cc(56)]     Public key: aDD4SJmIj2xwdA6D00K1dopTg90oOFpwd2iiK8bqqlQ=
[5100:2772:1014/152955.061:VERBOSE1:refill_unblinded_tokens.cc(91)] Refill unblinded tokens
[5100:2772:1014/152955.062:VERBOSE1:refill_unblinded_tokens.cc(101)] RequestSignedTokens
[5100:2772:1014/152955.062:VERBOSE2:refill_unblinded_tokens.cc(102)] POST /v1/confirmation/token/{payment_id}
[5100:2772:1014/152955.066:VERBOSE1:refill_unblinded_tokens.cc(340)] Generated and blinded 31 tokens
[5100:2772:1014/152955.070:VERBOSE5:refill_unblinded_tokens.cc(110)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Content: {"blindedTokens":["AFJuE/TRsBpNveMhdmSwtROmwYfWzPrbf5s8pmUmmH4=","bH6UzrBW+xUKZF44d7YrdYYQAYZ3ytj0IN7JHaPXjCM=","klwbdmOL60COlvEHbaDTbfvRyLjdM23657L+8r0KKns=","MFvWq/JZz2oraj2V76Jklp34CvQf6GTj0DvD2Ob34As=","SlXODyLdqEpz0qeViKwyEvyNJvBPERm7itytg6WnDz0=","2GSAbCKMGg1i+UNuBb7dYauHg6I8Cf9tQWKHxWKp42k=","sOEqvpmYLEZH9ZBh2pJaN1R/aQTK3tOr495g5/hFeh4=","pPSsSUGDnixzE98JWLTn2IFUxoy7eIclflwM53o/XjM=","ts/FXypNFjzTUzAUtF09BvSQ2Qt2Ldc6zV9v5b+VxiY=","lPbiDG4YdwZ9s/3PYZkiyNjzrTpBjXK+KwWSwM6sXQM=","TNQ77KBDSMJq8LaXMpEnS8RjYM7HpGdACVtl3K2ovGI=","1PZFO7Yx9Bwe8VZxNpblJv3PBKm9bNqhAFzjTW/JnV4=","prQAJkHuGZCfdcvMLwHr2lzQWqCTsLaVQ4Ymtbg+lxk=","ApwhYO6wJayqaCH/BPWNrG5g4VFsw/7+8YOjI+ajJi4=","3Fdi8d/siZiLUxCuvuM2eYe4x/czf70hhTLTjliJb3w=","GokrROomv4UtUWgKFSC92hJXgW3i5U6d4jLWerIURkw=","EBSSY0/eKWChvTf5ia86vD0dpkA+BlimaOmuv51ofh4=","5PrBMzX3XjFr6DN9/R7ef5M4bg3QJ9RPwxHH0MMJaHc=","Hr8ZmLQ30keJC9zTgDXyBR1l1M3bYgLImPE6RrIinUw=","wL01WxgdbSq27GFJd3EXEoK8bXcezfKIKQG8ocZGJCM=","+pijRBITPyS2xTcS4me+5hClPraZtBxNJCTbd4bfpE0=","7qv1KfbZjYAZkH1JQ56tSnKV49UgZPjS2pRmZs5/VFo=","pKI1qYA2vv5FKAYNHfjfXYWr35uRsh4h4D5XeN3GEVI=","ttcJQxYjs+FlFOpEhvYewBQXdWUln8No5j79WUoPIAE=","CIz9k7O0ghhN1ZWifNd3QuaJG2brS/yOkyCm9pbNeQ8=","cAf5eZbfFWqYtfD8LoTDDEwMXhKp00AhISMmPHUWIXg=","srB5RIbAtkQVjfW2ngUAjnk/XvNaEhRJrHw6hbyNg3w=","XCqNJ4/2M/rake658EsPmzqTnZdvn4vri1qa0DEpz1I=","RDI+L30W89HLb8Ot3wxKaW+iXySwqZCC+adQq7Tc7A8=","oD3vjd0UsfU1df6YIUFHOWbk1v8KeCMi0LZJr7fvCHk=","rl6lQYnOV1PA+aLs4YOhejVRyoBg0m4fU/Z+52Co10I="]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[5100:2772:1014/152955.071:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 godzin, 1 minuta i 25 sekund at 15:31
[5100:2772:1014/152955.071:VERBOSE1:get_catalog.cc(186)] Download catalog in 0 godzin, 0 minut i 59 sekund at 15:30
[5100:2772:1014/152955.223:VERBOSE3:bundle.cc(257)] Successfully saved creative ad notifications state
[5100:2772:1014/152955.223:VERBOSE3:bundle.cc(267)] Successfully purged expired ad conversions
[5100:2772:1014/152955.279:VERBOSE3:get_catalog.cc(160)] Successfully saved catalog
[5100:2772:1014/152955.502:VERBOSE1:ads_impl.cc(310)] Browser window did enter background
[5100:2772:1014/152955.629:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[5100:2772:1014/152955.629:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Response Status Code: 200
  Response: [{"balance":"0","month":"2020-10","transactionCount":"0"}]
[5100:2772:1014/152955.629:VERBOSE1:ad_rewards.cc(201)] GetAdGrants
[5100:2772:1014/152955.629:VERBOSE2:ad_rewards.cc(202)] GET /v1/promotions/ads/grants/summary?paymentId={payment_id}
[5100:2772:1014/152955.629:VERBOSE5:ad_rewards.cc(206)] URL Request:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=3a9ef075-81a5-4d9d-b5f1-02c555084206
  Method: BraveAdsUrlRequestMethod::GET
[5100:2772:1014/152955.839:VERBOSE1:refill_unblinded_tokens.cc(120)] OnRequestSignedTokens
[5100:2772:1014/152955.839:VERBOSE6:refill_unblinded_tokens.cc(122)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Response Status Code: 201
  Response: {"nonce":"79e56b04-a2f1-45fe-a005-e7fff09c869b"}
[5100:2772:1014/152955.840:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[5100:2772:1014/152955.840:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[5100:2772:1014/152955.840:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206?nonce=79e56b04-a2f1-45fe-a005-e7fff09c869b
  Method: BraveAdsUrlRequestMethod::GET
[5100:2772:1014/152956.124:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[5100:2772:1014/152956.124:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206?nonce=79e56b04-a2f1-45fe-a005-e7fff09c869b
  Response Status Code: 200
  Response: {"batchProof":"OV+LL+Y2YwJymJgCSPX3Ljx7rESqB9y9Xqgx8eIKigC3BIecasRm1hova7ksWHrcRLh/U8g0JqRjrhibZMOzDA==","signedTokens":["OueSTT4D/q/dAi5wST8sA3y/2VT9SBW4Aqmr12qlGGo=","JoJBk2k9ABBtT8F6aVqjsKY4A/cOmkpMMlcb98UIByU=","Ln+Tjx1oJVUt6ouywmrKYfp/Anp/n5VBZ+yFQ5vV9Xw=","7o/qIjY48fNX6nxIXUth5Fm9dsxINc0mcyRCGT35Dng=","uPwwubTL5haQ1UNsBY4XZkx+V1vkpjw+0YmyZ11Pm2M=","4MfdWGuVrRxVp43zseZU/NA00CtGicokX9z7cXHrg2Y=","CCRl4peOlGAoHqhp2WFUFK8Bc4pbQqge6bkinbB620s=","GGEzvvVT944v9oXBRn5xj8uZ82hDkyAK1nHKS555pWM=","8PrIsOeggiMVHfOMjZ5rVoFql/3W+hk258a06UY1hSY=","EtBkUeeE79SiiHUzRy9z7gcYmX1jTNAzg8ZHdTRmlVA=","cNLYqyJKNkA5LL/zKi+LtdBQiHX/u9frZfNVD2/DeBI=","XI3/7p6DJZFtXcBMHD0PzJ4LBP9iJKG0aZIIbXpeP04=","BAtcDxv95Vl2gtpjs4tYJyZ9j9XRwek9OlsHiUO9M2U=","hOcKjV91ozGTHpOZcZlS3dAk0E5z4PkoxVtOhn44ESQ=","dKRFK47fa/k116ITWAqGdct00iOw7KcxxDSmrbVuKGM=","fI4Cfi1g+e3aLQw6tpJoFpXcl6AVPx3hc24SDQyqkno=","2OV/DLbIKrtiy9vQaQAoowKLv/PmT7o25BU1cdxjvjg=","aiavC+7lyaATnCyRUxXd+aFzWmLM6CBpJ12hMzspeWs=","MI3FeBgIIMS3E4rwbkoPzZQlVCgzGXXdg00JBFcvnXE=","rjsD8zUgd94LxbFSKQ21UhNoC+pJIygvFMyiw3kMWmk=","+HGczS3mCs+2OvQCK0JPhTev4xz72Go4NvJ+PkP52Gg=","HlkCxaQeYYYEJPNmvskLjMYK3O/0NtYk7O84t0nGTGM=","4q2UsuMDqofc1eAa/ztFN4zzu7SyB4erg7bnMAglZAw=","HIdHLgCA1G32QKiYQ3BpHsJPt43I8hdDjJCzMQb4hXQ=","gMu4DZYw36JALRkuMO1IDeU1rfxjwkJ5uSWVZe3IpSA=","qgjNJ442KU/E4vMWOZ/NGJeWmv91RRxSP9VkWMtiC1U=","eij2anQdr1Xb6Jw3h7XoOCUnmOmAlTOpbbBF8aNwRh4=","1IaSYyJ4qRblc9AkWrChdcJXgrU9nzVqR76ITGE6NnQ=","Ppoz/u2t3k5VnY3Jh3qMGNbk6YWxRppXvOSk8j4xzUQ=","GvBMxLl4EJP5vEPxiyDm75gSr0sK0gAxyOaE04Z0oyc=","KIjNuc3ttFO5Tax5I9xpjEUd/OICcu+1mQc55EOgHh8="],"publicKey":"crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw="}
[5100:2772:1014/152956.135:VERBOSE1:refill_unblinded_tokens.cc(266)] Added 31 unblinded tokens, you now have 50 unblinded tokens
Confirm unblinded tokens are refilled to 50 if we are below the threshold after redeeming an unblinded token

Enable Rewards, wait until everything is complete (catalog download, tokens fetched, etc). View an ad, dismiss ad. Use +1/-1 on Ad history to use tokens just until you have 20 left:

[5100:2772:1014/153727.344:VERBOSE1:refill_unblinded_tokens.cc(64)] No need to refill unblinded tokens as we already have 20 unblinded tokens which is above the minimum threshold of 20

Use the other (+1 or -1) button to get to 19 and confirm that tokens are refilled successfully:

[5100:2772:1014/153751.960:VERBOSE1:confirmations.cc(119)] Confirm ad:
  creativeInstanceId: 6cf074ff-9dbd-4539-bea7-8f1061a015d2
  creativeSetId: 175bc3ca-50f0-4749-bfc8-c7ff7482de0f
  confirmationType: downvote
[5100:2772:1014/153751.960:VERBOSE1:redeem_unblinded_token.cc(63)] Redeem token
[5100:2772:1014/153751.969:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[5100:2772:1014/153751.969:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[5100:2772:1014/153751.969:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ee3d3504-d6f3-4ab2-ab4a-78c0a76450cf/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiaURMVldTNUUyemhGSU4vVEZzTmZRMUFScSttWDFPQ3dZRkdxd2pvUlJnOD1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlBMXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjZjZjA3NGZmLTlkYmQtNDUzOS1iZWE3LThmMTA2MWEwMTVkMlwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIndpbmRvd3NcIixcInR5cGVcIjpcImRvd252b3RlXCJ9Iiwic2lnbmF0dXJlIjoiaFVBNVR4YXQ2MXdadlQ2OG1LRThGVTlyRm9yeURLYVdnbVVpRG10REJHVnhacUFJRklWK0t6bDlCQWhWQjBSNmJqRldCMnNyWElueW81alIzWUNyRnc9PSIsInQiOiJMdUZIM2hmNWtKV1pTNGE4MjNEZkR1YWNrckJYMEFidWl6eVY5OVpNN0M5VGx3Sy8vMWU0TlpETEcweXg4bjNyN0JHNDdCNi9HWWhNZVNjQmFkakJydz09In0=
  Content: {"blindedPaymentToken":"iDLVWS5E2zhFIN/TFsNfQ1ARq+mX1OCwYFGqwjoRRg8=","buildChannel":"release","countryCode":"PL","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2","payload":{},"platform":"windows","type":"downvote"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[5100:2772:1014/153751.969:VERBOSE1:refill_unblinded_tokens.cc(91)] Refill unblinded tokens
[5100:2772:1014/153751.969:VERBOSE1:refill_unblinded_tokens.cc(101)] RequestSignedTokens
[5100:2772:1014/153751.969:VERBOSE2:refill_unblinded_tokens.cc(102)] POST /v1/confirmation/token/{payment_id}
[5100:2772:1014/153751.969:VERBOSE1:refill_unblinded_tokens.cc(340)] Generated and blinded 31 tokens
[5100:2772:1014/153751.970:VERBOSE5:refill_unblinded_tokens.cc(110)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Content: {"blindedTokens":["QJtTSKftgt1t1Lgv6vUUid+kRV8Pb7Ds14e3yM1Q7m0=","rigdm4Xk3DCHcpYrDeTp+ZRYd1pqS0XlC1cBSHiqH2A=","UtqNPi04so8bxSw+QuOCglPqpIHujupcjpoLRgF88RY=","dNsEdW91IN8YCQL/QD8kcqUb9jVA1usdEYYnC1/+2jw=","vhpyDq7Lwq4WyoE8J/PNt9ZzeZKjbJC1mDDVBHfHCTM=","LN664pwunhD81SxVFu9VYPPiJ+a9lkpCeKaZ9a+Sri8=","oknQw+uivDAhSjJSAeMYcSqM+DUdK7gZ3a9wIWdH0nE=","4N457DjnM+mUmgjj/c1lccH4JepJOAoDadVeTlcOy2s=","vmLSvls73xjcf3FhA06XB3t66RTbVsVOCQuwuDQQDB8=","NOK1Nj8zye1Pof9o/pn2uTeSyR4tOWtqicW2+wF86Fg=","vJoPVpdIeDgEZSvz3QU6Ez1a0ARXGUyiwYL0Lzy5/Vk=","XhFONrg+MowkzyTvC63IN0g9JtKjvOi4BYFXxMOlDWA=","FvesHaW3YFu5/fHKAfwWJJbBG9AN74Ytaxm6w81zIVM=","6k8H+MKD6lgI4TyJ/bM4RdwzOuf4jnBpiNUfg2rhow8=","vgFqWU01EaC2npauWYjPSrVsAZLXYtpTAhcAiSz10B0=","eh2ZBh9V1dy7sUMd7aO4XZwpLNZRAtLYdQLqaLNiFwA=","dtN8mFmrZhrfSpvioN2iCgFwRmzwPJNni+I+3FfHsgw=","somhl1kIAYU3p3dzlWWGSYPqPnRqHqdZ9xgwVDWsX08=","EmVKupp8HIh+nQpigHRMBalFZLmcC8lcVpGR9i+KKV8=","GNl33xvmRgajjYLn9fDgzcs4TlMF8seR6FCHHizqinI=","0JuHUu5Hj4P3xm9zlyJJo4043CDsApGNSiADBkIvimw=","roKmhexn2SPwZhdg0GvbuxVSHQg9a7bp816BnoB1XAQ=","8lyBWfLdMXw8n3rKG/ne4eFDahyinJa60u93pm8JoR0=","mH524Ow4+kCyr+Rdqo4qjesyx7o9sPfQc8t9WEIc73k=","DCf0pV/yVt13pBmBm9aJqXQpC9oGTiarlBojOI1M9AA=","wHJM4XVrGAtm0EVrKFA0Jq6IZ4HlreSBd14mkuM0dio=","kvA3LdBdU1wMGa0X1/Z8A02aSykkZiXGYbfuTtsY1DY=","WChDD0UHMrRPhIMFUf7wApcUlJFz/VRG06ubJw5Iulg=","8KzwpGod1hUxPglcAAJtgakKlefxxuL3W9dHkoGcCkA=","xKVTIh+Ck75BRR7+DUDmeo4OF5K5/GfA/GPAYDLsNRU=","CpxcQhgOo7X5JSea9QnAZRQD8neo0EK7SS1ZZO2753E="]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[5100:2772:1014/153752.259:VERBOSE1:refill_unblinded_tokens.cc(120)] OnRequestSignedTokens
[5100:2772:1014/153752.259:VERBOSE6:refill_unblinded_tokens.cc(122)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206
  Response Status Code: 201
  Response: {"nonce":"d3be83a8-d865-4ec6-b2a8-a3fd189c2d43"}
[5100:2772:1014/153752.259:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[5100:2772:1014/153752.259:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[5100:2772:1014/153752.259:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206?nonce=d3be83a8-d865-4ec6-b2a8-a3fd189c2d43
  Method: BraveAdsUrlRequestMethod::GET
[5100:2772:1014/153752.277:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[5100:2772:1014/153752.277:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ee3d3504-d6f3-4ab2-ab4a-78c0a76450cf/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiaURMVldTNUUyemhGSU4vVEZzTmZRMUFScSttWDFPQ3dZRkdxd2pvUlJnOD1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlBMXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjZjZjA3NGZmLTlkYmQtNDUzOS1iZWE3LThmMTA2MWEwMTVkMlwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIndpbmRvd3NcIixcInR5cGVcIjpcImRvd252b3RlXCJ9Iiwic2lnbmF0dXJlIjoiaFVBNVR4YXQ2MXdadlQ2OG1LRThGVTlyRm9yeURLYVdnbVVpRG10REJHVnhacUFJRklWK0t6bDlCQWhWQjBSNmJqRldCMnNyWElueW81alIzWUNyRnc9PSIsInQiOiJMdUZIM2hmNWtKV1pTNGE4MjNEZkR1YWNrckJYMEFidWl6eVY5OVpNN0M5VGx3Sy8vMWU0TlpETEcweXg4bjNyN0JHNDdCNi9HWWhNZVNjQmFkakJydz09In0=
  Response Status Code: 201
  Response: {"id":"ee3d3504-d6f3-4ab2-ab4a-78c0a76450cf","payload":{},"createdAt":"2020-10-14T13:38:09.479Z","type":"downvote","modifiedAt":"2020-10-14T13:38:09.479Z","creativeInstanceId":"6cf074ff-9dbd-4539-bea7-8f1061a015d2"}
[5100:2772:1014/153752.277:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[5100:2772:1014/153752.277:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[5100:2772:1014/153752.277:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ee3d3504-d6f3-4ab2-ab4a-78c0a76450cf/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[5100:2772:1014/153752.480:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[5100:2772:1014/153752.480:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/3a9ef075-81a5-4d9d-b5f1-02c555084206?nonce=d3be83a8-d865-4ec6-b2a8-a3fd189c2d43
  Response Status Code: 200
  Response: {"batchProof":"AgAozmlrzHkNXbukzLxSh7OUh9Jb8+YcJALPGdDXeQ0DNWYd5i/jz+IyXIoM1dGrNqIdAjY2hbG4Pjrv3NkFCw==","signedTokens":["3vcytABQzQ7uXKL4n7Kdwz3f2Fwno3i2yEKhMCt+mG0=","JGA7hY5oxrEMCvJKvg5yc6EBtImkjWJx6q+waQpifV0=","sONoC3+47nxXiud/1P9EwCypCQOiP3ibj1j4WyaEUSg=","ArIREqixYBwALgO3EOzdUMpibszfnR/10saxC2kJC2E=","VHLDi24CsblKJwO6WKF4pUyg2Ipuh2ABOsqIJfAFX0A=","hghYMu04ihgXEeyodAuao20fSxMRRD+rBcwiK9wjjwE=","ysZD6zHZ19lwhlOl/Xh0CObT6ICDIFIuvPMjftk32As=","nhiarsEvjVjEEHz+j3iIJnoPpUbhzcO+7W8wlh4wrQs=","Il9GYe4QLlSNiz9+V1RgC1mJBUTf+lm/k1kK3DRCm0M=","0GO74ZHpJzIYAKQZmeajGY2IF1+o56HfbPTFEhwmGlw=","PGJxTU5tm5YN55sn6D9PQPBtfPZCLeBYx8jq94llCRU=","uFXqVISKFLNq8pT7QOeNqIAPu0PhEAw74b1KzyInREY=","yLQdfbj0HE1iwwMlRQ2gujkv0xxYCZOoya/X2FFkcEs=","rpJv6S0l6DifoaUfinwHfm0QSor0jWND5jPwDvp1qyU=","0MbJR8lpMq5YpT8xtpmYR4j6ULx9SSuYWbfNZPNhF2Q=","AERhcH+F1qmQV7taCcg6ZHPaWsfM57xWUsQZhFPvIVA=","dhJOBdRZ+lQGZmpdy1cy0Fe34axfkUySz1NCme42rWA=","SlSMHQftqorioAZaVM9a42Gn1wwalMaMa+gu+b3PVQw=","wusvir+4sTz9SVoDGi7iNk4Ulo1YRFDKW1r2XSmFlQo=","zuMOM5GjN96bkb4n5mWFj4/3585DXwrtTRWhr3iCUy4=","HMBWJq/8yWnKNqo4TXaCIlPM+s17CWgdYoud2czqAh8=","xoZ1MR2FydQDprtqVfu44Zp8gLkPhb15rQakhMGijTg=","KosOMuQynKMhYONzVq90pANGgFpUfrgh1P1TDjtSVmU=","oi+Vi9hQXbGvEwavqpjjkxuAFxDdhKB4PzznwoBdI2w=","7AYhkglkVN9D/6LRXNSe6IvYfClIMCHJTKP+7ImOYTI=","toC4bLe8IasQuPVphxsB4F48rN9CCa3HbGq6TsyLLwE=","RCdnnBwWtdc34hU2d7L5xiJtviXVtRcqUmmBJz/1+kY=","hJg1TytpQkDLJEsUX/oI6/z4EB2u/gUuxraAQh4jO0k=","PL+aWekOoIkYFIVEoWPJ9QwoJfyILFxJ10xSBJKKACY=","HFwtu6ne9vJo3zidsvrrtEem4tZUnWGUNs7RqYihsUA=","NFxEI3C+EHc2wLuUj6+i+MhL2vYAMMzxZzgTfblHBRM="],"publicKey":"crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw="}
[5100:2772:1014/153752.490:VERBOSE1:refill_unblinded_tokens.cc(266)] Added 31 unblinded tokens, you now have 50 unblinded tokens
[5100:2772:1014/153752.490:VERBOSE1:ads_impl.cc(1483)] Successfully refilled unblinded tokens


Verification in progress with

Brave	1.15.74 Chromium: 86.0.4240.80 (Official Build) (x86_64)
Revision	7ed88b53bda45a2d19efb4f8706dd6b6cad0d3af-refs/branch-heads/4240@{#1183}
OS	macOS Version 10.14.6 (Build 18G3020)
Verified catalog is downloaded upon browser launch
[3718:775:1014/072142.321867:VERBOSE1:get_catalog.cc(58)] Download catalog
[3718:775:1014/072142.321904:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3718:775:1014/072142.321933:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3718:775:1014/072142.865034:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[3718:775:1014/072142.865407:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[3718:775:1014/072142.874255:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
[3718:775:1014/072142.874305:VERBOSE1:get_catalog.cc(112)] Parsing catalog
[3718:775:1014/072142.878134:VERBOSE1:get_catalog.cc(130)] Generating bundle
Verified Confirm catalog is downloaded every ~2 hours

Catalog download is scheduled:

[3718:775:1014/072142.892153:VERBOSE1:get_catalog.cc(186)] Download catalog in 2 hours, 9 minutes, 37 seconds at 9:31 AM

Used --brave-ads-debug to confirm catalog is downloaded while browser is open/does not require a browser restart

[3818:775:1014/074203.649476:VERBOSE1:get_catalog.cc(58)] Download catalog
[3818:775:1014/074203.649577:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[3818:775:1014/074203.649626:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[3818:775:1014/074204.098023:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[3818:775:1014/074204.098352:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[3818:775:1014/074204.099200:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
[3818:775:1014/074204.099254:VERBOSE1:get_catalog.cc(112)] Parsing catalog
[3818:775:1014/074204.102031:VERBOSE1:get_catalog.cc(125)] Catalog id 45239e38823fc04e1b7051901c1879c43045e7f5 matches current catalog id 45239e38823fc04e1b7051901c1879c43045e7f5
Verified catalog download is not started if currently retrying a previously failed download
[4029:775:1014/074902.634527:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[4029:775:1014/074902.635398:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[4029:775:1014/074902.636224:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[4029:775:1014/074902.636266:INFO:refill_unblinded_tokens.cc(77)] Failed to refill unblinded tokens due to missing catalog issuers
[4029:775:1014/074902.636458:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 1 minute, 29 seconds at 7:50 AM
[4029:775:1014/074902.636723:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 hours, 1 minute, 43 seconds at 7:50 AM
[4029:775:1014/075045.642243:VERBOSE1:get_catalog.cc(172)] Retry downloading catalog
[4029:775:1014/075045.642425:VERBOSE1:get_catalog.cc(58)] Download catalog
[4029:775:1014/075045.642534:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[4029:775:1014/075045.642591:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[4029:775:1014/075045.656088:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[4029:775:1014/075045.657210:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[4029:775:1014/075045.658025:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[4029:775:1014/075045.658073:INFO:refill_unblinded_tokens.cc(77)] Failed to refill unblinded tokens due to missing catalog issuers
[4029:775:1014/075045.658282:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 3 minutes, 25 seconds at 7:54 AM
[4029:775:1014/075045.658412:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 hours, 1 minute, 2 seconds at 7:51 AM
[4029:775:1014/075147.663744:VERBOSE1:get_catalog.cc(172)] Retry downloading catalog
[4029:775:1014/075147.663932:VERBOSE1:get_catalog.cc(58)] Download catalog
[4029:775:1014/075147.664030:VERBOSE2:get_catalog.cc(59)] GET /v3/catalog
[4029:775:1014/075147.664112:VERBOSE5:get_catalog.cc(65)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v4/catalog
  Method: BraveAdsUrlRequestMethod::GET
[4029:775:1014/075147.677054:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[4029:775:1014/075147.677349:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[4029:775:1014/075147.677997:VERBOSE1:get_catalog.cc(92)] Failed to download catalog
[4029:775:1014/075147.678051:INFO:refill_unblinded_tokens.cc(77)] Failed to refill unblinded tokens due to missing catalog issuers
[4029:775:1014/075147.678181:VERBOSE1:get_catalog.cc(168)] Retry downloading catalog in 0 hours, 0 minutes, 34 seconds at 7:52 AM
Verified unblinded payment tokens are redeemed ~24 hours
[4103:775:1014/075611.330242:VERBOSE1:redeem_unblinded_payment_tokens.cc(71)] Redeem unblinded payment tokens in 12 hours, 5 minutes, 12 seconds at 8:01 PM

Used --brave-ads-debug to shorten redemption time

[4405:775:1014/081652.398492:VERBOSE1:redeem_unblinded_payment_tokens.cc(79)] RedeemUnblindedPaymentTokens
[4405:775:1014/081652.398683:VERBOSE2:redeem_unblinded_payment_tokens.cc(87)] PUT /v1/confirmation/payment/{payment_id}
[4405:775:1014/081652.398781:VERBOSE5:redeem_unblinded_payment_tokens.cc(96)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
  Content: {"payload":"{\"paymentId\":\"77934c59-9db8-4519-9b8a-a960056ba77c\"}","paymentCredentials":[{"credential":{"signature":"z9c1m0hXpVoQDxHB92pAsWAM6K1aHz4i4gmfO6q0NS41F1qlELSF1j35QjK30H3g0zJ5sfSgMlqnP6M6xsfp4g==","t":"okzfsUutFoUNgYAixdGASKNa20xdZBBIkUCES06LBJ+OWPnQVyKmWvUJuTIuFKav7g4LoJF6Vq4uWbg7tb3/KA=="},"publicKey":"bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU="},{"credential":{"signature":"TNhu9GtdeEFIr7qHGLK9Qww1eVLq42QYrvLh8QYMxAsd0x49CTaHTCHCvHCs2ayaVUzroH/BmhzF06yVM/oZVA==","t":"yVadraJjOmbHom+YudhDH9SKo5yfGp3n6ISSkbEDVriFjqMESLDYvI+FYyIXTqAMslnih3VFv4iGH5LIpb/0jg=="},"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8="},{"credential":{"signature":"ZpdHn/5GKO47216Y4vKjL41daHsk2a4pwKL2yQogzS+CV70VtSrGatGNimSYh2pKW/Y4LmRgz8kWFIUvdxdiPg==","t":"TrtGQcMx8CxJ2PJUpadRG48mm3nKolKm5fatHVYd5/nqopM8YihmAuWDx951BJt3BwBmceg/6FyCuYvzBLdu4Q=="},"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8="}]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::PUT
[4405:775:1014/081652.760932:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
[4405:775:1014/081652.761284:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
[4405:775:1014/081652.761650:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[4405:775:1014/081652.761730:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
  Response Status Code: 200
  Response: {"status":"ok"}
[4405:775:1014/081652.763658:VERBOSE1:redeem_unblinded_payment_tokens.cc(71)] Redeem unblinded payment tokens in 0 hours, 3 minutes, 26 seconds at 8:20 AM
[4405:775:1014/081652.763722:VERBOSE1:ads_impl.cc(1469)] Successfully redeemed unblinded payment tokens
[4405:775:1014/081652.763969:VERBOSE1:ad_rewards.cc(158)] Reconcile ad rewards
[4405:775:1014/081652.764034:VERBOSE1:ad_rewards.cc(166)] GetPayments
[4405:775:1014/081652.764076:VERBOSE2:ad_rewards.cc(167)] GET /v1/confirmation/payment/{payment_id}
[4405:775:1014/081652.765882:VERBOSE5:ad_rewards.cc(171)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
  Method: BraveAdsUrlRequestMethod::GET
[4405:775:1014/081652.922709:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
[4405:775:1014/081652.923021:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
[4405:775:1014/081652.923341:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[4405:775:1014/081652.923415:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/77934c59-9db8-4519-9b8a-a960056ba77c
  Response Status Code: 200
  Response: [{"month":"2020-10","transactionCount":"1","balance":"0.05"}]
Verified unblinded payment tokens redemption is not started if currently retrying a previously failed download

Verified Redeem unblinded payment tokens on... is not shown during retrying

[4591:775:1014/085338.147986:VERBOSE1:ads_impl.cc(1479)] Retry redeeming unblinded payment tokens
[4591:775:1014/085338.148160:VERBOSE1:redeem_unblinded_payment_tokens.cc(79)] RedeemUnblindedPaymentTokens
[4591:775:1014/085338.148247:VERBOSE2:redeem_unblinded_payment_tokens.cc(87)] PUT /v1/confirmation/payment/{payment_id}
[4591:775:1014/085338.148325:VERBOSE5:redeem_unblinded_payment_tokens.cc(96)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/2e7b8402-39af-492d-9055-d581c6cc2cca
  Content: {"payload":"{\"paymentId\":\"2e7b8402-39af-492d-9055-d581c6cc2cca\"}","paymentCredentials":[{"credential":{"signature":"QMG66ixodN7AD+2SLvGALL/3k71et6w8dsttHpuxjSRYAXHSCEKwLxF/u7oH/fGIq1N1aymIxpDfIKzQkN78zQ==","t":"SF9TtFvns9bItAkYSPc5oeUZ3USoqEyKy2ykWcg08RDlyXY34hBOaQfkR3c71zWHfYRDHjTT8PF0DorQ4x1ZlQ=="},"publicKey":"bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU="},{"credential":{"signature":"J5Nu+ZVWuDCr3wpkLv+bEVe+O5eijaBhV9Vu62VDMZN+1ObJ+oBI1vYXzYbPlaQ9KPhHXqr3APoZFNFfl32Gmg==","t":"OiuA+AlwLfxv+Hh36OW0rsEUOcF9C8yDKbWt+ciDwIJXYxPmiU11ZnOT2dVGHniYa+XLFxJWGRxxTH2BAxkCRw=="},"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8="}]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::PUT
[4591:775:1014/085338.593043:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/payment/2e7b8402-39af-492d-9055-d581c6cc2cca
[4591:775:1014/085338.593327:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/payment/2e7b8402-39af-492d-9055-d581c6cc2cca
[4591:775:1014/085338.593623:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[4591:775:1014/085338.593692:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/2e7b8402-39af-492d-9055-d581c6cc2cca
  Response Status Code: 404
  Response: {"status":"ok"}
[4591:775:1014/085338.593760:VERBOSE1:redeem_unblinded_payment_tokens.cc(113)] Failed to redeem unblinded payment tokens
[4591:775:1014/085338.593807:VERBOSE1:ads_impl.cc(1475)] Failed to redeem unblinded payment tokens
[4591:775:1014/085338.594080:VERBOSE1:redeem_unblinded_payment_tokens.cc(164)] Retry redeeming unblinded payment tokens in 0 hours, 1 minute, 14 seconds at 8:54 AM
Verified unblinded tokens are refilled if we have less than 10 unblinded tokens when triggering an event to server an ad notification

Verified that ad is not shown when there are not enough unblinded tokens:

[4670:775:1014/093207.754219:VERBOSE2:ads_impl.cc(1166)] You do not have enough unblinded tokens
[4670:775:1014/093207.754325:VERBOSE1:ads_impl.cc(869)] Ad notification not shown: Not allowed based on history

Verified tokens were refilled once rewrite was turned off:

[4755:775:1014/094639.059434:VERBOSE1:ads_impl.cc(1491)] Retry refilling unblinded tokens
[4755:775:1014/094639.059593:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[4755:775:1014/094639.059668:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[4755:775:1014/094639.059737:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/f27b76a6-ff21-41c8-8bce-4bdf49b44d01?nonce=40f4ab75-7891-44ad-818a-12d4ecb38d53
  Method: BraveAdsUrlRequestMethod::GET
[4755:775:1014/094639.326416:VERBOSE1:ads_impl.cc(310)] Browser window did enter background
[4755:775:1014/094639.399469:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/f27b76a6-ff21-41c8-8bce-4bdf49b44d01?nonce=40f4ab75-7891-44ad-818a-12d4ecb38d53
[4755:775:1014/094639.399791:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/f27b76a6-ff21-41c8-8bce-4bdf49b44d01?nonce=40f4ab75-7891-44ad-818a-12d4ecb38d53
[4755:775:1014/094639.400046:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[4755:775:1014/094639.400115:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/f27b76a6-ff21-41c8-8bce-4bdf49b44d01?nonce=40f4ab75-7891-44ad-818a-12d4ecb38d53
  Response Status Code: 200
  Response: {"batchProof":"CDIQor8yOw1U8C+QttmFnnCYNaMaxMcnPZ6JAX6OngZxqBjFXCJhko9PB+c72hPT11WnaSNmPrUYCimTUcKPBQ==","signedTokens":["BrA2dvz/NYB4KHQs6hUewxnBzfigGv5zsuQS/GI+SyQ=","6PRQlwdtR/gOFMpYV2flqEeeyxw552xw1wScTY7u2Rc=","pF/b6YnvCwJRQmD/IW/PDmNpUU3VgdhikZohgBHDgTs=","phPGYZinuxABYx+OCtA8wOLR6xjLFqpsg7yl3/fmBUc=","mFd2TjyV63bDN66l/EiEn0+Xh/eT+2e6mvo8/J8j3yA=","Zv2maczQpBHgS+CId/SC3ktrdrxy3Lb3VGGxBat0KX8=","oCHxQ129lig7YnlTPWNlksPSSHzfFI4A834fjnJGgRw=","vlcHLzH6Rp+QiPZbI7mS/aXwk4ervnfhSqKSGZ1YMnU=","yCIuWKeB578Ir3SCRmnytUa1ZIHhnm5QeDD5b92yChc=","uICzTDN7U2KC+WAX7IZ3OjcBRER4aqP0kRSft/EtfVA=","vqqmO8DPR5KE6wMzTeGsbrM0ahrgmVTHFzBYEWGB+0Y=","+AeyN/fWRxENuOX28BLUZgg8bigjUMbuijkriCB2uQM=","jL0RXBSTOruAxU317GQ65TFLa7LChcbbxR4EWwskMS4=","eincyHp6xNT/3FDq4QaFTHPZsv5Zfu3aqUTpnL8Ca00=","gGwqHk2SPtWqYK8w2hM1f4z5WP/qFRukrLtNyePLjU4=","6B7W14Mjdm91AtxSrMI2Ii9BEBlMuDOGO/d+JoYz5h4=","uBR1RerWB8C3GyD5rTreTzZDPOyau+GOwTCbeUmZ0gQ=","tArP+VhZpGuiLreLGLs+1mKDr2GpHZy806DWag9+uyI=","Dg3z8V7gVUaKH+r7v3suEIUY9HSkS5cSFgmp0XqPhzk=","dvDD1tnUniAN71mwx2yIAkMXNkz3e2Mj1+2zN0uvqlc=","oo+wfck6TcIrrlJWozEoyqxjUv4keTR9ypmx7OWmCWI=","TMyV4K1PH7F5IYYlZooBNV59+YocymJA1HmlP8b7cWQ=","4BggxHYZV8FNWrtMWUSgEtVSYdEyQSumJGZIC9RGRhM=","cD/ONDqqfrNuD7ZYUrVEL7zXK6nDloHnu42RwKcCJic=","dCNHhfzhzbXEM4WSFE1nenZmyFQABGa6JBW9Wd0/sCc=","gk/79tarVkXDh7dWXCV1kfBPGfAkg2kRVL9wk38k1js=","7BomfIIjnwMdQTkIG3PMYfHprvYVfQShRnqOIgPFw0U=","Ersfuu4O3nFmOPYs5tmqr1TAim4Ij0yV2kbYZocl9TU=","VndhUZ+ICtYNyzxhTulstALHXjz6uB1wZbyeDUrRbA4=","CH2IozwzH3sPvpiMb3yPTQZAcMxFOSEMoZosT5qS8Uc=","Kuu202Z4eQSvrF2uIkU2JrvzCi2R9vSfiIa5ZgYqlUA=","jsABeFiVOHZyCl2K2k9onTkLIBW9fw+tC0o4Q2eJtxc=","MECUk0mRqIiBTpynqh3An2vOX7QaaI+sKuRRt6I/YQM=","/ufyQbqBM2meJssKw/arhOKJX0wPXZBiWEaby8gjojk=","cGVv7ENXN83NJ6L7iv5SRdbR+m6hOmETFyNnvdHNCGI=","9kLq+pejZoyAxYlKRoCDkSOpoK1goUdprB7QcVjsnh0=","5gPoScw4I3azYZYJPkscB1BteFLVO1Iq/6o+dlc3n2A=","sCJcMWL2XmbXGmcyF31outggAC3906Eyo/9c98dNUUI=","nN/uNVvwS4D3cGvpwHQL6I8SF4xiXQST8b6iBM7z1Xw=","QqpIgqekauB3ELJhR8KI+xWAuwvW0yi6rqOalk0Q2xk=","tDjkJjUWrPoKGzvtCK6/cF8hZP2ljdmhP04besDLsjc=","lmxGM34RyT6pEtrs4db3GwfWQpiOAz88r4IXm+G49Fo="],"publicKey":"crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw="}
[4755:775:1014/094639.411333:VERBOSE1:refill_unblinded_tokens.cc(266)] Added 42 unblinded tokens, you now have 50 unblinded tokens
[4755:775:1014/094639.412281:VERBOSE1:ads_impl.cc(1483)] Successfully refilled unblinded tokens

Verified that after unblinded tokens are refilled, ads are shown

Verified failed confirmations are retried after attempting to download the catalog

Viewed an ad, enabled Charles re-write rule to make confirmation fail, then dismissed the ad to create a failed confirmation:

[4799:775:1014/094637.034099:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[4799:775:1014/094637.034141:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[4799:775:1014/094637.034177:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/b0422d9f-e09e-4682-a6fd-3ea9278ae414/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[4799:775:1014/094637.184413:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/b0422d9f-e09e-4682-a6fd-3ea9278ae414/paymentToken
[4799:775:1014/094637.184726:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/b0422d9f-e09e-4682-a6fd-3ea9278ae414/paymentToken
[4799:775:1014/094637.185050:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[4799:775:1014/094637.185109:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/b0422d9f-e09e-4682-a6fd-3ea9278ae414/paymentToken
  Response Status Code: 404
  Response: {"id":"b0422d9f-e09e-4682-a6fd-3ea9278ae414","createdAt":"2020-10-14T13:46:36.912Z","type":"dismiss","modifiedAt":"2020-10-14T13:46:36.944Z","creativeInstanceId":"2bc408a6-d6c9-4b30-ad5a-37437da8b72e","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"CiTBMDTcZUNQDi/XOKrxIgYVfYQgEURjnMt2ydJKVgXdq6iERuM1yXOakMYvXWwoO2aPITSA+VAAJ4rNAvNNDw==","signedTokens":["DBjEM3bwKyFHbGEfzhE2qgAkHDRJIrH8yWmfTwspLyg="]}}
[4799:775:1014/094637.185170:VERBOSE1:redeem_unblinded_token.cc(165)] Confirmation not found
[4799:775:1014/094637.185206:VERBOSE1:ads_impl.cc(1465)] Failed to redeem unblinded token with confirmation id b0422d9f-e09e-4682-a6fd-3ea9278ae414, creative instance id 2bc408a6-d6c9-4b30-ad5a-37437da8b72e and dismiss
[4799:775:1014/094637.186554:VERBOSE1:confirmations.cc(164)] Added confirmation id 66c301dc-f901-4ea2-9be8-3e08842d823b, creative instance id 2bc408a6-d6c9-4b30-ad5a-37437da8b72e and dismiss to the confirmations queue

Closed browser, disabled rewrite rule, relaunched browser. Confirmed after catalog was downloaded, the failed confirmations for retry were scheduled:

[4839:775:1014/094740.136918:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[4839:775:1014/094740.137458:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[4839:775:1014/094740.139525:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
[4839:775:1014/094740.139569:VERBOSE1:get_catalog.cc(112)] Parsing catalog
[4839:775:1014/094740.142263:VERBOSE1:get_catalog.cc(130)] Generating bundle
[4839:775:1014/094740.142324:VERBOSE1:bundle.cc(208)] creative set id 7be431a0-c6e4-4ca6-bcac-672e77294b7d has no entries
[4839:775:1014/094740.142361:VERBOSE1:bundle.cc(208)] creative set id 486d1bbe-e460-474e-ac26-d554cb1a21d4 has no entries
[4839:775:1014/094740.143128:VERBOSE1:bundle.cc(208)] creative set id 175bc3ca-50f0-4749-bfc8-c7ff7482de0f has no entries
[4839:775:1014/094740.143184:VERBOSE1:bundle.cc(208)] creative set id 2b67d6ee-e6d1-4d4e-a1b9-6be11a60c11d has no entries
[4839:775:1014/094740.146471:VERBOSE1:get_catalog.cc(138)] Successfully generated bundle
[4839:775:1014/094740.146557:VERBOSE1:confirmations.cc(50)] SetCatalogIssuers:
[4839:775:1014/094740.146592:VERBOSE1:confirmations.cc(51)]   Public key: crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=
[4839:775:1014/094740.146623:VERBOSE1:confirmations.cc(52)]   Issuers:
[4839:775:1014/094740.146650:VERBOSE1:confirmations.cc(55)]     Name: 0.01BAT
[4839:775:1014/094740.146677:VERBOSE1:confirmations.cc(56)]     Public key: JiwFR2EU/Adf1lgox+xqOVPuc6a/rxdy/LguFG5eaXg=
[4839:775:1014/094740.146707:VERBOSE1:confirmations.cc(55)]     Name: 0.025BAT
[4839:775:1014/094740.146735:VERBOSE1:confirmations.cc(56)]     Public key: CrQLMWmUuYog6Q93nScS8Lo1HHSex8WM2Qxij7qhjkQ=
[4839:775:1014/094740.146763:VERBOSE1:confirmations.cc(55)]     Name: 0.15BAT
[4839:775:1014/094740.146790:VERBOSE1:confirmations.cc(56)]     Public key: iJcG3AkH1sgl+5YCZuo+4Q/7aeBOnYyntkIUXeMbDCs=
[4839:775:1014/094740.146818:VERBOSE1:confirmations.cc(55)]     Name: 0.20BAT
[4839:775:1014/094740.146846:VERBOSE1:confirmations.cc(56)]     Public key: VihGXGoiQ5Fjxe4SrskIVMcmERa1LoAgvhFxxfLmNEI=
[4839:775:1014/094740.146874:VERBOSE1:confirmations.cc(55)]     Name: 0.3BAT
[4839:775:1014/094740.146901:VERBOSE1:confirmations.cc(56)]     Public key: 6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA=
[4839:775:1014/094740.146929:VERBOSE1:confirmations.cc(55)]     Name: 0.25BAT
[4839:775:1014/094740.146956:VERBOSE1:confirmations.cc(56)]     Public key: YOIEGq4joK7rtkWdcNdNNGT5xlU/KIrri4AX19qwZW4=
[4839:775:1014/094740.146985:VERBOSE1:confirmations.cc(55)]     Name: 0BAT
[4839:775:1014/094740.147012:VERBOSE1:confirmations.cc(56)]     Public key: lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=
[4839:775:1014/094740.147041:VERBOSE1:confirmations.cc(55)]     Name: 0.05BAT
[4839:775:1014/094740.147089:VERBOSE1:confirmations.cc(56)]     Public key: bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=
[4839:775:1014/094740.147117:VERBOSE1:confirmations.cc(55)]     Name: 0.10BAT
[4839:775:1014/094740.147145:VERBOSE1:confirmations.cc(56)]     Public key: aDD4SJmIj2xwdA6D00K1dopTg90oOFpwd2iiK8bqqlQ=
[4839:775:1014/094740.147210:VERBOSE1:refill_unblinded_tokens.cc(64)] No need to refill unblinded tokens as we already have 47 unblinded tokens which is above the minimum threshold of 20
[4839:775:1014/094740.147243:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 14 minutes, 53 seconds at 10:02 AM

Confirmed at expected time (0 hours, 14 minutes, 53 seconds at 10:02 AM) from logs, the failed confirmation was retried successfully:

[4839:775:1014/100233.148616:VERBOSE1:confirmations.cc(219)] Removed confirmation id 66c301dc-f901-4ea2-9be8-3e08842d823b, creative instance id 2bc408a6-d6c9-4b30-ad5a-37437da8b72e and dismiss from the confirmations queue
[4839:775:1014/100233.149154:VERBOSE1:redeem_unblinded_token.cc(88)] Redeem token
[4839:775:1014/100233.149203:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[4839:775:1014/100233.149236:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[4839:775:1014/100233.149267:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwidUY2ZzdCUjRMYmRRU1NQM2oxVDVCTmFqd3hHTjhnbjkrRmgwVjJvdVFudz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjJiYzQwOGE2LWQ2YzktNGIzMC1hZDVhLTM3NDM3ZGE4YjcyZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiMkJWY3JzWWJSQmxBbExMQ1RENVdRbloyTm5rRkV6bmwrYW14UjZiVCtOekVjTlc1cGpYeUgzOGJFSFlrZ2dXL1FISXpnL0c4VnhGT2JGOFZyMDl1UFE9PSIsInQiOiJwZ09DdHZkRzZzMUZidjhqQnVEWnJLcXNmcm95d1hwS3JsL0h0dDU1UEliQlM0NnBBYXF1UzFXVWNZRnZmVk9GZ1d1cXdxRFlYUUFhTG1qbVI3YUt3Zz09In0=
  Content: {"blindedPaymentToken":"uF6g7BR4LbdQSSP3j1T5BNajwxGN8gn9+Fh0V2ouQnw=","buildChannel":"release","countryCode":"US","creativeInstanceId":"2bc408a6-d6c9-4b30-ad5a-37437da8b72e","payload":{},"platform":"macos","type":"dismiss"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4839:775:1014/100233.149548:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 2 minutes, 45 seconds at 10:05 AM
[4839:775:1014/100233.855965:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwidUY2ZzdCUjRMYmRRU1NQM2oxVDVCTmFqd3hHTjhnbjkrRmgwVjJvdVFudz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjJiYzQwOGE2LWQ2YzktNGIzMC1hZDVhLTM3NDM3ZGE4YjcyZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiMkJWY3JzWWJSQmxBbExMQ1RENVdRbloyTm5rRkV6bmwrYW14UjZiVCtOekVjTlc1cGpYeUgzOGJFSFlrZ2dXL1FISXpnL0c4VnhGT2JGOFZyMDl1UFE9PSIsInQiOiJwZ09DdHZkRzZzMUZidjhqQnVEWnJLcXNmcm95d1hwS3JsL0h0dDU1UEliQlM0NnBBYXF1UzFXVWNZRnZmVk9GZ1d1cXdxRFlYUUFhTG1qbVI3YUt3Zz09In0=
[4839:775:1014/100233.856220:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwidUY2ZzdCUjRMYmRRU1NQM2oxVDVCTmFqd3hHTjhnbjkrRmgwVjJvdVFudz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjJiYzQwOGE2LWQ2YzktNGIzMC1hZDVhLTM3NDM3ZGE4YjcyZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiMkJWY3JzWWJSQmxBbExMQ1RENVdRbloyTm5rRkV6bmwrYW14UjZiVCtOekVjTlc1cGpYeUgzOGJFSFlrZ2dXL1FISXpnL0c4VnhGT2JGOFZyMDl1UFE9PSIsInQiOiJwZ09DdHZkRzZzMUZidjhqQnVEWnJLcXNmcm95d1hwS3JsL0h0dDU1UEliQlM0NnBBYXF1UzFXVWNZRnZmVk9GZ1d1cXdxRFlYUUFhTG1qbVI3YUt3Zz09In0=
[4839:775:1014/100233.856499:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[4839:775:1014/100233.856566:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwidUY2ZzdCUjRMYmRRU1NQM2oxVDVCTmFqd3hHTjhnbjkrRmgwVjJvdVFudz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjJiYzQwOGE2LWQ2YzktNGIzMC1hZDVhLTM3NDM3ZGE4YjcyZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiMkJWY3JzWWJSQmxBbExMQ1RENVdRbloyTm5rRkV6bmwrYW14UjZiVCtOekVjTlc1cGpYeUgzOGJFSFlrZ2dXL1FISXpnL0c4VnhGT2JGOFZyMDl1UFE9PSIsInQiOiJwZ09DdHZkRzZzMUZidjhqQnVEWnJLcXNmcm95d1hwS3JsL0h0dDU1UEliQlM0NnBBYXF1UzFXVWNZRnZmVk9GZ1d1cXdxRFlYUUFhTG1qbVI3YUt3Zz09In0=
  Response Status Code: 201
  Response: {"id":"66c301dc-f901-4ea2-9be8-3e08842d823b","payload":{},"createdAt":"2020-10-14T14:02:33.629Z","type":"dismiss","modifiedAt":"2020-10-14T14:02:33.630Z","creativeInstanceId":"2bc408a6-d6c9-4b30-ad5a-37437da8b72e"}
[4839:775:1014/100233.856731:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[4839:775:1014/100233.856777:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[4839:775:1014/100233.856813:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[4839:775:1014/100234.468995:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/paymentToken
[4839:775:1014/100234.469625:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/paymentToken
[4839:775:1014/100234.469943:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[4839:775:1014/100234.470013:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/66c301dc-f901-4ea2-9be8-3e08842d823b/paymentToken
  Response Status Code: 200
  Response: {"id":"66c301dc-f901-4ea2-9be8-3e08842d823b","createdAt":"2020-10-14T14:02:33.629Z","type":"dismiss","modifiedAt":"2020-10-14T14:02:33.657Z","creativeInstanceId":"2bc408a6-d6c9-4b30-ad5a-37437da8b72e","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"bhC0lNydXveHPk5g5ctq0qX7lAoRlCqlLVM/pzh6yQJe2PtNGSSDD931e7vhs3GKA5Oc/3U8pnK9T4oAJ31dAA==","signedTokens":["FH2Y39qF1Sx5w1aXtfNBzcq6duX/Cif1svLfHoi9Hk0="]}}
[4839:775:1014/100234.471562:VERBOSE1:redeem_unblinded_token.cc(335)] Added 1 unblinded payment token with an estimated redemption value of 0 BAT, you now have 2 unblinded payment tokens
[4839:775:1014/100234.472277:VERBOSE1:ads_impl.cc(1457)] Successfully redeemed unblinded token with confirmation id 66c301dc-f901-4ea2-9be8-3e08842d823b, creative instance id 2bc408a6-d6c9-4b30-ad5a-37437da8b72e and dismiss
Verified failed confirmations are retried when an unblinded token redemption fails

Viewed an ad, enabled Charles re-write rule to make confirmation fail, then dismissed the ad to create a failed confirmation:

[4891:775:1014/100750.431070:VERBOSE1:redeem_unblinded_token.cc(63)] Redeem token
[4891:775:1014/100750.431695:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[4891:775:1014/100750.431760:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[4891:775:1014/100750.431802:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwicHNad3FzbFFHbHhsbG4zZkxlL0wweUh3bSsxeGtJNDNtVWFwMjlmN2MwQT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiN1RTSndRWkpEUVZSVXh3Q3VzWEcyV0dFWUx5VGZuQXBxRTZ3ekpNcFcxWmJxUDUyQ0h1WExqNEVacVB5Qk9LVElSVHR2TFRpakhwVFNJYnBBM1pOcVE9PSIsInQiOiJMWFRZUXVqTVZ1Z2dRWTNtZ1FOOWNLS0R4SElLZHRQcTZ0VERZa2FGdW9WNFN5akRqSUZJSmJsSlJPeU0xYmpwRDlXN2Fzd3RHYUtXTmExc2tyVzkzZz09In0=
  Content: {"blindedPaymentToken":"psZwqslQGlxlln3fLe/L0yHwm+1xkI43mUap29f7c0A=","buildChannel":"release","countryCode":"US","creativeInstanceId":"bc6523ee-a790-487a-bb0e-7fda52b8af7e","payload":{},"platform":"macos","type":"dismiss"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4891:775:1014/100750.432090:VERBOSE1:refill_unblinded_tokens.cc(64)] No need to refill unblinded tokens as we already have 48 unblinded tokens which is above the minimum threshold of 20
[4891:775:1014/100750.640781:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwicHNad3FzbFFHbHhsbG4zZkxlL0wweUh3bSsxeGtJNDNtVWFwMjlmN2MwQT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiN1RTSndRWkpEUVZSVXh3Q3VzWEcyV0dFWUx5VGZuQXBxRTZ3ekpNcFcxWmJxUDUyQ0h1WExqNEVacVB5Qk9LVElSVHR2TFRpakhwVFNJYnBBM1pOcVE9PSIsInQiOiJMWFRZUXVqTVZ1Z2dRWTNtZ1FOOWNLS0R4SElLZHRQcTZ0VERZa2FGdW9WNFN5akRqSUZJSmJsSlJPeU0xYmpwRDlXN2Fzd3RHYUtXTmExc2tyVzkzZz09In0=
[4891:775:1014/100750.641068:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwicHNad3FzbFFHbHhsbG4zZkxlL0wweUh3bSsxeGtJNDNtVWFwMjlmN2MwQT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiN1RTSndRWkpEUVZSVXh3Q3VzWEcyV0dFWUx5VGZuQXBxRTZ3ekpNcFcxWmJxUDUyQ0h1WExqNEVacVB5Qk9LVElSVHR2TFRpakhwVFNJYnBBM1pOcVE9PSIsInQiOiJMWFRZUXVqTVZ1Z2dRWTNtZ1FOOWNLS0R4SElLZHRQcTZ0VERZa2FGdW9WNFN5akRqSUZJSmJsSlJPeU0xYmpwRDlXN2Fzd3RHYUtXTmExc2tyVzkzZz09In0=
[4891:775:1014/100750.641383:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[4891:775:1014/100750.641466:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwicHNad3FzbFFHbHhsbG4zZkxlL0wweUh3bSsxeGtJNDNtVWFwMjlmN2MwQT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiN1RTSndRWkpEUVZSVXh3Q3VzWEcyV0dFWUx5VGZuQXBxRTZ3ekpNcFcxWmJxUDUyQ0h1WExqNEVacVB5Qk9LVElSVHR2TFRpakhwVFNJYnBBM1pOcVE9PSIsInQiOiJMWFRZUXVqTVZ1Z2dRWTNtZ1FOOWNLS0R4SElLZHRQcTZ0VERZa2FGdW9WNFN5akRqSUZJSmJsSlJPeU0xYmpwRDlXN2Fzd3RHYUtXTmExc2tyVzkzZz09In0=
  Response Status Code: 201
  Response: {"id":"a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423","payload":{},"createdAt":"2020-10-14T14:07:50.515Z","type":"dismiss","modifiedAt":"2020-10-14T14:07:50.515Z","creativeInstanceId":"bc6523ee-a790-487a-bb0e-7fda52b8af7e"}
[4891:775:1014/100750.641603:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[4891:775:1014/100750.641649:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[4891:775:1014/100750.641691:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[4891:775:1014/100750.793436:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/paymentToken
[4891:775:1014/100750.793691:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/paymentToken
[4891:775:1014/100750.793969:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[4891:775:1014/100750.794033:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423/paymentToken
  Response Status Code: 404
  Response: {"id":"a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423","createdAt":"2020-10-14T14:07:50.515Z","type":"dismiss","modifiedAt":"2020-10-14T14:07:50.544Z","creativeInstanceId":"bc6523ee-a790-487a-bb0e-7fda52b8af7e","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"TJvGpfhuEO75xQ/aMmthpl6EepQE2Tiyc/1VY4aWngpPiAecv1BLEM7eTpDrea2NZTyHALJcLroUxisSCeVRCA==","signedTokens":["/nNTBfynuxbJlehRg6YKI2xN4b8OMUiWlVkWy1+hpXo="]}}
[4891:775:1014/100750.794100:VERBOSE1:redeem_unblinded_token.cc(165)] Confirmation not found
[4891:775:1014/100750.794133:VERBOSE1:ads_impl.cc(1465)] Failed to redeem unblinded token with confirmation id a1e95f5d-5a4a-4c58-ba2a-1049ebe6a423, creative instance id bc6523ee-a790-487a-bb0e-7fda52b8af7e and dismiss
[4891:775:1014/100750.795387:VERBOSE1:confirmations.cc(164)] Added confirmation id ccc3cc0e-5393-444b-b426-e3ebd54f0cf9, creative instance id bc6523ee-a790-487a-bb0e-7fda52b8af7e and dismiss to the confirmations queue

Disabled Charles rewrite rule and waited until the time mentioned in the logs (Retry failed confirmations in 0 hours, 9 minutes, 1 second at 10:15 AM), confirmed previously failed confirmation was retried and successful:

[4891:775:1014/101559.924494:VERBOSE1:confirmations.cc(219)] Removed confirmation id ccc3cc0e-5393-444b-b426-e3ebd54f0cf9, creative instance id bc6523ee-a790-487a-bb0e-7fda52b8af7e and dismiss from the confirmations queue
[4891:775:1014/101559.925351:VERBOSE1:redeem_unblinded_token.cc(88)] Redeem token
[4891:775:1014/101559.925430:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[4891:775:1014/101559.925476:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[4891:775:1014/101559.925520:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiWWlzMGdoNjRYdldjOEN1TGpldTR6MlpTYllEbVJVRGdZZmUxanVWMktEUT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiUS9TZXlPYzZYemNNY0NOUk5jbU85amVDMGZVUktPL0V3N3puMElxZERCdEc4M1VhazhaYjZwaXhBYWhEek1rbzlVczExb2k3Z1MxOGlCeHBMYXRjUWc9PSIsInQiOiJNVVlHNkUyYmw5L01wbmZqd2JzUmJnYkdlazhNc0RLWklCN2JFdTVsQlpMNlROWWRxOHBVRlVLcXpjTy93SU5MMlFGSFhXOEorL2RqSVBuSnQrOFZVQT09In0=
  Content: {"blindedPaymentToken":"Yis0gh64XvWc8CuLjeu4z2ZSbYDmRUDgYfe1juV2KDQ=","buildChannel":"release","countryCode":"US","creativeInstanceId":"bc6523ee-a790-487a-bb0e-7fda52b8af7e","payload":{},"platform":"macos","type":"dismiss"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4891:775:1014/101559.926104:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 8 minutes, 9 seconds at 10:24 AM
[4891:775:1014/101600.479345:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiWWlzMGdoNjRYdldjOEN1TGpldTR6MlpTYllEbVJVRGdZZmUxanVWMktEUT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiUS9TZXlPYzZYemNNY0NOUk5jbU85amVDMGZVUktPL0V3N3puMElxZERCdEc4M1VhazhaYjZwaXhBYWhEek1rbzlVczExb2k3Z1MxOGlCeHBMYXRjUWc9PSIsInQiOiJNVVlHNkUyYmw5L01wbmZqd2JzUmJnYkdlazhNc0RLWklCN2JFdTVsQlpMNlROWWRxOHBVRlVLcXpjTy93SU5MMlFGSFhXOEorL2RqSVBuSnQrOFZVQT09In0=
[4891:775:1014/101600.479644:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiWWlzMGdoNjRYdldjOEN1TGpldTR6MlpTYllEbVJVRGdZZmUxanVWMktEUT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiUS9TZXlPYzZYemNNY0NOUk5jbU85amVDMGZVUktPL0V3N3puMElxZERCdEc4M1VhazhaYjZwaXhBYWhEek1rbzlVczExb2k3Z1MxOGlCeHBMYXRjUWc9PSIsInQiOiJNVVlHNkUyYmw5L01wbmZqd2JzUmJnYkdlazhNc0RLWklCN2JFdTVsQlpMNlROWWRxOHBVRlVLcXpjTy93SU5MMlFGSFhXOEorL2RqSVBuSnQrOFZVQT09In0=
[4891:775:1014/101600.480005:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[4891:775:1014/101600.480091:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiWWlzMGdoNjRYdldjOEN1TGpldTR6MlpTYllEbVJVRGdZZmUxanVWMktEUT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImJjNjUyM2VlLWE3OTAtNDg3YS1iYjBlLTdmZGE1MmI4YWY3ZVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJkaXNtaXNzXCJ9Iiwic2lnbmF0dXJlIjoiUS9TZXlPYzZYemNNY0NOUk5jbU85amVDMGZVUktPL0V3N3puMElxZERCdEc4M1VhazhaYjZwaXhBYWhEek1rbzlVczExb2k3Z1MxOGlCeHBMYXRjUWc9PSIsInQiOiJNVVlHNkUyYmw5L01wbmZqd2JzUmJnYkdlazhNc0RLWklCN2JFdTVsQlpMNlROWWRxOHBVRlVLcXpjTy93SU5MMlFGSFhXOEorL2RqSVBuSnQrOFZVQT09In0=
  Response Status Code: 201
  Response: {"id":"ccc3cc0e-5393-444b-b426-e3ebd54f0cf9","payload":{},"createdAt":"2020-10-14T14:16:00.324Z","type":"dismiss","modifiedAt":"2020-10-14T14:16:00.324Z","creativeInstanceId":"bc6523ee-a790-487a-bb0e-7fda52b8af7e"}
[4891:775:1014/101600.480263:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[4891:775:1014/101600.480322:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[4891:775:1014/101600.480367:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[4891:775:1014/101600.647041:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/paymentToken
[4891:775:1014/101600.647328:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/paymentToken
[4891:775:1014/101600.647660:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[4891:775:1014/101600.647743:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/ccc3cc0e-5393-444b-b426-e3ebd54f0cf9/paymentToken
  Response Status Code: 200
  Response: {"id":"ccc3cc0e-5393-444b-b426-e3ebd54f0cf9","createdAt":"2020-10-14T14:16:00.324Z","type":"dismiss","modifiedAt":"2020-10-14T14:16:00.356Z","creativeInstanceId":"bc6523ee-a790-487a-bb0e-7fda52b8af7e","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"J5+1pe7geNVoeHO1Tj889EIsXfFwfQXa1vRwJJkyDQnmTegjImP9HBzH3JBp9LLjDKNQ24oQBkRcQf3lx+sbAw==","signedTokens":["LoGOgJCsMhsSIyYyfFMZNECv+fD6rTNr4W4ij3r4xnA="]}}
[4891:775:1014/101600.649230:VERBOSE1:redeem_unblinded_token.cc(335)] Added 1 unblinded payment token with an estimated redemption value of 0 BAT, you now have 2 unblinded payment tokens
[4891:775:1014/101600.649851:VERBOSE1:ads_impl.cc(1457)] Successfully redeemed unblinded token with confirmation id ccc3cc0e-5393-444b-b426-e3ebd54f0cf9, creative instance id bc6523ee-a790-487a-bb0e-7fda52b8af7e and dismiss
Verified unblinded tokens are refilled to 50 if we are below the threshold after attempting to download the catalog

Enable Rewards, wait until everything is complete (catalog download, tokens fetched, etc). View an ad, dismiss ad. Enable Charles rewrite rule outlined in brave/internal#731. Use +1/-1 on Ad history to use tokens so that you have less than 20 left:

[4942:775:1014/102412.064991:VERBOSE1:confirmations.cc(119)] Confirm ad:
  creativeInstanceId: 12fdf99a-89f4-45dd-b2d4-5690c76ab969
  creativeSetId: 32439113-32d2-4b50-9497-405b7eedd1d5
  confirmationType: upvote
[4942:775:1014/102412.065063:VERBOSE1:redeem_unblinded_token.cc(63)] Redeem token
[4942:775:1014/102412.065786:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[4942:775:1014/102412.065908:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[4942:775:1014/102412.065971:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/24d8a02c-83fb-4dbd-9540-04b4afac0cce/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiNEtyNXM2K2piMGdhRDZ6b0pyMFpBWDFQM1M5VTBFRHZQaUZwU1pEQ2hoYz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjEyZmRmOTlhLTg5ZjQtNDVkZC1iMmQ0LTU2OTBjNzZhYjk2OVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJJdkhUbmRZVkFGb1dGN0ExSHQrTmJNdFBQRm1TUXBSdzdudm5GNnNhMkVzeU9YNW9lWGwrUDNsckJmZklHTWQxaUJzYUFsRkpYMGk3Zy9qUWI2R2h2dz09IiwidCI6IkszV1JsRmFuVUhjSGNtbDkybk1RaXhhYnhtRi9nTWF1UE85VkFKdVNZYVR4VGxUMGJKeU5YQm5INjREck9zVUlvK3hmM0hZNE1pZ3lvOVAwSVNjWDlBPT0ifQ==
  Content: {"blindedPaymentToken":"4Kr5s6+jb0gaD6zoJr0ZAX1P3S9U0EDvPiFpSZDChhc=","buildChannel":"release","countryCode":"US","creativeInstanceId":"12fdf99a-89f4-45dd-b2d4-5690c76ab969","payload":{},"platform":"macos","type":"upvote"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4942:775:1014/102412.066282:VERBOSE1:refill_unblinded_tokens.cc(91)] Refill unblinded tokens
[4942:775:1014/102412.066341:VERBOSE1:refill_unblinded_tokens.cc(101)] RequestSignedTokens
[4942:775:1014/102412.066380:VERBOSE2:refill_unblinded_tokens.cc(102)] POST /v1/confirmation/token/{payment_id}
[4942:775:1014/102412.069953:VERBOSE1:refill_unblinded_tokens.cc(340)] Generated and blinded 31 tokens
[4942:775:1014/102412.071709:VERBOSE5:refill_unblinded_tokens.cc(110)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
  Content: {"blindedTokens":["3NgKfRkTeWR+xooAFRZIaU+nSPwaf3AticBOGdJ7eV4=","UEG6U4cn1/gsgorvS6VOUX50vCrsJSISIKAqkAXlNGs=","EJ+hR4VW6EVfktgYK8m6IuEOvigKEnajKTqAhhJUY1s=","gnn1xUi4JIfEdfP6NnV9IMxE8cfsiXgAj2+voZJaXkg=","dgnRdnJ/En+c3I34NHULgggmF00fpu+0gRSKym2Ia04=","uqheKnAWtL7ZsxM1J6IxCUmq7DDkv1nPeOePWDKdKEI=","wshMSHmDWrQIZHw31XGJLVdhAKKVsPt31CoAXWSHV28=","rOzj2MVVmukPX3+m4/XHRArCbrpI26p5V5Hvgo9JxhA=","TCzqBGJiscmbP4Qr9rMBN8XphFaXYtNRDCuC8dtQjAI=","quszJxDYp/WNI3G9qTaJ9yLY7GSjeDIN1HQ1i0I83ms=","cCWKb7/ipOt3OxbWMJZmA5ZX3PmgMsZ9FR74g9knRmk=","Xp8T8dES71AeJs4TgZGOwt6H7RuqPnEXCHc9cYj3BC4=","5DvT+60UB3ePlpgcuXgmP7x23hKpP4czitrOCee4JHw=","HMTPIK5OTBT2OT5GCbhvZ+s0YXw4KbmTgtFrpFSpsRI=","0vmQSYH9DrujOfjivXSQZ7Lsfh5bbCC7PqPGx0e2FzA=","sAMKSG+khNjpJ/LmXHV9p+Ypr6xNUS/kp6WuVApbNBQ=","IuF4hoF/WmD2ATmnAGhGR4gvjO8TjjF+wBI8DREoLFg=","YHieYWIsAKTvH8vM2W7Sxmy2ijmyY/1ZHvH6I+83qDk=","oDinTicsRJEsyJTAOFS7c4mkjq8ZUghNOp7qJmRB4g4=","ppuq70ZYSI6aw5rhatBLaYJCqV2kLmWPnWtmzUO8DXA=","iqrGo5IThSngfi6hoBGkuMvpag+NccYSd2IJ9mS+zxg=","sOmCscTw5xW9UpKDpoo5KDDUN1hlNmkhsNJVv8wHgFc=","wKKCLzIm1u0aNVWhrtBjw1H7oGyzg6XJETAxpHspTHo=","MGGaE2JJW72jknNQzy/dBn5njKgCAa2k8qW12HK8lyU=","rrZ2fd/ClFMGPDeUhluj32fRB0HM+CHla/IZa1qrXhg=","+FKVd2kXg0vM/Vmvq2L/Lpny0hzErzeMH5lh9Os/nws=","KEWjdjhs6qvIG7mR01UlxBxlLqABbQqxKRl/5W+mKCc=","JJeb54anuBzpuMBws8DPtfFP/uMAiBTfAIiQ+FyJOyg=","qMEMvOAbUKD/TQ+x/axYAkkkOxRFAfMLlnPy5KEIt1Q=","okeprolgBh82bSrL8wt1O1fToFZ0ITyHcgffJCiwkmM=","Cu72Io0xFmwHC3bdz4hPiKmiEIYOKLf1GuzpZNFyjRQ="]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4942:775:1014/102412.332665:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/24d8a02c-83fb-4dbd-9540-04b4afac0cce/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiNEtyNXM2K2piMGdhRDZ6b0pyMFpBWDFQM1M5VTBFRHZQaUZwU1pEQ2hoYz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjEyZmRmOTlhLTg5ZjQtNDVkZC1iMmQ0LTU2OTBjNzZhYjk2OVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJJdkhUbmRZVkFGb1dGN0ExSHQrTmJNdFBQRm1TUXBSdzdudm5GNnNhMkVzeU9YNW9lWGwrUDNsckJmZklHTWQxaUJzYUFsRkpYMGk3Zy9qUWI2R2h2dz09IiwidCI6IkszV1JsRmFuVUhjSGNtbDkybk1RaXhhYnhtRi9nTWF1UE85VkFKdVNZYVR4VGxUMGJKeU5YQm5INjREck9zVUlvK3hmM0hZNE1pZ3lvOVAwSVNjWDlBPT0ifQ==
[4942:775:1014/102412.332757:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
[4942:775:1014/102412.333010:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/24d8a02c-83fb-4dbd-9540-04b4afac0cce/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiNEtyNXM2K2piMGdhRDZ6b0pyMFpBWDFQM1M5VTBFRHZQaUZwU1pEQ2hoYz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjEyZmRmOTlhLTg5ZjQtNDVkZC1iMmQ0LTU2OTBjNzZhYjk2OVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJJdkhUbmRZVkFGb1dGN0ExSHQrTmJNdFBQRm1TUXBSdzdudm5GNnNhMkVzeU9YNW9lWGwrUDNsckJmZklHTWQxaUJzYUFsRkpYMGk3Zy9qUWI2R2h2dz09IiwidCI6IkszV1JsRmFuVUhjSGNtbDkybk1RaXhhYnhtRi9nTWF1UE85VkFKdVNZYVR4VGxUMGJKeU5YQm5INjREck9zVUlvK3hmM0hZNE1pZ3lvOVAwSVNjWDlBPT0ifQ==
[4942:775:1014/102412.333278:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
[4942:775:1014/102412.333359:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[4942:775:1014/102412.333402:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/24d8a02c-83fb-4dbd-9540-04b4afac0cce/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwiNEtyNXM2K2piMGdhRDZ6b0pyMFpBWDFQM1M5VTBFRHZQaUZwU1pEQ2hoYz1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcIjEyZmRmOTlhLTg5ZjQtNDVkZC1iMmQ0LTU2OTBjNzZhYjk2OVwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJJdkhUbmRZVkFGb1dGN0ExSHQrTmJNdFBQRm1TUXBSdzdudm5GNnNhMkVzeU9YNW9lWGwrUDNsckJmZklHTWQxaUJzYUFsRkpYMGk3Zy9qUWI2R2h2dz09IiwidCI6IkszV1JsRmFuVUhjSGNtbDkybk1RaXhhYnhtRi9nTWF1UE85VkFKdVNZYVR4VGxUMGJKeU5YQm5INjREck9zVUlvK3hmM0hZNE1pZ3lvOVAwSVNjWDlBPT0ifQ==
  Response Status Code: 201
  Response: {"id":"24d8a02c-83fb-4dbd-9540-04b4afac0cce","payload":{},"createdAt":"2020-10-14T14:24:12.218Z","type":"upvote","modifiedAt":"2020-10-14T14:24:12.218Z","creativeInstanceId":"12fdf99a-89f4-45dd-b2d4-5690c76ab969"}
[4942:775:1014/102412.333601:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[4942:775:1014/102412.333654:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[4942:775:1014/102412.333690:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/24d8a02c-83fb-4dbd-9540-04b4afac0cce/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[4942:775:1014/102412.333886:VERBOSE1:refill_unblinded_tokens.cc(120)] OnRequestSignedTokens
[4942:775:1014/102412.333926:VERBOSE6:refill_unblinded_tokens.cc(122)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
  Response Status Code: 404
  Response: {"nonce":"6cf331a3-44ed-49ae-89aa-4f8bbe275d6c"}
[4942:775:1014/102412.333975:VERBOSE1:refill_unblinded_tokens.cc(126)] Failed to request signed tokens
[4942:775:1014/102412.334008:VERBOSE1:ads_impl.cc(1487)] Failed to refill unblinded tokens

Close browser. Disable Charles rewrite rule. Relaunch browser. Confirm after catalog is downloaded that tokens are refilled successfully:

[4985:775:1014/102504.836374:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v4/catalog
[4985:775:1014/102504.836710:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v4/catalog
[4985:775:1014/102504.837861:VERBOSE1:get_catalog.cc(83)] Successfully downloaded catalog
[4985:775:1014/102504.837932:VERBOSE1:get_catalog.cc(112)] Parsing catalog
[4985:775:1014/102504.841042:VERBOSE1:get_catalog.cc(130)] Generating bundle
[4985:775:1014/102504.841169:VERBOSE1:bundle.cc(208)] creative set id 7be431a0-c6e4-4ca6-bcac-672e77294b7d has no entries
[4985:775:1014/102504.841229:VERBOSE1:bundle.cc(208)] creative set id 486d1bbe-e460-474e-ac26-d554cb1a21d4 has no entries
[4985:775:1014/102504.841833:VERBOSE1:bundle.cc(208)] creative set id 175bc3ca-50f0-4749-bfc8-c7ff7482de0f has no entries
[4985:775:1014/102504.841891:VERBOSE1:bundle.cc(208)] creative set id 2b67d6ee-e6d1-4d4e-a1b9-6be11a60c11d has no entries
[4985:775:1014/102504.845121:VERBOSE1:get_catalog.cc(138)] Successfully generated bundle
[4985:775:1014/102504.845203:VERBOSE1:confirmations.cc(50)] SetCatalogIssuers:
[4985:775:1014/102504.845240:VERBOSE1:confirmations.cc(51)]   Public key: crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw=
[4985:775:1014/102504.845272:VERBOSE1:confirmations.cc(52)]   Issuers:
[4985:775:1014/102504.845301:VERBOSE1:confirmations.cc(55)]     Name: 0.01BAT
[4985:775:1014/102504.845331:VERBOSE1:confirmations.cc(56)]     Public key: JiwFR2EU/Adf1lgox+xqOVPuc6a/rxdy/LguFG5eaXg=
[4985:775:1014/102504.845361:VERBOSE1:confirmations.cc(55)]     Name: 0.025BAT
[4985:775:1014/102504.845390:VERBOSE1:confirmations.cc(56)]     Public key: CrQLMWmUuYog6Q93nScS8Lo1HHSex8WM2Qxij7qhjkQ=
[4985:775:1014/102504.845419:VERBOSE1:confirmations.cc(55)]     Name: 0.15BAT
[4985:775:1014/102504.845448:VERBOSE1:confirmations.cc(56)]     Public key: iJcG3AkH1sgl+5YCZuo+4Q/7aeBOnYyntkIUXeMbDCs=
[4985:775:1014/102504.845477:VERBOSE1:confirmations.cc(55)]     Name: 0.20BAT
[4985:775:1014/102504.845506:VERBOSE1:confirmations.cc(56)]     Public key: VihGXGoiQ5Fjxe4SrskIVMcmERa1LoAgvhFxxfLmNEI=
[4985:775:1014/102504.845536:VERBOSE1:confirmations.cc(55)]     Name: 0.3BAT
[4985:775:1014/102504.845564:VERBOSE1:confirmations.cc(56)]     Public key: 6DBiZUS47m8eb5ohI2MiRaERLzS4DQgMp4nxPLKAenA=
[4985:775:1014/102504.845594:VERBOSE1:confirmations.cc(55)]     Name: 0.25BAT
[4985:775:1014/102504.845623:VERBOSE1:confirmations.cc(56)]     Public key: YOIEGq4joK7rtkWdcNdNNGT5xlU/KIrri4AX19qwZW4=
[4985:775:1014/102504.845652:VERBOSE1:confirmations.cc(55)]     Name: 0BAT
[4985:775:1014/102504.845681:VERBOSE1:confirmations.cc(56)]     Public key: lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=
[4985:775:1014/102504.845710:VERBOSE1:confirmations.cc(55)]     Name: 0.05BAT
[4985:775:1014/102504.845738:VERBOSE1:confirmations.cc(56)]     Public key: bPE1QE65mkIgytffeu7STOfly+x10BXCGuk5pVlOHQU=
[4985:775:1014/102504.845768:VERBOSE1:confirmations.cc(55)]     Name: 0.10BAT
[4985:775:1014/102504.845797:VERBOSE1:confirmations.cc(56)]     Public key: aDD4SJmIj2xwdA6D00K1dopTg90oOFpwd2iiK8bqqlQ=
[4985:775:1014/102504.845863:VERBOSE1:refill_unblinded_tokens.cc(91)] Refill unblinded tokens
[4985:775:1014/102504.845895:VERBOSE1:refill_unblinded_tokens.cc(101)] RequestSignedTokens
[4985:775:1014/102504.845926:VERBOSE2:refill_unblinded_tokens.cc(102)] POST /v1/confirmation/token/{payment_id}
[4985:775:1014/102504.849058:VERBOSE1:refill_unblinded_tokens.cc(340)] Generated and blinded 31 tokens
[4985:775:1014/102504.850797:VERBOSE5:refill_unblinded_tokens.cc(110)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
  Content: {"blindedTokens":["zNLbBi2A2gSuQ5Jw+L5cEPnltkjWK0V1t842qQ1iMQ0=","JH24tPhguWHBB1jun9G+s3ac23vEl4813M81vqyPSnk=","viHytk0c9n1N2x/bB7pxUsd1nbkcpU38Vc3cC7Qj828=","NPxtrp8dBMO3wnNVGwgU2vxT0Af3JOXL9xmtiPlCNUY=","Ct2bzkFjav5UCSKyBS3ARZF2pTZOW02rk1dV6sKFAkc=","6Fas00OpKpfMd45BRloJqA1BBQuKcVyKDpYECH62qG8=","FLLhvTGbQ9vP4FAEDZCbuQYD7nl6RkOjPRu7ioO23ho=","1l6hRqYhpsKpH4b3sHGVLQbtWVOmnr3oh16GYyjMXXw=","kDzUZANNyPYE05HqwEw74Bga1YYdVmHaGMteyH8RBnk=","CqCpsg2AY7rA3muiz2U6zd4YsDgtznd62oLkPfWwcis=","HujYBI2n8dnflVQy3pAZL6+lH+Y1pYO5DHWmlt3F4XU=","6mJnuZzp0rI4JUr3RTnAMdaU2nVemLosul+z8YutL3c=","0lhSRUm/3IVPZVYvspywio2j/l2UeR6/TtFemq9nFlY=","ZG74tDYn2aCdhsQxgf9qVI7NaY8u2DtUp7vaS3VLwUQ=","dDFCCQjcuUTl6zOxGT7esNmGAht7wDUdL5yzTXUGc2Q=","phh6rabOIcXaEtsUZoJGXq8PAAGe6N0VOdW960OIn2g=","mH4kxB105+gqXPhvZhcJvKsISO3hLe6YfcgvxT4hUi8=","un0JlOAZXCQ7C8ZBw27zA4SJM3g4T7SyHzt+M69dfDY=","Fi0R8Radod6dCI1mXHBXL7V/tYaSHg/b7W+N8d+enHE=","uOB5UV+HHfkBDuUyVTWWELYn0RwfS4+XmaTh5Jy7zXA=","fg2620tn9MiRyoy10FYgoTJCRKPVJlENYNIPmFvBGwc=","FJ51ptP99F2IZERE7shU+E9fpJTuRSqpKm6N9eAttm4=","UOO1kogV03FZvN0fHqs8gPsOdZGd95zNOK6kaP7m2g0=","HqhOSNJQeE3cPbLlV06xtaM7OwGac439dzwURKBBaXU=","lFHzzN62uDGwBrJFxQQYvhXaCswc7OihbUL0zYz+52U=","+DKLzd6BLoBl2u5Yxt/R6PlZQelnOsMvYPPiwlVRHQg=","rlwJi+WuvPrCwuaDxdAz6QySl00QW9h1qPVg8edSyXI=","YhzBMxRSLTeNflJ6Jlm4L0STXpxk+JnhdjuSpAyrIE0=","NPOtyAdGRpgpucSNTHKIW0Lvqnp2aJZ49soAc2EPj34=","Xgm+/COH2GieTY4qix5yR2d7TQsADC0GAx+NkKk6dTM=","Sn4zfNpmEaFwfb/4OOz/dk/TcStOLnR0IO6WLIAMEVA="]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[4985:775:1014/102504.851256:VERBOSE1:confirmations.cc(134)] Retry failed confirmations in 0 hours, 1 minute, 0 seconds at 10:26 AM
[4985:775:1014/102504.851544:VERBOSE1:get_catalog.cc(186)] Download catalog in 0 hours, 31 minutes, 26 seconds at 10:56 AM
[4985:775:1014/102504.853151:VERBOSE3:bundle.cc(257)] Successfully saved creative ad notifications state
[4985:775:1014/102504.853375:VERBOSE3:bundle.cc(267)] Successfully purged expired ad conversions
[4985:775:1014/102504.855483:VERBOSE3:bundle.cc(277)] Successfully saved ad conversions state
[4985:775:1014/102504.864205:VERBOSE3:get_catalog.cc(160)] Successfully saved catalog
[4985:775:1014/102505.101768:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/payment/7a037aeb-6d1e-4487-8b24-8b73921863d1
[4985:775:1014/102505.102095:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/payment/7a037aeb-6d1e-4487-8b24-8b73921863d1
[4985:775:1014/102505.102450:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[4985:775:1014/102505.102531:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/7a037aeb-6d1e-4487-8b24-8b73921863d1
  Response Status Code: 200
  Response: [{"balance":"0","month":"2020-10","transactionCount":"0"}]
[4985:775:1014/102505.103023:VERBOSE1:ad_rewards.cc(201)] GetAdGrants
[4985:775:1014/102505.103108:VERBOSE2:ad_rewards.cc(202)] GET /v1/promotions/ads/grants/summary?paymentId={payment_id}
[4985:775:1014/102505.103166:VERBOSE5:ad_rewards.cc(206)] URL Request:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=7a037aeb-6d1e-4487-8b24-8b73921863d1
  Method: BraveAdsUrlRequestMethod::GET
[4985:775:1014/102505.201639:VERBOSE6:logging_util.cc(136)] 
[ RESPONSE - OnRequest ]
> Url: https://api.rewards.bravesoftware.com/v1/parameters
> Result: Success
> HTTP Code: 200
> Body: {"batRate":0.21582044524503005,"autocontribute":{"choices":[5,10,15,20,25,50,100],"defaultChoice":20},"tips":{"defaultTipChoices":[1,10,100],"defaultMonthlyChoices":[1,10,100]}}

[4985:775:1014/102505.203090:VERBOSE1:api_parameters.cc(99)] Params timer set for 12168 s
[4985:775:1014/102505.244612:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
[4985:775:1014/102505.244822:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
[4985:775:1014/102505.245125:VERBOSE1:refill_unblinded_tokens.cc(120)] OnRequestSignedTokens
[4985:775:1014/102505.245189:VERBOSE6:refill_unblinded_tokens.cc(122)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1
  Response Status Code: 201
  Response: {"nonce":"a02acaab-fa81-4460-b63e-d9c83b880d99"}
[4985:775:1014/102505.245244:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[4985:775:1014/102505.245275:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[4985:775:1014/102505.245313:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
  Method: BraveAdsUrlRequestMethod::GET
[4985:775:1014/102505.379302:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
[4985:775:1014/102505.379608:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
[4985:775:1014/102505.379923:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[4985:775:1014/102505.380005:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
  Response Status Code: 202
  Response: {"error":"Tokens are not ready","statusCode":202}
[4985:775:1014/102505.380078:INFO:refill_unblinded_tokens.cc(175)] Failed to get signed tokens
[4985:775:1014/102505.380124:VERBOSE1:ads_impl.cc(1487)] Failed to refill unblinded tokens
[4985:775:1014/102505.380317:VERBOSE1:refill_unblinded_tokens.cc(305)] Retry refilling unblinded tokens in 0 hours, 0 minutes, 7 seconds at 10:25 AM
[4985:775:1014/102505.465059:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/promotions/ads/grants/summary?paymentId=7a037aeb-6d1e-4487-8b24-8b73921863d1
[4985:775:1014/102505.465261:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/promotions/ads/grants/summary?paymentId=7a037aeb-6d1e-4487-8b24-8b73921863d1
[4985:775:1014/102505.465557:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[4985:775:1014/102505.465624:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=7a037aeb-6d1e-4487-8b24-8b73921863d1
  Response Status Code: 204
  Response: 
[4985:775:1014/102505.465684:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards
[4985:775:1014/102507.110500:VERBOSE1:ads_impl.cc(310)] Browser window did enter background
[4985:775:1014/102512.385914:VERBOSE1:ads_impl.cc(1491)] Retry refilling unblinded tokens
[4985:775:1014/102512.386097:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[4985:775:1014/102512.386185:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[4985:775:1014/102512.386255:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
  Method: BraveAdsUrlRequestMethod::GET
[4985:775:1014/102512.511064:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
[4985:775:1014/102512.511462:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
[4985:775:1014/102512.511856:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[4985:775:1014/102512.511933:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/7a037aeb-6d1e-4487-8b24-8b73921863d1?nonce=a02acaab-fa81-4460-b63e-d9c83b880d99
  Response Status Code: 200
  Response: {"batchProof":"khJD3QyzRGCHk46+ognDCIZLPGuECH6Xou3W8+JJUAc29quVooknayLUJOr25yIwL7K9Gi6CJki0znYbpEHfBw==","signedTokens":["dgKLAnjsokXdfPz7jtgTI2MdD4GNWPGK8FZuts6fZRc=","EJ5Dm2IpKJdtR+QycRao6Xlrxe26tMFd1KBMkXdRp0I=","JHOpAw4TpRhKfUYTnhWHFfbnK+VUlouSj1+Frw35HSw=","6ISlapBs8ms3K0W2EKWadkBhTMs8xpxNJYXMdWrg6Bo=","TDHsbItE3PY8fG5jgaoIr42DWauE5uFCRZgmIXfsQHE=","AEu1nZZy2f/UhUmPOYt+w1rL9lyP9JvjFl9OwrB3Xmk=","ZNeky7P4a9pYlEu1Uzqk5NtZEZPIadiwBCmB3Cng714=","sDhTv6N/cGT42NT6OEZ6ypFNlnuVQ1gfHhGP76wiB1I=","vPsNdDCmdzQcM3le0iOCM1R9vN1X4l0pd1lOsIBXBz8=","Fl4SxERLN5I6FuWUKs3T/9f5UDGho0TpC1Afrsrr2h4=","7PB+RpS8C53iKyyWkwdD7C7/4TYA19MbZaDd1i1LfUQ=","XO20M4YM7wp6Zifb+JbkmSTkwMAG3HK9JM+9Ku9deyE=","0FaN0GMbRDQAfiuOGydb4nkUmuY4ReQp+G/4697Ia1g=","vKNDvl2vQVpmdpwc9eF5Z7zEBXKvV0+4vRPA2pchLjo=","KnD8XoHqGOxpm2pOARuKZlexmYLkvw9FCrO2ng4qSwI=","8FkyS12l/3LywAjvhJv5nRfLJvnh6ziKxPL9jsz0+EI=","lg269xcmJyAgWuzKwxlKE2LbIQgIMZdmWNHoe+AV2QQ=","LDxMNmdDMCXtFiKWKRFaIz/WAu2tRB060ElT5QGGt3o=","fLDiEgSdIqHnQvrqDSkgk2iWVwA8m4ouvTpWdQc64hs=","gonJlTdHgJKB22lQ3NL/PQcyMo4KqHrJZztDITApSiY=","pL/gx3jpUoG7KhMHDnOpjJa0/J3KaW+k9GYTFXlJ+ns=","zPzHAvnWe2qOxjnerbO/uJeSRQX0wkzKhixaE3R+31M=","HHkahC0ILgWQ0Gq1lLy7SkB2BHmAEX9P33CvOSPMPzo=","pOPAYJnE5GzCCOiilz8kqlyFwidCYWHAazB/GKCDAU8=","IDekERa05ac3EfjCmoaQjYqkm/BZlcGDOVxqrStjl2Q=","2sjlKeQL/Cm9h9FA9vnn7VU24eb8kP8dcOXL+9ShU1M=","kIze7ZPpf0AOUCX49VS8QbG9Kl0uBTng9HCJXgNXiBQ=","XOTTk59Ebt5La5zZjJw9ZxZPRPbJJAlWabZo2Xf52W8=","HpAdtouJWY1LmgkaYI0AQ+8e7afD7MkXOuzCDVgUamY=","0MExPnztiQVycdGX/1ZWl5PfDzlM2ZZrpKdyuZe8Jy0=","6HvKfpVw2rssFfxs3q85c5K7uc9NcGFblDhG03DXD1g="],"publicKey":"crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw="}
[4985:775:1014/102512.521413:VERBOSE1:refill_unblinded_tokens.cc(266)] Added 31 unblinded tokens, you now have 50 unblinded tokens
[4985:775:1014/102512.522194:VERBOSE1:ads_impl.cc(1483)] Successfully refilled unblinded tokens
Verified unblinded tokens are refilled to 50 if we are below the threshold after redeeming an unblinded token

Enable Rewards, wait until everything is complete (catalog download, tokens fetched, etc). View an ad, dismiss ad. Use +1/-1 on Ad history to use tokens just until you have 20 left:

[5008:775:1014/103033.340768:VERBOSE1:refill_unblinded_tokens.cc(64)] No need to refill unblinded tokens as we already have 20 unblinded tokens which is above the minimum threshold of 20

Use the other (+1 or -1) button to get to 19 and confirm that tokens are refilled successfully:

[5008:775:1014/103052.430656:VERBOSE1:confirmations.cc(119)] Confirm ad:
  creativeInstanceId: c47aa7b8-784f-427c-8585-9aa8ee465060
  creativeSetId: 32439113-32d2-4b50-9497-405b7eedd1d5
  confirmationType: upvote
[5008:775:1014/103052.430730:VERBOSE1:redeem_unblinded_token.cc(63)] Redeem token
[5008:775:1014/103052.431456:VERBOSE1:redeem_unblinded_token.cc(103)] CreateConfirmation
[5008:775:1014/103052.431529:VERBOSE2:redeem_unblinded_token.cc(104)] POST /v1/confirmation/{confirmation_id}/{credential}
[5008:775:1014/103052.431571:VERBOSE5:redeem_unblinded_token.cc(108)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwibnNibWVTTGJ3Q0VTNGtqMmdBT082Zk8zSHY3RFRVdEJTK1RpbWlkekZERT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImM0N2FhN2I4LTc4NGYtNDI3Yy04NTg1LTlhYThlZTQ2NTA2MFwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJnTmFhRnBENEE4bk9nandrUDR2STc0YURPNXlGMXBucWk0MFpOa3pMbEQ5Rk14UlM2cjlxKzl1ckpFTWsrL01NZUtVUENTYUlNZGxkTFR1ZU5mdDJqQT09IiwidCI6IjRzZkk3OU5VTWdFdndsMlM1cmM0RGJjdXovZnhFQzRFTDg4YWNiTjJCaW1OSitwVUNRQmp4Vk1YWUJDY1YvZWVNZTk2MXc2UUlqSlllbWhpeXpPeFlnPT0ifQ==
  Content: {"blindedPaymentToken":"nsbmeSLbwCES4kj2gAOO6fO3Hv7DTUtBS+TimidzFDE=","buildChannel":"release","countryCode":"US","creativeInstanceId":"c47aa7b8-784f-427c-8585-9aa8ee465060","payload":{},"platform":"macos","type":"upvote"}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[5008:775:1014/103052.431844:VERBOSE1:refill_unblinded_tokens.cc(91)] Refill unblinded tokens
[5008:775:1014/103052.431890:VERBOSE1:refill_unblinded_tokens.cc(101)] RequestSignedTokens
[5008:775:1014/103052.431928:VERBOSE2:refill_unblinded_tokens.cc(102)] POST /v1/confirmation/token/{payment_id}
[5008:775:1014/103052.435818:VERBOSE1:refill_unblinded_tokens.cc(340)] Generated and blinded 31 tokens
[5008:775:1014/103052.437692:VERBOSE5:refill_unblinded_tokens.cc(110)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc
  Content: {"blindedTokens":["xuoKULXvTERUHaO6CJP8jSMPZr7rPg2RGd8bTS2OJkg=","dBPp9cXSc4if2dGAbSLuHcJoeixoTBoIouq0jv2ixl0=","yqdQlS33U+CYusGhiE8K/GHCPyeSjSswJPme4JZFUk4=","MMYQAUCg69H9wxNCHNiaXy55r6+BR3OCSW9QwjcNJW8=","NpjXre6k5Wtg3+19zYOmiUUv3Dg7rtlqwwQoZqkpPhk=","0J7Q98S1hrlbppEQyOZu66jtMVjY0QUpNTQiQVXwgys=","1K86wLpXD59OhwR3X2X1qY7ouaDBhFAcOJB/1kGl7G4=","iP2z/7jvi7LYqXgJCEUZzGBg+HCRCRLICqvznpR2Ulw=","LJ/3dLkDAd2BVO5MJIT1sGimJugX9+yRPrHgXSICaic=","CkX23RQ5ZfjUTUM0iyubNv/vncv1FOfqdTZHLG2vI2E=","sjXJTRZiFmvEYw7KscpRTwo97sCVnzTuevYduwtHJ1Q=","krepFwikNS0OjdFnojEjUu+18C8Vl+kMjIqMzZFZhg4=","ipbb7b6Yg2B7/luVoxjRzrKL6G9deDMjYwUmsyugtVQ=","AsJR1ots4oH6EDwqD/AM9h6G/VCVEeuap2DQxps/BH8=","JNbfJtph9DXRqJ7LUQDOIU9L/CzYts1FZVB1PpzWtDA=","4Ej9oOQuAzWWTpujIL62MvtSR9fNUk7CW3zaQPjrxWA=","EqBLTgMFcJnIu58yDrnGjdjzR/Jh2yEhPIrCFhl28w4=","kCr8RppKLPBdBQ25fFbUjvZOL7AlSV3Ybr5hpl9hSX4=","vJX+FE1Nc6iDRxBPY/9RbAdjG/9YBxSi10w2EdehaBE=","/Jn3sFiIbdIVNpuhmXDZhdZXCBk/GjtlvJQa54dk6Rw=","hkvdTGhHdhlzxFY9ICozJBHBPY8CqtH+hO1mw2/y3ko=","GtLRSWyDy7ypkxo4G6DAq3p+ORQNhQlF3Fr0Mb7c2wM=","TEnuU+bQQZ3uct82x6LpwasWHci/LS2ZyVKGxY2woHM=","fOITc5TDcOdcazNwzukeJhhavQ3VmobbJ3PWkubwfVY=","FmQxbcO/L8+WnJM4oPxfZfJFZxR74uH2no6aXaHaiww=","qAguwrnqn3/i08CryB2rxpHWG+JZEQk8pj/o6EaNu3c=","TtY5rXO1jc1Vwkkn6K+opjgZUaaUEYXnyYjXjLKyBwI=","qIF44w1SZngIjqOmMyLUQxnYeP1F70Z3b36iPmya+jU=","FASH5TwCywBT/BHJM3GqZbCM70mAS7yVu4Uv1Eu20Ac=","RtPK8eT8ItuIdQ8v4QSoT+DJTNVWt+Uq6xl5jssFOmY=","uNbGsteI/2yAgSs7nScsGGWa2/n60LU7CuxsW1A4QAc="]}
  Content Type: application/json
  Method: BraveAdsUrlRequestMethod::POST
[5008:775:1014/103052.615982:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwibnNibWVTTGJ3Q0VTNGtqMmdBT082Zk8zSHY3RFRVdEJTK1RpbWlkekZERT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImM0N2FhN2I4LTc4NGYtNDI3Yy04NTg1LTlhYThlZTQ2NTA2MFwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJnTmFhRnBENEE4bk9nandrUDR2STc0YURPNXlGMXBucWk0MFpOa3pMbEQ5Rk14UlM2cjlxKzl1ckpFTWsrL01NZUtVUENTYUlNZGxkTFR1ZU5mdDJqQT09IiwidCI6IjRzZkk3OU5VTWdFdndsMlM1cmM0RGJjdXovZnhFQzRFTDg4YWNiTjJCaW1OSitwVUNRQmp4Vk1YWUJDY1YvZWVNZTk2MXc2UUlqSlllbWhpeXpPeFlnPT0ifQ==
[5008:775:1014/103052.616250:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwibnNibWVTTGJ3Q0VTNGtqMmdBT082Zk8zSHY3RFRVdEJTK1RpbWlkekZERT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImM0N2FhN2I4LTc4NGYtNDI3Yy04NTg1LTlhYThlZTQ2NTA2MFwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJnTmFhRnBENEE4bk9nandrUDR2STc0YURPNXlGMXBucWk0MFpOa3pMbEQ5Rk14UlM2cjlxKzl1ckpFTWsrL01NZUtVUENTYUlNZGxkTFR1ZU5mdDJqQT09IiwidCI6IjRzZkk3OU5VTWdFdndsMlM1cmM0RGJjdXovZnhFQzRFTDg4YWNiTjJCaW1OSitwVUNRQmp4Vk1YWUJDY1YvZWVNZTk2MXc2UUlqSlllbWhpeXpPeFlnPT0ifQ==
[5008:775:1014/103052.616539:VERBOSE1:redeem_unblinded_token.cc(121)] OnCreateConfirmation
[5008:775:1014/103052.616607:VERBOSE6:redeem_unblinded_token.cc(123)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/eyJwYXlsb2FkIjoie1wiYmxpbmRlZFBheW1lbnRUb2tlblwiOlwibnNibWVTTGJ3Q0VTNGtqMmdBT082Zk8zSHY3RFRVdEJTK1RpbWlkekZERT1cIixcImJ1aWxkQ2hhbm5lbFwiOlwicmVsZWFzZVwiLFwiY291bnRyeUNvZGVcIjpcIlVTXCIsXCJjcmVhdGl2ZUluc3RhbmNlSWRcIjpcImM0N2FhN2I4LTc4NGYtNDI3Yy04NTg1LTlhYThlZTQ2NTA2MFwiLFwicGF5bG9hZFwiOnt9LFwicGxhdGZvcm1cIjpcIm1hY29zXCIsXCJ0eXBlXCI6XCJ1cHZvdGVcIn0iLCJzaWduYXR1cmUiOiJnTmFhRnBENEE4bk9nandrUDR2STc0YURPNXlGMXBucWk0MFpOa3pMbEQ5Rk14UlM2cjlxKzl1ckpFTWsrL01NZUtVUENTYUlNZGxkTFR1ZU5mdDJqQT09IiwidCI6IjRzZkk3OU5VTWdFdndsMlM1cmM0RGJjdXovZnhFQzRFTDg4YWNiTjJCaW1OSitwVUNRQmp4Vk1YWUJDY1YvZWVNZTk2MXc2UUlqSlllbWhpeXpPeFlnPT0ifQ==
  Response Status Code: 201
  Response: {"id":"b3279868-9841-48d1-871a-4c0534cc7658","payload":{},"createdAt":"2020-10-14T14:30:52.497Z","type":"upvote","modifiedAt":"2020-10-14T14:30:52.497Z","creativeInstanceId":"c47aa7b8-784f-427c-8585-9aa8ee465060"}
[5008:775:1014/103052.616738:VERBOSE1:redeem_unblinded_token.cc(143)] FetchPaymentToken
[5008:775:1014/103052.616784:VERBOSE2:redeem_unblinded_token.cc(144)] GET /v1/confirmation/{confirmation_id}/paymentToken
[5008:775:1014/103052.616822:VERBOSE5:redeem_unblinded_token.cc(148)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/paymentToken
  Method: BraveAdsUrlRequestMethod::GET
[5008:775:1014/103052.764975:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/paymentToken
[5008:775:1014/103052.765299:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/paymentToken
[5008:775:1014/103052.765631:VERBOSE1:redeem_unblinded_token.cc(159)] OnFetchPaymentToken
[5008:775:1014/103052.765712:VERBOSE6:redeem_unblinded_token.cc(161)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/b3279868-9841-48d1-871a-4c0534cc7658/paymentToken
  Response Status Code: 200
  Response: {"id":"b3279868-9841-48d1-871a-4c0534cc7658","createdAt":"2020-10-14T14:30:52.497Z","type":"upvote","modifiedAt":"2020-10-14T14:30:52.526Z","creativeInstanceId":"c47aa7b8-784f-427c-8585-9aa8ee465060","paymentToken":{"publicKey":"lLO5tErGoTK0askrALab6pKGAnBHqELSyw/evqZRwH8=","batchProof":"x1HgHulkb7T6ybnLtfprVjD9X94VliuxJut6/aCzLArvGFriEFValY0ECY4GTsJiZHtXt+R6PuFF8WQO+mA1Cw==","signedTokens":["QhwAfgxOaolp1hAZwkztVTRx+naDsZsDrWpdgLuq1FY="]}}
[5008:775:1014/103052.767275:VERBOSE1:redeem_unblinded_token.cc(335)] Added 1 unblinded payment token with an estimated redemption value of 0 BAT, you now have 31 unblinded payment tokens
[5008:775:1014/103052.767919:VERBOSE1:ads_impl.cc(1457)] Successfully redeemed unblinded token with confirmation id b3279868-9841-48d1-871a-4c0534cc7658, creative instance id c47aa7b8-784f-427c-8585-9aa8ee465060 and upvote
[5008:775:1014/103052.771149:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc
[5008:775:1014/103052.771474:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc
[5008:775:1014/103052.771696:VERBOSE1:refill_unblinded_tokens.cc(120)] OnRequestSignedTokens
[5008:775:1014/103052.771756:VERBOSE6:refill_unblinded_tokens.cc(122)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc
  Response Status Code: 201
  Response: {"nonce":"d9008dd3-e018-4e88-bcf9-61121a759be1"}
[5008:775:1014/103052.771816:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[5008:775:1014/103052.771848:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[5008:775:1014/103052.771878:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
  Method: BraveAdsUrlRequestMethod::GET
[5008:775:1014/103052.884290:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
[5008:775:1014/103052.884637:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
[5008:775:1014/103052.884945:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[5008:775:1014/103052.885011:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
  Response Status Code: 202
  Response: {"error":"Tokens are not ready","statusCode":202}
[5008:775:1014/103052.885069:INFO:refill_unblinded_tokens.cc(175)] Failed to get signed tokens
[5008:775:1014/103052.885106:VERBOSE1:ads_impl.cc(1487)] Failed to refill unblinded tokens
[5008:775:1014/103052.885288:VERBOSE1:refill_unblinded_tokens.cc(305)] Retry refilling unblinded tokens in 0 hours, 0 minutes, 14 seconds at 10:31 AM
[5008:775:1014/103054.519449:VERBOSE1:ads_impl.cc(310)] Browser window did enter background
[5008:775:1014/103100.800774:VERBOSE1:uphold.cc(128)] Wallet data is empty
[5008:775:1014/103106.887733:VERBOSE1:ads_impl.cc(1491)] Retry refilling unblinded tokens
[5008:775:1014/103106.887896:VERBOSE1:refill_unblinded_tokens.cc(154)] GetSignedTokens
[5008:775:1014/103106.888188:VERBOSE2:refill_unblinded_tokens.cc(155)] GET /v1/confirmation/token/{payment_id}?nonce={nonce}
[5008:775:1014/103106.888339:VERBOSE5:refill_unblinded_tokens.cc(159)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
  Method: BraveAdsUrlRequestMethod::GET
[5008:775:1014/103106.984343:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
[5008:775:1014/103106.984676:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
[5008:775:1014/103106.984968:VERBOSE1:refill_unblinded_tokens.cc(169)] OnGetSignedTokens
[5008:775:1014/103106.985051:VERBOSE6:refill_unblinded_tokens.cc(171)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/token/58d937dc-4a67-4241-b103-c67d35b6cffc?nonce=d9008dd3-e018-4e88-bcf9-61121a759be1
  Response Status Code: 200
  Response: {"batchProof":"iM2n+Rs5yipfeZ/Hifw67XjOx093xYah4VuVcTi3zQn8gFEVkTtw0wyQi0IbVHJe7OnzYCH6UZtASPwg29gNBA==","signedTokens":["IlEUpkYou86ou48TeexajQKQWVATrD2zfvD1FTpgLSQ=","aCA2GhbN/xqZ6yySS8lHAB5IGWwz3Lh5zutmYUGhXWg=","SibH59YVOleCGoERtjH41QGQZAOLzYMRxVb2LNuRvns=","Zp0axxzBJm4RlMmbbCI4jOrYGf4XmplrcqYvn7wMc0c=","lB2t3b6/0yyzbO9hTE+yWM7PWPNPljrJLlH6AohNt2o=","Ps8yVL7JIbU9kSTXMfjjx+g7KArwAtHFXVx5fZyvLFI=","zuoMeyqVytpTJb4NrkkfDwXM96ZJDH7CzQyHR598YUE=","fDlWymqR2Fges/kkTXeWfsIMQh6Zrk3hIO0GgO7e1AA=","KjnpAJvhRWSbCkcdqi4Nw7IP1ACUIjHl8Uw1Odb5MWg=","nDTQO9pxZPHnXipPQa2+xJDElVZu/MZJH7Zi1RV3NTU=","qIYOwoIKQ/IDVMN3HFXtm6/h5169BbS3VAs0a9rdXzg=","+mSD7d83fQLvD/CrSHclv2Lmpta2t2LR2xIBLu5/4j4=","OKDdcbiQD1RQweKSvy7iQg9HEeDJwElXwVbe5cTSmn4=","ksgECm0TNbjvQ6UxWNlKX1kRtkgp9JXwCQHxR3xY7Aw=","3A59tECBDk5BguyuSy7z0m2T9H1BfRH/Z5bUzd+1SCs=","oHGYdZ4Oe/BNrMxsnZO0BT8StI/Whb4qFsIH7pjXqRo=","dj7Owmk/itF9BXoKYaUKoT7ThB6b/XixRwwBvm9Vfkc=","5BkGPhtGQWU3bYMucDJqPSn9DqKQIP5tx2RPYwISeCk=","ZI+XLleCxuImMkA1Ckh+rs59t+wW9W3ZTJrrFBIo5UM=","rKnHqDQMew4+eCnPQM1BO80p1PavvS04aUDuSWRbKAM=","cPxsnAVYMXEbjflKsKSLX3lDEVwG0zv7dlNXlE57SBc=","loamjudy+EAAwt/eWynfuOd3p06ccQ2arG/NV5mxAVc=","Xn7snFcGj4Y8uLPD0h6C0IuX5yIsfzVqmu3yq+i4cGA=","aJwP9UAF6SInVK5wAISgXjoi0kYQmDSLleO8+XJKHjg=","VF59lI6+ff83sxKTQKJIV84o5Ujqzs9yaVXfP4LUQwQ=","boYg7ve546ltryzGm/uq6C36qmZZUlZj7RiXOQdOzh0=","eoPgDN7aI4HHuub8+GFjk2qSQVHTCr4euQr8hpg+aic=","kG5IFOGW3tzKQgqY2rA+QSh7ivmAR35b2aHuR/waq20=","pr+Az/QUTtg2Mj11iw5dVEV98k4gFTKXD5HCk6L6Fno=","vApl/007soxQpmewCnxA2hpv6DYZhfz+cCMtIuV+5Qw=","uP3V/A6NvHyCZnkz97LLOcFQ6U2E03V0zTxQUU8sdnk="],"publicKey":"crDVI1R6xHQZ4D9cQu4muVM5MaaM1QcOT4It8Y/CYlw="}
[5008:775:1014/103106.993716:VERBOSE1:refill_unblinded_tokens.cc(266)] Added 31 unblinded tokens, you now have 50 unblinded tokens
[5008:775:1014/103106.994518:VERBOSE1:ads_impl.cc(1483)] Successfully refilled unblinded tokens
Verified ad rewards are reconciled upon browser launch

Launch brave with clean profile staging env
Enable rewards
Viewed logs and verified reconciled ad rewards

[5057:775:1014/104215.809004:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[5057:775:1014/104215.809062:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=84bd6f65-3c0a-49bb-b21e-47ed933f5cde
  Response Status Code: 204
  Response: 
[5057:775:1014/104215.809137:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards
Verified ad rewards are reconciled after redeeming unblinded payment tokens

Launch brave with clean profile staging env (used --brave-ads-debug to shorten redemption time)
View an Ad
Ensured Ads notification count and Estimated pending rewards is shown correctly in Ads panel
Viewed logs and verified tokens are redeemed successfully for viewed Ad at expected time (Redeem unblinded payment tokens in 0 hours, 2 minutes, 20 seconds at 11:27 AM) per logs.

[5253:775:1014/112722.334223:VERBOSE1:redeem_unblinded_payment_tokens.cc(105)] OnRedeemUnblindedPaymentTokens
[5253:775:1014/112722.334300:VERBOSE6:redeem_unblinded_payment_tokens.cc(107)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/4c4dcd18-1636-47fa-beae-812cd19a349a
  Response Status Code: 200
  Response: {"status":"ok"}
[5253:775:1014/112722.336232:VERBOSE1:ads_impl.cc(1469)] Successfully redeemed unblinded payment tokens
[5253:775:1014/112722.336529:VERBOSE1:ad_rewards.cc(158)] Reconcile ad rewards
[5253:775:1014/112722.336591:VERBOSE1:ad_rewards.cc(166)] GetPayments
[5253:775:1014/112722.336631:VERBOSE2:ad_rewards.cc(167)] GET /v1/confirmation/payment/{payment_id}
[5253:775:1014/112722.338337:VERBOSE5:ad_rewards.cc(171)] URL Request:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/4c4dcd18-1636-47fa-beae-812cd19a349a
  Method: BraveAdsUrlRequestMethod::GET
[5253:775:1014/112722.540148:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/confirmation/payment/4c4dcd18-1636-47fa-beae-812cd19a349a
[5253:775:1014/112722.540463:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/confirmation/payment/4c4dcd18-1636-47fa-beae-812cd19a349a
[5253:775:1014/112722.540804:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[5253:775:1014/112722.540881:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/4c4dcd18-1636-47fa-beae-812cd19a349a
  Response Status Code: 200
  Response: [{"month":"2020-10","transactionCount":"1","balance":"0.05"}]
[5253:775:1014/112722.541048:VERBOSE1:ad_rewards.cc(201)] GetAdGrants
[5253:775:1014/112722.541105:VERBOSE2:ad_rewards.cc(202)] GET /v1/promotions/ads/grants/summary?paymentId={payment_id}
[5253:775:1014/112722.541149:VERBOSE5:ad_rewards.cc(206)] URL Request:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=4c4dcd18-1636-47fa-beae-812cd19a349a
  Method: BraveAdsUrlRequestMethod::GET
[5253:775:1014/112722.992390:VERBOSE6:ads_service_impl.cc(1087)] URL request started for /v1/promotions/ads/grants/summary?paymentId=4c4dcd18-1636-47fa-beae-812cd19a349a
[5253:775:1014/112722.992636:VERBOSE6:ads_service_impl.cc(1102)] URL request complete for /v1/promotions/ads/grants/summary?paymentId=4c4dcd18-1636-47fa-beae-812cd19a349a
[5253:775:1014/112722.992895:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[5253:775:1014/112722.992958:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=4c4dcd18-1636-47fa-beae-812cd19a349a
  Response Status Code: 204
  Response: 
[5253:775:1014/112722.993015:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards

Blocked:

  • Confirm ad rewards are reconciled after restoring a wallet
  • Confirm ad rewards are reconciled after claiming an ad promotion

above two result in:

[5111:775:1014/105612.299886:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[5111:775:1014/105612.299964:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/4bb7ce9a-0b88-4275-ab48-0ea8f4bd79ef
  Response Status Code: 400
  Response: {"error":"Signature is invalid","statusCode":400}
[5111:775:1014/105612.300035:VERBOSE1:ad_rewards.cc(186)] Failed to get payment balance
[5111:775:1014/105612.300081:VERBOSE1:ad_rewards.cc(246)] Failed to reconcile ad rewards

Verification PASSED on macOS 10.15.7 x64 using the following build:

Brave | 1.15.74 Chromium: 86.0.4240.80 (Official Build) (x86_64)
-- | --
Revision | 7ed88b53bda45a2d19efb4f8706dd6b6cad0d3af-refs/branch-heads/4240@{#1183}
OS | macOS Version 10.15.7 (Build 19H2)
Confirm ad rewards are reconciled after restoring a wallet
* launch brave with clean profile using using the following:
--args --enable-logging=stderr --vmodule="*/bat-native-ads/*"=6,"*/brave_ads/*"=6,"*/brave_user_model/*"=6,"*/bat_ads/*"=6,"*/bat-native-ledger/*"=6,"*/brave_rewards/*"=6 --rewards=staging=true --brave-ads-staging
  • enabled rewards
  • restored wallet
[3859:775:1015/025029.408650:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[3859:775:1015/025029.408742:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/da17e784-1f4c-4120-9da5-d330b23b3c3f
  Response Status Code: 400
  Response: {"error":"Signature is invalid","statusCode":400}
[3859:775:1015/025029.408819:VERBOSE1:ad_rewards.cc(186)] Failed to get payment balance
[3859:775:1015/025029.408868:VERBOSE1:ad_rewards.cc(246)] Failed to reconcile ad rewards
[3859:775:1015/025029.409017:VERBOSE1:ad_rewards.cc(267)] Retry reconciling ad rewards in 0 hours, 4 minutes, 40 seconds at 2:55 AM
  • relaunched Brave using the following:
--args --enable-logging=stderr --vmodule="*/bat-native-ads/*"=6,"*/brave_ads/*"=6,"*/brave_user_model/*"=6,"*/bat_ads/*"=6,"*/bat-native-ledger/*"=6,"*/brave_rewards/*"=6 --rewards=staging=true --brave-ads-staging
  • ensured that ad rewards was successfully reconciled as per the following:
[3921:775:1015/025225.828677:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[3921:775:1015/025225.828762:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=723d5a31-3c4a-4324-9b53-e72d41afe082
  Response Status Code: 204
  Response:
[3921:775:1015/025225.828832:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards
Confirm ad rewards are reconciled after claiming an ad promotion
* launch brave with clean profile using using the following:
--args --enable-logging=stderr --vmodule="*/bat-native-ads/*"=6,"*/brave_ads/*"=6,"*/brave_user_model/*"=6,"*/bat_ads/*"=6,"*/bat-native-ledger/*"=6,"*/brave_rewards/*"=6 --rewards=staging=true --brave-ads-staging
  • enabled rewards
  • restored wallet
[3971:775:1015/025850.736563:VERBOSE1:ad_rewards.cc(180)] OnGetPayments
[3971:775:1015/025850.736650:VERBOSE6:ad_rewards.cc(182)] URL Response:
  URL: https://ads-serve.bravesoftware.com/v1/confirmation/payment/5e4aecb6-225f-442a-9ab2-c12799fd0a2e
  Response Status Code: 400
  Response: {"error":"Signature is invalid","statusCode":400}
[3971:775:1015/025850.736722:VERBOSE1:ad_rewards.cc(186)] Failed to get payment balance
[3971:775:1015/025850.736797:VERBOSE1:ad_rewards.cc(246)] Failed to reconcile ad rewards
[3971:775:1015/025850.736947:VERBOSE1:ad_rewards.cc(267)] Retry reconciling ad rewards in 0 hours, 1 minute, 40 seconds at 3:00 AM
  • relaunched Brave using the following:
--args --enable-logging=stderr --vmodule="*/bat-native-ads/*"=6,"*/brave_ads/*"=6,"*/brave_user_model/*"=6,"*/bat_ads/*"=6,"*/bat-native-ledger/*"=6,"*/brave_rewards/*"=6 --rewards=staging=true --brave-ads-staging
  • ensured that ad rewards was successfully reconciled as per the following:
[4039:775:1015/025952.292709:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=43e10e13-90e3-4516-bd98-36f410a16d8d
  Response Status Code: 204
  Response:
[4039:775:1015/025952.292782:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards
  • ensured that the claimed ad grant successfully reconciled as per the following:
[4039:775:1015/030030.054813:VERBOSE1:ad_rewards.cc(215)] OnGetAdGrants
[4039:775:1015/030030.054901:VERBOSE6:ad_rewards.cc(217)] URL Response:
  URL: https://grant.rewards.bravesoftware.com/v1/promotions/ads/grants/summary?paymentId=43e10e13-90e3-4516-bd98-36f410a16d8d
  Response Status Code: 200
  Response: {"amount":"20","earnings":"20","lastClaim":"2020-07-28T18:17:06.793378Z","type":"ads"}

[4039:775:1015/030030.054976:VERBOSE1:ad_rewards.cc(252)] Successfully reconciled ad rewards

@GeetaSarvadnya
Copy link

GeetaSarvadnya commented Oct 14, 2020

Verification passed on Samsung Galaxy J3 version 5.1.1 running Bravearm 1.15.74.apk

Verification passed on Brave v1.15.74 on Samsung Galaxy Tab S5e (Android 9.0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants