<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Borrow for the second time on</title><link>https://rajkoz.com/posts/fluid-vault-smart-contracts-deep-dive/4-vault-protocol/7-borrow-second-time/</link><description>Recent content in Borrow for the second time on</description><generator>Hugo -- 0.152.2</generator><language>en-us</language><atom:link href="https://rajkoz.com/posts/fluid-vault-smart-contracts-deep-dive/4-vault-protocol/7-borrow-second-time/index.xml" rel="self" type="application/rss+xml"/><item><title>Fetch non liquidated position</title><link>https://rajkoz.com/posts/fluid-vault-smart-contracts-deep-dive/4-vault-protocol/7-borrow-second-time/1-fetch-non-liquidated-pos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rajkoz.com/posts/fluid-vault-smart-contracts-deep-dive/4-vault-protocol/7-borrow-second-time/1-fetch-non-liquidated-pos/</guid><description>&lt;p&gt;We are fetching a user position which is not liquidated. Here is the code to look at:&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://rajkoz.com/fluid-vault/vault/fetch-non-liquidated-position.png"
alt="Vault protocol" width="100%"/&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id="1-fetch-tick-debt"&gt;1. Fetch tick debt&lt;/h2&gt;
&lt;p&gt;First, we load total raw debt for the current user&amp;rsquo;s tick:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-solidity" data-lang="solidity"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// User didn&amp;#39;t got liquidated
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Removing user&amp;#39;s debt from tick data
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// temp2_ =&amp;gt; debt in tick
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;temp2_ &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (temp_ &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;) &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt; X64;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that &lt;code&gt;temp_&lt;/code&gt; is loaded tick data:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-solidity" data-lang="solidity"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/// Next 64 bits =&amp;gt; 25-88 =&amp;gt; raw debt
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;mapping&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int256&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;uint256&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;internal&lt;/span&gt; tickData;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="2-zero-tick-liquidity-sanity-check"&gt;2. Zero tick liquidity sanity check&lt;/h2&gt;
&lt;p&gt;Then there is one sanity check to revert if tick debt is &lt;code&gt;0&lt;/code&gt;:&lt;/p&gt;</description></item></channel></rss>