Claim fees
How Fletcher recipients pull ETH from SocialFeeVault (social attestation or wallet claim).
Harvest deposits the Fletcher cut into SocialFeeVault, keyed by identity:
- social:
keccak256(platform ‖ handleHash) - wallet:
keccak256(uint8(3) ‖ paddedAddress)
The vault owner (2/4 multisig) cannot sweep escrow. Claims are the only exit.
Wallet beneficiaries
If your Fletcher row is a wallet (kind 3), or you are the default creator wallet from an empty create:
function claimWallet(address payable to) external;Permissionless and relayer-friendly, but it can only pay to for the key derived from to. Call with to equal to the beneficiary wallet.
await walletClient.writeContract({
address: feeVault,
abi: vaultAbi,
functionName: "claimWallet",
args: [beneficiaryWallet],
})Social beneficiaries (X / GitHub)
function claim(
uint8 platform, // 1 = X, 2 = GitHub
bytes32 handleHash, // keccak256(bytes(normalizedHandle))
address claimer,
uint256 nonce,
uint256 deadline,
bytes calldata signature
) external;Flow:
- Prove you own the handle via the mint.fast attester (OAuth).
- Attester returns an EIP-712 signature over
SocialClaim(...). - Anyone submits
claimwith that signature. Payout goes toclaimerinside the signed message. - Nonce increments. Attestation deadlines cannot sit farther than
MAX_ATTESTATION_TTL(1 hour) ahead of the claim tx.
Domain: name MintFastSocialFeeVault, version 1.
Typehash:
SocialClaim(uint8 platform,bytes32 handleHash,address claimer,uint256 nonce,uint256 deadline)Handle hashing
import { keccak256, toBytes, encodePacked } from "viem"
const handle = "alice" // already normalized
const handleHash = keccak256(toBytes(handle))
const platform = 1 // X
const identityKey = keccak256(encodePacked(["uint8", "bytes32"], [platform, handleHash]))Check accrued(identityKey) and nonces(identityKey) before claiming.
Attesters
- Initial attester is set at vault deploy
- New attesters: owner
queueAttester, then anyoneactivateAttesterafter 24 hours - Owner can
removeAttesterimmediately (also cancels a queued add)
Operational note from the contract: keep attester keys in a multisig or HSM and watch Claimed events.