<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://docs.synapseprotocol.com/blog</id>
    <title>Synapse Docs Blog</title>
    <updated>2026-03-20T17:17:45.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://docs.synapseprotocol.com/blog"/>
    <subtitle>Synapse Docs Blog</subtitle>
    <icon>https://docs.synapseprotocol.com/brand-assets/synapse-mark.svg</icon>
    <entry>
        <title type="html"><![CDATA[Welcome]]></title>
        <id>https://docs.synapseprotocol.com/blog/welcome</id>
        <link href="https://docs.synapseprotocol.com/blog/welcome"/>
        <updated>2026-03-20T17:17:45.000Z</updated>
        <summary type="html"><![CDATA[We are happy to announce the Synapse Technical Blog!]]></summary>
        <content type="html"><![CDATA[<p>We are happy to announce the <strong>Synapse Technical Blog</strong>!</p>
<p>On this blog, we will share insights, updates, and deep dives into our latest launches and developments from a developer's perspective. Here, you'll find detailed information about our newest features, APIs, and technical improvements that power Synapse Protocol.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="what-to-expect">What to Expect<a href="https://docs.synapseprotocol.com/blog/welcome#what-to-expect" class="hash-link" aria-label="Direct link to What to Expect" title="Direct link to What to Expect">​</a></h2>
<p>Our blog posts will cover a range of topics, including:</p>
<ul>
<li>New feature launches and updates</li>
<li>Technical deep dives into our architecture</li>
<li>API documentation and usage guides</li>
<li>Performance improvements and optimizations</li>
<li>Developer tools and resources</li>
</ul>
<p>Whether you're an integrator, a third-party developer, or just curious about the technical aspects of Synapse, this blog is for you.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="latest-articles">Latest Articles<a href="https://docs.synapseprotocol.com/blog/welcome#latest-articles" class="hash-link" aria-label="Direct link to Latest Articles" title="Direct link to Latest Articles">​</a></h2>
<p>Here's a list of our most recent tech blog posts:</p>
<ul>
<li><a href="https://docs.synapseprotocol.com/blog/rest-api-now-live">REST API Now Live</a> - October 10, 2024
Learn about our new REST API, its features, and how it simplifies integration for developers.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="stay-connected">Stay Connected<a href="https://docs.synapseprotocol.com/blog/welcome#stay-connected" class="hash-link" aria-label="Direct link to Stay Connected" title="Direct link to Stay Connected">​</a></h2>
<p>To stay up-to-date with our latest tech developments:</p>
<ul>
<li>Follow us on <a href="https://twitter.com/synapseprotocol" target="_blank" rel="noopener noreferrer">Twitter</a></li>
<li>Join our <a href="https://discord.gg/4rMzuEnKqe" target="_blank" rel="noopener noreferrer">Discord</a></li>
<li>Check out our <a href="https://github.com/synapsecns" target="_blank" rel="noopener noreferrer">GitHub</a></li>
</ul>
<p>We're excited to share our journey with you as we continue to innovate and improve the Synapse Protocol. Happy reading!</p>]]></content>
        <category label="synapse" term="synapse"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Synapse NPM Packages Are Moving to GitHub Packages]]></title>
        <id>https://docs.synapseprotocol.com/blog/npm-to-github-packages-migration</id>
        <link href="https://docs.synapseprotocol.com/blog/npm-to-github-packages-migration"/>
        <updated>2026-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[All @synapsecns packages are now published to GitHub Packages instead of the npm registry.]]></summary>
        <content type="html"><![CDATA[<p>All <code>@synapsecns</code> packages are now published to <strong>GitHub Packages</strong> instead of the npm registry.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="what-changed">What Changed<a href="https://docs.synapseprotocol.com/blog/npm-to-github-packages-migration#what-changed" class="hash-link" aria-label="Direct link to What Changed" title="Direct link to What Changed">​</a></h2>
<p>We've migrated our package registry from npm to <a href="https://github.com/orgs/synapsecns/packages" target="_blank" rel="noopener noreferrer">GitHub Packages</a>. This affects the following packages:</p>
<ul>
<li><code>@synapsecns/sdk-router</code></li>
<li><code>@synapsecns/synapse-constants</code></li>
<li><code>@synapsecns/contracts-core</code></li>
<li><code>@synapsecns/solidity-devops</code></li>
<li><code>@synapsecns/coverage-aggregator</code></li>
<li><code>@synapsecns/widget</code></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="how-to-update-your-project">How to Update Your Project<a href="https://docs.synapseprotocol.com/blog/npm-to-github-packages-migration#how-to-update-your-project" class="hash-link" aria-label="Direct link to How to Update Your Project" title="Direct link to How to Update Your Project">​</a></h2>
<p>To install <code>@synapsecns</code> packages from GitHub Packages, add a <code>.npmrc</code> file to the root of your project (next to your <code>package.json</code>):</p>
<div class="codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-text codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token plain">@synapsecns:registry=https://npm.pkg.github.com</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Then install packages as usual:</p>
<div class="language-bash codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-bash codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token plain">npm install @synapsecns/sdk-router</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># or</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">yarn add @synapsecns/sdk-router</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>GitHub Packages requires authentication even for public packages. You can authenticate by adding your GitHub personal access token (with <code>read:packages</code> scope) to your <code>.npmrc</code>:</p>
<div class="codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-text codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token plain">//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Or set the environment variable:</p>
<div class="language-bash codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-bash codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token plain">export NPM_TOKEN=YOUR_GITHUB_TOKEN</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="why-the-move">Why the Move<a href="https://docs.synapseprotocol.com/blog/npm-to-github-packages-migration#why-the-move" class="hash-link" aria-label="Direct link to Why the Move" title="Direct link to Why the Move">​</a></h2>
<p>This migration consolidates our release infrastructure under GitHub, simplifying CI/CD and aligning package publishing with the repository where development happens.</p>
<p>Existing versions already published on the npm registry will remain available. All <strong>new</strong> versions will be published exclusively to GitHub Packages.</p>
<p>If you have any questions, feel free to open an issue on <a href="https://github.com/synapsecns/sanguine/issues" target="_blank" rel="noopener noreferrer">GitHub</a>.</p>]]></content>
        <category label="update" term="update"/>
        <category label="npm" term="npm"/>
        <category label="packages" term="packages"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Synapse Intent Network]]></title>
        <id>https://docs.synapseprotocol.com/blog/synapse-intent-network-launch</id>
        <link href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch"/>
        <updated>2024-12-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We are excited to announce the Synapse Intent Network.]]></summary>
        <content type="html"><![CDATA[<p>We are excited to announce the <strong>Synapse Intent Network</strong>.</p>
<p>The Synapse Intent Network is a cross-chain communication protocol that enables seamless asset transfers and message passing between different blockchain networks. At its core, it provides a robust infrastructure for executing complex cross-chain operations while maintaining security and efficiency.</p>
<figure><svg width="100%" viewBox="-240 0 480 224" xmlns="http://www.w3.org/2000/svg" class="flowAnimation"><set id="rfqFlowTimer" attributeName="x" begin="0s; rfqFlowTimerOut.end + 2s"></set><g fill="currentcolor" fill-opacity=".05"><rect x="-50%" rx="4" y="0" width="100%" height="48"></rect><rect x="-50%" rx="4" y="56" width="100%" height="48"></rect><rect x="-50%" rx="4" y="112" width="100%" height="48"></rect><rect x="-50%" rx="4" y="168" width="100%" height="48"></rect><rect x="-50%" rx="4" y="0%" width="33.3%" height="100%"></rect><rect x="16.7%" rx="4" y="0%" width="33.3%" height="100%"></rect></g><line x1="-50%" y1="100%" x2="-50%" y2="100%" stroke="currentcolor" stroke-width="4" stroke-opacity=".25"><set attributeName="x1" to="-50%" begin="rfqFlowTimer.begin"></set><set attributeName="x2" to="-50%" begin="rfqFlowTimer.begin"></set><animate attributeName="x2" values="-50%; 50%" begin="rfqFlowSend.begin" dur="1.85s" calcMode="linear" keyTimes="0; 1" keySplines=".5 0 1 1" fill="freeze"></animate><animate id="rfqFlowTimerOut" attributeName="x1" values="-50%; 50%" begin="rfqFlowRepay.end + 1s" dur=".75s" calcMode="spline" keyTimes="0; 1" keySplines=".5 0 .2 1" fill="freeze"></animate></line><g fill="currentcolor" text-anchor="middle" dominant-baseline="middle"><text x="-33%" y="24">originChain</text><text x="33%" y="24">destChain</text><text y="24">App / SDK</text><text y="80">User</text><text y="136">Relayer</text><text y="192">Bridge</text></g><circle cx="-33%" cy="80" r="12" fill="hsl(211deg 67% 50%)" stroke="hsl(211deg 67% 50%)"><set attributeName="cy" to="80" begin="rfqFlowTimer.begin"></set><animate id="rfqFlowSign" attributeName="opacity" values="0; 1" dur=".1s" repeatCount="3" begin="rfqFlowTimer.begin + 1s" fill="freeze"></animate><animate id="rfqFlowSend" attributeName="cy" to="192" dur=".5s" begin="rfqFlowSign.end + 2s" calcMode="spline" keyTimes="0; 1" keySplines=".5 0 .2 1" fill="freeze"></animate><animate id="rfqFlowRepay" attributeName="cy" to="136" dur=".5s" begin="rfqFlowReceive.end + 1.1s" calcMode="spline" keyTimes="0; 1" keySplines=".5 0 .2 1" fill="freeze"></animate></circle><circle cx="-33%" cy="136" r="12" stroke="hsl(211deg 67% 50%)" fill="none" opacity="0" stroke-dasharray="2.5"><set attributeName="opacity" to="0" begin="rfqFlowTimer.begin"></set><animate attributeName="opacity" values="0; .3; 0; .5; 0; .7; 0; 1" dur=".4s" begin="rfqFlowSign.begin" fill="freeze"></animate><animate attributeName="stroke-dashoffset" by="5" dur="1s" repeatCount="indefinite"></animate></circle><circle r="11" cx="33%" cy="80" stroke="hsl(164deg 37% 50%)" fill="none" opacity="0" stroke-dasharray="2.5"><set attributeName="opacity" to="0" begin="rfqFlowTimer.begin"></set><animate attributeName="opacity" values="0; .3; 0; .5; 0; .7; 0; 1" dur=".4s" begin="rfqFlowSign.begin" fill="freeze"></animate><animate attributeName="stroke-dashoffset" by="5" dur="1s" repeatCount="indefinite"></animate></circle><circle r="12" cx="33%" cy="136" fill="hsl(164deg 37% 50%)" stroke="hsl(164deg 37% 50%)"><set attributeName="cy" to="136" begin="rfqFlowTimer.begin"></set><animate attributeName="opacity" values="0; 1" dur=".1s" repeatCount="3" begin="rfqFlowSign.begin" fill="freeze"></animate><animate id="rfqFlowReceive" attributeName="cy" to="80" dur=".5s" begin="rfqFlowSend.begin + 2s" calcMode="spline" keyTimes="0; 1" keySplines=".5 0 .2 1" fill="freeze"></animate></circle></svg><figcaption>RFQ flow: get Quote, get txData, sign transaction</figcaption></figure>
<br>
<p>This major protocol upgrade represents a fundamental shift in the architecture, introducing intent-based routing, advanced bridging capabilities, and significant gas optimizations. The changes reflect a deeper focus on user experience while substantially improving the protocol's security, efficiency, and scalability.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="key-improvements-at-a-glance">Key Improvements At-A-Glance<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#key-improvements-at-a-glance" class="hash-link" aria-label="Direct link to Key Improvements At-A-Glance" title="Direct link to Key Improvements At-A-Glance">​</a></h2>
<ul>
<li>
<p><strong>Gas Optimization Revolution</strong></p>
<ul>
<li>Achieved 30-50% reduction in transaction costs through storage and execution improvements</li>
<li>Built-In Multicall allows efficient batching to save 21,000+ gas per operation</li>
</ul>
</li>
<li>
<p><strong>Powerful Intent-Based Routing</strong></p>
<ul>
<li>New "Zap" architecture enables complex actions to be atomically executed after the intent is fulfilled</li>
<li>Reduces cross-contract calls</li>
<li>Allows for sophisticated bridging scenarios</li>
</ul>
</li>
<li>
<p><strong>Exclusive Relayer Functionality</strong></p>
<ul>
<li>Intents can be assigned for exclusive fulfillment only by the Relayer who provided the best quote.</li>
<li>This eliminates wasteful on-chain competition while still incentivizing low fees and fast fills.</li>
</ul>
</li>
<li>
<p><strong>Operational Flexibility</strong></p>
<ul>
<li>Relayers can now Relay, Prove, and Claim all from different addresses.</li>
<li>This offers throughput &amp; efficiency improvements for advanced Relayers</li>
<li>Multiple Quoting options for relayers to choose from to maximize competitiveness</li>
</ul>
</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="synapse-intent-network-technical-improvements">Synapse Intent Network: Technical Improvements<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#synapse-intent-network-technical-improvements" class="hash-link" aria-label="Direct link to Synapse Intent Network: Technical Improvements" title="Direct link to Synapse Intent Network: Technical Improvements">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_fF9Z" id="quoting-and-api-improvements">Quoting and API Improvements<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#quoting-and-api-improvements" class="hash-link" aria-label="Direct link to Quoting and API Improvements" title="Direct link to Quoting and API Improvements">​</a></h3>
<p>The transition to the Synapse Intent Network brings significant changes to our quoting infrastructure, focusing on real-time price discovery and efficient market making. The most notable addition is active quoting alongside our existing passive quoting system.</p>
<h4 class="anchor anchorWithStickyNavbar_fF9Z" id="active-quoting">Active Quoting<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#active-quoting" class="hash-link" aria-label="Direct link to Active Quoting" title="Direct link to Active Quoting">​</a></h4>
<p>Traditional passive quoting works like an order book - relayers post standing offers that users can take. While this model is simple and efficient for stable market conditions, it can lag during volatile periods. Active quoting addresses this limitation by enabling relayers to respond to quote requests in real-time:</p>
<div class="language-typescript codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-typescript codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example WebSocket quote request format</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">QuoteRequest</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  data</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    origin_chain_id</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    dest_chain_id</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    origin_token_addr</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    dest_token_addr</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    origin_amount_exact</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    expiration_window</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>This hybrid approach gives relayers flexibility in their market-making strategies. Simple integrations can stick with passive quoting, while sophisticated relayers can implement dynamic pricing models that account for immediate market conditions, liquidity depth, and cross-chain gas costs.</p>
<h3 class="anchor anchorWithStickyNavbar_fF9Z" id="websocket-api-evolution">WebSocket API Evolution<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#websocket-api-evolution" class="hash-link" aria-label="Direct link to WebSocket API Evolution" title="Direct link to WebSocket API Evolution">​</a></h3>
<p>Supporting this new quoting model required rethinking our API infrastructure. The new WebSocket layer eliminates the need for polling and complex state management:</p>
<div class="language-typescript codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-typescript codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> operations </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  subscribe</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Subscribe to specific chains"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  send_quote</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Respond to quote request"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  request_quote</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"New quote request notification"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The real-time nature of WebSockets dramatically reduces quote latency. Rather than repeatedly querying for updates, relayers receive instant notifications about new opportunities. This improved efficiency translates directly to better pricing for end users as relayers can operate with tighter spreads.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="contract-improvements">Contract Improvements<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#contract-improvements" class="hash-link" aria-label="Direct link to Contract Improvements" title="Direct link to Contract Improvements">​</a></h2>
<div class="theme-admonition theme-admonition-info admonition_IZjC alert alert--info"><div class="admonitionHeading_uVvU"><span class="admonitionIcon_HiR3"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_bl22"><p>The Synapse Intent Network is backwards compatible with the original Fastbridge Contracts.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_fF9Z" id="gas-optimizations">Gas Optimizations<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#gas-optimizations" class="hash-link" aria-label="Direct link to Gas Optimizations" title="Direct link to Gas Optimizations">​</a></h3>
<p>A core focus of V2 was reducing transaction costs without sacrificing code clarity. Through careful struct packing and custom error implementations, we've achieved significant gas savings:</p>
<div class="language-solidity codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-solidity codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token plain">struct BridgeTxDetails {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    BridgeStatus status;           // 1 byte</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    uint32 destChainId;           // 4 bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    uint16 proverID;              // 2 bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    uint40 proofBlockTimestamp;   // 5 bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    address proofRelayer;         // 20 bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">} // Total: 32 bytes (1 slot)</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>These optimizations balance efficiency with maintainability. While more aggressive packing was possible, it would have made the code significantly harder to reason about. The current implementation provides meaningful gas savings while keeping the codebase approachable for new developers.</p>
<h3 class="anchor anchorWithStickyNavbar_fF9Z" id="atomic-operations-with-multicall-and-zaps">Atomic Operations with Multicall and Zaps<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#atomic-operations-with-multicall-and-zaps" class="hash-link" aria-label="Direct link to Atomic Operations with Multicall and Zaps" title="Direct link to Atomic Operations with Multicall and Zaps">​</a></h3>
<p>Cross-chain operations often require multiple transactions. V2 introduces multicall support and a new Zap interface to address this friction:</p>
<div class="language-solidity codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-solidity codeBlock_TAPP thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_AdAo"><span class="token-line" style="color:#393A34"><span class="token plain">// Multicall enables efficient batching</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fastBridge.multicallNoResults([</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    abi.encodeCall(IFastBridge.prove, (request1)),</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    abi.encodeCall(IFastBridge.claim, (request1))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">], false);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Zaps enable complex atomic operations</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">interface IZapRecipient {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    function zap(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        address token,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        uint256 amount,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        bytes memory zapData</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ) external payable returns (bytes4);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_TNwR"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_MVhB" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_yxgH"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_QJLJ"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>The Zap interface is intentionally minimal, maximizing composability while maintaining security. It enables powerful workflows like "bridge and stake" or "bridge and provide liquidity" in a single atomic transaction. These compound operations significantly improve the user experience by reducing transaction overhead and eliminating partial execution risks.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="final-thoughts">Final Thoughts<a href="https://docs.synapseprotocol.com/blog/synapse-intent-network-launch#final-thoughts" class="hash-link" aria-label="Direct link to Final Thoughts" title="Direct link to Final Thoughts">​</a></h2>
<p>The Synapse Intent Network (FastBridgeV2) update represents a thoughtful evolution of our protocol. Each change was evaluated not just for its immediate benefits, but for its long-term impact on protocol composability and user experience. The result is a more efficient, developer-friendly, and user-centric cross-chain bridging system. Please reach out to us if you have any questions or feedback.</p>]]></content>
        <category label="update" term="update"/>
        <category label="fastbridgev2" term="fastbridgev2"/>
        <category label="intent-network" term="intent-network"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Announcing the Synapse REST API]]></title>
        <id>https://docs.synapseprotocol.com/blog/rest-api-now-live</id>
        <link href="https://docs.synapseprotocol.com/blog/rest-api-now-live"/>
        <updated>2024-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We are excited to announce the launch of the Synapse REST API.]]></summary>
        <content type="html"><![CDATA[<p>We are excited to announce the launch of the <strong>Synapse REST API</strong>.</p>
<p>Last week, we launched the Synapse REST API: <a href="https://api.synapseprotocol.com/" target="_blank" rel="noopener noreferrer">api.synapseprotocol.com</a>. The new update is key in making Synapse easier to integrate for applications.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="summary">Summary<a href="https://docs.synapseprotocol.com/blog/rest-api-now-live#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary">​</a></h2>
<p>The REST API is a restful interface for applications to query, construct, and initiate cross-chain transactions. The service comes with supporting modules for querying liquidity, transaction status, and more. The aim of the API is to enable applications to integrate cross-chain functionality through an API call.</p>
<figure><svg width="100%" viewBox="-240 0 480 120" fill="none" xmlns="http://www.w3.org/2000/svg" class="flowAnimation"><defs><path id="synFigDiamond" d="M4 0 8 4 4 8 0 4z"></path><path id="synFigArrow" d="M8 4 0 0 0 8z"></path><marker id="synFigDiamondPurple" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" fill="var(--syn-fig-purple)"><use href="#synFigDiamond"></use></marker><marker id="synFigDiamondMagenta" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" fill="var(--syn-fig-magenta)"><use href="#synFigDiamond"></use></marker><marker id="synFigArrowMagenta" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto" fill="var(--syn-fig-magenta)"><use href="#synFigArrow"></use></marker><marker id="synFigArrowPurple" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto" fill="var(--syn-fig-purple)"><use href="#synFigArrow"></use></marker><marker id="synFigArrowGreen" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse" fill="var(--syn-fig-green)"><use href="#synFigArrow"></use></marker><marker id="synFigArrowBlue" viewBox="0 0 8 8" refX="4" refY="4" markerWidth="7" markerHeight="7" orient="auto-start-reverse" fill="var(--syn-fig-blue)"><use href="#synFigArrow"></use></marker></defs><g fill="currentcolor" fill-opacity=".05"><rect x="-50%" rx="4" y="0" width="100%" height="56"></rect><rect x="-50%" rx="4" y="64" width="100%" height="56"></rect><rect x="112" rx="4" width="128" height="100%"></rect><rect x="-128" rx="4" y="12" width="72" height="32"></rect><rect x="-32" rx="4" y="12" width="128" height="32"></rect><rect x="132" rx="4" y="12" width="88" height="32"></rect></g><path stroke="var(--syn-fig-green)" fill="none" d="M-180 84 H-92 V44" marker-start="url(#synFigArrowGreen)" marker-end="url(#synFigArrowGreen)"></path><path stroke="var(--syn-fig-blue)" fill="none" d="M-180 92 H32 V44" marker-start="url(#synFigArrowBlue)" marker-end="url(#synFigArrowBlue)"></path><path stroke="var(--syn-fig-purple)" fill="none" d="M-180 100 H104 V28 H132" marker-start="url(#synFigDiamondPurple)" marker-end="url(#synFigArrowPurple)"></path><path stroke="var(--syn-fig-magenta)" fill="none" d="M176 44 V77" marker-start="url(#synFigDiamondMagenta)" marker-end="url(#synFigArrowMagenta)"></path><g fill="currentcolor" dominant-baseline="middle" style="font-size:.9em"><text x="-216" y="29">REST API</text><g text-anchor="middle" fill="var(--syn-method)"><text x="-92" y="29">/bridge</text><text x="32" y="29">/bridgeTxInfo</text><text x="176" y="29">Contract</text></g><text x="-216" y="93">App</text><text x="176" y="93" text-anchor="middle">Chain</text></g><g stroke-width=".5" fill="var(--ifm-background-surface-color)"><rect x="-120" y="51" width="56" height="17" rx="2" stroke="var(--syn-fig-green)"></rect><rect x="8" y="51" width="48" height="17" rx="2" stroke="var(--syn-fig-blue)"></rect><rect x="82" y="51" width="44" height="17" rx="2" stroke="var(--syn-fig-purple)"></rect><rect x="148" y="51" width="56" height="17" rx="2" stroke="var(--syn-fig-magenta)"></rect></g><g class="temp" text-anchor="middle" dominant-baseline="middle" style="font-size:.75em"><text x="-92" y="60" fill="var(--syn-fig-green)">Quote</text><text x="32" y="60" fill="var(--syn-fig-blue)">Data</text><text x="104" y="60" fill="var(--syn-fig-purple)">Sign</text><text x="176" y="60" fill="var(--syn-fig-magenta)">Submit</text></g></svg><figcaption>API flow: get Quote, get txData, sign transaction</figcaption></figure>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="why-it-matters">Why it Matters<a href="https://docs.synapseprotocol.com/blog/rest-api-now-live#why-it-matters" class="hash-link" aria-label="Direct link to Why it Matters" title="Direct link to Why it Matters">​</a></h2>
<p>The REST API makes it significantly easier for aggregators to integrate with the Synapse Bridge, complete with supplementary modules for returning key information like transaction status to users , as well as standardizing and sanitizing inputs and outputs. Rather than interact with complex contracts, aggregators can interact with a simple /bridge endpoint.</p>
<p>The REST API is also built with third-party developers in mind. Many people run external services around the Synapse Bridge: from arbitrage bots, to on-chain AI agents. The REST API makes it much simpler to interact with the Synapse Bridge from any environment, with just an http request. Third party developers also don't have to sacrifice complexity.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="challenges">Challenges<a href="https://docs.synapseprotocol.com/blog/rest-api-now-live#challenges" class="hash-link" aria-label="Direct link to Challenges" title="Direct link to Challenges">​</a></h2>
<p>When building the REST API we ran into a couple challenges that have created a more robust developer experience.</p>
<p><em>Standardizing Constants:</em> We needed a set of constants to verify all inputs against, so that users did not attempt to bridge or swap with unsupported assets/chains. This launch gave us the chance to standardize the Synapse Constants library, and extend this library throughout other services.</p>
<p><em>Liquidity Warnings:</em> When bridging programmatically, it's harder to identify abnormalities, thus we added different endpoints to help applications retrieve liquidity parameters before bridging. Responses also include detailed information about what the expected amount will be.</p>
<h2 class="anchor anchorWithStickyNavbar_fF9Z" id="launch-details">Launch Details<a href="https://docs.synapseprotocol.com/blog/rest-api-now-live#launch-details" class="hash-link" aria-label="Direct link to Launch Details" title="Direct link to Launch Details">​</a></h2>
<p>Structurally, the REST API is a wrapper around the Synapse SDK – the primary abstraction of the Synapse Contracts. The modules allow users to swap, bridge, and a host of other supporting functions. This level of abstraction is key for applications that want to interact with the Synapse Contracts from any framework, in a standardized manner.</p>
<p>This update incorporated the addition of new methods to support aggregator integrations such as:</p>
<p><code>/bridgeTxStatus</code>
Enables developers to retrieve the status of any bridge transaction. Helpful for debugging as well as providing transaction level information to the user.</p>
<p><code>/destinationTokens</code>
Returns a list of tokens that can be bridged to (given an input token), giving developers clarity on where they can bridge to.</p>
<p><code>/bridgeLimits</code>
Returns a max/min amount of tokens to be bridged, giving an accurate representation of liquidity for any possible bridge route.</p>
<p>Other main changes include:</p>
<ul>
<li>Standardized RESTful responses, eliminated mixed response types (Markup and JSON) to now consistently return JSON for all endpoints.</li>
<li>Enhanced error handling using input validations with express-validator, middleware for error handling. Includes checks for unsupported chains, bridge modules, tokens and a friendly error message indicating specific error messages.</li>
<li>Architectural improvements including a traditional MVC approach, separating routes and controllers, improved code readability and organization, so we can easily compose new routes</li>
<li>Development workflow updates, like yarn dev which has hot reloading so we don't need to manually stop and restart the server during development</li>
</ul>
<p>Swagger documentation was also included in the latest release to assist developer onboarding.</p>]]></content>
        <category label="api" term="api"/>
        <category label="update" term="update"/>
    </entry>
</feed>