I bought a ticket to attend StrangeLoop 2017 (IMO, one of the best conferences out there), but something came up and I can no longer attend.

Since I'm learning about Ethereum, I thought it might be a good, fun idea to raffle off my ticket using a smart contract that is provably fair and publicly auditable.

The idea is that people would buy raffle tickets by sending X amount of ether to the contract, and once the deadline finishes the contract itself would randomly choose a winner. But I wonder...

If I were someone interested in participating in the raffle... how could I trust that if won I would actually receive the conference ticket?

In other words, more than trusting the contract, in this case, I would need people to trust me.

Is there anything I can implement in the contract itself in order to gain the trust from the users?

  • There's the project Uport about a online identity, it is in beta. AFAIK there's nothing in the Ethereum protocol about identity, if you use OpenPGP you can sign a message as a proof of your identity.
    – Ismael
    Aug 22, 2017 at 3:13

2 Answers 2


Just thinking out loud here, but the smart contract could put the money in escrow, and when the user gets the tix they could release it. You can convince them to trust you, but how do they convince you to trust them to release the escrow. You can't, unless the smart contract puts the escrow in an escrow.... infinitely recurse.

A worse problem is you can't generate random numbers. Look into it, you'll see it's not easy.


You could perhaps put in a deposit equal to the price of a raffle ticket (or the ticket itself) that you can't get back without the consent of the purchaser on receipt of ticket. You could lock up not only your deposit but also ALL the proceeds of the raffle; the amount would go to you only if the raffle winner calls a releaseFunds function or similar. If you have an in-person exchange, you could give the ticket to the raffle winner once they unlock the amount. You could also include a "failover" mechanism so that if the first person fails to unlock the account within a certain time frame, for whatever reason, then a new raffle winner is chosen, etc. Unfortunately, you have to be trusted not to buy multiple tickets so that you eventually win your own raffle... so maybe a portion of the ticket price needs to be burned. Then you would have no incentive to buy more than 1 - x the number of tickets purchased by legitimate buyers where x is the fraction of the raffle ticket priced burned.

If you want to reduce raffle purchaser risk, you could also let a mutually trusted third-party arbiter (eep!) call releaseFunds. This still does not solve you potentially rigging the raffle.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.