Based!
View quoted note β
Schlaus Kwab
wavefunc.live
npub182jc...m4rf
https://wavefunc.live
https://earthly.city
(π½+β‘+π₯) * πΈοΈ = β₯οΈ
GM
What if #nostr is good for everything except social networking?
π I've built two more demos for state machines on #nostr β this time involving #cashu, with a few interesting use cases around custody and betting. β‘
In addition I've made the explanations more verbose and understandable, and rendered a video for every demo with Remotion π¬. The actors are now generatable per demo and persist across sessions.
Enjoy on https://schlaustronics.com/nsm π
Source:
π
β
/nsm/wager - Wager Β· decentralized escrow
The custodian holds nothing. Bettors lock stakes into 2-of-2 Cashu multisig and pre-sign every possible outcome; the oracle's only power is choosing which pre-signed package gets the second signature. The mint enforces β no party can steal.
/nsm/bet - Bet Β· oracle-resolved betting
Two bettors stake Cashu against an outcome. An oracle publishes what happened, and a payout scroll computes the winnings deterministically. Anyone replaying the chain can re-run the scroll and get the same numbers.
/nsm/counter - Counter Β· the smallest interesting state machine
Two players race to a target on a shared counter. Every interaction is a signed Nostr event on a single relay β no APIs, no shared database, no off-band coordination.
/nsm/rps - Rock Paper Scissors Β· fair play via commit-reveal
Both players publish a sha256 commit of their move before either reveals. The custodian re-hashes each reveal to verify it matches the prior commit before snapshotting.
/nsm/vote - Vote Β· time-driven voting
A roster of voters casts yes/no until the deadline. The custodian fires CLOSE_VOTING and FINALIZE herself β but both are gated by the SM's own deadline guard, so any watchtower can verify she didn't close early.
/nsm/badges - Badges Β· transferable digital assets
One shared kind:7500 ownership state machine, many minted kind:7503 badges, each with its own ownership chain under d-tag = imageHash. Transfers require m-of-n validator cosigns.
/nsm/scroll-counter - Scroll Counter Β· state machine with pluggable rules
Counter shape, but guards and actions are AssemblyScript-compiled WASM blobs (scrolls) published as kind:1227 events. Swap the engine tag, get different rules β the SM definition itself never changes.
/nsm/negotiator - Negotiator Β· propose, agree, spawn
Two parties iterate on a state machine definition until they agree, then a jukebox spawns the negotiated SM and reports the new machineId back. The negotiation transcript IS the contract.
/nsm/nested - Nested Β· parent + child state machines
A tournament parent SM invokes two child match SMs. Every snapshot carries the children's live state alongside the parent's β readable straight off the relay, no extra subscriptions.
/nsm/pool - Pool Β· decentralized-custody crowdfunding
Three stakers lock Cashu P2PK to a target with a refund timelock back to themselves. Majority yes funds the target; the custodian never touches the money β the mint enforces everything.
View quoted note β
GitHub
GitHub - zeSchlausKwab/nsm: nostr state machines demos
nostr state machines demos. Contribute to zeSchlausKwab/nsm development by creating an account on GitHub.
I hope you guys keep your tone in check while criticizing the #EU and have your facts well checked and verified. Just saying.


Gm
#amethyst are notes supposed to disappear after you touched/observed them? Is that like a quantum thing?
So guys, whos getting verified for a social network governed by democratic European law?


