<?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>The price of agency</title>
        <link>https://paragraph.com/@barnabé</link>
        <description>Incentives with a side of Ethereum</description>
        <lastBuildDate>Thu, 20 Aug 2026 00:46:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>The price of agency</title>
            <url>https://storage.googleapis.com/papyrus_images/c64bd87baf134ef9343fcaaf37fa43467a2bad9513ac8b5647ca2ceb97528ca5.jpg</url>
            <link>https://paragraph.com/@barnabé</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Reconsidering the minimum priority fee in Proof-of-Stake]]></title>
            <link>https://paragraph.com/@barnabé/reconsidering-the-minimum-priority-fee-in-proof-of-stake</link>
            <guid>4FLOsKn6kdtT5Xl17Xm5</guid>
            <pubDate>Sat, 25 May 2024 14:04:30 GMT</pubDate>
            <description><![CDATA[Note: This post may be kind of stale already, but its draft having been shared semi-publicly, I am inclined to publish the post anyways, for the sake of record-keeping/future discussions. See also Christine Kim’s write-up of ACDE #188 for an overview of the community’s thinking on this issue.EIP-1559 introduced a new fee market in August 2021, where a user is able to set two parameters with their transactions:maxFeePerGas, denoting their highest willingness to pay per unit of gas.maxPriorityF...]]></description>
            <content:encoded><![CDATA[<p><em>Note: This post may be kind of stale already, but its draft having been shared semi-publicly, I am inclined to publish the post anyways, for the sake of record-keeping/future discussions. See also </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.galaxy.com/insights/research/ethereum-all-core-developers-execution-call-188/"><em>Christine Kim’s write-up of ACDE #188</em></a><em> for an overview of the community’s thinking on this issue.</em></p><hr><p>EIP-1559 introduced a new fee market in August 2021, where a user is able to set two parameters with their transactions:</p><ul><li><p><code>maxFeePerGas</code>, denoting their highest willingness to pay per unit of gas.</p></li><li><p><code>maxPriorityFeePerGas</code>, denoting a “tip” accruing to the producer of the block.</p></li></ul><p>EIP-1559 is also characterised by the introduction of a <code>baseFeePerGas</code>, a minimum price per unit of gas which the transaction must incur to be included. The <code>baseFeePerGas</code> is updated dynamically, according to the demand for inclusion, as measured by block fullness.</p><p>According to the analysis by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://timroughgarden.org/papers/eip1559.pdf">Tim Roughgarden</a>, in most cases when the chain is not congested and there is enough room to include all transactions that pay at least the base fee, a user should set their <code>maxPriorityFeePerGas</code> to some value μ which compensates the block producer for the cost of including an extra unit of gas to their block.</p><h2 id="h-gas-opportunity-cost-in-proof-of-work" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Gas opportunity cost in Proof-of-Work</h2><p>In Proof-of-Work, a block producer indeed incurred such a cost. Adding an extra unit of gas translates to extra block size (in bytes) and thus longer propagation time over the network. This longer propagation time meant that a miner who solves the PoW puzzle could be “front-run” by another successful miner with a lighter block. Thus a miner ought to require at least the opportunity cost of adding extra weight to their block.</p><p>This opportunity cost was estimated in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@barnabe/rk5ue1WF_">this note</a> among others. The calculation gets a bit tricky accounting for possible MEV in the block (more on this in the following), but lands at roughly 1 Gwei as a good value that the block producer should demand to compensate for the extra orphaning risk (assuming no MEV).</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e2d82878a26b506c1b56f3c09e5ae88849e08a3615c4f91ea82c92a367ebf0e6.png" alt="Assuming 0 MEV, requiring at least 1 Gwei per gas from transactions is good enough to compensate the block producer in a PoW regime." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Assuming 0 MEV, requiring at least 1 Gwei per gas from transactions is good enough to compensate the block producer in a PoW regime.</figcaption></figure><p>In practice, clients such as Geth would set a “minimum priority fee” parameter, and would not include transactions which pay them a lower (effective) priority fee than this minimum.</p><h2 id="h-transaction-opportunity-cost-in-proof-of-stake" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Transaction opportunity cost in Proof-of-Stake</h2><p>The move to Proof-of-Stake proceeded in September 2022, a year after EIP-1559 was deployed. In PoS, the block production schedule is quite different. Instead of <em>multiple</em> miners competing at the same time to find a PoW puzzle solution that will allow them to produce the next block, a <em>single</em> validator is given a window of time to produce their block, at t = 0 seconds at the start of a 12-second slot. Attesters ensure the timeliness. Attesters will wait for 4 seconds to receive a block, after which they will vote as if the block was missing. In other words, the validator has now 4 seconds to propagate their block on their network, without fear of anyone front-running them.</p><p>In this case, what does the priority fee pay for, when there is no congestion to enter the block? It is quite unclear, since there is no reason for the validator to not include an extra transaction as long as it pays them <em>something</em>. A validator could set their minimum priority fee to any value they desire of course, but could find themselves in situations where they drop transactions from their produced block for no good reason, as the following example shows:</p><blockquote><p>Suppose Alice the block producer sets her minimum priority fee to 1 Gwei, the default value under Proof-of-Work. If Bob the user sent a transaction paying Alice 0.5 Gwei priority fee, Alice would not include it, even when including it would not hurt her chances of landing her block in time. Alice simply foregoes 0.5 Gwei per gas which Bob’s transaction uses. This is an argument for Alice to set her minimum priority fee as low as possible, as long as she can ensure to be timely, which the 4 seconds in principle give her plenty of time to be.</p></blockquote><p>The same dynamics were observed by Péter here:</p><div data-type="twitter" tweetId="1790718281164202420" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;favorite_count&quot;:118,&quot;possibly_sensitive&quot;:false,&quot;created_at&quot;:&quot;2024-05-15T12:18:02.000Z&quot;,&quot;display_text_range&quot;:[0,278],&quot;entities&quot;:{&quot;hashtags&quot;:[{&quot;indices&quot;:[4,13],&quot;text&quot;:&quot;Ethereum&quot;}],&quot;urls&quot;:[{&quot;display_url&quot;:&quot;github.com/ethereum/pm/is…&quot;,&quot;expanded_url&quot;:&quot;https://github.com/ethereum/pm/issues/1043#issuecomment-2112364286&quot;,&quot;indices&quot;:[255,278],&quot;url&quot;:&quot;https://t.co/9v8WXlJ2pN&quot;}],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1790718281164202420&quot;,&quot;text&quot;:&quot;The #Ethereum ecosystem seems to be gravitating towards 0 miner tips.\n\nGeth fixing it&apos;s minimum tip enforcement to 1 gwei caused some outrage; blobs do not tip miners at all; and multi-dimentional gas might also not.\n\nI&apos;m worried this again favours MEV.\n\nhttps://t.co/9v8WXlJ2pN&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;186028018&quot;,&quot;name&quot;:&quot;Péter Szilágyi&quot;,&quot;screen_name&quot;:&quot;peter_szilagyi&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://storage.googleapis.com/papyrus_images/f2559ce8bfd2db50b39ae0d97dadf6c058848fba3ec17a6b9bfdc4c632820ccf.jpg&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1790718281164202420&quot;],&quot;editable_until_msecs&quot;:&quot;1715779082000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;conversation_count&quot;:15,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;card&quot;:{&quot;card_platform&quot;:{&quot;platform&quot;:{&quot;audience&quot;:{&quot;name&quot;:&quot;production&quot;},&quot;device&quot;:{&quot;name&quot;:&quot;iPhone&quot;,&quot;version&quot;:&quot;13&quot;}}},&quot;name&quot;:&quot;summary_large_image&quot;,&quot;url&quot;:&quot;https://t.co/9v8WXlJ2pN&quot;,&quot;binding_values&quot;:{&quot;photo_image_full_size_large&quot;:{&quot;image_value&quot;:{&quot;height&quot;:419,&quot;width&quot;:800,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=800x419&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;thumbnail_image&quot;:{&quot;image_value&quot;:{&quot;height&quot;:200,&quot;width&quot;:400,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=400x400&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;description&quot;:{&quot;string_value&quot;:&quot;Meeting Info May 23, 2024, 14:00-15:30 UTC Stream: https://youtube.com/live/jO-BbmSsT_0 Zoom: shared on #allcoredevs Discord channel shortly before the call Ethereum Protocol Calls Calendar subscri...&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;domain&quot;:{&quot;string_value&quot;:&quot;github.com&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;thumbnail_image_large&quot;:{&quot;image_value&quot;:{&quot;height&quot;:300,&quot;width&quot;:600,&quot;url&quot;:&quot;https://storage.googleapis.com/papyrus_images/5631c5c87978ef1a7e5d18f5371b6c9e601c497b1812fcd5a22b2af2b1c49d3a.jpg&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;summary_photo_image_small&quot;:{&quot;image_value&quot;:{&quot;height&quot;:202,&quot;width&quot;:386,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=386x202&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;thumbnail_image_original&quot;:{&quot;image_value&quot;:{&quot;height&quot;:600,&quot;width&quot;:1200,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=orig&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;site&quot;:{&quot;scribe_key&quot;:&quot;publisher_id&quot;,&quot;type&quot;:&quot;USER&quot;,&quot;user_value&quot;:{&quot;id_str&quot;:&quot;13334762&quot;,&quot;path&quot;:[]}},&quot;photo_image_full_size_small&quot;:{&quot;image_value&quot;:{&quot;height&quot;:202,&quot;width&quot;:386,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=386x202&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;summary_photo_image_large&quot;:{&quot;image_value&quot;:{&quot;height&quot;:419,&quot;width&quot;:800,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=800x419&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;thumbnail_image_small&quot;:{&quot;image_value&quot;:{&quot;height&quot;:72,&quot;width&quot;:144,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=144x144&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;thumbnail_image_x_large&quot;:{&quot;image_value&quot;:{&quot;height&quot;:600,&quot;width&quot;:1200,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=png&amp;name=2048x2048_2_exp&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;photo_image_full_size_original&quot;:{&quot;image_value&quot;:{&quot;height&quot;:600,&quot;width&quot;:1200,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=orig&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;photo_image_full_size_alt_text&quot;:{&quot;string_value&quot;:&quot;Meeting Info May 23, 2024, 14:00-15:30 UTC Stream: https://youtube.com/live/jO-BbmSsT_0 Zoom: shared on #allcoredevs Discord channel shortly before the call Ethereum Protocol Calls Calendar subscri...&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;vanity_url&quot;:{&quot;scribe_key&quot;:&quot;vanity_url&quot;,&quot;string_value&quot;:&quot;github.com&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;photo_image_full_size&quot;:{&quot;image_value&quot;:{&quot;height&quot;:314,&quot;width&quot;:600,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=600x314&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;summary_photo_image_alt_text&quot;:{&quot;string_value&quot;:&quot;Meeting Info May 23, 2024, 14:00-15:30 UTC Stream: https://youtube.com/live/jO-BbmSsT_0 Zoom: shared on #allcoredevs Discord channel shortly before the call Ethereum Protocol Calls Calendar subscri...&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;thumbnail_image_color&quot;:{&quot;image_color_value&quot;:{&quot;palette&quot;:[{&quot;rgb&quot;:{&quot;blue&quot;:255,&quot;green&quot;:255,&quot;red&quot;:255},&quot;percentage&quot;:91.69},{&quot;rgb&quot;:{&quot;blue&quot;:120,&quot;green&quot;:120,&quot;red&quot;:121},&quot;percentage&quot;:3.69},{&quot;rgb&quot;:{&quot;blue&quot;:166,&quot;green&quot;:115,&quot;red&quot;:53},&quot;percentage&quot;:3.15},{&quot;rgb&quot;:{&quot;blue&quot;:168,&quot;green&quot;:173,&quot;red&quot;:191},&quot;percentage&quot;:0.87},{&quot;rgb&quot;:{&quot;blue&quot;:44,&quot;green&quot;:37,&quot;red&quot;:36},&quot;percentage&quot;:0.45}]},&quot;type&quot;:&quot;IMAGE_COLOR&quot;},&quot;title&quot;:{&quot;string_value&quot;:&quot;Execution Layer Meeting 188 · Issue #1043 · ethereum/pm&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;summary_photo_image_color&quot;:{&quot;image_color_value&quot;:{&quot;palette&quot;:[{&quot;rgb&quot;:{&quot;blue&quot;:255,&quot;green&quot;:255,&quot;red&quot;:255},&quot;percentage&quot;:91.69},{&quot;rgb&quot;:{&quot;blue&quot;:120,&quot;green&quot;:120,&quot;red&quot;:121},&quot;percentage&quot;:3.69},{&quot;rgb&quot;:{&quot;blue&quot;:166,&quot;green&quot;:115,&quot;red&quot;:53},&quot;percentage&quot;:3.15},{&quot;rgb&quot;:{&quot;blue&quot;:168,&quot;green&quot;:173,&quot;red&quot;:191},&quot;percentage&quot;:0.87},{&quot;rgb&quot;:{&quot;blue&quot;:44,&quot;green&quot;:37,&quot;red&quot;:36},&quot;percentage&quot;:0.45}]},&quot;type&quot;:&quot;IMAGE_COLOR&quot;},&quot;summary_photo_image_x_large&quot;:{&quot;image_value&quot;:{&quot;height&quot;:600,&quot;width&quot;:1200,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=png&amp;name=2048x2048_2_exp&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;summary_photo_image&quot;:{&quot;image_value&quot;:{&quot;height&quot;:314,&quot;width&quot;:600,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=600x314&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;photo_image_full_size_color&quot;:{&quot;image_color_value&quot;:{&quot;palette&quot;:[{&quot;rgb&quot;:{&quot;blue&quot;:255,&quot;green&quot;:255,&quot;red&quot;:255},&quot;percentage&quot;:91.69},{&quot;rgb&quot;:{&quot;blue&quot;:120,&quot;green&quot;:120,&quot;red&quot;:121},&quot;percentage&quot;:3.69},{&quot;rgb&quot;:{&quot;blue&quot;:166,&quot;green&quot;:115,&quot;red&quot;:53},&quot;percentage&quot;:3.15},{&quot;rgb&quot;:{&quot;blue&quot;:168,&quot;green&quot;:173,&quot;red&quot;:191},&quot;percentage&quot;:0.87},{&quot;rgb&quot;:{&quot;blue&quot;:44,&quot;green&quot;:37,&quot;red&quot;:36},&quot;percentage&quot;:0.45}]},&quot;type&quot;:&quot;IMAGE_COLOR&quot;},&quot;photo_image_full_size_x_large&quot;:{&quot;image_value&quot;:{&quot;height&quot;:600,&quot;width&quot;:1200,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=png&amp;name=2048x2048_2_exp&quot;},&quot;type&quot;:&quot;IMAGE&quot;},&quot;card_url&quot;:{&quot;scribe_key&quot;:&quot;card_url&quot;,&quot;string_value&quot;:&quot;https://t.co/9v8WXlJ2pN&quot;,&quot;type&quot;:&quot;STRING&quot;},&quot;summary_photo_image_original&quot;:{&quot;image_value&quot;:{&quot;height&quot;:600,&quot;width&quot;:1200,&quot;url&quot;:&quot;https://pbs.twimg.com/card_img/1982994769325555712/71neqSB4?format=jpg&amp;name=orig&quot;},&quot;type&quot;:&quot;IMAGE&quot;}}},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/peter_szilagyi">
              <img alt="User Avatar" class="twitter-avatar" src="https://storage.googleapis.com/papyrus_images/f2559ce8bfd2db50b39ae0d97dadf6c058848fba3ec17a6b9bfdc4c632820ccf.jpg" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/peter_szilagyi" class="twitter-displayname">Péter Szilágyi</a>
              <p><a target="_blank" href="https://twitter.com/peter_szilagyi" class="twitter-username">@peter_szilagyi</a></p>
    
            </div>
            <a href="https://twitter.com/peter_szilagyi/status/1790718281164202420" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      The <a class="twitter-content-link" href="https://twitter.com/hashtag/Ethereum" target="_blank">#Ethereum</a> ecosystem seems to be gravitating towards 0 miner tips.<br /><br />Geth fixing it's minimum tip enforcement to 1 gwei caused some outrage; blobs do not tip miners at all; and multi-dimentional gas might also not.<br /><br />I'm worried this again favours MEV.<br />
      
      
        <a class="twitter-card-link" href="https://t.co/9v8WXlJ2pN" target="_blank">
          <div class="twitter-media twitter-summary-large-image">
            <img src="https://storage.googleapis.com/papyrus_images/5631c5c87978ef1a7e5d18f5371b6c9e601c497b1812fcd5a22b2af2b1c49d3a.jpg" >
            <div class="twitter-summary-card-text">
              <span>github.com</span>
              <h2>Execution Layer Meeting 188 · Issue #1043 · ethereum/pm</h2>
              <p>Meeting Info May 23, 2024, 14:00-15:30 UTC Stream: https://youtube.com/live/jO-BbmSsT_0 Zoom: shared on #allcoredevs Discord channel shortly before the call Ethereum Protocol Calls Calendar subscri...</p>
            </div>
          </div>
        </a>
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/peter_szilagyi/status/1790718281164202420" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            118
          </a>
          <a target="_blank" href="https://twitter.com/peter_szilagyi/status/1790718281164202420"><p>7:18 AM • May 15, 2024</p></a>
        </div>
    
  </div> 
  </div><h2 id="h-mev-pbs-and-timing-games" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">MEV, PBS and timing games</h2><p>But yep, things are never so simple of course, and with the emergence of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/timing-games-implications-and-possible-mitigations/17612?u=barnabe">timing games</a> (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arxiv.org/abs/2305.09032">paper</a>), we’ve observed that block producers would rather not be early in sending their blocks to the network, instead waiting as late as possible in these 4 seconds to accumulate more transactions and publish a more valuable block. Further, the intermediation of block proposing and building with MEV-Boost adds another layer to this game, which we describe below.</p><p>In MEV-Boost, a validator is able to receive offers from builders, who take care of sequencing the execution payload against a fee paid to the validator (known here as “proposer”). In this setting, the builder is the “block producer”, and thus is the entity who is responsible for deciding whether a transaction should be included or not.</p><p>Is the “minimum priority fee” relevant for a builder? The builder is assumed to be a fairly sophisticated entity, an “active block producer” in the language of “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eprint.iacr.org/2024/331">Transaction Fee Mechanism Design in a Post-MEV World</a>” (Bahrani et al., 2024), which chooses to include transactions based on their capacity to offer them MEV. We may readily consider priority fees offered by users through their <code>maxPriorityFeePerGas</code> parameter as MEV, as it is indeed value received by the “miner”. But again, should a builder set some kind of <em>minimum</em> priority fee to filter which transactions to include in their block?</p><p>I argue that it is unnecessary. A builder may wish to include a transaction paying 0 <code>maxPriorityFeePerGas</code>, if the builder is able to extract value from this transaction. The builder, as a sophisticated entity, would be perfectly able to decide which transactions are meaningful to them to include.</p><p>While this argument may hold, this does not tell us what a <em>user</em> should set their priority fee to. Should it be zero? This is where timing games come into play. If a block proposer wishes to play timing games, the transaction must compensate the proposer for the extra propagation time which the block will require, and which would force the proposer to forego extra MEV from delaying their proposal a little longer and play the timing game. In other words, if <em>x</em> dollars of includable MEV accumulate per unit of time, and adding some transaction forces the proposer to propose <em>t</em> units of time earlier in order to make the 4-second deadline, then the proposer should expect at least <em>t * x</em> dollars from the transaction as priority fees to compensate for the extra delay which the transaction imposes. All of this however is on the user to set, and not relevant to the minimum priority fee parameter.</p><p>Suppose a validator <strong>does not</strong> connect to MEV-Boost, and builds their block locally instead. There are now two cases:</p><ul><li><p><strong>The validator does not play timing games:</strong> This is then the case described in the section above, where the validator ought to set their minimum priority fee parameter low enough to not reject transactions for no reason.</p></li><li><p><strong>The validator plays timing games:</strong> In this case, the validator will wish to demand more fees from transactions to compensate them for the extra propagation time which prevents them from playing the timing game further. Mediating this demand with the minimum priority fee is however tricky, as the minimum priority fee ought to be dynamic and estimate <em>x</em>, i.e., the ambient measure of how much MEV accumulates per unit of time. I don’t believe Geth developers or other EL clients need to consider this case, as a validator playing timing games on their own may be considered sophisticated enough to be able to set their minimum priority fee themselves.</p></li></ul><h2 id="h-wat-do" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Wat do</h2><p><strong>In my opinion, clients should set their minimum priority fee parameter to a residual value, possibly 0.</strong> The priority fee pays for priority when the chain is congested, in which case the minimum priority fee is not relevant. When the chain is not congested, the minimum priority fee ought to compensate for some cost which the block producer incurs for including a transaction in their block. In Proof-of-Work, this cost was well-founded, and induced by the race to publish one’s block first when successful. In Proof-of-Stake, the minimum priority fee may be relevant in the context of timing games, but not so in the context of builders who decide which transactions to include.</p><p>I would also argue that 0 miner tips do not “favor MEV”. They are a natural consequence of market forces pushing them down, as the example above showed. These minimum fees were reasonable in Proof-of-Work, where the miner incurred a real opportunity cost from including an extra transaction due to orphan risk. They may be reasonable in the context of timing games again, where a block producer must be compensated for forfeiting potentially more value than they could obtain by delaying a bit longer. But it is not reasonable to “pay miners for their service”, if this cost does not represent any tangible, economic phenomenon, as is the case in Proof-of-Stake without timing games. In fact, for the block proposer to demand a minimum fee where this minimum fee is not required for proper network functioning <em>is</em> MEV, i.e., a rent which the proposer obtains at the expense of the user or the network more generally. It is therefore reasonable to deprecate the minimum priority fee if it does not help convey a real cost which the proposer must be compensated for.</p>]]></content:encoded>
            <author>barnabé@newsletter.paragraph.com (The price of agency)</author>
        </item>
        <item>
            <title><![CDATA[More pictures about proposers and builders]]></title>
            <link>https://paragraph.com/@barnabé/more-pictures-about-proposers-and-builders</link>
            <guid>gDzCJKmCp0fA7IEonJoq</guid>
            <pubDate>Tue, 23 Apr 2024 14:05:47 GMT</pubDate>
            <description><![CDATA[In the beginning, there was nothing. Then a protocol appeared.The protocol had aims, wanted to achieve lots. But first, it had to recruit disciples who would execute its vision.The protocol created rights and assigned them to earthly entities, such that these “validators” could propose blocks and attest to them. In this piece, we are not concerned with attesting (for now), and we’ll narrow our attention to proposing rights.Thicc arrow indicates that proposing rights cover two distinct rights:...]]></description>
            <content:encoded><![CDATA[<p>In the beginning, there was nothing. Then a protocol appeared.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/035d020b86270c1daf713339edafa8f3d3d099ac9e0c3d431e7bbaae42a7edf7.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 protocol had aims, wanted to achieve lots. But first, it had to recruit disciples who would execute its vision.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e1bea84cc4038a7c5533f498ed92edb47c1e8d0d0c0fd646b535793541c7ba4f.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 protocol created rights and assigned them to earthly entities, such that these “validators” could propose blocks and attest to them.</p><p>In this piece, we are not concerned with attesting (for now), and we’ll narrow our attention to proposing rights.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2844f7b3652d6ce10ab1681e5e5fb671b05e5edac4ffb7eef6988a45a52f3ac2.png" alt="Thicc arrow indicates that proposing rights cover two distinct rights: The right to propose the consensus data block (&quot;beacon block&quot;) and the right to propose the execution payload." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Thicc arrow indicates that proposing rights cover two distinct rights: The right to propose the consensus data block (&quot;beacon block&quot;) and the right to propose the execution payload.</figcaption></figure><p>The proposing rights allow a validator, once selected, to create and propose a block. The block contains both consensus data (e.g., attestations), as well as an execution payload (a list of user transactions). When the validator receives the proposing right, it receives implicitly the right to decide the contents of both attributes, consensus data and execution payload.</p><h2 id="h-mev-boost-enters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">MEV-Boost enters</h2><p>Validators soon figured out that the ability to decide on the contents of the execution payload had value. They could remain the <em>proposers</em>, but create <em>building rights</em> to be allocated to <em>builders</em>, who would offer them a well-sequenced payload against payment.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/096c6959d395f7802979a9bd5838c7fb1bdb7c17434fe39dd62499b2e246de05.png" alt="Dashed arrow indicates that the validator can choose to allocate building rights to a builder, but is not required to do so." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Dashed arrow indicates that the validator can choose to allocate building rights to a builder, but is not required to do so.</figcaption></figure><p>The allocation of building rights is performed today with <strong>MEV-Boost</strong>, an out-of-protocol side-car allowing validators to passively listen to offers from builders for their building rights, and strike a deal with builders. The deal is mediated by relays, entities trusted by both sides of the deal.</p><h2 id="h-block-auction-epbs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Block-auction ePBS</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://barnabe.substack.com/p/seeing-like-a-protocol">What the protocol cannot see, it cannot control</a>, so the community soon got to work on getting some of that infrastructure back into the fold of their protocol. This direction is known as “enshrined Proposer-Builder Separation”, and would allow proposers (validators) to strike deals with builders without the assistance of the relay as a trusted entity. In particular, the aims of ePBS are three-fold:</p><ol><li><p><strong><em>Possibility</em> of unconditional payment:</strong> If the proposer commits to a builder bid in time (the commitment is attested to by the attesters, becomes canonical and does not get re-orged), then the proposer receives payment from the builder whether the builder delivers their part or not.</p></li><li><p><strong><em>Possibility</em> of trust-minimised proposer/builder interaction:</strong> The protocol offers a path, secured by its set of attesters and the fork choice rules of the protocol, for proposers and builders to strike deals without the aid of a relay.</p></li><li><p><strong>Consensus/execution separation:</strong> Decoupling the consensus data from the execution payload in two distinct objects recognised by the protocol allows consensus data to be written on-chain even in the event of a delivery failure of the execution payload.</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6fc7113a8b3498b67cceccdbfdbb210c03cd5fc3e46f044e1808b68415d8e56e.png" alt="The dashed arrow represents the possibility for the beacon proposer to commit to a separate builder." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">The dashed arrow represents the possibility for the beacon proposer to commit to a separate builder.</figcaption></figure><p>I present above “<strong>Block-auction ePBS</strong>”, the ePBS version which most directly maps to MEV-Boost. The “block-auction” refers to the requirement for the beacon proposer (the validator, who proposes the partial block containing consensus data) to commit to the contents of the execution payload when they commit to a builder. In other words, the proposer receives builder <strong>protocol-bids</strong>, which take the form of <code>PB = { value, builderID, txroot }</code> (note that we omit signatures from these messages, but these and more which will be introduced below are all assumed to be signed by the right parties).</p><p>When the beacon block is produced and contains <code>PB</code>, the fork choice will only accept an execution payload whose contents hash to <code>PB.txroot</code>. In this sense, the beacon proposer remains the true execution proposer (“<strong>beacon-exec proposer</strong>”), who earns the rewards received from the builder and who ultimately signs off on the the contents which are to be appended to the chain. The protocol-bids are objects legible to the Ethereum protocol, and commit a builder to deliver the block which the beacon-exec proposer has commissioned. You can read more about design constraints and implementation concerns in the rich literature from the Prysm boyz Potuz and Terence (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@potuz/rJ9GCnT1C">ePBS specification notes</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@potuz/SJdXM43x0">ePBS Forkchoice annotated spec</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/block-auction-epbs-versus-execution-ticket/19232?u=barnabe">Block-auction ePBS versus Execution Tickets</a>).</p><p>This version of ePBS satisfies points 1. to 3. Yet, importantly, point 2. must not be understood as making relays obsolete somehow. It remains entirely possible for beacon-exec proposers to participate in the trusted MEV-Boost market in the following way:</p><ul><li><p>Listen to <strong>MEV-Boost-bids</strong> from builders through the MEV-Boost channel.</p></li><li><p>Choose a bid <code>MB = { value, builderID, txroot }</code>.</p></li><li><p>Commit to the protocol bid <code>PB = { 0, MB.builderID, MB.txroot }</code></p></li><li><p>Receive <code>MB.value</code> as part of the execution payload, the way it is done today under MEV-Boost, with relays ensuring that the builder does include a valid payment for <code>MB.value</code> in the payload they sequence.</p></li><li><p>The builder <code>MB.builderID</code> then delivers the execution payload hashing to <code>MB.txroot</code>. If they fail to do so, the beacon proposer does not receive payment.</p></li></ul><p>We thus stress here that points 1. and 2. of ePBS only embody <em>possibilities</em> of transacting in a trust-minimised fashion with builders, rather than <em>requirements</em>. The natural question is then to understand <em>when</em> would proposers choose to use the trusted, out-of-protocol MEV-Boost interaction. One reason to keep using MEV-Boost instead of the honest ePBS behaviour: Builders are not required to commit to a payment upfront in MEV-Boost, compared to ePBS, meaning that builders may pay the beacon proposer from the gains they realise within the payload they sequence. See also Terence’s “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@ttsao/bypassing-relayer">ePBS: Bypassing Relayer</a>” post for more thoughts on the topic.</p><p>A final point on block-auction ePBS: <strong>Timing games</strong>. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arxiv.org/abs/2305.09032">Timing games</a> occur when a proposer delays as much as possible the proposing of their block in order to obtain more value for it. In block-auction ePBS, as the execution payloads are determined at the release of the beacon block, the timing games will be played by validators who will attempt to delay the release of the beacon block as much as possible to commit to bids of higher value. This clues us in to the fact that we’ve not decoupled the consensus and the execution as much as we could, so let’s investigate a different design.</p><h2 id="h-slot-auction-epbs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Slot-auction ePBS</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/0x03c29504CEcCa30B93FF5774183a1358D41fbeB1/CPYI91s98cp9zKFkanKs_qotYzw09kWvouaAa9GXBrQ"><strong>Slot-auction</strong></a><strong> ePBS</strong> makes a subtle design change, with big consequences. Beacon proposers may now commit to protocol-bids taking the shape of <code>SPB = { value, exectutionProposerID }</code>, so no longer committing to the contents of the execution payload, but committing to a specific execution proposer instead. The contents of the block released in the second step may be determined just in-time by the execution proposer, who is sovereign in their step. The execution proposer is even able to offer building rights to a distinct entity from themselves, a builder commissioned to deliver a block whose commitment is selected by the execution proposer.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4a659595d5d9205b11cf367dc5f9ecab5c6ee9dd9a8d661291c5e826d648dcab.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 execution proposer will likely wish to wait until the last possible moment to propose the execution payload, so we assume timing games will be played in the execution step.</p><p>It is less clear what will happen during the beacon step. To understand, we introduce <strong>SA-MEV-Boost</strong>, a slot-auction-friendly version of MEV-Boost which offers to the beacon proposer off-band bids <code>SMB = { value, executionProposerID }</code>. The beacon proposer running SA-MEV-Boost may select some bid <code>SMB</code>, and commit to the protocol bid <code>SPB = { 0, executionProposerID }</code>. The execution proposer <code>executionProposerID</code> is then trusted to produce an execution payload that pays out <code>SMB.value</code> to the beacon proposer, yet, unlike MEV-Boost, there is no relay at this point vouching for the payment existing. The relationship between the beacon proposer and the execution proposer under SA-MEV-Boost may thus be mediated in a similar fashion to optimistic relays in ePBS: Someone, e.g., an <strong>escrow-relay</strong>, may guarantee the availability of funds to pay the beacon proposer <code>SMB.value</code> is any outcome, but the escrow-relay is not responsible for the delivery of the execution payload once available.</p><p>Once the execution proposer <code>executionProposerID</code> is selected, this proposer may use the classic MEV-Boost infrastructure to allocate building rights to an outside builder. The relays on this side function as relays do in the current version of ePBS, i.e., combine the functions of escrow-relay (if optimistic) and delivery of the payload. When both SA-MEV-Boost and MEV-Boost were summoned, the delivered payload should contain a payment from the builder to the execution proposer, as well as a separate payment from the execution proposer to the beacon proposer.</p><p>The beacon proposer is faced with the following decision tree:</p><blockquote><p>Listen to bids (protocol or SA-MEV-Boost) and either:</p><ol><li><p><strong>Commit to themselves as execution proposer.</strong> Listen to (MEV-Boost) builder bids and</p><ol><li><p>Select the highest MEV-Boost-bid they receive, or</p></li><li><p>Build locally.</p></li></ol></li><li><p><strong>Commit to someone else as execution proposer.</strong> Receive the value either from the unconditional payment protocol facility or from SA-MEV-Boost guarantees.</p></li></ol></blockquote><p>It appears to me that the expected value for the beacon proposer is maximised by choosing to commit to themselves first, and then running MEV-Boost to obtain the best offer from an outside builder. The auction for execution rights offers a valuable good: The knowledge that one is in control of proposing the execution payload, which may be leveraged by preconfirmation systems. However, between the settlement of the auction allocating execution proposing rights and the expected delivery of the execution payload, more transactions may trickle in and increase the value which a builder may extract from sequencing. By committing to themselves, the beacon proposer may become the “<strong>preconfirmation leader</strong>”, to whom tips are paid for the service of preconfirming. The preconfirmed transactions may then be sequenced according to the commitments offered by the beacon proposer, using e.g., <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://efdn.notion.site/PEPC-FAQ-0787ba2f77e14efba771ff2d903d67e4#2dfe02bc6dcd48878c82647676ca8d68">PEPC-Boost</a> (“relay-enforced proposer commitments”, see also the bonus section at the end) to ensure that the builder delivers an execution payload satisfying the preconfirmations entered into by the beacon proposer.</p><p>Still, the discussion above makes it quite clear that we expect quite a lot of involvement from the beacon proposer into the make-up of the execution payload, and if it is indeed a dominant strategy for the beacon proposer to commit to themselves and run MEV-Boost in the last-mile to allocate building rights, we haven’t gained much either in terms of diminishing the system’s reliance on relays. Yet slot-auction ePBS may function as an intermediate step towards total decoupling. We need another intermediate step before getting there, so let’s introduce it next.</p><h2 id="h-slot-auction32-epbs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Slot-auction+32 ePBS</h2><p>We suggest now to let the beacon proposer of slot <em>N</em> determine the execution proposer of slot <em>N</em>+32, i.e., run a <strong>Slot-auction+32 ePBS</strong>. While this may seem like a strange construction, we intend here to decouple further the ties between the beacon proposer and the execution proposer of a given slot. In particular, this construction allows <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/fun-and-games-with-inclusion-lists/16557#model-and-assumptions-for-inclusion-lists-1"><strong>spot inclusion lists</strong></a>, created by the beacon proposer of slot <em>N</em> and binding the execution proposer of slot <em>N</em> (the latter being decided by the beacon proposer of slot <em>N</em>-32).</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ea2a52bc661efe02d4ca64ed84617f367cbcd74e547e4386ab17f12101c3923c.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>Despite this, we may very well still be in a scenario where it is a dominant strategy for the beacon proposer of slot <em>N</em> to commit to themselves as execution proposer for slot <em>N</em>+32, so we’re not done with our decoupling. In particular, the beacon proposers still receive all of the value to be obtained from being in control of the allocation of execution proposing rights. The thrust behind <strong>Execution Tickets</strong> (ETs) is indeed to completely remove this dependency, and while the design we arrive at isn’t exactly ETs, we will argue that it achieves this goal too. Let’s move on to this construction.</p><h2 id="h-execution-auctions-fka-aps-burn" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Execution Auctions (f.k.a. APS-Burn)</h2><p>We suggest now a construction similar to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/mev-burn-a-simple-design/15590?u=barnabe"><strong>MEV-Burn</strong></a>, except applied to the beacon proposer of slot <em>N</em> deciding which bid to commit to, where the bids are made for the execution proposing rights of slot <em>N</em>+32. This construction, <strong>Execution Auction</strong>, implements the concept of “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/MtvbGuBbNqI?si=YXgH0JkF8EZCMvPg">Attester-Proposer Separation</a>”, introduced by Justin Drake at Columbia Cryptoeconomics 2023. As argued in my previous post <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/LJUb_TpANS0VWi3TOwGx_fgomBvqPaQ39anVj3mnCOg">Reconsidering the market structure of PBS</a>, APS may be understood as the market structure decoupling the roles of attesting/validating and proposing execution blocks, with ETs embodying a specific allocation mechanism realising this market structure. Execution Auction is an allocation mechanism too, a separate proposal from Execution Tickets which may offer some advantages as discussed below.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/33b0cead483c61ea6106b8fcd32bf19536fb53ed4efd7e4268e77c0ebcbd3112.png" alt="The arrows are now solid lines, as attesters force the beacon proposer to choose a specific bid. The execution proposer however retains agency to allocate their building rights to a builder." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">The arrows are now solid lines, as attesters force the beacon proposer to choose a specific bid. The execution proposer however retains agency to allocate their building rights to a builder.</figcaption></figure><p>Attesters of slot <em>N</em> observe the bids made to purchase the execution proposing rights of slot <em>N</em>+32. The beacon proposer is expected to commit to the highest bid they have seen, while attesters vote for the beacon block only if the committed bid is consistent with the highest bids observed by the attesters.</p><p>MEV-Burn as presented in the past, where the beacon proposer of slot <em>N</em> commits to a bid for the allocation of the execution proposing rights of slot <em>N</em>, had in my sense two fairly fatal issues:</p><ol><li><p><strong>The value-in-flight issue:</strong> Beacon proposers and attesters were aiming to come to consensus over the value of an object whose value was drastically varying while the consensus was attempted. Indeed, transactions to be included in the execution payload of slot <em>N</em> trickle in during the auction, and prices on CEXes also vary at the same time, leading to a high variance of the value which the auction is trying to elicit. The design relying on slot auctions run 32 slots in advance ensures that a very small amount of information is relevant at the time of the auction to estimate the value which the execution payload may eventually return, so it looks more like a bet on the average.</p></li><li><p><strong>The long-lived preconfirmation issue:</strong> Forcing the beacon proposer to select the highest bid offered for the execution proposing rights of the same slot also means that it is impossible to offer <em>long-lived preconfirmations</em>, which are committed to before slot <em>N</em>. If same-slot MEV-Burn was offered as a slot auction instead of a block auction, it would remain possible for the winning execution proposer to offer <em>short-lived</em> <em>preconfirmations</em>, committed to between the settlement of the allocation of the execution proposing rights and the ultimate delivery of the execution payload. With Execution Auctions, the winner of the execution proposing rights has 32 slots before their turn comes to propose the execution payload, and may offer long-lived preconfirmations in the meantime.</p></li></ol><p>Execution Auctions offer an alternative allocation mechanism to ETs for the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/LJUb_TpANS0VWi3TOwGx_fgomBvqPaQ39anVj3mnCOg">market structure of validator-proposer separation</a>. In my sense, this shape of the allocation mechanism may make more sense than the format offered by ETs, but let’s quickly (re-)introduce ETs first before making that case.</p><h2 id="h-execution-tickets-ets" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Execution Tickets (ETs)</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/execution-tickets/17944?u=barnabe">Suggested by Justin Drake and Mike Neuder</a>, ETs allow execution proposers to go to a market where they purchase “tickets” redeeming execution proposing rights at some indeterminate time into the future.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3d242f54b6fc3c7813fff1192bf2c4d02339667e8ba7961e65b78df7c41d85ff.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>Another way to put it is the protocol endowing some new, abstract module referred to as “ET market” with the execution proposing rights. These rights are purchased from the ET market by execution proposers. However, questions remain on how exactly should these rights be purchased. In particular, it is not clear to me whether beacon proposers should be responsible for including ET market-related transactions on-chain, or whether execution proposers should have this responsibility. One may imagine the inclusion of ET market-related transactions to possibly induce MEV, whether these transactions are included in the beacon block or in the execution payload. This risk appears to be mitigated by Execution Auctions.</p><p>Another possible benefit of Execution Auctions is the deterministic redemption period, e.g., 32 slots. ETs redeem at some random time in the future, which helps with mixing in case a single execution proposer is able to capture a set of tickets sequentially, but creates more variance for the ticket holder, likely to be reflected in the ticket price which the protocol captures. It would be possible to make ETs redeem at some deterministic time into the future though, but then one may want to think about designing for the case where an execution proposer is able to acquire many consecutive tickets. Meanwhile, Execution Auctions enforce a new competition for every slot.</p><p>In either case, ET or Execution Auctions, I believe measures should be considered to prevent toxic multi-block MEV from perturbing the liveness of the chain, when a single execution proposer is in control of several consecutive slots. Toxic multi-block MEV appears to mostly come from the proposer “freezing” the state for one slot (including no or very few transactions) and reaping the MEV in the subsequent slot.</p><p>Two measures appear to help: <strong>Inclusion lists</strong> and <strong>missed slot penalties</strong>. Inclusion lists ensure that the execution proposer must include some minimum amount of transactions supplied by the beacon proposer, so that the execution payload cannot be <em>empty</em>. However, an execution proposer can defeat inclusion lists by going offline for one slot, and <em>miss</em> proposing the execution payload. In this case, missed slot penalties would create economic pressure for the execution proposer to propose something, and something non-trivial by the property of inclusion lists.</p><p>A final note: A third mechanism recently proposed by Conor McMenamin, “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/appointed-execution-proposers-because-the-proposer-you-know/19284?u=barnabe">Appointed Execution Proposers</a>”, also performs the allocation for the Attester-Proposer Separation market structure, with a separate shape than either Execution Auctions or ETs. I hope to discuss some of the ideas in this post in the future, tying it back to rainbow staking among other topics.</p><h2 id="h-wat-do" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Wat do?</h2><p>I think we need to understand better the conditions required for something like Execution Auctions or ETs to make sense.</p><ul><li><p>From a consensus perspective, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://warpcast.com/fradamt/0xb680e91d">it may well be the case that Single Slot Finality or two-step PBS is a requirement for Slot-auction+32 ePBS and beyond</a>, as the execution proposer delivery guarantees are weaker when the beacon proposer of the current slot <em>N</em> did not select the execution proposer for the same slot <em>N</em>.</p></li><li><p>The pipeline <strong>[block-auction ePBS → slot-auction ePBS → slot-auction+32 ePBS → Execution Auctions]</strong> offers an iterative approach to offering a true validator-proposer separation, including the ability to capture MEV. However, the question of MEV-Burn applied to the slot-auction+32 mechanism remains: Does this clearly separate MEV rewards from beacon proposers, which is one of the goals of validator-proposer separation? If residual MEV exists due to the imprecision of the MEV-Burn mechanism, timing games in the beacon proposer step may persist. A chaotic idea would consist in endowing execution proposers with the execution proposing rights, such that the MEV-Burn gadget is applied to the execution proposer of slot <em>N</em> instead of to the beacon proposer of slot <em>N</em>, in order to allocate the execution proposing rights of slot <em>N</em>+32.</p></li><li><p>The pipeline <strong>[block-auction ePBS (→ slot-auction ePBS (→ slot-auction+32 ePBS)) → ETs]</strong> is also possible (with SA-ePBS and SA+32-ePBS both optional intermediate steps in-between), yet the jump to an ET world appears more daunting. The main question on my mind is how bad is the MEV created by ETs, i.e., how to design their integrations as new “native assets” offered by the Ethereum protocol.</p></li></ul><h2 id="h-bonus-et-tu-pepc" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Bonus: Et tu, PEPC?</h2><p>Proposer commitments have seen more interest with preconfirmations recently, so it might be worth wondering where <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://efdn.notion.site/PEPC-FAQ-0787ba2f77e14efba771ff2d903d67e4"><strong>PEPC</strong></a><strong> (Protocol-Enforced Proposer Commitments)</strong> fits in all this, and how one might think about it given the framework of proposing and building rights.</p><p>Essentially, PEPC is a solution for the execution proposer to sell <em>programmable building rights</em>. In PEPC’s design, a proposer could add programmable validity conditions (proposer commitments) on the block they propose, such that the block could not be included in the canonical Ethereum chain if it it did not satisfy the proposer commitments registered by the proposer. In other words, the execution proposer creates the specs, or the template, by which the resulting block must be created, and the builders engaged by the proposer are tasked with delivering the block according to its specifications.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/606c20e488590297a83356761c0365c3d165f7203943bc25c5f185f647acdd9a.png" alt="Note that PEPC is also bypassable with PEPC-Boost, as beacon-exec proposers could commit to a trivial commitment and trust that the relay enforces proposer commitments communicated by the proposer to the relay off-chain." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Note that PEPC is also bypassable with PEPC-Boost, as beacon-exec proposers could commit to a trivial commitment and trust that the relay enforces proposer commitments communicated by the proposer to the relay off-chain.</figcaption></figure><p>As an example:</p><ol><li><p>Proposer Alice could commit to include a transaction with hash <code>0xabc</code> at index 0 of the block. The commitment is registered on-chain, in Ethereum, either before Alice’s slot or when she proposes her beacon block containing proposer commitments in step 1. pictured above.</p></li><li><p>Proposer Alice offers to sell her building rights, listening to offers from a set of builders.</p></li><li><p>Builder Bob offers Alice 10 ETH for the building rights. Alice accepts by signing Bob’s offer, including it in her commitments.</p></li><li><p>Bob is aware of Alice’s commitment (it is on-chain, hence common knowledge to all participants building on Alice’s branch). Bob makes a block containing <code>0xabc</code> at index 0. If Bob made any other block, e.g., including transaction <code>0xdef</code> at index 0, the block would be ruled out as invalid by validators of the chain, but Alice would still get paid 10 ETH since Bob’s commitment was written on-chain as a protocol-bid.</p></li></ol><p>Note that Bob accounts for Alice’s commitment in the bid amount he offers, e.g., Alice’s commitment may have reduced the value which Bob could extract from the block, as otherwise Bob could have made use of the first spot in the block, a very valuable position to be in. But the ability for Alice to make these commitments may have value to herself beyond what Bob could have done with it, e.g., Alice may collect <strong>preconfirmation tips</strong> from offering the commitment, or, using proposed PEPC features, she could have segmented blockspace such that partial builders each build a specific part of the block, or even sold the building rights of the block in advance (“blockspace future”, though perhaps the latter is less important if the execution proposing rights themselves are sold in advance too).</p><p>How does PEPC architecturally fit with the previous designs, where the beacon proposer and execution proposer are decoupled? If Alice is known to be the execution proposer of slot <em>N</em> say, 32 slots in advance, then Alice may register commitments in advance. The question is whether these commitments would be registered as either EVM transactions, in which case they should be included by execution proposers in their transaction payloads; or as special consensus-layer transactions, in which case they should be included by beacon proposers in their beacon blocks.</p><ul><li><p>If execution proposers register commitments, Alice has up to slot <em>N</em>-1’s execution proposal (inclusive) to register her commitments.</p></li><li><p>If beacon proposers register commitments, Alice has up to slot <em>N</em>&apos;s beacon proposal (inclusive) to register her commitments.</p></li></ul><p>In either case though, Alice depends upon proposers other than herself for the registration of her commitments. She is also unable to register commitments “just-in-time”, as she is about to sell her building rights to builders. PEPC was originally proposed as an overlay to the “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://efdn.notion.site/PEPC-FAQ-0787ba2f77e14efba771ff2d903d67e4#a2d2d17abe90414e88d667ad10d91afe">two-slot PBS</a>” design, as presented above with “Block-auction PEPC”.</p><p>We could go further to obtain all the properties we care about:</p><ul><li><p>Decouple the beacon proposer from the execution proposer fully.</p></li><li><p>Let the execution proposer make just-in-time commitments, i.e., offer the execution proposer the ability to create the block template right before the delivery of the block by committed builders.</p></li></ul><p>To get there, we need a <strong>three-step PBS construction</strong>, depicted here:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/14881b00c93e1f27ae49bd56466c3e714d549f1aca3fbd09dfb466162cfcfb1c.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><hr><p><em>Opinions my own, reviews are not endorsements: I benefited greatly from conversations with Potuz and Terence, the RIG team + Mike + Fradamt + Ansgar, the ephema crew, Drew, Conor, a discussion with Taiko folks, and many others. It takes a village…</em></p>]]></content:encoded>
            <author>barnabé@newsletter.paragraph.com (The price of agency)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/89bdc22777ddef0ade6dbb2c6ee273653b7463be58f87a1ea64758d55ece7643.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Reconsidering the market structure of PBS]]></title>
            <link>https://paragraph.com/@barnabé/reconsidering-the-market-structure-of-pbs</link>
            <guid>oswWrZymoh6FTj3mGTeq</guid>
            <pubDate>Fri, 01 Mar 2024 08:19:05 GMT</pubDate>
            <description><![CDATA[It’s been a while since I wrote about PBS last, and given the activity on that front over the recent months, this feels like a good time to jump back in. Some of it here is more unstructured thoughts, grasping for connections that aren’t quite clear yet but feel already decent enough to discuss.ePBS is backRecent proposals towards enshrining Proposer-Builder Separation (PBS) (Potuz, Terence) seek protocol support for the market relationship currently known as MEV-Boost, re-opening the box of ...]]></description>
            <content:encoded><![CDATA[<p>It’s been a while since I wrote about PBS last, and given the activity on that front over the recent months, this feels like a good time to jump back in. Some of it here is more unstructured thoughts, grasping for connections that aren’t quite clear yet but feel already decent enough to discuss.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1877684e8803d1378a8ea4811103aba788f74086ba374a37ab6c0c656460730c.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><h2 id="h-epbs-is-back" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ePBS is back</h2><p>Recent proposals towards enshrining Proposer-Builder Separation (PBS) (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/epbs-design-constraints/18728?u=barnabe">Potuz</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/minimal-epbs-beacon-chain-changes/18653?u=barnabe">Terence</a>) seek protocol support for the market relationship currently known as MEV-Boost, re-opening the box of “PBS, wat do?”</p><p>To frame the following discussion, I’ll use a distinction I made in the past, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://barnabe.substack.com/p/pbs">between two components of PBS</a>:</p><ol><li><p><strong>The market structure:</strong> The parties engaged in the market, and their conditions for engaging. Today, it is the idea that we’d unbundle the role of a validator between proposer and builder, and operate a fair exchange between the two unbundled parties, which <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/epbs-design-constraints/18728?u=barnabe">Potuz’s design constraints</a> seek to satisfy.</p></li><li><p><strong>The allocation mechanism:</strong> The space of contracts which the parties may enter into. Today, with MEV-Boost, proposers give up entire rights to their execution payloads after listening to open bids in a “just-in-time” permissionless auction.</p></li></ol><p>My line of arguments with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.notion.so/PEPC-FAQ-0787ba2f77e14efba771ff2d903d67e4?pvs=21">PEPC</a> was that enshrining a specific allocation mechanism such as ePBS could be dangerous, and that we could instead enshrine <em>the ability for the validator to perform programmable fair exchanges</em> instead, allowing maximum latitude for the validator to enter into commitments in their role as proposer. In this note, I go further and question the market structure of validator-as-proposer given recent proposals such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/execution-tickets/17944?u=barnabe">Execution Tickets</a>. ePBS, as proposed recently, enshrines both a specific market structure and an allocation mechanism mostly inherited from MEV-Boost. The market structure determines the space of possible allocation mechanisms, and I argue that some of MEV-Boost’s limitations in inducing a “healthy” builder market may be inherent to the market structure involving validators-as-proposers.</p><p>*<em>In the following, I use the term “payload” rather than “block” to limit the discussion to the execution payload only, and not talk about the delivery of the beacon block, which remains the duty of validators.</em></p><h2 id="h-the-pains-of-being-proposer-as-validator" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The pains of being proposer as validator</h2><p>At its core, the idea of MEV-Boost is: A validator is given <em>proposing</em> <em>rights</em> allowing them to propose an execution payload once their turn is up, and receive proceeds from the use of these rights. Yet the validator wishes to contract out <em>building rights</em> to let someone else (a builder, or builders) decide the contents of the block on their behalf. MEV-Boost allows for this sale to happen, while making it happen <em>wholesale</em>, and <em>spot</em>. Proposers sell off their <em>whole</em> payloads, and builders <em>commit</em> to payload contents at the time of the bid. This is a specific allocation mechanism, and other designs exist, such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/0x03c29504CEcCa30B93FF5774183a1358D41fbeB1/CPYI91s98cp9zKFkanKs_qotYzw09kWvouaAa9GXBrQ">slot or hybrid auctions</a> where the commitment is made to use a payload from a specific builder, but without committing in advance to the specific content of the payload.</p><p>At this point, more than anything, it feels like a protocol limitation that the <em>validator</em> has to remain the payload <em>proposer</em>, that they have to sign off on a process with which they have nothing to do in terms of its construction. In this sense, the signature of the proposer feels almost purely cosmetic, a technical necessity almost. Meanwhile, this technical necessity still requires the complex mechanics of the fair exchange at the heart of MEV-Boost. The exchange in question is that of a builder’s promised output (a block), against the signature of the validator, who assigns building rights while retaining proposing rights for themselves.</p><p>The complexity of operating this exchange cannot be removed, only displaced, allowing certain trust assumptions to change depending on whether the complexity exists out-of-protocol or in-protocol. The protocol taking on this complexity may be worth it, if we felt it was indeed the right idea for the protocol to organise and secure the allocation of building rights. By enshrining this exchange, the protocols continues to make the validator a proposer of the execution payload <em>by default</em>, and the protocol offers the ability to perform the exchange with a specific allocation mechanism, such as “spot, wholesale PBS”, or, as in a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@potuz/ry9NirU2p">recent proposal by Potuz</a>, “0-slot early, wholesale PBS”, a.k.a, slot auctions.</p><p>So now comes the question of deciding whether to enshrine a protocol mechanism for validators-as-proposers and builders to enter into mutually binding agreements with one another, i.e., for validators-as-proposers to have trustless option allowing them the sale of their building rights. An argument made during <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=63juNVzd1P4">the recent (e)PBS breakout call</a> was that the presence of this mechanism would sanitise the supply side of this market, i.e., relays and builders. For relays, the argument goes that since a protocol-approved mechanism exists, we can now take off our plate the responsibility of figuring out sustainable relay economics. For builders, the idea is that we now level the playing field to enter into service, since there exists a trustless, in-protocol way of doing so.</p><p>My issue is that neither assumption really questions whether it is the allocation mechanism or the market structure themselves which have created a market we consider too centralised. Relays today exist specifically to perform the fair exchange between validators-as-proposers and builders, and there is no indication that they would exist under the same shape or with the same economics given a different structure, or indeed exist at all. Builders may also very well be subject to centralising forces due to the wholesale and spot nature of the allocation mechanism. As a result, enshrinement of ePBS could enshrine the very things which cause the problems we seek to solve. So while ePBS does improve upon the status quo of MEV-Boost by increasing the action set of all market participants, could it also cement the existence of a market which is fundamentally unadapted? Are the improvements worth the cost of development, and are they the right boundary to set for the protocol?</p><h2 id="h-are-validators-good-proposers" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Are validators good proposers?</h2><p>We first question the market structure: Why should the right to propose an execution payload be given <em>by default</em> to the validator in the first place?</p><div data-type="twitter" tweetId="1727025552757059631" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;in_reply_to_screen_name&quot;:&quot;colludingnode&quot;,&quot;in_reply_to_status_id_str&quot;:&quot;1727024651367518608&quot;,&quot;in_reply_to_user_id_str&quot;:&quot;1454188871642718211&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;favorite_count&quot;:1,&quot;created_at&quot;:&quot;2023-11-21T18:05:53.000Z&quot;,&quot;display_text_range&quot;:[45,307],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[{&quot;id_str&quot;:&quot;1454188871642718211&quot;,&quot;indices&quot;:[0,14],&quot;name&quot;:&quot;c-node&quot;,&quot;screen_name&quot;:&quot;colludingnode&quot;},{&quot;id_str&quot;:&quot;1273739653825400833&quot;,&quot;indices&quot;:[15,31],&quot;name&quot;:&quot;Elijah&quot;,&quot;screen_name&quot;:&quot;PossibltyResult&quot;},{&quot;id_str&quot;:&quot;2327407569&quot;,&quot;indices&quot;:[32,44],&quot;name&quot;:&quot;toly 🇺🇸&quot;,&quot;screen_name&quot;:&quot;aeyakovenko&quot;}],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1727025552757059631&quot;,&quot;text&quot;:&quot;@colludingnode @PossibltyResult @aeyakovenko yes, but the block producers are not analogous to the PoS validators - the checkpointers are analogous to the PoS validators, and they have very public reputation! e.g. CEXs. anonymous block production is always good, I&apos;d say, but not the same as anon validation&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;720640635376676864&quot;,&quot;name&quot;:&quot;Christopher Goes&quot;,&quot;screen_name&quot;:&quot;cwgoes&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://storage.googleapis.com/papyrus_images/11ae3e7eb82384d15e3699907684ec3e98bfe079c5551b8712883deeed58bff1.png&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1727025552757059631&quot;],&quot;editable_until_msecs&quot;:&quot;1700593553000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;conversation_count&quot;:0,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;parent&quot;:{&quot;in_reply_to_screen_name&quot;:&quot;colludingnode&quot;,&quot;in_reply_to_status_id_str&quot;:&quot;1727024446580637701&quot;,&quot;in_reply_to_user_id_str&quot;:&quot;1454188871642718211&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;reply_count&quot;:1,&quot;retweet_count&quot;:0,&quot;favorite_count&quot;:0,&quot;created_at&quot;:&quot;2023-11-21T18:02:18.000Z&quot;,&quot;display_text_range&quot;:[38,106],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[{&quot;id_str&quot;:&quot;720640635376676864&quot;,&quot;indices&quot;:[0,7],&quot;name&quot;:&quot;Christopher Goes&quot;,&quot;screen_name&quot;:&quot;cwgoes&quot;},{&quot;id_str&quot;:&quot;1273739653825400833&quot;,&quot;indices&quot;:[8,24],&quot;name&quot;:&quot;Elijah&quot;,&quot;screen_name&quot;:&quot;PossibltyResult&quot;},{&quot;id_str&quot;:&quot;2327407569&quot;,&quot;indices&quot;:[25,37],&quot;name&quot;:&quot;toly 🇺🇸&quot;,&quot;screen_name&quot;:&quot;aeyakovenko&quot;}],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1727024651367518608&quot;,&quot;text&quot;:&quot;@cwgoes @PossibltyResult @aeyakovenko but its block producers can be anon and it&apos;s not reputation-based :)&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;1454188871642718211&quot;,&quot;name&quot;:&quot;c-node&quot;,&quot;screen_name&quot;:&quot;colludingnode&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://pbs.twimg.com/profile_images/1894431286598541312/Q5toQSCN_normal.jpg&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1727024651367518608&quot;],&quot;editable_until_msecs&quot;:&quot;1700593338000&quot;,&quot;is_edit_eligible&quot;:false,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false},&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/cwgoes">
              <img alt="User Avatar" class="twitter-avatar" src="https://storage.googleapis.com/papyrus_images/11ae3e7eb82384d15e3699907684ec3e98bfe079c5551b8712883deeed58bff1.png" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/cwgoes" class="twitter-displayname">Christopher Goes</a>
              <p><a target="_blank" href="https://twitter.com/cwgoes" class="twitter-username">@cwgoes</a></p>
    
            </div>
            <a href="https://twitter.com/cwgoes/status/1727025552757059631" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      yes, but the block producers are not analogous to the PoS validators - the checkpointers are analogous to the PoS validators, and they have very public reputation! e.g. CEXs. anonymous block production is always good, I'd say, but not the same as anon validation
      
      
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/cwgoes/status/1727025552757059631" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            1
          </a>
          <a target="_blank" href="https://twitter.com/cwgoes/status/1727025552757059631"><p>12:05 PM • Nov 21, 2023</p></a>
        </div>
    
  </div> 
  </div><p><em>re: this tweet. Note that the original design of PoS on Ethereum was doing </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arxiv.org/abs/1710.09437"><em>FFG as an overlay</em></a><em> on top of good ole PoW chain. Would we be talking about </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/timing-games-implications-and-possible-mitigations/17612?u=barnabe"><em>timing games</em></a><em> in that world? Checkmate.</em></p><p>Let’s try and think about reasons why validators ought to be the default payload proposers. Censorship-resistance may be a reason to keep <em>validators</em> active in the construction of execution payloads. We want the decentralisation of our validator set, a key tool to realise the maximum breadth of preferences possible, to be exercised during payload construction. Yet validators forego this ability entirely today when they use MEV-Boost, or could forego it entirely tomorrow when they would use ePBS. Proposals such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7547">inclusion lists</a> or derivatives (e.g., <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.notion.so/7def9d354f8a4ed5a0722f4eb04ca73b?pvs=21">Multiplicity</a>) exist to remedy this situation, allowing validators to impose binding but non-efficiency-decreasing [1] constraints on payload construction. These proposals are however somewhat orthogonal to the question of allocating proposing rights, in that they bind whomever happens to own this right, whether that is another validator or some other party.</p><p>The answer to why we care for validators to be attributed proposing rights by default may also be: We care for validators who are self-building to impose their favourite ordering or make the payload contents as they please, i.e., we want them to retain building rights along with proposing rights. Indeed, it may be seen as a feature that a decentralised set of participants (the validators) gets their turn one at a time to make a payload as suits them. Alice might like her payloads to be ordered fairly, where the definition of fairness is Alice’s prerogative and may be wildly distinct from Bob’s. In this case, removing the property right of building execution payloads from validators would be an issue: We would no longer guarantee that validators get <em>the option</em> to build execution payloads as they please. I do not personally see that as a major issue. First, the market has revealed the preference of most validators to not exercise this building right themselves, delegating the construction to other parties. Second, while validator agency over payload contents via self-building may be good, the validator has not in my opinion more reason than anyone else to make a “well-ordered payload” (separating out the question of censorship-resistance which was addressed in the previous section). Note that earlier designs such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/mev-burn-a-simple-design/15590">MEV-Burn</a> preserve the default allocation of proposing rights to the validators, while forcing them to give up their building rights.</p><h2 id="h-validator-proposer-separation-aka-attester-proposer-separation-aka-execution-tickets" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Validator-proposer separation (a.k.a., attester-proposer separation, a.k.a., execution tickets)</h2><p>So what if the protocol decided to no longer attribute by default the property right of proposing and building the execution payload to validators, but instead allocated it by some mechanism to parties possibly distinct from validators? If validators are simple “pass-through” intermediaries to a group of third-party entities constructing payloads, wouldn’t it make sense for the protocol to be concerned only with the allocation of proposing rights?</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6027bbc2e6b764b009d6981b7dbe6f3d7242e2de24aa142ab89ac41745acc377.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>This is the gist of execution tickets (ETs), where a permissionless market allows buyers to purchase the right to propose execution payloads. These rights confer the <em>ticket holder</em> with a random allocation, where the holder learns a few moments ahead of time (how long exactly is a parameter to determine) when their ticket will allow them the opportunity to propose an execution payload.</p><p>The protocol may then no longer be concerned with the fair exchange of <em>building rights</em> between a protocol-legible validator-as-proposer and a protocol-illegible builder. The ticket-holder-as-proposer is still legible to the protocol, though the ticket holder may not be staked. In particular, the protocol may no longer be responsible for the fair exchange, if any, between the ticket-holder-as-proposer and builders: The protocol has performed its allocation function when selling the ticket.</p><p>Many questions remain over the viability of execution tickets as allocation mechanisms for the market structure which separates validators from proposers. My personal opinion is that convincing us of the correctness of the market structure would convince us that <em>some</em> mechanism exists to perform the allocation properly, ETs or otherwise, if ETs were indeed not the right mechanism.</p><p>The most potent line of argument I’ve seen questioning the market structure of validator-proposer-separation comes from Quintus Kilbourn and Conor McMenamin in their excellent post “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://collective.flashbots.net/t/when-to-sell-your-blocks/2814?u=barnabemonnot">When To Sell Your Blocks</a>”. Here, they distinguish between <em>passive monopolists</em> and <em>active monopolists</em>. In the <em>validator-as-proposer</em> model, one may consider the validator to be a passive monopolist, who simply listens to bids made by builders for the right to build the payload. In the <em>validator-proposer-separation</em> model, as performed by ETs for instance, the ticket holder would become an <em>active monopolist</em>, who according to Quintus and Conor “cannot be circumvented and is thus able to do things like establish minimum tips that transactions have to pay to be included in their block(s) (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arxiv.org/abs/2311.12731">monopoly pricing</a>) and frontrun time-sensitive flow with little concern for recourse.”</p><p>Quintus and Conor further note:</p><blockquote><p>[T]he distinction between active and passive monopolists doesn’t hold in a rational model. This distinction is derived moreso from observed behaviour from validators. It may be that in the long run, validators approach the rational behaviour of being active monopolists anyway. On the other hand, exogenous reputation concerns may prevent this.</p></blockquote><p>In other words, if validators tend towards rationality in the long run, the difference between validators-as-proposers and ticket-holders-as-proposers may not remain very large. The accelerationist argument for this trend towards rationality has been established in practice, but might there be fundamental attributes which validators possess that would prevent them from ever fully becoming active monopolists? This remains an open question in my sense, one that my recent attempts at further unbundling the roles of a validator under <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/unbundling-staking-towards-rainbow-staking/18683?u=barnabe">the rainbow staking framework</a> gets at. If there is no complementarity between the different roles that a validator may embody (as attester, as censorship-resistance producer, as payload producer), then there is a stronger argument for why nothing in the essence of validators prevents them from trending toward active monopoly, and why unbundling these roles may be a good idea.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>There is almost a fractal construction at play when, in a validator–proposer separation world, the proposer recruited by the protocol could once again delegate the role of construction to another entity, the builder (or builder<em>s</em> if the proposer used a different allocation mechanism for the builder rights such as partial block auctions). So overall, when we talk about market structure or allocation mechanism, we need to precise which market we’re interested in: the market allocating <em>proposing rights,</em> or the market allocating <em>building rights</em>?</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b8e0f9d343bf6d33ea8c5dbcab520d6ca05d2de3c7505e8981243855ff30958c.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>I believe the implementation of ePBS should be considered holistically, in comparison with other choices such as execution tickets and validator–proposer separation more broadly. ePBS does improve upon certain aspects of the current MEV-Boost market, such as providing access to a trustless path and giving us the ability to enshrine different mechanisms like slot auctions. Yet, ePBS is concerned with the allocation of building rights, primarily, and perhaps this is not a problem the protocol should concern itself with. It may be enough indeed to allocate proposing rights, and relinquish control and observability past that point.</p>]]></content:encoded>
            <author>barnabé@newsletter.paragraph.com (The price of agency)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/ca92e7b5afcd7fc897003fd3d616ed19c6a42f3b5f9f7e059d35d93529194e6c.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Semantics of Staking 3: Advanced Constructions]]></title>
            <link>https://paragraph.com/@barnabé/semantics-of-staking-3-advanced-constructions</link>
            <guid>hfB3g75v6LhF8TAhWBHQ</guid>
            <pubDate>Thu, 22 Feb 2024 16:43:48 GMT</pubDate>
            <description><![CDATA[Many thanks to Anders Elowsson for initial discussions prompting these series of posts and for his many helpful comments on the text. Thank you also to the many reviewers whom I have bothered too much with this, and who have provided comments on previous posts or parts of the current one. Photo by William Priess on Unsplash. We have now laid out the pieces which make up our current game of asset Legos. It is time to put them together and see what we can obtain!Part 1: LiquefactionPart 2: Re-s...]]></description>
            <content:encoded><![CDATA[<p><em>Many thanks to Anders Elowsson for initial discussions prompting these series of posts and for his many helpful comments on the text.</em> <em>Thank you also to the many reviewers whom I have bothered too much with this, and who have provided comments on previous posts or parts of the current one.</em> <em>Photo by </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/@william_priess?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"><em>William Priess</em></a><em> on </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/photos/a-reflection-of-a-building-in-a-body-of-water-1jyHQxBAE7A?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"><em>Unsplash</em></a><em>.</em></p><p>We have now laid out the pieces which make up our current game of asset Legos. It is time to put them together and see what we can obtain!</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/v7W2CsSVYW6I_9bbHFDqvqShQ6gTX3weAtwkaVAzAL4">Part 1: Liquefaction</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/96MD_A194uXLLjcOWePW3O2N3P-JG-SHtNxU0b40o50">Part 2: Re-staking</a></p></li><li><p><strong>Part 3: Advanced construction sets for ages 16+</strong></p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1fd27cda9a649826f6b7e81ceefc4ff4eeb4671581210b9ef40b6b85ef1792a1.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><h2 id="h-lnoeth-native-ssp-re-staking-lrts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">L.[noETH]: Native SSP re-staking (“LRTs”)</h2><p>The first construction considers an SSP re-staking the stake currently under its control. In this case, the node operators of the SSP set their withdrawal addresses to some EigenPod, which binds them to commitments entered into with AVS. This leads to the creation of an asset, <code>L.[noETH]</code>, representing a claim on a re-staked Ethereum protocol collateral. In the following, we depict the creation of this asset, which we could first call L.avs.[noETH] to emphasise that the asset also embodies a claim for revenues received from some AVS. However, we can shorten the notation to simply L.[noETH] when the AVS (or set of AVS) entered into by the operators is clear.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d6ce9a9a24fe1dbb9ac6fc81acdfb5f3f34dbc4e37d12d521a85d811cc3cacf7.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>In the case depicted above, there is a transparent transformation of the L.noETH held by the staker into L.[noETH], under the assumption that the SSP does not keep secret the proceeds received from its re-staking activities for itself. Given that everything is written out on-chain, it would be very easy to detect whether an SSP re-staked the ETH under its custody while keeping the yield received from AVS for itself, <strong>as long as the SSP transparently reveals which validators it operates</strong>. One may imagine a scenario where the SSP enters an off-chain agreement with some AVS, in which case the sequence depicted above looks more like:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6c6c03cfb7bb7e499411f8f0c649f2a996d5af43953e2c61e697cb1e6bfe0dbe.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 can now be seen from the balance sheets, [noETH] (restaked node operator stake) essentially now backs L.noETH (liquid node operator stake). From a distributional perspective, it is an issue that staker capital deployed to the SSP earns yield while the stakers themselves are not remunerated for it, but at least L.noETH is fully backed by [noETH] in the ideal case. It is a lot more problematic whenever [noETH] does fully back L.noETH, e.g., if the SSP did something slashable according to some AVS they entered a commitment with, in which case the value of [noETH] no longer matches the (staker-expected) value of L.noETH.</p><h2 id="h-lnoeth-re-staked-lsts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">[L.noETH]: “Re-staked” LSTs</h2><p>From its inception, EigenLayer has allowed an LST holder to deposit their LST and place them at stake under some EigenLayer pod (note that we use LST to denote L.noETH, in an attempt to leverage pre-existing intuition). While this seems equivalent to the construction detailed above, the nuances are revealed by the balance sheet view:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6a241313a5b54089f03574eb1be105984ebe01e0935c6131425e977626727d18.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 notation makes it clear that there is a difference between the “re-staked” LST we obtain here, <code>[L.noETH]</code>, and the liquid SSP native re-staking position L.[noETH]. But what is this difference exactly? The easiest way to grasp it in our opinion is to unpack how the AVS service is provided, and who is ultimately responsible for the provision of the service.</p><p>Let us start with [L.noETH]. A token representing a claim on some liquid staked ETH is once again put at stake (”re-staked”, in quotes because while the ETH underlying the LST is indeed re-staked, the LST itself is staked for the first time around). Staking the LST at EigenLayer does not force the SSP issuing the LST to engage in service provision for AVS chosen by the LST holder. Indeed, see above that the balance sheet of the SSP is virtually unchanged, as it has no idea that its tokens are staked under EigenLayer. So who does the LST staking concern?</p><p>We’ve discussed the following in our second post:</p><blockquote><p>In short, the AVS demands collateral to offer a service, e.g., an AVS makes the credible claim that an attack on the AVS will lead to the loss of some fraction of the collateral currently held by the AVS. The AVS is thus seen here as a protocol engaging operators for a service. We then disambiguate two ways that re-stakers may interact with the AVS:</p><ul><li><p><strong>Re-stakers as AVS operators:</strong> The AVS embodies a protocol which seeks operators to function, and node operators who re-stake their soETH become operators for the AVS protocol themselves.</p></li><li><p><strong>Re-stakers as capital providers for an AVS operator:</strong> In this case, an AVS operator accepts (re-)staked assets to perform their operator function on behalf of the delegators providing the capital. The re-staker then delegates their re-staked assets to the AVS operator, who performs some function on behalf of the re-staker.</p></li></ul></blockquote><p>LST “re-stakers” are likely simple capital providers. Part of the reason for holding the LST in the first place is to access staking yield without doing the costly work of validation for the Ethereum Proof-of-Stake service. An LST holder who stakes their LST to some AVS may not then be expected to run potentially complex operations and be the AVS operator themselves.</p><p>Let us represent the relationships in the following balance sheets, omitting the Ethereum protocol and the SSP for lack of space. Upon receiving the LST from the staker, EigenLayer provides the staker with its claim [L.noETH]. The LST is then transferred from EigenLayer to the AVS operator, who stakes it in this example under chain Y.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9e30eb8668b9a29af03d1314c1b481d383a542e6b62825b80e2a923bc6043c6b.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><blockquote><ol><li><p>LST “re-staker” places their LST in their EigenPod.</p></li><li><p>LST “re-staker” re-stakes, receiving the [L.noETH] asset. The re-staked asset is delegated to the AVS operator, to operate on the LST “re-staker”’s behalf.</p></li><li><p>AVS operator places the re-staked asset [L.noETH] under chain Y. AVS operator receives the claim for assets locked and received during validation of chain Y, i.e., soY.[L.noETH].</p></li><li><p>AVS operator returns a claim to this re-staked asset, noY.[L.noETH] to the LST “re-staker”.</p></li></ol></blockquote><p>OK, that name <code>soY.[L.noETH]</code> is a mouthful. By <code>soY</code>, we mean that the asset at stake under Secured Chain Y is in a “solo-staking” relationship with Chain Y, i.e., the AVS operator putting [L.noETH] at stake under Chain Y acts like a solo operator from the perspective of Chain Y. What we observe then is that the asset held by the “re-staking” LST holder, noY.[L.noETH], is a claim on soY.[L.noETH], which may grow in value as Secured Chain Y rewards the validation services of the AVS operator. The AVS operator then passes this yield (minus fees to cover its operating costs) to the holders of noY.[L.noETH].</p><p>Notice that the soY asset has changed location between this series of balance sheets and the previous section’s. While the SSP was assuming the role of validator to Secured Chain Y, becoming the AVS operator itself, a new AVS operator is now responsible for the validation services under the “re-staked” LST configuration.</p><p>From a cash flow perspective, in a competitive environment with marginal fees, the staker should see no difference between staking their LST with some AVS taking on the validation services, and holding some LST based on collateral re-staked by the SSP. Yet the ownership of the soY asset denotes further centralisation of the SSP role in the second case, who now assumes node operator duties for two domains. The presence of two logically distinct entities in the LST “re-staking” case (the SSP providing the LST, and the AVS performing validation services) may be a greater force for decentralisation (see Anders’ forthcoming post on the subject).</p><h2 id="h-eth-re-staked-eth" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">[ETH]: “Re-staked” ETH</h2><p>This is maybe a simpler case derived from the construction of a “re-staked” LST as detailed in the previous section. Instead of “re-staking” an LST, an ETH holder could simply place their ETH in some EigenPod, and use it as collateral for a variety of services including securing outside domains. In this case:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a9a97742a0467e61f9be67753fbdf722726c16c687603c29b6800670485774a9.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><blockquote><ol><li><p>ETH “re-staker” places their ETH in their EigenPod, receiving the [ETH]* asset.</p></li><li><p>ETH “re-staker” re-stakes, receiving the [ETH] asset. The re-staked asset is delegated to the AVS operator, to operate on the ETH “re-staker”’s behalf.</p></li><li><p>AVS operator places the re-staked asset [ETH] under chain Y. AVS operator receives the claim for assets locked and received during validation of chain Y, i.e., soY.[ETH].</p></li><li><p>AVS operator returns a claim to this re-staked asset, noY.[ETH] to the ETH “re-staker”.</p></li></ol></blockquote><p>Suppose a single re-staked asset [ETH] is minted from the EigenPod, i.e., the ETH is used to secure only a single AVS. Suppose this AVS is the Ethereum protocol itself. Then we observe that the situation described here and the one described in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/v7W2CsSVYW6I_9bbHFDqvqShQ6gTX3weAtwkaVAzAL4">Protocol staking</a> are isomorphic. Indeed, if chain Y was the Ethereum PoS protocol, we would be simply describing here the act of committing one’s ETH assets to securing the Ethereum chain.</p><h2 id="h-lsoeth-liquid-solo-re-staking" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">L.[soETH]? Liquid solo re-staking</h2><p>This case appears to be well-formed according to our semantics, yet poses issues similar to the liquid solo staking case of L.soETH. In this construction, a solo staker re-stakes their soETH with some AVS. The AVS then attempts to create a fungible position out of the validating service backed by the solo staker’s re-staked collateral. This fungible position can be offered back to the solo staker, so that identically to the case where the solo staker does not wish to have their stake “locked” in some pool without a liquid representation for it, the solo staker’s [soETH] position may be used as collateral or sold elsewhere under the shape of <code>L.[soETH]</code>.</p><p>Yet without guarantees on the solo staker’s behaviour, moral hazard will come into play once again, where the solo staker no longer bears the full risk of their actions. In <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/v7W2CsSVYW6I_9bbHFDqvqShQ6gTX3weAtwkaVAzAL4">Liquid solo validating</a>, we discussed two use cases for a liquid representation of the solo staker’s position:</p><ul><li><p>The solo staker could re-use the L.soETH to collateralise DeFi applications.</p></li><li><p>The solo staker could sell the L.soETH asset.</p></li></ul><p>In either case, it is important for holders of the L.soETH asset to believe that they hold a valuable asset. The value is guaranteed by trusted node operators or incentivised node operators in the respective cases of Lido and Rocket Pool, for instance, and by committing to use an SGX device preventing the solo staker from performing slashable actions in the liquid solo validating case. To get the same guarantee for L.[soETH] assets, a solo staker could commit to use an SGX which prevents the validator from performing slashable actions <strong>also</strong> on the AVS that they have signed up for. The LST contract which minted the L.soETH asset could also embody the role of the EigenPod, registering the commitments entered into by the staker with AVS.</p><p>In the following, the solo staker binds themselves to an SGX device which must be involved whenever the solo staker wishes to produce a signed message for their validating duties on chain Y.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/58351461155f6af5867e47eac60814dc82b0657b11d8c67e5573b26a6a35f551.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><blockquote><ol><li><p>The SGX device generates a private key, a public key, and an attestation proving commitment to a piece of code preventing the solo staker from performing slashable actions with their private signing key.</p></li><li><p>The attestation and public keys are provided to the solo staker.</p></li><li><p>The solo staker registers these with the LST contract deployed on-chain, which is responsible for minting the liquid solo validating asset. The solo staker also provides the contract with ETH, their stake.</p></li><li><p>The ETH is forwarded from the LST contract to the deposit contract, and a staking asset soETH is returned to the LST contract, who now filters the exit of the validator from the PoS protocol.</p></li><li><p>The LST contract mints a new re-staked asset [soETH] from the staked ETH it owns, committing it to an AVS securing chain Y. The LST contract then receives the claim soY.[soETH] from chain Y.</p></li><li><p>The LST contract mints the L.soETH asset, which is a liquid representation of the ETH at stake from the staker.</p></li></ol></blockquote><h2 id="h-llnoeth-liquid-basket-of-avs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">L.[L.noETH]: Liquid basket of AVS</h2><p>Here, an aggregator receiving LSTs (L.noETH) from various holders makes a fungible position out of all of them after they are “re-staked” into various AVS. This case is quite similar to the one described in the previous section on [L.noETH] assets, and just goes the extra step of making the pooled and “re-staked” LSTs available once again as a token. This is also a similar move as described from the shift between noETH and L.noETH, detailed in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/v7W2CsSVYW6I_9bbHFDqvqShQ6gTX3weAtwkaVAzAL4">Liquefaction</a>.</p><p>Denoting this construction with balance sheets, this is indeed similar to the “Re-staked” LSTs, with the additional LST aggregator role intermediating the relationship between EigenLayer and the LST “re-staker”.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2004b5e49e1a8969e0d19d0b0ef889a454b786936b6e6bf801065692319789fa.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><blockquote><ol><li><p>The LST holder gives their LST to an aggregator, who locks it up in their EigenPod.</p></li><li><p>The aggregator issues a re-staked asset from the LST, [L.noETH], via their EigenPod. The re-staked asset is given to chain Y, where an AVS operator runs validation duties on behalf of the aggregator. The AVS operator receives the staking asset of chain Y, soY.[L.noETH], and issues a receipt for the LST aggregator, noY.[L.noETH].</p></li><li><p>The aggregator issues a liquid position L.noY.[L.noETH] to the LST holder, denoting that this position is a liquid representation of the aggregator securing Y and passing on the yield to the LST holder (minus fees and potential penalties).</p></li></ol></blockquote><p>Things get dicey when the LST aggregator decides to opt-in to a new AVS, securing chain Z. We then write L.[L.noETH] to indicate that the aggregator has liquefied a position made up of a bundle of re-staking assets, so that L.[L.noETH] = L.noY.[L.noETH] in the special case where the aggregator only liquefied the re-staked asset securing chain Y.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5c2c4ee775064083b3c5ea42cc037ba8eb6b1bd397141bcaeaa85b3c7b861a4f.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><blockquote><ol><li><p>The LST holder gives their LST to an aggregator, who locks it up in their EigenPod.</p></li><li><p>The aggregator issues a re-staked asset from the LST, [L.noETH], via their EigenPod. The re-staked asset is given to chain Y, where an AVS operator runs validation duties on behalf of the aggregator. The AVS operator receives the staking asset of chain Y, soY.[L.noETH].</p></li><li><p>The aggregator issues a re-staked asset from the LST, [L.noETH], via their EigenPod. The re-staked asset is given to <em>chain Z</em>, where an AVS operator runs validation duties on behalf of the aggregator. The AVS operator receives the staking asset of <em>chain Z</em>, soZ.[L.noETH].</p></li><li><p>The aggregator receives claims from the operator for the assets at stake on chains Y and Z, noY and noZ.[L.noETH]. Based on these assets, the aggregator issues a liquid position <em>L.[L.noETH]</em> to the LST holder, denoting that this position is a liquid representation of the aggregator’s commitments to various AVS, passing on the total yield to the LST holder (minus fees and potential penalties).</p></li></ol></blockquote><p>These baskets of AVS constructions may be profitable for re-stakers to enter into, as the risk of managing a portfolio of dynamic commitments to multiple AVS is abstracted away from the re-staker. The diversification of the portfolio may further allow a reduction of systemic risk, as long as the management of the portfolio is done transparently.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>It appears then that past a certain point, the operations become isomorphic to one another, so there is no need to keep piling up the asset Legos. The important point is to remain clear on which party ultimately owns control of the assets backing various services including consensus mechanisms. We hope that unpacking the sometimes complex relationships between all parties involved focusses our attention on the right spots.</p>]]></content:encoded>
            <author>barnabé@newsletter.paragraph.com (The price of agency)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e3defef9c5c0f45ca551e7d163dee5e45ce35ca2916487115515bed7cc4c546b.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Semantics of Staking 2: Re-staking]]></title>
            <link>https://paragraph.com/@barnabé/semantics-of-staking-2-re-staking</link>
            <guid>RxpXzkrv7o6UeBzDoFrE</guid>
            <pubDate>Thu, 04 Jan 2024 17:57:09 GMT</pubDate>
            <description><![CDATA[Many thanks to Anders Elowsson for initial discussions prompting these series of posts and for his many helpful comments on the text. Thanks also to Caspar Schwarz-Schilling, Julian Ma, Thomas Thiery, Davide Crapis, Mike Neuder, Drew Van der Werff, Kydo and many others for discussions and comments on the text.Photo by Robert Katzki on Unsplash. Following our last post on liquid staking constructions, we are now talking about re-staking. We introduce re-staking with the use case of re-staking ...]]></description>
            <content:encoded><![CDATA[<p><em>Many thanks to Anders Elowsson for initial discussions prompting these series of posts and for his many helpful comments on the text. Thanks also to Caspar Schwarz-Schilling, Julian Ma, Thomas Thiery, Davide Crapis, Mike Neuder, Drew Van der Werff, Kydo and many others for discussions and comments on the text.Photo by </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/@ro_ka?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"><em>Robert Katzki</em></a><em> on </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/photos/pink-and-white-wooden-shelves-8WsB76QE7ic?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"><em>Unsplash</em></a><em>.</em></p><p>Following our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/v7W2CsSVYW6I_9bbHFDqvqShQ6gTX3weAtwkaVAzAL4">last post</a> on liquid staking constructions, we are now talking about re-staking. We introduce re-staking with the use case of re-staking one’s own validating position, before generalising to re-staking any asset, which we’ll use in the third post of this series.</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/v7W2CsSVYW6I_9bbHFDqvqShQ6gTX3weAtwkaVAzAL4">Part 1: Liquefaction</a></p></li><li><p><strong>Part 2: Re-staking</strong></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/62E79gUSqiwS9NEbbfdwTdy7G9Hh098fcV38vWv8VQo">Part 3: Advanced construction sets for ages 16+</a></p></li></ul><p>Let’s dive in!</p><h2 id="h-re-staking-basics" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Re-staking basics</h2><p>Given some asset X, we denote by <code>[X]</code> the re-staked asset, i.e., an asset “boxing” X such that part or all of X may be captured by some party given some arbitrary condition.</p><p>The basic example introduced by EigenLayer is that of a solo staker re-staking their current ETH at stake. To do so, the solo staker updates their withdrawal address to the address of an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.eigenlayer.xyz/restaking-guides/restaking-user-guide/native-restaking/create-eigenpod-and-set-withdrawal-credentials">EigenLayer pod</a>. EigenPods are smart contracts that track which services the solo staker has signed up for to secure with their stake. The EigenPod ultimately becomes the owner of the soETH asset, while it credits the solo staker with a re-staked representation of their staked ETH.</p><p>Ownership of the soETH asset in our framework denotes “first right” over the ETH withdrawn from the Ethereum protocol, i.e., owns a more senior claim than any other participant in the chain. When the solo staker decides to withdraw their ETH from the Ethereum protocol, the withdrawn ETH is filtered through the EigenPod contract, checking whether the solo staker is allowed to redeem the whole amount of soETH or not (we’ll see later when this might not be the case). With our balance sheets:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/90333dca35b375281e087ab7183bb2a49e077670776506f1146c73ead9894b6f.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>We make each step explicit in the following:</p><ol><li><p>The solo staker deposits their ETH to the Ethereum protocol, receiving a virtual soETH position from the Ethereum protocol.</p></li><li><p>The solo staker virtually deposits their soETH to EigenLayer by setting their withdrawal address to the EigenLayer pod’s address. In exchange, the solo staker receives a virtual position [soETH] from EigenLayer, which allows them to eventually run the order of operations backwards.</p></li></ol><h3 id="h-balance-imbalances" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Balance imbalances</h3><p>We can already make some interesting observations from the balance sheets above. The first is that the Ethereum protocol has no conception whatsoever of [soETH], since this is not appearing on its own balance sheet. This issue was discussed in “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/unbundling-pbs-towards-protocol-enforced-proposer-commitments-pepc/13879?u=barnabe">Unbundling PBS: Towards protocol-enforced proposer commitments (PEPC)</a>”: A validator slashed by EigenLayer still has a full staking balance on the Ethereum protocol’s balance sheet, which may induce moral hazard and reward imbalances (an actually half-staked validator still earns full rewards from the Ethereum protocol). We detail the slashing scenario in the following balance sheets, giving arbitrary numbers to illustrate the issue:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/86433e6c50b82d7bf177d34cb175505faf90e704e3d160989d62a5960036c263.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>This issue is fixed as soon as EigenLayer faithfully reports the EigenLayer-slashing of a validator to the Ethereum protocol, re-balancing the sheets. This is possible with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7002">EIP-7002: Execution layer triggerable exits</a>, albeit at a coarse level, since the binary trigger simply exits the validator, but EigenLayer middleware or the EigenPod is still required to trigger the signal to the Ethereum PoS protocol. This action is in EigenLayer’s interests because proper accounting benefits the services that are secured via EigenLayer and also ultimately increases operators’ and re-stakers’ confidence in the faithful execution of the platform.</p><p>A finer trigger could force a partial withdrawal of the validator balance from the Ethereum consensus, without exiting the validator entirely. This is desirable for EigenLayer services who wish to penalise validators partially, without triggering an exit. Note that neither EIP-7002 nor execution layer-triggered partial withdrawals are available on Ethereum mainnet today. Note also that <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@mikeneuder/eip-7251-faq">MaxEB</a> (removing the 32 ETH cap on a single validator’s principal at stake) would combine nicely with partial withdrawals, removing an additional incentive for validators to stay dis-aggregated (running many 32 ETH-validators instead of a single 2048 ETH-validator for instance).</p><p>Lacking this partial withdrawal feature, there is an additional incentive to keep the EigenLayer accounting separate from the Ethereum protocol accounting, which as we noted above may introduce misalignments. In the following, we depict a validator slashed for 8 ETH by EigenLayer, which does not exit the validator from its consensus duties (the ejection balance is 16 ETH):</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9b0d67835580d808d607461c57d2f71b85f7a3f812d06040c770377b8ea80eca.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><h3 id="h-avs-claims" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">AVS claims</h3><p>One may wonder where the 8 [soETH] go in the previous example. This decision is left up to the EigenLayer-powered <strong>Actively Validated Services (AVS)</strong>. An AVS is a service demanding some stake as collateral. The presence of stake allows the service to make a credible commitment to some performance, as the stake may be slashed if the service is not performed properly.</p><p>The re-staking validator enrolls into AVSs via their EigenPod. When they do so, the EigenPod mints new claims which are offered to the AVSs, representing the collateral currently held under the EigenPod. We must now make the distinction between two types of claims:</p><ul><li><p><strong>AVS claims:</strong> We use [soETH] to denote these claims, emphasising that they are derived from the value of the asset in brackets [ ].</p></li><li><p><strong>Re-staker claim:</strong> We will now use [soETH]* to emphasise the special quality of this claim, which is redeemed by the re-staker only after all AVS claims are settled. In other words, the re-staker’s claim has the lowest seniority, redeeming the assets remaining once all other AVS claims are settled.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ea825df6b671aa4ec84f7a973f6010d34e6dc318633916830c853d224d2dbd34.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><blockquote><ol><li><p>The solo staker re-stakes.</p><ol><li><p>soETH is placed under control of the EigenPod.</p></li><li><p>[soETH]* is received by the solo re-staker, a claim for their re-staked assets.</p></li></ol></li><li><p>The solo staker mints a new claim, [soETH] from their EigenPod.</p></li><li><p>The claim is given as collateral to the AVS.</p><ol><li><p>[soETH] is transferred to the AVS.</p></li><li><p>The re-staker is given the receipt avs.[soETH].</p></li></ol></li></ol></blockquote><p>Once the validator acts contrary to the aims of the AVS (e.g., triggering a slashing condition of the AVS), the AVS may decide for instance to burn the validator’s claim for its ETH at stake, or to keep the stake as revenue to the AVS. We illustrate this second option in the following, by assuming that the Ethereum protocol simply credits 8 ETH to the EigenPod as a partial withdrawal following the EigenLayer-slashing report, after which EigenLayer transfers it to the AVS:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/32db62e6b70e13a2c6e977c6eda93a4bf1c83cc65133b83a98410ee85159bbea.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><blockquote><ol><li><p>The AVS slashes the solo re-staker’s collateral.</p><ol><li><p>The AVS’s collateral consists of 32 [soETH]. Once the slashing is reported, the AVS removes 8 [soETH] from the collateral, and reports the slashing to the EigenPod, which also decreases its liabilities by 8 [soETH].</p></li><li><p>The AVS no longer credits 32 avs.[soETH] to the solo re-staker, decreasing this claim by 8 avs.[soETH].</p></li><li><p>Having been slashed by the AVS, the EigenPod decreases the claim of the solo re-staker by 8 [soETH]*.</p></li></ol></li><li><p>The EigenPod reports the slashing to the Ethereum protocol, triggering the withdrawal of 8 ETH.</p><ol><li><p>The claim for assets at stake in the Ethereum protocol goes down to 24 soETH.</p></li><li><p>A partial withdrawal for 8 ETH is processed, and the EigenPod receives the 8 ETH previously locked in the Ethereum protocol.</p></li></ol></li><li><p>The EigenPod forwards the 8 ETH penalty to the AVS, which is free to dispose of it as it pleases.</p></li></ol></blockquote><h2 id="h-re-re-re-re-staking" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Re-re-re-re-…-staking</h2><p>The feature (and risk) offered by EigenLayer is the ability for a re-staker to keep entering new commitments which they promise to honour. In other words, after the stake is re-staked, the re-staked stake can be re-staked again, and again, and again… More practically, the re-staker enters new commitments by signing up to more services via their EigenPod.</p><p>To achieve full generality, and in anticipation of following sections where assets other than soETH are re-staked, we denote by $X$ the asset that is re-staked by the re-staker. Let’s see how re-staking multiple times works out:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/91d407bdc59c2a75c9f5382b3c8be4694e8e41bee1bd910f9f4bbe0abb7d567e.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>We denote by $$[X]^p$$ the asset $$X$$ re-staked $$p$$ times. For now this is a simple definition, but we’ll hint at some of the properties of these assets after detailing the steps of these balance sheets. The EigenPod is able to print these liabilities at-will, forging new assets whenever the re-staker commits themselves to new AVSs.</p><blockquote><ol><li><p>The re-staker puts asset X under control of the EigenPod. This act is a commitment from the re-staker that should they fail to provide the services they sign up for, part or all of asset X may be taken from them. The claim [X]* is received to represent this commitment.</p></li><li><p>We detail here the re-staker committing to secure chain Y.</p><ol><li><p>The re-staker obtains a first re-staked asset [X]¹ by entering into the AVS “Securing chain Y”.</p></li><li><p>The re-staker stakes [X]¹ under chain Y, receiving soY.[X]¹ (a claim for their stake + rewards - penalties). Chain Y must “understand” that a re-staked asset currently secures its protocol, i.e., it must be confident that there is something at stake for someone.</p></li></ol></li><li><p>We detail here the re-staker committing to secure chain Z.</p><ol><li><p>The re-staker obtains a re-staked asset [X]² by entering into the AVS “Securing chain Z”.</p></li><li><p>The re-staker stakes [X]² under chain Z, receiving soZ.[X]² (a claim for their stake + rewards - penalties). Chain Z must “understand” that a re-staked asset currently secures its protocol, i.e., it must be confident that there is something at stake for someone.</p></li></ol></li></ol></blockquote><p>Based on the balance sheets above, we now address some questions. We observe that chain Y receives [X]¹, while chain Z receives [X]². Are these assets of the same type, and could we just say that they both receive assets of type [X]?</p><p>The answer would be <strong>no</strong> if there was a hierarchy of AVS claims. Imagine a scenario where the re-staker performs slashable offences on both chains at the same time, and both chains wish to slash the entire collateral. We can then think of two cases:</p><ul><li><p><strong>Case 1:</strong> The AVSs, here chains Y and Z’s consensus mechanisms, simply burn the tokens that are slashed, which is what most PoS protocols do. When the tokens are burned, then the hierarchy of claims doesn’t really matter: If both chains Y and Z wanted to slash the re-staker for 32 ETH, all they accomplish is burn the same collateral twice.</p><ul><li><p><em>Note:</em> Anders calls this “spree-staking”, re-staking multiple times without claim hierarchy 😊</p></li></ul></li><li><p><strong>Case 2:</strong> The AVSs want to receive the tokens that are at stake, to e.g., compensate some party that was wronged. An example here is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://research.eigenlayer.xyz/t/mev-boost-liveness-first-relay-design/15">MEV-Boost+</a>, the AVS operator is the block proposer, who commits to not messing around with block contents received in the clear, and if they do, they commit to compensating the builder and the relay for the mess. In this case, suppose multiple AVSs redeem their claims at the same time following parallel deviations by the same re-staker, and there isn’t enough at stake to cover all the claims. Then the question of claim seniority or distribution of the payouts becomes relevant.</p></li></ul><h3 id="h-unbundling-avss" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Unbundling AVSs</h3><p>In the previous section, we’ve introduced AVSs, which are services the re-staking validator commits to providing. The commitment is secured via EigenLayer, which takes ownership of the validating re-staker’s stake and settles claims made by AVSs.</p><p>But what is an AVS exactly? Much like we have separated above the LST <strong><em>protocols</em></strong> and the LST <strong><em>operators</em></strong>, it makes sense here to discuss these two functional roles separately, and assign them different assets and claims.</p><p>In short, the AVS demands collateral to offer a service, e.g., an AVS makes the credible claim that an attack on the AVS will lead to the loss of some fraction of the collateral currently held by the AVS. The AVS is thus seen here as a protocol engaging operators for a service. We then disambiguate two ways that re-stakers may interact with the AVS:</p><ul><li><p><strong>Re-stakers as AVS operators:</strong> The AVS embodies a protocol which seeks operators to function, and node operators who re-stake their soETH become operators for the AVS protocol themselves.</p></li><li><p><strong>Re-stakers as capital providers for an AVS operator:</strong> In this case, an AVS operator accepts (re-)staked assets to perform their operator function on behalf of the delegators providing the capital. The re-staker then delegates their re-staked assets to the AVS operator, who performs some function on behalf of the re-staker.</p></li></ul><p>In the sections above, we have identified the validating re-staker as both the capital provider (their own stake is re-staked) and the AVS operator (they are themselves expected to provide some service). We can however consider a different construction, where the validating re-staker <strong>does not</strong> operate the AVS themselves, instead delegating this function to some operator. This could enable solo stakers to compete on yield with integrated Staking Service Providers (SSPs)/operators. The following example introduces a situation where a single AVS operator validates on some chains Y and Z, on behalf of a re-staker. We make the assumption that all AVS claims are of the same type [X] (no claim hierarchy).</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9f3d7ed2aa0e6ef8fc141c4b2390a4ba9ff91550ae20193f20b23adff351707b.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><blockquote><ol><li><p>The re-staker puts asset X under control of the EigenPod. This act is a commitment from the re-staker that should they fail to provide the services they sign up for, part or all of asset X may be taken from them. The claim [X]* is received to represent this commitment.</p></li><li><p>We detail here the re-staker committing to secure chain Y, <strong><em>delegating the validation duties to the AVS operator</em>.</strong></p><ol><li><p>The re-staker obtains a re-staked asset [X] by entering into the AVS “Securing chain Y”.</p></li><li><p><strong><em>The re-staker gives the re-staked asset [X] to an AVS operator, obtaining the “receipt” noY.[X].</em></strong></p></li><li><p><strong><em>AVS operator</em></strong> stakes [X] under chain Y, receiving soY.[X] (a claim for their stake + rewards - penalties). Chain Y must “understand” that a re-staked asset currently secures its protocol, i.e., it must be confident that there is something at stake for someone.</p></li></ol></li><li><p>We detail here the re-staker committing to secure chain Z, <strong><em>delegating the validation duties to the AVS operator</em>.</strong></p><ol><li><p>The re-staker obtains a re-staked asset [X] by entering into the AVS “Securing chain Y”.</p></li><li><p><strong><em>The re-staker gives the re-staked asset [X] to an AVS operator, obtaining the “receipt” noZ.[X].</em></strong></p></li><li><p><strong><em>AVS operator</em></strong> stakes [X] under chain Z, receiving soZ.[X] (a claim for their stake + rewards - penalties). Chain Z must “understand” that a re-staked asset currently secures its protocol, i.e., it must be confident that there is something at stake for someone.</p></li></ol></li></ol></blockquote><p>In this paradigm, we recover familiar constructions. An <code>no</code> asset is received by the re-staker, already hinting at the possibility of liquefying such positions. We will discuss these advanced constructions in the next post, but before doing so, let us mention ongoing research on “PBS for AVS” as an approach to reduce operator centralisation.</p><p>Under the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://research.eigenlayer.xyz/t/optimistic-delegation-framework-idea-to-allow-for-native-restaking-without-delegation/39?u=barnabe">Optimistic Delegation Framework (ODF)</a> proposed by Drew Van der Werff (see also <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.google.com/presentation/d/1RArBJP-npCLq9-gQtABgoi4ZNwo6xVkF4iFF3u1qf2k/edit?usp=sharing">0xKydo’s recent Columbia Cryptoeconomics workshop talk</a>), a re-staker is able to contract the operation of the AVSs it signs up for in an open market of “co-processors”. Co-processors can be identified with the “builder” role of PBS, a specialised entity able to run potentially intensive operations, which are inaccessible to unsophisticated or compute-limited entities such as solo stakers. Co-processors submit bids to re-stakers, in a procurement auction-style mechanism, allowing the re-staker to determine the most profitable operator. To further guarantee performance, co-processors are bonded participants, opening themselves to losing their bond if they submit a provably invalid piece of work during the course of their operations.</p>]]></content:encoded>
            <author>barnabé@newsletter.paragraph.com (The price of agency)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/4da67fc809901175c5de7e94e71125d436ffddeba0b6ed82d23147cf77a05488.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Semantics of Staking 1: Liquefaction]]></title>
            <link>https://paragraph.com/@barnabé/semantics-of-staking-1-liquefaction</link>
            <guid>ssXaM4FY9dN5KD0DsnaM</guid>
            <pubDate>Tue, 28 Nov 2023 09:26:32 GMT</pubDate>
            <description><![CDATA[Many thanks to Anders Elowsson for initial discussions prompting these series of posts and for his many helpful comments on the text. Thanks also to Caspar Schwarz-Schilling, Julian Ma, Thomas Thiery, Davide Crapis, Mike Neuder, Drew Van der Werff, Kydo and many others for discussions and comments on the text.Cover photo by Pawel Czerwinski on Unsplash. Staking, re-staking, liquid staking, liquid re-staking, re-staked liquid staking tokens, node operators and capital providers… We’ve observed...]]></description>
            <content:encoded><![CDATA[<p><em>Many thanks to Anders Elowsson for initial discussions prompting these series of posts and for his many helpful comments on the text. Thanks also to Caspar Schwarz-Schilling, Julian Ma, Thomas Thiery, Davide Crapis, Mike Neuder, Drew Van der Werff, Kydo and many others for discussions and comments on the text.Cover photo by </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/@pawel_czerwinski?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"><em>Pawel Czerwinski</em></a><em> on </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/photos/close-up-photo-of-water-drops-fOXvuWswMDs?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash"><em>Unsplash</em></a><em>.</em></p><p>Staking, re-staking, liquid staking, liquid re-staking, re-staked liquid staking tokens, node operators and capital providers… We’ve observed since the launch of the Beacon Chain back in December 2020 an increasingly varied collection of mechanisms and constructions, starting from the protocol’s own staking mechanism.</p><p>In discussions within our team, we felt the need for a precise language allowing us to eliminate ambiguities regarding the architecture of these mechanisms. We hope to emphasise the existence of control points and incentive misalignments through the use of notation and balance sheets, since nuances matter a lot in surfacing properly the opportunities and risks. The exercise was mostly done for our own understanding, but while going through it, we felt it provided a helpful way of aggregating a collection of disparate facts and discussions into one coherent, systematic approach.</p><p>In this post and the next two, we present these constructions along with case studies. We do not aim for an exhaustive review of all the material produced by all the brilliant teams working on these mechanisms, and we mean for our semantics to be updated as needed whenever new facts reveal gaps or errors in our models.</p><ul><li><p><strong>Part 1: Liquefaction</strong></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/96MD_A194uXLLjcOWePW3O2N3P-JG-SHtNxU0b40o50">Part 2: Re-staking</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/barnabe.eth/62E79gUSqiwS9NEbbfdwTdy7G9Hh098fcV38vWv8VQo">Part 3: Advanced construction sets for ages 16+</a></p></li></ul><p>The current series of posts also does not draw conclusions regarding the optimality or the use of these constructions, beyond providing definitions and context for their existence. Future posts will address these questions and offer properties of these mechanisms, such as their usefulness to various classes of stakers and their economics in a larger context.</p><p>Let’s get into it!</p><h2 id="h-asset" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Asset</h2><p>The most basic “type” of our semantics is that of an <strong>asset</strong>. An asset may be native tokens of a decentralised blockchain, such as ETH, tokens rooted on some blockchain such as ERC-20s or NFTs, or assets constructed from other assets, as derivatives are.</p><h2 id="h-balance-sheets" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Balance sheets</h2><p>In the following, we illustrate our constructions with balance sheets showing the creation and transfer of assets between multiple involved parties. We always provide the balance sheets in the same format:</p><ul><li><p>The first row represents the “pre-state”, denoting which assets are currently owned by each party.</p></li><li><p>The last row represents the “post-state”, denoting which assets are owned by each party after all operations have concluded.</p></li><li><p>The rows in between represent operations, with a new row simply denoting a new set of operations, divided from the others for the purpose of exposition.</p></li></ul><p>We use two basic operations repeatedly, which are worth detailing here:</p><ul><li><p><strong>Asset transfer:</strong> Party A simply transfers some <code>Asset</code> to Party B.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ef2da3eb4dda7e2597aee8c3637a1af4d19eb2067f3047019fe1dedf6b7d5646.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><ul><li><p><strong>Receipt minting:</strong> We often represent situations where Party A receives a claim from Party B, allowing Party A to redeem some assets from Party B. The receipt is then a liability for Party B, and an asset for Party A. In the following example, Party A transfers <code>Asset</code> to Party B, and receives a <code>Claim</code> from Party B.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/38e2bf594e36ad15cdd34559f05832e14ca46df67adc9d944a0f59f8c73f8273.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>We do not use balance sheets in a very orthodox manner, being more inspired from the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coursera.org/learn/money-banking">Economics of Money and Banking</a> course as well as Daniel H. Neilson’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.soonparted.co/">Soon Parted</a> newsletter (while stating for the record that we are probably not as rigorous as either of them are). However, we believe this minimal set of operations is sufficient to provide the intuition necessary.</p><h2 id="h-protocol-staking" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Protocol staking</h2><h3 id="h-solo-staker" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Solo staker</h3><p>The first basic operation consists of placing ETH at stake in the Ethereum Proof-of-Stake protocol. In the simplest case, an ETH holder places their ETH directly in the protocol, receiving a “virtual” balance of <code>soETH</code> (the “so” stands for solo operator). We represent the relationship with the following balance sheets, which are read line-by-line across the various parties:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b3469b289de787ccd02165aeff7def0e13a03e77b3c39a0f02660fc3e69146fa.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 solo staker is responsible for the operations of their corresponding validator. This means that if the solo staker performs its consensus duties adequately, the Ethereum protocol credits its balance of soETH with newly minted soETH. Conversely, when the solo staker receives penalties or is slashed, the protocol debits its soETH balance. When the solo staker wishes to withdraw their soETH balance and obtain ETH, the withdrawal is processed 1:1, i.e., for <em>x</em> units of soETH on the validator consensus balance, the solo staker receives <em>x</em> ETH in return (in the case of a full withdrawal).</p><p>Note that we do not represent “execution layer” rewards, e.g., priority fees and MEV. These rewards are a straightforward addition to the model presented above, and constitute a simple transfer of ETH from parties on the execution layer to the solo staker assuming block producer duties.</p><h3 id="h-using-a-staking-service-provider-ssp" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Using a Staking Service Provider (SSP)</h3><p>A more complex relationship is at play when a Staking Service Provider (SSP) intermediates the relationship between the holder who wishes to stake (”delegator”) and the Ethereum protocol. In this case, the ETH holder first provides the SSP with native ETH with the purpose that it should be staked. The SSP stakes the ETH and is granted control over the “soETH” asset running at the validation layer. It confers a virtual <code>noETH</code> asset to the delegator (the “no” stands for node operator), against which their ETH at stake is redeemable.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5613beacf8bf09606d8e207cc906c0e1894f4067cf455e7d9b02606738e9f503.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>Our use of the word “redeemable” already introduces some uncertainty here. As we have seen above, the Ethereum protocol allows the solo staker to withdraw their soETH balance against ETH at parity. Is this also true for the staker delegating its ETH to the SSP in exchange for noETH? In general, this is not true. First, 1 noETH could redeem less than 1 soETH, if slashing took place. Second, since most SSPs provide their service against a fee, 1 noETH redeems a fraction of the soETH credited to the SSP’s account in excess of its principal at stake. A more precise balance sheet would separate the principal from the yield, e.g.:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b3bd6039b16dcb06dac9d7ad109f748d0e7d2e8d1aea814a5b54fb60294741ca.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>Here, we “unbundle” the soETH asset between the principal pETH and the yield yETH. pETH redeems at most 32 ETH, unless slashing happens. yETH redeems the consensus layer and execution layer rewards obtained by the SSP. The SSP provides corresponding claims to the delegator, no.pETH and no.yETH. The delegator may always receive their principal in full including slashings, such that a 1:1 exchange rate exists between no.pETH and pETH. However, a fee is charged by the SSP, such that the exchange rate between no.yETH and yETH is less than 1 (1 no.yETH redeems less than 1 yETH). Unbundling the asset may be useful in some places, but also introduces additional complexity which is not critical for the following sections, so we keep using soETH and noETH to represent the whole claim instead.</p><p>Another consideration is whether the SSP pools the ETH from its depositors or not.</p><ul><li><p><strong>No pooling:</strong> An SSP opens multiple, parallel pools, one for each depositor. Suppose depositors A and B provide their ETH to the SSP, which opens validators A and B, one for each depositor. Suppose then that validator A is slashed for half of its deposit, while validator B is not. In this case, depositor A may withdraw their ETH at stake at a rate 1:0.5 (1 share of noETH redeems 0.5 shares of ETH at stake), while depositor B may withdraw their ETH at a rate 1:1 (modulo fees). It is then incorrect to speak of a single noETH, as in practice there exists noETH-A and noETH-B which represent different claims.</p></li><li><p><strong>Pooling:</strong> The Ethereum protocol requires units of 32 ETH to be placed at stake, which means that were depositors A and B keen to stake only 16 ETH each, they would not be able to do so with the construction detailed in the previous point. In this case, they would pool their ETH under some SSP, who would then <em>socialise</em> their rewards and losses, inducing the same withdrawal rate for both depositors. It is then well-formed to speak of a single noETH, since the value of the claim is shared by both depositors, proportional to the amount they deposited.</p></li></ul><h2 id="h-liquefaction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Liquefaction</h2><p>Our depositors now hold a virtual asset we have called noETH. This virtual asset is a claim which represent shares of the current amount staked by the SSP under the Ethereum protocol. While this already sounds like a <em>liquid</em> version of the ETH position at stake, we wish to emphasise that an additional step is necessary to get there: liquefaction through the issuance of a token representing the claim to the noETH assets. The noETH position is rendered liquid, a.k.a., fungible and transferable. We write this operation with the operand <code>L.</code>, so that the asset <code>L.noETH</code> is an abstraction for e.g., stETH or cbETH, or any other asset known as a Liquid Staking Token “LST”.</p><p>To make this apparent, we unbundle the functions of the SSP as protocol gathering stake from delegators, and the node operators providing the validation services for the SSP. We then obtain the following balance sheets:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8d044c4e4d13a10efc4a46975c42a1c35dd97bc4a7e3b4e0b3fd3e577e00ecfc.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>When the SSP is simply a wrapper between some node operators and the delegator, the step of obtaining L.noETH from noETH is almost invisible given the nature of blockchains, where the “accounting asset” noETH, written out as a ledger entry, turns out to be the liquid asset L.noETH itself, programmable and ready to be composed. In other words, if we already have a token representing some noETH as a blockchain entry, noETH and L.noETH are indistinguishable. We wish to stress the difference anyways, since there exists cases where delegators do <strong><em>not</em></strong> have access to a liquid representation (from the blockchain’s point of view) of their asset at stake. For instance, in the past, depositors who staked their ETH with Coinbase did not receive from Coinbase the liquid cbETH asset. In this case, depositors were entitled to a virtual claim representing some line in the internal ledger entries of the Coinbase database, which were not written out on a blockchain.</p><h3 id="h-roles-of-the-ssp" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Roles of the SSP</h3><p>In many cases though, the SSP, seen as protocol, isn’t a simple wrapper, an on-chain contract receiving ETH and printing L.noETH in exchange. The SSP’s core function is to intermediate the relationship between a principal (the delegator) and agents (node operators). If the principal has no trust that the agents will provide them with adequate yield while protecting the assets of the principal, the principal will not delegate their assets to the node operators to stake on their behalf. How do SSPs provide good guarantees?</p><ul><li><p>The first component is to <strong>incentivise good performance for node operators</strong>. Node operators receive more rewards from the Ethereum protocol the better they perform their validation services. Incentives are easily aligned by allowing node operators to share in the profits that they create for their delegators, via fees.</p></li><li><p>The second component is to <strong>discourage malicious parties from becoming node operators</strong>. We could assume that in the worst case, these malicious parties are intrinsically motivated to attack the Ethereum protocol and cause a large slashing event at minimum cost to themselves. Two approaches exist here. We could require operators to put <strong>something</strong> <strong>at stake</strong>, such that these attacks are as costly as possible to the operators. We could also <strong>constrain</strong> the node operators, preventing them from unilaterally performing slashable actions.</p></li></ul><p>Pools such as Lido deal with the second issue by curating a set of node operators, such that the performance is guaranteed by the Lido protocol and DAO. Their operators have no ETH at stake, but <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@mikeneuder/magnitude-and-direction">external systems of enforcement</a> (from soft ones such as “reputation-at-stake” to harder ones such as execution layer-triggered withdrawals as discussed in the second post) are intended to ensure their good behaviour.</p><h3 id="h-something-at-stake-to-discourage-malicious-operators" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Something-at-stake to discourage malicious operators</h3><p>Meanwhile, constructions such as Rocket Pool incentivise honest validation by node operators who are neither verified nor employed by some organisation, contributing permissionlessly. The node operator opens a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.rocketpool.net/guides/node/create-validator.html">Minipool</a>, first contributing their own stake, either 8 or 16 ETH. The protocol then tops up the node operator’s own stake with stake received from delegators. As a corollary, the Minipool operator’s yield on their own stake increases with their performance.</p><p>Note that the operator must also collateralise some amount of RPL, Rocket Pool’s token, proportional to how much stake they had to borrow from the pool of delegated ETH to top up their own Minipool. We do not show this in the following balance sheets, and we highlight some assets of the same type with different colours, to illustrate their provenance (green ETH belongs to the delegator, purple ETH belongs to the operator).</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/766453e2e3ed89788f2ce69aafd18e94bd6a4d473deb34f9aa2d01c7beeed042.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 lower the collateral posted by the operator, the greater the leveraged attack risk becomes, where the operator requires a small amount of funds to control a much larger amount of stake on the Ethereum Proof-of-Stake (PoS) network. For Lido, the leveraged attack risk is infinite considering purely on-chain assets put at stake by the operators, but obviously less than infinite considering their reputation, contracts, and expected future cash flows from honest validation. For Rocket Pool operators, e.g., those opening 8 ETH-collateralised Minipools, the <strong>leverage factor</strong> is 4x, as 8 ETH allows them to control 32 ETH of stake on the Ethereum PoS protocol. Can we require lower collateral from operators?</p><h3 id="h-constraining-node-operators" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Constraining node operators</h3><p>One way to reduce the risks of malicious validation further is to credibly commit the node operators to specific actions, e.g., commit them to never produce any slashable messages. Easier said than done!</p><p>Here, distributed validator technologies (DVT) may help, by ensuring all operator messages are checked and signed off on by a quorum of nodes before being released on the network with a valid signature. Diva, a staking protocol, integrates DVT to bound an operator’s actions. The operator must put at stake some divETH (Diva’s LST), namely an amount equivalent to 1 ETH to obtain one key share. A set of 16 key shares forms a quorum of DVT nodes, as well as a single virtual validator, as depicted below. We omit the Ethereum protocol, which simply issues the soETH claim in the last step and receives ETH collected from delegators and operators (green ETH belongs to the delegator, while purple and yellow ETH are provided by the operators). We also show only two operators instead of 16.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9862b968d01384e82ade6af4fa985e739d2df1a6d17a2c76337616d56060e803.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 calculation of the leverage factor for Diva is not so straightforward. Contributing 1 ETH-equivalent to the virtual validator does not “earn” you control of any amount of ETH currently at stake, since the joint actions of over 2/3rds of the quorum decide the virtual validator’s messages. Note however that the protocol allows the owner of a single ETH to become an operator and receive a noETH claim, redeeming yield obtained from Ethereum PoS validation.</p><p>Beyond the leverage factor, another metric is relevant here: the ratio between the amount of LSTs outstanding and the amount of operator stake, or <strong>collateral factor</strong>. A high ratio implies that a smaller amount of operator stake is collateralised to validate on behalf of a larger amount of delegator stake. For Rocket Pool, 8 ETH Minipools have a collateral factor equal to 3x, as 8 ETH collateralises 24 rETH in total. Meanwhile, the collateral factor of a Diva virtual validator is 1x, since 16 key shares (16 ETH) collateralise 16 divETH. A high collateral factor “makes room” for more stake to be delegated. Diva must then recruit more operator stake per unit of delegated stake to offer its services. On the upside, allowing operators who collateralise a single ETH expands the set of eligible operators to those with lower capital.</p><h3 id="h-liquid-solo-validating" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Liquid solo validating</h3><p>From above, we have learned that the holders of an LST require the operators validating on their behalf to do a good job. This guaranty is either provided by external contracting in the case of Lido-type protocols, or by having the operator put their own capital at stake along with the capital of their delegators. The latter requires a sound game-theoretical model to ensure that the capital at stake by the operator isn’t so low as to enable cheap attacks and ultimately destroy the value of the LST for their holders.</p><p>We now ask a distinct question. The delegator obtains L.noETH from pooling stake and mediating the claims via a protocol issuing a liquid representation of the amount delegated, modulo rewards, penalties and fees. Can a delegator obtain <code>L.soETH</code>? In other words, could a single solo staker issue a liquid position from their validating position?</p><p>The issue here is that holders of the L.soETH asset must be confident that the value of their claim won’t be destroyed by a malicious action of the solo staker, e.g., getting slashed. We’ve already seen one approach, via DVTs, to restrict the operator’s actions during validation.</p><p>A different approach to DVT consists in binding the solo staker’s actions such that their own slashing risk is lowered by hardware construction. “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/liquid-solo-validating/12779?u=barnabe">Liquid solo validating</a>” by Justin Drake employs SGX to ensure that the validator’s signing key never signs a slashable message. SGX allows pre-committed software to run free of tampering, though there are the usual caveats around its security, which are outside the scope of this piece. The solo staker provides the entire capital (32 ETH), yet is able to mint an LST representing their own validation and “freeing” their capital from the Ethereum protocol, to be used again, e.g., as collateral to other applications.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b7c17449d4ce5a1c3864c594ebd31fdd2da5e7100ba893297eb45ef5b644ae2e.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><strong>Line-by-line details:</strong></p><blockquote><ol><li><p>The SGX device generates a private key, a public key, and an attestation proving commitment to a piece of code preventing the solo staker from performing slashable actions with their private signing key.</p></li><li><p>The attestation and public keys are provided to the solo staker.</p></li><li><p>The solo staker registers these with the LST contract deployed on-chain, which is responsible for minting the liquid solo validating asset. The solo staker also provides the contract with ETH, their stake.</p></li><li><p>The ETH is forwarded from the LST contract to the deposit contract, and a staking asset soETH is returned to the LST contract, who now filters the exit of the validator from the PoS protocol. The LST contract mints the L.soETH asset, which is a liquid representation of the ETH at stake from the staker.</p></li></ol></blockquote><p>The L.soETH asset is fungible with those minted by other solo stakers using the same procedure. By construction, the liquid solo staker is only able to mint 31 L.soETH out of their 32 ETH at stake. The extra 1 ETH is used as collateral to repay parties who permissionlessly liquidate the position when the solo staker’s balance goes under 32 ETH, and account for the frozen collateral while the validator sits in the queue after an exit. This ensures 1 L.soETH is always backed by 1 ETH.</p><p>What are the uses of the L.soETH asset?</p><ul><li><p>The solo staker issuing L.soETH could use this L.soETH asset as collateral to other services. These services could consider that this is “good collateral”, since the only way for the solo staker to degrade its quality is to go offline and incur penalties (not slashing). By construction, the solo staker is however exited as soon as their soETH balance deviates by even a hundredth of an ETH from the 32 ETH starting balance.</p></li><li><p>The solo staker could also sell the L.soETH asset to other holders, receiving the proceeds. The L.soETH asset would need to be a productive asset itself, as described by Justin in the “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/liquid-solo-validating/12779?u=barnabe">Productive vs non-productive sETH</a>” section of his post, where the L.soETH asset becomes a claim not only to the principal at stake but also to the rewards earned on the stake, e.g., consensus rewards and MEV (there are difficulties to internalise the MEV in a trust-minimised fashion).</p><ul><li><p>Note that selling the L.soETH asset does not give the solo staker extra leverage to launch an attack on Ethereum. Leverage is obtained by putting a small amount of funds at stake and controlling a larger amount in the PoS protocol. The SGX device however prevents the staker from performing slashable actions.</p></li></ul></li></ul><h3 id="h-conclusion-of-liquefaction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Conclusion of liquefaction</h3><p>The following table summarises the 4 case studies discussed above:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ca103ee2b1b41ecbd8c75fb4b9b54ba165c9041505306efd06b2a626e5e47914.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>Liquefaction is one way for a staker to extract “more juice” out of their collateral at stake. In the following post, we will discuss re-staking as a related alternative to create more assets out of one’s stake.</p>]]></content:encoded>
            <author>barnabé@newsletter.paragraph.com (The price of agency)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/62491a64b5fca17353caa38dd06465b7f94bbdb91f010397ab929b7dbd63068d.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>