Skip to main content

18 posts tagged with "cardano"

View All Tags

A Farcaster Mini App that Cardano wallets can vote in

9 min read

Movie of the Year Poll: five TMDB poster cards with Best/Meh/Worst vote buttons and a live results bar chart

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.

Frictionless Wallets, Part 3: Biometric Login with Passkeys

3 min read

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.

Frictionless Wallets, Part 2: Social Login with a 2-of-3 Secret

3 min read

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.

A Cardano Presale, Part 2: Clone, Publish, Launch the App

4 min read

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.

EffectStream preorder launchpad: a Cardano presale checkout paying for an item in ADA, with the UTxORPC sync running alongside

Frictionless Wallets, Part 1: Device-Specific Key-Pairs

4 min read

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.

Card Payments for On-Chain Games: The Effectstream payment-app Template

12 min read

The Effectstream payment-app store: an in-game item catalogue with a wallet-or-fiat checkout

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.

Inside farcaster-canvas: A Farcaster Mini App as an EffectStream Indexer

15 min read

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 Contract on Cardano: On-Chain Purchase Receipts

9 min read

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.

Cardano Primitives: From Indexer Tasks to First-Class Chain Events

6 min read

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.

Cross-Chain Privacy: Midnight + Cardano Zero-Knowledge Integration

6 min read

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.

Stake Pool Delegation Part 3: Building a Pool-Aware Batcher

7 min read

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.

Stake Pool Delegation Part 4: Stake Pools as Chain Validators

10 min read

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.

Stake Pool Delegation Part 1: Connecting Cardano SPOs to On-Chain Applications

5 min read

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.