<?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>Kames Geraghty</title>
        <link>https://paragraph.com/@kames-geraghty</link>
        <description>Web3 Hacker | CTO District Labs</description>
        <lastBuildDate>Sat, 18 Jul 2026 01:14:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Kames Geraghty</title>
            <url>https://storage.googleapis.com/papyrus_images/a696119b196952052c9757cf12e0cdd1a55dae5c89f881e94b0720eac98f8cd8.jpg</url>
            <link>https://paragraph.com/@kames-geraghty</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Intent Engines - The Web 3.0  Search Engine Equivalent?]]></title>
            <link>https://paragraph.com/@kames-geraghty/intent-engines-the-web-3-0-search-engine-equivalent</link>
            <guid>Zkb8khnFsU8fCbQdJdcC</guid>
            <pubDate>Sun, 07 Jan 2024 20:40:50 GMT</pubDate>
            <description><![CDATA[Blockchain APIs are open and accessible by default - spread across execution environments and smart contract addresses. And as a result users today are met with an increasing amount of choices and decision trees in Web3. But more choice is not always a good thing. Choice burdens users with unnecessary responsibility. Users must discover, analyze and contextualize all of these potential choices and decision trees. It’s a high-cost for most people. One that I suspect most people don’t want to p...]]></description>
            <content:encoded><![CDATA[<p>Blockchain APIs are open and accessible by default - spread across execution environments and smart contract addresses. And as a result users today are met with an increasing amount of choices and decision trees in Web3.</p><p><em>But more choice is not always a good thing.</em></p><p><strong>Choice burdens users with unnecessary responsibility.</strong></p><p>Users must discover, analyze and contextualize all of these potential choices and decision trees. <strong>It’s a high-cost for most people.</strong> One that I suspect most people don’t want to pay - especially considering it’s a job best suited for machines.</p><p>So how can we solve this problem? Let’s start by looking into the past for answers.</p><p>Web 1.0 was defined by search engines.</p><p>Web 2.0 was supercharged by social media.</p><p>Both underpinned by indexing and graphing i.e. mapping of the digital world.</p><p><em>So why would Web 3.0 be any different?</em></p><p>But instead of indexing <strong>information</strong> and graphing <strong>relationships</strong>….</p><p>We should be focused on contextualizing <strong>actions</strong>.</p><h2 id="h-discoverability" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Discoverability</h2><p>As stated previously blockchain APIs (smart contracts) are open and accessible by default - available 24/7 and ready to be acted on.</p><p>But in many regards the &quot;choice&quot; of what API to use depending on what outcome is desired has already been made. In a finite system there is <strong><em>best path</em></strong> or at the very least a handful of best paths that the user will ultimately choose from.</p><p>The difficult part is actually finding, contextualizing and than executing the right blockchain actions. And for most users <strong>finding</strong> and <strong>contextualizing</strong> actions is not the important part. <strong><em>It&apos;s a means to an end.</em></strong></p><p>The critical part is the <strong>execution</strong>. <em>The authorization of an action</em>.</p><p>Discovery is no longer a job for humans. It&apos;s a job best suited for algorithms, computers and machine learning. Systems that can interpret &quot;intents&quot; and recommend a constrained collection of actions.</p><p>Users want outcomes. <strong><em>Not choices.</em></strong></p><h1 id="h-contextualizing-the-world-of-web3" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Contextualizing the World of Web3</h1><p>Solving the discoverability (and potentially security) challenges of Web3 ultimately requires mapping, indexing and contextualizing onchain APIs.</p><p>Without awareness of what exists and how it functions, it&apos;s arguably not possible to scale the Web3 user experience - we can’t expect users of tomorrow to behave like the early adopters of today. In other words scouring telegram channels, scrolling through X for hours and staying up-to-date with niche podcasts is not the right approach to onboarding millions of users into Web 3.0.</p><p>If the successes of Web 1.0 taught us anything though it’s that users want simple.</p><p>They don’t want to be inundated with choices and information. Users want answers to their questions. <strong><em>And they want it now.</em></strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8625d46dddbc3416c34426ece544766c643da2cb085ce3089d96e31dd85b9f59.png" alt="Web 1.0 was defined by search engines. Will the Web 3.0 era be defined by intent engines?" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Web 1.0 was defined by search engines. Will the Web 3.0 era be defined by intent engines?</figcaption></figure><p>But Web 3.0 is different - users are not looking for information.</p><p>Users are looking to take <strong>action</strong> in the digital world.</p><p>It’s not about finding the best restaurant or learning about a hot new topic.</p><p>Web 3.0 is about updating bits and bytes. <strong>Taking action digitally.</strong></p><h2 id="h-intent-engines" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Intent Engines</h2><p>Similar to the &quot;Web 1.0 Era of the Internet&quot; where data required indexing to reach a critical mass, so too does Web 3.0, but instead of a cataloging the world’s information in search engines, we need intent engines to contextualize actions.</p><p>But what exactly is an intent engine?</p><h3 id="h-decision-trees" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Decision Trees</h3><p>Blockchains are &quot;finite&quot; space systems.</p><p>An environment with measurable objects and knowable properties i.e. state mutators. They have no immediate side-effects outside of the “digital world” in which they live i.e. it’s a self-contained state machine.</p><p>And the objects in this finite space are inherently composable and group-able in <strong>sets.</strong> For the scientifically minded it’s perhaps even a perfect environment to apply set theory or more specifically <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Naive_set_theory">informal/naive set theory</a>.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Set_theory">https://en.wikipedia.org/wiki/Set_theory</a></p><p>Because of this unique blockchain properties, all potential actions can be cataloged and decision trees defined. Which is to say given State A an optimal route can be created to reach State Z.</p><p><em>But what does this look like in practice?</em><strong>.</strong></p><p>For simplicity let’s use the USDC object as the starting point. A popular stablecoin.</p><p>There is a finite amount of “actions” that can be taken with USDC, especially when we start to add constraints. So let’s constrain the USDC decision tree to only objects that can be contained within a “USDC Money Market” set. In other words, all the protocol objects should have similar features: <em>depositing, withdrawing and yield generation.</em></p><p>For now our “USDC Money Market” set will be limited to Compound, Aave and Morpho on a single chain. Each offering unique “yield rates” for USDC.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f6a5c04edc5c17a7c16f774e4eca87159ebf044e48c5f9ade0ac0821d7466c9d.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>And quickly we can see their is an “optimal” path if you consider all protocols equal. Or at-least similar enough, where it’s worthwhile to draw comparisons between them.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0258cb87dd25903834222511faa0e4729ef46389fca0602d449cfe61fe8b4fcb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><em>So what?</em></p><p>This information can already be discovered in applications like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://defillama.com/">DeFi Llama</a> or many of the other yield aggregators that exist in the Web3 space.</p><p>And you’re correct in saying that, but that information is constructed in a way for humans to consume, which is exactly what we want to avoid. It puts the onus on the user to regularly check those interfaces and afterwards craft the necessary transactions to enter the new position, which might include exiting another position and thus interacting with multiple interfaces -- <em>a</em> <em>far from an ideal user experience.</em></p><p>Instead of requiring users individually traversing decision trees, what we want is machines traversing these decisions trees with the users “intent” and “constraints” in mind and recommending actions.</p><p><strong>Surfacing the best opportunities at the click of a button.</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/57755ff50d3cb4b0b4b0cf46a80f18d7f55ab3cfb0add3ac9064abbba0f7834f.png" alt="Using DeFi Llama for discovery vs using machines for discovery" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Using DeFi Llama for discovery vs using machines for discovery</figcaption></figure><p>I have mad ❤️ for applications like 🦙 DeFi Llama.</p><p>They make being a power user in the DeFi space even possible -- all for free!</p><p>Without these type of applications, the blockchain would be an even harder and more treacherous place to navigate.</p><p>But I do question how scalable this experience is for “regular” users?</p><ul><li><p>How many people will regularly check these “discovery” applications?</p></li><li><p>What are the chances they run comprehensive cost and risk analysis?</p></li><li><p>Is it even possible for them to contextualize and reason about all the choices?</p></li></ul><p>I think the answer to those question is “never” and “no” - most users don’t have the desire to uncover new opportunities <strong><em>and</em></strong> also take the time to enter those positions.</p><p><strong>It’s too much.</strong> And besides, it’s a better job for 🤖 machines anyways.</p><h1 id="h-action-snapshots" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Action Snapshots</h1><p>Perhaps by now I’ve sold you on the idea of “Intent Engines” and the need for a machine readable standard for traversing decision trees in the world of Web3.</p><p><strong>But we still have a problem.</strong></p><p>How do we get users from Point A to Point Z?</p><p>Remember a few moments ago where I was like <em>“Yeahhh, science bitch!”</em> and talked about blockchains being a finite space system with measurable objects and knowable properties?</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/73e8cf5da783119b38577219beed54b9f1c0137b435f852ff30ac4b4c99cfab7.png" alt="Yeahhh, science bitch!" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Yeahhh, science bitch!</figcaption></figure><p>While that’s important.</p><p>So let’s break that down a bit before building it back up into something useful.</p><ul><li><p>Blockchains are a finite space system i.e everything within them is measurable.</p></li><li><p>Smart contracts (and the related state) are the objects occupying that space.</p></li><li><p>Functions on these smart contracts are the knowable properties.</p></li></ul><p>As an aside, but worth mentioning is this finite space system is a uni-directional state machine. In other words no <em>takesies-backsies</em>. <strong>We have a single agreed upon history.</strong></p><p><em>Soooo, what can take away from this?</em></p><p>All decision trees in this given “finite” space system can be observed and “actions” can be encoded/dispatched to predictably and reliably update these objects.</p><p>O.K. enough already, I hear you thinking. That’s just a bunch of technical mumbo jumbo.</p><p>What point am I really trying to make?</p><p>It’s possible to build a <em>“crypto super app”</em> that takes advantage of these properties and verticalizes the user experience. To drastically reduce the amount of friction when interacting with blockchain protocols - <strong>specifically Open Finance</strong>.</p><p>Examples are good, so let’s start there.</p><p>Let’s assume a user has USDC deposited in Aave, but a better position is in Morpho.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/188f8f2103f96dae967b04b6c591b02535a31d1822a805faf8e7a179e1a09328.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>As of today, what’s required for users to make this switch between protocols?</p><ol><li><p>Discover the opportunity by visiting a DeFi yield dashboard.</p></li><li><p>Run a cost analysis in terms of gas and expected deposit length.</p></li><li><p>Go to the Aave application interface and withdraw the funds.</p></li><li><p>Wait for the transaction to be confirmed</p></li><li><p>Possibly bridge the USDC to a different chain with the higher yield opportunity.</p></li><li><p>Wait for the funds to arrive on the new chain.</p></li><li><p>Go to the Morpho application interface and deposit the funds.</p></li></ol><p>In short, it’s a bad user experience and to be quite honest not something you would expect when interacting with a “world computer” in 2024- it’s clunky. Fragmented.</p><p>We want simple. Elegant.</p><p><strong>An interface where only the most important decisions are shown to users.</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e8c73a00aed7952d1a7569074a1212ee1bb0a5c438e0cee6dd693940dd200ef6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Everything else (<em>unless requested</em>) is unimportant.</p><h1 id="h-intent-engine-building-blocks" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Intent Engine Building Blocks</h1><p>At the core of an &quot;Intent Engines&quot; is machine-readable language for traversing Web3 decision trees and generating action snapshots. A simple, but effective method for mapping blockchains, smart contracts and functions, in a way that can automatically generate user interfaces and help guide users towards an optimal path.</p><p>Here is very low fidelity, pseudo-code example of what a “Money Market Set” ready to be consumed by an Intent Engine could look like.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gist.github.com/kamescg/b1981cca0e5057c6c3a685069a498494">https://gist.github.com/kamescg/b1981cca0e5057c6c3a685069a498494</a></p><p>Not all too dissimilar from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Uniswap/token-lists">Uniswap Token Lists</a>.</p><p>The set includes Aave and Morpho objects, which contain instructions for how to retrieve <code>data</code> related to the objects, and how to take <code>action</code> on the objects.</p><p>Let’s talk about those objects.</p><h3 id="h-blockchain-object-and-required-fields" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Blockchain Object &amp; Required Fields</h3><p>What’s required to add a blockchain object to a set?</p><p>First let’s identify what we need to automatically generate action snapshots.</p><ul><li><p>We need to observe past and current state about the object i.e. <code>data</code>.</p></li><li><p>We need to be able to interact with those objects i.e. <code>actions</code>.</p></li></ul><p>Pretty basic stuff, right?</p><p>We’re not going for complicated. <strong><em>We’re going for good.</em></strong></p><h3 id="h-data" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Data</h3><p>A blockchain object should contain a <code>data</code> field that list the various ways to request data about the object’s current and historical state.</p><p>For example a “money market” object will contain predictable metadata structures: apy, historical apy, utilization, tvl, volatility, etc…</p><pre data-type="codeBlock" text="&quot;data&quot;: [
  {
    &quot;type&quot;: &quot;apy-historical&quot;,
    &quot;source&quot;: &quot;api&quot;,
    &quot;action&quot;: &quot;read&quot;,
    &quot;description&quot;: &quot;Current APY for an asset.&quot;,
    &quot;url&quot;: &quot;https://.../$chainId/$token&quot;,
    &quot;inputs&quot;: [
      {
        &quot;name&quot;: &quot;chainId&quot;,
        &quot;type&quot;: &quot;number&quot;
      },
      {
        &quot;name&quot;: &quot;token&quot;,
        &quot;type&quot;: &quot;address&quot;
      }
    ]
  },
  {
    &quot;type&quot;: &quot;apy&quot;,
    &quot;source&quot;: &quot;onchain&quot;,
    &quot;description&quot;: &quot;Current APY for an asset.&quot;,
    &quot;chains&quot;: {
      &quot;1&quot;: &quot;0x0000000000000000000000000000000000000000&quot;,
      &quot;10&quot;: &quot;0x0000000000000000000000000000000000000000&quot;
    },
    &quot;functionSignature&quot;: &quot;apy(address)&quot;,
    &quot;inputs&quot;: [
      {
        &quot;name&quot;: &quot;asset&quot;,
        &quot;type&quot;: &quot;address&quot;
      }
    ]
  },
  {
    &quot;type&quot;: &quot;utilization&quot;,
    &quot;source&quot;: &quot;api&quot;,
    &quot;action&quot;: &quot;read&quot;,
    &quot;description&quot;: &quot;Current utilization rate for an asset.&quot;,
    &quot;chains&quot;: {
        &quot;1&quot;: &quot;0x0000000000000000000000000000000000000000&quot;,
        &quot;10&quot;: &quot;0x0000000000000000000000000000000000000000&quot;
      },
      &quot;functionSignature&quot;: &quot;utilization(address)&quot;,
      &quot;inputs&quot;: [
        {
          &quot;name&quot;: &quot;asset&quot;,
          &quot;type&quot;: &quot;address&quot;
        }
      ]
  }
],
"><code><span class="hljs-string">"data"</span>: [
  {
    <span class="hljs-string">"type"</span>: <span class="hljs-string">"apy-historical"</span>,
    <span class="hljs-string">"source"</span>: <span class="hljs-string">"api"</span>,
    <span class="hljs-string">"action"</span>: <span class="hljs-string">"read"</span>,
    <span class="hljs-string">"description"</span>: <span class="hljs-string">"Current APY for an asset."</span>,
    <span class="hljs-string">"url"</span>: <span class="hljs-string">"https://.../<span class="hljs-variable">$chainId</span>/<span class="hljs-variable">$token</span>"</span>,
    <span class="hljs-string">"inputs"</span>: [
      {
        <span class="hljs-string">"name"</span>: <span class="hljs-string">"chainId"</span>,
        <span class="hljs-string">"type"</span>: <span class="hljs-string">"number"</span>
      },
      {
        <span class="hljs-string">"name"</span>: <span class="hljs-string">"token"</span>,
        <span class="hljs-string">"type"</span>: <span class="hljs-string">"address"</span>
      }
    ]
  },
  {
    <span class="hljs-string">"type"</span>: <span class="hljs-string">"apy"</span>,
    <span class="hljs-string">"source"</span>: <span class="hljs-string">"onchain"</span>,
    <span class="hljs-string">"description"</span>: <span class="hljs-string">"Current APY for an asset."</span>,
    <span class="hljs-string">"chains"</span>: {
      <span class="hljs-string">"1"</span>: <span class="hljs-string">"0x0000000000000000000000000000000000000000"</span>,
      <span class="hljs-string">"10"</span>: <span class="hljs-string">"0x0000000000000000000000000000000000000000"</span>
    },
    <span class="hljs-string">"functionSignature"</span>: <span class="hljs-string">"apy(address)"</span>,
    <span class="hljs-string">"inputs"</span>: [
      {
        <span class="hljs-string">"name"</span>: <span class="hljs-string">"asset"</span>,
        <span class="hljs-string">"type"</span>: <span class="hljs-string">"address"</span>
      }
    ]
  },
  {
    <span class="hljs-string">"type"</span>: <span class="hljs-string">"utilization"</span>,
    <span class="hljs-string">"source"</span>: <span class="hljs-string">"api"</span>,
    <span class="hljs-string">"action"</span>: <span class="hljs-string">"read"</span>,
    <span class="hljs-string">"description"</span>: <span class="hljs-string">"Current utilization rate for an asset."</span>,
    <span class="hljs-string">"chains"</span>: {
        <span class="hljs-string">"1"</span>: <span class="hljs-string">"0x0000000000000000000000000000000000000000"</span>,
        <span class="hljs-string">"10"</span>: <span class="hljs-string">"0x0000000000000000000000000000000000000000"</span>
      },
      <span class="hljs-string">"functionSignature"</span>: <span class="hljs-string">"utilization(address)"</span>,
      <span class="hljs-string">"inputs"</span>: [
        {
          <span class="hljs-string">"name"</span>: <span class="hljs-string">"asset"</span>,
          <span class="hljs-string">"type"</span>: <span class="hljs-string">"address"</span>
        }
      ]
  }
],
</code></pre><p>And important to note is the object doesn’t care how this data is consumed (that’s a job for the Intent Engine and users constraints) but rather only the data is exposed in accordance/relation with the set it’s contained within.</p><p>In other words “Money Market” set objects will likely to contain different <code>data</code> fetching instruction say from “Liquidity Provision” set objects. Different sets of objects. Different data concerns. Different modeling requirements. Different decision trees.</p><h3 id="h-actions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Actions</h3><p>Once we’re able to observe the “state” of an object. <strong>It’s time to take action</strong>.</p><p>Thankfully that’s the easy part.</p><p>Every public smart contract contract function can be represented as an application binary interface a.k.a ABI object. Which as luck would have it, are instructions for how to interact with a blockchain object.</p><pre data-type="codeBlock" text="&quot;actions&quot;: [
  {
    &quot;type&quot;: &quot;exit&quot;,
    &quot;name&quot;: &quot;Withdraw&quot;,
    &quot;description&quot;: &quot;Withdraw tokens from the Aave money market.&quot;,
    &quot;chains&quot;: {
      &quot;1&quot;: &quot;0x0000000000000000000000000000000000000000&quot;,
      &quot;10&quot;: &quot;0x0000000000000000000000000000000000000000&quot;
    },
    &quot;functionSignature&quot;: &quot;withdraw(address,uint256)&quot;,
    &quot;inputs&quot;: [
      {
        &quot;name&quot;: &quot;asset&quot;,
        &quot;type&quot;: &quot;address&quot;
      },
      {
        &quot;name&quot;: &quot;amount&quot;,
        &quot;type&quot;: &quot;uint256&quot;
      }
    ],
    &quot;details&quot;: [
      {
        &quot;name&quot;: &quot;asset&quot;,
        &quot;label&quot;: &quot;Asset&quot;,
        &quot;description&quot;: &quot;The asset to be deposited&quot;
      },
      {
        &quot;name&quot;: &quot;amount&quot;,
        &quot;label&quot;: &quot;Amount&quot;,
        &quot;description&quot;: &quot;The amount to be deposited&quot;
      }
    ]
  },
]
"><code>"actions": [
  {
    "type": <span class="hljs-string">"exit"</span>,
    <span class="hljs-string">"name"</span>: <span class="hljs-string">"Withdraw"</span>,
    <span class="hljs-string">"description"</span>: <span class="hljs-string">"Withdraw tokens from the Aave money market."</span>,
    <span class="hljs-string">"chains"</span>: {
      "<span class="hljs-number">1</span>": <span class="hljs-string">"0x0000000000000000000000000000000000000000"</span>,
      <span class="hljs-string">"10"</span>: <span class="hljs-string">"0x0000000000000000000000000000000000000000"</span>
    },
    "functionSignature": <span class="hljs-string">"withdraw(address,uint256)"</span>,
    <span class="hljs-string">"inputs"</span>: [
      {
        "name": <span class="hljs-string">"asset"</span>,
        <span class="hljs-string">"type"</span>: <span class="hljs-string">"address"</span>
      },
      {
        "name": <span class="hljs-string">"amount"</span>,
        <span class="hljs-string">"type"</span>: <span class="hljs-string">"uint256"</span>
      }
    ],
    "<span class="hljs-selector-tag">details</span>": [
      {
        "name": <span class="hljs-string">"asset"</span>,
        <span class="hljs-string">"label"</span>: <span class="hljs-string">"Asset"</span>,
        <span class="hljs-string">"description"</span>: <span class="hljs-string">"The asset to be deposited"</span>
      },
      {
        "name": <span class="hljs-string">"amount"</span>,
        <span class="hljs-string">"label"</span>: <span class="hljs-string">"Amount"</span>,
        <span class="hljs-string">"description"</span>: <span class="hljs-string">"The amount to be deposited"</span>
      }
    ]
  },
]
</code></pre><p>The ABI tells us how to encode an action and update the objects state.</p><pre data-type="codeBlock" text="0x2e1a7d4d000000000000000000000000000000000000000000000006d021f92ea3d012f2
"><code></code></pre><p><strong><em>And the best part?</em></strong></p><p>We can compose these actions together, so all the necessary state mutations can happen in a single blockchain transaction*.* Removing the need for the user to visit multiple interfaces or even being concerned with the underlying architectures.</p><h1 id="h-automatically-generated-user-interfaces" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Automatically Generated User Interfaces</h1><p>So what can we do with a complete map of the Web universe?</p><p>We can use our map of the “finite space system” to automatically generate directions for users to follow. To help them safely traverse this open and free, but often dangerous landscape. All without getting lost in a sea of choices or encountering the modern day pirates.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7ffef8acecb44f16b71641a773c53c57c0be4b5d5302001906275af1f10351ec.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><em>Will taking this approach be easy?</em> <strong>No, probably not.</strong> It will require carefully constructed abstractions. A delicate balance between simple and complex. And lots of data processing and modeling.</p><p>Will it be worth it? Yes, probably. We can’t expect the next generation users to manage onchain wealth bouncing around between different chains, applications and protocols.</p><p><strong>People want outcomes.</strong> <em>Not choices.</em></p><h1 id="h-conclusion" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h1><p><strong>The current blockchain user experience is <em>kinda</em> broken.</strong></p><p>Browser based dApps were a necessary evolution in the world of Web3, but now it seem to be a limiting factor to bringing blockchain technology to the masses. Introducing too much friction and complexity into the process - for even the most sophisticated of users.</p><p>We’re not taking full advantage of a blockchains inherit properties.</p><p><strong>Instead we’re asking humans to perform tasks best suited for machines.</strong></p><hr><p>And perhaps scaling the Web3 user experience means asking what worked in the past?</p><p>And what worked in the past was indexing the world’s information and graphing online relationships i.e. Web 1.0 search engines and Web 2.0 social media platforms. To make information on-demand and relationships move at the speed of light.</p><p>Why would we not expect this same strategy to work for Web 3.0?</p><p>But instead of indexing information and graphing relationships, the next frontier is contextualizing “actions” in the ever evolving World Wide Web3.</p><p><em>So, the question remains.</em></p><p>Are dApp interface and wallet browsers (smartphone or extension) the best way to onboard millions of users onchain? Or is there something better waiting for us in the future?</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5a4f396676431361d3f8b592dd8db471e2451d3cb596afa6197ecc41b5e0b2aa.png" alt="New frontiers await us - are you ready cowboy?" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">New frontiers await us - are you ready cowboy?</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/d1c206eb5842521c6fc37da52752c6c36dd2950f73f300a4ab5dd642b754da0c.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Cost of doing business - The other side of the ETF token.]]></title>
            <link>https://paragraph.com/@kames-geraghty/cost-of-doing-business-the-other-side-of-the-etf-token</link>
            <guid>eSo2Afa4x0kQkE1PW0Al</guid>
            <pubDate>Sun, 07 Jan 2024 16:44:00 GMT</pubDate>
            <description><![CDATA[I’m not a conspiracy theorist. But something about the current Bitcoin ETF narrative has my spidey senses tingling. I get it. The whole thing is exciting. Suddenly “large institutions” have a way to play the crypto game. You might even say the “herd” is coming and they’re right on the horizon. https://twitter.com/RyanSAdams/status/1743294090886697058 But nothing is ever “just” good. And that’s kind of the scary part. Everyone is hyping up ETFs like there the best thing since the invention of ...]]></description>
            <content:encoded><![CDATA[<p>I’m not a conspiracy theorist.</p><p>But something about the current Bitcoin ETF narrative has my spidey senses tingling.</p><p>I get it. The whole thing is exciting. Suddenly “large institutions” have a way to play the crypto game. You might even say the “herd” is coming and they’re right on the horizon.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/RyanSAdams/status/1743294090886697058">https://twitter.com/RyanSAdams/status/1743294090886697058</a></p><p>But nothing is ever “just” good.</p><p>And that’s kind of the scary part. Everyone is hyping up ETFs like there the best thing since the invention of blockchains. It’s all sunshine and unicorns. <em>But, that can’t be true</em>.</p><p><strong>Actions have consequences</strong> - even if we don’t always think about them.</p><h2 id="h-the-other-side-of-the-token" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Other Side of the Token</h2><p>For the sake of argument let’s make a bear case for cryptocurrency ETFs.</p><p>And ask ourselves, what’s really at stake here?</p><p><strong>Control.</strong></p><p>But before we begin, let’s put on our conspiracy theorists hats.</p><p>We won’t keep them on long though. <em>Promise.</em></p><p>Have you watched Mr.Robot? <strong>If not you should!</strong></p><p>It’s a show about a genius computer hacker. And in this fictional story is a company called E-Corp a.k.a. Evil Corporation. Think of it like the IRL Blackrock. They dominant the financial markets. They’re the “big boys&apos;“ in the game.</p><p>And In this made up world world exists a “decentralized” cryptocurrency call eCoin. But in reality this cryptocurrency is not very decentralized. It’s a ruse. A fallacy.</p><p>A misrepresentation.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b2e25151b2bee32df3a82aefac05c6cd5848aa5ac9d610e4afc238af04ac88ec.png" alt="Evil Corp CEO conversing with US Regulators about non-state currencies" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Evil Corp CEO conversing with US Regulators about non-state currencies</figcaption></figure><p>Who controls the network? The validators? The liquid staking derivatives?</p><p>You guessed it! Evil Corporation.</p><p>It’s anything but decentralized. The network is captured.</p><div data-type="youtube" videoId="1ee-cHbCI0s">
      <div class="youtube-player" data-id="1ee-cHbCI0s" style="background-image: url('https://i.ytimg.com/vi/1ee-cHbCI0s/hqdefault.jpg'); background-size: cover; background-position: center">
        <a href="https://www.youtube.com/watch?v=1ee-cHbCI0s">
          <img src="{{DOMAIN}}/editor/youtube/play.png" class="play"/>
        </a>
      </div></div><p>How?</p><p>The big boys have big boy toys. Deep pockets. Far reaching tentacles. And they’re sophisticated. And if we’re being honest the “little” guy has no way of competing.</p><p>Left unchecked the obvious winner is always going to be the E-Corps of the world.</p><p>It’s a simple as that.</p><h2 id="h-reality-is-crazier-than-fiction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Reality is Crazier than Fiction</h2><p>Which begs the question…</p><ul><li><p>Why are we so happy about this fictional story becoming reality?</p></li><li><p>Why are willingly handing over the decentralized networks to the baddies?</p></li><li><p>Why are we not practicing adversarial thinking?</p></li><li><p>Why are we inviting a wolf, so plainly dressed as a sheep, into our homes?</p></li><li><p>Why are we selling out to the banksters, without even a fight?</p></li></ul><p>Why isn’t the cryptocurrency cypherpunk community rallying, or at the very least, making a ruckus about the unfolding situation?</p><p>I can’t be the only one who thinks it’s a little strange that the only news about the upcoming Bitcoin ETF is <strong>all</strong> <strong>positive</strong>. <em>Why no dissenting voices?</em></p><p>Ask yourself, isn’t a little odd that the new cryptocurrency regulations are coming into effect at exactly the same time Bitcoin ETFs are being approved by the SEC?</p><p>Even if it’s just a coincidence it’s worth examining.</p><p>So examine we shall.</p><h1 id="h-the-silent-takeover" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Silent Takeover</h1><p>We live in interesting times. The world can admittedly be a dangerous place.</p><p>And for better or worse we do live in a surveillance state.</p><p>Global governments, and corporations, want to know what you’re doing. <strong>At all times.</strong> Often times under the pretext of security. And fine, that’s a reasonable argument.</p><p>But where is the line drawn? Do the people get a say? Are their ulterior motives?</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/10edc6691fb600d59fb15a666e281e3c4dd1cb061baf752403f04983bba02eae.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Bitcoin, while a public ledger, is still pseudo-annonymous. You don’t really know what account is owned by which person or organization. And since we’ve established we live in surveillance state, that’s going to be a problem for the maintainers of this status quo.</p><p>Bitcoin can’t happen. The cypherpunks can’t win the day. <strong>It’s not allowed.</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/54ced3f214870b2fb0b75e30ea69d3b9d5f9421a6327636043182b572f785ce6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>But what if that’s not the real reason? What if “surveillance” is a means to an ends?</p><p>Not for security, even though may be a benefit at certain times… for certain people.</p><p><strong>But what if it’s about power and control?</strong></p><p>And let’s be real, that’s not a wild thought or idea. History, time and time again, has shown us that “governments” and “corporations” have ulterior motives and will take extreme measures to reach their goals.</p><p>What… WW2 ended and that was last time humans wanted to dominate the world?</p><p><em>I don’t think so.</em></p><p>These sophisticated players simply evolved. Adapted to the modern world. You don’t need to control populations at gunpoint anymore. That’s what the IMF (International Monetary Fund) is for.</p><p><strong>O.K… hold on!</strong> We’ve gone full conspiracy theorist now. Perhaps even a little extreme?</p><p>Maybe. Maybe not. But at the end of the day we’re just asking questions and trying to see the world as it is, not the world as we want it to be.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/39a4c0fc23a25811d198581e608b73b308a281d26aa48ae76b3294fa40a36454.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The banking system is a black hole for power. <em>It’s inevitable.</em></p><p>Money makes the world go round. <strong>It’s not Democracy</strong>. <em>Sorry.</em></p><p>And what does power attract? People who want to harness it and hopefully even use it for good. But power can also be used for bad i.e. domination and control.</p><p>I don’t know about you, but when I think of the “banker” archetype, the words <em>good</em> and <em>trustworthy</em> don’t always come to mind first. And why would they?</p><p>Money is a power game. Being good and trustworthy isn’t always a winning strategy.</p><p>It begs the question are the people sitting atop these modern power structures actually serving the commonwealth? Yes, probably some. <em>But probably many who are not.</em></p><p>And those are the ones I am worried about.</p><p>The players who’s motives, tactics and justifications are opaque. Why? Because being blind to half the chessboard is a losing strategy.</p><h1 id="h-the-game-a-doomsday-scenario" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Game - A Doomsday Scenario</h1><p>Hopefully by now I’ve made the case for why it’s important to examine both sides of the Bitcoin ETF token. And perhaps even inspired you to ask a few questions yourself.</p><p>And while I think my case, made via <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Allegory">allegory</a> and a reminder to always question <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Argument_from_authority">arguments from authority</a> was fairly strong, it will probably be even better to paint a picture of a potential doomsday scenario.</p><h3 id="h-bitcoin-will-be-captured" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Bitcoin will be captured.</strong></h3><p>Being King isn’t always great 🎯 it’s a target on your back. <em>And who wants that seat?</em></p><p>The financial institutions.</p><p>In the coming years their will be a coordinated attack to control, subvert or destroy the Bitcoin network. With a much higher chance for control or subversion. Destruction is an outdated strategy - one for unsophisticated players. It disrupts the game too much.</p><p>Besides the financial institutions already have battle tested weapons - <strong>surveillance.</strong></p><p><em>And it’s already happening.</em></p><p>By now you’re probably aware of the US regulations requiring users to report the name, social security number and address of a sender when they receive $10k or more in cryptocurrency transactions.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/mdtrade/status/1743670200371667328">https://twitter.com/mdtrade/status/1743670200371667328</a></p><p>It’s analogous to the current rules requiring people to report $10k+ cash transactions.</p><p><strong>These new rules benefit the institutions.</strong> They already have the resources required to abide be these new rules. Ultimately incentivizing all cryptocurrency transactions to flow through centralized exchanges or financial instruments like exchanged traded funds.</p><p>And that’s exactly what will happen.</p><p>The Bitcoin cypherpunk dream will die with launch of Bitcoin ETFs.</p><p>It won’t be instant. It will take time. But that’s o.k, because <strong>it will</strong> happen. And the big boys play are fine with playing games on a much longer time horizon.</p><p>2024 will be the year for creating the cryptocurrency surveillance machine.</p><p>In 2025 law breakers will be punished and “precedent” setting legal cases established.</p><p>And 2026 is when we see a dramatic influx to non-custodial cryptocurrency solutions.</p><p><em>Do I hope this prediction is wrong?</em> <strong>Yes, of course.</strong></p><p>But it’s foolish not to assume it’s not in the world of possibilities.</p><p>Why pay the cost of destruction, when control is just as effective?</p><p><strong>The bankster way.</strong></p><h1 id="h-conclusion" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h1><p>There is two sides two every token. A yin and a yang. Good and bad.</p><p>It’s important examine both sides of the token.</p><p><strong>The Bitcoin ETF is exciting.</strong></p><p>And perhaps even not as “gloom and doom” as I’ve painted it out to be, but it also has the potential to a be trojan horse - a problem that’s hard to see coming.</p><p>And if we honestly examine the situation, it’s filled with odd storylines and even more peculiar coincidences. Everything from the collapse of FTX and Sam Bankman-Fried’s relationship with the US government, too the recently enacted rules and regulations surrounding cryptocurrency transactions.</p><p><strong>You can’t help but ask what’s really happening behind the scenes?</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/aecaf8b4d0b1774f89711948f225b871bec56caaf055e13fbb03c2f7ba938c8d.png" alt="Who&apos;s watching the watchers?" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Who&apos;s watching the watchers?</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c9bb3a4189014d2af24d56a3f44e84d4993d7219138159bedaa0fcb75d1435ed.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[The Future of Smart Wallets]]></title>
            <link>https://paragraph.com/@kames-geraghty/the-future-of-smart-wallets</link>
            <guid>dvxLMyTZxChBNtka6G72</guid>
            <pubDate>Wed, 03 Jan 2024 22:51:18 GMT</pubDate>
            <description><![CDATA[Have we reached the pinnacle of wallet design? That&apos;s a question I&apos;ve been asking myself a lot recently. And if not what remains? What new systems need to be designed and developed?Where Are We Today?I have mixed feeling about "Account Abstraction" i.e ERC-4337. Ultimately I do believe it was a net positive for the ecosystem. Most notably it brought into focus the importance of smart accounts for the advancement of the Ethereum ecosystem. But I believe there is still much left to ex...]]></description>
            <content:encoded><![CDATA[<p><strong>Have we reached the pinnacle of wallet design?</strong></p><p>That&apos;s a question I&apos;ve been asking myself a lot recently.</p><p><em>And if not what remains?</em></p><p>What new systems need to be designed and developed?</p><h3 id="h-where-are-we-today" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Where Are We Today?</h3><p>I have mixed feeling about &quot;Account Abstraction&quot; i.e ERC-4337.</p><p>Ultimately I do believe it was a net positive for the ecosystem. Most notably it brought into focus the importance of smart accounts for the advancement of the Ethereum ecosystem.</p><p>But I believe there is still much left to explore and uncover in regards to the potential of smart accounts and what can considered as a Smart Wallet.</p><p>The major frontiers I see before us (Ethereum community) are as follows:</p><ol><li><p>Delegated Authority</p></li><li><p>Smart Transactions</p></li><li><p>Transaction Firewalls</p></li><li><p>Account Recovery</p></li><li><p>Self-Sovereign Identity</p></li></ol><p>Before diving into these frontiers I want to take a moment to contextualize where I think we stand today. As stated above, I have mixed feelings towards Account Abstraction, primarily because I don&apos;t think it was a &quot;10x improvement&quot; to the user experience it was herald as being.</p><p>ERC-4337 was an incremental, albeit important, steps towards enshrining smart accounts.</p><p>But it didn&apos;t drastically change or improve the smart contract wallet experience. Many features within ERC-4337 existed before in projects like Safe and Argent.</p><p>The most notable UX improvement arising from Account Abstraction was a Paymaster marketplace. And a clear commitment by the Ethereum community to prevent vendor lock-in for critical Web3 infrastructure i.e. wallets.</p><p>But Paymasters don&apos;t fundamentally change the smart account experience for non-trivial use cases. Sure it might improve the &quot;embedded wallet&quot; experience, where the concept of a wallet needs to be abstracted away from the incoming user, but when it comes to more serious use cases, especially in regards to Open Finance (a.k.a DeFi) it doesn&apos;t move the needle in any serious capacity.</p><p>And to illustrate this point, at the time of writing the “value” provided by these paymasters is still very limited.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/998b940525ae58d19a31da338c4006cbf1fe7eb71ee34a33972ed9e04e213399.png" alt="source: https://twitter.com/johnrising\_/status/1741494713096823014" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">source: https://twitter.com/johnrising\_/status/1741494713096823014</figcaption></figure><p>While UserOperations might be significant (especially on Polygon which I am also inherently suspicious of) the gas paid by Paymasters is still very small when viewed across chains. In other words, there is relatively low-demand for using non-native assets (ETH and MATIC) to pay for gas costs of a transaction.</p><p>So if Account Abstraction isn&apos;t the 10x improvement we need... <strong><em>what is?</em></strong></p><h1 id="h-the-path-towards-the-perfect-smart-wallet" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Path Towards the Perfect Smart Wallet</h1><p>Smart Accounts and in-turn Smart Wallets are the future.</p><p><em>The benefits are clear.</em></p><p>But why?</p><p><strong>Programmability.</strong> <em>And an optimized user experience.</em></p><p>Smart Accounts are the obvious path forward, because it becomes possible to build new &quot;abstractions&quot; on top of the core wallet experience. We (the developers) can encapsulate complex patterns that an average user is simply unable to craft and ultimately help unlock the full potential of decentralized systems without compromising on the core tenets of self-custody and self-sovereignty.</p><p><em>But what are the patterns worth capturing?</em></p><p><strong>Delegated Authority:</strong><br>Ability to authorize leaf accounts to act on behalf of a root account.</p><p><strong>Smart Transactions:</strong><br>Ability to craft rules, conditions and outcome based transactions.</p><p><strong>Transaction Firewalls:</strong><br>Ability to outsource transaction verification/execution to a third-party without losing custody or ownership of a smart account.</p><p><strong>Account Recovery:</strong><br>Ability to recover from a compromised account and/or lost private key.</p><p><strong>Self-Sovereign Identity:</strong> <br>Ability to control and manage a digital identity without a centralized authority.</p><p><strong><em>Why these frontiers?</em></strong></p><p>These frontiers represent a “10x improvement” to the core wallet experience.</p><h1 id="h-whats-next-in-the-smart-wallet-space" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What’s Next in the Smart Wallet Space?</h1><p>The might be a bold prediction and maybe even controversial <em>but</em>…</p><p><strong>I am of the opinion that today’s standard wallet experience is fundamentally broken.</strong></p><p>In so far that it’s the non-optimal route for onboarding millions of users onchain.</p><p>For a number of different reasons (security, user experience, discoverability, etc..) interacting primarily with blockchains using a browser based interface is a technological dead-end. Or at the very least a market segment that will be dominated by MetaMask and it’s UNIX like approach to modularity and upgradability via Snaps.</p><p>But simply put.</p><p><em>Smartphone wallet browsers and browser extension wallets are not the way forward for *truly* onboarding a billion users into the World of Web3.</em></p><p><strong>I get it</strong> - right now you’re probably asking yourself <em>“What’s my evidence that supports this assertion?”</em> and to be completely fair that’s exactly what you should be asking.</p><p>And I’ll be honest with you.</p><p>I don’t have a mountain of evidence. Or anything I can point to specifically that leads me to this belief. But what I do have is the unshakable belief that we not have crossed the finish line yet.</p><p>There is more to uncover. More patterns to discover. More optimizations to make.</p><p><strong>More experiences to make better.</strong></p><p>And perhaps one of the best way to do this is to re-imagine <strong>“What is a Smart Wallet?”</strong></p><h1 id="h-the-iphone-moment-for-web3" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The “iPhone Moment” for Web3</h1><p>You’re probably familiar (or at-least aware) of the following quote from Steve Jobs.</p><blockquote><p>“Some people say, &quot;Give the customers what they want.&quot; But that&apos;s not my approach. Our job is to figure out what they&apos;re going to want before they do. I think Henry Ford once said, &quot;If I&apos;d asked customers what they wanted, they would have told me, &apos;A faster horse!&apos;&quot; People don&apos;t know what they want until you show it to them. That&apos;s why I never rely on market research. Our task is to read things that are not yet on the page.”</p></blockquote><p>It’s a great quote. It opens up your mind. Forces you think outside of the box.</p><p>Leading you down a path to ask questions that no one else is asking.</p><p>That mentality is missing from the Web3 ecosystem.</p><p>We want to give users an overwhelming amount of choices. We want them to navigate a confusing trail of terminology. We want them to play in a dark forest with dangerous predators.</p><p><em>Sure, it was the right place to start.</em> <strong>But it’s the wrong place to end up in.</strong></p><h1 id="h-conclusion" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h1><p>Today’s wallet and blockchain experience is broken if what we want is mass adoption.</p><p>ERC-4337 is not the “revolutionary” upgrade it was herald as being.</p><p>What we need is Smart Wallets with a verticalized user experience.</p><p>And that user experience will be underpinned by the following features:</p><ol><li><p>Delegated Authority</p></li><li><p>Smart Transactions</p></li><li><p>Transaction Firewalls</p></li><li><p>Account Recovery</p></li><li><p>Self-Sovereign Identity</p></li></ol><p>A collection of features that improve the core user experience, increase operational security, and introduces features (elegantly) that users didn’t even know they wanted or needed.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0xgaut/status/1742281435674009617">https://twitter.com/0xgaut/status/1742281435674009617</a></p>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/7a395e1b4f6c822bd57441641bd10240d6baf0de629f7a2b25b77a366019464c.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Predictions: The Impact of Intents and AI on DeFi Protocols in the Next 3-5 Years]]></title>
            <link>https://paragraph.com/@kames-geraghty/predictions-the-impact-of-intents-and-ai-on-defi-protocols-in-the-next-3-5-years</link>
            <guid>trm4zf8oTxsUeif90I1p</guid>
            <pubDate>Fri, 15 Sep 2023 19:32:48 GMT</pubDate>
            <description><![CDATA[The integration of intents is set to bring about transformative changes in the DeFi landscape. Here are some predictions on how this could directly affect popular DeFi protocols like Uniswap, PoolTogether, Aave, Curve, Compound, and other emerging technologies in the next 3-5 years.1. Uniswap: Automated Liquidity ProvisioningUniswap could integrate intents to allow users to set conditions for automated liquidity provisioning. For instance, users could set an intent like "Provide liquidity whe...]]></description>
            <content:encoded><![CDATA[<p>The integration of intents is set to bring about transformative changes in the DeFi landscape.</p><p>Here are some predictions on how this could directly affect popular DeFi protocols like Uniswap, PoolTogether, Aave, Curve, Compound, and other emerging technologies in the next 3-5 years.</p><h3 id="h-1-uniswap-automated-liquidity-provisioning" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1. Uniswap: Automated Liquidity Provisioning</h3><p>Uniswap could integrate intents to allow users to set conditions for automated liquidity provisioning. For instance, users could set an intent like &quot;Provide liquidity when the pool&apos;s volume is high and fees are above 0.3%.&quot; This would make liquidity provision more dynamic and responsive to market conditions.</p><h3 id="h-2-pooltogether-smart-lottery-participation" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2. PoolTogether: Smart Lottery Participation</h3><p>PoolTogether could use intents to automate lottery participation based on user-defined criteria. Users could set intents like &quot;Automatically enter the lottery if the prize pool exceeds $1 million,&quot; allowing them to capitalize on high-reward opportunities without constant monitoring.</p><h3 id="h-3-aave-dynamic-lending-and-borrowing" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3. Aave: Dynamic Lending and Borrowing</h3><p>Aave could leverage intents to offer dynamic lending and borrowing rates. Users could set intents such as &quot;Lend my assets when the interest rate is above 5%&quot; or &quot;Borrow only when rates are below 2%,&quot; making the lending and borrowing experience more flexible and profitable.</p><h3 id="h-4-curve-intelligent-stablecoin-swaps" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">4. Curve: Intelligent Stablecoin Swaps</h3><p>Curve specializes in stablecoin swaps with low slippage. Intents could automate this process by setting conditions like &quot;Swap USDC for DAI when the price difference is greater than 0.1%,&quot; allowing users to take advantage of arbitrage opportunities automatically.</p><h3 id="h-5-compound-automated-collateral-management" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5. Compound: Automated Collateral Management</h3><p>Compound could integrate intents to manage collateral ratios automatically. Users could set an intent like &quot;Add more collateral if my loan-to-value ratio exceeds 70%,&quot; thus preventing liquidations during market volatility.</p><h3 id="h-6-layer-2-solutions-cost-efficient-transactions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">6. Layer 2 Solutions: Cost-Efficient Transactions</h3><p>With the rise of Layer 2 solutions like Optimism and zk-Rollups, intents could be used to automatically move assets between Layer 1 and Layer 2 based on transaction costs. An intent like &quot;Execute transactions on Layer 2 if gas fees on Layer 1 exceed $50&quot; could save users a significant amount in fees.</p><h3 id="h-7-nft-marketplaces-smart-bidding" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">7. NFT Marketplaces: Smart Bidding</h3><p>NFT marketplaces could use intents to automate the bidding process. Users could set an intent like &quot;Bid on NFT X if the price falls below $Y,&quot; allowing them to acquire valuable NFTs without having to monitor auctions constantly.</p><h3 id="h-conclusion" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Conclusion</strong></h3><p>The integration of intents is poised to make DeFi more accessible, efficient, and personalized.</p><p>Over the next 3-5 years, we can expect these technologies to become deeply ingrained in popular DeFi protocols, offering a user experience that is not just revolutionary but also incredibly empowering.</p><p>The future of DeFi is bright, and it&apos;s being shaped by the innovative use of intents.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/509cff47ac61fefad1c71118d2e8410059865cb09476994ad9dd2405fb6f95aa.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e227be1c897530881a717e227f4b7a59401c88c2031814118305302464f43a2e.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Mastering Safe Transactions: A Developer's Guide to Signing with EOAs and WAGMI]]></title>
            <link>https://paragraph.com/@kames-geraghty/mastering-safe-transactions-a-developer-s-guide-to-signing-with-eoas-and-wagmi</link>
            <guid>2n1AT6VsWLfVgmGoaacp</guid>
            <pubDate>Fri, 15 Sep 2023 11:04:05 GMT</pubDate>
            <description><![CDATA[IntroductionIn the realm of Ethereum, the act of signing transactions is a cornerstone operation. However, when it comes to multi-signature wallets like Gnosis Safe, the process becomes intricate and demands a deeper understanding of various signature types and methods. This article aims to provide an introductory guide on how to sign a Gnosis Safe transaction using an Externally Owned Account (EOA). We&apos;ll delve into hashing the transaction via the getTransactionHash method. Adhering to ...]]></description>
            <content:encoded><![CDATA[<h3 id="h-introduction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Introduction</strong></h3><p>In the realm of Ethereum, the act of signing transactions is a cornerstone operation.</p><p>However, when it comes to multi-signature wallets like Gnosis Safe, the process becomes intricate and demands a deeper understanding of various signature types and methods.</p><p>This article aims to provide an introductory guide on how to sign a Gnosis Safe transaction using an Externally Owned Account (EOA).</p><p>We&apos;ll delve into hashing the transaction via the <code>getTransactionHash</code> method. Adhering to Safe signature schema be adding 4 to the <code>v</code> of an ECDSA signature, and using the WAGMI and viem <code>signMessage</code> hook with the <code>raw</code> parameter.</p><h2 id="h-gnosis-safe-signature-types" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Gnosis Safe Signature Types</strong></h2><p>Gnosis Safe supports a variety of signature types, each with a constant length of 65 bytes. The last byte indicates the signature type. Here are some of the signature types Gnosis Safe supports:</p><ol><li><p><strong>ECDSA Signature</strong>: The most common type, consisting of <code>r</code>, <code>s</code>, and <code>v</code> values.</p></li><li><p><strong>EIP-712 Signature</strong>: A structured data hashing and signing standard.</p></li><li><p><strong>Contract Signature via EIP-1271</strong>: Allows smart contracts to verify signatures.</p></li></ol><p>For more details, you can refer to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.safe.global/safe-smart-account/signatures"><strong>official documentation</strong></a>.</p><h3 id="h-ecdsa-signatures" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>ECDSA Signatures</strong></h3><p>In ECDSA signatures, the <code>r</code>, <code>s</code>, and <code>v</code> values are essential for recovering the signer. The <code>v</code> value is particularly interesting because it MUST be increased by 4 to calculate the signature when using <code>eth_sign</code>.</p><p>The constant part of an ECDSA signature is <code>{32-bytes r}{32-bytes s}{1-byte v}</code>.</p><h3 id="h-eip-712-signatures" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-712 Signatures</strong></h3><p>EIP-712 is a standard for hashing and signing of typed structured data. This signature type is useful when you want to present the user with readable information about what they are signing.</p><h3 id="h-contract-signatures-via-eip-1271" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Contract Signatures via EIP-1271</strong></h3><p>This signature type allows a smart contract to verify a signature. The signature verifier is the padded address of the contract that implements the EIP-1271 interface. The dynamic part consists of <code>{32-bytes signature length}{bytes signature data}</code>.</p><h3 id="h-the-gettransactionhashmethod" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>The</strong> <code>getTransactionHashMethod</code></h3><p>The <code>getTransactionHashMethod</code> is a function within the Gnosis Safe contract that returns the transaction hash to be signed by the owners. Here&apos;s the code snippet:</p><pre data-type="codeBlock" text="function getTransactionHash(
    address to,
    uint256 value,
    bytes calldata data,
    Enum.Operation operation,
    uint256 safeTxGas,
    uint256 baseGas,
    uint256 gasPrice,
    address gasToken,
    address refundReceiver,
    uint256 _nonce
) public view returns (bytes32) {
    return keccak256(encodeTransactionData(to, value, data, operation, safeTxGas, baseGas, gasPrice, gasToken, refundReceiver, _nonce));
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getTransactionHash</span>(<span class="hljs-params">
    <span class="hljs-keyword">address</span> to,
    <span class="hljs-keyword">uint256</span> value,
    <span class="hljs-keyword">bytes</span> <span class="hljs-keyword">calldata</span> data,
    Enum.Operation operation,
    <span class="hljs-keyword">uint256</span> safeTxGas,
    <span class="hljs-keyword">uint256</span> baseGas,
    <span class="hljs-keyword">uint256</span> gasPrice,
    <span class="hljs-keyword">address</span> gasToken,
    <span class="hljs-keyword">address</span> refundReceiver,
    <span class="hljs-keyword">uint256</span> _nonce
</span>) <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title"><span class="hljs-keyword">view</span></span> <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">bytes32</span></span>) </span>{
    <span class="hljs-keyword">return</span> <span class="hljs-built_in">keccak256</span>(encodeTransactionData(to, value, data, operation, safeTxGas, baseGas, gasPrice, gasToken, refundReceiver, _nonce));
}
</code></pre><h2 id="h-deep-dive-adding-4-to-the-v-value" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Deep Dive: Adding 4</strong> to the “v” Value</h2><h3 id="h-why" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Why?</strong></h3><p>In Ethereum, the <code>v</code> value in an ECDSA signature is usually 27 or 28.</p><p>However, Gnosis Safe allows for more complex signature types, and to accommodate these, the <code>v</code> value MUST be increased by 4. When using <code>eth_sign</code>, as the default <code>v</code> values (27, 28) are adjusted, but we can’t submit that signature without first mutating it.</p><p>It’s mentioned in the Safe documentation, but with no links to any example.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.safe.global/safe-smart-account/signatures">https://docs.safe.global/safe-smart-account/signatures</a></p><p>And also in this StackExchange answer.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.stackexchange.com/questions/143583/gs026-i-sign-the-correct-safetxhash-but-checknsignatures-fails">https://ethereum.stackexchange.com/questions/143583/gs026-i-sign-the-correct-safetxhash-but-checknsignatures-fails</a></p><h3 id="h-solidity-verification-logic" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Solidity Verification Logic</strong></h3><p>In the Safe contract, the signature verification logic accommodates this bit shift.</p><pre data-type="codeBlock" text="else if (v &gt; 30) {
    // If v &gt; 30 then default va (27,28) has been adjusted for eth_sign flow
    currentOwner = ecrecover(keccak256(abi.encodePacked(&quot;\x19Ethereum Signed Message:\n32&quot;, dataHash)), v - 4, r, s);
}
"><code><span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (v <span class="hljs-operator">></span> <span class="hljs-number">30</span>) {
    <span class="hljs-comment">// If v > 30 then default va (27,28) has been adjusted for eth_sign flow</span>
    currentOwner <span class="hljs-operator">=</span> <span class="hljs-built_in">ecrecover</span>(<span class="hljs-built_in">keccak256</span>(<span class="hljs-built_in">abi</span>.<span class="hljs-built_in">encodePacked</span>(<span class="hljs-string">"\x19Ethereum Signed Message:\n32"</span>, dataHash)), v <span class="hljs-operator">-</span> <span class="hljs-number">4</span>, r, s);
}
</code></pre><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/contracts/Safe.sol#L335">https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/contracts/Safe.sol#L335</a></p><h3 id="h-mutating-the-signature-via-js" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Mutating the Signature via JS</strong></h3><p>The signHash method available in the <code>safe-global/safe-contracts</code> repo demonstrates how to increase the <code>v</code> value of an EOA signature by searching for <code>1b</code> (27) and <code>1f</code> (28) hexadecimal values and replacing them with <code>1f</code> (31) and <code>20</code> (32).</p><pre data-type="codeBlock" text="export const signHash = async (signer: Signer, hash: string): Promise&lt;SafeSignature&gt; =&gt; {
    const typedDataHash = ethers.getBytes(hash);
    const signerAddress = await signer.getAddress();
    return {
        signer: signerAddress,
        data: (
            await signer.signMessage(typedDataHash))
            .replace(/1b$/, &quot;1f&quot;).replace(/1c$/, &quot;20&quot;
        ),
    };
};
"><code>export const signHash <span class="hljs-operator">=</span> async (signer: Signer, hash: <span class="hljs-keyword">string</span>): Promise<span class="hljs-operator">&#x3C;</span>SafeSignature<span class="hljs-operator">></span> <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    const typedDataHash <span class="hljs-operator">=</span> ethers.getBytes(hash);
    const signerAddress <span class="hljs-operator">=</span> await signer.getAddress();
    <span class="hljs-keyword">return</span> {
        signer: signerAddress,
        data: (
            await signer.signMessage(typedDataHash))
            .replace(<span class="hljs-operator">/</span>1b$<span class="hljs-operator">/</span>, <span class="hljs-string">"1f"</span>).replace(<span class="hljs-operator">/</span>1c$<span class="hljs-operator">/</span>, <span class="hljs-string">"20"</span>
        ),
    };
};
</code></pre><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/src/utils/execution.ts#L116">https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/src/utils/execution.ts#L116</a></p><p>After the signatures have been mutated to adhere to the Safe signature schema they must be re-ordered from lowest to highest i.e. as if the addresses were uint256 values.</p><pre data-type="codeBlock" text="export const buildSignatureBytes = (signatures: SafeSignature[]): string =&gt; {
    const SIGNATURE_LENGTH_BYTES = 65;
    signatures.sort((left, right) =&gt; left.signer.toLowerCase().localeCompare(right.signer.toLowerCase()));

    let signatureBytes = &quot;0x&quot;;
    let dynamicBytes = &quot;&quot;;
    for (const sig of signatures) {
        if (sig.dynamic) {
            /* 
                A contract signature has a static part of 65 bytes and the dynamic part that needs to be appended 
                at the end of signature bytes.
                The signature format is
                Signature type == 0
                Constant part: 65 bytes
                {32-bytes signature verifier}{32-bytes dynamic data position}{1-byte signature type}
                Dynamic part (solidity bytes): 32 bytes + signature data length
                {32-bytes signature length}{bytes signature data}
            */
            const dynamicPartPosition = (signatures.length * SIGNATURE_LENGTH_BYTES + dynamicBytes.length / 2)
                .toString(16)
                .padStart(64, &quot;0&quot;);
            const dynamicPartLength = (sig.data.slice(2).length / 2).toString(16).padStart(64, &quot;0&quot;);
            const staticSignature = `${sig.signer.slice(2).padStart(64, &quot;0&quot;)}${dynamicPartPosition}00`;
            const dynamicPartWithLength = `${dynamicPartLength}${sig.data.slice(2)}`;

            signatureBytes += staticSignature;
            dynamicBytes += dynamicPartWithLength;
        } else {
            signatureBytes += sig.data.slice(2);
        }
    }

    return signatureBytes + dynamicBytes;
};
"><code>export const buildSignatureBytes <span class="hljs-operator">=</span> (signatures: SafeSignature[]): <span class="hljs-keyword">string</span> <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    const SIGNATURE_LENGTH_BYTES <span class="hljs-operator">=</span> <span class="hljs-number">65</span>;
    signatures.sort((left, right) <span class="hljs-operator">=</span><span class="hljs-operator">></span> left.signer.toLowerCase().localeCompare(right.signer.toLowerCase()));

    let signatureBytes <span class="hljs-operator">=</span> <span class="hljs-string">"0x"</span>;
    let dynamicBytes <span class="hljs-operator">=</span> <span class="hljs-string">""</span>;
    <span class="hljs-keyword">for</span> (const sig of signatures) {
        <span class="hljs-keyword">if</span> (sig.dynamic) {
            <span class="hljs-comment">/* 
                A contract signature has a static part of 65 bytes and the dynamic part that needs to be appended 
                at the end of signature bytes.
                The signature format is
                Signature type == 0
                Constant part: 65 bytes
                {32-bytes signature verifier}{32-bytes dynamic data position}{1-byte signature type}
                Dynamic part (solidity bytes): 32 bytes + signature data length
                {32-bytes signature length}{bytes signature data}
            */</span>
            const dynamicPartPosition <span class="hljs-operator">=</span> (signatures.<span class="hljs-built_in">length</span> <span class="hljs-operator">*</span> SIGNATURE_LENGTH_BYTES <span class="hljs-operator">+</span> dynamicBytes.<span class="hljs-built_in">length</span> <span class="hljs-operator">/</span> <span class="hljs-number">2</span>)
                .toString(<span class="hljs-number">16</span>)
                .padStart(<span class="hljs-number">64</span>, <span class="hljs-string">"0"</span>);
            const dynamicPartLength <span class="hljs-operator">=</span> (sig.data.slice(<span class="hljs-number">2</span>).<span class="hljs-built_in">length</span> <span class="hljs-operator">/</span> <span class="hljs-number">2</span>).toString(<span class="hljs-number">16</span>).padStart(<span class="hljs-number">64</span>, <span class="hljs-string">"0"</span>);
            const staticSignature <span class="hljs-operator">=</span> `${sig.signer.slice(<span class="hljs-number">2</span>).padStart(<span class="hljs-number">64</span>, <span class="hljs-string">"0"</span>)}${dynamicPartPosition}00`;
            const dynamicPartWithLength <span class="hljs-operator">=</span> `${dynamicPartLength}${sig.data.slice(<span class="hljs-number">2</span>)}`;

            signatureBytes <span class="hljs-operator">+</span><span class="hljs-operator">=</span> staticSignature;
            dynamicBytes <span class="hljs-operator">+</span><span class="hljs-operator">=</span> dynamicPartWithLength;
        } <span class="hljs-keyword">else</span> {
            signatureBytes <span class="hljs-operator">+</span><span class="hljs-operator">=</span> sig.data.slice(<span class="hljs-number">2</span>);
        }
    }

    <span class="hljs-keyword">return</span> signatureBytes <span class="hljs-operator">+</span> dynamicBytes;
};
</code></pre><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/src/utils/execution.ts#L143">https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/src/utils/execution.ts#L143</a></p><p><strong><em>Why do the signatures have to be ordered?</em></strong></p><p>That’s a great question!</p><p>Because in the <code>checkNSignatures</code> method of a SafeProxy requires it. And this is required to prevent the same owner from passing multiple signatures.</p><pre data-type="codeBlock" text="require(currentOwner &gt; lastOwner &amp;&amp; owners[currentOwner] != address(0) &amp;&amp; currentOwner != SENTINEL_OWNERS, &quot;GS026&quot;);
            lastOwner = currentOwner;
"><code><span class="hljs-built_in">require</span>(currentOwner <span class="hljs-operator">></span> lastOwner <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> owners[currentOwner] <span class="hljs-operator">!</span><span class="hljs-operator">=</span> <span class="hljs-keyword">address</span>(<span class="hljs-number">0</span>) <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> currentOwner <span class="hljs-operator">!</span><span class="hljs-operator">=</span> SENTINEL_OWNERS, <span class="hljs-string">"GS026"</span>);
            lastOwner <span class="hljs-operator">=</span> currentOwner;
</code></pre><p>The <code>currentOwner &gt; lastOwner</code> comparator means the signatures have to be in sequential order because the recovered address is compared to the previously verified signature as if it were a uint256.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/contracts/Safe.sol#L344">https://github.com/safe-global/safe-contracts/blob/82dfcc8c0cf21c0f76db354d691d668093fe1618/contracts/Safe.sol#L344</a></p><h2 id="h-using-viems-signmessage-hook" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Using viem&apos;s</strong> <code>signMessage</code> Hook</h2><p>The <code>viem signMessage</code> hook calculates an Ethereum-specific signature in EIP-191 format. It takes an account and a message as parameters and returns the signed message. The message can be passed as a string or with a <code>raw</code> attribute for data representation.</p><h3 id="h-example-usage-with-raw-parameter" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Example Usage with</strong> <code>raw</code> Parameter</h3><pre data-type="codeBlock" text="const signature = await walletClient.signMessage({
  account,
  message: { raw: &apos;0x68656c6c6f20776f726c64&apos; },
});
"><code><span class="hljs-keyword">const</span> <span class="hljs-variable constant_">signature</span> = await walletClient.<span class="hljs-title function_ invoke__">signMessage</span>({
  account,
  <span class="hljs-attr">message</span>: { <span class="hljs-attr">raw</span>: <span class="hljs-string">'0x68656c6c6f20776f726c64'</span> },
});
</code></pre><p>A full example of signing a <code>hex</code> string and increasing the <code>v</code> value so it adheres to the Safe signature schema.</p><pre data-type="codeBlock" text="import { useWalletClient } from &quot;wagmi&quot;;

const { data: walletClient } = useWalletClient();

const [signature, setSignature] = React.useState&lt;{
    signed: boolean;
    signature: `0x${string}`;
}&gt;({
    signed: false,
    signature: &quot;0x&quot;,
});

const handleSignTransaction = async () =&gt; {
    const signMessageData = await walletClient?.signMessage?.({
        message: {
            raw: transactionHash.data as `0x${string}`,
        },
    });
    if (!signMessageData) return;
    const bitShiftedSig = signMessageData
        .replace(/1b$/, &quot;1f&quot;)
        .replace(/1c$/, &quot;20&quot;);
    setSignature({
        signed: true,
        signature: bitShiftedSig as `0x${string}`,
    });
};
"><code><span class="hljs-keyword">import</span> { <span class="hljs-title">useWalletClient</span> } <span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-string">"wagmi"</span>;

const { data: walletClient } <span class="hljs-operator">=</span> useWalletClient();

const [signature, setSignature] <span class="hljs-operator">=</span> React.useState&#x3C;{
    signed: boolean;
    signature: `0x${<span class="hljs-keyword">string</span>}`;
}<span class="hljs-operator">></span>({
    signed: <span class="hljs-literal">false</span>,
    signature: <span class="hljs-string">"0x"</span>,
});

