Pages:
Author

Topic: [RAFFLE] Chasing Casascius Gold Plated Bar, Provably Fair--FINISHED! - page 2. (Read 1415 times)

member
Activity: 90
Merit: 11
Author of Bitcoin Books, the latest: Mining Pools
buyers feel like they've paid too much for what they've received. I'd like to own one, but the price seems excessive.

Thats inaccurate sentiment, I would like to state that I've been very welcoming of the reviews from influential people and that this site's community is not reflective of the aggregate market. There was one (or two?) mixed reviews on this site primarily focused on a price:content ratio than any disdain for the project itself, and the email inbox contains very positive feedback. I'd love to have even greater production value in a future project, every outcome I can imagine increases the scarcity of this book which is good for the buyers and supporters! Trying to be as forthcoming here, hope that helps!





member
Activity: 90
Merit: 11
Author of Bitcoin Books, the latest: Mining Pools
Wait. won't "rng.random(1, 5000)" generate a new number on each and every request? If so you could just keep making calls to the site until you have a result you like and show us that or in other words this isn't provably fair.

Also, did you sell all 5000 books? If not, what happens if the winner is a book that hasn't been sold yet?

No, that's not accurate, because it is a seeded PRNG. If the code called rng.random multiple times after initialization it would give new numbers, but reinitializing it and running it will get the same sequence of numbers. By only showing the first number, we always get the same result.

You can test that code with the hash from block 419,000 and you should get number "610" every time, which was the whole point of showing the code, since we don't know what the hash for 420,000 will be, but can't be manipulated, then we can be confident in this outcome.

This is using node.js with "express" and "request" modules

Quote from: Mitchełł
Also, did you sell all 5000 books? If not, what happens if the winner is a book that hasn't been sold yet?

The spreadsheet associates all addresses with a book number (by row), so this is indistinguishable for your request. I haven't posted the spreadsheet yet as I haven't gotten addresses from everyone. Purchasers should be able to see their own address via their browsers "find" function. All the addresses will receive counterparty tokens and the winning address holder will also get the gold bar shipped to them.
copper member
Activity: 686
Merit: 603
Electricity is really just organized lightning
what's the price of the book anyway ?Smiley

$150. Currently BTC0.23 on his website.

That's high for the book with just a story Undecided

Agreed. I can appreciate the cost involved in manufacturing these, photoshoot, model etc - but buyers feel like they've paid too much for what they've received. I'd like to own one, but the price seems excessive.
legendary
Activity: 2828
Merit: 1222
Just looking for peace
what's the price of the book anyway ?Smiley

$150. Currently BTC0.23 on his website.

That's high for the book with just a story Undecided
copper member
Activity: 686
Merit: 603
Electricity is really just organized lightning
what's the price of the book anyway ?Smiley

$150. Currently BTC0.23 on his website.
legendary
Activity: 2828
Merit: 1222
Just looking for peace
what's the price of the book anyway ?Smiley
copper member
Activity: 686
Merit: 603
Electricity is really just organized lightning
Wait. won't "rng.random(1, 5000)" generate a new number on each and every request? If so you could just keep making calls to the site until you have a result you like and show us that. Also, did you sell all 5000 books? If not, what happens if the winner is a book that hasn't been sold yet?
yeah Mitchełł, good catch ! that's indeed THE question... Wink

Well this looks like it could get complicated  Undecided
legendary
Activity: 1120
Merit: 1002
Wait. won't "rng.random(1, 5000)" generate a new number on each and every request? If so you could just keep making calls to the site until you have a result you like and show us that. Also, did you sell all 5000 books? If not, what happens if the winner is a book that hasn't been sold yet?
yeah Mitchełł, good catch ! that's indeed THE question... Wink
copper member
Activity: 3948
Merit: 2201
Verified awesomeness ✔
Wait. won't "rng.random(1, 5000)" generate a new number on each and every request? If so you could just keep making calls to the site until you have a result you like and show us that or in other words this isn't provably fair.

Also, did you sell all 5000 books? If not, what happens if the winner is a book that hasn't been sold yet?
copper member
Activity: 686
Merit: 603
Electricity is really just organized lightning
What is the utility of the Counterparty token? Just to have a token? Or will it be usable for something in the future?

Think it's for transferring ownership of the book if sold on.

Neat! How does each book have a unique identifier or did I read that wrong?

Each book owner is entitled to an associated Counterparty token

