Every ticket could have a key pair. Swap, sell, trade with another by transferring the private key. Tickets have a unique relay. Seems simple enough, what am I missing?
Discussion
How would you transfer the private key instead of sharing it?
Yes, semantics I suppose but good point. One would *share* the private key. Perhaps behind a posted invoice that once paid unveils the private key to be shared.
But if I share the private key of my ticket with you, I can take your payment and still use the private key to redeem the ticket before you
I see the dilemma, it's the Byzantine General's problem. I claim to have the key published to a text file which is behind a paywall. Purchaser sends sats, no key exists. Seller won't unveil key before payment. So it is rife for scammers on both sides. Perhaps a multi sig solution but a third party signer needs to verify that the key is valid and we're back at "trust" scenario.
I'm glad you challenged me on this, it has become a curious puzzle that I'll continue to ponder, in the solution will be something that can be used beyond ticket scalping 😎
Cheers
Well, Bitcoin is the trustless solution.
I hate to say it, but ordinals could help here...
But maybe also, on the ticket issuer side; issue the tickets to the specific npub; and then if you want to transfer the ticket, you have to sign the note describing the new npub for transfer and sign.
All on a single relay.
For each ticket ID, you should be able to lookup the last npub holder.
Moreover, if you issue the tickets on open source alternative to EventBrite, anyone will be able to check through API whether the ticket has been redeemed yet or not.
So each transfer, could be done in trust-minimized through some Bisq-like market coordinator where you escrow the money until the transfer of verifyibly not-redeemed ticket is confirmed.
==
The public chain history should prevent anyone from double spending the ticket to multiple buyers, or redeeming it when already transferred.
It requires willingness on the ticket issuer side; but it shouldn't be that difficult since most of the platforms seem to already support this.