const handleSignTransaction <span class="hljs-operator">=</span> async () <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    const signMessageData <span class="hljs-operator">=</span> await walletClient?.signMessage?.({
        message: {
            raw: transactionHash.data <span class="hljs-keyword">as</span> `0x${<span class="hljs-keyword">string</span>}`,
        },
    });
    <span class="hljs-keyword">if</span> (<span class="hljs-operator">!</span>signMessageData) <span class="hljs-keyword">return</span>;
    const bitShiftedSig <span class="hljs-operator">=</span> signMessageData
        .replace(<span class="hljs-operator">/</span>1b$<span class="hljs-operator">/</span>, <span class="hljs-string">"1f"</span>)
        .replace(<span class="hljs-operator">/</span>1c$<span class="hljs-operator">/</span>, <span class="hljs-string">"20"</span>);
    setSignature({
        signed: <span class="hljs-literal">true</span>,
        signature: bitShiftedSig <span class="hljs-keyword">as</span> `0x${<span class="hljs-keyword">string</span>}`,
    });
};
</code></pre><h2 id="h-executing-the-signed-gnosis-safe-transaction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Executing the Signed Gnosis Safe Transaction</strong></h2><p>After you&apos;ve successfully signed a Gnosis Safe transaction, the next crucial step is to execute it. This involves sending the signed transaction to the Gnosis Safe contract for execution. Below, we&apos;ll explore how to do this using React hooks and Ethereum smart contract interactions.</p><p>The following snippets assumed you have generated React hooks using the WAGMI CLI and references to the Safe contracts.</p><p>Something like this:</p><pre data-type="codeBlock" text="import { defineConfig } from &quot;@wagmi/cli&quot;;
import { foundry, react } from &quot;@wagmi/cli/plugins&quot;;

