<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Nebra Blog]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.nebra.one/</link><image><url>https://blog.nebra.one/favicon.png</url><title>Nebra Blog</title><link>https://blog.nebra.one/</link></image><generator>Ghost 5.89</generator><lastBuildDate>Fri, 01 May 2026 00:54:10 GMT</lastBuildDate><atom:link href="https://blog.nebra.one/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[RISCZERO Proof Support on NEBRA UPA]]></title><description><![CDATA[<h2 id="tldr">TL;DR</h2><p>We are partnering with&#xA0;<a href="https://www.risczero.com/?ref=blog.nebra.one" rel="noreferrer">RISC Zero</a>&#xA0;to bring NEBRA UPA powered RISC ZERO zkVM proofs onchain. RISC ZERO developers can enjoy&#xA0;<strong>10x and more cheaper proof verification cost on Ethereum and Its L2s</strong>. Additionally, RISC ZERO zkVM developers can compose RISC ZERO zkVM proofs with</p>]]></description><link>https://blog.nebra.one/risczero-proof-support-on-nebra-upa-2/</link><guid isPermaLink="false">67156b23f4873800642ba4ad</guid><category><![CDATA[Blog]]></category><dc:creator><![CDATA[Jeff]]></dc:creator><pubDate>Sun, 20 Oct 2024 20:46:25 GMT</pubDate><media:content url="https://blog.nebra.one/content/images/2024/10/R0_VSCO.JPG" medium="image"/><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2><img src="https://blog.nebra.one/content/images/2024/10/R0_VSCO.JPG" alt="RISCZERO Proof Support on NEBRA UPA"><p>We are partnering with&#xA0;<a href="https://www.risczero.com/?ref=blog.nebra.one" rel="noreferrer">RISC Zero</a>&#xA0;to bring NEBRA UPA powered RISC ZERO zkVM proofs onchain. RISC ZERO developers can enjoy&#xA0;<strong>10x and more cheaper proof verification cost on Ethereum and Its L2s</strong>. Additionally, RISC ZERO zkVM developers can compose RISC ZERO zkVM proofs with external proofs such as&#xA0;<a href="https://worldcoin.org/world-id?ref=blog.nebra.one" rel="noreferrer">World ID</a>.</p><h2 id="how-nebra-can-reduce-risc-zero-developers%E2%80%99-onchain-cost-by-10x">How NEBRA can reduce RISC ZERO developers&#x2019; onchain cost by 10x?</h2><p>The RISC Zero&#xA0;<a href="https://dev.risczero.com/api/zkvm/?ref=blog.nebra.one" rel="noreferrer">zkVM</a>&#xA0;can prove the correct execution of arbitrary code, allowing developers to build ZK applications in mature languages like Rust and C++. The release of the RISC Zero zkVM marked a major breakthrough in enabling ZK software development: the zkVM made it possible to build a ZK application&#xA0;<em>without having to build a circuit</em>&#xA0;and&#xA0;<em>without writing in a custom language</em>.</p><p>Notably, RISC Zero is over 70% of the&#xA0;<a href="https://reports.risczero.com/crates-validation?ref=blog.nebra.one" rel="noreferrer">top 1000 Rust crates</a>&#xA0;work out-of-the-box in the zkVM. Being able to import Rust crates is a game changer for the ZK software world: projects that would take months or years to build on other platforms can be solved trivially on our platform.</p><p>The last mile of the RISC Zero developers&#x2019; journey is settling the proof onchain. Today, the onchain proof verification cost is prohibitive: developers need to spend more than 250,000 gas, which is equivalent to 20 US dollars on Ethereum or 2 dollars on Ethereum L2s.</p><p>NEBRA UPA is the first&#xA0;<strong>Universal Proof Aggregation</strong>&#xA0;protocol that scales and composes zero-knowledge proof verification on Ethereum/EVM chains. NEBRA UPA achieves this using recursive SNARKs with cryptographic security.</p><p>There are 3 key properties of NEBRA UPA:</p><ul><li><strong>Universality</strong>: NEBRA UPA can aggregate proofs from&#xA0;<strong>any</strong>&#xA0;circuit. This means that in the same batch, NEBRA UPA aggregates proofs from different sources, such as zkEVMs, zkDIDs, and zkCoprocessors. Universality brings an &quot;economy of scale&quot; to NEBRA users, allowing them to enjoy&#xA0;<strong>cheap amortized verification costs</strong>&#xA0;without needing to generate a huge number of proofs.</li><li><strong>Permissionless</strong>: NEBRA UPA is an onchain protocol, meaning that anyone can submit proofs to NEBRA.</li><li><strong>Censorship resistance</strong>: NEBRA UPA is censorship resistant by adopting a forced-inclusion design similar to Ethereum L2s. You can trigger a forced inclusion to include your proofs if our off-chain worker refuses to put your proof in the aggregated proof. Additionally, we would be slashed if a forced inclusion occurs.</li></ul><p>By using NEBRA UPA, RISC Zero developers can lower their proof verification costs from 250,000 gas to roughly 18,000 gas, translating to approximately 10x onchain verification cost savings.</p><h2 id="why-risc-zero">Why RISC Zero?</h2><p>RISC Zero is the pioneer of building RISC-V zkVMs. RISC Zero zkVM is high&#xA0;<a href="https://benchmarks.risczero.com/release-1.0?ref=blog.nebra.one" rel="noreferrer">performance</a>. As one of the most mature zkVMs, there are a number of applications and primitives showcasing RISC Zero&#x2019;s capabilities, including:</p><ul><li><a href="https://risczero.com/news/zeth-release?ref=blog.nebra.one" rel="noreferrer"><strong>Zeth</strong></a>: prove the correct construction of an entire Ethereum block or an entire Optimism block</li><li><a href="https://risczero.com/news/bonsai-pay?ref=blog.nebra.one" rel="noreferrer"><strong>Bonsai Pay</strong></a>: send Ethereum to someone&apos;s gmail address</li><li><a href="https://github.com/risc0/risc0/tree/release-1.0/examples/json?ref=blog.nebra.one" rel="noreferrer"><strong>JSON</strong></a>: prove the contents of some entry in a JSON file, while keeping the rest of the data private</li><li><a href="https://risczero.com/news/waldo?ref=blog.nebra.one" rel="noreferrer"><strong>Where&apos;s Waldo</strong></a>: prove that Waldo appears in a JPG file, while keeping the rest of the image private</li><li><a href="https://github.com/risc0/risc0/tree/release-1.0/examples/chess?ref=blog.nebra.one" rel="noreferrer"><strong>ZK Checkmate</strong></a>: prove that you see a mate-in-one, without revealing the winning move</li><li><a href="https://risczero.com/news/zkpoex?ref=blog.nebra.one" rel="noreferrer"><strong>ZK Proof of Exploit</strong></a>: prove that you&#xA0;<em>could</em>&#xA0;exploit an Ethereum account, without revealing the exploit</li><li><a href="https://github.com/risc0/risc0/tree/release-1.0/examples/ecdsa?ref=blog.nebra.one" rel="noreferrer"><strong>ECDSA signature verification</strong></a>: prove the validity of an ECDSA signature</li></ul><p>In addition, RISC Zero developers can enjoy the upcoming Bonsai prover network to streamline the development process. NEBRA UPA will be supporting both developers who are deploying stand-alone RISC Zero zkVM or Bonsai Prover Network.</p><h2 id="additional-resources">Additional Resources:</h2><ul><li>NEBRA UPA Docs:</li></ul><figure class="kg-card kg-image-card"><img src="https://docs.nebra.one/~gitbook/ogimage/qgA4Ca5KEMWkU9BOUAnn" class="kg-image" alt="RISCZERO Proof Support on NEBRA UPA" loading="lazy" width="1200" height="630"></figure><ul><li>RISC Zero zkVM:</li></ul><figure class="kg-card kg-image-card"><img src="https://dev.risczero.com/preview-images/3864b56ee75b2f668e75d93a8646f1fa0a0c7b2e.png" class="kg-image" alt="RISCZERO Proof Support on NEBRA UPA" loading="lazy" width="1440" height="900"></figure><ul><li>RISC Zero Bonsai:</li></ul><figure class="kg-card kg-image-card"><img src="https://risczero.com/api/og?bonsai=1&amp;title=Bonsai&amp;description=Unlock%20enterprise-grade%20performance%20with%20Bonsai,%20the%20world%27s%20fastest%20proving%20service." class="kg-image" alt="RISCZERO Proof Support on NEBRA UPA" loading="lazy" width="1200" height="630"></figure><ul><li>NEBRA Community:<a href="https://t.me/+niuKbgHIQ2lmN2Ex?ref=blog.nebra.one" rel="noreferrer">https://t.me/+niuKbgHIQ2lmN2Ex</a></li></ul>]]></content:encoded></item><item><title><![CDATA[Succinct SP1 Support on NEBRA UPA]]></title><description><![CDATA[<h2 id="tldr">TL;DR</h2><p>We are partnering with&#xA0;<a href="https://succinct.xyz/?ref=blog.nebra.one" rel="noreferrer">Succinct</a>&#xA0;to bring cheap and accessible zero-knowledge proofs to all developers. We are committed to supporting Succinct SP1 zkVM proofs generated locally or from Succinct&#x2019;s prover market on&#xA0;<a href="https://docs.nebra.one/introduction/what-is-nebra-upa?ref=blog.nebra.one" rel="noreferrer">NEBRA UPA</a>. This will enable all projects and developers using Succinct&</p>]]></description><link>https://blog.nebra.one/succinct-sp1-support-on-nebra-upa/</link><guid isPermaLink="false">671569e6f4873800642ba4a4</guid><category><![CDATA[Blog]]></category><dc:creator><![CDATA[Jeff]]></dc:creator><pubDate>Sun, 20 Oct 2024 20:40:07 GMT</pubDate><media:content url="https://blog.nebra.one/content/images/2024/10/succinct_nebra_VSCO.JPG" medium="image"/><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2><img src="https://blog.nebra.one/content/images/2024/10/succinct_nebra_VSCO.JPG" alt="Succinct SP1 Support on NEBRA UPA"><p>We are partnering with&#xA0;<a href="https://succinct.xyz/?ref=blog.nebra.one" rel="noreferrer">Succinct</a>&#xA0;to bring cheap and accessible zero-knowledge proofs to all developers. We are committed to supporting Succinct SP1 zkVM proofs generated locally or from Succinct&#x2019;s prover market on&#xA0;<a href="https://docs.nebra.one/introduction/what-is-nebra-upa?ref=blog.nebra.one" rel="noreferrer">NEBRA UPA</a>. This will enable all projects and developers using Succinct&#x2019;s zkVM proofs to&#xA0;<strong>lower their onchain verification costs by 10x or more</strong>.</p><h2 id="how-nebra-can-reduce-sp1-developers%E2%80%99-onchain-cost-by-10x">How NEBRA can reduce SP1 developers&#x2019; onchain cost by 10x?</h2><p>Succinct is building SP1, an open-source, RISC-V zkVM with state-of-the-art performance that is useful for rollups, bridges, and other blockchain applications. Developing zero-knowledge proof-based protocols used to be notoriously difficult, as developers needed to learn and express their logic using very exotic constraint satisfaction languages, such as Circom, or write the circuits in raw form using embedded DSLs like Halo2&#x2019;s circuit writing libraries.</p><p>With RISC-V zkVMs such as Succinct SP1, developers now only need to write programs in familiar languages, such as Rust. This is a significant breakthrough for those building any proof-based infrastructures and applications, such as bridging, co-processors, and zkRollups.</p><p>The last mile of the SP1 developers&#x2019; journey is settling the proof onchain. Today, the onchain proof verification cost is prohibitive: developers need to spend more than 250,000 gas, which is equivalent to 20 US dollars on Ethereum or 2 dollars on Ethereum L2s.</p><p>NEBRA UPA is the first&#xA0;<strong>Universal Proof Aggregation</strong>&#xA0;protocol that scales and composes zero-knowledge proof verification on Ethereum/EVM chains. NEBRA UPA achieves this using recursive SNARKs .</p><p>There are 3 key properties of NEBRA UPA:</p><ul><li><strong>Universality</strong>: NEBRA UPA can aggregate proofs from&#xA0;<strong>any</strong>&#xA0;circuit. This means that in the same batch, NEBRA UPA aggregates proofs from different sources, such as zkEVMs, zkDIDs, and zkCoprocessors. Universality brings an &quot;economy of scale&quot; to NEBRA users, allowing them to enjoy&#xA0;<strong>cheap amortized verification costs</strong>&#xA0;without needing to generate a huge number of proofs.</li><li><strong>Permissionless</strong>: NEBRA UPA is an onchain protocol, meaning that anyone can submit proofs to NEBRA.</li><li><strong>Censorship resistance</strong>: NEBRA UPA is censorship resistant by adopting a forced-inclusion design similar to Ethereum L2s. You can trigger a forced inclusion to include your proofs if our off-chain worker refuses to put your proof in the aggregated proof. Additionally, we would be slashed if a forced inclusion occurs.</li></ul><p>By using NEBRA UPA, SP1 developers can lower their proof verification costs from 250,000 gas to roughly 18,000 gas, translating to approximately 10x onchain verification cost savings.</p><h2 id="why-succinct-sp1">Why Succinct SP1?</h2><p>There are many reasons that developers should use SP1:</p><ul><li><strong>SP1 is the zkVM with a complete feature set</strong>&#xA0;that includes precompiles, SOTA (state-of-the-art) performance, and Rust standard library support.</li><li><strong>SP1 has state of the art performance</strong>&#xA0;with precompiles already supported (keccak, sha, signature verification) leading to 5-10x cycle reduction on real-world workloads. In practice, this can be 30x cheaper and faster than competing VMs.</li><li><strong>SP1 has open source constraints</strong>&#xA0;that are essential for security and auditability, and allow for adding precompiles to accelerate any workload.</li></ul><p>SP1 will be integrated with Succinct&#x2019;s upcoming prover network, providing developers with a more streamlined experience and lower prover costs.</p>]]></content:encoded></item><item><title><![CDATA[UPA Gas Costs]]></title><description><![CDATA[Delve into the end-to-end gas costs and savings that NEBRA UPA brings to zero-knowledge applications.]]></description><link>https://blog.nebra.one/upa_gas/</link><guid isPermaLink="false">66b3bb652a02c80144d5ae59</guid><category><![CDATA[Technical]]></category><category><![CDATA[Blog]]></category><dc:creator><![CDATA[Jeff]]></dc:creator><pubDate>Tue, 14 May 2024 13:01:00 GMT</pubDate><media:content url="https://blog.nebra.one/content/images/2024/08/shapelined-_JBKdviweXI-unsplash.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.nebra.one/content/images/2024/07/zk.png" class="kg-image" alt="UPA Gas Costs" loading="lazy" width="1886" height="1182" srcset="https://blog.nebra.one/content/images/size/w600/2024/07/zk.png 600w, https://blog.nebra.one/content/images/size/w1000/2024/07/zk.png 1000w, https://blog.nebra.one/content/images/size/w1600/2024/07/zk.png 1600w, https://blog.nebra.one/content/images/2024/07/zk.png 1886w" sizes="(min-width: 720px) 720px"></figure><img src="https://blog.nebra.one/content/images/2024/08/shapelined-_JBKdviweXI-unsplash.jpg" alt="UPA Gas Costs"><p></p><p>The high cost of verification is one of the biggest obstacles preventing applications from taking full advantage of zero-knowledge proof technology. Despite the hefty price tag, enough use-cases already exist to justify current spending of nearly $100 million/yr to verify proofs on Ethereum. Our thesis at NEBRA is simple: by slashing verification costs, we not only enable existing zk-apps to scale to new heights, but also pave the way for entirely new use-cases and applications for zero-knowlege proofs.</p><p></p><p>In this blog post, we delve into the gas savings that NEBRA UPA brings to zero-knowledge applications. Our current UPA release (v1.1) offers&#xA0;<strong>end-to-end</strong>&#xA0;gas savings of more than&#xA0;<strong>70%</strong>.&#xA0;<a href="https://demo.nebra.one/?ref=blog.nebra.one"><u>UPA is fully deployed on Sepolia testnet, ready for developers to integrate their applications.</u></a>&#xA0;Improvements coming in the near future are slated to push these savings even further, to over&#xA0;<strong>90%.</strong></p><p></p><h2 id="verification-cost-without-upa">Verification cost without UPA</h2><p>The cost of verifying an individual Groth16 proof and using the result can be broken down into two parts:</p><p></p><ul><li>Submitting and verifying the proof (<strong>~250k gas</strong>)</li><li>Retrieving the verification result<ul><li>from an external contract (<strong>~10-20k gas</strong>)</li><li>from within the app contract (<strong>0 gas</strong>)</li></ul></li></ul><h2 id="gas-savings-with-upa">Gas savings with UPA</h2><p></p><p>Let&apos;s take a look at the end-to-end gas cost for a ZK app using NEBRA UPA. These are the three steps that can consume gas, along with their current per-proof costs. (The exact costs may vary a bit based on the details of the application):</p><p></p><ul><li>Submitting proofs<ul><li>on-chain (<strong>~23-100k gas per proof- depends on submission size</strong>)</li><li>off-chain (<strong>0 gas per proof</strong>)</li></ul></li><li>Verifying the aggregated proof (<strong>~18k gas per proof</strong>)</li><li>Querying the verification result (<strong>~25k gas per proof</strong>)</li></ul><p></p><p>Summing up these costs, we find that in total:</p><p></p><ul><li>Applications submitting their proofs on-chain can save as much as&#xA0;<strong>184k gas</strong>&#xA0;(~75%) per proof.</li><li>Applications submitting their proofs off-chain can save upwards of&#xA0;<strong>207k gas</strong>&#xA0;(~85%) per proof.</li></ul><p></p><p>The cost of each step can be further reduced with greater amortization. For example, we can increase the aggregation batch size, which is currently set to just 32 proofs. And, as we discuss in the gas cost breakdown, we also expect to see lower submission and query costs coming from continued development of the UPA contracts and additional features.</p><p></p><p>As always, the set of factors that go into an apples-to-apples comparison depend on the use case. For instance, the third query step is an &quot;extra&quot; cost for applications that would normally verify the proof inside the app contract. But for applications that use ZK co-processors (such as Brevis or Bonsai), this external query cost is already &quot;built-in&quot; to the app&apos;s protocol. With the breakdown of costs to follow, developers can take the right factors into account to determine where NEBRA UPA can offer them gas savings.</p><p></p><p>See our&#xA0;<a href="https://gas.nebra.one/?ref=blog.nebra.one"><u>Gas Estimator</u></a>&#xA0;to calculate the gas savings for your particular apps.</p><p></p><h2 id="breakdown-and-scaling-of-upa-gas-costs">Breakdown and scaling of UPA gas costs</h2><h3 id="step-1-proof-submissions">Step 1: Proof submissions</h3><figure class="kg-card kg-image-card"><img src="https://blog.nebra.one/content/images/2024/07/submission.png" class="kg-image" alt="UPA Gas Costs" loading="lazy" width="1900" height="574" srcset="https://blog.nebra.one/content/images/size/w600/2024/07/submission.png 600w, https://blog.nebra.one/content/images/size/w1000/2024/07/submission.png 1000w, https://blog.nebra.one/content/images/size/w1600/2024/07/submission.png 1600w, https://blog.nebra.one/content/images/2024/07/submission.png 1900w" sizes="(min-width: 720px) 720px"></figure><p></p><p>NEBRA UPA collects&#xA0;<strong>submissions</strong>&#xA0;of one or more proofs and places them in a queue to be aggregated. Note that UPA does not aggregate submission-by-submission. Instead,&#xA0;<strong>aggregated batches</strong>&#xA0;are chosen independently of the way the proofs were submitted.</p><p></p><p>Applications will have two options for sending submissions to UPA: on-chain and off-chain. On-chain submissions cost gas in exchange for censorship-resistance. Off-chain submissions have no gas cost, but offer weaker censorship resistance.</p><p></p><p>Our current UPA release (v1.1) supports on-chain submission. Off-chain submission will be available soon.</p><p></p><h4 id="cost-of-on-chain-submission">Cost of on-chain submission</h4><p>Due to per-transaction storage costs, using a whole Ethereum transaction to submit a single proof is relatively expensive. Instead, we recommend that apps take advantage of&#xA0;<strong>multi-proof submissions</strong>.</p><p></p><p>The contracts currently deployed to the Sepolia testnet are initial implementations with large scope for gas optimization, but they serve to illustrate the approximate cost model. Currently, the fixed cost per submission is&#xA0;<strong>~100k gas</strong>. The marginal cost of each additional proof in a submission is&#xA0;<strong>~20k gas</strong>&#xA0;(for processing the additional proof and public input data).</p><p></p><p>Therefore the per-proof gas cost for an on-chain submission of&#xA0; $M$&#xA0;proofs is approximately:</p><p>$$100000/M + 20000$$<br></p><p>The table below shows the measured cost of submissions of different sizes.</p><p></p>
<!--kg-card-begin: html-->
<table class="border-collapse border border-slate-500 border-spacing-2 table-fixed" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(100 116 139/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0.5rem; --tw-border-spacing-y: 0.5rem; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; text-indent: 0px; border-collapse: collapse; table-layout: fixed; border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y); --tw-border-opacity: 1; color: rgb(55, 65, 81); font-family: __Inter_aaf875, __Inter_Fallback_aaf875; font-size: 18px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(233, 235, 235); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><tr style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><th class="border border-slate-600" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(71 85 105/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">On-chain submission size</th><th class="border border-slate-600" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(71 85 105/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">Total gas cost</th><th class="border border-slate-600" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(71 85 105/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">Per proof gas cost</th></tr></thead><tbody style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><tr style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">4<span>&#xA0;</span><u style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><a href="https://sepolia.etherscan.io/tx/0x030594fbbc4f146112c0bf88087d9b46a9050474bbe5d1efa977d44f57f1bed9?ref=blog.nebra.one" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; color: inherit; text-decoration: inherit;">(Etherscan)</a></u></td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">191,829</td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">47,957</td></tr><tr style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">8<span>&#xA0;</span><u style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><a href="https://sepolia.etherscan.io/tx/0x500bc8af84bfbe426b8a282e3d7ceb67ba3633c940b02779d60bbaba5b66a643?ref=blog.nebra.one" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; color: inherit; text-decoration: inherit;">(Etherscan)</a></u></td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">269,867</td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">33,733</td></tr><tr style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">16<span>&#xA0;</span><u style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><a href="https://sepolia.etherscan.io/tx/0xdda4f9a65af0205d92439e30a8b33e730c3541bfe19e3252c9a375815b3d2276?ref=blog.nebra.one" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; color: inherit; text-decoration: inherit;">(Etherscan)</a></u></td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">424,891</td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">26,559</td></tr><tr style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">32<span>&#xA0;</span><u style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;"><a href="https://sepolia.etherscan.io/tx/0xbf9669bfbcc05830b5cff9f27f186d6b6ca482ea2365fa879ed75cff08552e34?ref=blog.nebra.one" style="box-sizing: border-box; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; color: inherit; text-decoration: inherit;">(Etherscan)</a></u></td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">734,388</td><td class="border border-slate-700" style="box-sizing: border-box; border-width: 1px; border-style: solid; border-color: rgb(51 65 85/var(--tw-border-opacity)); border-image: initial; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-border-opacity: 1;">22,963</td></tr></tbody></table>
<!--kg-card-end: html-->
<p></p><p>As we iterate the contracts and introduce more optimizations, we expect to significantly reduce the costs shown here.</p><h3 id="step-2-aggregated-proof-verification">Step 2: Aggregated proof verification</h3><p></p><p>The current version of NEBRA UPA aggregates proofs into a Halo2-KZG proof. The cost of verifying such a proof in isolation is about&#xA0;<strong>350k gas</strong>, and is roughly independent of batch size. In addition, the UPA contract emits an event and updates its storage to mark each application proof in the batch as verified. This incurs a marginal per-proof cost of about&#xA0;<strong>7k gas</strong>.</p><p></p><p>Therefore the per-proof gas cost for verifying one batch of&#xA0;$N$&#xA0;proofs and storing the result is approximately:</p><p>$$350000/N + 7000$$</p><p>The current configuration of NEBRA UPA sets the batch size to&#xA0;$N=32$. With this batch size the aggregated verification cost comes out to&#xA0;<strong>~18k gas</strong>&#xA0;per-proof&#xA0;<a href="https://sepolia.etherscan.io/tx/0x5ab92e9f37faef3d5d7b7a96d613ee16ac632dc94ddcd3263c6bf4baf05b8455?ref=blog.nebra.one"><u>(Etherscan)</u></a>.</p><p></p><h3 id="step-3-querying-the-verification-result">Step 3: Querying the verification result</h3><p>Once a proof has been verified by the UPA contract, the app contract may query the UPA contract to confirm that the associated public inputs are valid. This typically looks like:</p><p></p><p></p><pre><code class="language-solidity">require(upaVerifier.isVerified(circuitId, publicInputs, &quot;Not verified&quot;);
</code></pre><p></p><p>The gas cost of this external contract call is about&#xA0;<strong>25k gas</strong>&#xA0;per proof.</p><p></p><p>In the near future, apps will be able to amortize this cost by checking that a whole multi-proof submission has been verified instead of checking each of its proofs individually.</p><h3 id="end-to-end-gas-savings">End-to-end gas savings</h3><p></p><p></p><h4 id="using-on-chain-submission">Using on-chain submission</h4><p>With UPA, assuming submissions of size&#xA0;$M$&#xA0;and proof aggregations of size&#xA0;$N$, the total end-to-end per-proof gas cost&#xA0;<strong>with on-chain submissions</strong>&#xA0;comes out to about:</p><p>$$100000/M + 350000/N + 52000$$</p><p>Concretely, with submissions of&#xA0;$M=32$&#xA0;proofs and aggregations of&#xA0;$N=32$&#xA0;proofs, this per-proof gas cost comes out to</p><p>$$100000/32 + 350000/32 + 52000 \approx 66000$$</p><p>which represents a savings of about&#xA0;<strong>184k gas</strong>&#xA0;(~75%).</p><p></p><h4 id="using-off-chain-submission">Using off-chain submission</h4><p>The end-to-end gas cost&#xA0;<strong>with off-chain submissions</strong>&#xA0;will be approximately:</p><p></p><p>$$350000/N + 32000$$</p><p>With the current UPA configuration of&#xA0;$N=32$, the per-proof cost comes out to</p><p>$$350000/32 + 32000 \approx 43000$$<br></p><p>which represents a savings of about&#xA0;<strong>207k gas</strong>&#xA0;(~85%).</p>]]></content:encoded></item><item><title><![CDATA[Empowering DeFi with Affordable ZKP: The Brevis-NEBRA Collaboration]]></title><description><![CDATA[NEBRA is onboarding our inaugural partner, Brevis to integrate with NEBRA's Universal Proof Aggregation (UPA).]]></description><link>https://blog.nebra.one/brevis/</link><guid isPermaLink="false">66b3bb652a02c80144d5ae5b</guid><category><![CDATA[Partner]]></category><category><![CDATA[Blog]]></category><dc:creator><![CDATA[Jeff]]></dc:creator><pubDate>Mon, 08 Apr 2024 13:59:00 GMT</pubDate><media:content url="https://blog.nebra.one/content/images/2024/07/cover1.png" medium="image"/><content:encoded><![CDATA[<h2 id="whats-brevis">What&apos;s Brevis</h2><img src="https://blog.nebra.one/content/images/2024/07/cover1.png" alt="Empowering DeFi with Affordable ZKP: The Brevis-NEBRA Collaboration"><p></p><p>Brevis is a ZK coprocessor that empowers smart contracts to read the full historical onchain data and run customizable compute using zero-knowledge proofs. With the power of trust-free historical data, Brevis enables many new use cases such as data-driven DeFi, trust-fee active liquidity management, omnichain activity-based identity, and many more.</p><figure class="kg-card kg-image-card"><img src="https://blog.nebra.one/content/images/2024/07/brevis_overview.png" class="kg-image" alt="Empowering DeFi with Affordable ZKP: The Brevis-NEBRA Collaboration" loading="lazy" width="1104" height="618" srcset="https://blog.nebra.one/content/images/size/w600/2024/07/brevis_overview.png 600w, https://blog.nebra.one/content/images/size/w1000/2024/07/brevis_overview.png 1000w, https://blog.nebra.one/content/images/2024/07/brevis_overview.png 1104w" sizes="(min-width: 720px) 720px"></figure><p></p><p></p><h2 id="empower-defi">Empower DeFi</h2><p>As a ZK coprocessor, Brevis generates a huge amount of proofs of customizable computation based on historical onchain data, one example is to use&#xA0;<a href="https://blog.brevis.network/2023/11/01/uniswap-v4-hook-brevis-zk-coprocessor-data-driven-dex-experiences/?ref=blog.nebra.one"><strong><u>Uniswap V4 hooks + Brevis</u></strong></a>+ Brevis to provide data driven DEX experiences. To get ZK coprocessors to the masses, it is crucial to leverage proof aggregation and the shared economy from NEBRA to lower the end-to-end cost for users. The Brevis team has done earth-moving engineering work to lower the proving cost. Now, integrating NEBRA brings down the proof verification cost to empower the DeFi space. The collaboration with NEBRA makes Brevis the most cost-efficient coprocessor in the market.</p><p></p><p></p><p>How can NEBRA UPA help Brevis?</p><p></p><p>More specifically, NEBRA UPA aggregates multiple proofs (from different parties, applications etc) into a single aggregated proof onchain. By using NEBRA UPA as the shared settlement layer of the proofs, the proof verification cost gets amortized among different parties. NEBRA UPA 1.0 brings the proof verification cost down by 10x on both Ethereum and its L2s.</p><p></p><p></p><p>NEBRA is going to support Brevis team&apos;s mission of bringing trust-free computation over historical data to a wide variety of users. NEBRA UPA is going to be integrated into the last step of Brevis proof settling pipeline as shown in the picture below:</p><figure class="kg-card kg-image-card"><img src="https://blog.nebra.one/content/images/2024/07/nebra_brevis.png" class="kg-image" alt="Empowering DeFi with Affordable ZKP: The Brevis-NEBRA Collaboration" loading="lazy" width="884" height="680" srcset="https://blog.nebra.one/content/images/size/w600/2024/07/nebra_brevis.png 600w, https://blog.nebra.one/content/images/2024/07/nebra_brevis.png 884w" sizes="(min-width: 720px) 720px"></figure><p></p><p>NEBRA team is excited to onboard Brevis as the first NEBRA UPA partner and excited for further collaborations in the years to come.</p><p></p><p></p><p>Let&#x2019;s bring ZKP to the masses!</p><p></p><h2 id="interested-in-building-with-nebra">Interested in building with NEBRA?</h2><p></p><p>If you are interested in trying out NEBRA&#x2019;s UPA&#xA0;<a href="https://demo.nebra.one/?ref=blog.nebra.one"><u>click here</u></a>.</p>]]></content:encoded></item><item><title><![CDATA[Powering the next 10,000 zkRollups: The AltLayer-NEBRA Collaboration]]></title><description><![CDATA[AltLayer and NEBRA are partnering to enable mass adoption of zkRollups by leveraging NEBRA's proof aggregation tech to drastically reduce the costly verification of frequent ZK proofs required for rollups..]]></description><link>https://blog.nebra.one/altlayer/</link><guid isPermaLink="false">66b3bb652a02c80144d5ae5a</guid><category><![CDATA[Partner]]></category><category><![CDATA[Blog]]></category><dc:creator><![CDATA[Jeff]]></dc:creator><pubDate>Mon, 08 Apr 2024 13:56:00 GMT</pubDate><media:content url="https://blog.nebra.one/content/images/2024/07/3--1--1.png" medium="image"/><content:encoded><![CDATA[<h2 id="what%E2%80%99s-altlayer">What&#x2019;s AltLayer</h2><img src="https://blog.nebra.one/content/images/2024/07/3--1--1.png" alt="Powering the next 10,000 zkRollups: The AltLayer-NEBRA Collaboration"><p></p><p>AltLayer is an open and decentralized protocol for rollups. AltLayer brings together novel ideas, such as&#xA0;<a href="https://altlayer.io/restaked-rollup?ref=blog.nebra.one"><u>Restaked rollup</u></a>, which takes existing rollups (spun from any rollup stack such as OP Stack, Arbitrum Orbit, ZKStack, Polygon CDK, etc.) and provides them with enhanced security, decentralization, interoperability, and crypto-economic fast finality.</p><p></p><p></p><p>With this latest integration, Nebra&#x2019;s UPA will aggregate the proofs into smaller units and settle them on Ethereum. This will enable our builders and users to benefit from reduced on-chain verification costs and improved interoperability.</p><p></p><h2 id="nebra%E2%80%99s-role">NEBRA&#x2019;s Role</h2><p></p><p>At NEBRA, we talked to many developers who want to launch rollup-based AppChains. The primary concern that prevents people from launching a ZK-based AppChain today is cost. And the cost can be broken down into the prover cost and verification cost. With the rapid progress of the zero-knowledge proof system, the prover cost has been reduced dramatically over the years, however, the verification cost remains a high barrier to entry to many builders. Here is a break-down of the Rollup verification cost (in USD) for rollup runners:</p><figure class="kg-card kg-image-card"><img src="https://blog.nebra.one/content/images/2024/07/rollup.png" class="kg-image" alt="Powering the next 10,000 zkRollups: The AltLayer-NEBRA Collaboration" loading="lazy" width="1318" height="458" srcset="https://blog.nebra.one/content/images/size/w600/2024/07/rollup.png 600w, https://blog.nebra.one/content/images/size/w1000/2024/07/rollup.png 1000w, https://blog.nebra.one/content/images/2024/07/rollup.png 1318w" sizes="(min-width: 720px) 720px"></figure><p></p><p>As shown in the table, even if a zkRollup settles the proof at a low frequency (once every hour), the rollup runner still needs to pay tens of thousands of dollars for the verification cost. We predict that the high performance rollups especially those are handling big trading volumes or developing latency sensitive gaming will settle the proof more frequently, even at the rate of every single block (a.k.a. Proof Singularity). This high proof verification cost is one of the biggest problems preventing people from building the next 10,000 zkRollups.</p><p></p><p></p><p><a href="https://docs.nebra.one/?ref=blog.nebra.one"><u>NEBRA UPA (Universal Proof Aggregation)</u></a><u>&#xA0;</u>solves the problem by using recursive snarks. NEBRA brings the shared economy to zero-knowledge proof verification. Thanks to its universality, proofs from different sources, such as zkML, zkRollup, zkDID, zkCoprocessors can be aggregated into a single proof and the verification cost gets amortized.</p><p></p><p></p><p>The figure below shows ZKP verification cost using NEBRA UPA with various batch size (https://docs.nebra.one/developer-guide/gas-costs)</p><figure class="kg-card kg-image-card"><img src="https://blog.nebra.one/content/images/2024/07/gas_cost.png" class="kg-image" alt="Powering the next 10,000 zkRollups: The AltLayer-NEBRA Collaboration" loading="lazy" width="1258" height="380" srcset="https://blog.nebra.one/content/images/size/w600/2024/07/gas_cost.png 600w, https://blog.nebra.one/content/images/size/w1000/2024/07/gas_cost.png 1000w, https://blog.nebra.one/content/images/2024/07/gas_cost.png 1258w" sizes="(min-width: 720px) 720px"></figure><p></p><p>The NEBRA team is more than excited to work alongside Altlayer to bring the next 1,000 zkRollups.</p><p></p><h2 id="interested-in-building-with-nebra">Interested in building with NEBRA?</h2><p></p><p>If you are interested in trying out NEBRA&#x2019;s UPA&#xA0;<a href="https://demo.nebra.one/?ref=blog.nebra.one"><u>click here</u></a>.</p>]]></content:encoded></item><item><title><![CDATA[Introducing NEBRA Labs]]></title><description><![CDATA[In the years to come, we envision that zero-knowledge-proof-powered applications will proliferate in the Ethereum ecosystem and more, far beyond their current level ...]]></description><link>https://blog.nebra.one/introducing-nebra-labs/</link><guid isPermaLink="false">66b3bb652a02c80144d5ae5c</guid><category><![CDATA[Identity]]></category><category><![CDATA[Blog]]></category><dc:creator><![CDATA[Jeff]]></dc:creator><pubDate>Wed, 20 Mar 2024 14:01:00 GMT</pubDate><media:content url="https://blog.nebra.one/content/images/2024/07/4.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.nebra.one/content/images/2024/07/4.png" alt="Introducing NEBRA Labs"><p></p><p>Blockchains are a trustless, globally distributed coordination technology, available for anyone to use without permission; zero-knowledge proofs bring privacy and scalable computations to blockchains. Together, we believe blockchains and zero-knowledge proofs enable better coordination technology at scale, for humans and machines.</p><p></p><p></p><p>In the years to come, we envision that zero-knowledge-proof-powered applications will proliferate in the Ethereum ecosystem and more, far beyond their current level of usage. In this future, zero-knowledge proofs from many different circuits, proof systems, generated by different parties, exist together and are composed by users in order to verify more complex statements onchain.</p><p></p><p></p><p>However, today it is still prohibitively expensive to verify zero-knowledge proofs onchain. In fact, people have already spent more than&#xA0;<a href="https://dune.com/nebra/zkp-verify-spending?ref=blog.nebra.one"><strong><u>$50 million</u></strong></a>&#xA0;worth of gas fees verifying proofs on Ethereum and its layer 2s. As the zero-knowledge future proliferates, and Ethereum becomes increasingly used for its security, we believe this number will continue to grow.</p><p></p><p></p><p>This expensive proof verification cost means only a few kinds of applications can be built today (the ones that can justify the high verification cost), and only a subset of users have access to proof verification (the ones that can afford it). We believe a future where onboarding to vote privately on a DAO costs $20 will exclude a majority of the world, a majority who we believe blockchain technology should also serve.</p><p></p><p></p><p>Solving this problem is critical to ushering the zero-knowledge future for all.</p><p></p><p></p><p>One solution is to equip Ethereum validators with specialized hardware for zero-knowledge proof verification. While this would likely provide a significant improvement on the status quo, it would come at the expense of validator decentralization by increasing the barrier to entry for running a validator.</p><p></p><p></p><p>Another solution, which wouldn&#x2019;t compromise on validator decentralization, is using zero knowledge proofs themselves to scale zero knowledge proof verification. Thanks to advances in highly efficient recursive SNARKs (&#xA0;<a href="https://iacr.org/archive/tcc2008/49480001/49480001.pdf?ref=blog.nebra.one"><strong><u>IVCs</u></strong></a>/&#xA0;<a href="https://dspace.mit.edu/handle/1721.1/61151?ref=blog.nebra.one"><strong><u>PCDs</u></strong></a>), we can now get a near unlimited amount of recursion. This means we can recursively prove multiple zero-knowledge proofs off chain, and verify only a single aggregated proof onchain. This significantly improves on the status quo, and provides nearly unbounded efficiency*.</p><p></p><p></p><p>This is what we&#x2019;re building at NEBRA. NEBRA is a research &amp; development organization working to make the zero-knowledge future a reality. We research and build technologies, infrastructure, and products to facilitate the mass adoption of zero-knowledge proofs.</p><p></p><p></p><p>Our first step towards this goal is to scale the proof settlement capabilities of Ethereum in a trustless and censorship resistant manner. To achieve this, we are developing&#xA0;<a href="https://eprint.iacr.org/2023/869?ref=blog.nebra.one"><strong><u>Universal Proof Aggregation</u></strong></a>&#xA0;technologies, to aggregate proofs generated from different circuits, different proof systems and different parties. Our second step will use this technology to bootstrap a decentralized proving network that can horizontally scale proving power with an increasing number of nodes.</p><p></p><p></p><p>Building NEBRA will be a long, challenging journey in a field advancing at an increasingly rapid pace. In order to fulfill our mission, we believe we will not only need to be on top of the latest research results in the field, but will also need to be able to turn these results into secure and performant engineering solutions. This applied cryptography r&amp;d muscle will be built both internally from the research-driven culture we will foster, and externally from working with a community of talented researchers and engineers in the space, sharing our vision for the future.</p><p></p><p></p><p>As we embark on this journey, we commit to defending ethereum&#x2019;s values of decentralization, permissionlessness and censorship-resistance. We also commit to working in the open, and making all our code open-source for the community to use and benefit from. We&#x2019;re excited to share more over the next months, and to usher together the zero-knowledge future for all humans and machines.</p><p></p><p></p><p>We welcome your contributions to NEBRA, and would love to welcome you in our community. Please reach out to community@nebra.one if you&#x2019;d like to chat! (<em>We appreciate&#xA0;</em><a href="https://twitter.com/ObadiaAlex?ref=blog.nebra.one"><strong><em><u>Alex Obadia</u></em></strong></a><em>&#x2019;s help on forming the article</em>)</p><p></p><p>* There is a latency/throughput tradeoff.</p><p></p><p>&#x2013;&#xA0;<strong>NEBRA Founding Team</strong></p><p></p><p></p><p><em>Shumo Chu, Francisco Hern&#xE1;ndez, Vincent Liew, Todd Norton, Akilesh Tangella, Duncan Tebbs, Afra Wang</em></p>]]></content:encoded></item></channel></rss>