TL;DR: I wanted to learn how the Lightning Network operates. So I came up with an idea for a jackpot site using the Lightning Network to handle micro-payments. Operating a Lightning node is complicated and challenging for a beginner. Using custodial wallets like Wallet of Satoshi, BlueWallet or Breez is easy to use but not your keys. Please come by and help me test my Lightning integrated new website. I’m happy to help anyone that’s new to Lightning setup a wallet and play a game. It all helps with learning and adoption, that’s why we’re all here! Long Bitcoin, Short the Bankers!
Check:
https://blockwisdom.comIntroduction: Welcome to a brand new concept in random number seeding. Generating a truly random number is quite hard. You could use the current time, divided by the RPM spin of your hard disk, squared by the temperature of your CPU, and so on. Other extreme methods include measuring quantum fluctuations in a vacuum, see ANU Quantum Random Number. All these methods are fine but none of these are really verifiable by a 3rd party. Whoever running the system can change the outcome. I'm not saying they do, simply stating that if the payoff was great enough to alter the 'reported' outcome they could. So what's different here? We're using the Bitcoin blockchain itself as the arbitrator. Every outcome is not only provably fair but verifiably fair and immutable. Trying to cheat this system is impossible.
So that’s the pitch. Make a website using the idea of whoever’s guess is closest, wins the jackpot; using Lightning to handle all the incoming and outgoing payments. I started to look around at other fully functional websites offering Lightning as a payment method. It turns out most use a 3rd party like OpenNode or CoinGate. To me, this defeats the whole purpose of Bitcoin. Why build a website/offer a service/offer Lightning as a payment method if you don’t even own or control your funds. A payment processor could simply turn off withdrawals and it’s over. Not your keys, not your coins!
It’s been quite a learning experience for me. I think the most frustrating thing to figure out and attempt to solve was channel capacity. For example, with a fresh new wallet setup on Bitcoin Lightning for Andriod (blue bolt logo), you can open a channel to anyone fine, but trying to receive money won’t work. I think for a beginner/adoption this is the greatest hurdle to understand/overcome.
You need to spend money so the other side has some collateral to send back. One explanation I read was, opening Lightning channels are like a full glass of water, I need to tip some of my water into your empty glass so my glass has some room to fill it back up, it can’t overflow. Another one is like beads on a string. The number of beads is up to you but if all the beads are on your side, the other party can’t push any beats your way because you have them all. There’s ways to fix this. Either spend into the channel or buy incoming channel capacity. On the spend side, you can use websites like lightningconductor.net which allow you to send money to their Lightning node, from your new channel, and they’ll send the coins to your on-chain Bitcoin wallet. This is a simple way to empty your glass or push those beads to the other side and still retain all your money, minus LN and on-chain fees. For incoming capacity, you can use LNBig and get 400k satoshis of incoming capacity for free or lightningto.me, or you can pay lightningpowerusers.com or bitrefill.com to open larger capacity channels to you for a small fee.
For a beginner or someone new to Bitcoin/Lightning, using a custodial wallet like BlueWallet, Wallet of Satosh or Breez is far easier than trying to setup channels and buy or massage incoming capacity. You can simply install the application and using lightningconductor.net BTC to LN you can send some Bitcoin and they’ll forward it on to your lightning wallet, for a fee. These custodial wallets accept incoming transactions of 1 million satoshis or more. So now you’ve got a working wallet that’s got a few thousand satoshis, keep reading!
How to play: Two things are verifiable on the blockchain, time between blocks and transactions included in that block. First choose which block#, by default it will be the next one coming up. Then choose a public alias, others will be able to see your bets but they won’t know if you’ve paid or not, only you can see that. Next, guess the time it will take to mine the next Bitcoin or the number of transactions in that block. You can make multiple guesses. If you want to place a number of spread bets, I suggest opening a spreadsheet and getting it to generate the times or transactions for you. For example, put in 2300, then 2350, 2375, 2400, then drag down to generate as many in the sequence as you want. You can bet a maximum of 25 per invoice. This will hopefully ensure the small transaction amount will be successful. Once you’ve generated an invoice, pay it from the QR code or the lightning bolt11 string.
Now you’re ready to go. Wait till the next block goes active or the block you’ve bet on and you’ll see your bets and everyone else’s. Most importantly, what the final jackpot is. Unpaid invoices are discarded. If the block rolls over while you’re making up your mind the page will refresh and you could lose your input. Please plan your bets in notepad or a spreadsheet. I know this is annoying but I never claimed to be a UX coder/designer! It was a struggle getting all the css, ajax and javascript working, ahhhrrrrggg!! Next is the interesting part as this game can become competitive.
Game theory: As others make bets, you can encapsulate theirs. For example, they guess 2750 transactions, you can bet 2749 and 2751. While at first this seems unfair, what it doesn't show is what bets have been paid for and what have not. Only you can see your own bets that are paid and unpaid. To everyone else they look like paid bets. Only when the next block/jackpot starts can you see what's been paid for as unpaid bets are discarded. By placing dummy bets, unpaid, you can sucker someone in and greatly increase the jackpot payout at no cost to yourself. You can also use the same alias, for example, open up two different browsers, one for real bets and one for fake bets. This is why there’s a 25 bet limit, I don’t want people going too crazy with this. You can check your bets in the footer bar under ‘previous bets’. Also, IMPORTANT, please keep track of your account number at the top. If your session or browser has a problem, you can lose access to your bets and jackpot winnings. If this happens and you receive a new account number, simple use the claim jackpot in the footer to claim your winning jackpot. If you don’t have this, I can’t help you if something goes wrong. Rather than having a login/password system you have a unique account id. Don’t lose it! Now back to the blockchain.
What a minute… I though it took 10 minutes to confirm a block? Not always, actually it does this very rarely. If you average out every block over time, it averages around ten minutes. A block is confirmed when a miner takes transactions from the memory pool, up to ~1.2mb worth. Next, now this is the hard part, they need to generate a hash for that block, but it needs to start with X number of leading zeros. To achieve this, they use a random number called a nonce to seed/salt the hash and hopefully, it contains X number of zeros at the start of the block hash. If not, discard and keep trying. The winning block contains the miners local time, which can sometimes be wrong. This is why sometimes you get negative block times. See block #180966 then the next block, #180967's time stamp is before the first one! Who cares, as long as the later block references the previous block to keep the chain intact. You can’t guess negative numbers but you can guess 0 seconds. Which I guess is like betting on the green zero in roulette.
Ready to play?Each bet is worth 5,000 satoshis. I wanted it to be expensive enough to prevent spam and also the jackpots be large enough that it would be worth playing. I hope you have fun.
Website is
https://blockwisdom.comMy Twitter handle is
@nixdiceIf you have any questions or issues, please contact me here or on Twitter I’ll try my best to sort it out quickly.