<?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:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Kroma - Medium]]></title>
        <description><![CDATA[Tech blogs of Kroma, bringing gamified Web3 to the masses as a New Universal ZK Rollup on Ethereum. - Medium]]></description>
        <link>https://medium.com/kroma-network?source=rss----f0ad484f192d---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Kroma - Medium</title>
            <link>https://medium.com/kroma-network?source=rss----f0ad484f192d---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 14 Jun 2026 17:18:14 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/kroma-network" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[A Letter to KRO Holders]]></title>
            <link>https://medium.com/kroma-network/a-letter-to-kro-holders-1483dad4f77f?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/1483dad4f77f</guid>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[zkp]]></category>
            <category><![CDATA[kroma]]></category>
            <dc:creator><![CDATA[Kroma]]></dc:creator>
            <pubDate>Mon, 24 Feb 2025 12:52:27 GMT</pubDate>
            <atom:updated>2025-02-24T12:52:17.184Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0xuLFVpFJgH_2W9qzqr2fg.png" /></figure><h3><strong>TL;DR (Summary)</strong></h3><p>The Kroma team is declaring 2025 as the breakthrough year of Web3 mass adoption, focusing company resources and strategy accordingly. While previously focused on technology and research, the team will now balance efforts by also prioritizing business, partnerships, and user acquisition, particularly through Kropot.</p><h3>Key Priorities</h3><ul><li><strong>L2: Achieving Stage 1 as the top priority</strong><br> - Ensuring security while enhancing decentralization remains the highest priority.</li><li><strong>ZKP (Zero-Knowledge Proof): Collaboration with specialists like Succinct<br></strong> - Strengthening collaborations with expert teams to implement ZK proofs in a stable and cost-efficient manner.</li><li><strong>Acquiring 3 million Kropot users<br></strong>- By the end of 2025, Kroma aims to reach 3 million Kropot users, fostering an organic transaction-driven Web3 ecosystem.</li></ul><p>Kroma’s ecosystem growth directly correlates with the value of the $KRO token. To establish a positive cycle, the following three initiatives will be implemented:</p><ol><li><strong>Buyback Fund<br> </strong>- A portion of Kropot’s revenue will be used to purchase $KRO from the market, which will then be locked long-term or burned.</li><li><strong>Deflationary Mechanism<br> </strong>-Implementing mechanisms to gradually reduce or control $KRO supply, ensuring long-term value protection for token holders.</li><li><strong>Real Token Demand Creation</strong><br><strong> </strong>- Introducing models where businesses and projects must hold and lock up a certain amount of $KRO for promotions within Kropot.</li></ol><p>These measures will establish a clear positive cycle: Kropot’s growth → Increased ad/promotion revenue → Buyback &amp; Deflation → Rising token value → Ecosystem expansion. This will drive Kroma’s L2 toward mainstream adoption.</p><h3><strong>I. Kroma’s Journey So Far</strong></h3><p>The Kroma project was launched in 2022 to drive Web3 adoption, well before the explosion of Layer 2s and zkVM narratives. Since then, Kroma has made numerous technical advancements, including:</p><ul><li>World’s first Zero-Knowledge Fault Proof (ZK Fault Proof)</li><li>First permissionless validator system in OP Stack</li><li>Joining OP Superchain</li><li>Developing ZK technology &amp; Native Account Abstraction, receiving OP RetroPGF Grant (appox. 160,000 OP)</li><li>Receiving OP Superchain Grant (500,000 OP) for Web3 adoption via Kropot</li></ul><p>Despite these technological achievements, Web3 mass adoption remains unfulfilled. However, the emergence of faster and cheaper L2s has led to wider adoption of EIP-4337 (Account Abstraction), and Ethereum’s upcoming Pectra upgrade (EIP-7702) will enable Smart Account functionalities for EOAs, making Web3 accessibility even easier.</p><p>With this foundation, Kroma is declaring 2025 as the breakthrough year for Web3 adoption, following a strategic roadmap.</p><h3><strong>II. Kropot: The Super App for Web3 Adoption</strong></h3><p>Kropot is designed to simplify Web3 onboarding to an unprecedented level, allowing anyone to easily access Web3 services. It eliminates the common pain points of Web3 users — wallet creation, seed phrase backups, and complex transaction signatures — while providing a seamless mobile experience similar to Web2.</p><h4>Key Features of Kropot</h4><ul><li>Social Login &amp; Account Abstraction: Users can sign up with email/SNS accounts. It allows non-custodial wallet structures without gas fees.</li><li>High Scalability: While app-based, it seamlessly integrates with web environments for smooth Web2/Web3 transitions.</li><li>Sustainability: Built-in revenue models (ads, promotions) enable growth without reliance on token incentives.</li><li>Extreme Usability: Daily engagement with missions, mini-games, and rewards ensures high user retention.</li></ul><p>Even the best technology is meaningless if no one uses it. While Kropot’s ultimate vision is to be a super app, the Kroma team carefully analyzed where to start. The reward app model, which has been immensely popular in recent years, was identified as the ideal Web3 onboarding gateway.</p><p>Traditional reward apps often restrict point usage to their own ecosystem, whereas Web3-based reward apps convert points into tokens, unlocking limitless utility. This is Web3’s unique advantage and a key factor in attracting Web2 users.</p><p>Since its Android app launch on February 4, 2025, Kropot has experienced exponential growth. The number of total registered users is skyrocketing, nearing 100,000 and surpassing the initial 25,000 pre-registrations. Also, ongoing partnerships are expanding Kropot’s point utility.</p><h4><strong>Kropot’s objectives as a reward app are as follows:</strong></h4><ul><li><strong>Sustainable User Acquisition<br> </strong>- Revenue from ads, promotions, and partner airdrops will ensure a steady influx of new users while engaging existing ones with reward-based content.</li><li><strong>Seamless Web3 Onboarding via Account Abstraction</strong><br> - Kropot will serve as an effortless entry point for Web2 users into Web3 without barriers or education.</li><li><strong>Ecosystem Contribution via Cash Flow Generation<br></strong> - Revenue streams from ads, promotions, and offerwalls will fuel Kroma’s ecosystem, strengthening the $KRO token through buybacks and deflationary mechanisms.</li></ul><h4><strong>Kropot’s core features are:</strong></h4><ul><li><strong>Reward-based missions &amp; content: </strong>Users engage in daily tasks to earn rewards, boosting ecosystem activity.</li><li><strong>Mini-games with competitive elements:</strong> Light competition and community-driven gameplay encourage long-term retention.</li><li><strong>Kroma ID (Account Abstraction):</strong> Streamlined onboarding via EIP-4337, making Web3 features accessible even to blockchain novices.</li><li><strong>AI-powered assistant “Kropet”</strong><br> - Personalized rewards &amp; missions: AI-driven user behavior analysis for custom incentives.<br> - Interactive pet evolution: Frequent engagement enhances AI pet intelligence, creating a unique digital companion.<br> - Bridging daily life, gaming, and investment: Kropet simplifies Web3 complexity while maximizing app retention.</li></ul><h3><strong>III. Scaling Kropot’s Ecosystem</strong></h3><p>Kropot is uniquely positioned to bridge Web2 and Web3, enabling simultaneous promotions and partnerships across both ecosystems. By leveraging its large user base, Kropot will drive significant ad revenue. Users who naturally onboard into Web3 via Kropot can explore deeper Web3 services, while those content with reward apps can enjoy familiar experiences through in-app advertising.</p><p>The following is a projected revenue &amp; ARU (Active Registered Users) growth based on revenue data from other market reward apps:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Hxy-80FDcc2Ud5F5" /><figcaption>Projected revenue &amp; ARU growth of Kropot</figcaption></figure><p>According to the scenario, the expected revenue of 3 million ARU is over $200,000 per month, and with 5 million ARU, the expected revenue will surpass $300,000 per month. A portion of the revenue will be allocated to the $KRO token buyback fund.</p><p>The Kroma team is hustling for the following objectives:</p><ul><li>100,000 ARU in 30 days (post-launch)</li><li>1 million ARU in 180 days</li><li>3 million ARU in 1 year</li></ul><h3><strong>IV. Kroma’s Core Technical Advancements</strong></h3><p>While Kropot is crucial, the underlying Kroma Network must also function optimally to support Web3 adoption. On February 11, 2025, Kroma successfully transitioned to zkVM which took us more than 9 months, and now we are prepared to resolve long-standing challenges.</p><ol><li><strong>Achieving Stage 1 Optimistic Rollup<br>a.</strong> With zkVM, Kroma can now validate L1 derivation pipelines, moving closer to Stage 1 compliance.<br><strong>b.</strong> Vitalik Buterin has stated that non-Stage 1 L2s will be irrelevant by 2025, making this an urgent priority.<br><strong>c.</strong> We expect to achieve Stage 1 by April 2025.</li><li><strong>Launching Kroma DAO for $KRO Stakers<br>a. </strong>Users who stake KGH NFTs or $KRO will be eligible for the Kroma DAO, gaining voting power based on their stake.<br><strong>b. </strong>Governance participants will share Kroma’s sequencer revenue (in ETH), incentivizing active participation. Also, they may get distributed any unclaimed $KRO tokens that are reserved for airdrops</li><li><strong>Designing a Multi-ZK Proof System for Stage 2<br>a.</strong> Post-Kroma DAO launch, the focus will shift to multi-proof system design, paving the way for Stage 2.<br><strong>b. </strong>Kroma will collaborate with more ZK teams and explore a fully ZK Rollup future.</li></ol><h3><strong>V. The Road Ahead</strong></h3><p>The journey toward Web3 mass adoption will be long, but Kroma has already proven its technical excellence. In 2025, Kroma will drive Web3 adoption through:</p><ul><li>Kropot: The super app offering a seamless, innovative yet practical user experience.</li><li>Kroma ID: Maximizing Account Abstraction for easy wallet &amp; account management.</li><li>Kropet (AI Agent): Personalized engagement &amp; high retention.</li><li>$KRO Tokenomics 2.0: Sustainable cash flow &amp; token value enhancement.</li></ul><p>Ensuring blockchain accessibility for all by breaking the barrier between Web2 and Web3 is our mission. We will put our best efforts to achieve this mission, strengthening the Kroma ecosystem with Kropot’s explosive growth. The possibilities ahead of us are endless.</p><p>We extend our deepest gratitude to everyone joining us on this vision and journey. We will do our utmost to ensure that the upcoming year, 2025, is remembered as the turning point for Web3 mass adoption.</p><p>Thank you for joining us on this journey.</p><p>Sincerely,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MrQKwzr776X5-RC8noYzLw.png" /></figure><p>TK Park<br>CEO<br>Lightscale Holdings PTE., Ltd.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1483dad4f77f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/a-letter-to-kro-holders-1483dad4f77f">A Letter to KRO Holders</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kroket is Now Kropot — A New Name, The Same Mission]]></title>
            <link>https://medium.com/kroma-network/kroket-is-now-kropot-a-new-name-the-same-mission-9ae505daad4b?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/9ae505daad4b</guid>
            <category><![CDATA[application]]></category>
            <category><![CDATA[rewards]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[kropot]]></category>
            <dc:creator><![CDATA[Kroma]]></dc:creator>
            <pubDate>Thu, 20 Feb 2025 08:04:44 GMT</pubDate>
            <atom:updated>2025-02-20T08:04:35.241Z</atom:updated>
            <content:encoded><![CDATA[<h3>Kroket is Now Kropot — A New Name, The Same Mission</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L-GWLp9FR2kNzDKtNhFqzA.png" /></figure><h3>A New Beginning</h3><p>Kroket has been evolving, and as we continue to refine our vision, we realized it was time for a fresh identity — one that better reflects our mission, brand, and the exciting future ahead.</p><p>So, we’re officially rebranding <strong>Kroket to Kropot</strong>. 🎉</p><iframe src="https://cdn.embedly.com/widgets/media.html?type=text%2Fhtml&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;schema=twitter&amp;url=https%3A//x.com/kroma_network/status/1892139787911647617&amp;image=" width="500" height="281" frameborder="0" scrolling="no"><a href="https://medium.com/media/d56b794865ee103400fcbff4fe23e470/href">https://medium.com/media/d56b794865ee103400fcbff4fe23e470/href</a></iframe><h3>Why the Change?</h3><p>The name <strong>Kropot</strong> represents more than just a rebrand — it embodies our vision for <strong>Web3 mass adoption</strong>. ‘<strong><em>Pot</em></strong>’ symbolizes<strong> a</strong> <strong>treasury of rewards</strong>, fueling an ecosystem where engagement translates into real value.</p><p>But this rebrand isn’t just about a name change — it also serves as a fresh start to remind users of the <strong>exciting ways to maximize their rewards!</strong> With Kropot, users can <strong>swap their points for OP and KRO tokens</strong>, making rewards more versatile and valuable. 😎 This shift is part of our broader mission to <strong>simplify Web3 onboarding and ensure a rewarding experience for everyone.</strong></p><p>Rest assured — <strong>everything you love stays the same, or maybe even better!</strong> 🙌 The experience, rewards, and seamless onboarding remain unchanged, just with a new name and an even stronger commitment to our mission.</p><h3>Where Can You Find Kropot?</h3><p>The transition has already taken place across platforms, so you can now find <strong>Kropot live on Google Play and the App Store</strong>.</p><ul><li><strong>Download here:</strong> <a href="https://kropot.io/">https://kropot.io/</a></li></ul><p>If you’re already a user, there’s nothing you need to do — just update the app and continue stacking rewards. 🫡</p><h3>What’s Next?</h3><p>This rebrand is just the beginning. We have major plans for <strong>Kropot’s expansion</strong>, new features, and even more rewarding experiences for our users and, NFT and KRO holders. Stay tuned for what’s coming next.</p><blockquote>And for those of you feeling nostalgic — don’t worry, Kroket will always hold a special place in our hearts. <strong>RIP Kroket (2025–2025, 44 days 😇), gone but never forgotten.</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6hrp9nRMm956CWZVtOkHUw.png" /></figure><p>Now, onwards and upwards with Kropot. See you!💚</p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a> | <a href="https://kropot.io/">Kropot App</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9ae505daad4b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/kroket-is-now-kropot-a-new-name-the-same-mission-9ae505daad4b">Kroket is Now Kropot — A New Name, The Same Mission</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kroma’s transition to zkVM Fault Proof]]></title>
            <link>https://medium.com/kroma-network/kromas-transition-to-zkvm-fault-proof-b8c8d2dc39c6?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/b8c8d2dc39c6</guid>
            <category><![CDATA[layer-2-solution]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[kvm-z]]></category>
            <dc:creator><![CDATA[Kroma]]></dc:creator>
            <pubDate>Tue, 11 Feb 2025 10:39:13 GMT</pubDate>
            <atom:updated>2025-02-11T10:39:13.055Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w8C2ngn8Qf9qnDJkQb7mvw.png" /></figure><p>The Kroma network has successfully upgraded to version v2.1.1+geth.v0.6.1 (Kroma MPT hardfork). This hard fork transitions Kroma’s state storage from ZK Trie to Merkle Patricia Trie (MPT) and shifts the fault-proof system from Scroll’s zkEVM to Succinct’s zkVM. These changes will improve performance, reduce maintenance complexity, and ensure compatibility with the OP Stack. We have worked with our partners at Succinct to make these changes possible.</p><h3>Why Transition from zkEVM to zkVM?</h3><p>We transitioned from zkEVM to zkVM for several technological and operational reasons:</p><h4>1. Faster and Cheaper Proof Generation</h4><p>zkVMs have matured significantly in the last two years, and Succinct’s SP1 is leading the charge. Multi-machine orchestration was a key feature in our decision to adopt SP1. This splits the proving process into smaller computational cycles, allowing machines to parallelize proof generation and merge them efficiently at the final stage. This significantly improves performance, decreases proving costs, and reduces the total runtime.</p><h4>2. Simplified Circuit Maintenance</h4><p>Maintaining our zkEVM required constant updates to its ZK circuits. Every new transaction type forced us to rewrite the supercircuit, which was both labor-intensive and time-consuming. Auditing these circuits was a costly and lengthy process. SP1 eliminates much of this complexity because we only need to maintain the guest program.</p><h4>3. Proofs Including Derivation Pipeline</h4><p>When using Scroll’s zkEVM, we could not include the validation of the L1 derivation pipeline in the ZK proofs. This made Kroma’s proof system incomplete, and resolving this problem was a top priority for our team. By using <a href="https://github.com/op-rs/kona">Kona</a>* as a guest program of SP1, we were able to prove the derivation pipeline, leading to a more complete proof system.</p><p><em>Note: Kona is a suite of portable implementations of the OP Stack rollup state transition, namely the derivation pipeline and the block execution logic.</em></p><h3>Building on SP1 and Succinct’s Prover Network</h3><p>We built our fault proof system on top of <a href="https://github.com/succinctlabs/op-succinct">OP Succinct</a>, which combines the modularity of the OP Stack with SP1, Succinct’s state-of-the-art zkVM. OP Succinct serves as a wrapper for Kona, a Rust implementation of the OP Stack rollup state transition function, and it generates ZK proofs through a simple API call.</p><p>Fundamentally, the combination of these technologies allows any rollup to implement ZK fault proving or full validity proving. Proving workloads are outsourced to the Succinct Prover Network, which generates proofs at low latency and affordable costs. Kroma is among the early adopters of Succinct’s Prover Network, and we’re excited to show what this technology can do for our users.</p><h3>State Migration: Ensuring a Seamless Transition</h3><p>Transitioning to a zkVM required migrating the entire state from ZK Trie to MPT. The Kroma team initially used ZK Trie to maintain compatibility with zkEVM, but with zkVM, MPT became the necessary choice. MPT not only improves performance but also aligns Kroma more closely with the OP Stack.</p><p>State migration, however, is one of the most complex tasks in a blockchain upgrade, as it directly handles user assets — a single mistake can have catastrophic consequences. To ensure a flawless transition, the Kroma team dedicated over six months to rigorous testing and simulations. Also, Kroma prioritized chain liveliness by implementing a zero-downtime migration process rather than taking the easier route of temporarily halting the network for migration.</p><h3>Benefits of Using MPT and Future OP Stack Upstreaming</h3><p>With the adoption of MPT, Kroma’s codebase is now much more aligned with the OP Stack, except for its unique and innovative validator system. Previously, Kroma’s reliance on zkEVM made it difficult to stay up to date with OP Stack improvements. This move removes these barriers, enabling faster upstreaming of OP Stack updates.</p><h3>Next Steps for Kroma</h3><p>The Kroma team has outlined the following roadmap for the near future:</p><ul><li>Upstream OP Stack: With a more streamlined codebase, Kroma will integrate the latest updates from the OP Stack more efficiently.</li><li>Complete Proof System for Stage 1: Now that we have validated the L1 derivation pipeline, the only blocker for Stage 1 is resolving an issue where deletion of the output that lost a challenge leads to successive wins of challenger regardless of the correctness of the output following the deleted output.</li><li>Develop a Multi-Proof System for Stage 2: Kroma aims to use multiple zkVMs to establish an on-chain provable bug detection mechanism. The Security Council would only act if proving results differ, which would indicate a bug in one of the zkVMs. With this multi-proof system, Kroma can aim for Stage 2.</li><li>Kroma DAO Formation: In the long run, protocol upgrades should be governed by Kroma DAO rather than the Security Council. The team plans to introduce a detailed governance framework outlining the formation and operation of Kroma DAO.</li></ul><h3>Conclusion</h3><p>The Kroma network’s upgrade to version v2.1.1+geth.v0.6.1 marks a significant leap forward in efficiency, maintainability and security. The move from zkEVM to zkVM, the adoption of MPT, and the choice of SP1 and the Succinct’s Prover Network collectively enhance Kroma’s capabilities while ensuring alignment with the OP Stack. Looking ahead, Kroma’s focus on upstreaming OP Stack, refining the proof system, and establishing a decentralized governance model through Kroma DAO will further solidify its position as a leading Layer 2 network.</p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8c8d2dc39c6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/kromas-transition-to-zkvm-fault-proof-b8c8d2dc39c6">Kroma’s transition to zkVM Fault Proof</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[Recap] Superchain Asia Dev-Nexus]]></title>
            <link>https://medium.com/kroma-network/recap-superchain-asia-dev-nexus-2f1b34f32b67?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/2f1b34f32b67</guid>
            <category><![CDATA[interoperability]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[events]]></category>
            <category><![CDATA[superchain]]></category>
            <category><![CDATA[account-abstraction]]></category>
            <dc:creator><![CDATA[Kroma]]></dc:creator>
            <pubDate>Mon, 03 Feb 2025 08:58:25 GMT</pubDate>
            <atom:updated>2025-02-03T08:58:13.247Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qrlqk_STExuTfjTlKkovsg.jpeg" /></figure><p><strong>GM Kroma Community!</strong></p><p>In the fast-paced blockchain industry, it is important to establish a strong and competitive identity to solidify a project’s branding. What do you guys think of Kroma’s best standout identity in terms of Layer 2 branding?</p><p>In my personal opinion, is that; Kroma is a pioneer in fostering ‘Superchain Asia.’ Kroma is the first project that proposed the terminology ‘Superchain Asia’ to expand Superchain presence across Asia. Kroma already executed a series of Superchain Asia events in 2024 EDCON and KBW.</p><p>The goal of ‘Superchain Asia’ is to enhance the visibility of Superchain projects in Asia, foster collaboration among Superchain-related initiatives, and create a space for networking among professionals and developers interested in Superchain.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_-VnB3uEyaQz4N6i" /></figure><h4><strong>👩🏻‍💻 Superchain Asia Dev-Nexus</strong></h4><p>On January 11, the ‘<a href="https://lu.ma/o8izoksg">Superchain Asia Dev-Nexu</a>s’ was held to encourage more builders to onboard into the Superchain ecosystem. Unlike previous Superchain events at EDCON and KBW, this event took a more developer-focused approach, diving deeper into how each project contributes to the Superchain ecosystem on the dev side and the technologies they are leveraging.</p><h3><strong>⚡️ Lightning Talk</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7oHDJbIK1MSe1X33" /></figure><h4><a href="https://x.com/kroma_network"><strong>Kroma </strong></a><strong>— </strong><a href="https://x.com/StackDigest"><strong>Harry</strong></a><strong>: Bringing Mass to Web3 with Account Abstraction</strong></h4><p>Harry, the blockchain developer at Kroma, started the first lightning talk session about Account Abstraction (AA), emphasizing that the AA-integrated ‘<a href="https://kroket.app/"><strong>Kroket</strong></a>’ (Web3 Quest App platform that Kroma is building) can bring mass adoption to the Superchain. He also pointed out that developing AA is the way Kroma contributes to the Superchain ecosystem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4A4ocAFsKZEgr3a8" /></figure><h4><a href="https://x.com/Mint_Blockchain"><strong>Mint Blockchain</strong></a><strong> — </strong><a href="https://x.com/Rose_Quannn"><strong>Rose</strong></a><strong>: Unlocking the Future of NFTs: Scaling and Innovating with Mint Blockchain on the Superchain Ecosystem</strong></h4><p>Rose, the Head of the Ecosystem at Mint Blockchain, highlighted the achievements of the Mint Blockchain ecosystem and explained its NFT structure. She also shared exciting future plans, including grant opportunities for builders within the Mint ecosystem, emphasizing Mint Blockchain’s role as a bridge to onboard more builders into the broader Superchain ecosystem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*X5i6vQHTuaxc3xkZ" /></figure><h4><a href="https://x.com/soneium"><strong>Soneium </strong></a><strong>— </strong><a href="https://x.com/taegeongo"><strong>Alan</strong></a><strong>: ​How did we enable the interop from Astar to Soneium and finally Superchain?</strong></h4><p>Well NOW this is the ‘REAL’ dev-focused presentation I could say. Alan, a front-end engineer at Soneium, went through Optimism’s Superchain docs (Gitbook) in detail, providing clear instructions on how to start building on the Superchain. He examined the docs line by line, explaining how to implement and develop a roll-up solution based on the OP Stack for each project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sIpbkQrP3oJxr7UO" /></figure><h4><a href="https://x.com/Uniswap"><strong>Uniswap</strong></a><strong> — Gen: ​Road to Unichain Mainnet and how to get onboard</strong></h4><p>Gen, Korea Community Partner at Uniswap Labs, delivered a presentation answering every question she might get in the Q&amp;A session (What is Unichain, Wen Unichain Mainnet, etc.), ensuring all their curiosities were covered. Furthermore, Gen introduced all of Uniswap’s grant programs to encourage more builders to join Unichain, contributing to the Superchain ecosystem’s expansion. Her perfect lightning talk expanded the future of Unichain users at that moment FOR SURE.</p><h3>🎙️ <strong>Panel Talk</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*107WjoRNzYfLnkml" /></figure><h4><strong>Topic: How was 2024 &amp; What’s New in 2025 (Wrap-Up and Vision)</strong></h4><p>Alicia, the marketer at Kroma, took on the role of panel moderator and guided the discussion smoothly from start to finish.</p><p>Steve, a product manager at Kroma, joined the panel in this session and mentioned that Kroma had been very busy in 2024 with the launch of two products (Spectrum, KCU) and their listing at the end of last year. Alan from Soneium shared the key goals Soneium is focusing on as they head into 2025. While Rose from Mint introduced the plans for the Superchain Asia event in Taiwan hosted by them at the late January, she also mentioned Base as a Layer 2 project she would like to collaborate in 2025. Gen from Unichain was asked with the question that ‘Is Unichain an Ethereum killer?’, and she said that the increasing expectations from users for Unichain are making her excited as well.</p><h3><strong>🔥 Activity &amp; Networking</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*N7pWn6aZMI8krLDN" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*jBs5OS8eIbL-8x1_" /></figure><p>There was also a fun activity at the end! We held a Dalgona game inspired by Squid Game, where participants had to carve out the shapes of the project logos. (I’m sure you can guess which logo was the easiest. lol) The top 5 fastest players who completed the game received surprise prizes. Compared to the formal and strict vibe of lightning talks, the panel talk and activity were light and casual, allowing participants to relax and enjoy the event fully.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XFetDn87bWCkaSjr" /></figure><p>One of the proudest moments for me as an event organizer was seeing people approach the lightning talk speakers during the networking session to ask questions. It was a sign that more builders and blockchain professionals are getting onboard with the Superchain ecosystem — which is exactly the goal of this event!</p><p>So!</p><p>This was the recap of Kroma’s third ‘Superchain Asia’ event. With each edition, we’re seeing projects grow within the Superchain ecosystem. The first event focused on introducing each project and how they onboarded on Superchain, while the second event explored their contribution plan to the ecosystem. Today, we dove deeper into the dev-focused ‘how’ of these contributions. I’m excited to see how the next event progresses. Ideally, it would be great to discuss the results of these contributions, or maybe hear from the marketing side! 👀</p><p>That’s all for now.</p><p>Thank you, community!</p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2f1b34f32b67" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/recap-superchain-asia-dev-nexus-2f1b34f32b67">[Recap] Superchain Asia Dev-Nexus</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GMW: 입력값 쉐어와 커뮤니케이션]]></title>
            <link>https://medium.com/kroma-network/gmw-%EC%9E%85%EB%A0%A5%EA%B0%92-%EC%89%90%EC%96%B4%EC%99%80-%EC%BB%A4%EB%AE%A4%EB%8B%88%EC%BC%80%EC%9D%B4%EC%85%98-21f7b783a194?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/21f7b783a194</guid>
            <category><![CDATA[zkp]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[gmw]]></category>
            <category><![CDATA[mpc]]></category>
            <category><![CDATA[zkresearchkr]]></category>
            <dc:creator><![CDATA[Ryan Kim]]></dc:creator>
            <pubDate>Thu, 09 Jan 2025 07:57:14 GMT</pubDate>
            <atom:updated>2025-01-09T07:57:14.287Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6pzwdeQMaybcM7amaB4ABg.png" /></figure><blockquote><a href="https://medium.com/u/5ee989ee2a3f">Ashjeong</a>작성, <a href="https://medium.com/u/e0f2dad1f47c">Ryan Kim</a> 번역</blockquote><blockquote>해당 글은 <a href="https://medium.com/u/e0f2dad1f47c">Ryan Kim</a> (<a href="http://twitter.com/chokobole33">@chokobole33</a>), <a href="https://medium.com/u/8334fe4667e9">Baz</a> (<a href="http://twitter.com/0xBATZOR">@0xBATZOR</a>) 그리고 <a href="https://medium.com/u/fdcca9ccee97">EthanYoo</a>(<a href="http://twitter.com/zkEthanYoo">@zkEthanYoo</a>) 가 피드백과 리뷰를 해주셨고, 이에 대해 감사의 인사를 드립니다.</blockquote><blockquote>영문 버전의 글은 <a href="https://blog.kroma.network/gmw-input-shares-and-communication-70803f4ae7ef">여기</a>에서 확인할 수 있습니다.</blockquote><h3>목차</h3><blockquote><strong><em>Preface</em></strong></blockquote><blockquote><strong><em>2-파티 GMW</em></strong><em><br>• 불리언 게이트<br>• XOR<br>• AND</em></blockquote><blockquote><strong><em>불리언 GMW 프로토콜 요약</em></strong></blockquote><blockquote><strong><em>n-파티 불리언 GMW<br>•</em></strong><em> 1 단계<br>• 2a 단계<br>• 2b 단계<br>• 총 AND 게이트 비용<br>• 3 단계</em></blockquote><blockquote><strong><em>산술 회로</em></strong></blockquote><blockquote><strong>결론</strong></blockquote><h3>Preface</h3><p>오데드 골드리드(Oded <strong>Goldreid</strong>), 실비오 미칼리(Silvio <strong>Micali</strong>), 아비 위그더슨(Avi <strong>Wigderson</strong>)에 의해 만들어진 GMW는 n ≥ 2인 경우의 n-파티를 위한 불리언 또는 산술 회로용 다자간 연산(MPC) 프로토콜입니다. 이 글에서는 단순화를 위해 GMW에서 불리언 회로를 만드는 방법에 초점을 맞춥니다.</p><h3>2-파티 GMW</h3><p>우선 2-파티 GMW부터 시작해 보겠습니다. 두 파티, 즉 <strong>앨리스</strong>와 <strong>밥</strong>이 있고, 2개의 입력 비트(<strong>i</strong>와 <strong>j</strong>)가 하나의 불리언 게이트에 입력되며, 출력 비트는 <strong>k</strong>라고 가정해 보겠습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/433/0*2CUeW-kNh3e_h_wD" /><figcaption>불리언 게이트</figcaption></figure><p>GMW 프로토콜에서 각 파티는 자신이 알고 있는 입력 비트에 대해 다른 파티와 비밀 공유 과정을 거칩니다.</p><p>앨리스의 입력 비트 <strong>i</strong>의 경우, <strong>앨리스</strong>는 <strong>밥</strong>에게 보낼 랜덤 비트 공유 <strong>sᵇᵢ </strong>​를 선택합니다. 동시에 자신의 개인 비트 공유 <strong>sᵃᵢ</strong>​를 생성하며,이는 <strong>sᵃᵢ</strong> ⊕ <strong>sᵇᵢ</strong> = <strong>i</strong>를 만족합니다.</p><p><strong>밥</strong>의 경우는 그 반대입니다. <strong>밥</strong>은 <strong>앨리스</strong>에게 보낼 랜덤 비트 공유 <strong>sᵃⱼ</strong>​를 선택합니다. 이후 자신의 개인 비트 공유 <strong>sᵇⱼ</strong>​를 생성하며, 이는 <strong>sᵃⱼ</strong>⊕ <strong>sᵇⱼ</strong> = <strong>j</strong>를 만족합니다.</p><p>따라서 단일 게이트는 각 파티에 의해 다음과 같이 표현됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*4UJ4s2be3pnmlw9G" /><figcaption>2-파티 GMW에서 구현된 단일 불리언 게이트: 앨리스와 밥</figcaption></figure><p>여기서 모든 파티의 출력은 최종 결과를 얻기 위해 모든 파티 간에 XOR 연산됩니다.</p><h3>불리언 게이트</h3><p><a href="https://blog.kroma.network/%EB%82%B4-%EB%A7%88%EC%9D%8C-%EC%86%8D-yao-e785cf55d1d5#73c2">XOR와 AND 게이트로 전체 불리언 회로를 만들 수 있으므로</a>, 2-파티 GMW 시스템에서 XOR와 AND 게이트를 어떻게 구현할 수 있는지 살펴보겠습니다.</p><h3>XOR</h3><p>XOR 게이트는 이 시나리오에서 매우 간단하게 구현할 수 있습니다. XOR 게이트란, 출력 <strong>k</strong>가 (<strong>i</strong> ⊕ <strong>j</strong>) = (<strong>sᵃᵢ</strong>⊕<strong>sᵇᵢ</strong>)⊕(<strong>sᵃⱼ</strong>⊕<strong>sᵇⱼ</strong>) = (<strong>sᵃᵢ</strong>⊕<strong>sᵃⱼ</strong>)⊕(<strong>sᵇᵢ</strong>⊕<strong>sᵇⱼ</strong>) 와 같다는 의미입니다. 즉, 각 파티는 자신의 공유값에 대해 XOR 연산을 수행할 수 있으며, 모든 파티의 최종 출력 값을 XOR 연산하여 전체 XOR 결과를 얻을 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*2-pO66-cgrIheVuL" /><figcaption>2-파티 GMW에서 구현된 단일 XOR 게이트</figcaption></figure><h3>AND</h3><p>AND 게이트를 구현하는 것은 약간 더 복잡합니다. AND 게이트의 출력 <strong>k </strong>가 (<strong>i </strong>⋀ <strong>j</strong>) = (<strong>sᵃᵢ</strong>⊕<strong>sᵇᵢ</strong>)⋀(<strong>sᵃⱼ</strong>⊕<strong>sᵇⱼ</strong>)이어야 하기 때문에, 각 파티가 단독으로 AND 게이트 출력의 일부를 계산할 수는 없습니다. 대신, 아래 논리적 동치 문장에 따라 (<strong>sᵃᵢ</strong>⊕<strong>sᵇᵢ</strong>)⋀(<strong>sᵃⱼ</strong>⊕<strong>sᵇⱼ</strong>)을 변환합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*XOGPCK5FpXAlS7fR" /></figure><p>결과 문장을 자세히 살펴보면, 전반부의 (<strong>sᵃᵢ</strong>⋀<strong>sᵃⱼ</strong>)와 (<strong>sᵇᵢ</strong>⋀<strong>sᵇⱼ</strong>) 부분은 <strong>앨리스</strong>와 밥<strong> </strong>각각이 쉽게 계산할 수 있습니다. 하지만 후반부 (<strong>sᵃᵢ</strong>⋀<strong>sᵇⱼ</strong>)⊕(<strong>sᵇᵢ</strong>⋀<strong>sᵃⱼ</strong>)는 두 파티 간의 일부 통신이 필요해 보입니다.</p><p>이 후반부를 파티 간에 전달하기 위해, 한 파티를 <strong>송신자(앨리스)</strong>로, 다른 파티를 <strong>수신자(밥)</strong>로 설정합니다.</p><p><strong>앨리스</strong>는 자신의 공유값 <strong>sᵃᵢ</strong>​와 <strong>sᵃⱼ</strong>​를 알고 있지만,<strong> 밥</strong>의 공유값 <strong>sᵇᵢ</strong>​와 <strong>sᵇⱼ</strong>​는 알지 못합니다. 그러나 <strong>앨리스</strong>는 <strong>밥</strong>의 각 공유값이 0 또는 1이라는 것을 알고 있습니다. 이를 바탕으로, <strong>앨리스</strong>는 <strong>sᵇᵢ</strong>​와 <strong>sᵇⱼ</strong>​의 가능한 조합 (0, 0), (0, 1), (1, 0), (1, 1) 을 사용하여 (<strong>sᵃᵢ</strong>⋀<strong>sᵇⱼ</strong>)⊕(<strong>sᵇᵢ</strong>⋀<strong>sᵃⱼ</strong>)의 4가지 가능한 결과를 생성할 수 있습니다. 아래 표는 <strong>sᵃᵢ</strong>​와 <strong>sᵃⱼ</strong>​가 각각<strong> 0</strong>과 <strong>1</strong>일 때의 가능한 결과를 보여줍니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*O43GSIUh3kop1qig" /><figcaption>sᵃᵢ​=0이고 sᵃⱼ=1일 때 논리 명제의 가능한 결과</figcaption></figure><p>다음으로, <strong>앨리스</strong>는 랜덤 비트 <strong>r</strong> (예: 여기서는 <strong>r</strong> = <strong>0</strong>)을 생성하고, 모든 가능한 결과를 ⊕<strong>r</strong>로 계산하여 암호화합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*K3J1vxiRt0uxbaP9" /><figcaption>sᵃᵢ​=0이고 sᵃⱼ=1일 때 ⊕r로 계산된 논리 명제의 가능한 결과</figcaption></figure><p>마지막으로, <strong>앨리스</strong>는 이 “암호화된 가능한 결과” 표를 <strong>1-out-of-4 oblivious transfer (OT)</strong> 프로토콜로 전달합니다. 한편, <strong>밥</strong>은 자신의 공유값 <strong>sᵇᵢ </strong>= <strong>0</strong>, <strong>sᵇⱼ</strong>= <strong>1</strong>을 같은 OT 프로토콜에 입력합니다. OT를 통해 <strong>밥</strong>은 자신의 공유값에 해당하는 <strong>r</strong>⊕<strong>(</strong>(<strong>sᵃᵢ</strong>⋀<strong>sᵇⱼ</strong>)⊕(<strong>sᵇᵢ</strong>⋀<strong>sᵃⱼ</strong>) 값을 얻습니다. 이 과정에서 <strong>밥</strong>은 나머지 세 가지 암호화된 가능한 결과를 알 수 없으며, <strong>앨리스</strong>도 <strong>밥</strong>이 어떤 값을 얻었는지 알 수 없습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*-Z1a5H-KBcldTyaw" /><figcaption>앨리스와 밥 간의 r⊕((sᵃᵢ⋀sᵇⱼ)⊕(sᵇᵢ⋀sᵃⱼ))에 대한 1-out-of-4 OT 프로토콜</figcaption></figure><p><strong>앨리스</strong>의 계산과 1-out-of-4 OT 프로토콜에서 <strong>밥</strong>과의 상호작용 결과로, 양쪽의 AND 게이트 결과를 결정할 수 있습니다. <strong>앨리스</strong>는 자신의 AND 게이트 결과를 (<strong>sᵃᵢ</strong>⋀<strong>sᵃⱼ</strong>)에 랜덤 비트 <strong>r</strong>를 XOR한 값으로 설정합니다.<strong>밥</strong>은 자신의 AND 게이트 결과를 (<strong>sᵇᵢ</strong>⋀<strong>sᵇⱼ</strong>)에 OT 결과 <strong>r</strong>⊕(<strong>sᵃᵢ</strong>⋀<strong>sᵇⱼ</strong>)⊕(<strong>sᵇᵢ</strong>⋀<strong>sᵃⱼ</strong>)를 XOR한 값으로 설정합니다.결과적으로, 양쪽의 AND 게이트 결과를 XOR하면 랜덤 비트 <strong>r</strong>가 상쇄되어 (<strong>i </strong>⋀ <strong>j</strong>)가 성공적으로 계산됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*w3Xo31sGFFTqXlfn" /><figcaption>2-파티 GMW에서 구현된 단일 AND 게이트</figcaption></figure><h3>불리언 GMW 프로토콜 요약</h3><p>따라서 GMW의 전체 프로세스는 다음과 같이 요약될 수 있습니다.</p><ol><li>모든 파티는 자신의 입력 비트에 대한 비밀 공유값을 서로 공유합니다.</li><li>모든 파티는 회로를 개별적으로 계산합니다.<br>a. XOR 게이트를 만나면, 각 파티는 자신의 입력 공유값을 XOR합니다.<br>b. AND 게이트를 만나면, 각 파티는 모든 다른 파티와 1-out-of-4 OT를 수행하고 자신의 입력 공유값의 AND 결과에 이를 XOR합니다.</li><li>모든 파티가 회로 계산을 완료하면, 각 파티의 최종 결과를 XOR하여 다자간 연산의 최종 결과를 얻습니다.</li></ol><p>이 단계별 과정은 GMW가 n-파티(n ≥ 2)로 구현될 때도 동일하게 적용됩니다.</p><h3>n-파티 불리언 GMW</h3><p>n-파티 버전의 GMW에서 단계를 살펴보겠습니다.</p><h4>“1. 모든 파티는 자신의 입력 비트의 비밀 공유값을 서로 공유합니다.”</h4><p>여기서는 <strong>앨리스</strong>와 <strong>밥</strong>이 비밀 비트 공유값을 공유한 과정과 동일한 과정을 따릅니다.</p><p>예를 들어, 파티 1 (<strong>P₁</strong>​)이 알고 있는 랜덤 입력 비트 <strong>h</strong>에 대해, <strong>P₁</strong>​은 n−1n-1n−1개의 랜덤 비트 공유값 <strong>s²ₕ</strong>, <strong>s³ₕ</strong>,…, <strong>sⁿ⁻¹ₕ</strong>, <strong>sⁿₕ</strong>를 생성하여 다른 파티 <strong>P</strong>₂, <strong>P</strong>₃,…, <strong>P</strong>ₙ₋₁, <strong>P</strong>ₙ​에게 보냅니다. 이후 <strong>P₁</strong>​은 자신의 비트 공유값<strong>s</strong>¹<strong>ₕ</strong>​를 생성하며, 이는 <strong>h </strong>= <strong>s</strong>¹<strong>ₕ</strong>⊕<strong>s²ₕ</strong>⊕<strong>s³ₕ</strong>⊕…⊕<strong>sⁿ⁻¹ₕ</strong>⊕<strong>sⁿₕ</strong>을 만족합니다:</p><p>이 비트 공유 과정은 모든 파티의 모든 입력 비트에 대해 수행되며, 이를 통해 각 파티는 회로를 개별적으로 계산할 수 있도록 입력 비트의 공유값을 가지게 됩니다.</p><p>이제 2-파티 예제를 확장하여 <strong>앨리스</strong>, <strong>밥</strong>에 <strong>캐롤</strong>을 추가해 3-파티 예제를 살펴보겠습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*0Lzi76BgAj63ZZwW" /><figcaption>n-파티에서 구현된 단일 불리언 게이트 앨리스, 밥, 캐롤,…</figcaption></figure><h4>“2a. XOR 게이트가 있는 경우, 각 파티는 자신의 입력 공유값을 XOR 연산합니다.”</h4><p>실제로, 2-파티 설명과 마찬가지로, 각 파티는 자신의 공유값을 서로 XOR 연산하여 개인적인 XOR 연산 결과를 도출합니다. 이후, 모든 파티의 결과를 XOR 연산하면 최종 XOR 다자간 계산 결과가 도출됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*RXdcCWagmm0VxQBB" /><figcaption>n-파티 GMW에서 구현된 단일 XOR 게이트</figcaption></figure><h4>“2b. AND 게이트가 있는 경우, 각 파티는 1-out-of-4 OT를 통해 다른 모든 파티와 통신하고, 자신의 입력 공유값의 AND 결과에 OT 결과를 XOR 연산합니다.”</h4><p>2-파티 버전에서 사용된 논리적 동치 문장은 다음과 같이 일반화할 수 있습니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*7RsvBDphk1YhHHum" /><figcaption>AND 논리 동치 문장 (<a href="https://securecomputation.org/docs/ch3-fundamentalprotocols.pdf">여기</a>서 가져옴)</figcaption></figure><p>우리의 비트 공유 표현으로, 이는 다음과 같습니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*IvGVocG1TKsLq5VP" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*TwSS31z-DbxBi2dn" /></figure><p>2-파티 예제와 마찬가지로, 노란색으로 표시된 부분은 각 파티가 자신의 계산만으로 수행할 수 있는 영역(즉, “…자신의 입력 공유값의 AND”)이고, 파란색으로 표시된 부분은 두 파티 간의 통신이 필요한 영역입니다. 더 구체적으로, 파란색 부분은 다음과 같이 그룹화할 수 있습니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*Hq1ei-M6zXQFWb_i" /></figure><p>첫 번째 부분 (<strong>sᵃᵢ</strong>⋀<strong>sᵇⱼ</strong>)⊕(<strong>sᵇᵢ</strong>⋀<strong>sᵃⱼ</strong>)은 2-파티 예제에서 <strong>앨리스</strong>와 <strong>밥</strong> 사이에 OT를 사용한 문장과 동일합니다. 두 번째 부분 (<strong>sᵇᵢ</strong>⋀<strong>s</strong>ᶜ<strong>ⱼ</strong>)⊕(<strong>s</strong>ᶜ<strong>ᵢ</strong>⋀<strong>sᵇⱼ</strong>)은 <strong>밥</strong>과 <strong>캐롤</strong> 간의 OT가 필요하며, 세 번째 부분 (<strong>sᵃᵢ</strong>⋀<strong>s</strong>ᶜ<strong>ⱼ</strong>)⊕(<strong>s</strong>ᶜ<strong>ᵢ</strong>⋀<strong>sᵃⱼ</strong>)은 앨리스와 캐롤 간의 OT가 필요합니다.<br>(“…각 파티는 다른 모든 파티와 1-out-of-4 OT를 통해 통신합니다…”).</p><p>따라서 n-파티 간 최종 AND 결과는 각 파티의 개별 계산 결과에 다른 모든 파티와의 OT 결과를 XOR 연산한 값이 됩니다. 모든 파티 간의 OT 쌍을 도식화하기 어려우므로, 아래 그림에서는 앨리스, 밥, 캐롤의 3-파티 예제만을 보여줍니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/0*ZZBzSTvjD9cC6QaN" /><figcaption>3-파티 GMW에서 구현된 단일 AND 게이트</figcaption></figure><h3>총 AND 게이트 비용</h3><p>조금 한 발 떨어져서, 전체 회로에서 파티 간 통신 비용을 생각해 봅시다. XOR 게이트는 통신 비용이 없단는 걸 기억해주시기 바랍니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/489/0*OK7Nmpb9qe6o3-Pg" /><figcaption>XOR 및 AND 게이트를 포함한 예제 회로</figcaption></figure><p>Since all AND gates at the same level can be run in parallel (such as AND gates 1 and 2 in the figure above), yet all AND gates in succession must be run in order (as in AND gate 1 must be computed before AND gate 3 in the figure above), the total number of rounds of communication between parties equals the depth of the circuit in terms of AND gates (depth = 2 in the figure above). Additionally, each AND gate requires Cⁿ₂ = (n(n-1))/2 total OT processes to take place (total number of unique party pairs). This means that in total, there are (depth of the circuit in terms of AND gates) * (n(n-1))/2 total OTs occurring in a given circuit, a significant communication cost for a circuit with many AND gates.</p><p>모든 AND 게이트가 같은 레벨에 있다면(위 그림에서 AND 게이트 1과 2처럼) 병렬로 실행될 수 있습니다. 하지만 연속적으로 배치된 AND 게이트는 차례대로 실행되어야 합니다(위 그림에서 AND 게이트 1이 계산된 후에야 AND 게이트 3을 계산할 수 있음). 따라서 파티 간의 총 통신 라운드 수는 회로의 AND 게이트에 대한 깊이(위 그림에서 깊이 = 2)와 같습니다. 추가적으로, 각 AND 게이트는 총 Cⁿ₂ = (n(n-1))/2개의 OT 프로세스를 필요로 합니다(고유한 파티 쌍의 총 수). 이 말은, 주어진 회로에서 발생하는 총 OT의 수는 (AND 게이트에 대한 회로 깊이) * (n(n-1))/2 와 같다는 말입니다. AND 게이트가 많은 회로의 경우, 이는 상당한 통신 비용이 될 수 있습니다.</p><h4>“3. 모든 파티가 회로 계산을 마치면, 각 파티의 최종 결과를 XOR 연산하여 다자간 계산의 최종 결과를 도출합니다.”</h4><p>위 문장에서 설명된 것처럼, 모든 파티의 회로 최종 결과는 XOR 연산되어 전체 결과를 도출합니다. 이는 각 파티가 자신의 중간 결과를 다른 파티에 노출하지 않는다는 것을 의미합니다.</p><h3>산술 회로</h3><p>While I showed the boolean version of GMW, this protocol also works for <strong>arithmetic circuits</strong>. Instead of XOR and AND gates, arithmetic circuits use <strong>addition</strong> and <strong>multiplication</strong> gates. Additionally, while the secret shares for an input <strong>h</strong> are calculated as <strong>s</strong>¹<strong>ₕ</strong>⊕<strong>s²ₕ</strong>⊕<strong>s³ₕ</strong>⊕…⊕<strong>sⁿ⁻¹ₕ</strong>⊕<strong>sⁿₕ</strong> for the boolean version, for the arithmetic version, hequals <strong>s</strong>¹<strong>ₕ+s²ₕ+s³ₕ+</strong>…<strong>+sⁿ⁻¹ₕ+sⁿₕ</strong>. Therefore, the addition operation will become free (like how XOR gates are free) and the multiplication operation requires communication between parties (similar to AND gates).</p><p>앞서 GMW의 불리언 버전을 설명했지만, 이 프로토콜은 <strong>산술 회로</strong>에도 적용됩니다. 불리언 회로에서 XOR와 AND 게이트를 사용하는 대신, 산술 회로는 덧셈과 곱셈 게이트를 사용합니다.또한, 입력 <strong>h</strong>에 대한 비밀 공유값이 불리언 버전에서는 <strong>s</strong>¹<strong>ₕ</strong>⊕<strong>s²ₕ</strong>⊕<strong>s³ₕ</strong>⊕…⊕<strong>sⁿ⁻¹ₕ</strong>⊕<strong>sⁿₕ</strong>​로 계산되지만, 산술 버전에서는 <strong>s</strong>¹<strong>ₕ+s²ₕ+s³ₕ+</strong>…<strong>+sⁿ⁻¹ₕ+sⁿₕ</strong>로 계산됩니다. 따라서, 덧셈 연산은 XOR 게이트처럼 통신 비용이 없는 “무료” 연산이 되며, 곱셈 연산은 AND 게이트와 마찬가지로 파티 간 통신이 필요합니다.</p><h3>결론</h3><p>GMW는 비밀 공유 개념에 기반하여 XOR 게이트가 무료이고 AND 게이트가 비용이 드는 독창적인 n-파티 MPC 프로토콜로 자리 잡고 있습니다. 프로토콜 시작 시, 각 AND 게이트에서, 그리고 회로 계산 종료 시에 파티 간 통신이 필요합니다.</p><p>읽어주셔서 감사합니다! 다음 MPC 아티클에서 만나요~</p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=21f7b783a194" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/gmw-%EC%9E%85%EB%A0%A5%EA%B0%92-%EC%89%90%EC%96%B4%EC%99%80-%EC%BB%A4%EB%AE%A4%EB%8B%88%EC%BC%80%EC%9D%B4%EC%85%98-21f7b783a194">GMW: 입력값 쉐어와 커뮤니케이션</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kroma Just Launched ‘Kroket,’ the Incentive-Driven Web3 App]]></title>
            <link>https://medium.com/kroma-network/kroma-just-launched-kroket-the-incentive-driven-web3-app-5545488c7347?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/5545488c7347</guid>
            <category><![CDATA[rewards]]></category>
            <category><![CDATA[kroket]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[kroma]]></category>
            <dc:creator><![CDATA[Kroma]]></dc:creator>
            <pubDate>Thu, 09 Jan 2025 06:34:54 GMT</pubDate>
            <atom:updated>2025-02-03T01:18:56.928Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1MYMxwczEk-CX2iv" /></figure><p>We’re thrilled to introduce <strong>Kroket</strong>, our brand-new Web3 app that makes earning rewards easy, fun, and engaging. Whether you’re a Web3 enthusiast or totally new to it, Kroket is here to make Web3 tech accessible to everyone.</p><h4>🎉 Turning Everyday Tasks into Real World Rewards</h4><p>With Kroket, you can complete simple tasks like quizzes, mini-games, or other fun missions to earn points. These points can be turned into digital assets like KRO and OP or exchanged for real-world rewards like coupons and vouchers. It’s our way of turning everyday activities into something more rewarding!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*8OGCDGserZEXpPrc" /></figure><h4>🔑 Simplifying Web3 with Kroma ID</h4><p>At the heart of Kroket is <strong>Kroma ID</strong>, our solution for making Web3 interactions smoother. Forget the hassle of managing private keys or worrying about gas fees — we’ve got that covered. Kroma ID lets you navigate Web3 effortlessly, using any token for gas payments while interacting with dApps in just a few clicks.</p><h4>🤝 Growing the Web3 Ecosystem</h4><p>But Kroket isn’t just about rewards — it’s also about growing the Web3 ecosystem. We’re working with amazing dApps to connect them with engaged, high-quality users. By building these partnerships, we’re helping developers reach verified users, drive real utility, and create meaningful connections that keep users coming back.</p><h4>🚀 What’s Next for Kroket?</h4><p>And we’re just getting started! Coming soon to Kroket:</p><ul><li><strong>Kropet</strong>, a gamified feature where you can care for virtual pets and earn rewards.</li><li>More interactive content and educational resources to help you dive deeper into the world of Web3.</li></ul><h4>📲 Start Earning Today</h4><p>Ready to jump in? <strong>Download Kroket today</strong> at <a href="https://kroket.app">https://kroket.app</a> and start earning rewards while exploring Web3 in the most intuitive way possible.</p><blockquote>“Kroket is more than just an incentive-based app,” said TK, CEO of Kroma. “It is designed to allow users to experience Web3 naturally, without requiring a deep understanding of complex technologies. We hope that more people will discover the convenience and possibilities of Web3 while enjoying tangible benefits through Kroket.”</blockquote><p>This is just the beginning of what’s possible with Kroket. We’re here to make Web3 practical, enjoyable, and accessible to everyone. Whether you’re diving in for the first time or exploring new possibilities, Kroket is your gateway to the decentralized world.</p><p><em>Read more in the press release </em><a href="https://btcdaily.org/kroma-introduces-kroket-the-incentive-driven-web3-app/"><em>here</em></a><em>.</em></p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5545488c7347" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/kroma-just-launched-kroket-the-incentive-driven-web3-app-5545488c7347">Kroma Just Launched ‘Kroket,’ the Incentive-Driven Web3 App</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Brakedown 분해하기]]></title>
            <link>https://medium.com/kroma-network/brakedown-%EB%B6%84%ED%95%B4%ED%95%98%EA%B8%B0-b339d4179d42?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/b339d4179d42</guid>
            <category><![CDATA[brakedown]]></category>
            <category><![CDATA[zkrollup]]></category>
            <category><![CDATA[zks]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[zkresearchkr]]></category>
            <dc:creator><![CDATA[Ryan Kim]]></dc:creator>
            <pubDate>Thu, 02 Jan 2025 06:14:13 GMT</pubDate>
            <atom:updated>2025-01-02T06:14:13.684Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SuHFlfto4L3b1ashGMlW7A.png" /></figure><blockquote><a href="https://medium.com/u/e0f2dad1f47c">Ryan Kim</a> (<a href="http://twitter.com/chokobole33">@chokobole33</a>) 작성</blockquote><blockquote>해당 글은 <a href="https://medium.com/u/5ee989ee2a3f">Ashjeong</a>, <a href="https://medium.com/u/e12cf7acf3e1">fakedev9999</a> (<a href="http://twitter.com/fakedev9999">@fakedev9999</a>) 그리고 <a href="https://medium.com/u/8334fe4667e9">Baz</a> (<a href="http://twitter.com/0xBATZOR">@0xBATZOR</a>) 가 피드백과 리뷰를 해주셨고, 이에 대해 감사의 인사를 드립니다.</blockquote><blockquote>영문 버전의 글은 <a href="https://blog.kroma.network/lets-break-down-brakedown-c73f907b4135">여기</a>에서 확인할 수 있습니다.</blockquote><h3>초록</h3><p>이 문서는 <a href="https://eprint.iacr.org/2021/1043.pdf">Brakedown</a> 프로토콜의 목표와 과정을 직관적으로 설명하는 것을 목표로 합니다.</p><h3>목차</h3><blockquote>• <em>서론</em></blockquote><blockquote><em>• 배경<br>- 왜 Merkle Tree 연산을 사용하는가?<br>- 선형 코드(Linear Code)<br>- 텐서 곱(Tensor Product)</em></blockquote><blockquote><em>• 프로토콜 설명<br>- 간단한 개요<br>- 선형 시간 인코딩(Linear-time Encoding)<br>- 희소 다중 선형 다항식(Sparse Multilinear Polynomial) 에 대한 선형 시간 커밋<br>- R1CS 를 Sumcheck 로 치환</em></blockquote><blockquote><em>• 결론</em></blockquote><h3>서론</h3><p>Brakedown 은 “R1CS 에 대한 증명을 가능한 한 빠르게 생성하려면 어떻게 해야 하는가?”라는 질문에서 시작됩니다. 이 프로토콜은 <strong>O(N)</strong> 필드 연산으로 증명 생성을 달성할 수 있는 스킴을 제시합니다. 이를 위해 선형 시간으로 작동하는 인코딩 방식을 도입합니다. 유사한 기술이 <a href="https://eprint.iacr.org/2020/1426.pdf">BCG</a> 에서도 사용되었지만, Brakedown 은 보다 실용적인 접근으로 차별화됩니다. 또한 신뢰 설정(trusted setup)을 요구하지 않으며, 양자 저항성을 제공할 수 있고, 필드 독립적(field-agnostic)이어서 더욱 실용적입니다.</p><h3>배경</h3><h4><strong>왜 Merkle Tree 연산을 사용하는가?</strong></h4><p>O(N) 길이의 벡터에 대해 커밋할 때, 관련된 연산의 복잡도는 일반적으로 다음과 같습니다:</p><ul><li><strong>FFT 연산</strong> → O(N⋅log⁡N) 필드 연산</li><li><strong>Merkle Tree 연산</strong> → O(N) 해시 연산</li><li><strong>MSM 연산</strong> → Pippenger 알고리즘을 사용할 경우, O(N⋅λ/log⁡(N⋅λ)) 그룹 연산</li></ul><p>O(N)을 달성하기 위해 O(N⋅log⁡N)인 FFT 연산은 사용할 수 없습니다. 마찬가지로, 그룹 연산이 필드 연산보다 느리기 때문에 MSM 연산도 피해야 합니다. 대신, 커밋을 위해 Merkle Tree 연산이 사용됩니다.</p><h4>선형 코드(Linear Code)</h4><p>코드워드의 선형 결합이 역시 코드워드가 되는 경우, 해당 코드는 <a href="https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95_%EB%B6%80%ED%98%B8"><strong>선형 코드</strong></a>라고 합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/708/0*aGwDNPVh9omrdQA-" /></figure><p>일반적으로 사용되는 Reed-Solomon (RS) 코드는 이 속성을 만족하며, 따라서 선형 코드입니다. (이 속성 덕분에 RS 기반 FRI에서 폴딩 연산을 사용할 수 있습니다.)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/708/0*0uiV1xkKSCiyJIJ4" /></figure><p>RS 코드에서 전통적으로 사용되는 인코딩 함수는 FFT 연산을 포함합니다. 그러나 앞서 언급한 제한으로 인해 다른 인코딩 방법을 찾아봐야 합니다.</p><h4>텐서 곱(Tensor Product)</h4><p><a href="https://namu.wiki/w/%ED%85%90%EC%84%9C%EA%B3%B1">텐서 곱</a>은 서로 다른 벡터 공간에서 벡터 v 와 u 의 모든 가능한 조합을 생성하는 연산입니다. 예를 들어, q₁ = [a, b] 이고 q₂ = [x, y, z] 인 경우, 두 벡터 간의 텐서 곱은 다음과 같은 행렬이 됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*KexwONRN1kTz8Iqx" /></figure><p>또한, 텐서 곱은 다음과 같이 <strong>Multi Linear Extension (MLE)</strong> 계산을 표현하는 데 사용될 수 있습니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*DySh7BecpFd2Ecgv" /></figure><p>예를 들어 l = 2 일 때, MLE 는 다음과 같이 계산됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*_XslNKG1YZRX2q9k" /></figure><h3>프로토콜 설명</h3><h4><strong>간단한 개요</strong></h4><p>프로토콜은 크게 <strong>커밋 단계</strong>, <strong>테스트 단계</strong>, <strong>평가 단계</strong>의 세 단계로 나뉩니다.</p><p><strong>커밋 단계</strong></p><p>이 단계에서는 입력 행렬에 커밋하며, 다음 과정을 거칩니다:</p><ol><li>행렬 <strong>u </strong>가 입력으로 주어지며, 여기서 <strong>uᵢ </strong>​는 i-번째 행을 나타냅니다.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/409/0*hBP0F5KcJUG6IGyv" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*wb7IZHa3E0EXix9d" /></figure><p>2. 주어진 비율 ρ 에 따라, 길이가 c 인 각 행이 길이가 N 인 행으로 인코딩되어 r×N 행렬 <strong>û </strong>가 생성됩니다. 증명자는 이 <strong>û</strong> 행렬을 Merkle 해시를 사용하여 검증자에게 커밋합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*scQWWDjFJYmlQZ5J" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*OikPp715ryxbfQWG" /></figure><p><strong>테스트 단계</strong></p><p>이 단계에서는 인코딩이 올바르게 수행되었는지를 검증하며, 다음 과정을 포함합니다:</p><p>1. 검증자는 랜덤 값 <strong>α </strong>를 샘플링하여 증명자에게 보냅니다.</p><p>2. 증명자는 <strong>α </strong>를 사용하여 <strong>u′ </strong>를 계산하고 이를 검증자에게 보냅니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/976/0*rNrWOiaYVivELbn6" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*2zQPC2_lqb8O-so8" /></figure><p>3. 검증자는 <strong>1 </strong>에서 <strong>N</strong> 사이의 값을 <strong>l</strong> 개 샘플링하여 다음 등식을 테스트합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/825/0*ZP3DVYRUvmvtZvIM" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*VB1ZqtFJYZLngJBY" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/605/0*wK2CE53sGbPwBeFs" /></figure><p>이 등식은 코드워드가 선형 코드이기 때문에 성립합니다. 즉, 행렬의 행들을 먼저 인코딩한 후 RLC 를 수행하는 것과, 먼저 RLC 를 수행한 후 인코딩하는 것이 동일합니다.<br>“<strong>Concrete Optimizations to the Commitment Scheme</strong>(Section 4)” 에 따르면, 다항식 커밋 스킴을 사용하는 경우 테스트 단계를 생략할 수 있습니다.</p><p><strong>계산 단계</strong></p><p>이 단계는 테스트 단계와 동일한 검사를 수행하지만 인코딩 없이 진행되며, 다음 과정을 포함합니다:</p><p>1. 검증자는 <strong>q₁ </strong>​∈ Fʳ 을 샘플링합니다.</p><p>2. 증명자는 <strong>u′′ </strong>를 계산하여 검증자에게 보냅니다. (테스트 단계의 2와 동일합니다.)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*coQhA_3RHTmJEWgt" /></figure><p>3. 검증자는 <strong>q₂ </strong>​∈ Fᶜ 을 샘플링하여 다음 등식을 테스트합니다: (테스트 단계의 3과 동일합니다.) 여기서 <strong>q₁ </strong>​과<strong>q₂ </strong>​의 텐서 곱이 벡터로펼쳐집니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_FGgu7j5chi3tqI_" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dE-BmzSDldqgPLRW" /></figure><p>예를 들어, r = 2 이고 c = 2 일 때, 다음과 같은 이유로 등식이 성립합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*SvtaDsXX8eAAhIMV" /></figure><p><strong>분석</strong></p><p>증명 생성 시간은 인코딩 및 커밋 연산에 따라 달라집니다. Merkle Tree 가 커밋에 사용되므로, 인코딩이 선형 시간 내에 수행되면 전체 실행 시간은 O(N) 입니다.</p><p>증명 구조는 다음으로 구성됩니다:</p><ul><li>c: 테스트 단계 2 및 계산 단계 3 에서 사용되는 필드.</li><li>r⋅l: 테스트 단계 3 및 계산 단계 4 에서 샘플링된 필드.</li><li>α: l 개의 쿼리에 필요한 오프닝 증명 크기.</li></ul><p>검증 시간은 O(r⋅l) 입니다. 증명 생성은 빠르지만, 증명 크기와 검증 시간은 r 에 비례합니다.</p><h4>선형 시간 인코딩(Linear-time Encoding)</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*aE96kqT1OFl0v7fd" /></figure><p>The figure above illustrates the linear-time encoding method used in Brakedown. For a given rate <strong>ρ</strong>, <strong>Enc(x)</strong> is a function that generates a vector of length <strong>n⋅ρ⁻¹</strong> from an input vector <strong>x</strong> of length <strong>n</strong>. The output is divided into three parts: <strong>(x, z, v)</strong>. The encoding <strong>Enc(x)</strong> proceeds as follows:</p><p>위 그림은 Brakedown 에서 사용되는 선형 시간 인코딩 방법을 보여줍니다. 주어진 비율 <strong>ρ</strong> 에 대해, <strong>Enc(x)</strong> 는 길이 <strong>n</strong> 의 입력 벡터 <strong>x</strong> 로부터 길이 <strong>n⋅ρ⁻¹ </strong>의 벡터를 생성하는 함수입니다. 출력은 <strong>(x, z, v) </strong>세 부분으로 나뉩니다. <strong>Enc(x)</strong> 의 인코딩은 다음과 같이 진행됩니다:</p><pre>Vec Enc(Vec x) {<br>  if (x.size() &lt; 900) {<br>    // 논문 5장에서 언급했듯이,임계값은 900으로 설정됩니다.<br>    // RS encoding 의 계산 오버헤드가 입력 크기의 제곱에 비례하지만, <br>    // 이 부분의 시간 기여가 미미하기 때문에 허용됩니다.<br>    return RSEnc(x);<br>  }<br>  // A 는 희소행렬입니다.<br>  Matrix A = SampleMatrixA();<br>  CHECK_EQ(A.rows(), x.size());<br>  CHECK_EQ(A.cols(), kAlpha * x.size());<br>  Vec y = x * A ;<br>  Vec z = Enc(y);<br>  // B 는 희소행렬입니다.<br>  Matrix B = SampleMatrixB();<br>  CHECK_EQ(B.rows(), z.size());<br>  CHECK_EQ(B.cols(), (kRateInv * - 1 - kAlpha * kRateInv) * x.size());<br>  Vec v = z * B;<br>  return Concatenate(x, z, v);<br>}</pre><p><strong>인코딩된 출력의 속성</strong></p><p>인코딩 결과 <strong>w</strong> = Enc(x) 에 대해, 매개변수 β 가 주어질 때 zero norm ∥w∥₀ 과 거리 δ 는 다음과 같이 정의됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*4Q8w7RsQQMWp1PZm" /></figure><p><a href="https://ko.wikipedia.org/wiki/%ED%95%B4%EB%B0%8D_%EA%B1%B0%EB%A6%AC">해밍 가중치(Hamming weight)</a>라고도 알려진 zero norm 은 x 에서 0이 아닌 요소의 개수를 나타냅니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*bL6NQsKsdsfvRPcd" /></figure><p>인코딩의 실행 시간은 입력 벡터 <strong>x </strong>의 길이에 비례합니다. 이 인코딩 방법과 관련된 증명은 논문 5.1장에서 자세히 설명되어 있습니다.</p><p>희소 다중선형 다항식에 대한 선형 시간 커밋</p><h4><em>희소 다중 선형 다항식(Sparse Multilinear Polynomial) 에 대한 선형 시간 커밋</em></h4><p><a href="https://eprint.iacr.org/2019/550.pdf">Spartan</a> 의 기법을 사용하여 입력 벡터를 선형 시간 안에 커밋할 수 있습니다.</p><p><strong>벡터를 희소 행렬로 표현</strong></p><p>예를 들어, 벡터를 다음과 같은 행렬로 변환할 수 있습니다.</p><ul><li>행(Row) = 4</li><li>열(Column) = 4</li><li>0이 아닌 요소(N) = 4</li><li>전체 요소(M) = 16</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*NhPlnfAymwjZlEJV" /></figure><p>단순히 기본 다항식 커밋 스킴을 사용하는 경우 계산 복잡도는 O(M) 이 됩니다.</p><p><strong>행렬의 희소 표현</strong></p><p>희소 표현은 <strong>R</strong>, <strong>C</strong>, <strong>V</strong>를 사용하여 다음과 같이 정의됩니다:</p><ol><li>R,C,V 의 각 행은 희소 행렬에서 하나의 0 이 아닌 항목을 정의합니다.</li><li>M_{Rᵢ,Cᵢ}=Vᵢ</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*7_NMlOuHFf5JEF4E" /></figure><p><strong>희소 다항식 D 정의</strong></p><p>희소 다항식 <strong>D</strong> 는 다음과 같이 정의됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*3hhVlgYCqNUu6DUe" /></figure><p>이전 예제를 기반으로 <strong>row</strong> ,<strong>col</strong>, <strong>val</strong> 및 <strong>b⁻¹ </strong>은 다음과 같이 계산됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*sVmPHRPLLhAKq_XW" /></figure><p>그러므로 <strong>D</strong> 는 다음과 같이 계산됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*czYCwswgIXjoU0OS" /></figure><p><strong>커밋 및 오프닝 단계</strong></p><ol><li><strong>rₓ</strong>​ 및 <strong>rᵧ </strong>​가 주어졌을 때, 증명자는 오라클 <strong>Eᵣₓ</strong>​ 및 <strong>Eᵣᵧ </strong>​를 제공합니다.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*V_lRr54PeNYhlYjy" /></figure><p>2. 증명자와 검증자는 다음 식에 대해 sumcheck 프로토콜을 수행합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*xNNLrp2mO3nkmyx4" /></figure><p>3. sumcheck의 마지막 라운드에서 검증자는 다음을 확인합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*NBubK80g7BLf1-eb" /></figure><p>증명자의 <strong>Eᵣₓ</strong>​ 및 <strong>Eᵣᵧ</strong>​ 주장 검증을 위해 <strong>오프라인 메모리 검증(Offline Memory Checking)</strong>방법이 사용됩니다. (자세한 내용은 논문 6장의 <strong>Detour: offline memory checking</strong>을 참조하십시오.)</p><p><strong>R1CS를 Sumcheck 로의 치환</strong></p><p>Brakedown 은 R1CS 를 위한 증명 스킴입니다. sumcheck 프로토콜은 Brakedown의 핵심이기 때문에, R1CS는 sumcheck 형식으로 치환되어야 합니다. R1CS는 다음과 같이 정의됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*EXjc3Y9R70sAVy1l" /></figure><p>이는 다음과 같이 sumcheck 형식으로 변환될 수 있습니다 (설명을 단순화했으며, 자세한 내용은 논문 7장을 참조하십시오):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*VDgJ2SlXjaFLJ0ON" /></figure><h3>결론</h3><p>Brakedown 은 R1CS 에 대한 증명 생성을 위해 선형 시간 인코딩 및 선형 시간 커밋을 도입하여 <strong>O(N)</strong> 필드 연산으로 증명 생성을 가능하게 합니다. 그러나 앞서 언급했듯이, 증명의 크기가 크고 검증 시간이 느리다는 단점이 있습니다. 이러한 특성은 다음 결과에서 명확히 드러납니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XbDCqgvnUMZftAL2" /></figure><p>위 그림은 논문에서 발췌한 것으로, Brakedown 의 다항식 커밋 스킴 성능을 벤치마크한 결과를 보여줍니다. 그림에서 알 수 있듯이, <strong>Commit</strong> 및 <strong>Open</strong> 연산은 Ligero 만큼 빠르지만, <strong>Verify</strong> 및 <strong>Communication</strong> 단계는 비교된 스킴들 중 가장 느립니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3OfE8lVFJZsriCiB" /></figure><p>This figure, also taken from the paper, shows that Brakedown achieves the fastest <strong>Prove</strong> time and is among the fastest for <strong>Encode</strong> time. However, it also confirms that <strong>Verify</strong> remains slow, and the <strong>Proof Size</strong> is the largest.</p><p>또 다른 그림은 Brakedown 이 가장 빠른 <strong>Prove</strong> 시간을 달성했으며, <strong>Encode</strong> 시간에서도 가장 빠른 수준임을 보여줍니다. 그러나 <strong>Verify</strong> 시간이 여전히 느리고, <strong>Proof Size</strong> 가 가장 크다는 점도 확인됩니다.</p><p>Brakedown은 이후 개선되어 <a href="https://eprint.iacr.org/2022/1010.pdf">Orion</a>,<a href="https://eprint.iacr.org/2022/1355.pdf"> Orion+</a>,<a href="https://eprint.iacr.org/2024/185.pdf"> Vortex</a> 그리고 <a href="https://eprint.iacr.org/2023/1784">Binius</a> 등의 후속 작업에 사용되었습니다.</p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b339d4179d42" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/brakedown-%EB%B6%84%ED%95%B4%ED%95%98%EA%B8%B0-b339d4179d42">Brakedown 분해하기</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Let’s break down Brakedown]]></title>
            <link>https://medium.com/kroma-network/lets-break-down-brakedown-c73f907b4135?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/c73f907b4135</guid>
            <category><![CDATA[zkresearch]]></category>
            <category><![CDATA[zkrollup]]></category>
            <category><![CDATA[r1cs]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[brakedown]]></category>
            <dc:creator><![CDATA[Ryan Kim]]></dc:creator>
            <pubDate>Thu, 02 Jan 2025 06:14:10 GMT</pubDate>
            <atom:updated>2025-01-02T06:14:10.727Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YcZTdm5thZ0VoL0D_qzbxg.png" /></figure><blockquote><em>Written by </em><a href="https://medium.com/u/e0f2dad1f47c?source=post_page---user_mention--d019ec1b08e7--------------------------------"><em>Ryan Kim</em></a><em> (@</em><a href="https://x.com/chokobole33"><em>chokobole33</em></a><em>)</em></blockquote><blockquote><em>Special thanks to </em><a href="https://medium.com/u/5ee989ee2a3f?source=post_page---user_mention--d019ec1b08e7--------------------------------"><em>Ashjeong</em></a><em> (</em><a href="https://medium.com/u/5ee989ee2a3f"><em>Ashjeong</em></a><em>), </em><a href="https://medium.com/u/e12cf7acf3e1?source=post_page---user_mention--d019ec1b08e7--------------------------------"><em>fakedev9999</em></a><em> (@</em><a href="https://x.com/fakedev9999"><em>fakedev9999</em></a><em>), </em><a href="https://medium.com/u/8334fe4667e9?source=post_page---user_mention--d019ec1b08e7--------------------------------"><em>Baz</em></a><em> (@</em><a href="https://x.com/0xBATZOR"><em>0xBATZOR</em></a><em>) for feedback and review.</em></blockquote><blockquote><em>This article is also available in </em><a href="https://blog.kroma.network/brakedown-%EB%B6%84%ED%95%B4%ED%95%98%EA%B8%B0-b339d4179d42"><em>Korean</em></a><em>.</em></blockquote><h3>Abstract</h3><p>This document aims to intuitively explain the goals and processes of the <a href="https://eprint.iacr.org/2021/1043.pdf">Brakedown</a> protocol.</p><h3>Table of Contents</h3><blockquote>• Introduction</blockquote><blockquote>• Background<br>-<em> </em>Why use Merkle Tree operations?<br>- Linear Code<br>- Tensor Product</blockquote><blockquote>• Protocol Explanation<br>- Brief Overview<br>- Linear-time Encoding<br>-<em> </em>Linear-time Commitments for Sparse Multilinear Polynomial<br>- Reduction of R1CS to Sumcheck</blockquote><blockquote>• Conclusion</blockquote><h3>Introduction</h3><p>Brakedown originates from the question, “How can we generate proofs for R1CS as quickly as possible?” It presents a scheme that achieves proof generation with <strong>O(N)</strong> field operations. To accomplish this, it introduces a method of encoding that operates in linear time. While similar techniques were used in<a href="https://eprint.iacr.org/2020/1426.pdf"> BCG</a>, Brakedown distinguishes itself by being more practical. Additionally, it does not require a trusted setup, may offer quantum resistance, and is field-agnostic, making it more practical.</p><h3>Background</h3><h4>Why use Merkle Tree operations?</h4><p>When committing to an O(N)-length vector, the operations involved generally have the following complexities:</p><ul><li><strong>FFT Operations</strong> → O(N⋅log⁡N) field operations</li><li><strong>Merkle Tree Operations</strong> → O(N) hash operations</li><li><strong>MSM Operations</strong> → Using Pippenger’s algorithm, O(N⋅λ/log⁡(N⋅λ)) group operations</li></ul><p>To achieve O(N), FFT operations, which are O(N⋅log⁡N), cannot be used. Similarly, MSM operations are avoided because group operations are slower than field operations. Instead, <strong>Merkle Tree operations</strong> are utilized for commitment.</p><h4>Linear Code</h4><p>If the linear combination of codewords is also a codeword, the code is called a <a href="https://en.wikipedia.org/wiki/Linear_code"><strong>linear code</strong></a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/708/0*aGwDNPVh9omrdQA-" /></figure><p><strong>Reed-Solomon (RS) codes</strong>, which are commonly used, satisfy this property and are therefore linear codes. (This property allows the folding operation to be used in RS-based FRI.)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/708/0*0uiV1xkKSCiyJIJ4" /></figure><p>The traditional encoding function used in RS-codes involves FFT operations. However, due to the limitations mentioned earlier, alternative encoding methods must be explored.</p><h4>Tensor Product</h4><p>The <a href="https://en.wikipedia.org/wiki/Tensor_product"><strong>Tensor Product</strong></a> is an operation that generates all possible combinations of two vectors v and u from different vector spaces. For example, if q₁ = [a, b] and q₂ = [x, y, z], the tensor product between the two is the following matrix:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*KexwONRN1kTz8Iqx" /></figure><p>Additionally, the tensor product can be used to express a <strong>Multi Linear Extension (MLE)</strong> evaluation like so:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*DySh7BecpFd2Ecgv" /></figure><p>For example, when l = 2, the MLE evaluation is calculated as follows:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*_XslNKG1YZRX2q9k" /></figure><h3>Protocol Explanation</h3><h4>Brief Overview</h4><p>The protocol is divided into three phases: <strong>Commitment Phase, Testing Phase</strong> and <strong>Evaluation Phase</strong>.</p><p><strong>Commitment Phase</strong></p><p>This phase commits to the input matrix, with the following steps:</p><p>1. A matrix <strong>u</strong> is provided as an input, where <strong>uᵢ</strong> represents the i-th row.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/409/0*hBP0F5KcJUG6IGyv" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*wb7IZHa3E0EXix9d" /></figure><p>2. For a given rate <strong>ρ</strong>, each row of length <strong>c</strong> is encoded into a row of length <strong>N</strong>, producing an r×N matrix <strong>û</strong>. The prover commits this <strong>û</strong> matrix to the verifier using Merkle hash.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*scQWWDjFJYmlQZ5J" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*OikPp715ryxbfQWG" /></figure><p><strong>Testing Phase</strong></p><p>This phase verifies whether the encoding was performed correctly, with the following steps:</p><p>1. The verifier samples a random scalar <strong>α</strong> and sends it to the prover.</p><p>2. The prover computes <strong>u′</strong> using the random value <strong>α</strong> and sends it to the verifier:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/976/0*rNrWOiaYVivELbn6" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*2zQPC2_lqb8O-so8" /></figure><p>3. The verifier tests the following equality by sampling <strong>l</strong> values between <strong>1</strong> and <strong>N</strong>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/825/0*ZP3DVYRUvmvtZvIM" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*VB1ZqtFJYZLngJBY" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/605/0*wK2CE53sGbPwBeFs" /></figure><p>This holds because the codeword is linear code. That is, encoding the rows of the matrix and then performing RLC is equivalent to performing RLC first and then encoding.<br>According to Section 4, “<strong>Concrete Optimizations to the Commitment Scheme</strong>,” the testing phase can be skipped if a Polynomial Commitment Scheme is used.</p><p><strong>Evaluation Phase</strong></p><p>This phase performs identical checks as in the testing phase but without encoding, with the following steps:</p><p>1. The verifier samples <strong>q₁ </strong>​∈ Fʳ.</p><p>2. The prover computes <strong>u′′</strong> and sends it to the verifier: (Identical to Testing Phase 2.)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*coQhA_3RHTmJEWgt" /></figure><p>3. The verifier tests the following equality by sampling <strong>q₂ </strong>​∈ Fᶜ: (Identical to Testing Phase 3.) Here, tensor product between <strong>q₁ </strong>and<strong> q₂</strong> are flattened to the vector.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_FGgu7j5chi3tqI_" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dE-BmzSDldqgPLRW" /></figure><p>For example, when r = 2 and c = 2, the equation holds due to the following reasoning:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*SvtaDsXX8eAAhIMV" /></figure><p><strong>Analysis</strong></p><p>The proof generation time depends on the encoding and commitment operations. Since Merkle Tree is used for commitments, as long as encoding is performed in linear time, the overall execution time is O(N).</p><p>The proof structure consists of:</p><ul><li>c: Fields used in Testing Phase Step 2 and Evaluation Phase Step 3.</li><li>r⋅l: Fields sampled during Testing Phase Step 3 and Evaluation Phase Step 4.</li><li>α: Opening proof size required for l-queries.</li></ul><p>Verification time is O(r⋅l). While proof generation is fast, the proof size and verification time is directly proportional with r.</p><h4>Linear-time Encoding</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*aE96kqT1OFl0v7fd" /></figure><p>The figure above illustrates the linear-time encoding method used in Brakedown. For a given rate <strong>ρ</strong>, <strong>Enc(x)</strong> is a function that generates a vector of length <strong>n⋅ρ⁻¹</strong> from an input vector <strong>x</strong> of length <strong>n</strong>. The output is divided into three parts: <strong>(x, z, v)</strong>. The encoding <strong>Enc(x)</strong> proceeds as follows:</p><pre>Vec Enc(Vec x) {<br>  if (x.size() &lt; 900) {<br>    // As mentioned in Section 5 of the paper,<br>    // the threshold is set at 900.<br>    // Quadratic-time operations are acceptable here<br>    // since their time contribution is negligible.<br>    return RSEnc(x);<br>  }<br>  // A is a sparse matrix.<br>  Matrix A = SampleMatrixA();<br>  CHECK_EQ(A.rows(), x.size());<br>  CHECK_EQ(A.cols(), kAlpha * x.size());<br>  Vec y = x * A ;<br>  Vec z = Enc(y);<br>  // B is a sparse matrix.<br>  Matrix B = SampleMatrixB();<br>  CHECK_EQ(B.rows(), z.size());<br>  CHECK_EQ(B.cols(), (kRateInv * - 1 - kAlpha * kRateInv) * x.size());<br>  Vec v = z * B;<br>  return Concatenate(x, z, v);<br>}</pre><p><strong>Properties of the Encoded Output</strong></p><p>For the encoded result <strong>w</strong> = Enc(x), given the parameter β, the zero norm ∥w∥₀ and distance δ are given by:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*4Q8w7RsQQMWp1PZm" /></figure><p>The zero norm, also known as<a href="https://en.wikipedia.org/wiki/Hamming_weight"> Hamming weight</a>, represents the number of non-zero elements in x:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*bL6NQsKsdsfvRPcd" /></figure><p>The execution time of encoding is proportional to the input vector <strong>x</strong>’s length. Proofs related to this encoding method are detailed in Section 5.1 of the paper.</p><h4>Linear-time Commitments for Sparse Multilinear Polynomials</h4><p>Using techniques from<a href="https://eprint.iacr.org/2019/550.pdf"> Spartan</a>, the input vector can be committed in linear time.</p><p><strong>Representing the Vector as a Sparse Matrix</strong></p><p>For example, the vector can be converted into a matrix as follows. Here, Rows = 4, Cols = 4, Non-zero Elements (<strong>N</strong>) = 4, Total Elements (<strong>M</strong>) = 16:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*NhPlnfAymwjZlEJV" /></figure><p>Simply using a naive polynomial commitment scheme would require a computational complexity of O(M).</p><p><strong>Sparse Representation of the Matrix</strong></p><p>The sparse representation is defined using <strong>R</strong>, <strong>C</strong> and <strong>V</strong> as the following:<br>1. Each row of R,C,V defines a single non-zero entry in the sparse matrix.</p><p>2. M_{Rᵢ,Cᵢ}=Vᵢ</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*7_NMlOuHFf5JEF4E" /></figure><p><strong>Defining Sparse Polynomial D</strong></p><p>The sparse polynomial <strong>D</strong> is defined as:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*3hhVlgYCqNUu6DUe" /></figure><p>Here is an example calculation of <strong>row</strong>, <strong>col</strong>, <strong>val</strong> and <strong>b⁻¹</strong> based on the previous example of a sparse matrix.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*sVmPHRPLLhAKq_XW" /></figure><p>Therefore, <strong>D</strong> will be calculated as so:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*czYCwswgIXjoU0OS" /></figure><p><strong>Commitment and Opening Steps</strong></p><p>1. Given <strong>rₓ</strong> and <strong>rᵧ</strong>, the prover provides oracles <strong>Eᵣₓ</strong> and <strong>Eᵣᵧ</strong>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*V_lRr54PeNYhlYjy" /></figure><p>2. The prover and verifier perform a sumcheck protocol for the equation:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*xNNLrp2mO3nkmyx4" /></figure><p>3. At the final round of sumcheck, the verifier checks the following:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*NBubK80g7BLf1-eb" /></figure><p>To verify the prover’s claims of <strong>Eᵣₓ </strong>and <strong>Eᵣᵧ</strong>, an <strong>Offline Memory Checking</strong> method is employed (refer to <strong>Detour: offline memory checking</strong> in Section 6 of the paper for details).</p><p><strong>Reduction of R1CS to Sumcheck</strong></p><p>Brakedown is a proving scheme for R1CS. Since the sumcheck protocol is integral to Brakedown, R1CS must be reduced to a sumcheck format. R1CS is defined as:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*EXjc3Y9R70sAVy1l" /></figure><p>This can be converted into a sumcheck format as follows (simplified for illustration; see Section 7 for details):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/778/0*VDgJ2SlXjaFLJ0ON" /></figure><h3>Conclusion</h3><p>Brakedown introduces linear-time encoding and linear-time commitment for generating proofs for R1CS, enabling proof generation with <strong>O(N)</strong> field operations. However, as mentioned earlier, the proof size is large, and the verification time is slow. These characteristics are evident in the following results:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XbDCqgvnUMZftAL2" /></figure><p>The above figure, taken from the paper, benchmarks the performance of Brakedown’s Polynomial Commitment Scheme. As shown, while <strong>Commit</strong> and <strong>Open</strong> operations are as fast as Ligero, the <strong>Verify</strong> and <strong>Communication</strong> stages are the slowest among the compared schemes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3OfE8lVFJZsriCiB" /></figure><p>This figure, also taken from the paper, shows that Brakedown achieves the fastest <strong>Prove</strong> time and is among the fastest for <strong>Encode</strong> time. However, it also confirms that <strong>Verify</strong> remains slow, and the <strong>Proof Size</strong> is the largest.</p><p>Brakedown has since been improved and used in subsequent works, including<a href="https://eprint.iacr.org/2022/1010.pdf"> Orion</a>,<a href="https://eprint.iacr.org/2022/1355.pdf"> Orion+</a>,<a href="https://eprint.iacr.org/2024/185.pdf"> Vortex</a>, and<a href="https://eprint.iacr.org/2023/1784"> Binius</a>.</p><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c73f907b4135" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/lets-break-down-brakedown-c73f907b4135">Let’s break down Brakedown</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CircleSTARK 이해하기]]></title>
            <link>https://medium.com/kroma-network/circlestark-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-d257e2c73570?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/d257e2c73570</guid>
            <category><![CDATA[circlestark]]></category>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[zkresearchkr]]></category>
            <category><![CDATA[starknet]]></category>
            <category><![CDATA[circlefft]]></category>
            <dc:creator><![CDATA[Ryan Kim]]></dc:creator>
            <pubDate>Thu, 26 Dec 2024 08:48:18 GMT</pubDate>
            <atom:updated>2025-01-02T01:27:27.805Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Qkynk8STofaSxWxVQ_VFRw.png" /></figure><blockquote><a href="https://medium.com/u/8334fe4667e9">Baz</a> (<a href="http://twitter.com/0xBATZOR">@0xBATZOR</a>) 작성, <a href="https://medium.com/u/e0f2dad1f47c">Ryan Kim</a> (<a href="http://twitter.com/chokobole33">@chokobole33</a>)번역</blockquote><blockquote>해당 글은 <a href="https://medium.com/u/e0f2dad1f47c">Ryan Kim</a> (<a href="http://twitter.com/chokobole33">@chokobole33</a>), <a href="https://medium.com/u/5ee989ee2a3f">Ashjeong</a>, <a href="https://medium.com/u/e12cf7acf3e1">fakedev9999</a> (<a href="http://twitter.com/fakedev9999">@fakedev9999</a>) 그리고 <a href="https://medium.com/u/fdcca9ccee97">EthanYoo</a> (<a href="http://twitter.com/zkEthanYoo">@zkEthanYoo</a>)가 피드백과 리뷰를 해주셨고, 이에 대해 감사의 인사를 드립니다.</blockquote><blockquote>영문 버전의 글은 <a href="https://blog.kroma.network/understanding-circlestark-6410b24473d7">여기</a>에서 확인할 수 있습니다.</blockquote><h3>Motivation</h3><p>유한체(finite field)를 선택할 때 다음 요소들 사이에서 균형을 맞추는 트레이드오프가 존재합니다:</p><ol><li><strong>효율적인 산술 구현</strong>: 메르센 소수와 같은 특수한 형태의 작은 크기의 소수체는 표준 하드웨어 아키텍처에서 더 빠른 산술 연산을 가능하게 합니다.</li><li><strong>효율적인 FFT 지원</strong>: STARK 의 인코딩 프로세스에 필수적인 효율적인 FFT 를 지원하려면, 유한체가 2-adicity 가 큰 부분군을 포함하는 smooth 한 곱셈군(multiplicative subgroup)을 가져야 합니다.</li></ol><p>산술 연산에 가장 효율적인 필드 중 하나인 <strong>메르센 필드</strong>로, 이는 <em>p = 2ᵉ − 1</em> 형태의 소수로 정의됩니다. 특히 <em>p=²³¹−1</em> 는 32-비트 아키텍처에서 매우 효율적인 산술을 제공합니다.</p><p>2<em>³² = 2 mod ²³¹ — 1</em>이므로, 2<em>³²⋅xₕᵢ+xₗₒ </em>​로 인코딩된 넓은 곱은 <em>2⋅x ​ₕᵢ+xₗₒ </em>로 간단히 축소됩니다. 그러나 <em>p−1=2⋅3²⋅7⋅11⋅31⋅151⋅331</em> 이므로, 곱셈군은 효율적인 Cooley-Tukey Fast Fourier Transforms (FFT)에 유용한 2-adicity 부분군을 포함하지 않습니다.</p><h3>Circle Group</h3><p><em>p = 3</em> mod <em>4 </em>일 때, 복소수 확장체 <em>Fₚ/(X²+1) </em>는 다음과 같이 정의될 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/284/0*GqMOIOzKB2y4Rng0.png" /></figure><p><em>p = 1</em> mod <em>4</em>일 경우, <em>X² + 1 = 0 </em>은 해를 가지며, 이는 <a href="https://en.wikipedia.org/wiki/Legendre_symbol">르장드르 기호(egendre Symbol)</a> 에 따라 <em>−1/p=(−1)^{(p−1)/2}=1 </em>이기 때문입니다. 이는 −1 이 <a href="https://en.wikipedia.org/wiki/Quadratic_residue">이차 잉여(quadratic residue)</a>임을 의미하며, <em>X² + 1</em>은 <em>(X−a)(X+a) </em>로 표현될 수 있어 <em>Fₚ</em>/(X²+1) 가 체(field)가 되지 않음을 나타냅니다.</p><p><em>Fₚ</em>​ 위의 단위 원(unit circle)은 대수적 집합 <em>C(Fₚ)={(x,y)∈Fₚ² : x²+y²=1} </em>또는 복소수 표현으로 다음과 같이 정의됩니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/284/0*E7QHCBsm_TQnE_MU.png" /></figure><p>z̄ 는 z̄=<em>x</em>+<em>iy </em>의 켤레 복소수<em> x</em>−<em>iy </em>를 나타냅니다.</p><p><strong>보조정리 1 (Unit Circle Group): </strong><em>Fₚ </em>를 <em>p=3</em> mod<em> 4 </em>인 소수체라고 하자. 그러면 <strong>단위 원 군</strong> <em>C</em>(<em>Fₚ​</em>​) 는 <em>C(Fₚ​)ᕽ </em>에서의 (<em>p</em>+1)-th roots of unity 와 같으며, 차수(order)는 <em>p</em>+1 입니다.</p><p>증명: <em>zᵖ=(x+iy)ᵖ=xᵖ+(iy)ᵖ=x+(iᵖ)y=x−iy=zˉ이므로 x²+y²=z⋅zˉ=zᵖ+1 </em>입니다. 따라서 <em>C</em>(<em>Fₚ</em>)={<em>z</em>∈<em>C(Fₚ​)ᕽ</em>:<em>zᵖᐩ ¹ </em>=1} 이며, 이는 (<em>p</em>+1)-roots of unity 의 집합을 의미합니다. <em>∣C(Fₚ)×∣=p²−1 </em>이 <em>p+1 </em>로 나누어떨어지므로, 단위 원 군은 차수가 <em>p+1</em>인 유일한 부분군이어야 합니다.</p><h3>Group Operations</h3><p><em>C(Fₚ) </em>의 <em>p+1</em> 개의 점은 다음과 같은 군 연산을 통해 군을 형성합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/453/0*L0DfrozT72goS9rC.png" /></figure><p>이 식은 <em>cos</em>(<em>α</em>+<em>β</em>) 와 <em>sin</em>(<em>α</em>+<em>β</em>) <a href="https://mathworld.wolfram.com/TrigonometricAdditionFormulas.html">공식</a>을 닮았으며, 단위 원 위에서의 회전에 해당합니다.</p><p>이 군의 항등원(identity element)은 <em>(1,0) </em>이며, <em>P</em>=(<em>P</em>ₓ​,<em>P</em>ᵧ​)∈<em>C</em>(<em>Fₚ</em>)에 대해, <em>P </em>에 의한 변환(회전)을 정의할 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/468/0*hQcbppsbpQdT5ZoI.png" /></figure><p>군 연산에 따른 제곱 함수는 이차 함수(quadratic map)로 표현됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/549/0*EakdfEuvmKcAGy5_.png" /></figure><p>군의 역원(inverse)은 다음과 같은 1차 함수로 주어집니다: <em>J</em>(<em>x</em>,<em>y</em>):=(<em>x</em>,−<em>y</em>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*cm7wjWqYHjA78G7L" /><figcaption>그림 1. 왼쪽에서 파란 점들은 제곱 연산을 통해 빨간 점으로 변환되고, 오른쪽에서 파란 점들은 역원 연산을 통해 빨간 점으로 변환됩니다.</figcaption></figure><p>따라서 <em>π </em>는 x-축과 이루는 각도를 두 배로 증가시키는 연산으로 생각할 수 있고, <em>J</em>는 x-축에 대한 대칭으로 해석될 수 있습니다.</p><h4>Twin-coset and Standard Position Coset</h4><p>먼저 그림 2는 원 군(circle group)에서의 부분군(subgroup)을 보여줍니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*kD_tllFNnSehIJAp" /><figcaption>그림 2. 크기가 4, 2, 1인 부분군 (왼쪽에서 오른쪽 순으로 표시).</figcaption></figure><p>부분군의 코셋(coset)을 취한다는 것은, 해당 부분군의 각 점을 동일한 양만큼 회전시키는 것을 의미합니다.</p><p><strong>정의 </strong><em>n</em>≥1일 때, <em>Gₙ₋₁ </em>을 <em>|Gₙ₋₁|​=2ⁿ⁻¹</em>인 <em>C</em>(<em>Fₚ</em>) 의 순환 부분군(cyclic subgroup)이라고 합시다. 서로소(disjoint) 집합 <em>Q⋅Gₙ₋₁​</em>∩<em>Q⁻¹⋅Gₙ₋₁​</em>=∅ 의 합집합인 <em>D=Q⋅Gₙ₋₁​</em>∪<em>Q⁻¹⋅Gₙ₋₁​</em>​ 를 크기가 <em>N=2ⁿ </em>인 <strong>twin-coset</strong> 이라고 부릅니다.</p><p><strong>주목</strong> Twin-coset 에 대한 역원 연산은 자기 자신으로 매핑됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/549/0*OGf05Jrqvh2jnBBc.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*M_cwmEZPGWlLmdDd" /><figcaption>그림 3. 크기가 8, 4, 2 인 twin coset 들 (왼쪽에서 오른쪽부터). 파란색은 Q⋅<em>Gₙ₋₁​, 빨간색은 Q⁻¹⋅Gₙ₋₁​ 입니다. 둘을 합치면 하나의 twin-coset 이 됩니다.</em></figcaption></figure><p><strong>정의</strong> <em>Gₙ₋₁​</em>​ 의 twin-coset D 가 다시 <em>Gₙ </em>​​의 코셋이 되는 특수한 경우 <em>D </em>를 <strong>standard position coset </strong>이라고 부릅니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*NPYYrUmSxh07UgCk" /><figcaption>그림 4. 크기가 8, 4, 2 인 standard twin coset 들(왼쪽에서 오른쪽부터).</figcaption></figure><p><strong>논문에서의 보조정리 3: </strong><em>n</em>≥2 일 때 크기가 <em>2ⁿ </em>인 twin-coset <em>D </em>의 π(D) 는 크기가 <em>2ⁿ⁻¹ </em>인 twin-coset 입니다. 또한 <em>D </em>가 standard position coset 이라면, π(D) 도 standard position coset 입니다.</p><p>증명: <em>π(D)=π(Q⋅Gₙ₋₁∪Q⁻¹⋅Gₙ₋₁)=π(Q)⋅ G</em>ₙ₋₂ <em>∪ π(Q</em>⁻¹<em>)G</em>ₙ₋₂ <em>​ </em>그리고 만약 <em>D=Q⋅Gₙ </em>​이 standard position cose t이라면 <em>π(Q⋅Gₙ)=π(Q)⋅G</em>ₙ₋₁​ 이므로 <em>π(D)</em> 도standard position coset 입니다.</p><h4>다항식들의 공간(Space of Polynomials)</h4><p><strong>정의</strong> <em>F </em>를 <em>Fₚ </em>​의 확장체라고 하자. 원 곡선(circle curve) 위에서,<em>n</em>≥0 인 짝수 <em>n </em>에 대해, <em>Lₙ(F) </em>를 <em>F</em> 의 계수를 가지며 전체 차수가 N/2 이하인 이변수(bi-variate) 다항식들의 공간으로 정의합니다.</p><p>Circle STARK 에서, <em>Lₙ(F) </em>의 이변수 다항식은 고전적인 단변수 증명에서의 저차 확장(low-degree extension)에 해당합니다. <em>Lₙ(F) </em>의 중요한 속성은 다음과 같습니다.</p><ol><li>회전 불변성(rotation invariance): 이는 인접 관계(next-neighbour relation)와 효율적인 인코딩에 필요합니다.</li><li>좋은 분리 가능성(good separability): 최대 거리 분리 가능 코드(Maximum Distance Separable Codes) 로 이어집니다.</li></ol><h3>Vanishing Polynomial</h3><p><strong>정의</strong> 2≤<em>N</em>&lt;<em>p</em>+1 일 때, <em>D </em>를 크기가 <em>N </em>인 <em>C</em>(<em>Fₚ</em>​) 의 부분집합으로 합시다. <em>D </em>에서 0으로 평가되는 <em>Lₙ</em>=<em>Lₙ</em>(<em>Fₚ</em>) 의 모든 0 이 아닌 다항식을 해당 집합 <em>D </em>의 <strong>vanishing polynomial</strong> 이라고 부릅니다. <em>D </em>를 점 <em>Pₖ​,Qₖ​(1≤k≤N/2) </em>의 쌍으로 분해하고, 이 쌍을 통과하는 선형 함수들의 곱을 취하면 vanishing polynomial 이 존재함을 확인할 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*IutdG3YwsrYLe21r.png" /></figure><p><em>n = 2 </em>일 때<em> D</em>=<em>Q⋅Gₙ₋₁​∪Q⁻¹⋅Gₙ₋₁ </em>인 twin-coset 에 대해, 보조정리 3에 따라 <em>πⁿ⁻¹</em>(<em>D</em>) 는 크기가 2 인 twin-coset 이 됩니다. 즉, <em>xᴅ​,yᴅ​∈D </em>에 대해 <em>πⁿ⁻¹</em>(<em>D</em>)={(<em>xᴅ,yᴅ​),(xᴅ​,−yᴅ</em>​)} 의 형태가 됩니다. 그러므로 이러한 경우에는 다음과 같은 vanishing polynomial 을 정의할 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*VjkysbMSRA9Nite7.png" /></figure><p>이 때 <em>vₙ</em>​(<em>x</em>,<em>y</em>):=<em>πₓ​</em>∘<em>πⁿ⁻¹</em>(<em>x</em>,<em>y</em>) 이고, <em>πₓ​</em>​ 는 x-축으로의 사영(projection)을 나타냅니다.</p><p>D 가 standard position coset 이라면, <em>πⁿ⁻¹</em>(<em>D</em>) 는 다시 standard position coset 이며 <em>xᴅ</em>=0 이 됩니다 (그림 4 의 오른쪽 이미지 참조). 이 경우 <em>vᴅ</em>​(<em>x</em>,<em>y</em>):=<em>vₙ</em>​(<em>x</em>,<em>y</em>) 이고, <em>vᴅ</em>​ 는 O(<em>n</em>) 의 필드 연산만으로 계산할 수 있습니다 (각 단계에서 덧셈 2 회, 곱셈 1 회가 필요합니다).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*12C8pxUMKaSp6ugj.png" /></figure><p><strong>정의</strong> <em>F </em>에서 값을 가지며 계산 도메인 <em>D </em>인 <strong>circle code </strong>는 다음 공간에서 가지는 선형 코드(linear code)입니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*uqNlkq8-0K-HiqNy.png" /></figure><h3>Circle FFT</h3><p><strong>논문에서의 정의 1.</strong> (CFFT-friendly prime). <em>n</em>≥1 이고 <em>p </em>가 소수일 때, <em>p</em>+1 이 2<em>ⁿ⁺¹ </em>로 나누어 떨어지게 하는 충분히 큰 n 이 존재한다면, 이를 CFFT-friendly 소수라고 합니다. 이러한 <em>n </em>은 supported order 라 하고, <em>N</em>=<em>2ⁿ </em>은 supported domain 의 크기라고 합니다.</p><p><strong>논문에서의 정의 4.</strong> <em>0≤j≤2ⁿ-1 </em>인 정수 <em>j</em> 에 대해 <em>(j₀,…,jₙ₋₁)∈{0,1}ⁿ </em>를 이용해<em> </em>이진수로 표현해봅시다. 위수(order) 가 <em>n </em>인<em> </em><strong>FFT 기저</strong>, <strong><em>B</em></strong><em>ₙ</em>​​ 은 다음과 같이 다항식으로 정의됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*le-aO9QfXuZluOjS.png" /></figure><p>다항식 공간 <em>X²+Y²−1: F[X,Y]/(X²+Y²−1) </em>를 생각해봅시다. 여기서Y²≡1−X² 이므로, 모든 <em>y²</em> 을 <em>1−x²</em> 로 치환할 수 있습니다. 따라서 모든 다항식은 <em>deg</em>(<em>Y</em>)≤1 인 형태로 표현될 수 있습니다. 즉, <em>f</em>(<em>X</em>,<em>Y</em>)∈<em>F</em>[<em>X</em>,<em>Y</em>]/(X²+Y²−1) 는 다음과 같은 <em>표준형</em>(<em>canonical form)</em> 으로 나타낼 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*Q0LZ2yTQ2DdNj6Rh.png" /></figure><p><em>f₀</em>​(<em>X</em>) 와 <em>f</em>₁​(<em>X</em>) 는 이렇게 계산될 수 있습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*-zlrRAqM4O9PYauk.png" /></figure><p>(<em>J</em>-folding) 첫 단계 <em>ϕⱼ</em>​ (혹은 <em>πₓ)</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*n7wB3skw9jdlkp8p.png" /></figure><p>직관적으로, <em>f₀</em>​ 은 <em>f</em> 와 <em>f </em>∘ <em>J</em> 의 평균이고, <em>f</em>₁​은 차이를 2<em>y </em>로 나눈 값입니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*O5qBx-Xhr0hB03lV" /><figcaption>그림 5. J-폴딩 결과를 시각화. 이 단계 후, f₀​ 와 f₁ 는 x-축에 의해 매개변수화(parametrized)될 수 있습니다.</figcaption></figure><p>(<em>π</em>-folding) 다음 단계:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*nBfvZnvDKuk6agC6.png" /></figure><p>이 과정을 상수 함수가 나올 때까지 재귀적으로 반복합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*GvUgF9mwlwQyW9fA.png" /></figure><p>그러면 <em>cₖ=fₖ₀,…,kₖₙ₋₁</em>∈<em>F </em>를 얻을 수 있고, 여기서 <em>k=k₀+k₁2+…+kₙ₋₁2ⁿ⁻¹, </em>0≤<em>k</em>≤<em>2ⁿ-1</em> 입니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*lXCnrWcPdkywcG6Z" /><figcaption>그림 6. f₀​ ​에 대해 π-폴딩을 적용한 결과. f₁ ​에 대해서도 동일한 과정을 거쳐 f₁₀ ​과 f₁₁​ 을 얻습니다.</figcaption></figure><p>그림 6 에서 <em>f₀</em>​(<em>x</em>) 는 갑자기 4개의 점만 남습니다. 이는 <em>f₀</em>​(<em>x</em>) 가 실제로 (−A,−B,B,A)에서만 계산되며, x 에 의해서 매개변수화되기 때문입니다. 이를 원(circle) 위에 시각화하여 그룹 연산을 쉽게 이해할 수 있습니다.</p><ol><li>f<em>₀₀</em>(<em>C</em>)​: <em>f₀</em>​(<em>A</em>) 와 <em>f₀</em>​​(−<em>A</em>) 의 평균.</li><li>f₀​₀​​(−C): <em>f₀</em>​​(<em>B</em>) 와 <em>f₀</em>​​(−<em>B</em>) 의 평균.</li></ol><p>여기서 <em>C </em>는 어디서 왔을까요? C=<em>2A²−1 </em>이고<em>, A²</em>+B²=1 이기 때문에 −C=<em>2B²−1 </em>로됩니다.</p><p><strong>정리 2</strong> p 를 <em>n</em>≥1 을 supported order 로 하는 CFFT-friendly 소수라 하고, <em>D</em>⊂<em>C</em>(<em>Fₚ</em>) 를 크기∣<em>D</em>∣=2<em>ⁿ </em>인 twin-coset 이라고 합시다. <em>D</em> 위의 함수 <em>f</em>∈<em>F</em>ᴰ 가 <em>Fₚ </em>​의 확장체 <em>F </em>에서 값을 가지면, 위 알고리즘은 FFT 기저 <strong><em>B</em></strong><em>ₙ </em>​에 대해 다음 계수들을 출력합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*eeA7iz7qepRKBvBm.png" /></figure><p>여기서 <em>cₖ</em>​∈<em>F</em>, 0≤<em>k</em>≤<em>2ⁿ-1 </em>이고, 이 계수들은 <em>D</em> 위에서 <em>f </em>로 계산됩니다.</p><h3>Low degree test over the Circle</h3><p><strong>프로토콜 1 (Circle FRI)</strong>. D 를 크기가 ∣<em>D</em>∣=2ᴮ⁺ⁿ 인 standard position coset 이라 합시다. 여기서 <em>B</em>≥1, <em>n</em>≥1 입니다. <em>C=Cₙ</em>​(<em>F</em>,<em>D</em>)는 <em>ρ</em>=∣<em>D</em>∣/(<em>N</em>+1​) 인 비율(rate)을 가지는 circle code 로 정의됩니다. 여기서 <em>N</em>=2<em>ⁿ </em>입니다. 주어진 근접성 매개변수(proximity parameter) <em>θ</em>∈(0,1−<em>ρ</em>​) 에 대해, 함수 <em>f</em>∈<em>F</em>ᴰ 가 circle code C 에 <em>θ</em>-근접함을 입증하는 IOP (Interactive Oracle Proof)는 다음과 같은 커밋 단계(commit phase)와 질의 단계(query phase)로 구성됩니다.</p><h3>COMMIT phase:</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*PYn74IhsBTf39Xs9.png" /></figure><h3>QUERY phase: (executed by the Veriﬁer)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*Du5BcpBfUARn01Xm.png" /></figure><h3>Batch Circle FRI</h3><p><strong>프로토콜 2 (batch Circle FRI).</strong> 프로토콜 1과 동일한 가정하에서, <em>f₁,…,fₗ​</em>∈<em>F</em>ᴰ 로 이루어진 함수 배치(batch)가 circle code <em>Cₙ</em>​(<em>F</em>,<em>D</em>) 의 코드워드와 (1−<em>θ</em>)-agreement 를 가지는지에 대한 IOP 증명은 다음과 같습니다. 첫 번째 단계로, 검증자(verifier)로부터 난수 <em>λb</em>​←<em>F </em>를 제공받으면, 증명자(prover)는 다음 선형 결합의 값을 <em>D </em>에서 계산합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*h9w2g5ekDloQpra-.png" /></figure><p>증명자와 검증자는 <em>f </em>에 대해 프로토콜 1을 실행합니다. 단, 질의 단계(query phase)는 배칭(batching)에 대한 검증을 각 질의마다 추가로 포함하여 확장됩니다.</p><h3>CircleSTARK</h3><p>Circle STARK 에서는 <em>n</em>≥1 일 때 <em>C</em>(<em>Fₚ</em>) 의 크기가 <em>N</em>=2ⁿ 인 standard position coset <em>H</em>⊂<em>C</em>(<em>Fₚ</em>) 이 t<strong>race domain </strong>입니다. trace 는 <em>t₁,…,t_w</em>∈<em>Fₚᴺ </em>와 같이 열 단위로 됐으며, <em>H</em> 위에 일반적인 방식으로 배치됩니다. 이 값들은 <em>G </em>의 생성자를 사용한 그룹 변환 <em>T </em>를 통해 표현됩니다. trace column 들은 총 차수가 <em>N</em>/2 이하인 다항식으로 보간(interpolated)되며,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*y3pjf_J3R-fpOYIr.png" /></figure><p>이는 <em>pᵢ</em>∈<em>Lₙ</em>(F<em>p</em>) 를 의미합니다. 이러한 다항식들은 다음과 같은 제약 조건 집합을 만족합니다:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*Q-sI9usUdqjLKl4g.png" /></figure><p>여기서 <em>sᵢ​</em>∈<em>Lₙ</em>(F<em>p</em>​) 는 미리 정의된 selector polynomial 입니다.</p><p>각 제약 조건(constraint)은 다음을 만족하는 다항식입니다:</p><ul><li>총 차수는 twin-coset 의 최대 크기 이하.</li><li>selector 변수 S 의 차수는 최대 1.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*ajOIX_6uPZSWFMuh.png" /></figure><p><strong>정의. 계산 도메인(evaluation domain)</strong>은 <em>H </em>의 최소 두 배 크기를 가지는 standard position coset <em>D</em>⊆<em>C</em>(F<em>p</em>​) 입니다. CircleSTARK 에서의 다항식은 일반적으로 이 도메인 위에서 그 값으로 커밋됩니다.</p><p><strong>논문에서의 보조 정리 2</strong>. <em>p </em>를 supported order 가 <em>m</em>≥1 인 <strong>CFFT-friendly</strong> 소수라 하고, <em>k</em>≤<em>m </em>일 때<em> Gₖ </em>​를 위수가 2ᵏ 인 부분군으로 정의합시다. 그러면 <em>D</em>⊆<em>C</em>(<em>Fₚ​</em>)/<em>Gₘ</em>은 <em>Gₘ₋₁</em> 에 불변이고, <em>J</em> 는 <em>N</em>=<em>2ⁿ </em>인 twin-coset 들로 분해될 수 있습니다. 특히, 크기 <em>M</em>=<em>2ᵐ </em>인 standard position coset <em>D </em>는 다음과 같습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*9UZkLQ3SmfqmRM96.png" /></figure><p>여기서 <em>Q </em>는 위수가 2ᵐ⁺¹ 인 <em>C</em>(<em>Fₚ​</em>​) 의 원소입니다.</p><h3>IOP for AIR</h3><p>이제, 이러한 모든 준비를 마쳤다면, AIR의 충족 가능성(satisfiability)에 대한 IOP 는 다음과 같이 구성될 수 있습니다.</p><p>첫 번째 라운드에 증명자(prover)는 평가 도메인 <em>D </em>에서 trace polynomial <em>p₁,…,p_w</em>​∈<em>Lₙ</em>(<em>Fₚ​</em>​) 의 값을 twin-coset 들로 분해하여 계산하고, 해당 오라클(oracle)을 검증자(verifier)에게 공유합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*6EBp1rIEL-l8I-JZ.png" /></figure><p>두 번째 라운드에 검증자는 random challenge <em>β</em>←<em>F </em>를 <em>Fₚ </em>​의 적절히 큰 확장체 <em>F </em>에서 균일하게 추출하여 전송합니다. 이 random challenge 는 제약 다항식(constraint polynomials)을 단일 다항식으로 축소하는 데 사용됩니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*aAddcv0RoyB6oJxI.png" /></figure><p>이는 trace domain <em>H </em>에서 성립해야 합니다. 이제, <em>H</em> 위의 vanishing polynomial <em>v</em>ₕ ​를 계산하여 다음과 같이 복합 제약 다항식(composite constraint polynomial)을 작성합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*5XBX7dQSAKUEiUWn.png" /></figure><p><em>H </em>의 크기가 부과하는 차수 제한(degree bound)을 유지하기 위해, 몫 다항식 <em>q</em>∈<em>L₍ₔ₋₁₎ₙ​(F) </em>을 다음과 같이 나누어야 합니다. 여기서 <em>q₁,…,q</em>₍ₔ₋₁₎∈<em>L₍ₔ₋₁₎ₙ​(F) 입니다.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*Ig3LtVlvEC4HM_o8.png" /></figure><p>증명자는 계산 도메인 <em>D </em>위에서 오라클들을 준비하고 이를 λ 와 함께 검증자에게 전송합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*YHEFwGayhskKKOk0.png" /></figure><p>모든 오라클이 준비되면, 다음 단계는 DEEP ALI 입니다. 이 단계에서는 제약 조건의 충족 가능성을 단일 지점 몫(single-point quotients) 위에서의 저차 테스트로 축소합니다. (다시 말하면, 이 단계는 저차 테스트를 다항식 커밋먼트 스킴(polynomial commitment scheme)으로 변환합니다.) 검증자는 random point <em>γ</em>→<em>C</em>(<em>F</em>)∖(<em>D</em>∪<em>H</em>)를 증명자에게 줍니다. 이에 대해 증명자는 <em>vᵢ=qᵢ(γ) </em>와 함께 <em>vᵢ,₀=pᵢ(γ),vᵢ,₁=pᵢ(T(γ)) </em>을 오픈합니다. 마지막으로 증명자와 검증자는 DEEP quotients 의 실수(real) 및 허수(imaginary) 부분에 대한 저차 테스트(low-degree test)를 진행합니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*XxjDJN51iVs0F_-R.png" /></figure><h3>Conclusion</h3><p>CircleFFT 의 초기 구현은 단일 스레드 환경에서 1.4 배의 성능 향상을 보여주었습니다. 이를 기반으로 Starknet 의 차세대 prover 인 Stwo(“STARK Two”)는 현재 prover 인 Stone(“STARK One”)을 개선 및 대체하기 위해 설계되었습니다.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*meCiiLtsRFKlt7iz" /><figcaption>그림 7. CFFT의 초기 벤치마크 결과</figcaption></figure><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d257e2c73570" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/circlestark-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-d257e2c73570">CircleSTARK 이해하기</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Understanding CircleSTARK]]></title>
            <link>https://medium.com/kroma-network/understanding-circlestark-6410b24473d7?source=rss----f0ad484f192d---4</link>
            <guid isPermaLink="false">https://medium.com/p/6410b24473d7</guid>
            <category><![CDATA[kroma]]></category>
            <category><![CDATA[starknet]]></category>
            <category><![CDATA[zkresearch]]></category>
            <category><![CDATA[circlestark]]></category>
            <category><![CDATA[circlefft]]></category>
            <dc:creator><![CDATA[Baz]]></dc:creator>
            <pubDate>Thu, 26 Dec 2024 08:48:15 GMT</pubDate>
            <atom:updated>2024-12-30T05:57:03.001Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g1HR8kQLpDC6o6xA1WhPHg.png" /></figure><blockquote><em>Written by </em><a href="https://medium.com/u/8334fe4667e9">Baz</a> (<a href="http://twitter.com/0xBATZOR">@0xBATZOR</a>)</blockquote><blockquote><em>Special thanks to </em><a href="https://medium.com/u/e0f2dad1f47c">Ryan Kim</a> (<a href="http://twitter.com/chokobole33">@chokobole33</a>), <a href="https://medium.com/u/5ee989ee2a3f"><em>Ashjeong</em></a>, <a href="https://medium.com/u/e12cf7acf3e1">fakedev9999</a> (<a href="http://twitter.com/fakedev9999">@fakedev9999</a>)<em> and </em><a href="https://medium.com/u/fdcca9ccee97">EthanYoo</a> (<a href="http://twitter.com/zkEthanYoo">@zkEthanYoo</a>)<em> for feedback and review.</em></blockquote><blockquote><em>This article is also available in </em><a href="https://medium.com/@chokobole/d257e2c73570"><em>Korean</em></a><em>.</em></blockquote><h3>Motivation</h3><p>There is a trade-off between selecting finite fields that allow for:</p><ol><li><strong>Efficient Arithmetic Implementations:</strong> Smaller prime fields, particularly those of special forms like Mersenne primes, enable faster arithmetic operations on standard hardware architectures.</li><li><strong>Efficient FFT Support:</strong> Fields need to have smooth multiplicative groups with large two-adic subgroups to support efficient FFTs, which are crucial for STARKs’ encoding processes.</li></ol><p>One of the most efficient fields for arithmetic seem to be <strong>Mersenne fields</strong>, defined by primes of the form p = 2ᵉ − 1. In particular, the prime p=2³¹−1 enables very efficient arithmetic on 32-bit architectures.</p><p>Since <em>2³² = 2</em> mod <em>2³¹-1</em>, a widened product encoded as <em>2³²⋅xₕᵢ+xₗₒ</em>​ is trivially reduced to a much smaller quantity, <em>2⋅x ​ₕᵢ+xₗₒ</em>​. However, as <em>p−1=2⋅3²⋅7⋅11⋅31⋅151⋅331</em>, the multiplicative group lacks two-adic subgroups, which are useful for efficient Cooley-Tukey Fast Fourier Transforms (FFTs).</p><h3>Circle Group</h3><p>For <em>p=3</em> mod <em>4</em>, a complex extension field <em>Fₚ/(X²+1)</em> can be defined as:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/284/1*U7s30eXNxlDylYI4FBFHZg.png" /></figure><p>For <em>p=1</em> mod <em>4</em>, <em>X² + 1=0 </em>has a solution since by <a href="https://en.wikipedia.org/wiki/Legendre_symbol">Legendre Symbol</a>: <em>−1/p=(−1)^{(p−1)/2}=1</em>. This means that −1 is a <a href="https://en.wikipedia.org/wiki/Quadratic_residue">quadratic residue</a> and <em>X²+1</em> can be written as <em>(X−a)(X+a)</em> making <em>Fₚ</em>/(X²+1) not a field.</p><p>The unit circle over <em>Fₚ​</em> is the algebraic set <em>C(Fₚ)={(x,y)∈Fₚ² : x²+y²=1}</em>, or in complex representation:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/284/1*xST1kogl5Rr4X5dFz0Hv_g.png" /></figure><p>where z̄ denotes the conjugate <em>x</em>−<em>iy</em> of z̄=<em>x</em>+<em>iy</em>.</p><p><strong>Lemma 1 (Unit circle group).</strong> Let ​ <em>Fₚ​ </em>be a prime field with <em>p=3</em> mod<em> 4</em>. Then the <strong>unit circle group</strong> <em>C</em>(<em>Fₚ​</em>​) equals the group of (<em>p</em>+1)-th roots of unity in <em>C(Fₚ​)ᕽ</em>, and has order <em>p</em>+1.</p><p>Proof: Notice that<em> zᵖ=(x+iy)ᵖ=xᵖ+(iy)ᵖ=x+(iᵖ)y=x−iy=zˉ</em> so<em> x²+y²=z⋅zˉ=zᵖᐩ ¹</em>. Therefore, <em>C</em>(<em>Fₚ</em>)={<em>z</em>∈<em>C(Fₚ​)ᕽ</em>:<em>zᵖᐩ ¹ </em>=1} which means <em>C</em>(<em>Fₚ</em>​) is set of all (<em>p</em>+1)-th roots of unity. Since <em>∣C(Fₚ)×∣=p²−1</em> is divisible by <em>p+1</em>, the unit circle group must be the unique subgroup of order <em>p+1</em>.</p><h3>Group Operations</h3><p>The <em>p+1</em> points of <em>C(Fₚ)</em> form a group with the group operation:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/453/1*dGQcXqVjriqVlA4dSgjrAg.png" /></figure><p>Notice that this equation resembles the <em>cos</em>(<em>α</em>+<em>β</em>) and <em>sin</em>(<em>α</em>+<em>β</em>) <a href="https://mathworld.wolfram.com/TrigonometricAdditionFormulas.html">formulas</a> and is equivalent to rotation over the unit circle.</p><p>The group has <em>(1,0)</em> as its identity element, and for any <em>P</em>=(<em>P</em>ₓ​,<em>P</em>ᵧ​)∈<em>C</em>(<em>Fₚ</em>), we shall call</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/468/1*j37hMUN7DfqT24XLnCv5RA.png" /></figure><p>the translation(rotation) by <em>P</em>.</p><p>The squaring map with respect to the group operation is the quadratic map</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/549/1*8uZlUGLH-uXbQYJNbTizFw.png" /></figure><p>and group inverses are given by the degree-one map <em>J</em>(<em>x</em>,<em>y</em>):=(<em>x</em>,−<em>y</em>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/732/0*OYIXndEtnpDYeEH9" /><figcaption>Figure 1. Blue points under the square operation (left) and inverse operation (right) result in red points.</figcaption></figure><p>So you can think of <em>π</em> as doubling the angle it forms with the x-axis and <em>J</em> as a reflection by the x-axis.</p><h4>Twin-coset and Standard Position Coset</h4><p>First, Figure 2 shows how the subgroups would look like in the circle group.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/942/0*P-OFAOAqPzp4CtEe" /><figcaption>Figure 2. Subgroups of size 4, 2, 1 (left to right)</figcaption></figure><p>Taking a coset of a subgroup means that each point in the subgroup will be rotated by the same amount.</p><p><strong>Definition</strong> Let <em>Gₙ₋₁</em>​ be a cyclic subgroup of <em>C</em>(<em>Fₚ</em>) of size ∣<em>Gₙ₋₁|​=2ⁿ⁻¹</em> for <em>n</em>≥1. Any disjoint union <em>D=Q⋅Gₙ₋₁​</em>∪<em>Q⁻¹⋅Gₙ₋₁​</em>​ with <em>Q⋅Gₙ₋₁​</em>∩<em>Q⁻¹⋅Gₙ₋₁​</em>=∅ is called <strong>twin-coset of size </strong><em>N=2ⁿ</em>.</p><p><strong>Remark</strong> Twin-coset maps to itself under inverse since</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/549/1*MdM1mUzY1QCq1tMpYdPD7A.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/783/0*CWRSF2zFnLHCwTfT" /><figcaption>Figure 3. Twin cosets of subgroups 4,2,1 (left to right). <em>Q⋅Gₙ₋₁​</em> is blue and <em>Q⁻¹⋅Gₙ₋₁​</em>​ is red. If we take the union, it is a twin coset.</figcaption></figure><p><strong>Definition</strong> In the exceptional case that a twin-coset <em>D</em> of subgroup <em>Gₙ₋₁​</em> is again a coset of the subgroup <em>Gₙ</em>​, we call <em>D</em> a <strong>standard position coset</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/821/0*fXH1xQvY5qgeM0TO" /><figcaption>Figure 4. Notice that they are twin-cosets of subgroup 4, 2, 1 (left to right), but are also a coset of subgroup size 8, 4, 2 respectively.</figcaption></figure><p><strong>Lemma 3 from the paper. </strong>If <em>D</em> is a twin-coset of size <em>2ⁿ</em>, <em>n</em>≥2, then its image <em>π</em>(<em>D</em>) is a twin-coset of size <em>2ⁿ⁻¹</em>. In addition, if <em>D</em> is a standard position coset, so is <em>π</em>(<em>D</em>).</p><p>Proof: <em>π(D)=π(Q⋅Gₙ₋₁∪Q⁻¹⋅Gₙ₋₁)=π(Q)⋅ G</em>ₙ₋₂ <em>∪ π(Q</em>⁻¹<em>)G</em>ₙ₋₂ <em>​ </em>and if <em>D=Q⋅Gₙ </em>​is a standard position coset, then <em>π(Q⋅Gₙ)=π(Q)⋅G</em>ₙ₋₁​, which means <em>π(D)</em> is also a standard position coset.</p><h4>Space of Polynomials</h4><p><strong>Definition</strong> Let be <em>F </em>an extension field of <em>Fₚ</em>. Over the circle curve, for any even integer <em>n</em>≥0 we define <em>Lₙ(F) </em>as the space of all bi-variate polynomials with coefficients in <em>F</em>, and of total degree at most N/2,</p><p>For a circle STARK the bi-variate polynomials from <em>Lₙ(F)</em> are what low-degree extensions are for classical univariate proofs. The crucial properties of <em>Lₙ(F)</em> are:</p><ol><li>rotation invariance, which is needed for the next-neighbour relation and efficient encoding</li><li>good separability, leading to maximum distance separable codes.</li></ol><h3>Vanishing Polynomial</h3><p><strong>Definition</strong> Let <em>D</em> be a subset of <em>C</em>(<em>Fₚ</em>​) of even size <em>N</em>, where 2≤<em>N</em>&lt;<em>p</em>+1. We call any non-zero polynomial from <em>Lₙ</em>=<em>Lₙ</em>(<em>Fₚ</em>), which evaluates to zero over <em>D</em> a <strong>vanishing polynomial</strong> of the set <em>D</em>. Decomposing <em>D</em> into pairs of points <em>Pₖ​,Qₖ​,1≤k≤N/2</em> and taking the product of linear functions going through these pairs,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1002/1*VIBUrRY-dbnhlI2Hz3HHMw.png" /></figure><p>shows that vanishing polynomials do exist.</p><p>Given a twin-coset <em>D</em>=<em>Q⋅Gₙ₋₁​∪Q⁻¹⋅Gₙ₋₁</em>, using Lemma 3, we can see <em>πⁿ⁻¹</em>(<em>D</em>) will result in a twin-coset of size 2. In other words, it is in the form of <em>πⁿ⁻¹</em>(<em>D</em>)={(<em>xᴅ,yᴅ​),(xᴅ​,−yᴅ</em>​)} for some <em>xᴅ​,yᴅ​∈D</em>. We therefore may take</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/964/1*Mlq6-PtfSrSV4PRXhYGYOg.png" /></figure><p>with <em>vₙ</em>​(<em>x</em>,<em>y</em>):=<em>πₓ​</em>∘<em>πⁿ⁻¹</em>(<em>x</em>,<em>y</em>) where <em>πₓ​</em>​ is the projection onto the x-axis.</p><p>And when <em>D</em> is a standard position coset, its image <em>πⁿ⁻¹</em>(<em>D</em>) is again a standard position coset and thus <em>xᴅ</em>=0 (see Figure 4, rightmost image). In this case <em>vᴅ</em>​(<em>x</em>,<em>y</em>):=<em>vₙ</em>​(<em>x</em>,<em>y</em>) and <em>vᴅ</em>​ can be evaluated by only <em>O</em>(<em>n</em>) field operations (2 addition and 1 multiplication in each step).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HZXoBEIxnhBhO8Vf7uwcQQ.png" /></figure><p><strong>Definition</strong> The <strong>circle code</strong> with values in <em>F</em> and evaluation domain <em>D</em>, is linear code with code words from the space:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l_N5p6x4m1r6Wk3uGxwdZw.png" /></figure><h3>Circle FFT</h3><p><strong>Definition 1 from the paper</strong>. (CFFT-friendly prime). Any prime <em>p</em> for which (<em>p</em>+1) is divisible by 2<em>ⁿ⁺¹</em> for sufficiently large <em>n</em>≥1, will be called CFFT-friendly, and any such <em>n</em> is a supported order, and <em>N</em>=<em>2ⁿ</em> a supported domain size.</p><p><strong>Definition 4 from the paper</strong>. For any integer <em>j</em> from the interval <em>0≤j≤2ⁿ-1</em>, let <em>(j₀,…,jₙ₋₁)∈{0,1}ⁿ </em>denote its bit representation. The FFT-basis of order <em>n</em> is the family <strong><em>B</em></strong><em>ₙ</em>​ of polynomials:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CR1M2ATonJNN6TRGUAsRdA.png" /></figure><p>Consider bi-variate polynomials modulo <em>X²+Y²−1: F[X,Y]/(X²+Y²−1)</em>. Here Y²≡1−X² so we can replace all <em>y²</em> by <em>1−x²</em> and hence, all polynomials in <em>F[X,Y]/(X²+Y²−1)</em> can be represented with polynomials with <em>deg</em>(<em>Y</em>)≤1.</p><p>This means any <em>f</em>(<em>X</em>,<em>Y</em>)∈<em>F</em>[<em>X</em>,<em>Y</em>]/(X²+Y²−1) can be represented as <em>canonical form</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wOY1enj1NacSfdFXcU-org.png" /></figure><p>And we can calculate <em>f₀</em>​(<em>X</em>) and <em>f</em>₁​(<em>X</em>) by:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Bn7hsw9_wKCGeBmSjKANnQ.png" /></figure><p>(<em>J</em>-folding) First step <em>ϕⱼ</em>​ aka <em>πₓ</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k-8AL0ydUzs4pOTUKW8zXQ.png" /></figure><p>More intuitively, <em>f₀</em>​ is taking the average of <em>f</em> and <em>f </em>∘ <em>J</em> while <em>f</em>₁​ is the difference between them divided by 2<em>y</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*mq1Cm35D60rKaJjw" /><figcaption>Figure 5. Given the evaluations (left), the result of J-folding is shown. Notice that f<em>₀</em>​​ and <em>f₁</em>​ can be actually parametrized by only the x-axis.</figcaption></figure><p>(<em>π</em>-folding) Next step:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F7th5kHKvPDgM0ObP5JzPA.png" /></figure><p>This step is repeated recursively until we get constant functions of the form:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XsheyHeyRSNDc0N3DTgyOw.png" /></figure><p>These make up a constant <em>cₖ=fₖ₀,…,kₖₙ₋₁</em>∈<em>F,</em> for each <em>k</em> in the interval 0≤<em>k</em>≤<em>2ⁿ-1</em>, where <em>k=k₀+k₁2+…+kₙ₋₁2ⁿ⁻¹</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oBkINxuRKsrl0GGY" /><figcaption>Figure 6. Result of <em>π</em>-folding on <em>f₀</em>​. We do the same for <em>f</em>₁ to get f₁<em>₀</em>​ and f₁₁​.</figcaption></figure><p>In Figure 6, <em>f₀</em>​(<em>x</em>) suddenly has only 4 points. This is because <em>f₀</em>​(<em>x</em>) actually has only 4 evaluation points (−<em>A</em>,−<em>B</em>,<em>B</em>,<em>A</em>) and is only parametrized by <em>x</em>. It is visualized on a circle for easier group operation visualization. To elaborate:</p><ol><li>f<em>₀₀</em>(C) is the average of <em>f₀</em>​(<em>A</em>) and <em>f₀</em>​​(−<em>A</em>).</li><li><em>f₀</em>​<em>₀</em>​​(−<em>C</em>) is the average of <em>f₀</em>​​(<em>B</em>) and <em>f₀</em>​​(−<em>B</em>).</li></ol><p>But where did <em>C</em> come from? It denotes <em>2A²−1</em>, while −<em>C</em> is <em>2B²−1</em> since <em>A²</em>+B²=1 because they are from a standard position coset of size 8.</p><p><strong>Theorem 2</strong> Let <em>p</em> be a CFFT-friendly prime supporting the order <em>n</em>≥1, take <em>D</em>⊂<em>C</em>(<em>Fₚ</em>) a twin-coset of size ∣<em>D</em>∣=2<em>ⁿ</em>. Given <em>f</em>∈<em>F</em>ᴰ a function over <em>D</em> with values in an extension field <em>F</em> of <em>Fₚ, </em>the above described algorithm outputs the coefficients <em>cₖ</em>​∈<em>F</em>, 0≤<em>k</em>≤<em>2ⁿ-1</em>, with respect to the FFT basis <strong><em>B</em></strong><em>ₙ</em>​, so that</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/912/1*9cxB_72mGkkM9319RSMhFg.png" /></figure><p>evaluates to <em>f</em> over <em>D</em>.</p><h3>Low degree test over the Circle</h3><p><strong>Protocol 1 (Circle FRI)</strong>. Let <em>D</em> be a standard position coset of size ∣<em>D</em>∣=2ᴮ⁺ⁿ, where <em>B</em>≥1 and <em>n</em>≥1, and let <em>C=Cₙ</em>​(<em>F</em>,<em>D</em>) be the circle code with rate <em>ρ</em>=∣<em>D</em>∣/(<em>N</em>+1​), where <em>N</em>=2<em>ⁿ</em>. For given proximity parameter <em>θ</em>∈(0,1−<em>ρ</em>​), the interactive oracle proof of a function <em>f</em>∈<em>F</em>ᴰ being <em>θ</em>-close to the circle code C, consists of a commit phase and a subsequent query phase, which are as follows.</p><h3>COMMIT phase:</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hkL7xxX70ASMkTGNKMBaSQ.png" /></figure><h3>QUERY phase: (executed by the Veriﬁer)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OMwujda4sSnr35TbBjXvvA.png" /></figure><h3>Batch Circle FRI</h3><p><strong>Protocol 2 (batch Circle FRI).</strong> Under the same assumptions as Protocol 1, the interactive oracle proof for a batch of functions <em>f₁,…,fₗ​</em>∈<em>F</em>ᴰ having correlated (1−<em>θ</em>)-agreement to a codeword from <em>Cₙ</em>​(<em>F</em>,<em>D</em>), is as follows. In the first step, given a random challenge <em>λb</em>​←<em>F</em> from the verifier, the prover computes the values of the linear combination:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TFN0RPCHmHnOslo6SbO7pw.png" /></figure><p>​over <em>D</em>. Now, both prover and verifier run Protocol 1 on <em>f</em> , with its query phase extended by a check of the batching at each of the queries.</p><h3>CircleSTARK</h3><p>In circle STARK, the <strong>trace domain</strong> is the standard position coset <em>H</em>⊂<em>C</em>(<em>Fₚ</em>) of a cyclic and proper subgroup <em>G</em>=<em>Gₙ</em>​ of the circle curve <em>C</em>(<em>Fₚ</em>), of size <em>N</em>=2ⁿ, with <em>n</em>≥1, and the trace is organised column-wise <em>t₁,…,t_w</em>∈<em>Fₚᴺ </em>, each placed over the domain <em>H</em> in the usual manner, using the group translation <em>T</em> by a generator of <em>G</em> for the timeline. The trace columns are interpolated by polynomials</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/1*2hx9ecM42wxmyjl7-a-f6A.png" /></figure><p>of total degree at most <em>N</em>/2, meaning that <em>pᵢ</em>∈<em>Lₙ</em>(F<em>ₚ</em>) and these polynomials are subject to set of constraints, say</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ba-XAVDJnzmFi46Xolermw.png" /></figure><p>for <em>i</em>=1,…,<em>C</em>, holding over the entire domain <em>H</em>, where <em>sᵢ​</em>∈<em>Lₙ</em>(F<em>p</em>​) is a predefined selector polynomial.</p><p>Each constraint is a polynomial</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5Hkv0ygmXXIbufSybMi8sg.png" /></figure><p>of total degree at most the maximum number of twin-coset of size <em>N</em>, and the degree in the selector variable <em>S</em> is at most 1.</p><p><strong>Definition. </strong>The <strong>evaluation domain</strong> is a standard position coset <em>D</em>⊆<em>C</em>(F<em>p</em>​), of at least double the size of trace domain <em>H</em>. The polynomials in the circle STARK will be generally committed by their values over this domain.</p><p><strong>Lemma 2 from the paper</strong>. Let <em>p</em> be a CFFT-friendly prime supporting the order <em>m</em>≥1, and <em>Gₖ</em>​ denote the subgroup of order 2ᵏ for <em>k</em>≤<em>m</em>. Then any subset of <em>D</em>⊆<em>C</em>(<em>Fₚ​</em>)/<em>Gₘ</em>​<em> </em>which is invariant under <em>Gₘ₋₁</em> and <em>J</em> can be decomposed into twin-cosets of size <em>N</em>=<em>2ⁿ</em>, for any <em>n</em>≤<em>m</em>. In particular for a standard position coset <em>D</em> of size <em>M</em>=<em>2ᵐ</em>,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SHLPGsSfrdN-SDse90ZNgw.png" /></figure><p>where <em>Q</em> is an element from <em>C</em>(<em>Fₚ​</em>​) of order 2ᵐ⁺¹.</p><h3>IOP for AIR</h3><p>Now, once we have all these, the interactive oracle proof for the satisfiability of the AIR can be constructed as follows:</p><p>In the first round, the prover computes the values of its trace polynomials <em>p₁,…,pᵥᵥ</em>​∈<em>Lₙ</em>(<em>Fₚ​</em>​) over the evaluation domain <em>D</em> using its decomposition into twin-cosets and shares their oracles denoted by</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6-RRIRmvsji9VT2LmEB1dQ.png" /></figure><p>with their verifier.</p><p>In the second round, the verifier sends random challenge <em>β</em>←<em>F</em>, drawn uniformly from a suitably large extension field <em>F</em> of <em>Fₚ​</em>​, which is used to reduce the constraint polynomials into a single one:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jHNQLhKhu-h13G5JInz0jw.png" /></figure><p>which should hold over trace domain <em>H</em>. To prove this, the vanishing polynomial over <em>H</em>, <em>v</em>ₕ​, is computed so the composite constraint polynomial can now be written as:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SDnvoV1o5MvOs4W07nnW5A.png" /></figure><p>​To keep with the degree bound imposed by the size of <em>H</em>, the quotient <em>q</em>∈<em>L₍ₔ₋₁₎ₙ​(F) </em>needs to be split into polynomials <em>q₁,…,q</em>₍ₔ₋₁₎∈<em>L₍ₔ₋₁₎ₙ​(F)</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iEWXOBAczESKdGHw4xtHFA.png" /></figure><p>Then, the prover sets up the oracles</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*elL9HkmEk1SaallxtLQeig.png" /></figure><p>for their values over the evaluation domain <em>D</em>, and sends them, together with <em>λ</em>, to the verifier.</p><p>Having all oracles in place, the next step is DEEP ALI, which reduces satisfiability of the constraints to a low-degree test on single-point quotients. (In lose terms, this step turns low-degree test into a polynomial commitment scheme.)</p><p>In this step, the verifier responds with a random point <em>γ</em>→<em>C</em>(<em>F</em>)∖(<em>D</em>∪<em>H</em>). In return, the prover opens the values <em>vᵢ,₀=pᵢ(γ),vᵢ,₁=pᵢ(T(γ))</em> for each <em>i</em>=1,…,<em>w</em> as well as <em>v₁,…,v</em>₍ₔ₋₁₎​ of <em>q₁,…,q</em>₍ₔ₋₁₎​ at <em>γ</em>. Eventually, both prover and verifier engage in a low-degree test for the real and imaginary parts of the DEEP quotients:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y7yC-3ANqcMgjzdEIfH9XQ.png" /></figure><h3>Conclusion</h3><p>The initial implementation of CircleFFT demonstrated a performance improvement by a factor of 1.4 in a single-threaded setup. Building on this foundation, Starknet’s next-generation prover, Stwo (“STARK Two”), is designed to enhance and eventually replace the current prover, Stone (“STARK One”).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XoasqEnNm8nX34sT" /><figcaption>Figure 7. Initial benchmark result of CFFT</figcaption></figure><h3>About Kroma</h3><p>As Asia’s leading Layer 2 solution built on the Superchain, Kroma is the first OP Stack rollup with an active fault proof system utilizing zkEVM.<br>Kroma will transition to a universal ZK Rollup once the generation of ZK proofs becomes more cost-efficient and faster — using its original modular ZK backend library, <a href="https://github.com/kroma-network/tachyon">Tachyon</a>.</p><p>Kroma plans to push for gamified web3 experience backed by its strengths in gaming, consumer applications, Asia market, and technical capabilities for true universal web3 adoption.</p><h3>Follow us:</h3><p><a href="https://kroma.network/">Website</a> | <a href="https://twitter.com/kroma_network">Twitter</a> | <a href="https://discord.gg/kroma-network">Discord</a> | <a href="https://warpcast.com/kroma-network">Warpcast</a> | <a href="https://github.com/kroma-network">Github</a> | <a href="https://docs.kroma.network/">Docs</a> | <a href="https://kroma.network/ecosystem/all">Ecosystem</a> | <a href="https://github.com/kroma-network/kroma-brand-kit">Brand Kit</a> | <a href="https://lightscale.notion.site/Kroma-Foundation-Grant-1a4a7942b9af4847970d1502772df8ba">Grant</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6410b24473d7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/kroma-network/understanding-circlestark-6410b24473d7">Understanding CircleSTARK</a> was originally published in <a href="https://medium.com/kroma-network">Kroma</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>