Skip to content

Instantly share code, notes, and snippets.

Verifying my Blockstack ID is secured with the address 1H3ZnXreqdBvRwJmNbFMm3rQqLH5ZZujPR https://explorer.blockstack.org/address/1H3ZnXreqdBvRwJmNbFMm3rQqLH5ZZujPR
@vrypan
vrypan / Frames_proposal_get_action.md
Last active February 16, 2024 07:41
Proposal to add get actions to Frames (v3)

Goals

  • Enable the creation of frames that are statically hosted (accessible using HTTP GET vs HTTP POST).
  • Keep it as simple as possible.

Proposal

Add a new fc:frame:button:$idx:action type, get. Modify the use of fc:frame:button:$idx:target prop.

@vrypan
vrypan / fc-frame-domain-association-proposal.md
Last active March 12, 2024 04:28
Proposal: Farcaster Frame-Domain association

Proposal: Farcaster Frame-Domain association

Goals

  1. Create an association between a Frame domain or URL and an fid that can be lazily verified.
  2. Minimize number of tools and network requests required to verify a domain association.
  3. Allow for future extensions to domain verification.

Proposal (no protocol change)

The idea is to provide a way for an FID to publicly declare that they trust a URL. The simplest way to achieve this is

@vrypan
vrypan / Farcaster Ordering (miners).md
Last active November 30, 2024 19:26
Farcaster Ordering (miners)

This is a proposal that introduces ordering to the Farcaster protocol. (See farcasterxyz/protocol#193)

The main advantage of this proposal is that it does not require any coordination (for example no need to appoint special roles or powers to a specific serializer).

High level architecture

There is a mempool where every hub submits deltas. Miners propose new blocks, each block is linked to the previous one in a blockchain. Anyone can spin up a miner.

Miners have to stake (lock) an amount of ETH but this amount is not fixed and may go up automatically if many miners compete in block creation. The stake is not slashed or lost in any way, but it will remain locked for 100 days, before the miner can withdraw it.

@vrypan
vrypan / signedKey.go
Created February 8, 2025 11:56
Decode SignedKeyRequest payload (Farcaster protocol)
package fctools
import (
"fmt"
"math/big"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/mitchellh/mapstructure"
)
@vrypan
vrypan / fc-channels.md
Last active June 16, 2025 06:05
Farcaster Channels proposal

tldr; Channels are just FIDs with USER_DATA_IS_CHANNEL=true

Description

For this proposal, a channel is a currated set or chronologically ordered casts. A channel is identified by an FID, let's call it channelfid and the corresponding fname, @channelfname.

When a user wants to post to a channel, they just mention @channelfname.

In order for their cast to be "added" to the channel: