pull down to refresh

I've based the drawing on a traditional Major Arcana (22 cards, 0-21, with a 3 card spread.
Cards represent:
1st: Past
2nd: Present
3rd: Future
@Scoresby, added a /verify command.
You can now verify seed generation in your own terminal. Bot will give you instructions via /verify command.
Major update.
You can now verify the randomness was created fairly!
Just type /verify to the t.me/@bitcointarotbot
Randomness is based on a seed created by combining latest Blockheight Hash + UserId + Timestamp.
In your terminal, type:
node -e "
const crypto = require('crypto');
const seed = crypto.createHash('sha256')
.update('000000000000000000001393dd546c5e3ad8281bd161134a698bd15929afe3d9' + 'USER ID REDACTED' + '1773318801023')
.digest('hex');
console.log('Seed:', parseInt(seed.substring(0,8), 16));
"
And it will give you, in this case:
Seed: 1226359555
Which will correspond to your unique draw.
End yes, it only draws three random cards from the 22.
Read the readme on github, man.. If you don't believe me, II don't have time to explain it further. ;)
It picks from this TG sticker pack I made: https://t.me/addstickers/BitcoinTarot
22 cards, plus one face down card. I need the face down card for later stuff.
I'll send you some sats by tipping your previous comment so you can draw more times.
Look closer at the output after a draw:
Card order matters — draws use permutations (P(22,3) = 9,240), not combinations.
Each permutation also has multiple possible fortune outcomes.
PS, the project is now FOSS under GPL v3 on github:
Nah, you did not derail me. You presented a wonderful addition!
Implemented it tonight! Here's how it works:
Each draw is seeded by SHA256(blockHash + userId + timestamp) — combining the latest Bitcoin block hash with the user's Telegram ID and a millisecond timestamp. This means every draw is unique per user, unpredictable in advance, and anchored to the Bitcoin blockchain.
Users can run /verify after any draw to see the exact block height, full block hash, seed, cards drawn, and timestamp — plus a direct link to that block on mempool.space to confirm it's a real block.
The odds stay fair — the block hash is just entropy, not a variable that changes win probabilities. The house edge is unchanged.
Once the code is open sourced on GitHub, anyone will be able to fully reproduce any draw from those three inputs. Provably fair, Bitcoin-native. ⚡
Check out the new functionality if you wish: t.me/bitcointarotbot
And, play us a song on noderunnersradio.com ! ;)
Maybe it could be represented as a short code-block that pre-presents them the command they could run in their own terminal or on some website?
The odds should be fair, pardoning the house, ofc. ;)
Only using the block-hash as a randomness-seed doesn't make sense. Everyone would get the same cards.
Making a new hash to use as a seed for the randomness that is individual per user, based on the newest block + userid + long/strong timestamp might make it more enjoyable/personal.
If I try and implement it, I would like to make it verifiable. for users too.
I Need to think about that.
How to give users this ability?
I guess all they would need is the blockhash, their user id, and the timestamp that was used plus the hash that came from it to in turn produce the randomness of the draw.
I don't know how much space it would take in the TG bot's text baloon to add all that.
Perhaps a better plan for the website.. Or maybe add a command..
I need to think about it a bit more.. It should take up minimum space.
I guess, if it is a hash that combines the blockhash with with huserId and a timestamp.. should be okay.. no‽
I think maybe the seed for the randomness could be based upon: seed = hash(blockHash + userId + timestamp)
Need to think about how this will change things. If it introduces attack vectors... and how it will influence the eventual website which should also have session IDs and nostr integration... hmmm..
That is a great idea! No clue how to implement it.. but I will def. give it some thought. Thank you!
Major update. Random seed generation by hashing latest blockhash, userId, timestamp, is now working. You can verify this yourself by giving the bot the /verify command and checking in your own terminal!
Reed more here: #1452677