Avatar
Science Genial
b0510a0c238fcf43a9bcc059ce0c22db747efc529cec95f246302a3a12716ced
đŸŽ™ïžEntertainer, 👹‍🍳 cook, đŸ‘šâ€đŸ’Œadvisor and consultant for #Bitcoin focused projects.

LMAO I'm winning big time on nostr:npub1nstrdc6z4y9xadyj4z2zfecu6zt05uvlmd08ea0vchcvfrjvv7yq8lns84 đŸ˜ŽđŸ«°đŸŽČ

#nostr #game #plebchain

b3mZ3Pt3Fjiq_TbFZmbj70z3J85FHAhZzwGBL6OfLvg

1ïžâƒŁ What would happen to your #Bitcoin if you were to disappear?

Or if you were unable to access it due to life's uncertainties?

Have you heard about Liana Wallet?

Join me and nostr:npub14glkj3cmlv9d7un93c38j2x39h7z0xfmtgahn2dhqmr2d6da323srfrkg0 for an online workshop and learn how to protect your funds. đŸ§”â†“

2ïžâƒŁHow can you delegate access to your coins if you are no longer able to manage your #Bitcoin keys?

We'll explore together the 'inheritance' or 'life insurance' scenario in a 100% disintermediated manner.

We will cover the prerequisites, roles, wallet functionality, and most importantly: PRACTICE.

3ïžâƒŁFor those who want to participate live:

You will have the opportunity to ask questions and engage in real-time by joining the conference room on Sunday, August 25, starting at 6 PM UTC.

You can find the link below:

https://meet.jit.si/workshop-liana-scenario1

4ïžâƒŁFor those who do not wish to participate but are still interested:

