But first, some explanation. In Farcaster, Signers are specialized Ed25519 key pairs designed for authorizing messages in the Farcater protocol. Why not use normal Ethereum private key? Signers reduce the risk of the main custody key being stolen, as Signers have limited capabilities and are easier to revoke and replace if compromised. Why Ed25519? Signers are Ed25519 to avoid confusion with Ethereum’s ECDSA keys, ensuring that Signers are used solely for Farcaster message authentication and not for financial transactions. Users link these Signers to their main Ethereum address by signing a message, creating a chain of trust. Signers are managed through smart contracts on the Ethereum blockchain (Optimism L2). A user’s custody address (associated with their fid) is the only entity that can add or remove Signers for that fid. This ensures that the user retains ultimate control over who can act on their behalf. Now, let’s create signers from scratch with TypeScript: