Shipped-work log for Hashlock Markets. Every entry reflects code that landed on main and is running in production. No roadmap promises.
AI SEO layer and search-engine presence
Full LLM and search-engine discoverability layer shipped. Hashlock Markets is now indexable by Google, Bing, and every major AI crawler, with structured data that reliably disambiguates the brand from the cryptographic hashlock primitive.
→JSON-LD @graph on every page: Organization, WebSite, SoftwareApplication, and FAQPage (8 questions) as a single bound graph
→robots.txt explicitly welcoming 20 AI crawlers: GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Applebot-Extended, Bytespider, MistralAI-User, and more
→/about and /docs public pages with semantic H1/H2/H3 hierarchy, brand disambiguation, and MCP / Vercel AI SDK / LangChain quick-start snippets
→Dynamic edge-rendered OpenGraph image at /opengraph-image for social link previews (Twitter, Discord, Slack, LinkedIn)
→sitemap.xml with four public URLs; metadata enriched with metadataBase, OpenGraph, Twitter card, canonical, keywords, and viewport
→Google Search Console and Bing Webmaster Tools ownership verified via meta tag; sitemap submitted to both
MCP and AI-agent distribution
First-class AI-agent integrations went live across three ecosystems, making Hashlock Markets reachable from Claude Desktop, Cursor, Windsurf, VS Code, ChatGPT, and any Vercel AI SDK or LangChain agent.
→Remote MCP server shipped over Streamable HTTP transport
→llms.txt and llms-full.txt published for LLM agent discovery, with explicit Hashlock vs cryptographic-primitive disambiguation
→/ai-plugin.json published for OpenAI / ChatGPT plugin discovery
→Hashlock documentation for AI agents: tools, intents, validation flow, commit semantics
→Domain finalized to hashlock.markets; supported chains restricted to Ethereum, Bitcoin, and SUI across all surfaces
→Privacy policy shipped for MCP directory submission
GraphQL performance pass and full SUI integration
A major round-trip reduction on the frontend and end-to-end SUI support, plus a handful of chat and socket reliability fixes.
→HTTP GraphQL operation batching: per-page request count dropped from roughly 30 to 2–3
→Full SUI chain integration: provider, explorer, schema, and wallet options
→WebSocket browser traffic routed through nginx instead of direct container ports (fixes staging TLS path)
→Chat call silent-fail fix, dealing-code format fix, and pageSize ceiling enforcement
→Duplicate (dashboard)/page.tsx removed so pnpm build no longer conflicts with app/page.tsx
Ethereum mainnet deployment
Production HTLC contracts are live on Ethereum mainnet. Both the base HTLC and ERC20Fee wrapper are deployed, verified on Etherscan, and enforcing the configured protocol fee.
→HTLC core contract deployed to Ethereum mainnet with fee enforcement
→ERC20Fee wrapper deployed and verified on Etherscan
→Default contract addresses updated across chain-watcher and web runtime config
Cross-asset ERC20/BTC settlement
First end-to-end cross-chain atomic settlement between an ERC20 token on Ethereum and native BTC on Bitcoin. The HTLC preimage now auto-claims on the counterparty leg with no manual entry.
→Auto-send BTC via browser wallet extensions (Xverse, Leather)
→Auto-calculate BTC satoshi amount from trade data; auto-fill BTC pubkeys from user_wallets
→ERC20Fee MIN_AMOUNT lowered to accommodate 6-decimal tokens (USDT, USDC)
→Preimage stored in DB so auto-claim no longer requires a human to paste the secret
→ERC20 gas estimation + allowance verification hardened before the settlement transaction is sent
Chat-centric trading UI polish
A focused week on the chat-centric terminal: bilateral call signaling, blind-auction identity masking, and a set of RFQ socket reliability fixes that made the auction flow instant.
→Bilateral call:ended signaling — both counterparties transition to read-only on END CHAT
→Instant auction close on trade confirm via an rfq:closed socket event
→Blind Auction: comprehensive counterparty identity masking with creature pseudonyms
→Auto-purge non-trade conversations on END CHAT so the sidebar stays clean
→Glassmorphic amber-tinted toasts with backdrop blur; HUD header restyled to Bloomberg amber
→Selective-service deploy script (deploy-staging.sh) that eliminates the gateway race on rebuilds
Blind auction and trade cycle popup
Blind-auction RFQs landed as a first-class toggle, and the trade cycle popup moved to the bottom tray so the full RFQ-to-settlement lifecycle is visible in one view.
→Blind Auction — isBlind toggle on RFQ with counterparty identity masking
→Trade cycle popup from bottom tray; completed trades filter through to the blotter
→Sepolia, Bitcoin Signet, and Sui Testnet added as selectable wallet chains
→RFQ watch defaults to ON for users without a saved preference
→Dealing-code copy works on plain HTTP via a clipboard-API fallback
→Market-price gate: RFQs without a live price are blocked; Binance REST fallback when WS drops