export default defineConfig({
  out: &quot;src/blockchain.ts&quot;,
  plugins: [
    react(),
    foundry({
      project: &quot;../contracts/safe-contracts&quot;,
      include: [
        &quot;Safe.json&quot;,
        &quot;SafeProxy.json&quot;,
        &quot;SafeProxyFactory.json&quot;,
        &quot;MultiSend.json&quot;,
        &quot;WalletFactory.json&quot;,
      ],
    }),
  ],
});
"><code>import { defineConfig } <span class="hljs-keyword">from</span> <span class="hljs-string">"@wagmi/cli"</span>;
import { foundry, react } <span class="hljs-keyword">from</span> <span class="hljs-string">"@wagmi/cli/plugins"</span>;

export <span class="hljs-keyword">default</span> <span class="hljs-title function_ invoke__">defineConfig</span>({
  <span class="hljs-attr">out</span>: <span class="hljs-string">"src/blockchain.ts"</span>,
  <span class="hljs-attr">plugins</span>: [
    <span class="hljs-title function_ invoke__">react</span>(),
    <span class="hljs-title function_ invoke__">foundry</span>({
      <span class="hljs-attr">project</span>: <span class="hljs-string">"../contracts/safe-contracts"</span>,
      <span class="hljs-attr">include</span>: [
        <span class="hljs-string">"Safe.json"</span>,
        <span class="hljs-string">"SafeProxy.json"</span>,
        <span class="hljs-string">"SafeProxyFactory.json"</span>,
        <span class="hljs-string">"MultiSend.json"</span>,
        <span class="hljs-string">"WalletFactory.json"</span>,
      ],
    }),
  ],
});
</code></pre><h3 id="h-preparing-the-transaction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Preparing the Transaction</strong></h3><p>Before executing the transaction, you need to prepare it by gathering all the necessary parameters. Here&apos;s how you can do it:</p><ul><li><p><strong>Fetch the Safe Nonce</strong>: The nonce is a counter that ensures each transaction is unique. You can use the <code>useSafeNonce</code> hook to get the current nonce for the Safe.</p></li></ul><pre data-type="codeBlock" text="const nonce = useSafeNonce({
    address: safeAddress,
    enabled: true,
});
"><code><span class="hljs-keyword">const</span> <span class="hljs-variable constant_">nonce</span> = <span class="hljs-title function_ invoke__">useSafeNonce</span>({
    <span class="hljs-attr">address</span>: safeAddress,
    <span class="hljs-attr">enabled</span>: <span class="hljs-literal">true</span>,
});
</code></pre><p><strong>Calculate the Transaction Hash</strong>: Use the <code>useSafeGetTransactionHash</code> hook to calculate the transaction hash based on the parameters.</p><pre data-type="codeBlock" text="const transactionHash = useSafeGetTransactionHash({
    address: safeAddress,
    args: [
        safeAddress, // to
        BigInt(0), // value
        &apos;0x&apos;, // data
        0, // operation
        BigInt(0), // safeTxGas
        BigInt(0), // baseGas
        BigInt(0), // gasPrice
        constants.AddressZero, // gasToken
        constants.AddressZero, // refundReceiver
        nonce.data as bigint, // nonce
    ],
});
"><code>const transactionHash <span class="hljs-operator">=</span> useSafeGetTransactionHash({
    <span class="hljs-keyword">address</span>: safeAddress,
    args: [
        safeAddress, <span class="hljs-comment">// to</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// value</span>
        <span class="hljs-string">'0x'</span>, <span class="hljs-comment">// data</span>
        <span class="hljs-number">0</span>, <span class="hljs-comment">// operation</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// safeTxGas</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// baseGas</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// gasPrice</span>
        constants.AddressZero, <span class="hljs-comment">// gasToken</span>
        constants.AddressZero, <span class="hljs-comment">// refundReceiver</span>
        nonce.data <span class="hljs-keyword">as</span> bigint, <span class="hljs-comment">// nonce</span>
    ],
});
</code></pre><h3 id="h-preparing-the-execution-configuration" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Preparing the Execution Configuration</strong></h3><p>Once you have the transaction hash and the signature, you can prepare the execution configuration using the <code>usePrepareSafeExecTransaction</code> hook.</p><pre data-type="codeBlock" text="const { config } = usePrepareSafeExecTransaction({
    address: safeAddress,
    args: [
        safeAddress, // to
        BigInt(0), // value
        &apos;0x&apos;, // data
        0, // operation
        BigInt(0), // safeTxGas
        BigInt(0), // baseGas
        BigInt(0), // gasPrice
        constants.AddressZero, // gasToken
        constants.AddressZero, // refundReceiver
        signature.signature, // signatures
    ],
    enabled: signature.signed,
});
"><code>const { config } <span class="hljs-operator">=</span> usePrepareSafeExecTransaction({
    <span class="hljs-keyword">address</span>: safeAddress,
    args: [
        safeAddress, <span class="hljs-comment">// to</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// value</span>
        <span class="hljs-string">'0x'</span>, <span class="hljs-comment">// data</span>
        <span class="hljs-number">0</span>, <span class="hljs-comment">// operation</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// safeTxGas</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// baseGas</span>
        BigInt(<span class="hljs-number">0</span>), <span class="hljs-comment">// gasPrice</span>
        constants.AddressZero, <span class="hljs-comment">// gasToken</span>
        constants.AddressZero, <span class="hljs-comment">// refundReceiver</span>
        signature.signature, <span class="hljs-comment">// signatures</span>
    ],
    enabled: signature.signed,
});
</code></pre><h3 id="h-executing-the-transaction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Executing the Transaction</strong></h3><p>Finally, you can execute the transaction using the <code>write</code> method from the <code>useContractWrite</code> hook. This will send the transaction to the Ethereum network for execution.</p><pre data-type="codeBlock" text="const _safe = useContractWrite(config);

