Validating a ticket is a hard task. Especially with a hyped event. The event official need to validate if the ticket is a right ticket, and in some event, need to validate if the ticket is in the right ownership.
For the first problem, we can tackle those with symmetrical cryptography. We can have a protocol with specific variable, or key, to generate a ticket serial number, then with those variable or key in hand, we can reverse back the ticket serial number and check if it is truly generated by our system and not a forgery.
We can have a server that have an endpoint to receive the key, and return whether the key is a forgery or a real key.
Or we can distribute the key to each official with a small offset of time to the event started, so that forgery by the official can be prevented. To distribute it, we can send the key to the client app that official use to validate the key. This technique is more efficient, than using a server app, because there will be fewer failure points.