Why you guys asked for public key(?)
Because multisig. This is how multisig Bitcoin transactions work.
You give Gamblor a public key and make an offer. An interested better also gives Gamblor a public key while saying "I'll take you up on that offer"!
Gamblor now has 2 public keys, one for the offer one for the better. So it creates a third public key. (Technically it creates third and fourth public keys, I'll get to that in a minute).
Now we can create a multisig 2-of-3 payin address (one of those Bitcoin addresses starting with "3"). The better can pay in and the offerer can pay in.
While these funds are here in these multisig addresses, they are safe on the blockchain, and do not exist in any single wallet that could be compromised. In fact, in this state, Gamblor itself has no access to spend your funds. If someone broke into our back-end there would literally be nothing for them there to steal. The worst thing an attacker could do on our back-end is to affect the outcome of games which limits damage somewhat (working on audit software to check this externally and hit a big shuttoff button if triggered),
Gamblor actually creates 2 2-of-3 addresses for each bet. This is just so the pay-in addresses for the offer maker and for the better taking the offer are separate - so we can tell who paid in and who did not. If we just used one address for this pay-in purpose, it would be difficult or impossible to say which team the funds were paying for.
Which brings up an important point about our system:
Only ever play from a wallet that can sign raw transactions from your keys! You will need that feature to collect your winnings.
We're thinking having our own version of Electrum where you can play directly from wallet will make this a lot simpler for people. Or possibly even just an Electrum plug-in is enough.
A little light reading to keep under your pillow:
Bitcoin.org's words on multisig:
https://en.bitcoin.it/wiki/MultisignatureThe example I used when making gamblor.bid:
https://gist.github.com/atweiden/7272732