{"componentChunkName":"component---src-pages-sips-sip-markdown-remark-frontmatter-sip-tsx","path":"/sips/sip-258/","result":{"data":{"markdownRemark":{"fileAbsolutePath":"/vercel/path0/content/sips/sip-258.md","frontmatter":{"sip":258,"sccp":null,"title":"Trade Directionality In Pricing of Atomic Swaps","network":"Ethereum","author":"Kaleb (@kaleb-keny)","type":"Governance","proposal":"https://snapshot.org/#/snxgov.eth/proposal/bafkreicr7ccec5y44qdtnbjfxdrd3j5mzadhgjsihma4heacnwc2is2vx4","implementor":"MEB (@barrasso)","release":null,"created":"2022-07-05T00:00:00.000Z","updated":null,"status":"Implemented"},"html":"<!--You can leave these HTML comments in your merged SIP and delete the visible duplicate text guides, they will not appear and may be helpful to refer to if you edit it again. This is the suggested template for new SIPs. Note that an SIP number will be assigned by an editor. When opening a pull request to submit your SIP, please use an abbreviated title in the filename, `sip-draft_title_abbrev.md`. The title should be 44 characters or less.-->\n<h2 id=\"simple-summary\" style=\"position:relative;\"><a href=\"#simple-summary\" aria-label=\"simple summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Simple Summary</h2>\n<!--\"If you can't explain it simply, you don't understand it well enough.\" Simply describe the outcome the proposed changes intends to achieve. This should be non-technical and accessible to a casual community member.-->\n<p>The sip improves the pricing of atomic swaps, originally laid out in <a href=\"https://sips.synthetix.io/sips/sip-120/\">SIP-120</a> and recently updated in <a href=\"https://sips.synthetix.io/sips/sip-198/\">SIP-198</a>, by incorporating directionality of the trade into the uniswap pricing methodology</p>\n<h2 id=\"abstract\" style=\"position:relative;\"><a href=\"#abstract\" aria-label=\"abstract permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Abstract</h2>\n<!--A short (~200 word) description of the proposed change, the abstract should clearly describe the proposed change. This is what *will* be done if the SIP is implemented, not *why* it should be done or *how* it will be done. If the SIP proposes deploying a new contract, write, \"we propose to deploy a new contract that will do x\".-->\n<p>Update the <a href=\"https://github.com/Synthetixio/SIPs/blob/master/content/sips/sip-198.md#atomic-price-computation-methodology\">atomic price methodology</a> as to incorporate directionality of the trade into the uniswap price aggregation method.</p>\n<h2 id=\"motivation\" style=\"position:relative;\"><a href=\"#motivation\" aria-label=\"motivation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Motivation</h2>\n<!--This is the problem statement. This is the *why* of the SIP. It should clearly explain *why* the current state of the protocol is inadequate.  It is critical that you explain *why* the change is needed, if the SIP proposes changing how something is calculated, you must address *why* the current calculation is innaccurate or wrong. This is not the place to describe how the SIP will address the issue!-->\n<p>Currently, the function used to compute an atomic price for <code>sETH</code> and <code>sBTC</code> is the worse between <code>chainlink</code> price and the <code>min(uniswap_twap,uniswap_spot)</code>. The intention of the atomic swaps is to offer the worse fill between all 3 price combinations. This would allow the protocol to lower fees to the point where we retain a competitive advantage over other amm exchanges. Updating the <code>ExchangeRatesWithDexPricing</code> incorporates directionality of the trade into the execution and allows Synthetix to offer competitive pricing for longer periods.</p>\n<h2 id=\"specification\" style=\"position:relative;\"><a href=\"#specification\" aria-label=\"specification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Specification</h2>\n<!--The specification should describe the syntax and semantics of any new feature, there are five sections\n1. Overview\n2. Rationale\n3. Technical Specification\n4. Test Cases\n5. Configurable Values\n-->\n<h3 id=\"technical-specification\" style=\"position:relative;\"><a href=\"#technical-specification\" aria-label=\"technical specification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technical Specification</h3>\n<!--The technical specification should outline the public API of the changes proposed. That is, changes to any of the interfaces Synthetix currently exposes or the creations of new ones.-->\n<h4 id=\"update-to-the-atomic-price-methodology\" style=\"position:relative;\"><a href=\"#update-to-the-atomic-price-methodology\" aria-label=\"update to the atomic price methodology permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Update to the atomic price methodology</h4>\n<h5 id=\"context-on-pricing-and-naming-conventions\" style=\"position:relative;\"><a href=\"#context-on-pricing-and-naming-conventions\" aria-label=\"context on pricing and naming conventions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Context on Pricing and Naming Conventions</h5>\n<!--The technical specification should outline the public API of the changes proposed. That is, changes to any of the interfaces Synthetix currently exposes or the creations of new ones.-->\n<p>The price of an exchange when a trade materializes from a source (<code>SRC</code>) currency to a destination (<code>DEST</code>) currency can be broken down into two price components:</p>\n<ul>\n<li>The price of the source currency in dollar terms is denoted <code>SRC/USD</code>, for example <code>BTC/USD</code> is at 38k$ per bitcoin.</li>\n<li>the price of the destination in dollar terms, denoted <code>DEST/USD</code></li>\n<li>A trader, trades an amount of <code>SRC</code> currency, called <code>SRC_Amount</code> and he receives <code>DEST_Amount</code>.</li>\n<li><code>SRC/DEST</code> is the <strong>trade price</strong>, being the amount of destination currency received per source currency. It is obtained by dividing <code>SRC/USD</code> by <code>DEST/USD</code>. For example trading 1 bitcoin into eur, with destination <code>EUR/USD</code> 1.05$ and source <code>BTC/USD</code> at 38k$. Applying the previous formula will lead to <code>38k/1.05</code> , resulting in 36,190 EUR received, assuming 0 fees.</li>\n<li>The computation of <code>DEST_Amount</code> is given by <code>SRC_Amount * SRC/DEST * (1- fee)</code>.</li>\n<li>In the case where <code>SRC</code> or <code>DEST</code> is the US Dollar, the same logic still applies, where one of the components is <code>USD/USD</code> or 1. An example of this is a trade of 1 USD into BTC, in such a situation the trade price <code>SRC/DEST</code> is obtained by dividing <code>USD/USD</code> 1 by <code>BTC/USD</code> (38k$) which leads to <code>0.0000263</code> btc received.</li>\n</ul>\n<h5 id=\"computation-methodology-in-atomic-pricing-updated\" style=\"position:relative;\"><a href=\"#computation-methodology-in-atomic-pricing-updated\" aria-label=\"computation methodology in atomic pricing updated permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Computation Methodology in Atomic Pricing Updated</h5>\n<p>Atomic exchanges leads to combinations that involve the usage of chainlink in certain situations and the usage of uniswap in others or a combination of the two sources of prices. Although, the computation was laid out in <a href=\"https://sips.synthetix.io/sips/sip-198/\">SIP-198</a>, it did not specify how would uniswap prices be derived, which resulted in the usage of the min between Uniswap-Spot and UniswapTwap, resulting in few edge case fills that are distant from market prices. The updated computation below clearly specifies how Twap and Spot should be used in order to arrive at the fill price.</p>\n<ol>\n<li>PureChainlink Vs Not Pure Chainlink:</li>\n</ol>\n<ul>\n<li>When a pure chainlink price is assigned to a currency, the chainlink price is used.</li>\n<li>Otherwise the <strong>worse</strong> price between chainlink and uniswap-spot and uniswap-twap is used in the combination. Worse price, means the price that would result in the lowest <code>DEST_Amount</code>.</li>\n</ul>\n<ol start=\"2\">\n<li>Naming Convention:</li>\n</ol>\n<ul>\n<li><code>UniSpot(SRC/USD)</code> and <code>UniSpot(DEST/USD)</code> refers to the price obtained from uniswap V3 spot.</li>\n<li><code>UniTwap(SRC/USD)</code> and <code>UniTwap(DEST/USD)</code> refers to the price obtained from uniswap V3 twap.</li>\n<li><code>Chainlink(SRC/USD)</code> and <code>Chainlink(DEST/USD)</code> refers to the price obtained from chainlink price feed</li>\n</ul>\n<ol start=\"3\">\n<li>Below are the different scenarios that could arise for trading currencies that have or don't have the Pure Chainlink tag:</li>\n</ol>\n<ul>\n<li><code>SRC</code> and <code>DEST</code> are both set to trade at the PureChainlinkPrice, in such a case, both <code>Chainlink(SRC/USD)</code> and <code>Chainlink(DEST/USD)</code> are used to compute <code>SRC/DEST</code> by dividing <code>Chainlink(SRC/USD)</code> by <code>Chainlink(DEST/USD)</code>.</li>\n<li><code>SRC</code> is <strong>NOT</strong> set to PureChainlinkPrice and <code>DEST</code> is set to PureChainlinkPrice. Therefore, <code>SRC/DEST</code> is obtained by dividing min(<code>UniSpot(SRC/USD)</code>,<code>UniTwap(SRC/USD)</code>,<code>Chainlink(SRC/USD)</code>) by <code>Chainlink(DEST/USD)</code>.</li>\n<li><code>SRC</code> is set to PureChainlinkPrice and <code>DEST</code> is <strong>NOT</strong> set to PureChainlinkPrice. Therefore, <code>SRC/DEST</code> is obtained by dividing <code>Chainlink(SRC/USD)</code> by max(<code>Chainlink(DEST/USD)</code>,<code>UniSpot(DEST/USD)</code>,<code>UniTwap(DEST/USD)</code>).</li>\n<li>Both <code>SRC</code> and <code>DEST</code> are <strong>NOT</strong> set to PureChainlinkPrice, in such a case, <code>SRC/DEST</code> is obtained by dividing min(<code>UniSpot(SRC/USD)</code>,<code>UniTwap(SRC/USD)</code>,<code>Chainlink(SRC/USD)</code>) by max(<code>Chainlink(DEST/USD)</code>,<code>UniSpot(DEST/USD)</code>,<code>UniTwap(DEST/USD)</code>).</li>\n</ul>\n<h3 id=\"test-cases\" style=\"position:relative;\"><a href=\"#test-cases\" aria-label=\"test cases permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Test Cases</h3>\n<!--Test cases for an implementation are mandatory for SIPs but can be included with the implementation..-->\n<ul>\n<li>Given that sEUR is set to pure chainlink pricing and sETH and sBTC are not set to pure chainlink pricing\n<ul>\n<li>Given that a trader trades 10 sBTC to sEUR\n<ul>\n<li>Given that <code>Chainlink(EUR/USD)</code> is at 1.1$ and <code>Chainlink(BTC/USD)</code> is at 19k$, <code>UniSpot(BTC/USD)</code> is at 20k$ and <code>UniTwap(BTC/USD)</code> is at 21k$\n<ul>\n<li>When the user attempts to trade, setting the minReturnAmount to 17,195 sEUR\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li>17,195 sEUR is sent to the user, computed by min(19k,20k,21k) * 10  / 1.1 * (1-45/1e4)</li>\n<li>855 sUSD is sent to the fee pool, computed by 10 * min(19k,20k,21k) * (45/1e4)</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>When the user attempts to trade, setting the minReturnAmount to 17,196 sEUR\n<ul>\n<li>❌ Then it reverts, due to the retun amount being too low</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that <code>Chainlink(EUR/USD)</code> is at 1.1$ and <code>Chainlink(BTC/USD)</code> is at 17k$, <code>UniSpot(BTC/USD)</code> is at 16k$ and <code>UniTwap(BTC/USD)</code> is at 18k$\n<ul>\n<li>When the user attempts to trade, setting the minReturnAmount to 14k sEUR\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li>14,480 sEUR is sent to the user, computed by min(16k,17k,18k) * 10  / 1.1 * (1-45/1e4)</li>\n<li>720 sUSD is sent to the fee pool, computed by 10 * min(16k,17k,18k) * (45/1e4)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that <code>Chainlink(EUR/USD)</code> is at 1.1$ and <code>Chainlink(BTC/USD)</code> is at 15k$, <code>UniSpot(BTC/USD)</code> is at 14k$ and <code>UniTwap(BTC/USD)</code> is at 13k$\n<ul>\n<li>When the user attempts to trade, setting the minReturnAmount to 11k sEUR\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li>11,765 sEUR is sent to the user, computed by min(13k,14k,15k) * 10  / 1.1 * (1-45/1e4)</li>\n<li>585 sUSD is sent to the fee pool, computed by 10 * min(13k,14k,15k) * (45/1e4)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that a trader trades 10,000 sEUR to sBTC\n<ul>\n<li>Given that <code>Chainlink(EUR/USD)</code> is at 1.1$ and <code>Chainlink(BTC/USD)</code> is at 19k$, <code>UniSpot(BTC/USD)</code> is at 20k$ and <code>UniTwap(BTC/USD)</code> is at 21k$\n<ul>\n<li>When the user attempts to trade, setting the minReturnAmount to 5.214 sBTC\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li>5.2145 sBTC is sent to the user, computed by 1.1 / max(19k,20k,21k) * 10e4 * (1-45/1e4)</li>\n<li>495 sUSD is sent to the fee pool, computed by 10e4 * 1.1 *  (45/1e4)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that <code>Chainlink(EUR/USD)</code> is at 1.1$ and <code>Chainlink(BTC/USD)</code> is at 19$, <code>UniSpot(BTC/USD)</code> is at 18k$ and <code>UniTwap(BTC/USD)</code> is at 17k$\n<ul>\n<li>When the user attempts to trade, setting the minReturnAmount to 5.7 sBTC\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li>5.7634 sBTC is sent to the user, computed by 1.1 / max(17k,18k,19k) * 10e4 * (1-45/1e4)</li>\n<li>495 sUSD is sent to the fee pool, computed by 10e4 * 1.1 *  (45/1e4)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that <code>Chainlink(EUR/USD)</code> is at 1.1$ and <code>Chainlink(BTC/USD)</code> is at 15k$, <code>UniSpot(BTC/USD)</code> is at 17k$ and <code>UniTwap(BTC/USD)</code> is at 16$\n<ul>\n<li>When the user attempts to trade, setting the minReturnAmount to 6.44 sBTC\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li>6.4415 sBTC is sent to the user, computed by 1.1 / max(15k,16k,17k) * 10e4 * (1-45/1e4)</li>\n<li>495 sUSD is sent to the fee pool, computed by 10e4 * 1.1 *  (45/1e4)</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"configurable-values-via-sccp\" style=\"position:relative;\"><a href=\"#configurable-values-via-sccp\" aria-label=\"configurable values via sccp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configurable Values (Via SCCP)</h3>\n<!--Please list all values configurable via SCCP under this implementation.-->\n<p>The same configurable values as those set out in <a href=\"https://sips.synthetix.io/sips/sip-120/\">SIP-120</a> and <a href=\"https://sips.synthetix.io/sips/sip-198/\">SIP-198</a>.</p>\n<h2 id=\"copyright\" style=\"position:relative;\"><a href=\"#copyright\" aria-label=\"copyright permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Copyright</h2>\n<p>Copyright and related rights waived via <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a>.</p>"}},"pageContext":{"id":"f87dfe2b-fdfa-5f00-a857-3ae9113ddb92","frontmatter__sip":258,"__params":{"frontmatter__sip":"258"}}},"staticQueryHashes":[]}