{"componentChunkName":"component---src-pages-sips-sip-markdown-remark-frontmatter-sip-tsx","path":"/sips/sip-153/","result":{"data":{"markdownRemark":{"fileAbsolutePath":"/vercel/path0/content/sips/sip-153.md","frontmatter":{"sip":153,"sccp":null,"title":"LINK Wrappr","network":"Ethereum","author":"Kain Warwick (@kaiynne), Spreek (@spreekaway), Afif Bandak (@aband1)","type":"Governance","proposal":null,"implementor":null,"release":null,"created":"2021-07-01T00:00:00.000Z","updated":null,"status":"Rejected"},"html":"<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>NOTE: This SIP has been moved to rejected as there is a planned SIP to create a generic implementation of a wrapperfactory to support any wrapped assets.</p>\n<p>Allow users to wrap LINK to mint sLINK</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<p>This SIP proposes to deploy a new wrappr as per SIP-112 (ETHwrappr) that will accept deposits of LINK and mint sLINK.</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>The Curve LINK/sLINK pool has deep liquidity but sLINK remains unbalanced in the pool causing sLINK to trade above par against LINK. sLink has been a top three Synth by open interest for most of this year so there is a significant positive skew that can be offset through the introduction of a LINKwrappr.</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=\"overview\" style=\"position:relative;\"><a href=\"#overview\" aria-label=\"overview 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>Overview</h3>\n<!--This is a high level overview of *how* the SIP will solve the problem. The overview should clearly describe how the new feature will be implemented.-->\n<p>sLINK is minted whenever a user deposits LINK into the contract. The user can deposit any amount, however, this is subject to not exceeding the <code>maxLINK</code> configurable via SCCP.\nThere is no duration, interest rate or collateralization ratio, as any user can at any time buy back LINK available in the contract by burning sLINK.\nMinters benefit as minting sLINK and burning sLINK are subject to a <code>mintingFeeRate</code> and <code>burningFeeRate</code>, both of which are paid to the fee pool after conversion into <code>sUSD</code>.</p>\n<h3 id=\"rationale\" style=\"position:relative;\"><a href=\"#rationale\" aria-label=\"rationale 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>Rationale</h3>\n<!--This is where you explain the reasoning behind how you propose to solve the problem. Why did you propose to implement the change in this way, what were the considerations and trade-offs. The rationale fleshes out what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work. The rationale may also provide evidence of consensus within the community, and should discuss important objections or concerns raised during discussion.-->\n<p>Adding additional wrappr contracts to support new assets will help expand the total Synth supply, LINK is one of the most liquid ERC-20 tokens and is therefore a good wrappr candidate.</p>\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<h4 id=\"contracts\" style=\"position:relative;\"><a href=\"#contracts\" aria-label=\"contracts 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>Contracts</h4>\n<p>Two contracts are required to be deployed:</p>\n<ul>\n<li><code>LINKWrapper.sol</code> which is able to mint <code>sLINK</code> against LINK deposited and release LIK against <code>sLINK</code> burned.</li>\n</ul>\n<h4 id=\"interfaces\" style=\"position:relative;\"><a href=\"#interfaces\" aria-label=\"interfaces 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>Interfaces</h4>\n<p>The entry points for users on <code>LINKWrapper.sol</code> implements the following interface.</p>\n<pre><code class=\"language-sol\">interface LINKWrapper.sol {\n    function mint(uint amount) external;\n    function burn(uint amount) external;\n}\n</code></pre>\n<h4 id=\"key-bounds\" style=\"position:relative;\"><a href=\"#key-bounds\" aria-label=\"key bounds 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>Key Bounds</h4>\n<ul>\n<li>\n<p>The upper bound on the amount of <em>Minting</em> is determined with a helper function, <code>capacity</code>, defined by max(<code>maxLINK</code>, 0) with <code>LINK</code> being the amount locked in the contract. In case the user attempts to mint an amount greater than the upper bound, then <code>capacity</code> is minted and the residual is returned to the user (please refer to test cases for calculation specs).</p>\n</li>\n<li>\n<p>The upper bound on the amount of <em>Burning</em> is computed as <code>LINK</code> locked in the contract multiplied <code>(1+burnFeeRate)</code> (please refer to test cases for calculation specs).</p>\n</li>\n<li>\n<p><code>mintFeeRate</code> and <code>burnFeeRate</code> are both bounded between 0% and 100%, inclusive.</p>\n</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<ul>\n<li>Given that a user has <code>u</code> amount of LINK and the contract has <code>c</code> amount of LINK in spare capacity\n<ul>\n<li>Given that <code>u</code> is larger than or equal to <code>c</code>\n<ul>\n<li>When the user attempts to deposit <code>u</code> LINK into the contract\n<ul>\n<li>✅ Then it succeeds and the following take place:</li>\n<li><code>c</code> LINK is locked up in the contract</li>\n<li><code>c(1-mintFeeRate)</code> is minted into the user's wallet in sLINK\n<ul>\n<li><code>c*mintFeeRate</code> worth of sLINK is sent to the fee pool in the form of sUSD</li>\n<li><code>u - c</code> worth of LINK is refunded back to the user</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that <code>u</code> is strictly lower than <code>c</code>\n<ul>\n<li>When the user attempts to deposit <code>u</code> LINK into the contract\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li><code>u</code> LINK is locked up in the contract</li>\n<li><code>u(1-mintFeeRate)</code> is minted into the user's wallet in sLINK</li>\n<li><code>u*mintFeeRate</code> worth of sLINK is sent to the fee pool in the form of sUSD</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that the contract's capacity is zero, as <code>maxLINK</code> is locked in the contract\n<ul>\n<li>When the user attempts deposit LINK into the contract\n<ul>\n<li>❌ Then the transaction reverts due to max capacity being reached</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that a user has <code>u</code> amount of sLINK and the contract holds <code>c</code> amount of LINK\n<ul>\n<li>Given that <code>u</code> is larger than or equal to <code>c(1+burnFeeRate)</code>\n<ul>\n<li>When the user attempts to draw out LINK from the contract by burning <code>u</code> sLINK and flagging withdrawal in LINK\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li><code>c</code> LINK is sent to the user</li>\n<li><code>c</code> sLINK is burned</li>\n<li><code>c * burnFeeRate</code> worth of sLINK is swapped to sUSD and sent to the fee pool</li>\n<li><code>u - c(1+burnFeeRate)</code> worth of sLINK is refunded back to the user</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that <code>u</code> is strictly lower than <code>c(1+burnFeeRate)</code>\n<ul>\n<li>When the user attempts to draw out LINK from the contract by burning <code>u</code> sLINK and flagging withdrawal in LINK\n<ul>\n<li>✅ Then it succeeds and the following take place:\n<ul>\n<li><code>u (1-burnFeeRate)</code> worth of LINK is sent to the user</li>\n<li><code>u * burnFeeRate</code> worth of sLINK is swapped to sUSD and sent to the fee pool</li>\n<li><code>u (1 - burnFeeRate)</code> sLINK is burned</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given that the contract's holds no LINK\n<ul>\n<li>When the user attempts draw out LINK from the contract\n<ul>\n<li>❌ Then the transaction reverts due to the contract being out of LINK</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>For the wrappr contract, the following values must be set:</p>\n<ul>\n<li><code>maxLINK</code> the maximum amount of LINK held by contract.</li>\n<li><code>mintFeeRate</code> the fee for depositing LINK into the contract.</li>\n<li><code>burnFeeRate</code> the fee for burning sLINK and releasing LINK from the contract</li>\n</ul>\n<p>It is expected that arbitrage will be capturd via flashbots once this new contract is deployed, therefore, to maximise the fees to stakers the following process is proposed for the deployment. Post deployment stage multiple pDAO transactions to progressively decrease fees and increase the cap in the following increments:</p>\n<ul>\n<li><code>maxLINK</code> 0 - 2.5m LINK in 250k increments</li>\n<li><code>mintFeeRate</code> 75bp - 25bp in 5bp increments</li>\n<li><code>burnFeeRate</code> 5bp</li>\n</ul>\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":"64a5d77d-2d55-545c-8f35-3785f8ba64a4","frontmatter__sip":153,"__params":{"frontmatter__sip":"153"}}},"staticQueryHashes":[]}