You can watch the workshop live via streaming on 𝕏 (and somewhere on #nostr if I manage to understand how to!)

If you are not available on Sunday, August 25, starting at 6 PM UTC, don't worry; the replay will be available!

5ïžâƒŁAre you in?

There is no need to download Liana Wallet in advance.

⚠The workshop will take place on a test network. No need to synchronize the blockchain; we will provide you with a fork of the application running on a server to save time!

6ïžâƒŁTell us what you think!

There is no possibility to click on a “reminder” as this is not a “space”.

Don't hesitate to let us know if you're interested and if you'll come, or even repost this note for visibility!

Suite à la demande générale, voici la rediff' de l'atelier en ligne autour de LIANA avec des niveaux sonores corrigés!

Merci Ă  tous les participants et Ă  mon collĂšgue nostr:npub14glkj3cmlv9d7un93c38j2x39h7z0xfmtgahn2dhqmr2d6da323srfrkg0

Quel outil aimeriez-vous découvrir par la pratique avec nous pour une prochaine session?

#nostrfr #selfcustody #inheritance #wallet

https://x.com/science_genial/status/1817827865884328057

Replying to Avatar NostrDice

TL;DR: NostrDice is a provably fair game built on Nostr and Lightning.

# Why build NostrDice

Nostr has been around for a while now, but we’ve only used it as a social network. We had not had a chance to look under the hood to see how things work and what you can do with it.

We wanted to get our hands dirty. But we didn’t just want to follow some tutorials; we wanted to build something fun and see how far Nostr could take us.

After some brainstorming, we landed on the legendary game SatoshiDICE. Why not bring the OG of all Bitcoin games to Lightning using Nostr?

> We are going to build our own SatoshiDICE, with blackjack and hookers

NostrDice is SathoshiDICE on steroids. I mean, it’s built with Nostr and Lightning.

## Design Goals of NostrDice

Before we jump into it, these are our design goals for the game.

1. Provably fair. The NostrDice server must not be able to control the outcome of a die roll. Players must be able to verify that the NostrDice server is not cheating.

2. Easy to use. The game should be compatible with any Nostr client (which supports Zaps). No new clients should be required to play the game.

3. Have fun building it! This was the main goal if we’re honest :D

Looking into how Zaps work we quickly figure out a way to use them to place bets and pay out lucky winners.

### How NostrDice Works

We set up 3 accounts on Nostr:

- NostrDice Game: This is where you play. Zap your chosen multiplier note, roll the die and win some sats, sometimes. nostr:npub1nstrdc6z4y9xadyj4z2zfecu6zt05uvlmd08ea0vchcvfrjvv7yq8lns84

- NostrDice Nonces: Here you can find proof that the server is playing fair with your dice rolls. nostr:npub1nstrdc23h57te608p6rx90lhay86ny5lpm9jpnxquzv9fnvmpfhqnpzcwp

- NostrDice Social: A place for us to promote the game. Follow us to get the latest updates. nostr:npub1nstrdc28zag3wcwwsc5t725t03h3hg9ard4vg425m4dvv7vqnmjsn076qj

1. Commitment to a Secret Nonce

A new round starts when the NostrDice server posts a commitment to a nonce on nostr:npub1nstrdc23h57te608p6rx90lhay86ny5lpm9jpnxquzv9fnvmpfhqnpzcwp. The server does this *before* receiving any information from the player, so it can choose the nonce based on the player’s input.

2. **Placing a Bet**

The player chooses their multiplier and wager by zapping one of 11 notes on nostr:npub1nstrdc6z4y9xadyj4z2zfecu6zt05uvlmd08ea0vchcvfrjvv7yq8lns84. The multiplier also determines the target the die roll needs to hit. For example, to win a 2x multiplier, the player must roll a number lower than 31784 (out of 65535 possibilities).

3. **Determining the Outcome**

The server calculates the player’s die roll based on the secret nonce, the player’s npub and the zap memo. Player’s are encouraged to use the zap memo to make it impossible for the server to anticipate their input to the die roll.

4. **Immediate Payouts**

If the player hits the target, the NostrDice server will pay out instantly.

The server zaps the player’s npub to credit them with their winnings. To this end, the player must have a valid LNURL configured if they want to get paid!

5. **House Edge**

The server retains a small house edge on every bet. For a specific

target, the payout is slightly less than the true odds to account for

this edge.

### NostrDice as a Provably Fair Game

The key to NostrDice being fair is that the outcome of a die roll is random and verifiable. For an in-depth explanation on this, check out the https://github.com/nostrdice/nostrdice/blob/4419cd8f4592fd7d443a22d594b95f80aee5287c/GAME.md in our repository https://github.com/nostrdice/nostrdice/. But here is a summary of the main ideas.

**Commitment Scheme**

NostrDice commits to a nonce before the round starts by hashing it and publishing the hash on Nostr for everyone to see:

```

nonce := gen_32_bytes()

commitment := sha256(nonce)

```

**Roll Formula**

When the player places their bet, the nonce is combined with the player's npub and zap memo to generate the die roll:

```

roll = bytes_to_decimal(first_2_bytes(sha256(nonce | player_npub | zap_memo | index)))

```

To prevent the server from predicting outcomes based on the player's npub, the player submits their own randomness via the zap memo.

Additionally, a roll index is included to allow the player to roll more than once with the same nonce.

**Verification**

The player can independently compute their roll after the nonce is revealed. They can also verify that the revealed nonce matches the original commitment:

```

original_commitment == sha256(revealed_nonce)

```

### Lessons learned

Building NostrDice was very fun and not that hard! It’s easy to see why the Nostr ecosystem is flourishing: the Nostr protocol is super simple.

- Dev environment: Building a Nostr client is super straight forward. There are plenty of libraries available, but we went with the https://github.com/rust-nostr/. However, setting up a dev environment was not so easy. We ended up with an involved `docker-compose` file and a `just` file to spin up a dev environment consisting of:

- `bitcoind`.

- Two `lnd` nodes: one for the player and one for the server.

- A Nostr relay via `nostr-rs-relay`.

- `nostr-wallet-connect-lnd` so that the player can zap a multiplier note with their LND node.

- An LNURL pay server for the player to receive payouts.

- `nostrdice`: the game server itself, acting as a modified LNURL server.

- Note limits: Our nonce account needs to publish notes regularly and we quickly ran into the limits of publicly available relays: we got banned. Because of this we decided to post less and run our own relay which again, was super simple. Since Rust is our first language, we decided to go with https://github.com/scsibug/nostr-rs-relay.

- Production testing: This is the biggest hurdle we encountered. While for “normal” social media usage clients like Primal, Snort or Damus work well, when wanting to jump between different accounts, we quickly ran into UX issues. The setup which worked best for us was using the Alby browser extension with different profiles. I believe things can be improved here. For example, a browser extension supporting multiple Nostr profiles, where profiles are locked to one tab/website only. This way we can be logged into multiple accounts on different profiles at the same time. We also ended up using noStrudel as our favorite browser-based client.

- No signet support on web clients. Zaps are always assumed to be on mainnet.

Overall it was great fun to build on Nostr for the first time, and we learned a lot. I hope you also enjoy this nostalgic tribute to SatoshiDICE on Nostr.

cheers,

the 10101 team

## Links

- NostrDice Social: An account only used for social posts, follow along to stay up-to-date on any announcements. nostr:npub1nstrdc28zag3wcwwsc5t725t03h3hg9ard4vg425m4dvv7vqnmjsn076qj.

- NostrDice Game: The main game account. Where the static multiplier notes are hosted. nostr:npub1nstrdc6z4y9xadyj4z2zfecu6zt05uvlmd08ea0vchcvfrjvv7yq8lns84.

- NostrDice Nonces: This account publishes nonce commitments and reveals nonces at a regular interval. nostr:npub1nstrdc23h57te608p6rx90lhay86ny5lpm9jpnxquzv9fnvmpfhqnpzcwp.

- NostrDice on X: x.com/nostrdice

- NostrDice source code: https://github.com/nostrdice/nostrdice/.

- NostrDice relay: wss://relay.nostrdice.com.

- nostr:npub1u8lnhlw5usp3t9vmpz60ejpyt649z33hu82wc2hpv6m5xdqmuxhs46turz we just can’t help ourselves, but we noticed that a lot of the libraries we used were either built by or contributed to by Ben. Among others, we used and built on:

- https://github.com/benthecarman/lnurl-rs: An LNURL pay server.

- https://github.com/benthecarman/nostr-wallet-connect-lnd: A NWC server to control LND.

GM

The first game on #nostr? 👀

#plebchain #coffechain

nostr:note1p6dsw3ws4uwxzrx9pvaqqk97dsq9fyfj5asr4c45xs8400vlu8sqqjk5ec

1ïžâƒŁQue deviendraient vos #Bitcoin  si vous disparaissiez?

Ou si vous étiez incapables d'y accéder à cause des aléas de la vie?

Avez-vous entendu parler du wallet LIANA?

Rejoignez-moi avec nostr:npub14glkj3cmlv9d7un93c38j2x39h7z0xfmtgahn2dhqmr2d6da323srfrkg0 pour un workshop en ligne et dĂ©couvrez comment protĂ©ger vos fonds đŸ§”â†“

2ïžâƒŁComment passer le relais si l'on est plus en capacitĂ© de gĂ©rer ses clĂ©s #Bitcoin ?

Pour ce workshop, nous vous proposons le scénario "l'héritage" ou "assurance vie" de maniÚre 100% désintermédiée.

Les pré-requis, les rÎles, le fonctionnement du wallet et surtout: LA PRATIQUE.

3ïžâƒŁ Pour ceux qui veulent participer en live:

Vous aurez la possibilité de poser des questions et participer en direct en vous connectant le dimanche 21 Juillet à partir de 20h à la salle de conférence, que vous trouverez dans le lien ci-dessous:

https://meet.jit.si/workshop-liana-scenario1

4ïžâƒŁ Pour ceux qui ne souhaitent pas particuliĂšrement participer:

Vous pourrez suivre le workshop en direct depuis le streaming sur X!

Si vous n'ĂȘtes pas disponible le dimanche 21 Juillet Ă  partir de 20h, pas de panique, la rediffusion sera conservĂ©e!

5ïžâƒŁ Vous ĂȘtes partants ?

Préparez-vous dÚs maintenant en téléchargeant le wallet @lianabitcoin.

⚠ Le workshop se dĂ©roulera sur un rĂ©seau de test. Pas besoin de synchroniser la blockchain, nous vous la fournirons via un serveur pour gagner du temps !

#nostrfr #france #workshop

Who wants me to show how to break down a whole fatty duck?

From collecting the liver and doing foie gras

To collecting tails and legs to do confit

To collecting all the fat to make duck fat and duck cracklings

And a beautyfull soup with the body neck and head?

Gm

What are you having for breakfast?

Vous pouvez contribuer a la fin des exchanges traditionnels centralisés!

Votez pour nostr:npub1c40rwav67rtl4pmy56wa8vhh8cynlm0zvhr96mcnd5xat74ldxmsm8ttqy ou bien RT le tweet ci-dessous!

Faisons du non-custodial le standard et empĂȘchons les prochains FTX!

Favorisons les outils qui permettent de faire d'avantage en restant souverains!

#bitcoin #nostr #nostrfr #nokyc #selfcustody

nostr:note1ujn9z8nm3s7v9j9dn2070lvs50esfe4w6srth2cndpp2dtjehkss2vedtg

The ULTIMATE carnivore / keto pizza recipe

❌ No flour ❌ no sugar

✅ High fat ✅ high protein

This pizza will never mess with your ketosis!

If you like it, let me know if you want a next-level pizza recipe for #Bitcoin's Pizza day! (Hint in this recipe👇)

#foodstr #foodporn #cooking #recipe #plebchain #gm

https://stacker.news/items/498499

HIGH PROTEIN, sugar-free chicken crust chorizo and pepper pizza 🐔🍕

❌ No flour ❌ no sugar

✅ High fat ✅ high protein

This pizza will never mess with your ketosis!

If you like it, let me know if you want a next-level pizza recipe for #Bitcoin's Pizza day! (Hint in this recipe👇)

https://stacker.news/items/498499

Bon appétit!

Rate de dressing of my dish!

This is tripe and beef trotters soup 🐂

Would you eat some, anon?

#food #foodstr #foodporn #plebchain

GM

Daily reminder to eat clean during the week

Who can tell what's in my plate?

âšĄïž 21 sats if you guess

🔄 Retweet if you mess

#foodstr #foodporn #nostrfood #GM