Guides

How to create an offer

In order to create an offer, you must have your own Bitcoin wallet, and a release address saved in your settings on the site.

  1. Press the button “Add new offer”, which can be found on the main page, “My offers” page or in the offer list.
  2. Enter title - it should be short, clear and unambiguous.
  3. Enter details of the proposed contract - they should be detailed and precise, give explicit, full and clear information about the upcoming event, and contain references to sources where the outcome of the event may be checked, and reflect your position against the event outcome.
  4. Specify odds, a numerical probability for the event’s outcome - if the odds are set 1 to 10, then in the contract you’ll have to deposit ten times more than your counterparty, and in the opposite direction, if the odds are set 10 to 1, your counterparty will have to deposit ten times more than you.
  5. Specify single contract limits - the minimum and maximum amount of bitcoins that you will be required to lock in escrow.
  6. Enter the offer balance - this is how much you're actually willing to lock in escrow in total, for all contracts combined, based on this exact offer.
  7. Choose the escrow deposit window - the time within which both parties (you and your counterparty) must transfer funds from your wallets to the escrow addresses Hodl Hodl generated and transaction should receive needed amount of the confirmations.
  8. Set date and time of contract settlement - the moment that the outcome of the event has already happened, and you with your counterparty will choose the outcome of the contract, who was right and who was wrong.
  9. Set the time your offer will be active until.
  10. If you want your offer to be visible to other traders after moderation, mark the checkbox “Enabled”.
  11. Save the offer and wait for its moderation. We’ll notify you when the administrators have taken a look at your offer!
What you should know
  • Offer details cannot contain anything illegal
  • Offer details should not be ambiguous and need to have a clearly stated single outcome
  • All offers are pre-moderated
  • In case you edit the title, description or the settlement date of an already moderated offer, it will be sent for re-moderation.

How to complete a contract

When you create an offer and someone accepts it, or you accept an existing offer, a contract is created.

  1. Go to the section of the website that shows the offer list, or wait for someone to accept your offer.
  2. If you want to find an existing offer, choose one from the list.
  3. Enter the amount of Bitcoin you will deposit in escrow.
  4. Click "Disagree with this prediction and create contract".
  5. After the contract is created, you must enter your payment password and wait until your counterparty has entered his payment password.
  6. Deposit Bitcoin into multisig escrow, and wait for your counterparty make the deposit.
  7. Wait for both deposit transaction to receive at least 3 confirmations.
  8. Wait for the event to take place.
  9. If the settlement date & time have passed, you and your counterparty need to collectively agree who was right and who was wrong.
  10. When the side that incorrectly predicted the outcome of the event admits defeat, the contract will be completed, and the winning side will be able to release both deposits to his Bitcoin wallet.
  11. Contract is now completed!
What you should know
  • If you don't agree with your counterparty on the event’s outcome, a dispute will be started.
  • In case one of the counterparties does not choose the contract’s outcome, a dispute is automatically started 3 days after the settlement date & time.
  • Service fee is calculated from the deposit amount made by the side that incorrectly predicted the outcome.

Multisig escrow

What is a multisig escrow?

Escrow is a P2SH Bitcoin multisignature address, which requires 2 out of 3 keys to sign the transaction.

Each time a contract is created between two parties, Hodl Hodl generates two unique multisig escrow Bitcoin addresses. Both counterparties then send bitcoins from their wallets to these escrows, and then bitcoins are stored there until contract completion. When the contract finalizes, the funds are released from escrow directly to the receiver’s wallet(-s).

How do users obtain their keys to escrow?

The user's key is generated in the browser, and gets encrypted by the payment password, that the buyer and seller had created, prior to, or during their very first contract.

When are the keys used?

Escrow keys are required in the following possible situations:

  • Contract is cancelled. In case the contract has been cancelled and the Bitcoin has been sent to escrow, sender(-s) can refund the Bitcoin back to themself by entering the payment password - as Hodl Hodl will automatically sign the transaction with it’s key.
  • Contract is completed. If everything goes well in the contract, the side who correctly predicted the outcome releases the Bitcoin from escrow directly into his wallet, by entering the payment password - and Hodl Hodl will automatically sign the transaction with it’s key. His counterparty is not able to refund from escrow - Hodl Hodl will not sign such a transaction.
  • Draw is declared. In this case, as with the cancelled contract, both parties can refund the Bitcoin back to themself by entering the payment password - as Hodl Hodl will automatically sign the transaction with it’s key.
  • Dispute is resolved in favor of one of the counterparties. When someone wins a dispute, then he can release the Bitcoin from escrow to his Bitcoin address by entering his payment password - as Hodl Hodl will automatically sign the transaction with it’s key. In this case, his counterparty will not be able to refund the Bitcoin from escrow - as Hodl Hodl will not sign such a transaction.
What does Hodl Hodl’s transaction signing process look like?

Client gets raw unsigned transaction, and when payment password is confirmed, the transaction gets signed with the user's decrypted key right in the user's browser. Then Hodl Hodl signs the transaction with it's key on the server side and broadcasts it to the blockchain.