
USDC-denominated escrow for freelance milestones on Monad. A freelancer defines a milestone, the client funds it directly on-chain, and payment releases the instant delivery is approved — or automatically after a 7-day timeout if the client goes silent. The problem: cross-border freelance payouts (Upwork → Payoneer → local bank) routinely take days through opaque processor-side holds, with no visibility into where the money actually is. This puts the payment commitment on-chain instead — once funded, it's provably locked, and release is deterministic and instant. Built a Solidity escrow contract, a plain HTML/JS frontend (no framework, ethers v6 via CDN) for the full create → fund → deliver → release flow, and a Cloudflare Worker that posts real-time Telegram alerts on every state change. What I learned: Monad's public RPC caps eth_getLogs at 100 blocks per call, and blocks land every ~0.3s — a naive event-watcher would've broken constantly. Also hit a subtle Sourcify verification gotcha: Hardhat defaults to the "paris" EVM target (no PUSH0), but solc 0.8.24 compiles to "shanghai" by default — silently mismatched bytecode until pinned explicitly.
讨论
还没有评论,快来分享你的看法吧。