This can be achieved with techniques similar to anonymous credentials. However, an additional consideration is double-spending protection: we need to prevent customers from, say, using the signature S certifying 100 points to earn rewards costing 90 points, then discarding the remainder signature S’ on the updated point count of 10, and instead using the signature S to spend 100 points again. In this process, the customer would never actually “lose” points, being able to just use their maximum point count again and again.
Our goal is to create systems where double-spending can be prevented and detected in a way that still respects the privacy of honest customers. Such systems can also be used for other applications where double-spending is an issue, such as bus tickets, digital currencies, etc.