everyone gets a counterparty token sent to an address they control and if they sell the book on the after market, make sure the new buyers gets the token too
copper member
Activity: 686
Merit: 603
Electricity is really just organized lightning
Will there be a 1 in 5000 chance, or will there be less ?

I am pretty sure all 5000 havn't been sold, and may not sell before the halving, so does an unsold book really still get a ticket in the raffle ?

What happens if an unsold book wins ? Surely this needs to be based on actual buyers of books sold ?



I'd tend to agree with you. I have no idea how many have been sold, but I'm assuming that you've still got a large amount of stock left photon? Why not use the PRNG seed to generate a number between 1 and ( number of books sold )? I'm sure you stated in the other thread that you have order numbers which will be used to check the winner of the draw? Surely this is a better idea?
legendary
Activity: 1722
Merit: 1000
What is the utility of the Counterparty token? Just to have a token? Or will it be usable for something in the future?
legendary
Activity: 1252
Merit: 1259
MONKEYNUTS
Will there be a 1 in 5000 chance, or will there be less ?

I am pretty sure all 5000 havn't been sold, and may not sell before the halving, so does an unsold book really still get a ticket in the raffle ?

What happens if an unsold book wins ? Surely this needs to be based on actual buyers of books sold ?

member
Activity: 90
Merit: 11
Author of Bitcoin Books, the latest: Mining Pools
Spreadsheet is here https://docs.google.com/spreadsheets/d/1wknANgxXkzlHgxaHc6G18M2bxpnjpHjnDayYW9ngCUg/edit#gid=0

In reaction to what Mitchell pointed out, in the event an unsold book wins the raffle it may seem unclaimable, so sales will remain open after the raffle.
member
Activity: 90
Merit: 11
Author of Bitcoin Books, the latest: Mining Pools

The Chasing Casascius book purchasers (www.chasingcasascius.com) are entitled to a raffle for the Casascius Gold Plated Bar featured in the book! Therefore we have developed a provably fair raffle using bitcoin's blockchain! There is still time to purchase a copy on the site before the halving to be included in this raffle.

There are 5,000 copies of the book, enabling purchasers for a 1 in 5000 chance of winning. If won the gold plated bar will be mailed to you. A spreadsheet will be shared with bitcoin addresses associated with each order by place in order.

The following javascript makes a request to Toshi.io using "request" framework, requesting information about block 420,000, and using the hash of that block as a PRNG seed to generate a number between 1 and 5000 using the RNG-JS library

PRNG's generate a sequence of random numbers, always in the same order, so by always displaying the first random number in the sequence of random numbers, we will always be able to see the winner. This code is running on a 64-bit heroku server.

http://ccltdcheckoutserver-live.herokuapp.com/raffle


 var blockNumber = 420000;
 requestServerToServer({
    url: 'https://bitcoin.toshi.io/api/v0/blocks/' + blockNumber,
    method: 'GET',
  }, function(error, response, body) {
    if(response.statusCode == '404'){
      res.json({"block height": "block 420,000 is not yet available",
                  "block hash": "please check in the future",
                  "winning book number": "n/a"
                });
    }
    else{
      if (error) {
        console.log('Error sending message: ', error);
      } else if (response.body.error) {
        console.log('Error: ', response.body.error);
      }
      else{
        
        var blockInfo = JSON.parse(response.body);
        var rng = new RNG(blockInfo.hash);
        console.log(blockInfo.hash);

        res.json({"block height": blockNumber,
                  "block hash": blockInfo.hash,
                  "winning book number": rng.random(1, 5000)
                });
      }
    }


If there's anything not provably fair enough, just let me know and we'll see if we can adjust it to be more transparent!

Aside from protecting the pseudonymity of the purchasers, the spreadsheet of bitcoin addresses will also be used to distribute the counterparty token to be associated with the each copy of the book. Purchasers will be able to see their address in the spreadsheet, after I collect more addresses from people. Only counterparty addresses or any other address where you control the private key!

The spreadsheet is here: https://docs.google.com/spreadsheets/d/1wknANgxXkzlHgxaHc6G18M2bxpnjpHjnDayYW9ngCUg/edit#gid=0

This is phase 2 in the Chasing Casascius project. Please stay tuned for Phase 3 - the distribution of the Chasing Casascius counterparty token to purchasers - and order your copies of the book before the halving!
Pages:
Jump to: