1 of 5

CommunityCaster

By Danny, Blake, Melissa

2 of 5

What we built

Decentralized community infrastructure using Farcaster to facilitate voting and allocation of community funds

3 of 5

How it works

  • Users can log in using the magic abstraction layer without even knowing they are using web 3
  • We create them a Safe account in the background which they control through our UI.
  • It creates a transaction using the Safe smart account.
  • Now that the users have an account they can vote using the Farcaster frame.
  • Users can then interact with a Farcaster frame and a node server will record their response
  • Their votes get stored in an Arbitrum Stylus smart contract and when the voting finishes, the result is published and funds are given to the proposer of the vote (who made the frame for people to vote through) by a SAFE module contract

4 of 5

How it’s made

1. This is the infrastructure for a community app which uses Farcaster frames.

2. Each community has its own vault (SAFE Smart Account) in which they hold their funds. <- Example instance of Vault Contract exists on the Arbitrum network at address: arb:0x26Ef58BBBB086D6c2DEdebfAD6FFd10c80Ca70Aa

3. When a user signs up, we create a SAFE for their wallet, which is controlled through account abstraction using Magic.link.

4. Voting to spend the funds in the vault happens through interacting with a FRAME on FARCASTER.

5. In the FRAME_NODE file is the code which runs a node.js server which hosts all frames (currently just 1 example frame)

6. When a user votes (clicks reject/approve) on the frame, the server maps their fid to an Ethereum address and records it and their vote direction in a Poll (an ARBITRUM STYLUS contract).

7. That Poll contract which is deployed by a SAFE_MODULE is responsible for triggering a function in the safe_module to release the funds to the Poll proposer.

5 of 5

Future work

  • Improve UI
  • Make it easier to make new frames
  • Go to mainnet