ZkTickets - An event ticketing protocol using ZKP

Thank you for your questions!

In 2 days, I will post a link to the first version of the app and will create a youtube video to explain how it works!


This will be helpful
I would love to watch it
And experience how it will work

All the best

1 Like

Welcome to Season 4, this is such an amazing resource, I got a few questions;

  1. How does the ZKTickets protocol ensure that event attendees’ identities and ticket information remain private while still being verifiable by the organizers?

  2. How does the ZKTickets protocol prevent scalping and fraud, which are common issues in traditional event ticketing?


Great questions.

  1. To ensure the ticket information remains private, the protocol uses a zero-knowledge proof. The ticket contains an encoded secret that is created client-side. The secret is hashed and this hash is stored on-chain. The wallet address of the attendee is public, we can see who made the payment.
    When the tickets are verified a zkSnark is created using the secret on the client side, which is verified on-chain.
    This way the ticket information never leaks to the public blockchain.

  2. I’m currently not building anything to mitigate bots, and ticket resale is not supported at the moment.
    Any ticket that is resold is considered compromised because the secret inside it could be known by multiple parties. So there is no way to profit from scalping if there is no resale. You can give the ticket to somebody in person, if you know that person, but resale is highly discouraged.

It’s possible that a malicious user would create a event that is similar to another one to phish users. You can verify that an event is authentic if you know the event creator’s address. All events will have their own separate link, so if you follow an authentic source you are good to go and you can double check the public key of the event creator to make sure you send money to the correct address!


This is a great project and i really love the concept behind it.

We all know the percentage of crypto lovers in the world is quite small compared to non crypto lovers.

Now my question is, is there a way payment of tickets can be done through bank accounts or traditional mobile money wallet system.

Which will serve as an optional approach to those who are not in the crypto world.

I believe given people that option will eventually lead them to learn of the other option that is crypto related. I dont know if i am making any sense here.

Thank you and welcome to season 4, wishing you all the best.


Nice.Real world issue being solved at its best.Welcome


Good question,

Good consideration for the non coiners

1 Like

Hola, me parece muy acertadas las reflexiones sobre las billeteras y la manera que se está construyendo el proyecto, espero enlace para probar. Gracias por sus explicaciones.


I’m very excited at this, given the hassles of procuring concerts and sporting events tickets in real time. For more clarity, here’s a few questions;

Are there any plans to support ticket resale in the future? If so, how will the protocol handle the issue of compromised tickets due to the client-side secret being known by multiple parties?

How does the protocol handle cases where an attendee wants to transfer their ticket to someone else? Is there a way to do so securely?


Traditional finance is not going to be supported and not in scope for this hackathon.
For now I’m only planning to use BTT on the Bittorrent chain and later add erc-20 tokens and deploy on other chains.

I’m really just working on the bare-bones protocol at the moment


After I have done the first release, which I will share here in a day, I will work to add a transfer functionality.

Transfers would work on the smart contract level, so the physical ticket can’t be transferred.

It would work like, you would use your ticket to request a transfer to address x , then address x needs to create a secret for his ticket, and when address x accepts the transfer he sends the hash of his secret to the blockchain, he can send payment if it’s a resale and the seller’s ticket is invalidated.

so you understand, you can’t transfer the secrets, a new one needs to be created on the recipient side and the smart contract does the accounting to swap validity from one to the other.


I wanted to buy an event ticket for a program but I didn’t get the tickets though money was deducted from my accounts and I had to lodge several complaints before I could get the refund. I want you to also include in your project a smooth process of reversal incase the purchasing processing could not go through.
Congratulations in advance…


The way it works here is you have the ticket first and then you pay, because the tickets are created on the client side and needed for the purchase.

The tickets will be downloaded when the payment is confirmed automatically so as long as you don’t close the website and the transaction doesn’t fail, the ticket download will start. If the transaction fails then you don’t pay anything so this is not really an issue.

For refunds you would need to contact the creator of the event because the protocol just forwards the value to them so there is no value stored inside the smart contract.


Ok i just hope the project develops to an extent where non coiners will also have their fair share.

Now my next question is;
Let say i buy a ticket for an event in Turkey :tr:.
I have made my payments, received my tickets and an unfortunate incident happens at where the event occurs, “not to remind anyone of this earthquake crisis” but an earthquake happens.

Is there a way the project can ensure i get a refund of my money paid??

Thank you


Thanks for the questions!

You would need to contact the event organizers for a refund always.

I’m creating a protocol and not a service so there is no middle man to guarantee any refunds and there is no insurance.

1 Like

If they decide not to refund then your money is lost. Thats wild but thanks for the clarification.

Don’t you think bad actors will capitalize on this and create fake event since the decision to refund solely rest on them.

Is there a way in the future a third party insurance project could be integrated in the project to cater for these kind of unexpected losses?

Also Will clients have the opportunity to send review about event planners.

As a good or bad review of an event planner will go a long for a client to make inform decision to partake in a particular event or not.


All those could be implemented on top of the protocol.

It’s like , http is a protocol to access websites. You could visit a scammer’s website, http will get it for you, you can send your credit card http will do it, but if you get scammed it’s not http’s fault.

same here, it’s a protocol to connect two parties without a middle man, to sell tickets. It includes a direct payment, ticket creation and ticket verification/invalidation.

Anything else is outside the protocol and it is another layer.

so if you want to create insured event tickets, you create an LLC, write a legal contract, make your attendees sign it , then redirect them to the page where they can purchase the tickets, then in case of a cancellation, the attendees are insured.


Thats exactly the layer i am looking for. Thanks for the clarification and hope we will get developers to build on top of this great project. Can’t wait for the site to try it out.

Thank you for your patience



  1. I edited the first post to include a link to the application and instructions to use it.
    The app is an MVP that contains all the features outlined in the picture I posted.

  2. I am not going to get away relying on mobile web3 browsers (Slow performance, not usable) so a Native App is under heavy development for in-venue QR code scanning!

My goal is to have the app done and released on Google Play in 15 Days so it will be included in the hackathon submission.

The Mobile app is a non-custodian wallet with a qr code scanner that interacts with zkTickets smart contracts to handle the tickets for events.

So now I’m going to buidl and do this!

Thank you guys for all the questions and interest, I learned a lot.


Checked the website, looks very simple to create an events. Thanks
I stopped at where I needed a MetaMask connection, please is it live or this is just a test because I want to go ahead a create some event and see

1 Like