It seems like when I give the Oraclize query a N of 4, it always returns a 19 digit number, this might be a coincidence but I think not. What if I actually want a number between lets say 0 and 10 * 10^18?
Is this possible? This is how how my Oraclize looks now:
oraclize_setProof(proofType_Ledger); // sets the Ledger authenticity proof uint N = 4; // number of random bytes we want the datasource to return uint delay = 0; // number of seconds to wait before the execution takes place uint callbackGas = 200000; // amount of gas we want Oraclize to set for the callback function bytes32 queryId = oraclize_newRandomDSQuery(delay, N, callbackGas);
And in the __callBack
uint maxRange = totalEth -1; // deduct one so that when one gets added later it cant be bigger than the total eth. randomNumber = (uint(sha3(_result)) % maxRange) + 1 // this is an efficient way to get the uint out in the [1, maxRange] range