const handleSubmitTransaction = () =&gt; {
    _safe?.write?.();
};
"><code>const _safe <span class="hljs-operator">=</span> useContractWrite(config);

const handleSubmitTransaction <span class="hljs-operator">=</span> () <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
    _safe?.write?.();
};
</code></pre><p>To execute the transaction, simply call the <code>handleSubmitTransaction</code> function. This will trigger the <code>write</code> method, sending the transaction to the Gnosis Safe contract for execution.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Conclusion</strong></h2><p>Signing a Gnosis Safe transaction with an EOA involves a series of steps that require a deep understanding of Ethereum signatures and the Gnosis Safe contract.</p><p>This guide has aimed to provide a comprehensive understanding of how to sign a transaction, from hashing it using the <code>getTransactionHashMethod</code> to signing it using the viem <code>signMessage</code> hook and finally submitting it to the Gnosis Safe contract.</p><p>By following these steps, developers can ensure that their transactions are not only secure but also conform to the standards set by Gnosis Safe and the Ethereum ecosystem at large.</p><p>Happy coding!</p>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c99c493bc2e8007317a64f89afc06f9b37f579d942bf23a9096ab82b94dd1daa.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[TurboETH Core Contributor Template Ideas]]></title>
            <link>https://paragraph.com/@kames-geraghty/turboeth-core-contributor-template-ideas</link>
            <guid>3sXreoSnbzqDWsjbIPP3</guid>
            <pubDate>Mon, 11 Sep 2023 12:53:42 GMT</pubDate>
            <description><![CDATA[TurboETH is evolving 📈 switching our focus from integrations to templates. Why are we switching from integrations to templates? Because TurboETH now has over 10+ Web3 integrations: Sign-In With Ethereum, PoolTogether, Lit Protocol, Arweave, Disco, Connext, Aave, Livepeer, Gelato and more!Want to help us bring TurboETH to the next level? Apply to become a core contributor and get paid a monthly stipend to develop templates. https://mirror.xyz/kames.eth/tin2FQN9OoI5mQ4LsCyPVmZpGVF8GMQEySsGtOqy...]]></description>
            <content:encoded><![CDATA[<p><strong>TurboETH is evolving 📈</strong> switching our focus from integrations to templates.</p><p>Why are we switching from integrations to templates?</p><p>Because TurboETH now has over 10+ Web3 integrations: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://login.xyz/">Sign-In With Ethereum</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://pooltogether.com/">PoolTogether</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://litprotocol.com/">Lit Protocol</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.arweave.org/">Arweave</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.disco.xyz/">Disco</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.connext.network/">Connext</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://aave.com/">Aave</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://livepeer.org/">Livepeer</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.gelato.network/">Gelato</a> and more!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/be18020a55c9421b7eb1155accc384ef999e3f67770da41426a00611aabdf851.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Want to help us bring <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.turboeth.xyz/">TurboETH</a> to the next level?</p><p>Apply to become a core contributor and get paid a monthly stipend to develop templates.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/kames.eth/tin2FQN9OoI5mQ4LsCyPVmZpGVF8GMQEySsGtOqyjVY">https://mirror.xyz/kames.eth/tin2FQN9OoI5mQ4LsCyPVmZpGVF8GMQEySsGtOqyjVY</a></p><p><em>Have you signed up to become a TurboETH Core Contributor?</em></p><p><strong>Excellent!</strong> Below are a few template TurboETH template ideas we have.</p><h1 id="h-turboeth-template-ideas" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TurboETH Template Ideas</h1><h3 id="h-emergent" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🌿 Emergent</h3><p>A fully onchain dynamic SVG digital collectible that updates when zero-knowledge proofs are submitted via the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.axiom.xyz/">Axiom</a> protocol</p><p>For example if a user makes 20+ swaps on Uniswap or the account is older than 1 year, they can submit a zero-knowledge proof that will automatically update the digital collectible design.</p><h3 id="h-chatter" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">💬 Chatter</h3><p>A peer-to-peer messaging application that uses <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://xmtp.org/">XMTP</a> for communication.</p><p>Wallets can send each other transaction recommendations. For example you can send friend a transaction recommendation to mint a limited edition digital collectible. Or remind them to pay for their part of a dinner bill with a request to send USDC to your account.</p><p>The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://xmtp.org/">XMTP</a> protocol allows custom message types to be created, which means other UIs can adopt new types of message formats. Stretch goal is sending verifiable credentials using Disco and/or Veramo.</p><h3 id="h-sayvor" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🏦 Sayvor</h3><p>A decentralized finance template that encourages saving using the PoolTogether V5 protocol and contributing to public goods when large prizes are won.</p><h3 id="h-ballot" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🗳️ Ballot</h3><p>A decentralized voting system where each vote is a transaction on the blockchain.</p><p>The system would use zero-knowledge proofs via the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://semaphore.appliedzkp.org/">Semaphore protocol</a> to maintain voter anonymity while ensuring that each wallet can only vote once.</p><p>The results are transparent and verifiable by anyone.</p><h3 id="h-streamify" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">🎥 Streamify</h3><p>LivePeerChat aims to revolutionize the world of decentralized streaming by integrating Livepeer&apos;s video streaming capabilities with Orbis&apos; real-time chat functionality.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a31a32ccac4dd463b78b0edb7b6061eb5282501ffc35c0bdc0922f458014ae7c.png" alt="Example template mockup" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Example template mockup</figcaption></figure><p>As a stretch goal the template could also incorporate an ERC20-based tipping mechanism, complete with a Twitch-like leaderboard to encourage viewer engagement and reward top contributors.</p><p>Integrate Orbis&apos; chat API to provide a seamless, real-time chat experience alongside the video stream. The chat will support text, emojis, and even custom message types.</p><h3 id="h-apply-to-become-a-turboeth-template-contributor" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Apply to Become a TurboETH Template Contributor</h3><p>Interested in helping develop one of these template ideas?!</p><p>Join us in the TurboETH Discord 💬</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/MKYh9pg8Yq">https://discord.gg/MKYh9pg8Yq</a></p>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/bdee844cf65d02a7e3a465a6c4c9f8a02976e6dec0735385321a538c27aca0d8.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Become A TurboETH Core Contributor - Monthly OP Token Stipends]]></title>
            <link>https://paragraph.com/@kames-geraghty/become-a-turboeth-core-contributor-monthly-op-token-stipends</link>
            <guid>wQOiViakFoxJzsMmT3sR</guid>
            <pubDate>Mon, 11 Sep 2023 11:13:36 GMT</pubDate>
            <description><![CDATA[In the ever-evolving world of cryptocurrency and blockchain technology, the importance of community-driven innovation cannot be overstated. Open source software has played a pivotal role in shaping the landscape of decentralized finance, allowing for the creation of groundbreaking applications and tools. If you&apos;re a Web3 developer looking to make a meaningful impact in this space while enjoying the freedom to explore your creative potential, we have an exciting opportunity for you. https...]]></description>
            <content:encoded><![CDATA[<p>In the ever-evolving world of cryptocurrency and blockchain technology, the importance of community-driven innovation cannot be overstated.</p><p><strong>Open source software has played a pivotal role in shaping the landscape of decentralized finance, allowing for the creation of groundbreaking applications and tools.</strong></p><p>If you&apos;re a Web3 developer looking to make a meaningful impact in this space while enjoying the freedom to explore your creative potential, we have an exciting opportunity for you.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forms.gle/uDPpTbz54i9Yj7Az7">https://forms.gle/uDPpTbz54i9Yj7Az7</a></p><p><strong>TurboETH Core Contributor</strong></p><p>TurboETH is not just another Web3 application starter template; it&apos;s a build system designed to empower developers to create powerful and innovative templates in the world of blockchain technology.</p><p>Developed with the aim of simplifying the Web3 development process, TurboETH provides the tools, resources, and community support necessary to kickstart your journey in the world of decentralized applications.</p><p><strong>The Opportunity: Joining Our Team of Web3 Developers</strong></p><p>With a total of 14,000 OP tokens at our disposal, we are thrilled to announce that we are actively looking to hire 2-4 Web3 developers to be a part of our dynamic team.</p><p>This is a unique opportunity to work on a groundbreaking project that offers you the freedom to develop templates that genuinely interest you.</p><p><strong>At our core, we believe that fostering creativity and innovation is the key to driving progress in the Web3 space.</strong></p><p><strong>Why TurboETH?</strong></p><ul><li><p><strong>Empowerment:</strong> TurboETH empowers developers with a user-friendly and feature-rich platform that simplifies the creation of Web3 applications. You&apos;ll have access to a wide range of resources and tools to supercharge your development process.</p></li><li><p><strong>Community:</strong> Join a passionate and diverse community of like-minded individuals who share your passion for Web3 development. Collaborate, share knowledge, and grow together as you contribute to the TurboETH ecosystem.</p></li><li><p><strong>Freedom to Innovate:</strong> Unlike traditional development roles, working with TurboETH means you have the freedom to shape the future of Web3 templates. You&apos;re not just a developer; you&apos;re a creator who can turn your visionary ideas into reality.</p></li></ul><p><strong>What We&apos;re Looking For:</strong></p><ul><li><p><strong>Web3 Enthusiasts:</strong> If you&apos;re passionate about the potential of blockchain technology and the Web3 ecosystem, this opportunity is tailor-made for you.</p></li><li><p><strong>Development Skills:</strong> Proficiency in Web3 development technologies, including Solidity, Ethereum, and smart contract development, is a must.</p></li><li><p><strong>Creativity:</strong> We value creative thinking and innovative problem-solving. Your ability to think outside the box is what sets you apart.</p></li><li><p><strong>Collaborative Spirit:</strong> Teamwork is at the heart of what we do. We&apos;re looking for developers who thrive in a collaborative environment and can work effectively with a diverse group of individuals.</p></li></ul><p><strong>Your Impact:</strong></p><p>As a Web3 developer with TurboETH, you&apos;ll have the chance to:</p><ol><li><p><strong>Shape the Future:</strong> You will be at the forefront of the Web3 revolution, contributing to the development of templates that have the potential to transform the crypto landscape.</p></li><li><p><strong>Learn and Grow:</strong> The dynamic nature of the blockchain space means that there is always something new to learn. Your role with TurboETH will provide continuous opportunities for personal and professional growth.</p></li><li><p><strong>Inspire Others:</strong> Your work will serve as an inspiration to the broader Web3 community. Your innovative templates will help others visualize the endless possibilities of blockchain technology.</p></li></ol><p><strong>Join Us in Shaping the Future of Web3 Development</strong></p><p>If you&apos;re excited about the limitless possibilities of Web3 technology and want to make a tangible impact, TurboETH is the place for you. Join our team of passionate Web3 developers and be part of a project that&apos;s set to change the way we build decentralized applications.</p><p>Apply today and start your journey towards a future where Web3 development knows no bounds. Together, we&apos;ll unlock the full potential of blockchain technology and shape the future of the crypto space. Your creative freedom awaits!</p><p>Don&apos;t miss this unique opportunity to be part of something extraordinary.</p><p><strong>Join us at TurboETH and let&apos;s pioneer the future of Web3 development together.</strong></p><p>Apply using the Google Form below 👇</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forms.gle/ZNTaB6kLYfmgoCpU7">https://forms.gle/ZNTaB6kLYfmgoCpU7</a></p><p>Also be sure to join us on our Discord 💬</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/MKYh9pg8Yq">https://discord.gg/MKYh9pg8Yq</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/da07fdcfaac76271dcd14b8caf8a41b0a639a75cca2d03dfd13bc1184ca02de1.png" alt="Joining the growing team of core TurboETH contributors" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Joining the growing team of core TurboETH contributors</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1c7c3838ccb9857fa4a448699b685112cb5b5d7d5b9369a3b612e60517584f41.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[⚡️TurboETH - 18,271.88 OP Tokens from Optimism RGF]]></title>
            <link>https://paragraph.com/@kames-geraghty/turboeth-18-271-88-op-tokens-from-optimism-rgf</link>
            <guid>tNXXwETX2B1Kw2Lo8Pm7</guid>
            <pubDate>Thu, 30 Mar 2023 16:39:41 GMT</pubDate>
            <description><![CDATA[⚡️TurboETH received 18,271.88 OP tokens from Optimism Retroactive Grant Funding. https://twitter.com/optimismFND/status/1641462688512618498TL;DR:Thank you to Optimism RGF badge holders for supporting the Web3 ecosystem. The OP tokens will be used for funding TurboETH templates/integrations and an Open Source Web3 Design System. These initiatives aim to improve overall user experience and expand the Web3 ecosystem -- building a strong community of developers, designers and optimizoors focused ...]]></description>
            <content:encoded><![CDATA[<p>⚡️TurboETH received <strong>18,271.88 OP</strong> tokens from <strong>Optimism Retroactive Grant Funding.</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/optimismFND/status/1641462688512618498">https://twitter.com/optimismFND/status/1641462688512618498</a></p><h3 id="h-tldr" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">TL;DR:</h3><p>Thank you to Optimism RGF badge holders for supporting the Web3 ecosystem.</p><p>The OP tokens will be used for funding <strong>TurboETH templates/integrations</strong> and an <strong>Open Source Web3 Design System</strong>. These initiatives aim to improve overall user experience and expand the Web3 ecosystem -- building a strong community of developers, designers and optimizoors focused on building next generation Web3 applications.</p><h2 id="h-whats-planned" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What’s Planned</h2><p>As a recipient of the retroactive public goods funding, I have been given the opportunity to put these funds towards initiatives that I believe will help push Web3 forward. Here are the three things that I want to do with the OP tokens:</p><ol><li><p><strong>Bounties for new TurboETH templates and integrations:</strong> TurboETH is an emerging Web3 app framework that allows developers to quickly build and deploy Web3 applications. To help accelerate the adoption of TurboETH, I want to offer bounties for new templates and integrations. This will encourage developers to build new applications using TurboETH, which will help to expand the Web3 ecosystem and make it more accessible to a wider range of users.</p></li><li><p><strong>Bounties for a Web3 design system:</strong> Web3 is still in its early stages, and there is a lot of room for improvement in terms of user experience and design. To help tackle this challenge, I want to use a portion of the funds to create bounties for a Web3 design system. This will incentivize designers to create designs that are tailored to the unique requirements of Web3, such as support for multiple chains, seamless integration with wallets and other Web3 tools, and user-friendly interfaces for complex transactions.</p></li></ol><h2 id="h-roadmap" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Roadmap</h2><p>Looking forward, I am excited to share a roadmap for how I plan to use the OP tokens and achieve the goals outlined above:</p><ul><li><p>In the next few weeks, I will also be reaching out to developers to gauge interest in the TurboETH bounty program. I will be working with the community to establish the types of templates and integrations that would be most valuable, as well as setting up the requirements and timeline for submission.</p></li><li><p>At the same time, I will be reaching out to designers to establish the details of the Web3 design system bounty program. This will include outlining the requirements and criteria for submission, as well as setting up a timeline for the submission and review process.</p></li></ul><h2 id="h-call-to-action" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Call to Action</h2><p>If you&apos;re a Web3 designer or developer, I invite you to get involved in the bounty programs for the TurboETH templates/integrations and an Open Source Web3 Design System.</p><p>Your contributions can make a real impact in improving user experience and expanding the Web3 ecosystem.</p><p>Let&apos;s make an optimistic future together!</p><p>🔴 ⚡️</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cb016e62114269d040ac3e5ec26a9f7c5736fb5de4fd6d4700872dc10a432f5f.png" alt="What seeds will you plant in the infinite garden." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">What seeds will you plant in the infinite garden.</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/07c41f2a0e9167ee1d7cbba5daed4e64b9ed416933dfca0279b77ffd35166aad.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[TurboETH - Open Source Web3 Build System]]></title>
            <link>https://paragraph.com/@kames-geraghty/turboeth-open-source-web3-build-system</link>
            <guid>PNooutP850iOGZpEBf8O</guid>
            <pubDate>Wed, 08 Mar 2023 14:51:30 GMT</pubDate>
            <description><![CDATA[Being exposed to Open Source Software when I was 15 years old changed my world. Properly built software opens doors for people. For me it meant having an opportunity to teach myself software development. I’ve always found the best way to learn is by seeing and doing. Early content management systems like Joomla and Wordpress gave me an opportunity to create, tinker and explore. A path to competency. I owe my career to Open Source Software. Web3 needs its “Wordpress” moment. We need an Open So...]]></description>
            <content:encoded><![CDATA[<p>Being exposed to Open Source Software when I was 15 years old changed my world.</p><p><strong>Properly built software opens doors for people.</strong> For me it meant having an opportunity to teach myself software development. I’ve always found the best way to learn is by seeing and doing. Early content management systems like Joomla and Wordpress gave me an opportunity to create, tinker and explore. <strong>A path to competency.</strong></p><p>I owe my career to Open Source Software.</p><p>Web3 needs its “<em>Wordpress</em>” moment.</p><p>We need an <strong>Open Source Web3 Build System.</strong> Decentralized protocols and distributed networks give us a moment… A moment to take a step back and ask ourselves <em>“What’s possible?”</em> and not simply <em>“What KPI?”</em></p><h3 id="h-retroactive-public-goods-funding" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Retroactive Public Goods Funding</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.turboeth.xyz/">⚡️TurboETH</a> was nominated for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://community.optimism.io/docs/governance/retropgf-2/">Optimism Retro PGF V2</a>.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gov.optimism.io/t/tooling-utilities-nominations-for-rpgf2/4639/127?u=jonas">https://gov.optimism.io/t/tooling-utilities-nominations-for-rpgf2/4639/127?u=jonas</a></p><p>Thank you <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/diligitSP">@diligitSP</a> for the nomination 🔴 it was a pleasant surprise!</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.optimism.io/retropgf-discovery/0x761d584f1C2d43cBc3F42ECd739701a36dFFAa31">https://app.optimism.io/retropgf-discovery/0x761d584f1C2d43cBc3F42ECd739701a36dFFAa31</a></p><p>I started <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.turboeth.xyz/">TurboETH</a> because I want a build system that brings together the complete Web3 technology stack. <strong>Everything.</strong> Cryptocurrency, identity, storage, access controls, coordination, and more.</p><p>I want new developers to learn, contribute and experiment.</p><p>I want experienced developers to plan, engineer and stabilize.</p><p>A Web3 Build System that fully utilizes decentralized and distributed technology in the most effective and efficient way possible. An elegant, composable and secure system for creating peer-to-peer networks. A first principles approach to answering the question “What’s possible?” and how can we do it better?</p><p>Right now TurboETH is a Web3 App Template built using Next.js, RainbowKit, SIWE, Disco, and Etherscan. <strong>It needs to evolve. To be better. To be supercharged.</strong></p><h2 id="h-open-source-web3-build-system" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">❖ Open Source Web3 Build System</h2><p>In the future TurboETH will be an ❖ <strong>Open Source Web3 Build System</strong> that supercharges developers with decentralized and distributed primitives: blockchains, authentication, identity, storage, and access controls.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7bb8ca25f637fdc9aaeabfe33eed609616c4c9ec1719a93d9ddc595ab1f527d7.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The Web3 ecosystem is evolving. <strong>Becoming more complex in nature.</strong> As an ecosystem we’re moving beyond only interfaces for smart contracts. Applications can now deeply integrate decentralized and distributed protocols and services into a modern application stack.</p><ul><li><p>access controls - privacy</p></li><li><p>authentication - network</p></li><li><p>blockchains - value</p></li><li><p>identity - context</p></li><li><p>storage - communication</p></li></ul><h2 id="h-vote-for-open-source" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Vote for Open Source</h2><p>To build Web3 applications that grow we need new standards and schemas. An Open Source Web3 Build System designed to maximize collaboration and market efficiency.</p><p>Growth happens when people can learn, share and earn. We don’t have to re-invent how the Internet works. <strong>We only have to make it better.</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.turboeth.xyz/">https://www.turboeth.xyz/</a></p>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/4e04b978f30580983d19002a1e073ba52b4b71218429fb3b314e695430c1f57f.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[The Bridge to Nowhere. Rethinking Cross-Chain State Management Systems.]]></title>
            <link>https://paragraph.com/@kames-geraghty/the-bridge-to-nowhere-rethinking-cross-chain-state-management-systems</link>
            <guid>iVJ4jTPeTV9S7XH9pYtn</guid>
            <pubDate>Sat, 25 Feb 2023 13:41:29 GMT</pubDate>
            <description><![CDATA[We are thinking about bridges incorrectly. What we have today will not scale to a future with millions of users. It’s lacks the elegance to construct complex financial instruments. Let me explain… Today we use a Beacon and Receiver model - Chain A sends a message to Chain B. Creating an explicit link between chains. But this is a bridge to nowhere. It lacks the properties required for complex expression of protocols. It works today. But what we have today is primitive. It’s a stone wheel, but...]]></description>
            <content:encoded><![CDATA[<p>We are thinking about bridges incorrectly.</p><p>What we have today will not scale to a future with millions of users.</p><p>It’s lacks the elegance to construct complex financial instruments.</p><p>Let me explain…</p><p>Today we use a Beacon and Receiver model - Chain A sends a message to Chain B. Creating an explicit link between chains. <strong>But this is a bridge to nowhere</strong>. It lacks the properties required for complex expression of protocols. <em>It works today</em>. But what we have today is primitive. It’s a stone wheel, but what we need is a rocketship.</p><p>In the future, when we have Open Finance hyperstructures, it will require relaying messages between 100’s and possibly 1,000’ of rollups and modular execution environments. The Beacon and Receiver model fails us in this Superchain world.</p><p>It lacks the elegance required for scale.</p><h2 id="h-lessons-from-the-past" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Lessons from the Past</h2><p>I’ve been building applications for awhile now: 15+ years. Witnessing first-hand the evolution the Internet from the perspective of a developer and systems engineer.</p><p>One of the the major evolutions was when frontend applications transitioned from two-way data binding to uni-directional state management. Before React became the primary frontend framework we had frameworks like Angular, Ember, Backbone and others.</p><p>Why did this shift happen though?</p><p>Because a few people noticed two-way data binding was a limiting paradigm. It was difficult to scale. Introduced hard to catch bugs. And lacked elegance. Developers at Facebook, a company focused on Web2 scale, had to go back to the drawing board.</p><p>What was once deemed “crazy” is now the dominant paradigm in frontend applications.</p><div data-type="youtube" videoId="8pDqJVdNa44">
      <div class="youtube-player" data-id="8pDqJVdNa44" style="background-image: url('https://i.ytimg.com/vi/8pDqJVdNa44/hqdefault.jpg'); background-size: cover; background-position: center">
        <a href="https://www.youtube.com/watch?v=8pDqJVdNa44">
          <img src="{{DOMAIN}}/editor/youtube/play.png" class="play"/>
        </a>
      </div></div><h2 id="h-we-need-to-prepare-for-the-future" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">We need to prepare for the future</h2><p>Blockchains are much less forgiving than Frontends. The development lifecycle is months and years, compared to days and weeks. An incorrect assumption or single mistake has lasting impact. <strong>The margin for error is small.</strong></p><p>We don’t have time for mistakes.</p><p><strong>We need to engineer elegant systems from day one.</strong> Web3 Experience Architects need to start thinking about protocol lifecycles in terms of years and centuries.</p><h2 id="h-blockchains-as-a-brain" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Blockchains as a Brain</h2><p>Right now the brain is fairly limited. We only have a couple of neurons.</p><ul><li><p>Ethereum L1</p></li><li><p>Optimism L2</p></li><li><p>Arbitrum L2</p></li><li><p>Base (Soon) L2</p></li><li><p>etc…</p></li></ul><p>Bridging works because the complexity for cross-chain communication is still limited.</p><p>Protocols have rudimentary cross-chain communications requirements.</p><p><strong>But that is going to change.</strong></p><p>We are going to have 100’s and possibly 1,000 of L2 and L3 environments. Open Finance protocols will scale to millions of users. But this future world requires elegant data management systems to enable complex protocol construction.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/kames.eth/8SqDiMe3u71nLF3jv7IsTplJOYU8L4IqYFKDZdfUvsE">https://mirror.xyz/kames.eth/8SqDiMe3u71nLF3jv7IsTplJOYU8L4IqYFKDZdfUvsE</a></p><p>Cross-chain data binding using the Beacon and Receiver model doesn’t get us there.</p><p>Right now DeFi protocols are fairly simple. That will not always be the case.</p><ul><li><p><strong>IF</strong> we have hundreds of L1, L2 and L3 environments this will be due to demand from millions of users.</p></li><li><p><strong>IF</strong> we have millions of user it means we 10X’ed the traditional finance system UX.</p></li><li><p><strong>IF</strong> we 10X TradFi user experience it means we have complex financial instruments.</p></li><li><p><strong>IF</strong> we have complex financial instruments, with millions of users, and hundreds of blockchain execution environments, it means we need to express complex cross-chain protocol interdependencies.</p></li><li><p><strong>IF</strong> we have complex cross-chain protocol interdependencies we need an elegant paradigm to connect protocols that may or may not know about each other.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8e90ce55c090f542f4e2ce9e2bb8ddf0c9461f2dfe671431c9985341bdc03561.png" alt="A Superchain Future" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">A Superchain Future</figcaption></figure><p>In the future, Open Finance protocols will have complex inputs. The inputs will be a combination of storage proofs and zk-SNARKS. The same technologies that are planned in Ethereum protocol roadmap.</p><p>Whether it’s synthetic derivatives, futures exchanges or virtualized fiat (money by decree of network) we need to scale one-to-many and many-to-one smart contract protocol communication systems.</p><p>The Bridge and Relay model fails us.</p><p>We can’t require Protocol Alpha on Chain Alice to initialize a relay request to Protocol Beta on Chain Bob, because it may not even know Protocol Beta exists. We need communication to happen using implicit relationships - <strong>observability.</strong></p><p>Instead of requiring Chain Alice to broadcast a message, we need Chain Bob to observe state changes on Chain A and Protocol Beta react without requiring Chain Alice know anything about Chain Bob.</p><p><strong>Let’s start with a basic example.</strong> A cross-chain automated market maker.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/21043f38548cbf6f946bc20cb16252066ea02b8409b96d996d8ff1825d22d161.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Why would we want to build a cross-chain automated market maker?</p><p>As I discussed in my thought experiment “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/kames.eth/8SqDiMe3u71nLF3jv7IsTplJOYU8L4IqYFKDZdfUvsE">Ethereum in 10 Years: How network states can level up fiat - money by decree.</a>” two money principles dominate our financial systems.</p><p><strong>Hard/Now/Real Money</strong> - money to represent the value we have amassed today.</p><p><strong>Soft/Future/Synthetic Money</strong> - money to represent the value we’re creating tomorrow.</p><p>Soft money at its best is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Futures_exchange">futures exchange</a> and at its worst is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.investopedia.com/terms/c/creditdefaultswap.asp">credit default swaps</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.investopedia.com/terms/c/cdo.asp">collateralized debt obligations</a> that underpinned the 2008 financial crisis.</p><p>Arguably these financial instruments allow people, institutions and states to create an efficient marketplace of ideas, resources and investments i.e. capitalism. It’s how we’ve went from trading seashells on the sea shore to quantitive trading at the speed of light.</p><p>I love decentralized and distributed systems. <strong>But I love capitalism more.</strong> It can be ruthlessly efficient. It can drive people to action. It can move humanity forward.</p><p>But capitalism has flaws. Flaws from centralization. And not simply “fvck the banks” type of centralization. But flaws that arise from centralization in all systems.</p><p><strong>Inability to quickly evolve and adapt.</strong></p><p>Distributed and decentralized systems have an opportunity to make capitalism better.</p><p>Evolving today’s complex finance instruments underpinning our global markets.</p><p>Cross-chain AMMs will replace futures exchanges, collateralized debit obligations swapping, synthetic derivatives and more. But for these complex financial instruments to work at scale, we need elegant <strong>blockchain data management systems</strong>.</p><p><strong>We need implicit observability.</strong> <em>Not explicit data binding.</em></p><p>If you believe in a Superchain future you also believe in cross-chain data observability.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://optimism.mirror.xyz/2jk3D1Y8-hid8YOCUUa6yXmsyzNCYYyFJP0Nhaey9x0">https://optimism.mirror.xyz/2jk3D1Y8-hid8YOCUUa6yXmsyzNCYYyFJP0Nhaey9x0</a></p><p>It’s the only way to scale Open Finance hyperstructures to millions of users.</p><h2 id="h-connecting-neurons-using-succinct-messages" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Connecting Neurons using Succinct Messages</h2><p>Enough pontificating on the future of blockchains. <strong>Let’s get technical.</strong></p><p>A One-to-Many and Many-to-One smart contract protocol data management system will happen using storage proofs and succinct messaging via <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2021/01/26/snarks.html">zk-SNARKS</a>.</p><p>Storage proofs, for those unfamiliar, is a method for validating state on the blockchain.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.laconic.com/blog/what-is-a-proof">https://www.laconic.com/blog/what-is-a-proof</a></p><p>When storage proofs are used in combination with zk-SNARKS magic can happen.</p><p>For example the Celo blockchain has Plumo. Allowing users to efficiently validate the state of the blockchain without requiring a full node. Using only a smartphone it’s possible to verify the state of the blockchain without a centralized authority.</p><p><strong>It’s an incredible achievement!</strong> Even though it was incredibly early.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.celo.org/protocol/plumo">https://docs.celo.org/protocol/plumo</a></p><blockquote><p>Plumo is a zk-SNARK based system that allows mobile and resource constrained nodes on the Celo network to sync to the Celo blockchain faster and with less data. It accomplishes this by using zero-knowledge proofs, which allow the quick verification of the chain syncing computation without having to run it locally.</p></blockquote><p>Storage proofs and zk-SNARKS aren’t limited to <strong><em>off-chain</em></strong> light clients.</p><p>They can power a cross-chain Proof of Consensus using <strong><em>on-chain</em></strong> light clients.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.succinct.xyz/post/2022/09/20/proof-of-consensus/">https://blog.succinct.xyz/post/2022/09/20/proof-of-consensus/</a></p><blockquote><p>Once an on-chain light client can keep track of block headers of another chain, anyone can supply state proofs to prove any information (balances, storage, transactions, events) about the source chain in the context of the target chain. With this, building a cross-chain application, such as a token bridge becomes simple.</p><p>[Using] zero-knowledge proofs to generate a validity proof of the state of a chain according to its consensus protocol. This validity proof can be used to power a [on-chain] gas-efficient light client, which facilitates trust-minimized interoperability.</p></blockquote><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/71b0855bb61dc80113b997fd752fdaa731745c48590099ebcb78fd048d9c5641.png" alt="https://blog.succinct.xyz/post/2022/10/29/gnosis-bridge/" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">https://blog.succinct.xyz/post/2022/10/29/gnosis-bridge/</figcaption></figure><p>Succinct has prototyped a Proof of Consensus protocol. Demonstrating how it’s possible to use zk-SNARKS and state proofs for efficient cross-chain communication.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://demo.succinct.xyz/">https://demo.succinct.xyz/</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/35403a95301a7d17a69f8466d9754f11d1b4ebef0493c90213bcaf9d09713267.png" alt="https://demo.succinct.xyz/" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">https://demo.succinct.xyz/</figcaption></figure><h2 id="h-chain-reaction-protocol" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Chain Reaction Protocol</h2><p>We can take this concept one step further. Remove Bridges/Beacons entirely.</p><p>Everything is a beacon signal: balances, storage, transactions, events, etc…</p><p>Storage proofs can be generated from any data object.</p><p>Why is this important?</p><p>To match the sophistication and scale of the traditional finance system we need to design protocols with complex abstractions. <strong>Complexity requires expressiveness.</strong> Expressive blockchain protocols ultimately require access to all the state and across all time ranges and execution environments - whether broadcast from a beacon or not.</p><p><strong>No small achievement.</strong></p><p>But it is what’s required if we want a global Open Finance system. A decentralized finance system where can start to view blockchains as neurons in a brain and less as islands connected using rickety bridges.</p><p>Where centralized capitalism fails is where decentralized capitalism excels.</p><p><strong>Wisdom of the crowds and hyper efficient markets are the big unlock.</strong></p><p>It’s the next evolution of finance.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>Explicit data binding between chains is an important but simple construct.</p><p>Bridges and Beacons serve an important role today. But alone they’re not capable of scaling to meet the demands of Open Finance hyperstructures.</p><p>We will always require a Beacon and Receiver model. However future bridges will use a Proof of Consensus protocol… and not multi-sigs using 5/7 signer enforcement 🙈</p><h2 id="h-implicit-data-binding-global-observability" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Implicit Data Binding - Global Observability</h2><p>Implicit data binding will be a new frontier in a world with hundreds of L2 and millions of users. <strong>It’s going to be difficult.</strong> We’ll need to rethink best practices and patterns.</p><p>If we actually want to build a better future, we need a cross-chain data management system capable of meeting global demands of Open Finance; <strong>security and scale.</strong></p><p>A Chain Reaction protocol.</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">⚇</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d86109c9f4483dfacc36e589b44ebfcf04e9e5defb7befbdaf9049c321c7a246.jpg" alt="What seeds will you plant in the infinite garden?" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">What seeds will you plant in the infinite garden?</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/2029e4d63ac7333c2c697113bb7c9c63f4b8d4ea9e1f2f9e75bd3cce2350ee5a.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Identity. It's how we scale to millions of Web3 users]]></title>
            <link>https://paragraph.com/@kames-geraghty/identity-it-s-how-we-scale-to-millions-of-web3-users</link>
            <guid>KL2B3MLFTPmMUNVYV2HG</guid>
            <pubDate>Thu, 23 Feb 2023 13:53:44 GMT</pubDate>
            <description><![CDATA[Recently I’ve been thinking a lot about what’s required to catalyze Web3 hyper-growth.Where will Web3 products provide 10x value?How do we scale to millions of users and hundreds of thousands of developers?What will be the protocols, systems and networks to ignite massive adoption of decentralized and distributed technologies?We have several interesting verticals: DeFi, DAO, and NFT. But, all lacking the "it" factor for catalyzing hyper-growth. They’re interesting, but standalone they don&apo...]]></description>
            <content:encoded><![CDATA[<p>Recently I’ve been thinking a lot about what’s required to catalyze Web3 hyper-growth.</p><ul><li><p>Where will Web3 products provide 10x value?</p></li><li><p>How do we scale to millions of users and hundreds of thousands of developers?</p></li><li><p>What will be the protocols, systems and networks to ignite massive adoption of decentralized and distributed technologies?</p></li></ul><p>We have several interesting verticals: DeFi, DAO, and NFT.</p><p>But, all lacking the &quot;it&quot; factor for catalyzing hyper-growth. They’re interesting, but standalone they don&apos;t speak to a mainstream audience.</p><p>When I take a step back and ask myself what is the key to unlock massive growth…</p><p><strong>I always come back to Identity.</strong></p><p>Identity is expansive. Prime for disruption. <strong>And unlocks Web3’s full potential.</strong></p><p>It touches almost every aspect of our lives. Whether it&apos;s logging into an application, getting invited to a party or accessing the traditional finance system. Identity is the key we use to unlock the world around us.</p><p><strong>Identity, authentication and access controls are the bedrock of digital systems.</strong></p><p>You don&apos;t build complex systems without these primitives being rock solid.</p><p><strong>Web3 Identity currently lacks elegance.</strong></p><h2 id="h-unlocking-web3s-full-potential" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Unlocking Web3’s Full Potential</h2><p>DeFi, DAOs and NFTs are still experimental.</p><p>Highly speculative, difficult to use and with minimal utility, these experiments don’t offer us a path forward to millions of users in Web3. It isn’t the right infrastructure for hundreds of thousands of developers.</p><p>If we want to cross the Web3 chasm we have to do so methodically.</p><p>We have to work from first principles. <em>And ask ourselves…</em></p><p><strong>How do we unlock Web3’s full potential?</strong></p><h2 id="h-a-web3-of-trust" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">A Web3 of Trust</h2><p>Building a social graph on a blockchain is a bad idea. <strong>It lacks elegance.</strong></p><p><strong>What we need is off-chain social networks.</strong> Identity, authentication and access controls primitives that can give life to more complex Web3 applications. Applications that integrate DeFi, NFT and DAOs into a more organic experience.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b0ed5ec906c2b8933ab137ba68f4c7326e9348ab04d9a9240747dad50560e40e.jpg" alt="Futuristic Web3 Savings Card prototype" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Futuristic Web3 Savings Card prototype</figcaption></figure><p>Without the ability to craft more complex decentralized and distributed applications we will continue to build products, marketplaces and ecosystems that can’t meet the demands and needs of a global Open Finance system.</p><p>We need to combine on-chain and off-chain cryptographic primitives/substrates.</p><p>We need to build products that offer a 10X user experience.</p><p><strong>We need a Web3 of Trust.</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/48a9ba8b573c66803a4958f690a236186a5d8b679c533d9605e0e91ae122853b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Scaling DeFi to millions of users means simple and secure. The amount of protocols and products that can full this niche is limited. It’s a winner take all game, so that means this vertical won’t scale to hundreds of thousands of developers.</p><p>Scaling NFTs to millions of users means building products that enhance a community experience. What you collect is important. But what’s more important is connecting with others who share your values.</p><p>Scaling DAOs to millions of users means building products that provide insights into complex decisions and problems. Blockchains are where decisions are finalized, but not where information is discovered.</p><p>No matter how many times I go back to the drawing board I always arrive at the same conclusion.</p><p><strong>Identity is the massive unlock for onboarding millions of users</strong> <strong>into Web3</strong>.</p><p>Identity helps users pass through essential Web3 commitment thresholds: creating a wallet, managing private keys, distributed access controls, etc… all without requiring a blockchain transaction.</p><p>Identity is an expansive digital frontier - one large enough for hundreds of thousands of developers to build new and interesting products in.</p><p>Identity is the catalyst for hyper-growth of Web3.</p><p>Web3 is more than blockchains and cryptocurrency.</p><p><strong>Web3 is a re-imagining of what’s possible.</strong> A re-thinking of our relationship with cryptography. A chance to build systems, networks and products that weren’t possible before.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/769fac4f33911a3d4b986762c70101ca6e3dcf49b9b3d5d7be12f195b439731e.png" alt="What seeds will you plant in the infinite garden?" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">What seeds will you plant in the infinite garden?</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/ad80b3eeb579cd3ebefffa7b4495ca4b4b3d31096345fdf3f68195fa5f7a0b64.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[What's next? An Identity and Social Network revolution.]]></title>
            <link>https://paragraph.com/@kames-geraghty/what-s-next-an-identity-and-social-network-revolution</link>
            <guid>vrnlhVQAtalL6wvvkxfC</guid>
            <pubDate>Mon, 20 Feb 2023 01:43:05 GMT</pubDate>
            <description><![CDATA[A few things I&apos;ve come to better understand recently.It&apos;s mathematically infeasible to scale Ethereum to accommodate millions of users within the next couple of years. Despite the introduction of rollups, the Ethereum base layer in its current form lacks the capacity for hyper-growth. This is an unfortunate but unavoidable truth.Bridges possess a major design flaw, namely explicit Beacon and Receiver bindings. To establish a scalable blockchain network, that can handle hundreds of i...]]></description>
            <content:encoded><![CDATA[<p><strong>A few things I&apos;ve come to better understand recently.</strong></p><ol><li><p>It&apos;s mathematically infeasible to scale Ethereum to accommodate millions of users within the next couple of years. Despite the introduction of rollups, the Ethereum base layer in its current form lacks the capacity for hyper-growth. This is an unfortunate but unavoidable truth.</p></li><li><p>Bridges possess a major design flaw, namely explicit Beacon and Receiver bindings. To establish a scalable blockchain network, that can handle hundreds of interconnected L1/L2 execution environments and support an Open Finance network designed for millions of users, the only viable option is to employ cross-chain storage proofs using SNARKs. Utilizing SNARKs, relayers can quickly and securely verify transactions without the need for explicit interchain bindings, resulting in a more efficient and reliable network. But we’re not there yet.</p></li><li><p>Despite initial enthusiasm for decentralized finance (DeFi), in its current form, has failed to live up to its promise of banking the unbanked. Instead, we are building complex financial instruments, but for whom? The proliferation of non-sensical governance tokens across many DeFi/CeFi protocols has created additional challenges for the ecosystem. Failure to work from first principles has hampered progress and a fundamental shift is needed if DeFi is to realize its potential as a tool for financial inclusion.</p></li></ol><p><strong>To move the needle forward we need to go back to the drawing boards.</strong></p><p>We need asynchronous protocol construction, distributed circuit-breaker systems, and virtualized fiat (money by decree of network) if we expect to match the sophistication and scale of the current, albeit failing, financial system.</p><p><strong>It can be done.</strong> But it will take time.</p><p>What we <strong>need right now</strong> is to evolve the culture of the Ethereum network state. We need to build networks, connect, and reshape our relationship with decentralized and distributed technology.</p><p>Blockchains cannot currently scale to millions of users, but decentralized identity can.</p><p><strong>On the horizon is a revolution in identity and social networks.</strong></p><p>The advertising models of yesteryear are failing, and big tech is scrambling. The writing is on the wall, as seen with Twitter, Facebook, Google, and Microsoft. Subscription fees for verified digital identities. Artificial intelligence making search an obsolete mode of interacting with the Internet. The walled gardens of the Web2 era are becoming relics, and the walls are starting to crumble.</p><p><strong>We have an opportunity to reimagine and rebuild the internet.</strong></p><p>How will technology serve us for generations to come? The world is changing, and &quot;decentralization&quot; is no longer just a buzzword. <strong>It is a necessity.</strong></p><p>To achieve a decentralized future, we must focus on building strong communities and networks built on trust, transparency, and collaboration. We need to create an ecosystem that welcomes new users and developers, encourages experimentation and innovation, and creates the foundation for an Open Finance revolution.</p><p><strong>Decentralized identity is a key component of this future.</strong></p><p><strong>It’s how we scale all of Web3</strong> - onboarding millions users and hundreds of thousands of developers into the decentralized and distributed future.</p><p>◎</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/94cee91a6ed1df7047892319f59f6b0fa6f48dbbda9f9f4ab61a901afcc0c2e0.jpg" alt="What seeds will you plant in the infinite garden?" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">What seeds will you plant in the infinite garden?</figcaption></figure>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/3fc9e20bf456218de610b5a78c2bb018a02890a2058ec83725f90ca9c13156a9.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Ethereum in 10 Years: How network states can level up fiat - money by decree.]]></title>
            <link>https://paragraph.com/@kames-geraghty/ethereum-in-10-years-how-network-states-can-level-up-fiat-money-by-decree</link>
            <guid>dj9XcNgUd0cwSBls4FLs</guid>
            <pubDate>Sun, 12 Feb 2023 15:33:54 GMT</pubDate>
            <description><![CDATA[It&apos;s 10 years in the future. Ethereum and Celestia are the dominant L1s. Optimism and Fuel provide on-demand rollups and modular execution environments for 10,000,000 of users.Instead of utilizing banks, most individuals interact with Open Financial protocols for their everyday needs. Fiat, money by decree, is still around but the landscape is shifting.“Fiat money is a type of currency that is not backed by a commodity, such as gold or silver. It is typically designated by the issuing go...]]></description>
            <content:encoded><![CDATA[<h3 id="h-its-10-years-in-the-future-ethereum-and-celestia-are-the-dominant-l1s-optimism-and-fuel-provide-on-demand-rollups-and-modular-execution-environments-for-10000000-of-users" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">It&apos;s 10 years in the future. Ethereum and Celestia are the dominant L1s. Optimism and Fuel provide on-demand rollups and modular execution environments for 10,000,000 of users.</h3><p>Instead of utilizing banks, most individuals interact with Open Financial protocols for their everyday needs. Fiat, money by decree, is still around but the landscape is shifting.</p><hr><blockquote><p>“Fiat money is a type of currency that is not backed by a commodity, such as gold or silver. It is typically designated by the issuing government to be legal tender.”</p></blockquote><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Fiat_money">https://en.wikipedia.org/wiki/Fiat_money</a></p><hr><p>Optimism&apos;s rollups are generally used for Open Finance hyperstructures with hard money principles i.e. near-instant debt settlement, collateralized speculation and other financial instruments that use real-world indicators for value accrual. Inherit to <em>hard</em> money is small discrete time ranges (1 - 15 seconds) and minimal &quot;virtualization&quot; of speculation in the form of debt. <strong><em>Hard</em> money rollups prioritize tighter feedback loops and accurately representing the state of the world as it today.</strong></p><p>Fuel&apos;s modular execution environments are used to abstract/virtualize Open Finance protocols with soft money principles i.e. localized fiat currencies, fractional reserve credit lending and other financial instruments that use abstract indicators for long-term value generation. Inherit to <em>soft</em> money is unbounded discrete time ranges (15 seconds to 30+ days) and abstract virtualization of value in the form of speculation. <strong><em>Soft</em> money execution environments prioritize longer feedback loops and coordination games that speculate on the state of the world as it should be tomorrow.</strong></p><h2 id="h-enter-the-thought-experiment" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Enter the Thought Experiment</h2><p>For just a moment I&apos;m going to play fast and loose with definitions of &quot;hard&quot; and &quot;soft&quot; money since it&apos;s my thought experiment and you&apos;re invited to come along for the ride :)</p><p>Hard money can be defined as real financial indicators for the state of the world as it is today.</p><p>Soft money can be defined as abstract financial instruments to bet on (and arrive at) a desired future.</p><p><strong>Hard money enables value accrual in real-time and soft money enables speculating on value creation in the future.</strong> Put another way, hard money is the physical gold humanity has been mining for the last 2,000+ years and soft money is the futures market started in the 1930&apos;s to insulate farmers from risks in emerging global markets.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.cam.ac.uk/research/features/agricultural-markets-and-the-great-depression-lessons-from-the-past">https://www.cam.ac.uk/research/features/agricultural-markets-and-the-great-depression-lessons-from-the-past</a></p><p>“An agriculture commodity future is a contract, traded on an organized market called an exchange, whereby a specific quantity of a certain subset of grades and quality of a natural raw product (such as wheat or cotton) can be contracted for at a set price in advance of its delivery.”</p><p>One might even consider the transition for the gold standard to the fiat standard, in the 1970s, as a bridge between modern hard money and soft money principles. Even Ethereum&apos;s recent upgrade from proof-of-work to proof-of-stake shines light on the idea of hard and soft money principles playing out exclusively in virtual environments.</p><p>And begs the question... <em>Would it have been possible for Ethereum to start out as a proof-of-stake network and forgoing its proof-of-work phase?</em> I would argue no... The bridge from physical to digital (literally buying GPUs and working to secure a network) acted as an essential &quot;hard&quot; money financial instrument required to bootstrap the Ethereum network at that time.</p><p>As the saying goes... <strong>Timing is everything.</strong></p><p>Whether you agree with the transition from the gold to the fiat standard, it can be argued it was a required abstraction for moving into the Digital Era of value creation. Gold as a hard money standard had reached its maturation and we collectively needed a new financial instrument to &quot;upgrade&quot; the value humanity had amassed/accrued up until that point in time.</p><p><strong>Now, let&apos;s move onto doing some future world building.</strong></p><p>It&apos;s 10 years in the future and a network state called &quot;Nexus&quot; exists. Members of this network state have high-conviction decentralized staking of ETH is a positive sum game: <strong>1 + 1 = 3.</strong></p><p>More ETH staked means more higher-order secondary benefits.</p><p>To <em>virtualize</em> the higher-order value creation, a rollup is launched and the native token is an <em>abstract</em> representation of all ETH staked in decentralized protocols, like RocketPool and Lido. Let&apos;s call this new asset nexETH. The aptly named &quot;Nexus Network State&quot; uses succinct storage proofs to efficiently transmute large nexETH &quot;state&quot; snapshots into consumable input for a Open Finance &quot;fiat&quot; protocol that can create money &quot;by order of decree&quot;.</p><p>Example virtual DeFi protocols today are virtual automated market makers.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://coinmarketcap.com/alexandria/glossary/virtual-automated-market-makers-vamms">https://coinmarketcap.com/alexandria/glossary/virtual-automated-market-makers-vamms</a></p><p>Modular math but for abstract Open Finance protocols instead of SNARK construction for low-level blockchain protocols.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2021/01/26/snarks.html">https://vitalik.ca/general/2021/01/26/snarks.html</a></p><p><strong>Members of the &quot;Nexus Network State&quot; bootstrapped a community with <em>hard</em> money principles, but are also free to accrue value on their collective &quot;intuition&quot; by using <em>soft</em> money principles to create &quot;speculative&quot; fiat money that can be used for day-to-day economic operations of the Nexus Network State.</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5794e738fcb251c92ca707ba9927672a1e3bd88fca705f7e654e9e5217dd4bca.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Hard money hyperstructures and soft money protocols need to interoperate.</p><p>And thus we need to start answering the questions...</p><ul><li><p>What are the environmental conditions required for bootstrapping virtual networks?</p></li><li><p>What external pressures are required for the network to evolve at the right time?</p></li><li><p>What are the signals for when a network is reaching a local maxima and either needs to stabilize or enter into a higher plane of abstraction for sustained growth?</p></li></ul><p>Ethereum could stabilize in its current form; aligned mostly with hard money principles.</p><p>Or we can continue to ask the questions...</p><p>&quot;What&apos;s possible?&quot; and &quot;Is it the right time to introduce a catalyst for an Ethereum network state evolution?&quot;</p><p>Can we abstract the hard money principled DeFi protocols we&apos;ve built so far, into more complex, higher-order primitives, that enable us to scale global Open Finance hyperstructures?</p><p><strong>My intuition tells me yes, and it&apos;s the future I&apos;m betting on.</strong></p><p>In short- Leveling up fiat, money by decree, with emerging blockchain technologies and unlocking a new form of human coordination by leveraging both hard and soft money principles to capture the value accrued today and continue to speculate on the value created tomorrow.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/KamesGeraghty">https://twitter.com/KamesGeraghty</a></p>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/68cce35c3c8e6a858494976154a00a4fdeda33b4f2b75de77461faaa02dbe2bc.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[⚡TurboETH - Web3 Application Framework]]></title>
            <link>https://paragraph.com/@kames-geraghty/turboeth-web3-application-framework</link>
            <guid>3sU5b5IfTncmowsZ0ov2</guid>
            <pubDate>Mon, 16 Jan 2023 19:55:07 GMT</pubDate>
            <description><![CDATA[Build Web3 In Turbo ModeTurboETH is a Web3 application build system designed to supercharge developers. Go from idea to production in minutes. www.turboeth.xyzHow It WorksGet started at deploy.turboeth.xyz with an instant deploy to Vercel and Github. Projects are initialized using the TurboETH web3-application template. Application:https://github.com/turbo-eth/template-web3-appPeriphery:https://github.com/turbo-eth/core-wagmihttps://github.com/turbo-eth/erc20-wagmihttps://github.com/turbo-eth...]]></description>
            <content:encoded><![CDATA[<h2 id="h-build-web3-in-turbo-mode" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Build Web3 In Turbo Mode</h2><p>TurboETH is a Web3 application build system designed to supercharge developers.</p><p>Go from idea to production in minutes.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="">www.turboeth.xyz</a></p><h2 id="h-how-it-works" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How It Works</h2><p>Get started at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://deploy.turboeth.xyz">deploy.turboeth.xyz</a> with an instant deploy to Vercel and Github.</p><p>Projects are initialized using the TurboETH web3-application template.</p><p><strong>Application:</strong></p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/turbo-eth/template-web3-app">https://github.com/turbo-eth/template-web3-app</a></p></li></ul><p><strong>Periphery:</strong></p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/turbo-eth/core-wagmi">https://github.com/turbo-eth/core-wagmi</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/turbo-eth/erc20-wagmi">https://github.com/turbo-eth/erc20-wagmi</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/turbo-eth/erc721-wagmi">https://github.com/turbo-eth/erc721-wagmi</a></p></li></ul><p><strong>Developer:</strong></p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/turbo-eth/turbo">https://github.com/turbo-eth/turbo</a></p></li></ul><p>The TurboETH application build system is designed for rapid development. </p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/turbo-eth">https://github.com/turbo-eth</a></p><p>Seamlessly blend today’s leading Internet technologies into a beautiful production ready application that uses a combination of Web2 and Web3 technologies. </p><p>Focus on what makes great applications - an unmatched user experience.</p><p>What is a supercharged Web3 build system exactly? Great question!</p><p>An application build system that integrates cutting edge frontend, backend and cryptography technologies integrated into a single development framework.</p><p>It’s opinionated, but also extreme flexibility.</p><h2 id="h-hybrid-web2web3-applications" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Hybrid Web2/Web3 Applications</h2><p>TurboETH blends traditional Web3 application technologies with cutting-edge Web3 cryptographic primitives. </p><p><strong>Why?</strong> So developers can start building next-generation applications today.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3d646e7fca51ac5817eaad1c0c4ed90db3314cdeb41d442291654f27d4f55646.png" alt="https://twitter.com/ryanberckmans/status/1613947275625074696" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">https://twitter.com/ryanberckmans/status/1613947275625074696</figcaption></figure><h2 id="h-web3-frameworks" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Web3 Frameworks</h2><ul><li><p>RainbowKit - Wallet connection manager</p></li><li><p>Sign-In With Ethereum - Account authentication</p></li><li><p>Etherscan - Blockchain Metadata</p></li></ul><br><h3 id="h-web2-frameworks" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Web2 Frameworks</h3><ul><li><p>Vercel - App Infrastructure</p></li><li><p>Prisma - Database ORM</p></li></ul><br><h3 id="h-developer-experience" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Developer Experience</h3><ul><li><p>TypeScript – Static type checker for end-to-end typesafety</p></li><li><p>Prettier – Opinionated code formatter for consistent code style</p></li><li><p>ESLint – Pluggable linter for Next.js and TypeScript</p></li></ul><h3 id="h-user-interface" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">User Interface</h3><ul><li><p>Tailwind CSS – Utility-first CSS framework for rapid UI development</p></li><li><p>Radix – Primitives like modal, popover, etc. to build a stellar user experience</p></li><li><p>Framer Motion – Motion library for React to animate components with ease</p></li><li><p>Lucide – Beautifully simple, pixel-perfect icons</p></li></ul><h2 id="h-sponsors" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Sponsors</h2><p>⚡TurboETH development is sponsored by 🌐 District Labs.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b6116699a82fbb65a6f9e0db79b3f7bd026d8ef86ffb2dba0285845cbe54a56f.png" alt="https://districtlabs.com/" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">https://districtlabs.com/</figcaption></figure><h2 id="h-acknowledgements" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Acknowledgements</h2><p>Original template was forked from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/wslyvh/nexth">https://github.com/wslyvh/nexth</a></p><p>Underlying wallet manage and design systems were changed, but the template is continuing to use the original folder structure, plus other developer experience optimizations.</p><p>Thank you @wslyvh 🙏</p><p>The Precedent designed system was absorbed (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/steven-tey/precedent">https://github.com/steven-tey/precedent</a>) into TurboETH. </p><p>Muchas gracies @steven-tey 🙏</p>]]></content:encoded>
            <author>kames-geraghty@newsletter.paragraph.com (Kames Geraghty)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/83c533892f109b8424f9517b71f222b4b169a5ca4a71900fc0dbccdf31eaefca.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>