Not only that but they (or their engine scrolls) can also be dynamically negotiated by two or more parties and deployed.
View quoted note β
This weekend i have implement a basic library/feature folder and vibed a few demos for @Gzuuus state machine spec to:
- wrap my head around it
- see what can be done with it
- see if my instincts are right that this can be used as a basic smart contract vehicle
- what is the potential if we combine it with nostr-scrolls or just wasm snippets in general and where they belong
- have autistic discussions about it
All demos have a event/timeline inspector so we can see what's happening under the hood.
Check it out at: https://schlaustronics.com/nsm/
Source:
Here is a short description for each demo:
#counter β Counter
The smallest possible Nostr state machine: two players, one shared counter, race to 5. Every TICK is a signed kind:7501; a 3rd-party custodian validates it against the SM definition and publishes a signed kind:30078 snapshot. Click TICK out of turn and watch the custodian reject it with NO_TRANSITION β no off-chain coordination, no shared backend.
#rps β Rock-Paper-Scissors
Commit-reveal RPS over Nostr. Both players publish a hash of their move first; only after both commitments land do they reveal the cleartext, so no one can peek and play accordingly. The SM enforces the order: REVEAL inputs are rejected before both commits exist.
#badges β Mint + Transfer
Mint a badge from any image β the asset id is sha256(image_bytes), content-addressable by construction. Transfers run through a shared "Ownership" state machine that requires the validator to cosign before the transfer settles, blocking double-spends. Open the "ownership proof" panel on a transferred badge to see the cryptographic chain you can verify offline.
#scroll-counter β Counter, but the action is a WASM scroll
Same counter, but the increment isn't hardcoded β it's a WebAssembly module published as a kind:1227 event ("a scroll"). Pick plus-one or times-two, the custodian fetches the scroll off the relay and runs it on every TICK. Actions are now content-addressed bytecode anyone can author, publish, and audit.
#bet β Time-driven betting with oracle + payout scrolls
Two parties stake, the match has wall-clock start/end times, and the SM advances itself: the custodian schedules START_MATCH / CANCEL_BET / TIMEOUT inputs from a schedule table. Resolution is two scrolls β an oracle scroll that names the winner, a payout scroll that computes splits. Optionally, the custodian delegates scroll execution to a remote CVM scroll-executor over MCP-over-Nostr (per CEP-15).
#vote β Deadline-driven voting
Open a question with a deadline; voters cast kind:7501 YES/NO/ABSTAIN inputs. The custodian schedules a synthetic FINALIZE input at the deadline, tallies votes against a configurable threshold, and snapshots the result β no one needs to "close the poll" manually. Watch the countdown tick, then watch the SM transition itself.
#negotiator β Two parties agree on a SM, a jukebox spawns it
Alice and Bob exchange kind:7500 proposals over Nostr (machine definition + scroll source) until both sign the same one. The agreed bundle is then handed to a "jukebox" β a CVM/MCP server that spawns + custodians the machine on demand. The whole negotiation is on-relay; the jukebox tool call rides MCP-over-Nostr per CEP-15, encrypted via NIP-44 gift-wraps.
#nested β Parent SM invokes child SMs
A tournament parent SM uses XState's invoke to spawn two child match SMs (counter-style, race to 4). Alice TICKs match A, bob TICKs match B; each child's onDone flips a flag in the parent, and an always transition fires FINISHED once both children complete. The interesting bit: each child's nested state (count, value, etc.) round-trips through kind:30078 verbatim β getPersistedSnapshot().children is what makes it work.
View quoted note β
GitHub
GitHub - zeSchlausKwab/nsm: nostr state machines demos
nostr state machines demos. Contribute to zeSchlausKwab/nsm development by creating an account on GitHub.
> China's AI is on par with the US
Him admitting that is almost it's own story.
Happy 1. May


What exactly are they deciding in terms of Bitcoin and how is it relevant to bitcoiners?
View quoted note β
Claude + Blender is incredible. It just one shotted a fully parametric staircase with perfect defaults that just works. And before it was a fully rigged fbx of a jeep with turning wheels and steering. Then fully wired up demo in a web app.
I need to meditate for some time about what I could do with it.


Based


GM
Found a nostrich in the wild fighting against windmills on HN π



π» Visit https://wavefunc.live/ and enjoy some good old internet radio.
@npub1yy8n...lqpp got a facelift and a big update β¨ including apps for all desktop platforms and android π±π». Get them at https://wavefunc.live/apps because radio does deserve not to be drowned in 45 pinned tabs! The apk is also available via @Zapstoreβ‘
- ποΈ better and more complete station database on the relay
- π¨ total visual overhaul
- π reliable & intuitive nip-50 search and complete station index
- π migration from NDK to applesauce and better overall performance
- π more curated "featured collections"
- πΆ more reliable "now playing" @ContextVM for streams
- β€οΈ "now playing" songs can be favorited with rich metadata and persisted
- π intelligent handling of old "http" streaming sources
π Im also happy to report that the radio NIP has been adopted by another client: https://nostr.blue/radio
π‘ If you are interested in internet radio on #nostr then feel free to chime in and/or shill the NIP:
π οΈ Source: 
- ποΈ better and more complete station database on the relay
- π¨ total visual overhaul
- π reliable & intuitive nip-50 search and complete station index
- π migration from NDK to applesauce and better overall performance
- π more curated "featured collections"
- πΆ more reliable "now playing" @ContextVM for streams
- β€οΈ "now playing" songs can be favorited with rich metadata and persisted
- π intelligent handling of old "http" streaming sources
π Im also happy to report that the radio NIP has been adopted by another client: https://nostr.blue/radio
π‘ If you are interested in internet radio on #nostr then feel free to chime in and/or shill the NIP: GitHub
Add NIP-XX: Nostr Internet Radio by zeSchlausKwab Β· Pull Request #1975 Β· nostr-protocol/nips
What this adds
A standard for publishing internet radio stations on Nostr as kind:31237 events, enabling decentralized radio directories and cross-...
GitHub
GitHub - zeSchlausKwab/wavefunc: Internet Radio on nostr
Internet Radio on nostr. Contribute to zeSchlausKwab/wavefunc development by creating an account on GitHub.
Nostalgic imagination of a time that never exited VS. Fake image formed by algorithm selection
View quoted note β
French and Italian national Teams but without the immigrants.
View quoted note β
We should do more interest based community calls where we draw cool curves and formulas and shit. This is how they imagined the internet.
View quoted note β