
Tip.md
We help OSS Devs get paid frictionlessly
About
The problem it solves # **Problems @tipdotmd Solves** ## **🚀 Instant Developer Support** ### **Before**: Complex, Multi-Step Process - Find developer's crypto wallet address (if they even have one public) - Leave Farcaster → Open wallet app → Copy/paste addresses → Send transaction - No way to know if tip was received or appreciated - High friction = most people don't bother tipping ### **After**: One-Click Appreciation - **Search & tip any Farcaster user instantly** - **Stay within Farcaster** - never leave the app - **Built-in wallet discovery** - automatically finds their addresses - **Instant confirmation** with shareable proof --- ## **💡 Open Source Funding Gap** ### **Problem**: OSS Developers Go Unrewarded - Amazing open source work gets ⭐s but no 💰 - No easy way to financially support developers you discover - Sponsorship platforms are complex and require long-term commitments ### **Solution**: Micro-Funding Made Simple - **Spontaneous appreciation** - tip when you see great work - **Trending developer discovery** - find who to support today - **GitHub activity integration** - tip based on recent contributions - **No long-term commitments** - simple one-off appreciation --- ## **🔗 Identity Fragmentation** ### **Problem**: Disconnected Digital Identities - GitHub username ≠ Farcaster handle ≠ crypto wallet - Hard to connect social appreciation with financial support - Developers can't easily monetize their social presence ### **Solution**: Unified Identity Bridge - **Links GitHub → Farcaster → Crypto wallets** - **Social discovery** leads to direct financial support - **Cross-platform reputation** - build following that pays --- ## **🛡️ Crypto UX Barriers** ### **Problem**: Crypto Payments Are Intimidating - Wallet addresses are confusing (0x1a7Dd27...) - Fear of sending to wrong address = lost money - Gas fees, network selection, token contracts - too complex ### **Solution**: Social-First Crypto - **Human-readable recipients** - tip @username, not 0x addresses - **Automatic network/token selection** - just pick amount - **Built-in safety** - addresses verified through social profiles - **Familiar interface** - feels like social media, not DeFi --- ## **📱 Platform Lock-in** ### **Problem**: Tipping Trapped in Silos - Twitter tips stay in Twitter - GitHub Sponsors only work on GitHub - Can't tip across platforms ### **Solution**: Universal Tipping Layer - **Cross-platform discovery** - find on GitHub, tip via Farcaster - **Real cryptocurrency** - not platform tokens - **True ownership** - tips go to user's actual wallet --- ## **⚡ Real-Time Appreciation** ### **Problem**: Delayed Gratification Kills Momentum - See great work → bookmark to support later → forget - Complex sponsorship setup = procrastination - No immediate feedback loop for creators ### **Solution**: Instant Gratification Loop - **Impulse appreciation** - tip in the moment of discovery - **Immediate notification** - creator gets instant dopamine hit - **Viral sharing** - tips become social proof and marketing --- ## **🎯 Use Cases Made Simple** ### **For Supporters** - **Discover trending devs** → tip promising projects - **React to great commits** → financial appreciation - **Support without commitment** → one-time thank you - **Show social proof** → tips as public endorsements ### **For Creators/Developers** - **Monetize social presence** → followers become income - **Get immediate feedback** → tips signal what resonates - **Build funding relationships** → tips can lead to bigger sponsorships - **Cross-platform revenue** → GitHub work pays via Farcaster ### **For the Ecosystem** - **Incentivize quality** → good work gets rewarded faster - **Reduce funding friction** → more people actually tip - **Create network effects** → viral tip sharing drives adoption - **Bridge Web2/Web3** → social meets crypto seamlessly --- ## **🌟 Bottom Line** **tipdotmd transforms appreciation from passive (likes, stars) to active (financial support) by removing every possible barrier between "I want to tip this person" and "tip sent successfully."** It makes supporting developers as easy as liking a post, but with real economic impact. Smart Contract Address(es) # **Smart Contract Addresses** ## **Primary Contract** ### **Disperse.app Contract** ``` 0xD152f549545093347A162Dce210e7293f1452150 ``` - **Purpose**: Multi-recipient token/ETH distribution with automatic fee splitting - **Networks**: Ethereum, Base (same address across EVM chains) - **Functions Used**: - `disperseEther()` - Distributes native tokens (ETH) to multiple recipients - `disperseToken()` - Distributes ERC-20 tokens (USDC, USDT) to multiple recipients ## **Implementation Details** **Fee Distribution Logic**: - Automatically splits tips between recipient (96%) and platform (4%) - Single transaction for both recipient payment and fee collection - Fallback to direct transfers if Disperse contract unavailable **Multi-Chain Strategy**: - **Ethereum & Base**: Full Disperse contract integration - **Celo**: Fallback to direct transfers (Disperse not deployed at same address) - **Solana**: Native Solana program instructions (non-EVM) ## **Contract ABI (Key Functions)** ```solidity function disperseEther(address[] recipients, uint256[] values) payable external; function disperseToken(address token, address[] recipients, uint256[] values) external; ``` **Note**: This project leverages existing, battle-tested infrastructure (Disperse.app) rather than deploying custom contracts, ensuring security and gas efficiency for multi-recipient transactions. Other Onchain Proof  amount blockchain token transactionHash usdValue status 1.3 celo USDT 0xe9bbce97601b8da1ee68270278b77329e4c34cdf2bb8a2029514faa462859835 1.30 confirmed 1.5 celo CELO 0xfc89f31d37bcf4d3442663fc46fd8c0082cd9ffa8f169d66c8cb1424d53c7558 0.51 confirmed 1.00 base USDC 0x936a1295f61de4dcd4736b5a13c2a3bd549d3da7259d1a95c854d06808d75087 1.00 confirmed 0.1 celo USDT 0xa8c3f068ececa32a8996a80f5243106bba273150e52f5eabd321fe1f7ac4dfcf 0.10 confirmed 0.1 celo CELO 0x67fa13658f95815f23ea570f50bc00160ac7a1e1ea3e9bbb4947cdc4546f588b 0.03 confirmed 0.0113 base ETH 0x7b7837c739d6b47a23b057069f6df5a57190b3f80a7282c18afa610c18c85634 49.79 confirmed 0.2 base USDC 0x582be63131a3c1f272feffe09e3a3a42f8b4cf8e07361850f1632d60a1162057 0.20 confirmed 0.0001 base ETH 0xbaa7849bfee0115f5fe51b9c0f21c133557f094aafd4f7a4abec07b391584654 0.44 confirmed 0.000227 base ETH 0x038205f0e597dee6aaa8af3097b8ae90132c23197794c5890424a951639dd93a 1.00 confirmed 0.00022620 base ETH 0x09a3a16c95e8bee2efddcdfe77539328bae3918579ccb043d9097aa9e88bf58a 1.00 confirmed 0.00022649 base ETH 0xc2b5f60874d96c074875d9c33b69356216a167094984f4e546d88d755470ab98 1.00 confirmed 1.00 base USDC 0x55f9b703d57d430d6d65162ca7b5d14d616f854616f7e0b10a7ab155d30dead2 1.00 confirmed 0.00033333 base ETH 0xb634cad6e9f36401693d96c97bceb6cc12dfb35dc84f0946479d68e33c6c133b 1.47 confirmed 0.005416 solana SOL 5KF76aCZYSBuxqBgjHe21UanEFyK9BoKCJN6MmwyHsEeq1WL429AeqcmQthCmCZCqDRtcspSpuDq5s9U4eeA2ip2 1.00 confirmed 0.00033333 base ETH 0x602ee22b840dcac03d371c5b485d1aea9155410b6af24bc36fa496b7932a00b1 1.47 confirmed 1.00 base USDC 0x4c21e0341ca225d870ee0736c28ce5c44e72c3ef57526f93163fa314c4362b2d 1.00 confirmed 0.00022673 base ETH 0xdcfd794325c1ccd3d79f5b3be4686fb6b57f775b873bd16803712b682d123a0e 1.00 confirmed 0.1 celo CELO 0xea9282577970d21b36ea3439b88f5b7fbc1e858c4c4eb331112560f0e6dbff67 0.03 confirmed 0.1 celo USDT 0x270e0a53c4b596d3fb2c179abdd84ea319d84d7262f975289f09fa7e0fd5300b 0.10 confirmed 1.00 celo USDT 0xc9c8202db78289b4ea7929d3d942b452edb6a10300220a7beaae3412c72351a8 1.00 confirmed 0.4901 celo USDT 0x435d67aae3a42875a3e3e868d43cea09ad29a57c51e028fd9e9df98f07f85d82 0.49 confirmed 0.5 celo CELO 0x07cd98d89c4ddac313541a22f64984b667aadc41e6a6dc942da2f192e742ac05 0.17 confirmed 0.000214 celo ETH 0x57c50bf5b375482283193f22e512a4a30bbc7fe1da7e0d4d15921aa3bd3268bd 1.00 confirmed 1.00 celo USDT 0x771beb0d0d5787ae0da26073075b686a882beb825151428ec77b595ebd088107 NaN confirmed 1.00 celo USDT 0x926734648b4dda2351a2f6d8a76245accd9a95a62991313cab231dc06d8dc493 NaN confirmed 0.5 celo USDT 0x56e95db04cdaaff3557a51c81663034c6ce5e59d63a530cb052eeebc5b61d0b3 NaN confirmed 1.00 celo USDC 0xd4b8db44ae0fcae76c41260d85aacf4ef25bc51057473406dbe0b54ce9f45538 1.00 confirmed .5 celo USDC 0x24fe18a397ef9f89d49c4da620e0cc0d2b4299ad96d8c652e00cd3dd6bbf482f 0.50 confirmed 0.0001 base ETH 0x50df7911e9b40af08bb18919c2b4dd5d877d80533f23c3c3343d3a51b974c018 0.47 confirmed 1 celo CELO 0x2a90255a328df06594427ee74c41900cb4c0fad1d05cfa3e3f9dfe8cf6e316aa 0.37 confirmed 0.00021116 base ETH 0xc72de040fa8f37863361e864bdf0062ba11004e12f14a965a4ba4924902d09f6 1.00 confirmed 0.0001 base ETH 0x2cba94c4212ac54c4a378f6d5dfbe902b6f54a6e8c6a045830ca5e5d5708b5fe 0.47 confirmed 0.0001 base ETH 0x796e1afb3cabbddeb3fa741114453688e5afaacf881cb43ca9c79724226ca047 0.47 confirmed .0001 base ETH 0x44f9e5fb831d5dc67f3862bd9a62db520d77fb0e60d348fe8decabcb2e090c5c 0.43 confirmed 0.000233 base ETH 0x2640a43a10df4a98bf34a997e3a8df67416e1d2c4b1021d25069fea261455ddf 1.00 confirmed 0.00023169 ethereum ETH 0xbc6113099f457f6b7d55dbf62eba0b886803a24c87630bbdd8e0cff03e91ea70 1.00 confirmed 0.0001 base ETH 0x70d8e10b641f79ac4b6cc004e827beec2a8c78553790651a52e326d9e5e1c304 0.43 confirmed .05 base USDC 0xdd5b27cd21c7bddc624598a7b3f3b1c2ef92eb9d12e9c032f943b5fea534f377 0.05 confirmed 0.000239 base ETH 0x7a0d1f072ef8d240c520c6c4389a9d552f793fb8d91083c8ec7c6750d4d1a055 1.00 confirmed 0.001 solana SOL 5EmHYNoZwtLM8KRADGQM27BbVZuxbDynb25NgS2jxBfzZHG31KRwaYVBjxHsjCHNZ4Dt9FZ4m6gHEwemZEhmajun 0.18 confirmed 0.01 base USDC 0xf9518bb3a2bf628dbefa4b01cb97da4f02946ec30e25b83d0508338a02758d65 0.01 confirmed 0.00128 base ETH 0x839ac99494f57db826a0b0e2247fabed42072527f5205e44241d3d9f48bde0c9 4.99 confirmed 1.00 base USDC 0x603500522878cf0c6373e1930e5678cc2bff7b66b85f4226204dcc5c50e367a3 1.00 confirmed 0.01 base USDC 0xe110503ffbd866da9f970316e4bf9fffece77f22d7cca7f9bc108205d5e730ed 0.01 confirmed 0.0001 solana SOL 3SXwX7oZNmPhah5uZVDj2hCfZDAX8b52RQXf7NbKuHMHVSUugHWTBsm4LVR9vsqJmXPRMM5teVFAi6j4AsyRa1ns 0.02 confirmed 0.000263 base ETH 0x5dd4b1a32e29838b0acbb4cd130f9313abf7fd85f90f1bca494dc5621aab965e 1.00 confirmed 0.1 base USDC 0x0671c4a2c492592966572ff23ca8cebb8b5966c3dafeefd4641f09a1452f877f 0.10 confirmed 1.00 base USDC 0xb8cec5f1422f719b018ef4d51bfea7f532cde81c3866a24480c68adcd83fc038 1.00 confirmed 1.00 base USDC 0xc97dc83070ab73b1633ab70b9ce7
How it's made
Challenges we ran into # **Challenges & Solutions** ## **🔗 Disperse Contract Availability** **Problem**: Disperse.app contract (`0xD152f549545093347A162Dce210e7293f1452150`) not deployed on all chains ```typescript // Celo doesn't have Disperse at same address const disperseTransaction = tipData.blockchain === 'celo' ? null : createEthDisperseTransaction(); ``` **Solution**: Built fallback system - try Disperse first, fall back to direct transfers - Maintains fee splitting on supported chains - Graceful degradation on unsupported chains --- ## **💰 Precision Loss in Token Calculations** **Problem**: JavaScript floating point math breaking token amounts ```javascript // This breaks: 0.1 + 0.2 = 0.30000000000000004 const amountWithDecimals = parseFloat(amount) * Math.pow(10, decimals); ``` **Solution**: BigInt arithmetic for precise decimal handling ```typescript const multiplier = BigInt(10) ** BigInt(decimals); const totalAmount = BigInt(integerPart) * multiplier + BigInt(decimalPart); ``` --- ## **🔄 Cross-Chain Identity Linking** **Problem**: GitHub username ≠ Farcaster handle ≠ wallet addresses - No universal way to verify cross-platform identity - Users have different usernames across platforms **Solution**: Multi-layered verification system - Farcaster verification via Neynar API - GitHub verification through commits/profile links - Wallet verification through transaction signatures - Fallback to manual address entry --- ## **📱 Farcaster Frame Constraints** **Problem**: Frame SDK limitations in miniapp context - Limited screen real estate - Wallet connection issues in embedded frames - Safe area handling across different clients **Solution**: Dynamic import + responsive design ```typescript const FarcasterMainContainer = dynamic(() => import("~/components/farcaster/FarcasterMainContainer"), { ssr: false }); ``` --- ## **⚡ Transaction Reliability** **Problem**: Failed transactions with no user feedback - Network timeouts - Gas estimation failures - User wallet rejections **Solution**: Comprehensive error handling + retry logic ```typescript try { // Try Disperse transaction } catch { // Fall back to direct transfer console.warn("Disperse failed, trying fallback"); } ``` --- ## **🔍 Rate Limiting on APIs** **Problem**: Neynar/GitHub API limits during user search - Search requests hitting rate limits - Slow response times affecting UX **Solution**: Debounced search + smart caching ```typescript const debouncedSearch = debounce(async (query: string) => { // Only search after user stops typing }, 300); ``` --- ## **🎯 Mobile Performance** **Problem**: Heavy components causing frame drops - Large transaction history lists - Complex GitHub activity rendering - Wallet connection overhead **Solution**: Virtualization + lazy loading - Infinite scroll with pagination - Dynamic imports for heavy components - Aggressive memoization of expensive calculations **Key Learning**: Start with fallbacks from day one - don't assume external contracts/APIs will always work as expected.