<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>William</title>
        <link>https://paragraph.com/@william</link>
        <description>undefined</description>
        <lastBuildDate>Mon, 20 Apr 2026 00:55:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Performance Marketing in Crypto]]></title>
            <link>https://paragraph.com/@william/performance-marketing-in-crypto</link>
            <guid>5mI3itFfqzdzV4ft4nUj</guid>
            <pubDate>Tue, 16 Jan 2024 18:32:11 GMT</pubDate>
            <description><![CDATA[Performance marketing is something that’s been honed and refined in web2 marketing – especially by the F2P genre of mobile games. If the lifetime val...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/917f005d95feac5c133340b8869e669a.jpg" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAASCAIAAAC1qksFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEwUlEQVR4nJ2Ue0yTVxjGn22abRmyBbKqbMhMKhGqUNcxZ5YRhuLWkMxLRsWJZgPdAFmIc8PhjZtYSrkUEdpa2mor/Xr5aKX9/KBXSzNSirYqIpVtLUvDMmeMM8v2z/6Yy0cJmrgsupP3r5Nz3l+e8z7nQVZkKF45s67siD1enGl6YT87YufFHI/uPFUh3iIjTMHckxY0ZYQt3CidM+uMk7hRO3vCvNKtWTfj5EaH/yeAG3WsCBpwrBNKGmodSAK0Zg5GcaOOslZF2T5xss/EmaYe1/fkAD2EcthuggxBOwqtFxo32rtU/YRKPtki+0l6xvKRneBMWzPClrdmGWVPD6jvxuA16EdhCsA0DjK0WWf1WsZJ629TUw9IbWCTTA3dBRgGYDG+HjBzo0+k5lHAKQxeh94/DzjrqVBo7t++p9FFhO1XVVJnpdUD/WWQV9HnfcE1wIvR7AkzL+bIjtifHkAGcdZTWNv44K8/SfMlDreAIs7lDzihH4PlCsjQS+6BQpIoO3H+1e+I9MkLcSmcafpxIywACBzvfEQBI+LNA7W/RH+89/v9bon4WIsYxAhsk8x4Oo289vYh0y236+9S4RkY5Tmzrrk+9KoJK2ea+g/ADQag9z9HTaFRvu7d91RK1a+379ydmXnR4IJuFF+3oLoJ+44WdStuhH4+dFBZoaGg1WRHbck+Ey6S7ef8SSODvNjwwmz+TcHgddR1762olLS1iYQnDVrteqOdebQuE450whJaRN16o6njTvQHrfw0+qxQEKlXtFBrcNoyZvYk+wZ4MeZjZUXo7IidAfBizpTAeRwWLaJuMeOtrquvPWS3251DQ0KZDKeMc6YKopfCSSUs19Cs2F1eQZuIAyNB6APoIZjr3eLKlq6jatVrgQFudDhn1s2LOdMnrfMKmBPNp6F0s0r3tzc1OD2eSx63htCDuMR0NI0xpR1BrQTfNsuk0hGrFd0a6APJriiUwxiSF0saPjS50aMX2Qzpkzao2zbUVpfUfDUPWBkyYsceQeUBQiHz+nzj4+NWM8nIJ4OwXGacYwkyE6qTnentDftH3zY6E4a/h9KBHZXIWl/QUc9urEMrgRM9OtJYLu2sO/hN1WdlH2/d9tCmRfv3jvt8/lBocuqmx26Hyjb/sVVenPNCZkODDNtLJb0ywYADh7qwfhPm1vKXl+S9syFlFTu3ZIdIKW8Tir78vPxgTU3xrk9YS1nxGbiX+fvrlLI/7tydmQr7qWF2mwId/RD3QihG83EcrkJ9BXqOQFjF3rML6VwAz8bbAympqfkbN5bs3NnQ2CAo/XTLli1bt21LnVtr12Y9VCA4UnPSoN0qFS8t342q3TC0ou8Y1Mdh61zskqcEdOmTF5jQ1YoLC/lL8AwWP79s+fK8vLzW1laapl12h0Qi+WDz5tzcXBaLlZCQsGbNGoFAwACyIkOcaSrRq04J6FijmiVeFfpFr/jUK4KGjDCVGWbctpCjK0MkLiq27/+ipKhI0adwuVw0TRME0aGQFRcXFxQU5Ofnp6Wl8fn8zMzMpKSkeUDcrNwoEyycaSqezNyo41/jhT1B4qK0nbZc9o9pdTqj0Xi0uen9ilKRUMjn8xMTE0tKSqqrq1evXs1ms/8Bc7pwkyOFAaMAAAAASUVORK5CYII=" nextheight="1440" nextwidth="2560" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Performance marketing is something that’s been honed and refined in web2 marketing – especially by the F2P genre of mobile games. If the lifetime value (LTV) of a user is $5, it’s worth spending up to $5 in adspend to attract users. This is what allowed the flywheel of digital advertising and F2P to really spin up – with money that users spent in game being poured directly into advertising, which in turn drove more users. The pinnacle of this was King, the makers of Candy Crush, spending almost a half billion dollars on formats like Superbowl ads to drive user growth in 2015.</p><p>With a mobile game, the direct in and out is pretty simple – either users spend money on your app or they don’t. This is especially important as your direct costs (adspend) are also denominated in dollars.</p><p>Now with crypto it’s very different. Very few dapps directly monetize or drive revenue – instead, as a protocol you have other metrics for how you view the revenues.</p><p>The only ones that are really able to do this at scale are the crypto exchanges – Coinbase also spent almost a half a billion on ads with stunts like the moving QR code, or giveaways. Key to the discussion on moving people away from centralized alternatives is this – the ability to get the performance marketing flywheel going is key.</p><p>Since monetization is often done through a token (liquidity mining, or token sales), the objective metrics become different – especially as your expense is no longer denominated in dollars necessarily, and can be denominated in tokens.</p><p>So what marketing related expenses can you denominate in tokens?</p><p>Liquidity mining and airdrops, have been the only way to really get distribution using this superpower.</p><p>However, it's up to builders capitalize on the fact that the marketing doesn’t need to be denominated in fiat – however the genius with points is that this funnel can really be turned around and be put toward specific goals and metrics that aren't as blunt as a onetime airdrop or a masterchef contract.</p><p>Blur for instance can quantify the value that they spent bootstrapping the sell side of their NFT marketplace – and denominate it in tokens.</p><p>In other words – <strong>performance marketing is here in crypto</strong>, and it's up to the smartest builders to figure out the metrics and incentive structures to create playbooks that change crypto GTM – and points is just one side of that revolution.</p>]]></content:encoded>
            <author>william@newsletter.paragraph.com (William)</author>
        </item>
        <item>
            <title><![CDATA[Move from the EVM]]></title>
            <link>https://paragraph.com/@william/move-from-the-evm</link>
            <guid>HjxzL3Gc29RrLVggFVPp</guid>
            <pubDate>Wed, 10 Jan 2024 02:28:23 GMT</pubDate>
            <description><![CDATA[One of the big themes that I think we’re starting to see shake up for 2024 is the rise of Move as both a VM and a language. This is especially as Sol...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/eec95c4366cb25733544eda0558690b0.png" blurdataurl="data:image/png;base64,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" nextheight="1024" nextwidth="1792" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>One of the big themes that I think we’re starting to see shake up for 2024 is the rise of Move as both a VM and a language. This is especially as Solana seeks to adopt Move, and their next step up in programmability (Runtime v2 – <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=Hc45gUtVj20">great talk here</a> from Breakpoint) is a step towards this future. The other big catalyst is the growth of Sui (which recently hit $200m in TVL), Aptos, and chains that bring a Move VM to other ecosystems (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/movementlabsxyz">Movement Labs</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://lumio.io/">Lumio</a> by Pontem).</p><p>Move was developed by Libra/FB to be their programming language for their payments focused blockchain. However, with things not petering out as they hoped – many jumped ship and started their own startups, including Mysten Labs (Sui), Aptos Labs (Aptos) and others. It has a Rust like syntax, but it’s simpler – and as a result it’s much easier to pick up from Solidity than Rust for the first time.</p><p><strong>Why Move? Why another language for devs to learn?</strong></p><p>Move is the only other major smart contract programming language outside of the EVM (Solidity, Vyper, etc). This is important because one of the issues with working from an existing programming language like Rust or Javascript – you have to add more boilerplate or add in libraries in order for it to be suited for a blockchain context.</p><p>Even though many developers <strong>know</strong> these languages, the actual <em>usability</em> decreases when you have something that isn’t purpose built for it. While there can be work done that smoothes it out (e.g. packages like Anchor for Solana), I hold the strong belief that a smart contract specific language is important for composability where we deal with more complex interactions.</p><ol><li><p><strong>Global Types System</strong></p></li></ol><p>One of the painpoints with the EVM is that there are no native types. That means if you’re trying to interface from another protocol from your contract, but you don’t have their interface, you’re plain out of luck. One thing you can do is go to Etherscan, copy the interface and then interface with it.</p><p>With Move, contracts are called ‘Packages’ – borrowing from Rust terminology here, and when you ‘publish’ (aka deploy) you push up not only the bytecode, but also the metadata associated with the contracts.</p><p>As a result, you can specify dependencies as addresses, and pull the information about for use in your program – the following, from the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/kunalabs-io/sui-smart-contracts/blob/master/kai-finance/sources/vault.move">Kuna Labs repo</a> is a good example:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/30d1d805530dd3a9c0fd02a1e9fcdd66.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAIAAABj86gYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAE9klEQVR4nI2Uz1MaZxjHdzQJJgLh57KLu6yw7gLLjwUWBGSNkEAVFce1BiNKMGpStNBk67AFjQEDCUiVNBgz7ZiZtrfecun00lubmXZ6yEwv/RN66qWX3DrT0e04acZqZ76H9/K+n+f7fZ7nBbYa7W+/f7XVaC+trGXzxWy+mFnObdZa0ThHuYJMIMwEwn42Kh7+v9jIiAJE/3zzF0D7rsQnZhxeFsUpUToE72ejeoy00oHm04Nb2Xsvv/thbGpuOJEcm5ob4VL9bGx8Kj0YTVjooNU1cKI8gcgFGfT7H28AgmIcXpZyBbvloESmFaWBMA2EKbSIHiMNOHVtIDIyMnknV7grlHmhkuNLvFB5vPucFyrFcuN+tZnjS+uV7WK5UW3s3creG47PjCfSnRfVP7/+DZieW74rlMOxREeXUqqERMDxWaqEFFqk65IaMRAW2udjryq0CNClPC9Vd3QpO7oU56VqqRJ6R92XdSoQBQDgx59eA8n52zm+NBQbU2gR8d1jSWRahRbRwEbZZV3QF5zk0umbuQF2tBczkyRjofpJkiGsvuOy3tZhHQDw6pdfgatxLrOc44UKl8xIlRAAnDvSxX8AIKqBjRKZBiec3Fx+MDadWdl0ekJ6lECNdtRoM5hsZwBIG5PNF1KZOzvtg2y+EI1z06lbg9FDQ6IPhRaRq2CStBOk28NE7LagwUDghMdI0AaTQ99rOQOggbD0Uj7HF7lkhrQxbGQkGueYQFi8psdIHYJLZFqfN1QoPsx+WEwvfuwfiOKERxRqtEmVutMAVtp3I3Pn0U77o8LG+6mFXtKBmMy9pA3GiAuXNIY+uwY2ylVwwDswO3N7bj4/M7Pq9w466RDNDDlp1s2EFVrkNIAe6/Oz17bqTx5Um9H4JNhjBHuMuh6TFu6VyLQ6BNdAmGglGp+kvYOUK4SRHrkKPh6EE/WviG5kPsjmCzm+FI4lRhJJLpkJxxJiXSYzrUPwbjk44GNXVj75WKgX15rD8VmX3RcKDl8JT9idwY4u5WkAI+msbj/L8aX67n61sVdt7H39zctsviBWZzhabOCcHMKs86uliRuLXPquCsKATikgUQAd3UCn/AwHKE4Vy831yvZO+2C9ss0Lldb+i+tzSyJAh+AKLaICEYeFJvscTppl3EMsO+5mhqxm2uuP2p0hCCHOS9WnATZrLWGj9rDxRGSUa61sviBGhJs9eowEOuVWu/fRZ1+W6/sPHh24fVdVIKoGERglIYQ4o8mGPnuxfPiZbNWfrFe2nz7/6kG1mV5avazRixFpIEyuginKY/dGnJ5wYHDcaLIcLZoNQogTG3CCg3vCZmv/xf1qs1iuVxt74la/PUVm0jE2Pr2wmB8bTfX04ATpxgkPhBBnTxGKU/errbXSVn13v/n08/XKdn33WWY5JwJws0eH4HIV7KH74/Hrk9zCcHyWohiSpAmrz+4MnZjPu4D1SnOVL+60Dz5tf8ELFWGjlspkxZtG0gn2HG6yxeripm8u3ObHEvOogdTBJhDGkV6LRKY5Y0wNOCVsPBZ7UKnvlsqPy7UWl8yIf7UeI1VHPbCZnS46xA5NXAlPeP2xSGTK648SOOWk2f7Ae30WzzuYtzeZzOaLqUxW2KgtrfBLK2vCRi0a58SICIqBMfKwB1Z3Ymo+s5gfHZ2FEAJCCBDG1SCihY0gjCtA9L8c/A3dtJuzmvZ6LQAAAABJRU5ErkJggg==" nextheight="784" nextwidth="1228" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><ol start="2"><li><p><strong>Native Upgradability</strong></p></li></ol><p>One of the great painpoints with the EVM is the lack of upgradability. This has resulted in hacky patterns like transparent proxies, UUPS, etc.</p><p>Just like Solana, you can directly upgrade the contract if you have the upgrade key. There are some limitations of course – the public facing API can’t be changed, only new functions can be appended, structs can’t be directly modified.</p><p>As usual – the code can be made immutable as well, but by default contracts are upgradable.</p><ol start="3"><li><p><strong>Inline Tests</strong></p></li></ol><p>This is probably the aspect that I wish came into Solidity the most, but you can add inline tests to Move. Just as a quick refresher, for more complex systems, in order to test specific components, we’ll often write out mocks or lens contracts to help determine the state of a particular contract. However, inlining these tests allows for more seamless test driven development (TDD).</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f02cbe53dea87f3fe76adbf2128a5c83.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAARCAIAAAAzPjmrAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEnUlEQVR4nIWSXUxaZxzGMY2WWoQCR/mUKmpFaTkOPXgYh48jH+d44BxBOEcPHj7sQbBarKCAHdVidR3FRLa1aZd+XazLerdlWZYsW5r0olfb5S6W7LrZXXe37rILkhm3zDZ58uZ9n+R9f//nySsAYY/Z6jVbvSDsMVnQ5hGEPSOWiYaPTIKwzwS5QMhpglwmC9rcWxCvC5uyuwNWJ25BvEYzcpwEmWtP5wv3i/vP09eeJgsP12o/5Grf52vPmPR2qnSfzX6SvvYkWXjMZav0QiVZeMhvPJlJbz178dNfb9788tvLP/588+2PLwaM0LEAg2n8bP/5IRAGIUQ/COr6jeeMoxdGEcP58SHQeiDYaLYZzTaDqbEZAq0g5DCYYINp3GCCm0+DkOM4CWJ8tlr/jKI5u4/6cO9utf5gceUq7MQjXBojGbuPwoOsbcLvD0Wn6KTdTXoIGoQcHiLsCTAeIowH2bf000hQrtR+f/U6f3XH7iZf/Pzry1evH3z+1TjiSy0V/KGohwgnMzk8yHF8ll8qkpEYx2chxBua5UOz/BSdnElcekcCle7cQUxbn8HcpdHLFN3DYy7EFzZCzkETPIbgRgjV9BoOpdKd0/UbtfohpW5A02vQ6g36QfAtEoikSormxhFPa7tMAqjbxV0TZGzu8vXgfME/c4lfu+ULp6SAukvVJ+vUyhU6uUKn0PTJujTa3kGZolsCqEVS5VskkMhUKBYEIUQkVUoB9WmpcnR4xGeBvWhkPlpAkenAZCw2l09w6+jEdJovr13+iF/KGc1weXuPCLFCcWcTc5waCSapGasTE0mVTUum6JYC6iAdr995tLVb9xKRj/e+SMU31rN7Gyv783PFlfTOXHy1ZwjyT3LTkaTgxCnRGcWxAAmgdvkoo9l2CJAA6tNnFDjF0BxfrtQ2NnfXStvkVPTKWiW1WMgXt7Orm+tXd/PlG7liBcWC/tgVI+Q8jtFIgJF0s6JDVyjujPPL13f3ZxOZhVzlg+qdCJe+fe9xNLlodfpwMjJFcww7T1CMVm+wTbImyCU5cv1fALFchZG0w+0/OoJQ3JlZKZUrNU+Aji5vkrHcRICt336AU4xIquyQa8506cSAVq7Sq3uHWoUSobjzHRVdGP1vApxi4vxyafPm1nZ1p7ofZuLZfLlav+cmpr3hBSq2yiwU0qVbue1P+wbBo3f/p6LZRGaSmjk6RUubJMZfLm7eLG3erNbvXVop3X305TffPc8Vt6wTwet3v9b1Dx92IlN0N3Vw1Mg6tY31H7MB8Iei71kch4ALZpvViXWpzqp1A2rdAKDqkSm6AVUPoOqRyFUnOwCxvBFRIBC2tsuaammTtLRJWttlJzuAE6ckrSKp4ISoaTYANMdbndghQKUbONs/bBhDzQ5qxIajGEWEWJxiRiA7bMPJQALzzs5wmcxKCcWoccQzZnURITY8m3S4/bANx7ysGw1fzKxiZCQQYhsAqxM7+k1FUqVQDEAo5Qunbb4IEWLj/HI0uWhz4XYneTFRYiKLcX65XKkxXGoEso9AdoZLJdOrXmL6fYRIsLmpwPzFTJ5fyi0srf8N1hWD2sFrvggAAAAASUVORK5CYII=" nextheight="718" nextwidth="1384" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Here are some tests that are part of the Kai Finance vaults:</p><ol start="4"><li><p><strong>Global Storage</strong></p></li></ol><p>One of the key things is the global storage, where instead of using a mapping, user data is stored in an address. This is in part what allows for such good performance, since only the data that you need to access is called (e.g. your token balance), instead of needing to load the entire program data into memory.</p><p>These are resources, and have a <code>key</code> or a <code>store</code> ability. The key refers to the fact that is can be stored in this global storage, and the store refers to the fact that it can hold data.</p><p>This is why you might see a bunch of addresses that are being invoked when you look at the transaction graph on an explorer – these are references to the global storage.</p><ol start="5"><li><p><strong>(Sui specific) Objects</strong></p></li></ol><p>Sui goes one step further with the concept of global storage and introduces the idea of objects. With objects, these have native transferability if it has a <code>store</code> ability.</p><p>If I were making an Ownable module, I’d create an object with <code>key</code>, <code>store</code> and transfer the object to my address. To get authentication, I would just add it as a field in a function, since no one else has access to this OwnerCap object – no need to authenticate within the function.</p><p><code>function setFees(_: &amp;OwnerCap, newFee: u64)</code></p><p><strong>Conclusion:</strong></p><p>Hopefully this post goes a bit further in demystifying Move and some of the ideas explored here. While there are areas that are clunky (e.g. the VScode extension is really bad), Move is surprisingly developed out with robust docs, good design, and a helpful community.</p><p>For some good resources:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://move-book.com/">Move Book</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://aptos.dev/move/book/functions/">Aptos Move Tutorial</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sui-foundation/sui-move-intro-course/">Sui Move Intro</a></p>]]></content:encoded>
            <author>william@newsletter.paragraph.com (William)</author>
            <category>move</category>
        </item>
        <item>
            <title><![CDATA[My Journey using AI in coding]]></title>
            <link>https://paragraph.com/@william/my-journey-using-ai-in-coding</link>
            <guid>Ilq5SFACySBjzXSycSyS</guid>
            <pubDate>Tue, 28 Nov 2023 04:31:12 GMT</pubDate>
            <description><![CDATA[I remember 5-6 months ago thinking about how I could do everything but UI.Contracts/backend wasn’t too difficult – just a matter of working through i...]]></description>
            <content:encoded><![CDATA[<p>I remember 5-6 months ago thinking about how I could do everything but UI.</p><p>Contracts/backend wasn’t <em>too</em> difficult – just a matter of working through it and meticulously testing the business logic</p><p>But creating UIs – oh boy I was really not able to get over this issue.</p><p>It seemed like such a massive wall between creating an actual application and learning the puzzle pieces to make it work.</p><p>The issues with UI are twofold:</p><ul><li><p>lack of a good foundation to create a UI along with best practices</p></li><li><p>death by a thousand papercuts</p><ul><li><p>State management issues, etc</p></li></ul></li></ul><p>Isolated – these were workable issues, but working through a ton of these stalled any momentum with trying to move forward and make a usable React app.</p><p>The key breakthrough for me was leveraging AI to help me with learning frontend – so here is a quick overview of my process for using these AIs.</p><p><strong>Copilot (Paid, Free if you go to school):</strong></p><p>Copilot has two forms&nbsp;– the first is the autocomplete that we all know and love – and the second is the copilot chat.</p><figure float="none" width="372px" data-type="figure" class="img-center" style="max-width: 372px;"><img src="https://storage.googleapis.com/papyrus_images/8cb777ee3fbbc82beb055f660452fcf4.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAgCAIAAABsC5RsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFZUlEQVR4nJ2W74fjeBzHU/qgZ7OX3cxmJ1uiLkKFuLj4ni9RIkeUCqH04kKoUoZQF6WUEl0lhCVUqAs90QdLqWEow7D6aJlHwz5a5sk8uL9g/oE7zWebnZ3Z27vd14P4fpuvTz/vz/fzIwTDME/po0ePj46Pj6sHWJZlGIb9Johq9QX6Sei0fmSYZ6VSqVwuEwRBUdQ3GyWe0M//2v3+922iKD9vNpvFYnF1dTUajcrlMjj71RYfPX52+uevL1/+csz+4Di/tdvtMAw1TQM3/w/Mp1KI4+fH3zHM9y/Yp0+elMvlSqVCEARJkgzD0DRdnGZyWJaFH4vt3SdAMAzz7OioyrI8z3McV5zgOE4QBLBL0zTLstVqlWEYQRBqtRqX89Acy7KEoijb7TZN/zg9Pc2yrN1uX1xcLJfLLMvW63Wapr7vv337No7j2Ww2nU6Xy+X5+flut9tut2dnZ7qukyT5iUWO4xRFEUVRkiRZlkVRhKcoioIg1Ot1URQRQkKOoiiCIIiiqCiKnAOOs4ewMAyzV01RFP1FKIqC08VJ6sDDDCOq1SoEheM4CFARprs/Vv8LNqdarRIsy5I5FEURByDVS6USbIuEf0iho5qzV01RVJqmcRxjjNfrdZZlr1+/DsMwCIIwDGGr6/pn05OmaVmWXdflef7k5MQwjL1bFEVlWZYkiSiKk8nk5OQkDMPBYOA4ThAEURRNJhOE0L9Z1HXdsqxarWaaJuTTXjXEG1SD0lKpVKlUHqq+Z/GufOpwS3uLsIe4FplcVAXHcV/uGsydV3sfBUGYTqfz+XwwGFiWNRwOF4vFdDodj8dBEGCMEUJf1TIIlmUhdXmeZ/NarOfwPC9JEvhbXCj5OaiD3g+q6/W6ruscx4miqGkaFAxCSFVVKG2oJUmSEEKDwcB13X6/7zhOt9uFhWman3QKURTDMOx2u+v1erPZrFar+Xzu+/5qtRoOh3Ec73a7fr8fBIHneW/evLnOuby8vL29vb6+vr293W630Eo+qm40GuCdruuqqsqyXK/XtRwoXjVH0zTf9w3DUFW11WrBoggXc3CTkGV5uVxuNhtIvdVqlSRJv99fLpdJkvi+P51OR6MRtJkkSdbrdRzHWZbBeUVRCIIAHz/EURTFXq8HLgDggqZpGGNN03RdF0WxXq9jjAVBQAhpmiZJkqqqjUYDY+w4jizLH31UFGWdk6ZplmWTySSKoizLzs7Oms2m7/ubzabf70NWua67WCyiKHJdN8uy3W5n2/Zms7FtG+bSh3y0bVvXddM04Yo9zxuPxzBtMMatVss80G63DcPodDqGYWCMPc+bTqe+7wdBUNT+XnWWZePx+CTH87wkSS4uLt6/f9/tdmezWRzHSZJEUfTq1as4jh3HAR22bc/n85ubG7h627ahmROSJAVBMJlMoN94nrdcLuM41nW92WwihJrNZqfTabVaoEDTtE6ngzG2LGswGBiGYVmWIAjFdwOhqurl5eW7d++ur693u12apjc3N1dXV/1+fzwe27Ydx3EQBIvFotvt+r4f5SwWi9lsBs84jiVJKm6cqNVqVg5Ex7Is13Udx0EIYYx7vZ5hGLqua5rmOI5hGJIkGYbRaDQgJRuNhmVZvV4vCAKEEE3TBEIoDEPP84bDIdzpZDI5Pz/3PM80zdPT0zAMfd/v9XppmoZhOBwO0zTt9Xqz2SyKIuinSZKkaeq6LkmSBM/zpmk2m02MsWEY3W631WrBmN+/Jgj4LIB2WSqVaJoul8skScLYqFQqsIBXe9UY4ziOoyhyHGc0GkG6FTPz3lQqGui97d1j++kK/0OSJCzK5fJnPxagB/M8D7P7HkV1/wNkfWC0g8kBCQAAAABJRU5ErkJggg==" nextheight="538" nextwidth="458" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>With the autocomplete, you can do soft prompting by providing some context on what the component is going to do. If you’re going to have a dropdown menu in the navbar, you can add a comment, and it’ll provide a completion for that menu.</p><p>However – I do find myself using copilot chat more with UIs in particular, as Copilot often gets much quieter with completions/less useful as the codebase increases in size and complexity (as it can with UI).</p><p>Copilot chat is rumored to be GPT 3.5 turbo but finetuned on code to make it more performant. Whatever it is – responses are really quick which is awesome.</p><p><strong>“alignment”:</strong></p><p>However – Copilot chat is more prone to turning things down which is a huge source of frustration when this happens. It also blocks public code from being shown, which</p><p>e.g. I might ask Copilot to insert some Tailwind to ‘justify some content’ and Copilot will just refuse.</p><p><strong>Context:</strong></p><p>Another gripe is the lack of context – Copilot chat will focus it’s context window on wherever the user’s cursor is at time of chat, and while it supposedly can access multiple files – in practice I’ve never seen this work.</p><p>On a more practical note – this lack of context means that given the choice between chat context and code context, Copilot will prefer the chat context – so if you copy and paste some code, modify it in your code, but ask a follow up question, the response will rehash the code from the original response instead of your modified one.</p><p>The fix for both refusal or long chat histories is to click the ‘plus’ button to start a new chat or to delete the previous chat.</p><p><strong>Rating:</strong></p><p>Overall 7/10 – it’s definitely become a Google level replacement and theres not a ton of hallucinations. It’s a speedy boi too – very fast completions.</p><p><strong>Phind (Free):</strong></p><p>I discovered Phind more recently and have begun using it a lot more – Phind helps me with medium to higher level tasks.</p><p>It takes a few more seconds for Phind to respond to queries, and Phind doesn’t have text completion like there is for Copilot.</p><p>But it’s much smarter and has a better grasp for context. In other words, if Copilot chat is a like a summarized google search, Phind is like a very junior intern – it’s that good.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ca29c0e32bf6bb7977bca4b3f9ba1acd.png" blurdataurl="data:image/png;base64,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" nextheight="292" nextwidth="261" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>You can add and remove context – the context is the killer as when you start to stretch outside of the context window, the AI can’t as easily pinpoint code that you might be talking about and provide suggestions, in other words the helpfulness jumps off a cliff.</p><p>However this fine grain is helpful especially for UI work.</p><p>I might have a component within a page, and since both are in context, I can ask about interactions between the two.</p><p>It’s also more proactive about solutions – it’ll ask clarifying questions or allow you to (with a click of a button) implement the changes directly into your code.</p><p>One particularly nice feature is that it already has a bunch of popular software libraries loaded inside for context, and if it doesn’t know it can also conduct a search to serve you the answer.</p><p>Theres some parts that are rough around the edges (Unending requests, no completions) but overall I find it nice for tasks that require some more knowledge.</p><p><strong>Rating:</strong></p><p>Also a 7/10. Wish it had some more polish with the features and faster responses but it’s dang good at what it does and offers some really neat capabilities. I’ve also never really seen any hallucinations which is pretty interesting.</p><p><strong>Conclusion:</strong></p><p>To an extent I feel like relying on AI is a bit of a crutch – and that I should be more self reliant and learn the system myself – that I’m cheating myself out of a valuable experience just coding things out and learning from first principles.</p><p>This is true, AI likes to skew for more verbose completions, or provide weird/incorrect results – but AI gave me the confidence to get over my UI learning curve and help me make cool shit, and that’s something I’m grateful for.</p>]]></content:encoded>
            <author>william@newsletter.paragraph.com (William)</author>
        </item>
        <item>
            <title><![CDATA[Coprocessing what?]]></title>
            <link>https://paragraph.com/@william/coprocessing-what</link>
            <guid>RRodJzn2BXt7w1vW4zLf</guid>
            <pubDate>Tue, 14 Nov 2023 19:08:46 GMT</pubDate>
            <description><![CDATA[A few days ago, a startup by the name of Ritualnet hit the scene with a monster raise – 25 million dollars at a low 9 figure valuation. We’ve already...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/78511c3f087d29ff654e91b805156e7c.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAASCAIAAAC1qksFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFaklEQVR4nI1Ua0yTZxT+kpksuswgQ0S5RKBgwdJUKJfSCuVSLAVKKVAKokChyq1yk5ZSLlJ6xxYspbXtbGm/ClIol1I3CoMA6iQytBJFxpw6df5QR0yWxfiLBWGMGHV78+Tk5P3xPOc9530O8KBfvQjKr3fxpzpbH1q+fWjR3gU77vd0OozSCVn9pVqaTVQ3rTw/JKyf153/dejSA7PaAcqHxHUWIfMz6OfXbCTAA7Pmbrds7mLrvFawNm99e2P01eTw8mCvXa0FJUp5c6eELWcUnTvLaJ9WCt9MW55Y9b9YNCNtbCOnzNTIAN/HDYCcso3LvtbqLQ3gjlE2b1BOGy5blaBZZeay2uknOXnZzCTCqagoSlR0Zhz+BD4h7UQWG+EbcP9K13ObYXng4qCQuWIzLVsNKzbT0nD30rD+vkW3Mgo+vNq7NKyfUos2NNYFFnSi/q7LUbH06BgKIuRYGCopkUgLjcQfjSXRTtejY9OJWZUoNL7wRK2HW6C0JMsBdiwYZINC5uKA9rcJ81+OqZ9Hulfn7G9u2d8uzq7OrccVG2hqZGwKDPErNS0iHDYjhZSLJ5fg04rI1FJcSgE8MhMdm4lPpUHhGAgMnUctD4DGZEQetnecm7jQ0s+vuTd4aXXO/nii78/bU7b2Jj27xNTIMHLKeporNpqz2aILpcdV7HoqtSYchUPHUyKxROTR1Ata+1nBDAAcjEk8HoxJcXLzS8VTkKGkCIjHqLRhSsGz8GuXrcZH9t4XM0PLVoNV2vDJIXdW5v+glqenVQZCQzAJ2Tk0VlxKwdKzNTn4FPAl73CF+QZFevqjjsAjk5PKIa57e7lVs0resLjO+H6kBnYJyCnbXvKHAhpm8fPvLjNOtcCDwpBoYhgmqbmt7493a+orv3tHlHiGFwM7Pf3gWGwMKYfKdPvaWVqSMyZrGhaz/uHaTLazbwdgEbJej+nlrRroodAwDDGekMtrtydnNu3Y5QsAAPCFl5NnOASGxmDTs9IZ7q6+1alxVnH9sJj1KcYPBbo5VRMyDrdGEIyIwxFyDyFig8JJwObZ7eKDdfFGIdHJsODok1QGxDeCikYM8lmD6yXX/qfL1gWkpXRefho9sygk+JiPfwgKS8bicwSKWWqhEHa0yAVKdnL1Q2PT3H3haYmUw4dxCfBD/dy6QSGzr7X6o/hgHgAvP7uGhGNkF8bH5Ox18YAi4ly9YEhMquPxWnK+GvgSEovPjohKgwbHJ8WS4uNoYT6eFu76C2a0kus66bRGPKkUTGtEM1rJtEY8q5WMShu2nNzPrwH4eVRRAUXf2EgmVXp5+PtA0QQSPRCOJmSUHgg4ts89EEek7/cOhSDw2GgiNb0Csm9/b+OZISHrhr59cUDrMKsdZvX7RLs4sI5boMLeyd32Tctomkq6TdKSnlIWisSi8QXwiNRMWgsUmegdiIEiE8OiMoiZ5amU6qozvNN0yQFnDz2z2Cpm3zR23r6inFQJ7J3cSZVgoos30cUbV3Anu/hX25v+FVAwCnSsYpuIXX9GFIHEBhyJz82roxULC09xT9KayWRGRsZZHKE0EJHk6Y0CAHcAALS1p0cl7HUuleCjYzBvb5GgkNLTXHFHJxRzZAmEUgqFiULn+kPjvnEN2vnVwd073fcAu7z2OPm5Oh/x3JeMhFZlJI53nPu+vbGnuWJro31uXcvL8+yyptVx0zyo2u/sAQCACwDA3N1SwmDsLPyIsMZhlM0oeDfUEgcov2dSvLKbXo6ZbNKGLYrPGwJwgPK3P9rWni2sLdjvdrddU/GX+1Svx3te2IxPrYZ3N22PLNprCt41leAn3fnlvosvx0xPhnQjbXX/02h/A4R7QB2E/YK6AAAAAElFTkSuQmCC" nextheight="1024" nextwidth="1820" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>A few days ago, a startup by the name of Ritualnet hit the scene with a monster raise – 25 million dollars at a low 9 figure valuation. We’ve already seen a few of these startups focused on coprocessing but I think it’s good to take a hard look at this coprocessing usecase – to see if there’s any meat on the bone here.</p><h2>Why Coprocess?</h2><p>One of the key issues with the EVM is twofold – it’s constrained by the goal to make this VM as decentralized (and thus lightweight) as possible, and the overhead of running things through the EVM itself.</p><p>On this latter point, consider an operation like addition of two numbers.</p><p>In the EVM, this is 4 operations, pushing two numbers on the stack, adding, and storing the result – contrast this to say the WASM VM where it’s just 1 operation to do this. In addition, there’s much more work done to speed up and ensure safety around say cryptography libraries in C as opposed to the Solidity implementation.</p><p>Add this up over an entire program execution, and it becomes meaningful overhead – not to mention the gas constraints involved over running in a decentralized setting.</p><p>As a fun fact, the computation involved with WASM is so much lower that Arbitrum stylus offers pricing for WASM operation in ‘ink’, 1/1000th of a wei, because wei is too big to represent the true cost of operation for these individual operations.</p><p>This is an obvious constraint for apps trying to run in this compute environment – so this is where coprocessors step in.</p><h2>Coprocessors:</h2><p>Coprocessors allow for external compute to be brought into EVM.</p><p>Arguably we have coprocessors already, but in a different name – keepers.</p><p>Keepers are good for routine upkeep operations for dapps</p><ul><li><p>Some of these keepers are for upkeep operations of public functions (e.g. poke contract)</p></li><li><p>Some are for more trusted usecases (e.g. peg maintenance)</p></li></ul><p>It’s this latter usecase that coprocessors try to focus on – providing guarantees for this trusted execution.</p><p>zk coprocessors focus on this need by allowing for provability of this compute – before the computation can be executed.</p><h2>Areas of interest</h2><p>One area that asynchronous computation shines the most is in governance.</p><p>The baseline here is not a synchronous operation, but rather a long multiday governance process. While zk can’t replicate a protocol upgrade, for routine parameter changes like LTVs or interest rate changes where this can be automated – this is particularly interesting.</p><p>Another big usecase is that of allowing for trustless snapshots. Tokens that want to enable onchain governance need to have governance built right in from the get-go – that is, having the ability to determine balances at a specific timestamp so that this can’t be manipulated via flashloans or any other mechanism.</p><p>As we start moving into directions where we see more experimentation enabled by things like Morpho-Blue, or Uniswap v4&nbsp;– we’ll definitely see more room for this to grow.</p><h2>Issues</h2><h3>Overhead</h3><p>One of the key issues with the zk (which is by far the most popular approach) is that zk is expensive as overhead. There’s great work being done to make it more easier to use for devs by abstracting the complexity of circuits, but one of the pain points is around state access.</p><p>Unlike Gelato or some existing zk solutions, zk requires proof around all operations, including data retrieval from the chain itself. The current setup for Risc 0 and some others is that all the data used for the operation get passed directly to the coprocessor during the onchain job call.</p><p>Axiom, one of the leaders in zk-coprocessing, stands out in that they allow for state reads in the proofs themselves, as it also brings in the ability to read historical slots – e.g. the price of ETH USDC on the Uniswap v3 TWAP 3 days ago.</p><p>Hyperoracles adopts a similar solution, but they adopt a subgraph based solution, where dapps can pull from this zk subgraph instead, saving compute at runtime since it comes preprocessed.</p><h3>Asynchonicity</h3><p>The biggest issue at the end is the asynchronicity.</p><p>Dapps (especially defi) thrive on having synchronous &nbsp;– it’s what allows atomic arb, or flashloans exist. The need to add asynchronous transactions not only adds to the cost of running dapps (and additional questions around monetization) – but also around how to create dapps that are built with asynchronicity in mind.</p><p>Perp based protocols (e.g. GMX, Kwenta, etc) are probably the biggest and best example of defi dapps that are asynchronous – but this is out of necessity due to the impact of oracle running. In other words if they could do without asynchronicity – they would.</p><h2>Conclusion:</h2><p>The hope is that in tapping into this niche of coprocessing opens up a wide design space to create novel protocols that can harness more computation to be either more expressive or increase the safety by adding key checks.</p><p>I’m sure they will – but there are some fundamental issues around data access, and synchronicity limit the usecases, and the real test will be whether buidlers actually use these coprocessors or just fallback to centralized solutions.</p>]]></content:encoded>
            <author>william@newsletter.paragraph.com (William)</author>
        </item>
        <item>
            <title><![CDATA[It’s all a Yield Trick? ]]></title>
            <link>https://paragraph.com/@william/its-all-a-yield-trick</link>
            <guid>YbtHr52VNWfUjG6kJkwI</guid>
            <pubDate>Thu, 09 Nov 2023 22:22:17 GMT</pubDate>
            <description><![CDATA[A question that I’m reminded of during the bull run 2020-2021 DeFi bull run was “how are the yields so high?”The simple answer was that the governanc...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ea5e44050f4e132681785e639bcdf832.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAASCAIAAAC1qksFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFVUlEQVR4nIWUXUxTdxjG39Ovc07tKaX067Slhfb0i0LtF21pi0DB0gqIAk5AsB0oIKBQHSoKAvKlixsouunmxGEm2gzdBnHiwMUJY8FpuHBmWcxMXDKTLd6Ybcl241L1wu0Ckjf//K/eX57nffIAjsnEpH4VU8LnG3t7T+TlbiJwGc7RhTcEbQYnC00UiQyUxsMXWZ2pdrvBgmEqudSmSjRxJS6GLA8wO+BWwI0IrqPhGhpOIZjmxefVAICoInJ0TUEIAJFIbBLSTJLmBLG9MuBPURmFpPni5ejnU9duzMxG9g6yUTJRoubHazi4nM1Nyfduo3HdgK1eDoAxSLnardT72g8O3J67dW/p3o8/3b//w9KVyWlKl+NwFz54cPfKxPjXN6emv5oFkPEJhYm0AigB1AaFF/B0wM3LAZJJGYrwHa6i58+fzc/PLC7ORaPRG9PX/vzj17lv5xEmVb+zY+T0+Y/HJ3LyaxTqTIKtZoAsVa8P+oxAkwHbsQKAkhslwhStIW9hYX5xcf7pb4+ePn185878418eDp86z2CpMSwJQExjG0mZu+3gkUDpLqHSX5NLjO5FCY4asJUAEqHWorHzCJU0yb0lvGdf59C2xs7mSNfaYIgQOwTx6gS+ATA9xjURPItjTdXYldn9gxdIiT2eUAKq/59FCEa9vh3BKGAyxRyOikfoRGIbluAMbe8Qki4AQprkSrHmo0QaW+RRpm3Sp1e07j42eOzSqdHPhj+ZVdurgKF1mZxAvFSQiuB6OltLw7Wvb48pwDGJhE8KpN62/rG2/rFQ60BSohOA4omtTEEGkAUgK+FSZZ61Owz2rRpTVdPed2taR+JlaznclMx0F43rBJYJWDpgqoCuAIYCWCoEVQMz6ZUCHJWwUanI3tD54ezZ8eubqtuLSxvU5s0iTQmoq0HXAFQ9yMNAlkFcINzYP/rpjCq1AkDHE6SiuAZQOy7O1prKzc5wqr1cbShS6wu1qRud3loFFYiRRAKKRZio9B0HDp8tquzffeB0sKCtrnEou6KPltmR0Hyu4J2rrp7LjOAAYm0dPh19f3QCS8hD7HWcnF2rOAZgpyNcJ1vo5ooz4kkXT+wgBFYO38InM9A4Y0xBRX6m1ZiJkf7ScF/fexdz/I0gLwNNHT2nq66z+szS3LkHj9669MH5uTl9ZDS5sKe9f4wuLITEElAWx/HSYjHFVscsYlHAUr2cFxbF3tgNeNxkttAOmF3nrp+5fbu0aj+oQzRPZ8nwucKB486TC+ETl0cO1303OXz91lW0ciirtE+qq1SKvAjXy4x3AJb+sipor2L6n4kpYKEytsIPAp/SUh2dnHUHW0Ebpvt7qcGpkpaBsuNfNlyc7Dsa6TlR0xSdFuwZF+e2q8xbeHyvvrSLdDcAwwLsZbuIhSrYUh8QWTZfU0fvmTjtZjA20DLbEdvO0Pr66khHQvei9+h4S9ebaYcm5I0fxW4uXY9Ls2T2EK4sApZtBQCGJ6mobEac15vfFNiwW6B9A9Q19JwuEBdlr6/dP73QPvtz9xffb410iwOHGMEjiCMCZJFU4UF5LkLoXLkqGCxlcf46jTaHnuAlxNnAywZVFWLbQ8vcj5ibWy/c+f2fZ0/+/mvLyDf03F6aZx/owjpDMJAV3FZRIVauWbmuMUzBJrRxQos/u2hrWTlT5EuxbwR9LZhb6b4uwt9jrhvNaBlnFg+BZVcsYDyfTud/ePPIk7snHeZcQNNXsIiNK1dxkklx2uTJ5qWpbi3lZYmyUNk6kG8AXQhMjWDYAZpaSC5HpX5S7oknvTZz4MKxlujb2z0mZyxFywL+BcKweUJQTVryAAAAAElFTkSuQmCC" nextheight="2505" nextwidth="4376" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>A question that I’m reminded of during the bull run 2020-2021 DeFi bull run was “how are the yields so high?”</p><p>The simple answer was that the governance tokens, or psuedo equity were what allowed for people to take ownership of protocols and get them at a significant discount.</p><p>The mythical death pool is the best example – the pool with the highest APY was the one with the governance token paired with an asset like ETH. The challenge here being that despite the high APY, the principal was decreasing significantly in value.</p><p><br>Underlying the story is that a yield trick – where people were bamboozled into comparing debt like returns to the volatility of an equity like investment.</p><p>This happens on a <em>much</em> smaller scale in TradFi – where boomer retail buys Exxon or other large cap high-dividend stocks for the stable returns that they provide, not realizing that the overall moves in the underlying equity move the needle much more than whatever meager dividend income there can be from a stock.</p><p>The key issue underlying this is that it’s easy grok the return profile of a bond (look at the coupon, default risk, etc), and stocks&nbsp;– but DeFi sits at a weird inbetween.</p><p>There’s reduced principal risk (if you don’t consider hacks), but there’s more equity like exposure.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/089aa6d8aa4d93c6437a4c279399e7e1.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAIAAABj86gYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEFklEQVR4nK1Vb0wbZRi/r3x23wixaNLEJW7LzBwMo6AfmDJjILJ9MHzQiHAJotlG2U6sRVyrtIW1MDj+lOsfsOQoramFjhEcFppurT16pNDNHWX0SOaGKW3lzx2Re831ulKoSmb85c3lveeePL/neX7v+xwEkmAYRnimN+B/ApTepYMmWVhhAf6Vf2YiM5tDE0oRCB4URREEkTRwQmgmK3qGP+9zaLn7CAiCmJ7+KZHYcDpds7P+p5/Y/TTc06xZr98TXY9m9vYQgoVg0OEYg2FpeQVc8uYHOO7MJkjHmpqZvNb7pdHSn9XePfAEmS8PHtyvq0NgWIqiZgRRw7A0I19mh2V3WEEV3tI/3OVbcmE2NB6PZwuTxp7IAIBI5OEbxZVyebdMppXJtDAsXVtLdUBw2OVSfPF4HLP1zC17RqdMRMD3L13iK6CTePJkbWJi/NSrZQKBStUPw1KSvAcAt8txfyQSNEXtsOwux2u7GAp+P64L0r/o7WggyKslRPd4PPkikUj0fFHR6aNHX+IrYBgmJycHSuLEiWOvnCqTybQIopbLu6uqLnm98wCA+yTZK5fb9PoBpfJRJAIAIBfIXotmPuIzjvdMzdxKE8Ri6wgiO3v2fEHh2wjSDAAHxeNxIToEQaWlpUWvVapU/YODdhx3llfAXu88y2z2yuVBny8UCHgmJ03XrycVvmV3D6/+Ti2uEqM3zQdaFA7TTqcrkdhInSKxWJybm5svEkEQVHbuo8rKGoGvvAIem3D97PjRMTT0KBKJRaM0RZlv3FjwExNuR/9oh+BW1/TJ5tbm/qvHcdyfKZEzlSHJe+UVMIKoX3jx5Jkz71xuUDQ1tVmxvnAohLa3QxDkm52dc8+au1Cz0+S8M1r3RfXFrz/V27ut4zgAYHt7K/s+8hWkaWdmvBcu1Gu1RhQ1d3aaWhRoyekym17PJz4wUFpc7He76aWwQnKpA7s2H/EtrvoXVwlyxdtr0bg80wCAkRF8aMhksViUSiWGYQfvQSi0BMNSrdbYquxr6zBcbVBUvlU+PTEdoX6lKSoWjYZDIXopbNJ1tbdKAg+9c8t35pY95IqXXPHq7ejN22N5eXnHjx0vLCg88twRsVic0kCYbtvbWzbb+Ll3q2tqr55/v/r1kyXFLxc01ks+roI7Ve0jej2/MKxF2qhSNbcgn9d8+B5qbMUnDcL6wTXcqmvWWbsdt20+8u4Gwyu8RyCcMKVSVVtbbzCYkc8uyhokBt2ADu3r6eiUN8ut+IgVxzVt6k6t2qjrM2I6zbeKlisSwyCWXsMWM243D1qxb9RffadRPH7828FZFIutC9Zs5OfnSxobwTNiT+SMQ8ZmzxOGYQiCoGl6h/37r/+EgxWkrQemSuawfNYiDiHItPy3v+lfToQo5gclM5wAAAAASUVORK5CYII=" nextheight="708" nextwidth="1126" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">memecoins are off the charts in terms of risk</figcaption></figure><p>Broadening this out – many of the largest protocols within DeFi someway or the other can be explained through this lens:</p><ul><li><p>Uniswap has the most classic story – while the UI shows triple or double digit APYs LPing on various pairs, whether its a combination of LVR/IL or LPing on shitcoins&nbsp;– facing significant loss on principal when all said and done.</p><ul><li><p>Not to say that LP’ing has never been profitable (being the counterparty to so much retail flow), but the average LP is a net loser all things considered.</p></li><li><p>I think the Uniswap story in particular is very illuminating – these tricks predate token based incentives, and that token incentives are very much an accelerant/integral to these tricks</p></li></ul></li><li><p>Alchemix is classic – people turning what equates to a yield stripping protocol and completely throwing duration risk out of the window – to which the ALCX holders have paid dearly.</p></li><li><p>Olympus was self explanatory – thousand percent APYs per rebase, only for people to figure out the rebase was no different than a large stock split for the majority who were staked</p></li><li><p>Luna is probably the epitome of a misunderstanding of APYs – people farming 20% APYs to the tune of billions, without realizing that they <em>were</em> the yield.</p></li><li><p>Ribbon and other structured products market a high APY for staking into a Ribbon vault – while people didn't realize on the other end they were getting slaughtered selling vol to marketmakers and losing their shirts on principal.</p></li><li><p>Bunni, Velocimeter and others doing options tokens</p><ul><li><p>this is almost the most naked version of this yield trick, where the use of options tokens allows protocols to increase the APY in the UI without actually meaningfully increasing inflation – simply by the virtue that unlike selling tokens outright, not all of the options tokens will be redeemed.</p></li></ul></li></ul><p>The list goes on and on…</p><p><strong>Conclusion:</strong></p><p>Rounding it out, this is not an indictment of DeFi and the innovations in particular. I do think that it’s a critical way to think about DeFi and keep an open mind of the mechanisms that take. These yield tricks are an integral part of the DeFi story and I don’t think taking these tricks out will be effective as a GTM strategy in the near to medium future. Each large stepchange in the DeFi meta can be explained using a misunderstanding of yield via these yield tricks.</p><p>I also think that part of the reason that many of these protocols have had many forks, and consequently have faded out so quickly – mainly because the game theory of the yield trick gets figured out especially as people try successive iterations of this – in other words people stop participating.</p><p>Some positive areas of directions that have resulted:</p><ul><li><p>There’s now plenty of people thinking about how to reduce LVR, and Uniswap v4 is a marvel of engineering that allows really cool mechanisms to be built&nbsp;to better service liquidity.</p></li><li><p>Bond Protocol and Baseline protocol build off of the initial issues around Olympus to create unique capital bootstrapping techniques for protocols.</p></li><li><p>Ribbon is using their firehose of option vaults to drive retail volume to their L2 derivatives exchange.</p></li></ul><p>These yield games are worth playing because of the new directions that we can explore, but I do like to think we’ve almost come full circle to TradFi, which has a similar practice of selling complex structured products in the name of easy yield to HNWI and making boatloads of money. </p><p>Stay safe out there, especially from yield tricks :)</p>]]></content:encoded>
            <author>william@newsletter.paragraph.com (William)</author>
            <category>yield trick</category>
        </item>
        <item>
            <title><![CDATA[🏎️ The Velocity of Crypto]]></title>
            <link>https://paragraph.com/@william/🏎️-the-velocity-of-crypto</link>
            <guid>14nI17mevGNNeiLW0EaX</guid>
            <pubDate>Mon, 23 Oct 2023 08:33:14 GMT</pubDate>
            <description><![CDATA[One of the crypto’s most powerful attributes is what I call ‘velocity’. A social network scales it’s value exponentially as new users join, a phenomeno...]]></description>
            <content:encoded><![CDATA[<p>One of the crypto’s most powerful attributes is what I call ‘velocity’.</p><p style="text-align: start">A social network scales it’s value exponentially as new users join, a phenomenon known as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out dont-break-out" href="https://en.wikipedia.org/wiki/Metcalfe%27s_law"><u>Metcalfe’s law</u></a>. We can see a similar multiplicative rule with this idea of ‘velocity’ in crypto.</p><p style="text-align: start">Now the concept of velocity and money isn’t new.</p><p style="text-align: start">In a simple view of macroeconomics, the velocity of money refers to the relationship between bank reserve ratios and the amount of circulating money – since credit acts as a multiplier on the M1 (Fed 'brrr' money) to create M2 (Bank deposits, bonds) – money in the real economy.</p><p style="text-align: start">If there is $100 in M1 and the reserve ratio is 20%, the total funds that can be lent out is $80, which can be deposited, lent out again, etc… converging to a point where the M2 is $500 ($100 in M1 + $400 in credit)</p><p style="text-align: start">There are various other factors that make this more complex such as consumer confidence – but it’s a good lens to view how we can have more <em>value</em> in a system by pulling a lever without putting more money in the form of the money supply.</p><p style="text-align: start">However, with the programmable nature of crypto and the ability to do seigniorage (aka mint new money), this opens up different ways for how this velocity can change.</p><p style="text-align: start">One of the key insights about this velocity is that most successful products in crypto generally have a high velocity, pared with intrinsic PMF.</p><p style="text-align: start">This is a little abstract, so I'll try to break it down:</p><p style="text-align: start"><strong>FriendTech:</strong></p><p style="text-align: start">Friendtech works by allowing users to buy and sell keys against a bonding curve. The velocity of this system is high since guaranteed liquidity ensures that there is less loss external to the system.</p><p style="text-align: start">The only fees in place are a 5% fee for the creator and a 5% fee for the platform. While liquidity isn’t lent out like it is with the economics example, this 10% total fee limits velocity since value is now leaking externally.</p><p style="text-align: start">However, velocity is high otherwise, since participants are rolling their gains into other FT keys, or at least keeping their keys – keeping velocity high. The points system recognizes this and rewards buying of keys to keep the velocity high.</p><p style="text-align: start">To illustrate this point further, suppose there was a competitor called CoinTech that was entirely based on coins and didn’t use a bonding curve and used AMM liquidity instead</p><p style="text-align: start">The velocity on this system is much lower, as even though the net trading fees might be much smaller, things like dumping, premine, sniping, heavily reduce the velocity as value flows out of the system&nbsp;– reducing the velocity of money and the success of the overall system.</p><p style="text-align: start">Pound for pound, the organic usage of both could be the same, but since FT has a much higher velocity – it’s able to succeed.</p><p style="text-align: start"><strong>BTC (and ETH) vs Altcoins</strong></p><p style="text-align: start">BTC and ETH both have strong forms of PMF&nbsp;– BTC as an SoV, and ETH as the gas token.</p><p style="text-align: start">Both have very high velocity – BTC often has the deepest liquidity and greatest amount of institutional integrations&nbsp;– and ETH much the same, with an entire ecosystem of LSDs around unlocking value for ETH.</p><p style="text-align: start">While many altcoins have low PMF and low velocity, TRX, the native token of Tron is a great example of a low velocity ecosystem but a good PMF.</p><p style="text-align: start">The PMF for Tron is strong – we’ve seen record amounts of usage from all the transactions on the platform and fees that have even surpassed Ethereum as of late. </p><p style="text-align: start">However, a centralized supply with an extractive core team, along with significantly weaker liquidity and adoption mean that the <em>velocity</em> is much lower. No one is staking or building on Tron.</p><p style="text-align: start"><strong>Perpetuals vs Options</strong></p><p style="text-align: start">The PMF for perpetuals is pretty obvious: being able to take extreme leverage on a small account is really attractive&nbsp;– especially for retail, and hedge funds looking for deep liquidity.</p><p style="text-align: start">The velocity is also very high – the net cost of creating a new contract is low, and the UX for perps is very good, and participants often continue rolling their gains into buying more perps.</p><p style="text-align: start">The PMF for Options is also strong: Miners and other institutional participants want to hedge their exposure.</p><p style="text-align: start">The velocity is significantly lower compared to perps – the longer term nature of these contracts, lack of retail, and overall lower degeneracy makes for much lower velocity for options.</p><p style="text-align: start"><strong>Conclusion:</strong></p><p style="text-align: start">Overall, viewing success as a factor of velocity is helpful as a frame of reference for evaluating why or what makes a crypto product successful.</p><p style="text-align: start">Specifically,</p><ul><li><p>pinning down where the intrinsic PMF is from</p><ul><li><p>Are people genuinely interested in chatting to influencers in a more private setting? – in the case of FT</p></li></ul></li><li><p>figuring out factors that influence velocity&nbsp;– and how the velocity is tied to the PMF</p><ul><li><p>A points system in the case of FT is a key driver of velocity as it feeds into the intrinsic PMF - buying keys encourages people to talk to others</p></li><li><p>Social pressure around (3,3) where users don’t sell each others keys increases the wealth effect – increasing velocity</p></li><li><p>Taxes decrease velocity – but enough of the proceeds are being rolled back into buying more keys – offsetting this change in velocity.</p></li></ul></li></ul><p></p>]]></content:encoded>
            <author>william@newsletter.paragraph.com (William)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/6629c43a4db48dac776af12077aa5f0d.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Welcome to Paragraph!]]></title>
            <link>https://paragraph.com/@william/welcome-to-paragraph</link>
            <guid>0ZtAP7dt8F5zSk7LOuWo</guid>
            <pubDate>Mon, 03 Oct 2022 22:56:16 GMT</pubDate>
            <description><![CDATA[This blogpost teaches you everything you need to know about getting started with Paragraph.]]></description>
            <author>william@newsletter.paragraph.com (William)</author>
            <category>tutorial</category>
        </item>
    </channel>
</rss>