The EffectStream presale launchpad already handles Cardano L1 payments. This post covers what comes next: a commitment-based presale that settles on Midnight - a Cardano Partner Chain where every block is validated by Cardano SPOs - and lets buyers reserve a spot in multiple campaigns at the same time without locking their funds for any of them.
Farcaster is an EVM-native platform. When you build a Mini App on Warpcast, the default assumption is that your users have a Base wallet. But Cardano wallet holders -- Lace, Eternl, Nami, NuFi users -- are in the Farcaster ecosystem too, and building two separate apps to serve both audiences is the obvious option. With EffectStream it isn't the necessary one.
This is a build log for the Movie of the Year Poll: five 2024 films, three ratings (Best / Meh / Worst), one vote per wallet per movie, live results. The same Postgres schema, the same state machine, and the same frontend serve both paths -- the only difference is a config file.
This is the final part of the series on making on-chain wallets feel like normal apps. Part one delegated non-financial signing to a device key-pair; part two replaced the seed phrase with a social login backed by a 2-of-3 secret. Part three removes the last piece of friction: unlocking the wallet with the device's biometric authenticator - Touch ID, Face ID, or a platform passkey - no seed phrase, no browser extension.
As with the rest of the series, this serves the Cardano ecosystem first and works across the chains EffectStream supports.
This is part two of a three-part series on making on-chain wallets feel like normal apps. Part one covered device-specific key-pairs - a browser key your main wallet delegates non-financial signing to. Part two answers the next question: where does the main wallet come from in the first place? For most people, "write down 24 words" is where onboarding ends. Social login replaces that with a sign-in they already use - backed by a 2-of-3 secret so no single party ever holds the wallet.
This is a Cardano capability first: the wallet derives a standard Cardano wallet (CIP-1852, payment and stake addresses) alongside EVM and Midnight wallets, all from one identity.
This is part two of a two-part series on building a presale on Cardano. Part one covered the on-chain contract - how a purchase receipt is enforced so a participation is only recorded if the buyer really paid. This post is about the app on top of it.
Standing up a presale used to mean wiring a sale contract, an indexer, a payment flow, and a UI before you could take a single order. With the EffectStream preorder launchpad, creating a campaign on Cardano comes down to two steps: clone and publish. This post walks through the app built on top of that contract - and the piece that makes the Cardano side genuinely fast: UTxORPC.
This is part one of a three-part series on making on-chain wallets feel like normal apps. Part one is the foundation: a device-specific key-pair that a player's wallet delegates signing to, so an app can submit actions on their behalf without a pop-up every time. Part two adds social login with a 2-of-3 secret, and part three adds biometric unlock - both build on the key-pair described here.
This is a Cardano capability first: it works with the standard Cardano browser wallets (Lace, Eternl, Nami, NuFi), and the same code works across the other chains EffectStream supports.
A fiat-to-crypto payment rail lets a player buy an in-game item with a card — no wallet to install, no tokens to acquire first, no bridge to cross — while the purchase still settles on-chain as verifiable ownership. Effectstream payment-app is a small but complete template that wires one of these rails (Transak) into an Effectstream app: a fiat-or-crypto in-game item store backed by an on-chain contract and an off-chain indexer. This post introduces the technology, explains what it unlocks and why we built it, and then walks through how the repo is wired — the short version of the latter being that almost all your work lives in three small files inside the node.
Farcaster Canvas is a collaborative pixel-painting game that ships as a Farcaster Mini App. Two users on Warpcast can sit on the same canvas, pick colors from a palette, and watch each other's paints land in near real time. When a canvas runs out of slots, anyone can fork it to their own timeline as the next canvas to paint on.
The app is built on EffectStream, which is multi-chain by design: the game logic is chain-neutral, so while this build settles on an EVM chain inside Warpcast, the same state machine retargets to the Cardano ecosystem with a configuration change - the social surface (Farcaster) and the settlement chain are independent choices.
The interesting thing about this implementation isn't the canvas itself — it's that the entire game is wired through an Effectstream node sitting between a near-empty Solidity contract and a React UI rendered inside Warpcast's iframe. There's no game logic on chain. There's no game logic in the frontend. Everything that decides "is this paint valid, does this canvas get filled, who owns the fork" runs inside a state machine that consumes JSON inputs from a single L2 event.
This post walks through what each piece does, why the contract is one line of meaningful Solidity, and how the node turns chain events into the canvas grid the user sees.
A presale (a launchpad / preorder) sells a catalog of items before they exist: a buyer commits funds now, and the project records who bought what so it can fulfil later. The thing you actually want to guarantee is simple to say and surprisingly subtle to enforce: a participation should only be recorded if the buyer really paid for it — the right amount, to the right address, while the sale is open, and (optionally) crediting whoever referred them.
This post is about doing that guarantee on-chain on Cardano, with a small Aiken minting-policy validator that issues a "purchase receipt" only when the payment rules are met — and about where the rest of the presale logic (catalog, prices, conversion rates) lives so the whole thing stays deterministic. The same app also runs the EVM flow, and the Cardano contract is built to be compatible with that EVM presale — same catalog, same referral model, same recorded state — which we'll come back to once the Cardano picture is clear.
When we set out to connect Cardano to game state, we started from the obvious place: write an indexer task. Each new use-case got its own custom Carp module, its own SQL schema, its own glue code. After the third one - stake-pool delegation, projected NFTs, native-asset transfers - it was clear we'd been writing the same scaffold three times. EffectStream now ships those scaffolds as Cardano Primitives: a shared architecture that turns Dolos/UTxORPC streams into typed, queryable state machine events, with five concrete primitives delivered out of the box.
EffectStream is designed to integrate with any game engine or platform. This article covers four distinct integrations, each showing a different technology combination: modern multi-chain local development tooling, a traditional game engine, social platform frames, and a mobile app.
Cardano provides strong settlement guarantees, but all state is public. For applications that need private computation (secret ballots, hidden hands, confidential business logic), that's a real limitation. By integrating Midnight's ZK-native design with Cardano, EffectStream applications can have public settlement on Cardano with private state via Midnight's zero-knowledge proofs.
NFT launches are complicated. Creators need smart contracts for the sale, a UI for buyers, multi-chain payment support, proof of participation, and fulfillment tracking. We built a full launchpad platform that handles all of this, with EffectStream powering the backend state management and cross-chain payment processing.
Users want to use their NFTs in applications (games, DeFi, social platforms) without giving up ownership. Projected NFTs solve this: lock an NFT on Cardano L1 and use a representation in your application. The NFT never leaves your wallet in any meaningful sense; it's locked in a smart contract you control, and you can unlock it at any time.
In Part 1 we covered how EffectStream indexes delegation changes. In Part 2 we walked through the state machine that writes delegation events to PostgreSQL. Now we'll build on that foundation: a custom Batcher that reads delegation state from the database and decides whether to accept or reject user transactions based on which pool they're delegating to.
This is the key use case for stake pool operators: free transactions for your delegators. The SPO runs a batcher that covers gas fees, but only for users delegating to their pool.
In Part 1 through Part 3 we built a stack that observes Cardano delegation - index the certificates, persist them, gate user inputs on pool membership. The application reads delegation; delegation does not read the application. There is a more ambitious place to put stake pools, though: at the consensus layer of a chain itself. That is where Midnight lives. Once you go there, "react to delegation" stops being a feature flag inside a game and starts being block production for an entire ecosystem of games.
A step-by-step walkthrough of how the EffectStream cardano-delegation template works internally. We'll trace the full path from raw Cardano blocks to application state, covering the config, primitive, grammar, state machine, database, and API layers.
Cardano's stake pool ecosystem has millions of ADA delegated across hundreds of pools, but delegation has always been a one-way relationship: delegators earn rewards, and that's it. What if games and apps could react to where you delegate? What if stake pool operators could offer in-game benefits to their delegators? EffectStream now makes this possible with a new PoolDelegation primitive that streams delegation changes in real-time.