{"componentChunkName":"component---src-pages-sips-sip-markdown-remark-frontmatter-sip-tsx","path":"/sips/sip-2020/","result":{"data":{"markdownRemark":{"fileAbsolutePath":"/vercel/path0/content/sips/sip-2020.md","frontmatter":{"sip":2020,"sccp":null,"title":"Dynamic Gas Fee Module - Bedrock","network":"Optimism","author":"kaleb (@kaleb-keny)","type":"Governance","proposal":null,"implementor":null,"release":null,"created":null,"updated":null,"status":"Rejected"},"html":"<h2 id=\"simple-summary\" style=\"position:relative;\"><a href=\"#simple-summary\" aria-label=\"simple summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Simple Summary</h2>\n<p>The sip proposes to update the dynamic gas fee module, in order to cater for the post bedrock paradigm in gas price computation. The module is able to adjust the <code>minKeeperFee</code>, within bounds set by governance. Note that the <code>updateMinKeeperFee</code> function is a publicly callable function that doesn't require any endorsed address for execution.</p>\n<p>The updated calculation is similar to what is used currently, except that the L2 gas price is a function of <code>l2BaseFee</code> and an <code>l2PriorityFee</code>.</p>\n<h2 id=\"abstract\" style=\"position:relative;\"><a href=\"#abstract\" aria-label=\"abstract permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Abstract</h2>\n<!--A short (~200 word) description of the proposed change, the abstract should clearly describe the proposed change. This is what *will* be done if the SIP is implemented, not *why* it should be done or *how* it will be done. If the SIP proposes deploying a new contract, write, \"we propose to deploy a new contract that will do x\".-->\n<p>The dynamic gas fee module is a standard <a href=\"https://help.safe.global/en/articles/4934378-what-is-a-module\">Gnosis Safe Module</a> that is able to alter the <code>minKeeperFee</code> in our <a href=\"https://optimistic.etherscan.io/address/0x649F44CAC3276557D03223Dbf6395Af65b11c11c\"><code>PerpsV2MarketSettings</code></a> within bounds specified in the contract and configurable via governance:</p>\n<ul>\n<li>The calculation steps of the minKeeperFee is as follows:</li>\n</ul>\n<ol>\n<li><code>costOfExecutionGross := (L2BaseFee + L2PriorityFee) * l2GasUnits + L1BaseFee * (l1GasUnits+l1FeeOverhead) * l1FeeScalar * ETH/USD</code></li>\n<li><code>profitMargin := max(profitMarginUSD; costOfExecution * profitMarginPercent )</code></li>\n<li><code>costOfExecutionNet := costOfExecutionGross + profitMargin</code></li>\n<li><code>minKeeperFee := min( max(costOfExecutionNet, minKeeperFeeLowerBound) ; minKeeperFeeUpperBound)</code></li>\n</ol>\n<ul>\n<li>The <code>ETH/USD</code> price is obtained with the on-chain chainlink ETH oracle</li>\n<li>The profit margin is incorporated in order to absorb shocks to gas prices on the one hand and to incentivize a decentralised keeper network</li>\n<li>The lower and upper bounds on the <code>minKeeperFee</code> are incoporated for safety purposes</li>\n<li>The number of gas units required on L1 and L2, as well as the L2 priority fee, are all configurableble via SCCP</li>\n<li><code>l1FeeOverhead</code>, <code>l1BaseFee</code>, and <code>l1FeeScalar</code> can be all queried on-chain with the help of the L1Block contract under <a href=\"https://goerli-optimism.etherscan.io/address/0x4200000000000000000000000000000000000015\"><code>0x4200000000000000000000000000000000000015</code></a></li>\n<li><code>l2BaseFee</code> can be queried on chain with <a href=\"https://goerli-optimism.etherscan.io/address/0x376900fd81e0fbec77c2b079672d048f4dcb5970#readContract\"><code>block.basefee</code></a></li>\n</ul>\n<h2 id=\"motivation\" style=\"position:relative;\"><a href=\"#motivation\" aria-label=\"motivation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Motivation</h2>\n<p>The main motivation is to continue to support the network of decentralized keepers that have contributed to minimizing the number of cancellations since <a href=\"https://sips.synthetix.io/sips/sip-2013\">SIP-2013</a> was implemented.</p>\n<p>It is worth nothing that although the L2 priority fee could vary depending on network congestion, if the fee follows the pre-bedrock gas paradigm, the L1 security fee would still constitute the vast majority of the overall gas fee. In addition, the <code>profitMarginUSD</code> parameter (currently set to 2 sUSD), can be calibrated as to absorb shocks into priority fee and allow for executions to continue to take place on chain.</p>\n<p>The post-bedrock gas price paradigm would be monitored and in case situation is seen where staleness is caused by <code>l2PriorityFee</code> being too low, then a new SIP would be proposed where the <code>l2PriorityFee</code> could  be queried on-chain with the help of a chainlink oracle.</p>\n<h2 id=\"specification\" style=\"position:relative;\"><a href=\"#specification\" aria-label=\"specification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Specification</h2>\n<h3 id=\"getminkeeperfee\" style=\"position:relative;\"><a href=\"#getminkeeperfee\" aria-label=\"getminkeeperfee permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>getMinKeeperFee:</h3>\n<p>This is a getter public function that returns computed gas price given on-chain variables</p>\n<h3 id=\"setminkeeperfee\" style=\"position:relative;\"><a href=\"#setminkeeperfee\" aria-label=\"setminkeeperfee permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>setMinKeeperFee:</h3>\n<p>This is a publically callable function that updates the <code>minKeeperFee</code> in PerpsV2MarketSettings</p>\n<h3 id=\"getparameters\" style=\"position:relative;\"><a href=\"#getparameters\" aria-label=\"getparameters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>getParameters:</h3>\n<p>This is a getter public function that returns the current configurations specified under the  Configurable Values section.</p>\n<h3 id=\"setparameters\" style=\"position:relative;\"><a href=\"#setparameters\" aria-label=\"setparameters permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>setParameters:</h3>\n<p>This can only be called by the owner, whereby the variables specified under the Configurable Values section, can be updated.</p>\n<h3 id=\"ispaused\" style=\"position:relative;\"><a href=\"#ispaused\" aria-label=\"ispaused permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>isPaused:</h3>\n<p>This is a getter public function that returns the state of the module.</p>\n<h3 id=\"setpaused\" style=\"position:relative;\"><a href=\"#setpaused\" aria-label=\"setpaused permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>setPaused:</h3>\n<p>This can only be called by the owner, allowing to pause the module and disabling it's ability to update the <code>minKeeperFee</code>.</p>\n<p>Rejected by the author.</p>\n<h3 id=\"test-cases\" style=\"position:relative;\"><a href=\"#test-cases\" aria-label=\"test cases permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Test Cases</h3>\n<h4 id=\"gas-price-module-configurations\" style=\"position:relative;\"><a href=\"#gas-price-module-configurations\" aria-label=\"gas price module configurations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Gas Price Module Configurations:</h4>\n<ul>\n<li><code>profitMarginPercent</code>: 20%</li>\n<li><code>profitmarginUSD</code>: 2 sUSD</li>\n<li><code>minKeeperFeeUpperBound</code>: 15 sUSD</li>\n<li><code>minKeeperFeeLowerBound</code>: 2 sUSD</li>\n<li><code>l1GasUnits</code> : 20,000 GAS</li>\n<li><code>l2GasUnits</code> : 1 million GAS</li>\n<li><code>l2PriorityFee</code>: 0.001 GWEI/GAS (note that this value would be updated by the owner post bedrock to reflect the state of the network as it very early to tell to what level it would converge to)</li>\n</ul>\n<h4 id=\"on-chain-gas-price-values\" style=\"position:relative;\"><a href=\"#on-chain-gas-price-values\" aria-label=\"on chain gas price values permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>On-chain Gas Price Values:</h4>\n<ul>\n<li><code>l1BaseFee</code> : 100 GWEI/GAS (found as <code>basefee</code> under  <a href=\"https://goerli-optimism.etherscan.io/address/0x4200000000000000000000000000000000000015\">L1Block</a>, in wei)</li>\n<li><code>l2BaseFee</code> : 0.00000005 GWEI/GAS (found on chain by calling <code>block.basefee</code> as shown under <a href=\"https://goerli-optimism.etherscan.io/address/0x376900fd81e0fbec77c2b079672d048f4dcb5970\">this contract</a> in wei )</li>\n<li><code>l1FeeScalar</code>: 1  (found as l1FeeScalar under <a href=\"https://goerli-optimism.etherscan.io/address/0x4200000000000000000000000000000000000015\">L1Block</a>, after incorporating 1e6 decimal adjustment)</li>\n<li><code>l1FeeOverhead</code>: 2,100 GAS, (found as l1FeeOverhead under <a href=\"https://goerli-optimism.etherscan.io/address/0x4200000000000000000000000000000000000015\">L1Block</a> )</li>\n<li><code>ETH/USD</code>: 1,869$, obtained from the chainlink oracle</li>\n</ul>\n<h4 id=\"minkeeperfee-computations\" style=\"position:relative;\"><a href=\"#minkeeperfee-computations\" aria-label=\"minkeeperfee computations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><code>minKeeperFee</code> Computations:</h4>\n<ul>\n<li><code>costOfExecutionGrossGwei</code> = (0.001 + 0.00000005)  * 1e6 + (20,000 + 2,100) * 100 * 1 = 2,211,000 GWEI</li>\n<li><code>costOfExecutionGrossETH</code> = 2,211,200 / 1e9 = 0.002211 ETH</li>\n<li><code>costOfExecutionGrossUSD</code> = 0.0026692 ETH * 1,869 USD / ETH = 4.132359 sUSD</li>\n<li><code>profitMargin</code> = max(2 ; 20% * 4.132359) = 2 sUSD</li>\n<li><code>costOfExecutionNet</code> = 2+4.132359 = 6.132359 sUSD</li>\n<li><code>minKeeperFee</code> = max(min(6.132359;15) ; 2) = 6.132359 sUSD</li>\n</ul>\n<h3 id=\"configurable-values-via-sccp\" style=\"position:relative;\"><a href=\"#configurable-values-via-sccp\" aria-label=\"configurable values via sccp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configurable Values (Via SCCP)</h3>\n<ul>\n<li><code>minKeeperFeeLowerBound</code> being the lower bound on the minKeeperFee that can be updated</li>\n<li><code>minKeeperFeeUpperBound</code> being the upper bound on the minKeeperFee that can be updated</li>\n<li><code>l1GasUnits</code> and <code>l2GasUnits</code> being the number of gas units required to execute a pending offchain delayed order</li>\n<li><code>l2PriorityFee</code> being the priority fee paid on L2</li>\n<li><code>profitMarginUSD</code> being a profit margin in sUSD, applied on the cost of execution</li>\n<li><code>profitMarginPercent</code> being a keeper profit margin in percentage, applied on the cost of execution</li>\n</ul>\n<h3 id=\"references\" style=\"position:relative;\"><a href=\"#references\" aria-label=\"references permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>References:</h3>\n<ul>\n<li><a href=\"https://github.com/ethereum-optimism/optimism/blob/382d38b7d45bcbf73cb5e1e3f28cbd45d24e8a59/specs/predeploys.md#l1block\">L1Block PreDeploy</a></li>\n<li><a href=\"https://community.optimism.io/docs/developers/bedrock/differences/#deposit-replayability\">Bedrock blog</a></li>\n</ul>\n<h2 id=\"copyright\" style=\"position:relative;\"><a href=\"#copyright\" aria-label=\"copyright permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Copyright</h2>\n<p>Copyright and related rights waived via <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a>.</p>"}},"pageContext":{"id":"a30d934b-04ef-526e-ba37-d71d87206d64","frontmatter__sip":2020,"__params":{"frontmatter__sip":"2020"}}},"staticQueryHashes":[]}