1<!DOCTYPE html><html lang="en"> <head><meta charset="utf-8"><title>Contact | RedStone</title><meta name="mcp-server" content="https://mcp.redstone.finance/mcp"><meta name="a2a-agent" content="https://a2a.redstone.finance/.well-known/agent.json"><meta name="llms-context" content="https://www.redstone.finance/llms.txt"><meta content="Reach out to the RedStone team for integration support, partnership inquiries, or general questions." name="description"><meta content="Contact | RedStone" property="og:title"><meta content="Reach out to the RedStone team for integration support, partnership inquiries, or general questions." property="og:description"><meta content="https://cdn.prod.website-files.com/67519197ce9eaef4601a6287/677f9f8bb6ae73e45b28a6fb_Variant2%20(3).png" property="og:image"><meta content="https://www.redstone.finance/contact/" property="og:url"><meta content="Contact | RedStone" property="twitter:title"><meta content="Reach out to the RedStone team for integration support, partnership inquiries, or general questions." property="twitter:description"><meta content="https://cdn.prod.website-files.com/67519197ce9eaef4601a6287/677f9f8bb6ae73e45b28a6fb_Variant2%20(3).png" property="twitter:image"><meta property="og:type" content="website"><meta property="og:site_name" content="RedStone Finance"><meta content="summary_large_image" name="twitter:card"><meta name="twitter:site" content="@redstone_defi"><meta content="width=device-width, initial-scale=1" name="viewport"><link rel="canonical" href="https://www.redstone.finance/contact/">
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.redstone.finance/#organization","name":"RedStone Finance","alternateName":"RedStone","url":"https://www.redstone.finance","logo":{"@type":"ImageObject","url":"https://www.redstone.finance/images/Redstone-Logo_2.svg"},"description":"RedStone is a modular oracle stack providing secure, real-time price data and risk ratings for institutional DeFi. Live across 110+ networks with 1,300+ price feeds, integrated by 200+ protocols, with data signed by 21+ independent professional providers, securing $9B+ in total value.","foundingDate":"2021","sameAs":["https://x.com/redstone_defi","https://github.com/redstone-finance","https://www.linkedin.com/company/redstone-finance/","https://www.youtube.com/@redstone_defi","https://discord.gg/redstonedefi","https://www.coingecko.com/en/coins/redstone-oracles"],"contactPoint":{"@type":"ContactPoint","contactType":"technical support","url":"https://www.redstone.finance/contact"}},{"@type":"WebSite","@id":"https://www.redstone.finance/#website","url":"https://www.redstone.finance","name":"RedStone Finance","description":"Secure, modular data infrastructure for onchain finance, trusted by top DeFi protocols and institutions.","publisher":{"@id":"https://www.redstone.finance/#organization"},"inLanguage":"en"}]}</script>
1<!-- Self-hosted fonts â preload critical weights (Sequel Sans + Roboto Mono). --><link rel="preload" as="font" type="font/ttf" href="/fonts/Sequel-Sans-Roman-Disp.ttf" crossorigin="anonymous"><link rel="preload" as="font" type="font/ttf" href="/fonts/Sequel-Sans-Semi-Bold-Disp.ttf" crossorigin="anonymous"><link rel="preload" as="font" type="font/ttf" href="/fonts/RobotoMono-Regular.ttf" crossorigin="anonymous"><link rel="preload" as="font" type="font/ttf" href="/fonts/RobotoMono-Bold.ttf" crossorigin="anonymous">
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="/css/normalize.css" rel="stylesheet" type="text/css"><link href="/css/webflow.css" rel="stylesheet" type="text/css"><link href="/css/redstone-fa43b1-9f98392654621f594494bb3.webflow.css" rel="stylesheet" type="text/css"><!-- Favicons --><link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png"><link rel="icon" type="image/png" sizes="512x512" href="/images/android-chrome-512x512.png"><link rel="icon" type="image/png" sizes="192x192" href="/images/android-chrome-192x192.png"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-FT767HW5C2
vendor: 11 bytes, line 1
1"></script>
1<script> 2
vendor: 152 bytes, lines 2-7
2window.dataLayer = window.dataLayer || []; 3 function gtag() { 4 dataLayer.push(arguments); 5 } 6 gtag("js", new Date()); 7 gtag("config", "
7G-FT767HW5C2
vendor: 6 bytes, lines 7-8
7"); 8
8</script>
8<!-- Hotjar Tracking Code for Site 6775098 -->
8<script>
vendor: 125 bytes, lines 8-11
8 9 (function(h,o,t,j,a,r){ 10 h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; 11 h._hjSettings={hjid:
116775098
vendor: 260 bytes, lines 11-17
11,hjsv:6}; 12 a=o.getElementsByTagName('head')[0]; 13 r=o.createElement('script');r.async=1; 14 r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; 15 a.appendChild(r); 16 })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); 17
17</script>
17<!-- GTM snippet moved to <body> â no longer render-blocking --><link rel="stylesheet" href="/_astro/Footer.Bn5y26MA.css"><link rel="stylesheet" href="/_astro/contact.B6YnoUH5.css"></head> <body> <!-- GTM noscript â must be immediately after opening <body> tag -->
vendor: 68 bytes, line 17
17 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
17GTM-MZ39PDDC
vendor: 84 bytes, line 17
17" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
17<header class="rs-header" id="rs-header" data-theme="dark" role="banner" data-astro-cid-eiyd7voq> <div class="rs-header__inner" data-astro-cid-eiyd7voq> <!-- Logo (single SVG, inverted via CSS filter on light themes) --> <a href="/" class="rs-header__logo" aria-label="RedStone Finance â Home" data-astro-cid-eiyd7voq> <img src="/images/Redstone-Logo_2.svg" class="rs-logo" loading="eager" alt="RedStone Logo" width="127" height="24" data-astro-cid-eiyd7voq> </a> <!-- Desktop Nav --> <nav class="rs-nav" role="navigation" aria-label="Main navigation" data-astro-cid-eiyd7voq> <!-- Products Mega Menu: text link â /product-stack, chevron toggles mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-products" data-astro-cid-eiyd7voq> <div class="rs-nav__trigger-split" data-astro-cid-eiyd7voq> <a href="/product-stack/" class="rs-nav__trigger-text" aria-controls="mega-products" data-astro-cid-eiyd7voq> 18Products 19</a> <button class="rs-nav__trigger-chevron" aria-expanded="false" aria-controls="mega-products" type="button" aria-label="Open Products menu" data-astro-cid-eiyd7voq> <svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> </div> <div class="rs-mega" id="mega-products" role="region" aria-label="Products submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner" data-astro-cid-eiyd7voq> <!-- Left: product list --> <div class="rs-mega__list" role="list" data-astro-cid-eiyd7voq> <div class="rs-mega__stack-container" data-astro-cid-eiyd7voq> <a href="/product-stack/" class="rs-mega__item rs-mega__item--stack-main" role="listitem" data-product="product-stack" data-title="Product Stack" data-desc="Explore our entire modular infrastru
19cture stack. Read how our modular data pipelines, security models, and cross-chain oracles tie together to power DeFi." data-tags="CORE ARCHITECTURE · OVERVIEW" data-clients="Binance,HyperLend,Lista DAO,Gauntlet" data-astro-cid-eiyd7voq> <svg class="rs-mega__static-icon" width="40" height="40" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq> <path d="M3 6L10 2.5L17 6L10 9.5L3 6Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> <path d="M3 10L10 13.5L17 10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> <path d="M3 14L10 17.5L17 14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Product Stack</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Our entire modular ecosystem</span> </div> </a> <div class="rs-mega__stack-divider" data-astro-cid-eiyd7voq></div> <div class="rs-mega__list-group" data-astro-cid-eiyd7voq> <div class="rs-mega__list-header" data-astro-cid-eiyd7voq>Core Data Feeds</div> <a href="/price-feeds/" class="rs-mega__item" role="listitem" data-product="price-feeds" data-title="Price Feeds" data-desc="Real-time, tamper-proof price data for any financial asset on any blockchain. Our modular architecture delivers high-frequency updates with cryptographic guarantees." data-tags="Pull / Push · 1300+ Assets · 110+ Chains" data-clients="Securitize,Canton,Morpho,Spiko,Tempo" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/04-Micro-Investors.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Price Feeds</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Pull · Push · 110+ chains</span> </div> </a> <a href="/proof-of-reserves/" class="rs-mega__item" role="listitem" data-product="proof-of-reserve" data-title="Proof of Reserve" data-desc="Real-time Proof of Reserves for digital and tokenized assets. RedStone helps protocols prevent insolvency risks and demonstrate collateral transparency onchain." data-tags="Cross-chain · RWA · BTC · ETH" data-clients="Lombard,Radiant Prime" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/02-Micro-Assets.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Proof of Reserve</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Cross-chain · RWA</span> </div> </a> <div class="rs-mega__list-header" data-astro-cid-eiyd7voq>Specialized Oracles</div> <a href="/atom/" class="rs-mega__item" role="listitem" data-product="atom" data-title="Atom" data-desc="Atom keeps liquidation value inside your protocol. OEV (oracle extractable value) capture returns value that oracles traditionally leak to bots â optimizing LTV and improving protocol capital efficiency." data-tags="OEV · LTV · MEV-resistant" data-clients="Felix,Venus,HyperLend" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/menu-product-03-Atom.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Atom</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>OEV · MEV-resistant</span> </div> </a> <a href="/bolt/" class="rs-mega__item" role="listitem" data-product="bolt" data-title="Bolt" data-desc="Ultra-fast push oracle for high-frequency trading and real-time DeFi applications. Sub-second latency with guaranteed delivery â built for protocols that can't wait." data-tags="Sub-second · High-frequency · Push" data-clients="Euphoria,Curvance,Euler" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/Menu---Bolt.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Bolt</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Sub-second · Push</span> </div> </a> <a href="/live/" class="rs-mega__item" role="listitem" data-product="live" data-title="RedStone Live" data-desc="RedStone Live is a low-latency 24/7, off-chain data streaming service delivering equities, commodities, forex, indexes, and crypto." data-tags="REAL-TIME · 24/7 · DATA PROVIDING" data-clients="Binance,Entropy,Derive,GRVT,Initia,E
19xtended" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/RedStoneLive_NavIcon.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq> 20RedStone Live 21</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Real-time · Monitoring</span> </div> </a> <a href="/settle/" class="rs-mega__item" role="listitem" data-product="settle" data-title="RedStone Settle" data-desc="T+0 settlement for RWA collateral on lending protocols." data-tags="RWA · LENDING · SETTLEMENT" data-clients="Symbiotic" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/Settle_NavIcon.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>RedStone Settle</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>T+0 · RWA Collateral</span> </div> </a> </div><!-- /.rs-mega__list-group --> </div><!-- /.rs-mega__stack-container --> </div><!-- /.rs-mega__list --> <!-- Right: detail panel --> <div class="rs-mega__detail" id="mega-detail" aria-live="polite" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" id="mega-tags" data-astro-cid-eiyd7voq></p> <h3 class="rs-mega__detail-title" id="mega-title" data-astro-cid-eiyd7voq></h3> <p class="rs-mega__detail-desc" id="mega-desc" data-astro-cid-eiyd7voq></p> <div class="rs-mega__detail-clients" id="mega-clients-container" data-astro-cid-eiyd7voq> <span class="rs-mega__detail-clients-label" data-astro-cid-eiyd7voq>INTEGRATED WITH</span> <div class="rs-mega__detail-clients-list" id="mega-clients-list" data-astro-cid-eiyd7voq></div> </div> </div> </div> </div><!-- /.rs-mega__inner --> </div><!-- /.rs-mega --> </div><!-- /#nav-products --> <!-- Developers Mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-developers" data-astro-cid-eiyd7voq> <button class="rs-nav__trigger" aria-expanded="false" aria-controls="mega-developers" type="button" data-astro-cid-eiyd7voq> 22Developers 23<svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> <div class="rs-mega rs-mega--simple" id="mega-developers" role="region" aria-label="Developers submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner rs-mega__inner--3col" data-astro-cid-eiyd7voq> <div class="rs-mega__list rs-mega__list--simple" role="list" data-astro-cid-eiyd7voq> <a href="/developers/" class="rs-mega__item" role="listitem" data-mega-title="Developers Hub" data-mega-desc="Your central hub for all RedStone technical resources â integration guides, API references, architecture overviews, and SDK documentation." data-mega-tags="GUIDES · ARCHITECTURE · SDK" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M6 5L3 10L6 15M14 5L17 10L14 15M11.5 3.5L8.5 16.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Developers Hub</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Integration guides · SDK · API</span> </div> </a> <a href="https://docs.redstone.finance" target="_blank" rel="noopener noreferrer" class="rs-mega__item" role="listitem" data-mega-title="Docs" data-mega-desc="Full technical documentation for RedStone oracles â from quick-start integration to advanced custom feed configuration and onchain verification." data-mega-tags="REFERENCE · TUTORIALS · QUICK-START" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M4 16V4H12.5L16 7.5V16H4Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M12.5 4V7.5H16" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7 11H13M7 13.5H11" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Docs <svg class="rs-mega__ext-icon" width="10" height="10" viewB
23ox="0 0 10 10" fill="none" data-astro-cid-eiyd7voq><path d="M2 8L8 2M8 2H4M8 2V6" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg></span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Full technical reference</span> </div> </a> <a href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" rel="noopener noreferrer" class="rs-mega__item" role="listitem" data-mega-title="Bounty Program" data-mega-desc="Help secure the RedStone oracle network. Find vulnerabilities, earn rewards, and contribute to the safety of DeFi infrastructure used by leading protocols." data-mega-tags="SECURITY · CANTINA · REWARDS" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="10" cy="10" r="7" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><path d="M7.5 10.5L9.5 12.5L13 8.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Bounty Program <svg class="rs-mega__ext-icon" width="10" height="10" viewBox="0 0 10 10" fill="none" data-astro-cid-eiyd7voq><path d="M2 8L8 2M8 2H4M8 2V6" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg></span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Security · Cantina · Rewards</span> </div> </a> </div> <!-- Right detail panel --> <div class="rs-mega__detail rs-mega__detail--static" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content is-ready" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" data-astro-cid-eiyd7voq>BUILD ON REDSTONE</p> <h3 class="rs-mega__detail-title" data-astro-cid-eiyd7voq>
23Oracle infrastructure<br data-astro-cid-eiyd7voq>for every chain</h3> <p class="rs-mega__detail-desc" data-astro-cid-eiyd7voq>Integrate tamper-proof price feeds in minutes. RedStone supports 110+ chains with Pull, Push, and X-Layer delivery models â all with cryptographic guarantees.</p> <div class="rs-mega__detail-actions" data-astro-cid-eiyd7voq> <a href="https://docs.redstone.finance" target="_blank" rel="noopener noreferrer" class="rs-mega__detail-cta" data-astro-cid-eiyd7voq> 24Read the docs 25<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq><path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </a> </div> </div> </div> </div> </div> </div> <!-- Institutional --> <a href="/institutional/" class="rs-nav__link" data-astro-cid-eiyd7voq>Institutional</a> <!-- Clients --> <a href="/clients/" class="rs-nav__link" data-astro-cid-eiyd7voq>Clients</a> <!-- News Mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-news" data-astro-cid-eiyd7voq> <div class="rs-nav__trigger-split" data-astro-cid-eiyd7voq> <a href="/blog" class="rs-nav__trigger-text" aria-controls="mega-news" data-astro-cid-eiyd7voq> 26News 27</a> <button class="rs-nav__trigger-chevron" aria-expanded="false" aria-controls="mega-news" type="button" aria-label="Open News menu" data-astro-cid-eiyd7voq> <svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> </div> <div class="rs-mega rs-mega--simple" id="mega-news" role="region" aria-label="News submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner rs-mega__inner--3col" data-astro-cid-eiyd7voq> <div class="rs-mega__list rs-mega__list--simple" role="list" data-astro-cid-eiyd7voq> <a href="/blog/" class="rs-mega__item" role="listitem" data-mega-title="Blog" data-mega-desc="Stay current with RedStone's latest product launches, ecosystem integrations, partnership announcements, and DeFi market commentary." data-mega-tags="UPDATES · ANNOUNCEMENTS" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M4 4h12v12H4z" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></path><path d="M7 8h6M7 11h4" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Blog</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Updates · Announcements</span> </div> </a> <a href="/reports/" class="rs-mega__item" role="listitem" data-mega-title="Reports" data-mega-desc="In-depth research on RWA tokenization, oracle design, DeFi market structure, and institutional-grade blockchain infrastructure." data-mega-tags="RESEARCH · RWA · MARKET DATA" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M5 16V4H12.5L15 6.5V16H5Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M12.5 4V6.5H15" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M8 10L10 12L13 8.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Reports</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Research · RWA · Market data</span> </div> </a> <a href="/case-studies/" class="rs-mega__item" role="listitem" data-mega-title="Case Studies" data-mega-desc="Real-world integration stories from leading DeFi protocols. See how Binance, Etherfi, Morpho, and others rely on RedStone oracles in production." data-mega-tags="INTEGRATIONS · USE CASES · DEFI" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M3 15C3 12.5 5.5 11 10 11C14.5 11 17 12.5 17 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path><circle cx="10" cy="7" r="3" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Case Studies</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Integrations · Use cases · DeFi</span> </div> </a> </div> <!-- Right detail panel --> <div class="rs-mega__detail rs-mega__detail--static" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content is-ready" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" data-astro-cid-eiyd7voq>LEARN · EXPLORE</p> <h3 class="rs-mega__detail-title" data-astro-cid-eiyd7voq>Insights from<br data-astro-cid-eiyd7voq>the oracle layer</h3> <p class="rs-mega__detail-desc" data-astro-cid-eiyd7voq>Explore RedStone's research on RWA tokenization, DeFi market structure, and oracle design â written for builders and institutions alike.</p> <div class="rs-mega__detail-actions" data-astro-cid-eiyd7voq> <a href="/reports/" class="rs-mega__detail-cta" data-astro-cid-eiyd7voq> 28View all reports 29<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq><path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </a> </div> </div> </div> </div> </div> </div> <!-- Company Mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-company" data-astro-cid-eiyd7voq> <button class="rs-nav__trigger" aria-expanded="false" aria-controls="mega-company" type="button" data-astro-cid-eiyd7voq> 30Company 31<svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> <div class="rs-mega rs-mega--simple" id="mega-company" role="region" aria-label="Company submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner rs-mega__inner--3col" data-astro-cid-eiyd7voq> <div class="rs-mega__list rs-mega__list--simple" role="list" data-astro-cid-eiyd7voq> <a href="/team/" class="rs-mega__item" role="listitem" data-mega-title="Team" data-mega-desc="Meet the team behind RedStone â researchers, engineers, and DeFi experts building the oracle infrastru
31cture powering the next generation of finance." data-mega-tags="PEOPLE · CULTURE · RESEARCH" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="7.5" cy="6.5" r="2.5" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><circle cx="13.5" cy="6.5" r="2.5" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><path d="M2 15.5C2 13 4.5 11.5 7.5 11.5C10.5 11.5 13 13 13 15.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path><path d="M13 11.5C14.2 11.2 16.5 12 17.5 14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Team</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>People · Culture · Research</span> </div> </a> <a href="/careers/" class="rs-mega__item" role="listitem" data-mega-title="Careers" data-mega-desc="Join RedStone and help shape the future of decentralized oracle infrastru
31cture. We're hiring across engineering, research, BD, and operations." data-mega-tags="HIRING · REMOTE · WEB3" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><rect x="3" y="8" width="14" height="9" rx="2" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></rect><path d="M7 8V6C7 4.34 8.34 3 10 3C11.66 3 13 4.34 13 6V8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path><path d="M3 11.5H17" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Careers</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Hiring · Remote · Web3</span> </div> </a> <a href="/brand-kit/" class="rs-mega__item" role="listitem" data-mega-title="Brand Kit" data-mega-desc="Official RedStone brand assets â logos, color palettes, typography guidelines, and usage rules for press, partners, and integrations." data-mega-tags="DESIGN · PRESS · ASSETS" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="7" cy="7" r="2.5" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></circle><circle cx="13" cy="7" r="2.5" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></circle><circle cx="10" cy="12" r="2.5" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></circle></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Brand Kit</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Logos · Colors · Press assets</span> </div> </a> <a href="/security/" class="rs-mega__item" role="listitem" data-mega-title="Security" data-mega-desc="Explore RedStone's ISO 27001 compliance and 15+ independent security audits by premier firms like Halborn, ABDK, and PeckShield." data-mega-tags="ISO 27001 · AUDITS · COMPLIANCE" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M10 2.5L3.5 5.5V9.5C3.5 13.5 6.5 16.5 10 17.5C13.5 16.5 16.5 13.5 16.5 9.5V5.5L10 2.5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7.5 10L9.5 12L13 7.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Security</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>ISO 27001 · Security Audits</span> </div> </a> <a href="/red-token/" class="rs-mega__item rs-mega__item--red-token" role="listitem" data-mega-title="$RED Token" data-mega-desc="$RED is the governance and utility token of the RedStone ecosystem â used for staking, data validation, and protocol governance." data-mega-tags="GOVERNANCE · STAKING · DEFI" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon rs-mega__item-icon--red" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="10" cy="10" r="7" stroke="#E01F3D" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><path d="M7.5 7H11C12.1 7 13 7.9 13 9C13 10.1 12.1 11 11 11H7.5V7Z" stroke="#E01F3D" stroke-width="1.4" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7.5 11H11.5L13.5 13.5" stroke="#E01F3D" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7.5 7V13.5" stroke="#E01F3D" stroke-width="1.4" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name rs-mega__item-name--red" data-astro-cid-eiyd7voq>$RED Token</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Governance · Staking</span> </div> </a> </div> <!-- Right detail panel --> <div class="rs-mega__detail rs-mega__detail--static" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content is-ready" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" data-astro-cid-eiyd7voq>THE BACKBONE OF DEFI</p> <h3 class="rs-mega__detail-title" data-astro-cid-eiyd7voq>Built by a team<br data-astro-cid-eiyd7voq>of DeFi experts</h3> <p class="rs-mega__detail-desc" data-astro-cid-eiyd7voq>RedStone is on a mission to become the most widely used oracle network in DeFi â trusted by 200+ protocols across 110+ chains with billions secured.</p> <div class="rs-mega__detail-actions" data-astro-cid-eiyd7voq> <a href="/contact/" class="rs-mega__detail-cta" data-astro-cid-eiyd7voq> 32Get in touch 33<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq><path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </a> </div> </div> </div> </div> </div> </div> <!-- Contact --> <a href="/contact" class="rs-nav__link" data-astro-cid-eiyd7voq>Contact</a> </nav><!-- /.rs-nav --> <!-- Right actions --> <div class="rs-header__actions" data-astro-cid-eiyd7voq> <button type="button" class="rs-btn rs-btn--red-token" aria-label="Open contact form" data-astro-cid-eiyd7voq> <span data-astro-cid-eiyd7voq>Contact us</span> </button> <button class="rs-hamburger" id="rs-hamburger" aria-label="Open menu" aria-expanded="false" aria-controls="rs-mobile-nav" type="button" data-astro-cid-eiyd7voq> <span data-astro-cid-eiyd7voq></span><span data-astro-cid-eiyd7voq></span><span data-astro-cid-eiyd7voq></span> </button> </div> </div><!-- /.rs-header__inner --> </header> <!-- Mobile Drawer â full-screen, OUTSIDE header to avoid backdrop-filter containing-block bug --> <div class="rs-mobile-nav" id="rs-mobile-nav" aria-hidden="true" role="dialog" aria-label="Mobile navigation" data-astro-cid-eiyd7voq> <!-- Logo --> <a href="/" class="rs-mobile-nav__logo" aria-label="RedStone Finance â Home" data-astro-cid-eiyd7voq> <img src="/images/Redstone-Logo_2.svg" class="rs-logo" loading="eager" alt="RedStone Logo" width="127" height="24" data-astro-cid-eiyd7voq> </a> <!-- Close button --> <button class="rs-mobile-nav__close" id="rs-mobile-close" type="button" aria-label="Close menu" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq> <line x1="18" y1="6" x2="6" y2="18" data-astro-cid-eiyd7voq></line> <line x1="6" y1="6" x2="18" y2="18" data-astro-cid-eiyd7voq></line> </svg> </button> <nav class="rs-mobile-nav__content" data-astro-cid-eiyd7voq> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq> 34Products 35<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/product-stack/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Product Stack</a> <a href="/price-feeds/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Price Feeds</a> <a href="/proof-of-reserves/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Proof of Reserve</a> <a href="/atom/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Atom</a> <a href="/bolt/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Bolt</a> <a href="/live/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>RedStone Live</a> <a href="/settle/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>RedStone Settle</a> </div> </div> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq> 36Developers 37<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/developers/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Developers Hub</a> <a href="https://docs.redstone.finance" target="_blank" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Docs â</a> <a href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Bounty Program â</a> </div> </div> <a href="/institutional/" class="rs-mobile-link" data-astro-cid-eiyd7voq>Institutional</a> <a href="/clients/" class="rs-mobile-link" data-astro-cid-eiyd7voq>Clients</a> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq> 38News 39<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/blog/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Blog</a> <a href="/reports/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Reports</a> <a href="/case-studies/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Case Studies</a> </div> </div> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq> 40Company 41<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/team/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Team</a> <a href="/careers/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Careers</a> <a href="/brand-kit/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Brand Kit</a> <a href="/security/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Security</a> <a href="/red-token/" class="rs-mobile-link rs-mobile-link--sub rs-mobile-link--red" data-astro-cid-eiyd7voq>$RED Token</a> </div> </div> <a href="/contact/" class="rs-mobile-link" data-astro-cid-eiyd7voq>Contact</a> <div class="rs-mobile-nav__actions" data-astro-cid-eiyd7voq> <button type="button" class="rs-btn rs-btn--red-token rs-btn--full" aria-label="Open contact form" data-astro-cid-eiyd7voq> <span data-astro-cid-eiyd7voq>Contact us</span> </button> </div> </nav> </div> <div class="rs-mobile-backdrop" id="rs-mobile-backdrop" aria-hidden="true" data-astro-cid-eiyd7voq></div> <!-- Load lottie-web once, globally -->
41<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js"></script>
41
41<script> 42function initHeader() { 43 /* âââ Elements âââ */ 44 const header = document.getElementById('rs-header'); 45 if (!header) return; 46 const hamburger = document.getElementById('rs-hamburger'); 47 const mobileNav = document.getElementById('rs-mobile-nav'); 48 const backdrop = document.getElementById('rs-mobile-backdrop'); 49 const megaTitle = document.getElementById('mega-title'); 50 const megaDesc = document.getElementById('mega-desc'); 51 const megaTags = document.getElementById('mega-tags'); 52 const megaCta = document.getElementById('mega-cta'); 53 const detailContent = document.querySelector('.rs-mega__detail-content'); 54 55 /* âââ Guard: bail out if mobile elements are missing âââ */ 56 if (!hamburger || !mobileNav || !backdrop) { 57 console.warn('[Header] Mobile nav elements not found in DOM', { hamburger, mobileNav, backdrop }); 58 return; 59 } 60 61 /* âââ Sync data-theme from header to mobile nav âââ */ 62 function syncMobileTheme() { 63 const theme = header.getAttribute('data-theme') || 'dark'; 64 mobileNav.setAttribute('data-theme', theme); 65 } 66 syncMobileTheme(); 67 new MutationObserver(syncMobileTheme).observe(header, { attributes: true, attributeFilter: ['data-theme'] }); 68 69 /* âââ Scroll theme & hide/show detection âââ */ 70 let ticking = false; 71 let lastScrollY = window.scrollY; 72 const scrollThreshold = 10; 73 74 window.addEventListener('scroll', () => { 75 if (!ticking) { 76 requestAnimationFrame(() => { 77 const currentScrollY = window.scrollY; 78 79 // Toggle scrolled styling 80 header.classList.toggle('is-scrolled', currentScrollY > 20); 81 82 // Hide/show logic 83 const isMobileNavOpen = mobileNav && mobileNav.classList.contains('is-open'); 84 const isAnyDropdownOpen = Array.from(navItems).some(item => item.classList.contains('is-open')); 85
86 if (isMobileNavOpen || isAnyDropdownOpen) { 87 header.classList.remove('rs-header--hidden'); 88 } else if (currentScrollY <= 72) { 89 header.classList.remove('rs-header--hidden'); 90 } else if (Math.abs(currentScrollY - lastScrollY) > scrollThreshold) { 91 if (currentScrollY > lastScrollY) { 92 header.classList.add('rs-header--hidden'); 93 } else { 94 header.classList.remove('rs-header--hidden'); 95 } 96 } 97 98 lastScrollY = currentScrollY; 99 ticking = false; 100 }); 101 ticking = true; 102 } 103 }, { passive: true }); 104 105 /* âââ Section-based theme switching via IntersectionObserver âââ */ 106 const themeMap = { 107 'dark': 'dark', 108 'darkmaroon': 'dark', 109 'maroondark': 'dark', 110 'maroon': 'dark', 111 'white': 'white', 112 'shell': 'shell', 113 'light': 'shell', 114 'whtite': 'white', 115 'salt': 'salt', 116 'gray': 'salt', 117 'red': 'red', 118 }; 119 120 const themeSections = document.querySelectorAll('[data-background]'); 121 if (themeSections.length > 0) { 122 const obs = new IntersectionObserver((entries) => { 123 entries.forEach(entry => { 124 if (entry.isIntersecting) { 125 const bg = entry.target.dataset.background?.toLowerCase() || ''; 126 const theme = themeMap[bg] || null; 127 if (theme) { 128 header.setAttribute('data-theme', theme); 129 } 130 } 131 }); 132 }, { rootMargin: '-72px 0px -80% 0px' }); 133 134 themeSections.forEach(s => obs.observe(s)); 135 } 136 137 /* âââ Desktop nav items âââ */ 138 const navItems = document.querySelectorAll('.rs-nav__item'); 139 let closeTimer = null; 140 141 /** Returns the button that controls aria-expanded (regular trigger OR split chevron) */ 142 function getAriaBtn(item) { 143 return item.querySelector('.rs-nav__trigger-chevron') || 144 item.querySelector('.rs-nav__trigger'); 145 } 146 147 function openNavItem(item) { 148 clearTimeout(closeTimer); 149 navItems.forEach(o => { if (o !== item) closeNavItem(o); }); 150 item.classList.add('is-open'); 151 const btn = getAriaBtn(item); 152 if (btn) btn.setAttribute('aria-expanded', 'true'); 153 } 154 function closeNavItem(item) { 155 item.classList.remove('is-open'); 156 const btn = getAriaBtn(item); 157 if (btn) btn.setAttribute('aria-expanded', 'false'); 158 } 159 160 navItems.forEach(item => { 161 // Works for both: regular <button.rs-nav__trigger> and split <button.rs-nav__trigger-chevron> 162 const chevronBtn = item.querySelector('.rs-nav__trigger-chevron'); 163 const regularBtn = item.querySelector('.rs-nav__trigger'); 164 const panel = item.querySelector('.rs-mega, .rs-dropdown'); 165 166 if (!panel) return; 167 168 // Chevron button click â toggle mega 169 if (chevronBtn) { 170 chevronBtn.addEventListener('click', e => { 171 e.stopPropagation(); 172 item.classList.contains('is-open') ? closeNavItem(item) : openNavItem(item); 173 }); 174 } 175 // Regular trigger click â toggle dropdown 176 if (regularBtn && !chevronBtn) { 177 regularBtn.addEventListener('click', e => { 178 e.stopPropagation(); 179 item.classList.contains('is-open') ? closeNavItem(item) : openNavItem(item); 180 }); 181 } 182 183 // Hover opens mega (desktop only) 184 item.addEventListener('mouseenter', () => { if (window.innerWidth > 1100) openNavItem(item); }); 185 item.addEventListener('mouseleave', () => { 186 if (window.innerWidth > 1100) closeTimer = setTimeout(() => closeNavItem(item), 140); 187 }); 188 panel.addEventListener('mouseenter', () => clearTimeout(closeTimer)); 189 panel.addEventListener('mouseleave', () => { 190 if (window.innerWidth > 1100) closeTimer = setTimeout(() => closeNavItem(item), 140); 191 }); 192 }); 193 194 document.addEventListener('click', e => { 195 if (!e.target.closest('.rs-nav__item')) navItems.forEach(closeNavItem); 196 }); 197 document.addEventListener('keydown', e => { 198 if (e.key === 'Escape') { navItems.forEach(closeNavItem); closeMobileNav(); } 199 }); 200 201 /* âââ Lottie management âââ */ 202 let lottiesInitialized = false;
203 const lottieInstances = []; 204 205 function initAllLotties() { 206 if (lottiesInitialized) return; 207 if (!window.lottie) return; 208 lottiesInitialized = true; 209 210 const containers = document.querySelectorAll('.rs-mega__item-lottie'); 211 containers.forEach(container => { 212 const src = container.dataset.lottie; 213 if (!src) return; 214 try { 215 const anim = lottie.loadAnimation({ 216 container: container, 217 renderer: 'svg', 218 loop: true, 219 autoplay: false, 220 path: src, 221 }); 222 anim.addEventListener('DOMLoaded', () => { 223 anim.goToAndStop(anim.totalFrames - 1, true); 224 }); 225 lottieInstances.push({ 226 element: container, 227 anim: anim 228 }); 229 } catch (err) { 230 console.warn('Failed to load item Lottie:', err); 231 } 232 }); 233 } 234 235 function playLottieForContainer(container) { 236 initAllLotties(); 237 lottieInstances.forEach(item => { 238 if (item.element === container) { 239 try { item.anim.goToAndPlay(0, true); } catch(e) {} 240 } else { 241 try { item.anim.goToAndStop(item.anim.totalFrames - 1, true); } catch(e) {} 242 } 243 }); 244 } 245 246 function pauseAllLotties() { 247 lottieInstances.forEach(item => { 248 try { item.anim.goToAndStop(item.anim.totalFrames - 1, true); } catch(e) {} 249 }); 250 } 251 252 /* âââ Client Logo Map âââ */ 253 const clientLogoMap = { 254 'Binance': '/images/mega-menu/clients/binance.svg', 255 'Entropy': '/images/mega-menu/clients/entropy.svg', 256 'Derive': '/images/mega-menu/clients/derive.svg', 257 'GRVT': '/images/mega-menu/clients/grvt.svg', 258 'Initia': '/images/mega-menu/clients/initia.svg', 259 'HyperLend': '/images/mega-menu/clients/hyperlend.svg', 260 'Lista DAO': '/images/mega-menu/clients/lista.svg', 261 'Gauntlet': '/images/mega-menu/clients/gauntlet.svg', 262 'Securitize': '/images/mega-menu/clients/securitize.svg', 263 'Canton': '/images/mega-menu/clients/canton.svg', 264 'Morpho': '/images/mega-menu/clients/morpho.svg', 265 'Spiko': '/images/mega-menu/clients/spiko.svg', 266 'Tempo': '/images/mega-menu/clients/tempo.svg', 267 'Lombard': '/images/mega-menu/clients/lombard.svg', 268 'Radiant Prime': '/images/mega-menu/clients/radiant-prime.png', 269 'Felix': '/images/mega-menu/clients/felix.svg', 270 'Venus': '/images/mega-menu/clients/venus.svg', 271 'Euphoria': '/images/mega-menu/clients/euphoria.svg', 272 'Curvance': '/images/mega-menu/clients/curvance.svg', 273 'Euler': '/images/mega-menu/clients/euler.svg', 274 'Extended': '/images/mega-menu/clients/extended.svg', 275 'Kaia': '/images/mega-menu/clients/kaia.svg', 276 'Symbiotic': '/images/settle/logo-symbiotic.svg', 277 'Alphagrowth': '/images/settle/logo-alphagrowth-cropped.png' 278 }; 279 280 // Instant preload of all client logos into browser cache to eliminate hover delay and prevent jumping 281 if (typeof window !== 'undefined') { 282 Object.values(clientLogoMap).forEach(src => { 283 const preloadImg = new Image(); 284 preloadImg.src = src; 285 }); 286 } 287 288 const clientUrlMap = { 289 'Binance': 'https://www.binance.com/', 290 'Entropy': 'https://entropy.io/', 291 'Derive': 'https://www.derive.xyz/', 292 'GRVT': 'https://grvt.io/', 293 'Initia': 'https://initia.xyz/', 294 'HyperLend': 'https://hyperlend.finance/', 295 'Lista DAO': 'https://lista.org/', 296 'Gauntlet': 'https://www.gauntlet.xyz/', 297 'Securitize': 'https://securitize.io/', 298 'Canton': 'https://www.canton.network/', 299 'Morpho': 'https://morpho.org/', 300 'Euler': 'https://www.euler.finance/', 301 'Spiko': 'https://www.spiko.io/', 302 'Tempo': 'https://tempo.xyz/', 303 'Lombard': 'https://www.lombard.finance/', 304 'Radiant Prime': 'https://radiantprime.xyz/', 305 'Felix': 'https://www.usefelix.xyz/', 306 'Venus': 'https://venus.io/', 307 'Euphoria': 'https://euphoria.finance/', 308 'Curvance': 'https://curvance.com/', 309 'Extended': 'https://extended.exchange/',
310 'Kaia': 'https://www.kaia.io/', 311 'Symbiotic': 'https://symbiotic.fi/' 312 }; 313 314 function updateDetailsPanel(item) { 315 const title = item.dataset.title || ''; 316 const desc = item.dataset.desc || ''; 317 const tags = item.dataset.tags || ''; 318 const href = item.getAttribute('href') || '#'; 319 const clientsStr = item.dataset.clients || ''; 320 321 detailContent.classList.remove('is-ready'); 322 323 // Clients 324 const clientsContainer = document.getElementById('mega-clients-container'); 325 const clientsList = document.getElementById('mega-clients-list'); 326 327 setTimeout(() => { 328 megaTitle.textContent = title; 329 megaDesc.textContent = desc; 330 megaTags.textContent = tags; 331 if (megaCta) { 332 megaCta.href = href; 333 megaCta.textContent = 'Explore product'; 334 335 // Re-attach arrow 336 const arrow = document.createElementNS('http://www.w3.org/2000/svg','svg'); 337 arrow.setAttribute('width','14'); arrow.setAttribute('height','14'); 338 arrow.setAttribute('viewBox','0 0 14 14'); arrow.setAttribute('fill','none'); 339 arrow.setAttribute('aria-hidden','true'); 340 const path = document.createElementNS('http://www.w3.org/2000/svg','path'); 341 path.setAttribute('d','M3 11L11 3M11 3H5M11 3V9'); 342 path.setAttribute('stroke','currentColor'); 343 path.setAttribute('stroke-width','1.4'); 344 path.setAttribute('stroke-linecap','round'); 345 path.setAttribute('stroke-linejoin','round'); 346 arrow.appendChild(path); 347 megaCta.appendChild(arrow); 348 } 349 350 if (clientsContainer && clientsList) { 351 if (clientsStr) { 352 clientsList.innerHTML = ''; 353 clientsStr.split(',').forEach(cName => { 354 const trimmed = cName.trim(); 355 const src = clientLogoMap[trimmed]; 356 if (src) { 357 const linkUrl = clientUrlMap[trimmed]; 358 const img = document.createElement('img'); 359 img.src = src; 360 img.alt = `${trimmed} client logo`; 361 img.className = 'rs-mega__client-logo'; 362 img.loading = 'eager'; 363 img.decoding = 'sync'; 364 const isRadiant = trimmed === 'Radiant Prime'; 365 img.style.height = isRadiant ? '39px' : '18px'; 366 img.style.maxHeight = isRadiant ? '42px' : '19px'; 367 img.style.width = 'auto'; 368 img.style.maxWidth = isRadiant ? '250px' : '130px'; 369 img.style.objectFit = 'contain'; 370 img.style.flexShrink = '0'; 371 img.style.display = 'inline-block'; 372 373 if (linkUrl) { 374 const a = document.createElement('a'); 375 a.href = linkUrl; 376 a.target = '_blank'; 377 a.rel = 'noopener noreferrer'; 378 a.className = 'rs-mega__client-logo-link'; 379 a.setAttribute('aria-label', `${trimmed} website`); 380 a.appendChild(img); 381 clientsList.appendChild(a); 382 } else { 383 clientsList.appendChild(img); 384 } 385 } 386 }); 387 clientsContainer.style.display = 'flex'; 388 } else { 389 clientsContainer.style.display = 'none'; 390 } 391 } 392 393 detailContent.classList.add('is-ready'); 394 }, 80); 395 } 396 397 /* âââ Product hover in mega menu with Hover Intent âââ */ 398 const productItems = document.querySelectorAll('#mega-products .rs-mega__item'); 399 let firstHovered = false; 400 let hoverTimeout = null; 401 402 productItems.forEach((item, idx) => { 403 function activateItem() { 404 // Highlight active 405 productItems.forEach(i => i.classList.remove('is-active')); 406 item.classList.add('is-active'); 407 408 // Play Lottie for this item, pause others 409 const lottieContainer = item.querySelector('.rs-mega__item-lottie'); 410 if (lottieContainer) { 411 playLottieForContainer(lottieContainer); 412 } else { 413 pauseAllLotties(); 414 } 415 416 updateDetailsPanel(item); 417 } 418 419 item.addEventListener('mouseenter', () => { 420 clearTimeout(hoverTimeout); 421 hoverTimeout = setTimeout(activateItem, 80); // 80ms hover intent delay 422 }); 423 item.addEventListener('focus', activateItem); 424 item.addEventListener('mouseleave', () => { 425 clearTimeout(hoverTimeout); 426 }); 427 }); 428 429 // Auto-activate first on mega open 430 const megaProductsItem = document.getElementById('nav-products'); 431 const observer = new MutationObserver(() => { 432 if (megaProductsItem.classList.contains('is-open')) { 433 initAllLotties(); 434 if (!firstHovered) { 435 firstHovered = true; 436 const firstItem = productItems[0]; 437 if (firstItem) { 438 firstItem.classList.add('is-active'); 439 updateDetailsPanel(firstItem); 440 441 const lottieContainer = firstItem.querySelector('.rs-mega__item-lottie'); 442 if (lottieContainer) { 443 playLottieForContainer(lottieContainer); 444 } else { 445 pauseAllLotties(); 446 } 447 } 448 } 449 } else if (!megaProductsItem.classList.contains('is-open')) { 450 pauseAllLotties(); 451 firstHovered = false;
452 } 453 }); 454 observer.observe(megaProductsItem, { attributes: true, attributeFilter: ['class'] }); 455 456 /* âââ Mobile nav âââ */ 457 function openMobileNav() { 458 mobileNav.classList.add('is-open'); 459 mobileNav.setAttribute('aria-hidden','false'); 460 backdrop.classList.add('is-visible'); 461 hamburger.classList.add('is-open'); 462 hamburger.setAttribute('aria-expanded','true'); 463 document.body.style.overflow = 'hidden'; 464 } 465 function closeMobileNav() { 466 mobileNav.classList.remove('is-open'); 467 mobileNav.setAttribute('aria-hidden','true'); 468 backdrop.classList.remove('is-visible'); 469 hamburger.classList.remove('is-open'); 470 hamburger.setAttribute('aria-expanded','false'); 471 document.body.style.overflow = ''; 472 } 473 474 hamburger.addEventListener('click', () => { 475 mobileNav.classList.contains('is-open') ? closeMobileNav() : openMobileNav(); 476 }); 477 backdrop.addEventListener('click', closeMobileNav); 478 479 /* Close button inside full-screen nav */ 480 const closeBtn = document.getElementById('rs-mobile-close'); 481 if (closeBtn) closeBtn.addEventListener('click', closeMobileNav); 482 483 /* âââ Mobile accordions âââ */ 484 document.querySelectorAll('.rs-mobile-accordion__trigger').forEach(trigger => { 485 trigger.addEventListener('click', () => { 486 const acc = trigger.closest('.rs-mobile-accordion'); 487 const open = acc.classList.contains('is-open'); 488 document.querySelectorAll('.rs-mobile-accordion').forEach(a => { 489 a.classList.remove('is-open'); 490 a.querySelector('.rs-mobile-accordion__trigger').setAttribute('aria-expanded','false'); 491 }); 492 if (!open) { 493 acc.classList.add('is-open'); 494 trigger.setAttribute('aria-expanded','true'); 495 } 496 }); 497 }); 498 499 mobileNav.querySelectorAll('a').forEach(link => link.addEventListener('click', closeMobileNav)); 500 501 /* âââ Open Contact Modal on $RED TOKEN button click âââ */ 502 document.querySelectorAll('.rs-btn--red-token').forEach(btn => { 503 btn.addEventListener('click', (e) => { 504 e.preventDefault(); 505 closeMobileNav(); 506 if (typeof window.openContactModal === 'function') { 507 window.openContactModal(); 508 } else { 509 const modal = document.getElementById('rs-contact-modal'); 510 if (modal) { 511 modal.hidden = false; 512 document.body.style.overflow = 'hidden'; 513 } else { 514 window.location.href = '/contact/'; 515 } 516 } 517 }); 518 }); 519 520 /* âââ Active page highlighting âââ */ 521 const path = window.location.pathname; 522 document.querySelectorAll('.rs-nav__link, .rs-mega__item, .rs-dropdown__link').forEach(link => { 523 const href = link.getAttribute('href'); 524 if (href && href !== '#' && href.length > 1 && path.startsWith(href)) { 525 link.setAttribute('aria-current','page'); 526 } 527 }); 528 529} 530 531if (document.readyState === 'loading') { 532 document.addEventListener('DOMContentLoaded', initHeader); 533} else { 534 initHeader(); 535} 536</script>
536 <!-- Global styles for mobile nav/backdrop that live outside <header> --> <div data-background="dark" class="w-layout-blockcontainer rs-section darkmaroon herosection w-container"> <div class="w-layout-blockcontainer rs-container small hero-container w-container"> <div data-wf--hero2columns--variant="base" class="rs-hero-2-columns w-row"> <div class="column-43 w-col w-col-6 w-col-stack w-col-small-small-stack w-col-tiny-tiny-stack"> <h1 class="text-webh2"> <span data-wf--heading2--variant="gem" class="w-variant-6e78f2e4-0cb4-6526-6d9d-f8f74e1f5811" style="display:block;color:var(--gem)">Power yourâ¨data layerâ¨with</span> <span data-wf--heading2--variant="white" class="w-variant-6d194471-529a-3370-8f8f-a4d8d0c3ea7c" style="display:block;color:var(--gray--white)"> RedStone</span> </h1> <div class="text-webbody herosubtext">From first contact to production, we support yourâ¨integration every step of the way</div> <div class="w-layout-hflex flex-block-39"> <div class="div-block-27"> <div data-figma-id="2012:95344" class="rs-button big outline text-button-md"> <a data-figma-id="I2012:95344;40:3811" href="#contact-form" class="button-text">Contact us</a> </div> </div> </div> </div> <div class="column-44 w-col w-col-6 w-col-stack w-col-small-small-stack w-col-tiny-tiny-stack"> <div class="herocolumnsimage"><img loading="lazy" src="/images/Frame-1547764998.png" alt="Red digital interface with a code window displaying a function and three hexagonal shapes, and a transmitting status bar at the bottom."></div> </div> </div> </div> </div> <section id="contact-form" data-background="white" class="rs-section white"> <div class="w-layout-blockcontainer rs-container small _2xl-y w-container"> <div class="w-layout-grid grid-33"> <div id="w-node-a8b78475-a1e5-2c26-c7e6-83df5a3ab449-e299f52f" class="div-block-110"> <div class="div-block-111"> <h3 data-wf--heading3--variant="base" class="text-webh3">Letâs Build <br>the Future of DeFi</h3> </div> <div class="text-webbody maroon">Our team is ready to help you scale. Whether you are launching a new protocol or integrating secure data feeds, we provide the infrastructure to make it happen.<br><br>Reach out to discuss:<br><span></span></div> <ul role="list" class="list-2"> <li class="text-webbody maroon">Custom DeFi Product Development,</li> <li class="text-webbody maroon">Tailored Price Feeds for Your Assets,</li> <li class="text-webbody maroon">End-to-End Tokenization Solutions</li> <li class="text-webbody maroon">Technical Support & Strategy</li> </ul> <div class="text-webbody maroon">Fill out the form and a member of our core team will be in touch shortly.<br></div> </div> <div class="div-block-109"><div class="code-embed-6 w-embed w-script"><div data-rs-form="true"><div class="rs-form" id="rs-form"><div class="rs-row"><div class="rs-field"><label for="rs-firstname">First Name <span class="rs-req">*</span></label><input id="rs-firstname" type="text" placeholder="John" data-rs="firstname"><div class="rs-error" data-rs-err="firstname"></div></div><div class="rs-field"><label for="rs-lastname">Last Name</label><input id="rs-lastname" type="text" placeholder="Doe" data-rs="lastname"></div></div><div class="rs-field"><label for="rs-email">Work Email <span class="rs-req">*</span></label><input id="rs-email" type="email" placeholder="[email protected]" data-rs="email"><div class="rs-error" data-rs-err="email"></div></div><div class="rs-row"><div class="rs-field"><label for="rs-website">Project Website <span class="rs-req">*</span></label><input id="rs-website" type="url" placeholder="https://yourproject.com" data-rs="website"><div class="rs-error" data-rs-err="website"></div></div><div class="rs-field"><label for="rs-telegram">Telegram Handle / ID</label><input id="rs-telegram" type="text" placeholder="@yourhandle" data-rs="telegram"></div></div><div class="rs-field"><label for="rs-are-you-a">Are you a <span class="rs-req">*</span></label><select id="rs-are-you-a" data-rs="are_you_a" class="rs-placeholder"><option value="" disabled="" selected="">Select your role (e.g., Developer, Founder)</option><option value="Chain">Chain</option><option value="Crypto Asset Issuer">Crypto Asset Issuer</option><option value="RWA Issuer/Tokenisation Platform">RWA Issuer/Tokenisation Platform</option><option value="Blockchain Application">Blockchain Application</option><option value="Financial Institution / Fintech">Financial Institution / Fintech</option>
536<option value="Infrastructure or Data Provider">Infrastructure or Data Provider</option><option value="Other">Other</option></select><div class="rs-error" data-rs-err="are_you_a"></div></div><div class="rs-field"><label for="rs-message">Message</label><textarea id="rs-message" placeholder="How can we help you succeed?" rows="3" data-rs="message"></textarea></div><div class="rs-consent"><label><input type="checkbox" data-rs="consent"><span>I agree to receive communications from RedStone. You can unsubscribe at any time.</span></label><div class="rs-error" data-rs-err="consent"></div></div><div class="rs-actions"><button type="button" class="rs-button big text-button-md rs-btn" id="rs-submit">Submit</button></div><div class="rs-submit-error" id="rs-submit-error"></div></div><div class="rs-success" id="rs-success"><p class="rs-success-title">Message sent</p><p class="rs-success-sub">We'll be in touch shortly.</p></div></div> <!-- HubSpot tracking code â sets the hubspotutk cookie needed for contact dedup -->
536<script type="module" src="/_astro/ContactSection2.astro_astro_type_script_index_0_lang.Bhf3Z1wS.js?dpl=dpl_6NhWRLwZhQL2LyoeYLsQcsyzofup"></script>
536
536<script type="module" src="/_astro/ContactSection2.astro_astro_type_script_index_1_lang.Cbxw2I-7.js?dpl=dpl_6NhWRLwZhQL2LyoeYLsQcsyzofup"></script>
536</div></div> </div> </div> </section> <div id="rsCookieBanner" class="rs-cookie-banner"> <div class="rs-cookie-content"> <div class="rs-cookie-text"> <h3>We Value Your Privacy</h3> <p>RedStone uses cookies to enhance your experience with our blockchain oracle services. We process your data in accordance with GDPR requirements to provide personalized content and analyze our traffic.</p> <div class="rs-cookie-legal">By clicking "Accept All", you consent to our use of cookies. Customize your preferences anytime.<br> <a href="#" onclick="event.preventDefault();RedStone.openCookieSettings()">Learn more</a> | <a href="/documents/RedStone---Privacy-Policy.pdf">Privacy Policy</a> | <a href="/terms-of-use/">Terms of Service</a> </div> </div> <div class="rs-cookie-actions"> <button onclick="RedStone.openCookieSettings()" class="rs-btn rs-btn-secondary">Customize</button> <button onclick="RedStone.rejectOptional()" class="rs-btn rs-btn-secondary">Reject Optional</button> <button onclick="RedStone.acceptAll()" class="rs-btn rs-btn-success">Accept All</button> </div> </div> </div> <div id="rsCookieModal" class="rs-cookie-modal" onclick="if(event.target===this)RedStone.closeCookieSettings()"> <div class="rs-modal-content"> <div class="rs-modal-header"> <h2>Cookie Preferences</h2> <p>Manage your cookie settings for RedStone Finance services in accordance with GDPR requirements. You can change these settings at any time.</p> </div> <div class="rs-modal-body"> <div class="rs-cookie-category required"> <div class="rs-category-header"> <div class="rs-category-title">Strictly Necessary <span class="rs-required-badge">Required</span></div> <div class="rs-toggle active disabled" data-category="necessary"></div> </div> <div class="rs-category-desc">Essential cookies required for RedStone Finance platform functionality. These cannot be switched off as they enable core features like secure transactions and user authentication.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> redstone_cookie_consent, session_id, csrf_token<br><strong>Retention:</strong> Session or 12 months</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Performance & Analytics</div> <div class="rs-toggle" data-category="analytics"></div> </div> <div class="rs-category-desc">Help us understand how users interact with RedStone Finance services to improve our blockchain oracle performance and user experience. All data is aggregated and anonymous.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> _ga, _ga_*, _gid, _hjSession_*, _hjSessionUser_*<br><strong>Third Parties:</strong> Google Analytics, Hotjar<br><strong>Retention:</strong> 2 years (Google), 1 year (Hotjar)</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Targeting & Advertising</div> <div class="rs-toggle" data-category="targeting"></div> </div> <div class="rs-category-desc">Used to deliver personalized content about RedStone Finance services and measure advertising effectiveness across blockchain and DeFi platforms.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> YSC, VISITOR_INFO1_LIVE, _fbp, _fbc<br><strong>Third Parties:</strong> YouTube, Facebook, Google Ads<br><strong>Retention:</strong> 6 months to 2 years</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Functionality</div> <div class="rs-toggle" data-category="functional"></div> </div> <div class="rs-category-desc">Enable enhanced functionality like language preferences, user dashboard settings, and personalized RedStone Finance features.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> lang_pref, theme_mode, RDST_AD_TOU<br><strong>Retention:</strong> 6 months to 1 year</div> </div> </div> <div class="rs-modal-footer"> <div class="rs-footer-left"> <button onclick="RedStone.rejectAll()" class="rs-btn rs-btn-secondary">Reject All</button> <button onclick="RedStone.acceptAll();RedStone.closeCookieSettings()" class="rs-btn rs-btn-success">Accept All</button> </div> <div class="rs-footer-right"> <button onclick="RedStone.closeCookieSettings()" class="rs-btn rs-btn-secondary">Cancel</button> <button onclick="RedStone.savePreferences()" class="rs-btn rs-btn-primary">Save Preferences</button> </div> </div> </div> </div>
536<script type="module" src="/_astro/ContactSection6.astro_astro_type_script_index_0_lang.D9_unicS.js?dpl=dpl_6NhWRLwZhQL2LyoeYLsQcsyzofup"></script>
536 <section class="rs-section darkmaroon" style="padding-top: 0; margin-top: 0px; position: relative; z-index: 10; "> <nav class="rs-footer-nav " style="padding-top: 0; margin-top: 0;"> <div class="w-layout-blockcontainer rs-container small w-container" style="padding-top: 0; margin-top: 0;"> <div class="div-block-68"><img width="127" height="24" class="redstone-logo" src="/images/Redstone-Logo_2.svg" data-figma-image-id="681ba6974f7e1a1f9e4550e6" alt="RedStone Logo" data-figma-id="2012:100537" data-figma-image-hash="fd972d65510ea83a9ea2cb6ab06f7290" loading="lazy"></div> <div class="footernavcolumns w-row"> <div class="column-32 w-col w-col-3"><img width="127" height="24" class="redstone-logo" src="/images/Redstone-Logo_2.svg" data-figma-image-id="681ba6974f7e1a1f9e4550e6" alt="RedStone Logo" data-figma-id="2012:100537" data-figma-image-hash="fd972d65510ea83a9ea2cb6ab06f7290" loading="lazy"> <div class="div-block-89"> <a data-wf--footernavlink--variant="gem" href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" class="footernavlink text-weblabel">Bounty Program</a> </div> <div class="div-block-89"> <a data-wf--footernavlink--variant="gem" href="/red-token/" class="footernavlink text-weblabel">$Red Token</a> </div> <div class="footer-subtext text-webbutton-sm">The backbone of tomorrow's financial system. Modular blockchain oracles built for DeFi and institutions.</div> </div> <div class="w-col w-col-3"> <div class="footernavcolumn"> <div class="div-block-26"> <div class="text-weblabel bold">Products</div> </div> <a data-wf--footernavlink--variant="gem" href="/product-stack/" class="footernavlink text-weblabel">Product Stack</a> <a data-wf--footernavlink--variant="gem" href="/institutional/" class="footernavlink text-weblabel">Institutional</a> <a data-wf--footernavlink--variant="gem" href="/price-feeds/" class="footernavlink text-weblabel">Price Feeds</a> <a data-wf--footernavlink--variant="gem" href="/proof-of-reserves/" class="footernavlink text-weblabel">Proof of Reserve</a> <a data-wf--footernavlink--variant="gem" href="/atom/" class="footernavlink text-weblabel">Atom</a> <a data-wf--footernavlink--variant="gem" href="/bolt/" class="footernavlink text-weblabel">Bolt</a> <a data-wf--footernavlink--variant="gem" href="/live/" class="footernavlink text-weblabel">RedStone Live</a> <a data-wf--footernavlink--variant="gem" href="/settle/" class="footernavlink text-weblabel">RedStone Settle</a> </div> </div> <div class="column-34 w-col w-col-3"> <div class="footernavcolumn"> <div class="div-block-26"> <div class="text-weblabel bold">Company</div> </div> <a data-wf--footernavlink--variant="gem" href="/blog/" class="footernavlink text-weblabel">Blog</a> <a data-wf--footernavlink--variant="gem" href="/case-studies/" class="footernavlink text-weblabel">Case Studies</a> <a data-wf--footernavlink--variant="gem" href="/clients/" class="footernavlink text-weblabel">Clients</a> <a data-wf--footernavlink--variant="gem" href="/developers/" class="footernavlink text-weblabel">Developers</a> <a data-wf--footernavlink--variant="gem" href="https://docs.redstone.finance" target="_blank" class="footernavlink text-weblabel">Docs</a> <a data-wf--footernavlink--variant="gem" href="/reports/" class="footernavlink text-weblabel">REPORTS</a> <a data-wf--footernavlink--variant="gem" href="/team/" class="footernavlink text-weblabel">Team</a> <a data-wf--footernavlink--variant="gem" href="/careers/" class="footernavlink text-weblabel">Careers</a> <a data-wf--footernavlink--variant="gem" href="/security/" class="footernavlink text-weblabel">Security</a> <a data-wf--footernavlink--variant="gem" href="/contact/" class="footernavlink text-weblabel">Contact</a> <a data-wf--footernavlink--variant="gem" href="/brand-kit/" class="footernavlink text-weblabel">Brand kit</a> <a data-wf--footernavlink--variant="gem" href="/red-token/" class="footernavlink text-weblabel mobile-only-link" style="display: none;">$Red Token</a> <a data-wf--footernavlink--variant="gem" href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" class="footernavlink text-weblabel mobile-only-link" style="display: none;">Bounty Program</a> </div> </div> <div class="column-33 w-col w-col-3"> <div class="footernavcolumn"> <div class="div-block-26"> <div class="text-weblabel bold">Socials</div> </div> <a data-wf--footernavlink--variant="gem" href="https://t.me/redstonefinance/" target="_blank" class="footernavlink text-weblabel">Telegram</a> <a data-wf--footernavlink--variant="gem" href="https://x.com/redstone_defi" target="_blank" class="footernavlink text-weblabel">x (Twitter)</a> <a data-wf--footernavlink--variant="gem" href="https://discord.gg/redstonedefi" target="_blank" class="footernavlink text-weblabel">Discord</a> <a data-wf--footernavlink--variant="gem" href="https://www.youtube.com/@redstone_defi" target="_blank" class="footernavlink text-weblabel">Youtube</a> <a data-wf--footernavlink--variant="gem" href="https://github.com/redstone-finance" target="_blank" class="footernavlink text-weblabel">github</a> <a data-wf--footernavlink--variant="gem" href="https://www.linkedin.com/company/redstone-finance/" target="_blank" class="footernavlink text-weblabel">LinkedIn</a> </div> </div> </div> </div> </nav> <footer data-wf--footer-rs--variant="dark" class="rs-footer "> <div class="text-weblabel-sm shell full-width">2026 All Rights Reserved</div> <div class="footercopyrightnav"> <a href="/security/" class="rs-footer-link text-weblabel-sm">Security</a> <a href="/mica/" class="rs-footer-link text-weblabel-sm">MICA white paper</a> <a href="/documents/RedStone---Privacy-Policy.pdf" target="_blank" class="rs-footer-link text-weblabel-sm">Privacy Policy</a> <a href="/terms-of-use/" class="rs-footer-link text-weblabel-sm">Terms of Use</a> <a data-rs-action="open-settings" href="#" class="rs-footer-link text-weblabel-sm">Manage Cookies</a> </div> </footer> </section> <!-- Cookie Banner --><div id="rsCookieBanner" class="rs-cookie-banner"> <div class="rs-cookie-content"> <div class="rs-cookie-text"> <h3>We Value Your Privacy</h3> <p>
536RedStone uses cookies to enhance your experience with our blockchain oracle services. We process your data in accordance with GDPR requirements to provide personalized content and analyze our traffic.</p> <div class="rs-cookie-legal">By clicking "Accept All", you consent to our use of cookies. Customize your preferences anytime.<br> <a href="#" onclick="event.preventDefault();RedStone.openCookieSettings()">Learn more</a> | <a href="/documents/RedStone---Privacy-Policy.pdf">Privacy Policy</a> | <a href="/terms-of-use/">Terms of Service</a> </div> </div> <div class="rs-cookie-actions"> <button onclick="RedStone.openCookieSettings()" class="rs-btn rs-btn-secondary">Customize</button> <button onclick="RedStone.rejectOptional()" class="rs-btn rs-btn-secondary">Reject Optional</button> <button onclick="RedStone.acceptAll()" class="rs-btn rs-btn-success">Accept All</button> </div> </div> </div> <!-- Cookie Preferences Modal --> <div id="rsCookieModal" class="rs-cookie-modal" onclick="if(event.target===this)RedStone.closeCookieSettings()"> <div class="rs-modal-content"> <div class="rs-modal-header"> <h2>Cookie Preferences</h2> <p>Manage your cookie settings for RedStone Finance services in accordance with GDPR requirements. You can change these settings at any time.</p> </div> <div class="rs-modal-body"> <div class="rs-cookie-category required"> <div class="rs-category-header"> <div class="rs-category-title">Strictly Necessary <span class="rs-required-badge">Required</span></div> <div class="rs-toggle active disabled" data-category="necessary"></div> </div> <div class="rs-category-desc">Essential cookies required for RedStone Finance platform functionality. These cannot be switched off as they enable core features like secure transactions and user authentication.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> redstone_cookie_consent, session_id, csrf_token<br><strong>Retention:</strong> Session or 12 months</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Performance & Analytics</div> <div class="rs-toggle" data-category="analytics"></div> </div> <div class="rs-category-desc">Help us understand how users interact with RedStone Finance services to improve our blockchain oracle performance and user experience. All data is aggregated and anonymous.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> _ga, _ga_*, _gid, _hjSession_*, _hjSessionUser_*<br><strong>Third Parties:</strong> Google Analytics, Hotjar<br><strong>Retention:</strong> 2 years (Google), 1 year (Hotjar)</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Targeting & Advertising</div> <div class="rs-toggle" data-category="targeting"></div> </div> <div class="rs-category-desc">Used to deliver personalized content about RedStone Finance services and measure advertising effectiveness across blockchain and DeFi platforms.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> YSC, VISITOR_INFO1_LIVE, _fbp, _fbc<br><strong>Third Parties:</strong> YouTube, Facebook, Google Ads<br><strong>Retention:</strong> 6 months to 2 years</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Functionality</div> <div class="rs-toggle" data-category="functional"></div> </div> <div class="rs-category-desc">Enable enhanced functionality like language preferences, user dashboard settings, and personalized RedStone Finance features.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> lang_pref, theme_mode, RDST_AD_TOU<br><strong>Retention:</strong> 6 months to 1 year</div> </div> </div> <div class="rs-modal-footer"> <div class="rs-footer-left"> <button onclick="RedStone.rejectAll()" class="rs-btn rs-btn-secondary">Reject All</button> <button onclick="RedStone.acceptAll();RedStone.closeCookieSettings()" class="rs-btn rs-btn-success">Accept All</button> </div> <div class="rs-footer-right"> <button onclick="RedStone.closeCookieSettings()" class="rs-btn rs-btn-secondary">Cancel</button> <button onclick="RedStone.savePreferences()" class="rs-btn rs-btn-primary">Save Preferences</button> </div> </div> </div> </div>
536<script> 537window.RedStone = window.RedStone || {}; 538(function(RedStone) { 539 const COOKIE_NAME = 'redstone_cookie_consent'; 540 const DOMAIN = window.location.hostname.includes('localhost') 541 ? 'localhost' 542 : window.location.hostname.endsWith('redstone.finance') 543 ? '.redstone.finance' 544 : window.location.hostname; 545 546 const COOKIE_PATTERNS = { 547 analytics: { 548 patterns: [/^_ga/, /^_gid/, /^_gat/, /^__utm/, /^_hj/], 549 domains: ['', '.redstone.finance', '.blog.redstone.finance', '.app.redstone.finance'] 550 }, 551 targeting: { 552 patterns: [/^_fbp/, /^_fbc/, /^YSC/, /^VISITOR_INFO/, /^fr$/, /^ads/], 553 domains: ['', '.youtube.com', '.facebook.com', '.google.com', DOMAIN] 554 }, 555 functional: { 556 patterns: [/^lang/, /^theme/, /^user_pref/, /^RDST_AD_TOU/], 557 domains: ['', DOMAIN] 558 } 559 }; 560 const ESSENTIAL_PATTERNS = [/^redstone_cookie_consent/, /^session/, /^csrf/, /^auth/, /^essential/]; 561 let consentData = { 562 necessary: true, 563 analytics: false, 564 targeting: false, 565 functional: false, 566 timestamp: 0, 567 version: '1.0', 568 domain: 'redstone.finance', 569 userAgent: navigator.userAgent 570 }; 571 let originalCookieDescriptor = null; 572 let blockingActive = false; 573 574 function getAllCookies() { 575 return document.cookie.split(';').reduce((cookies, cookie) => { 576 const [name, value] = cookie.trim().split('='); 577 if (name) cookies[name] = decodeURIComponent(value || ''); 578 return cookies; 579 }, {}); 580 } 581 582 function deleteCookie(name, domain = '', path = '/') { 583 const domains = domain ? [domain] : ['', window.location.hostname, DOMAIN]; 584 const paths = [path, '/', '/app', '/blog']; 585 domains.forEach(d => { 586 paths.forEach(p => { 587 document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=${p}${d ? `;domain=${d}` : ''}`; 588 }); 589 }); 590 } 591 592 function shouldBlockCookie(cookieName) { 593 if (ESSENTIAL_PATTERNS.some(pattern => pattern.test(cookieName))) return false; 594 for (let category in COOKIE_PATTERNS) { 595 if (!consentData[category] && COOKIE_PATTERNS[category].patterns.some(pattern => pattern.test(cookieName))) return true; 596 } 597 return false; 598 } 599 600 function removeExistingCookies(categories) { 601 const allCookies = getAllCookies(); 602 categories.forEach(category => { 603 if (COOKIE_PATTERNS[category]) { 604 const { patterns, domains } = COOKIE_PATTERNS[category]; 605 Object.keys(allCookies).forEach(cookieName => { 606 if (patterns.some(pattern => pattern.test(cookieName))) { 607 domains.forEach(domain => deleteCookie(cookieName, domain)); 608 } 609 }); 610 } 611 }); 612 } 613 614 function initCookieBlocking() { 615 if (blockingActive) return; 616 originalCookieDescriptor = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') || Object.getOwnPropertyDescriptor(HTMLDocument.prototype, 'cookie'); 617 if (!originalCookieDescriptor) return; 618 Object.defineProperty(document, 'cookie', { 619 get() { 620 return originalCookieDescriptor.get.call(document); 621 }, 622 set(cookieString) { 623 const cookieName = cookieString.split('=')[0].trim(); 624 if (shouldBlockCookie(cookieName)) return cookieString; 625 return originalCookieDescriptor.set.call(document, cookieString); 626 }, 627 configurable: true 628 }); 629 blockingActive = true; 630 } 631 632 function updateToggles() { 633 document.querySelectorAll('.rs-toggle').forEach(toggle => { 634 const category = toggle.dataset.category; 635 if (category === 'necessary') return; 636 if (consentData[category]) toggle.classList.add('active'); 637 else toggle.classList.remove('active'); 638 }); 639 } 640 641 function saveConsent() { 642 consentData.timestamp = Date.now(); 643 consentData.domain = 'redstone.finance'; 644 const cookieValue = JSON.stringify(consentData); 645 document.cookie = `${COOKIE_NAME}=${encodeURIComponent(cookieValue)};path=/;domain=${DOMAIN};max-age=${365 * 24 * 60 * 60};SameSite=Lax;Secure=${location.protocol === 'https:'}`; 646 } 647 648 function loadConsent() { 649 const cookies = getAllCookies();
650 if (cookies[COOKIE_NAME]) { 651 try { 652 const saved = JSON.parse(decodeURIComponent(cookies[COOKIE_NAME])); 653 consentData = { ...consentData, ...saved }; 654 return true; 655 } catch (e) {} 656 } 657 return false; 658 } 659 660 function applyConsent() { 661 const disabledCategories = Object.entries(consentData) 662 .filter(([key, value]) => key !== 'necessary' && key !== 'timestamp' && key !== 'version' && key !== 'domain' && key !== 'userAgent' && !value) 663 .map(([key]) => key); 664 if (disabledCategories.length > 0) removeExistingCookies(disabledCategories); 665 initCookieBlocking(); 666 saveConsent(); 667 document.dispatchEvent(new CustomEvent('redstoneConsentUpdate', { detail: consentData })); 668 } 669 670 RedStone.openCookieSettings = function() { 671 updateToggles(); 672 const modal = document.getElementById('rsCookieModal'); 673 if (modal) modal.classList.add('show'); 674 }; 675 676 RedStone.closeCookieSettings = function() { 677 const modal = document.getElementById('rsCookieModal'); 678 if (modal) modal.classList.remove('show'); 679 }; 680 681 RedStone.acceptAll = function() { 682 consentData = { ...consentData, analytics: true, targeting: true, functional: true }; 683 applyConsent(); 684 const banner = document.getElementById('rsCookieBanner'); 685 if (banner) banner.classList.remove('show'); 686 }; 687 688 RedStone.rejectOptional = function() { 689 consentData = { ...consentData, analytics: false, targeting: false, functional: false }; 690 applyConsent(); 691 const banner = document.getElementById('rsCookieBanner'); 692 if (banner) banner.classList.remove('show'); 693 }; 694 695 RedStone.rejectAll = function() { 696 consentData = { 697 necessary: true, 698 analytics: false, 699 targeting: false, 700 functional: false, 701 timestamp: Date.now(), 702 version: '1.0', 703 domain: 'redstone.finance', 704 userAgent: navigator.userAgent 705 }; 706 applyConsent(); 707 const banner = document.getElementById('rsCookieBanner'); 708 if (banner) banner.classList.remove('show'); 709 RedStone.closeCookieSettings(); 710 }; 711 712 RedStone.savePreferences = function() { 713 document.querySelectorAll('.rs-toggle:not(.disabled)').forEach(toggle => { 714 const category = toggle.dataset.category; 715 consentData[category] = toggle.classList.contains('active'); 716 }); 717 applyConsent(); 718 RedStone.closeCookieSettings(); 719 const banner = document.getElementById('rsCookieBanner'); 720 if (banner) banner.classList.remove('show'); 721 }; 722 723 document.addEventListener('click', function(e) { 724 const actionEl = e.target.closest('[data-rs-action]'); 725 if (actionEl) { 726 e.preventDefault(); 727 const action = actionEl.getAttribute('data-rs-action'); 728 switch (action) { 729 case 'open-settings': RedStone.openCookieSettings(); break; 730 case 'close-modal': RedStone.closeCookieSettings(); break; 731 case 'accept-all': RedStone.acceptAll(); break; 732 case 'accept-all-close': RedStone.acceptAll(); RedStone.closeCookieSettings(); break; 733 case 'reject-optional': RedStone.rejectOptional(); break; 734 case 'reject-all': RedStone.rejectAll(); break; 735 case 'save-preferences': RedStone.savePreferences(); break; 736 } 737 } 738 if (e.target.classList.contains('rs-toggle') && !e.target.classList.contains('disabled')) { 739 e.target.classList.toggle('active'); 740 } 741 if (e.target.id === 'rsCookieModal') { 742 RedStone.closeCookieSettings(); 743 } 744 }); 745 746 // Check consent on load 747 const hasConsent = loadConsent(); 748 if (hasConsent) { 749 applyConsent(); 750 } else { 751 setTimeout(() => { 752 const banner = document.getElementById('rsCookieBanner'); 753 if (banner) banner.classList.add('show'); 754 }, 2000); 755 } 756})(window.RedStone); 757</script>
757 <!-- Backdrop + modal wrapper --><div id="rs-contact-modal" class="rs-contact-modal" role="dialog" aria-modal="true" aria-label="Contact RedStone" hidden> <div class="rs-contact-modal__backdrop"></div> <div class="rs-contact-modal__sheet"> <!-- Header --> <div class="rs-contact-modal__header"> <div> <h2 class="rs-contact-modal__title">Let's Build the Future of DeFi</h2> <p class="rs-contact-modal__subtitle">Fill out the form and our team will be in touch shortly.</p> </div> <button class="rs-contact-modal__close" id="rs-modal-close" aria-label="Close"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> </svg> </button> </div> <!-- Form body --> <div class="rs-contact-modal__body"> <div data-rs-form-modal="true"> <!-- Injected by script --> </div> </div> </div> </div> <!-- Sticky CTA bar (mobile only) --> <div id="rs-sticky-cta" class="rs-sticky-cta"> <span class="rs-sticky-cta__label">Ready to integrate?</span> <button id="rs-sticky-cta-btn" class="rs-sticky-cta__btn"> 758Talk to Us 759<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </button> </div>
759<script> 760(function () { 761 /* ââ HubSpot form config âââââââââââââââââââââââââââââââââââââââââ */ 762 var PORTAL_ID = '26706494'; 763 var FORM_ID = '19d4bd2b-94d7-484d-9c96-2879a0652196'; 764 var ENDPOINT = 'https://api.hsforms.com/submissions/v3/integration/submit/' + PORTAL_ID + '/' + FORM_ID; 765 766 /* ââ Build form HTML âââââââââââââââââââââââââââââââââââââââââââââ */ 767 function buildForm() { 768 return ( 769 '<div class="rs-form" id="rs-modal-form">' + 770 '<div class="rs-row">' + 771 '<div class="rs-field"><label for="rsm-firstname">First Name <span class="rs-req">*</span></label><input id="rsm-firstname" type="text" placeholder="John" data-rs="firstname"><div class="rs-error" data-rs-err="firstname"></div></div>' + 772 '<div class="rs-field"><label for="rsm-lastname">Last Name</label><input id="rsm-lastname" type="text" placeholder="Doe" data-rs="lastname"></div>' + 773 '</div>' + 774 '<div class="rs-field"><label for="rsm-email">Work Email <span class="rs-req">*</span></label><input id="rsm-email" type="email" placeholder="[email protected]" data-rs="email"><div class="rs-error" data-rs-err="email"></div></div>' + 775 '<div class="rs-row">' + 776 '<div class="rs-field"><label for="rsm-website">Project Website <span class="rs-req">*</span></label><input id="rsm-website" type="url" placeholder="https://yourproject.com" data-rs="website"><div class="rs-error" data-rs-err="website"></div></div>' + 777 '<div class="rs-field"><label for="rsm-telegram">Telegram Handle / ID</label><input id="rsm-telegram" type="text" placeholder="@yourhandle" data-rs="telegram"></div>' + 778 '</div>' + 779 '<div class="rs-field"><label for="rsm-role">Are you a <span class="rs-req">*</span></label><select id="rsm-role" data-rs="are_you_a" class="rs-placeholder"><option value="" disabled selected>Select your role</option><option value="Chain">Chain</option><option value="Crypto Asset Issuer">Crypto Asset Issuer</option><option value="RWA Issuer/Tokenisation Platform">RWA Issuer / Tokenisation Platform</option><option value="Blockchain Application">Blockchain Application</option><option value="Financial Institution / Fintech">Financial Institution / Fintech</option><option value="Infrastructure or Data Provider">Infrastructure or Data Provider</option><option value="Other">Other</option></select><div class="rs-error" data-rs-err="are_you_a"></div></div>' + 780 '<div class="rs-field"><label for="rsm-message">Message</label><textarea id="rsm-message" placeholder="How can we help you succeed?" rows="3" data-rs="message"></textarea></div>' + 781 '<div class="rs-consent"><label><input type="checkbox" data-rs="consent"><span>I agree to receive communications from RedStone. You can unsubscribe at any time.</span></label><div class="rs-error" data-rs-err="consent"></div></div>' + 782 '<div class="rs-actions"><button type="button" class="rs-button big text-button-md rs-btn" id="rsm-submit">Submit</button></div>' + 783 '<div class="rs-submit-error" id="rsm-submit-error"></div>' + 784 '</div>' + 785 '<div class="rs-success" id="rsm-success"><p class="rs-success-title">Message sent</p><p class="rs-success-sub">We\'ll be in touch shortly.</p></div>' 786 ); 787 } 788 789 var formBuilt = false; 790 791 /* ââ Open / close ââââââââââââââââââââââââââââââââââââââââââââââââ */ 792 function openModal() { 793 var modal = document.getElementById('rs-contact-modal'); 794 if (!modal) return; 795 modal.hidden = false; 796 document.body.style.overflow = 'hidden'; 797 798 if (!formBuilt) { 799 var root = modal.querySelector('[data-rs-form-modal]'); 800 if (root) { 801 root.innerHTML = buildForm(); 802 attachFormLogic(root); 803 formBuilt = true; 804 } 805 } 806 } 807 808 function closeModal() { 809 var modal = document.getElementById('rs-contact-modal'); 810 if (!modal) return; 811 modal.hidden = true; 812 document.body.style.overflow = ''; 813 814 if (window.location.hash === '#contact-form') { 815 history.pushState('', document.title, window.location.pathname + window.location.search); 816 } 817 } 818 819 /* Expose globally so any page button can call it */ 820 window.openContactModal = openModal; 821 window.closeContactModal = closeModal; 822 823 document.addEventListener('DOMContentLoaded', function () { 824 /* Close button */ 825 var closeBtn = document.getElementById('rs-modal-close'); 826 if (closeBtn) closeBtn.addEventListener('click', closeModal); 827 828 /* Backdrop click */ 829 var modal = document.getElementById('rs-contact-modal'); 830 if (modal) { 831 var backdrop = modal.querySelector('.rs-contact-modal__backdrop'); 832 if (backdrop) backdrop.addEventListener('click', closeModal); 833 } 834 835 /* ESC key */ 836 document.addEventListener('keydown', function (e) { 837 if (e.key === 'Escape') closeModal(); 838 }); 839 840 /* Sticky CTA button */ 841 var ctaBtn = document.getElementById('rs-sticky-cta-btn');
842 if (ctaBtn) ctaBtn.addEventListener('click', openModal); 843 844 /* Wire up any existing [data-open-contact] triggers on the page */ 845 document.querySelectorAll('[data-open-contact]').forEach(function (el) { 846 el.addEventListener('click', function (e) { 847 e.preventDefault(); 848 openModal(); 849 }); 850 }); 851 852 /* Wire up links with href containing #contact-form */ 853 document.querySelectorAll('a[href*="#contact-form"]').forEach(function (el) { 854 el.addEventListener('click', function (e) { 855 e.preventDefault(); 856 openModal(); 857 history.pushState(null, null, '#contact-form'); 858 }); 859 }); 860 861 /* Open modal if page loads with #contact-form hash */ 862 if (window.location.hash === '#contact-form') { 863 openModal(); 864 } 865 866 /* Listen for hash changes (e.g., browser back/forward) */ 867 window.addEventListener('hashchange', function () { 868 if (window.location.hash === '#contact-form') { 869 openModal(); 870 } else { 871 var modalObj = document.getElementById('rs-contact-modal'); 872 if (modalObj && !modalObj.hidden) { 873 closeModal(); 874 } 875 } 876 }); 877 878 /* Show sticky CTA bar once user scrolls past 300px */ 879 var stickyBar = document.getElementById('rs-sticky-cta'); 880 if (stickyBar) { 881 var shown = false; 882 window.addEventListener('scroll', function () { 883 if (!shown && window.scrollY > 300) { 884 shown = true; 885 stickyBar.classList.add('rs-sticky-cta--visible'); 886 } else if (shown && window.scrollY <= 50) { 887 shown = false; 888 stickyBar.classList.remove('rs-sticky-cta--visible'); 889 } 890 }, { passive: true }); 891 } 892 }); 893 894 /* ââ Form logic (validation + submit) âââââââââââââââââââââââââââ */ 895 function attachFormLogic(root) { 896 var submitBtn = root.querySelector('#rsm-submit'); 897 var submitErr = root.querySelector('#rsm-submit-error'); 898 899 function elQ(sel) { return root.querySelector(sel); } 900 function val(name) { var i = elQ('[data-rs="' + name + '"]'); return i ? i.value.trim() : ''; } 901 902 var selectEl = elQ('[data-rs="are_you_a"]'); 903 if (selectEl) { 904 selectEl.addEventListener('change', function () { 905 this.classList.toggle('rs-placeholder', !this.value); 906 }); 907 } 908 909 var rules = { 910 firstname: function (v) { return v ? '' : 'First name is required.'; }, 911 email: function (v) { 912 if (!v) return 'Email is required.'; 913 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v)) return 'Please enter a valid email.'; 914 return ''; 915 }, 916 website: function (v) { 917 if (!v) return 'Website is required.'; 918 if (!/^(https?:\/\/)?([\w-]+\.)+[\w-]{2,}(\/\S*)?$/.test(v)) return 'Please enter a valid URL.'; 919 return ''; 920 }, 921 are_you_a: function (v) { return v ? '' : 'Please select an option.'; }, 922 consent: function () { return elQ('[data-rs="consent"]').checked ? '' : 'Consent is required.'; } 923 }; 924 925 function showErr(name, msg) { 926 var errEl = elQ('[data-rs-err="' + name + '"]'); 927 var input = elQ('[data-rs="' + name + '"]'); 928 if (errEl) { errEl.textContent = msg; errEl.classList.toggle('rs-visible', !!msg); } 929 if (input) input.classList.toggle('rs-invalid', !!msg); 930 } 931 932 function validateField(name) { 933 var msg = rules[name] ? rules[name](val(name)) : ''; 934 showErr(name, msg); 935 return !msg; 936 } 937 938 function validateAll() { 939 var ok = true; 940 for (var k in rules) { if (!validateField(k)) ok = false; } 941 return ok; 942 } 943 944 ['firstname', 'email', 'website', 'are_you_a'].forEach(function (name) { 945 var input = elQ('[data-rs="' + name + '"]'); 946 if (input) { 947 var evt = input.tagName === 'SELECT' ? 'change' : 'blur'; 948 input.addEventListener(evt, function () { validateField(name); }); 949 } 950 }); 951 952 function getHutk() { 953 var c = document.cookie.split('; '); 954 for (var i = 0; i < c.length; i++) { 955 if (c[i].indexOf('hubspotutk=') === 0) return c[i].split('=')[1]; 956 } 957 return null; 958 } 959 960 if (submitBtn) { 961 submitBtn.addEventListener('click', function () { 962 submitErr.classList.remove('rs-visible'); 963 if (!validateAll()) return; 964 965 submitBtn.disabled = true; 966 submitBtn.innerHTML = '<span class="rs-spinner"></span> Sending...'; 967 968 var fields = [ 969 { objectTypeId: '0-1', name: 'firstname', value: val('firstname') }, 970 { objectTypeId: '0-1', name: 'lastname', value: val('lastname') }, 971 { objectTypeId: '0-1', name: 'email', value: val('email') }, 972 { objectTypeId: '0-2', name: 'website', value: val('website') }, 973 { objectTypeId: '0-1', name: 'telegram', value: val('telegram') }, 974 { objectTypeId: '0-2', name: 'are_you_a', value: val('are_you_a') }, 975 { objectTypeId: '0-1', name: 'message', value: val('message') } 976 ].filter(function (f) { return f.value; }); 977 978 var ctx = { pageUri: window.location.href, pageName: document.title }; 979 var hutk = getHutk(); 980 if (hutk) ctx.hutk = hutk; 981 982 fetch(ENDPOINT, { 983 method: 'POST', 984 headers: { 'Content-Type': 'application/json' }, 985 body: JSON.stringify({ 986 fields: fields, 987 context: ctx, 988 legalConsentOptions: { consent: { consentToProcess: true, text: 'I agree to re
988ceive communications from RedStone.' } } 989 }) 990 }) 991 .then(function (res) { 992 if (!res.ok) return res.json().catch(function () { return null; }).then(function (b) { throw new Error(b && b.message ? b.message : 'Submission failed (' + res.status + ')'); }); 993 root.querySelector('#rs-modal-form').style.display = 'none'; 994 root.querySelector('#rsm-success').classList.add('rs-visible'); 995 }) 996 .catch(function (err) { 997 submitErr.textContent = err.message || 'Something went wrong. Please try again.'; 998 submitErr.classList.add('rs-visible'); 999 submitBtn.disabled = false; 1000 submitBtn.innerHTML = 'Submit'; 1001 }); 1002 }); 1003 } 1004 } 1005})(); 1006</script>
1006 <!-- jQuery + webflow.js with defer â moved after content, don't block critical path -->
1006<script defer src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=67519197ce9eaef4601a6287" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
1006
1006<script defer src="/js/webflow.js" type="text/javascript"></script>
1006 <!-- GTM â loaded async in body, never blocks head parsing -->
1006<script>
vendor: 435 bytes, lines 1006-1016
1006 1007 (function (w, d, s, l, i) { 1008 w[l] = w[l] || []; 1009 w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" }); 1010 var f = d.getElementsByTagName(s)[0], 1011 j = d.createElement(s), 1012 dl = l != "dataLayer" ? "&l=" + l : ""; 1013 j.async = true; 1014 j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl; 1015 f.parentNode.insertBefore(j, f); 1016 })(window, document, "script", "dataLayer", "
1016GTM-MZ39PDDC
vendor: 6 bytes, lines 1016-1017
1016"); 1017
1017</script>
1017 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.