<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Stack</title>
        <link>https://paragraph.com/@stack-2</link>
        <description>A new standard for community engagement and asset distribution, to enhance transparency, fairness, and user experience in online communities</description>
        <lastBuildDate>Sat, 04 Apr 2026 13:13:30 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Stack</title>
            <url>https://storage.googleapis.com/papyrus_images/900b312367c1c4b6daa82dc15000dda2c9e8ba57c9d310a934157637bda13e23.png</url>
            <link>https://paragraph.com/@stack-2</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Introducing Stack Mainnet: An L3 OP-Stack Points Chain on Base]]></title>
            <link>https://paragraph.com/@stack-2/introducing-stack-mainnet-an-l3-op-stack-points-chain-on-base</link>
            <guid>ZD1iZpQSWXO0WAgfZksE</guid>
            <pubDate>Mon, 11 Mar 2024 14:19:08 GMT</pubDate>
            <description><![CDATA[Stack introduces an ultra low-cost Ethereum L3 points chain, using the OP Stack and settling on Base for security. This allows us to bring loyalty points onchain sustainably and securely.Today, we’re excited to announce Stack’s mainnet launch. Our L3 chain allows us to balance being a low-cost solution for loyalty management with the security of a verifiable blockchain, operating according to Ethereum community standards. The chain runs a core points protocol that integrates with our points m...]]></description>
            <content:encoded><![CDATA[<h3 id="h-stack-introduces-an-ultra-low-cost-ethereum-l3-points-chain-using-the-op-stack-and-settling-on-base-for-security-this-allows-us-to-bring-loyalty-points-onchain-sustainably-and-securely" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Stack introduces an ultra low-cost Ethereum L3 points chain, using the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.optimism.io/">OP Stack</a> and settling on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://base.org/">Base</a> for security. This allows us to bring loyalty points onchain sustainably and securely.</h3><p>Today, we’re excited to announce Stack’s mainnet launch. Our L3 chain allows us to balance being a low-cost solution for loyalty management with the security of a verifiable blockchain, operating according to Ethereum community standards.</p><p>The chain runs a core points protocol that integrates with our points management UI and SDKs. The points protocol will lower costs, reduce platform risk, and increase reliability and security for loyalty management. Developers can learn more about integrating and extending the points protocol from our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.stack.so/chain.html">chain docs</a>.</p><p>We are excited to bring loyalty points onchain in a sustainable way, showcasing points as a use case for blockchains that proudly sits alongside stablecoins, NFTs, and other tokens.</p><h3 id="h-why-op-stack-on-base" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Why OP Stack on Base?</h3><p>Stack first pitched the case for onchain point systems using L3s in October 2023 at the Coinbase Ventures Summit in Malibu. At the time, the only L3 solution was <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbitrum.io/orbit">Arbitrum Orbit</a>. Following the presentation we dove into whether L3s would be feasible on Base. While we prototyped our protocol using Orbit, the Base team executed on supporting L3s and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://conduit.xyz/">Conduit</a> stood out as a reliable service provider.</p><p>We are convinced that using a common standard like OP Stack with more developer tooling will reduce risks and that rolling up to Base aligns us with consumer apps who know and trust the Base chain.</p><h3 id="h-why-an-l3" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Why an L3?</h3><p>Following <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698">Ethereum’s rollup-centric roadmap</a> in October 2020, the Ethereum ecosystem has seen a proliferation of new blockchains that provide a variety of security and performance tradeoffs. For example, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zora.co/">Zora</a> launched a chain for creative artists, while Base targets consumer crypto apps.</p><p>The latest development in blockchain infrastructure is known as a &quot;layer 3 blockchain&quot; or &quot;L3&quot; because it rolls up to a &quot;layer 2&quot; (L2) that, in turn, rolls up to the main Ethereum chain. It is prudent to use these layer classifications for their most suitable applications. While L3s are fully verifiable blockchains, they may not necessarily provide a secure solution for financial applications (also known as DeFi).</p><p>We believe that L3s are well-suited for attestations, particularly quantitative attestations in the form of point systems for loyalty programs. Bringing loyalty programs onchain is only possible with scalable, cheap blockchains.</p><h2 id="h-network-information" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Network Information</h2><ul><li><p><strong>Network Name:</strong> Stack</p></li><li><p><strong>Description:</strong> The public mainnet for Stack.</p></li><li><p><strong>Chain ID:</strong> 78225</p></li><li><p><strong>Currency Symbol:</strong> ETH</p></li><li><p><strong>RPC Endpoint:</strong> <code>https://rpc.stack.so</code></p></li><li><p><strong>Bridge:</strong> <code>https://bridge.stack.so</code></p></li><li><p><strong>Block Explorer:</strong> <code>https://explorer.stack.so</code></p></li><li><p><strong>Points Protocol:</strong> <code>0x000000000c2B4A5816cbb76e9bb3f70D175940A3</code></p></li><li><p><strong>Points Interface:</strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/stack-so/protocol-interfaces/blob/main/IPoints.sol">IPoints.sol</a></p></li><li><p><strong>Observer Interface:</strong> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/stack-so/protocol-interfaces/blob/main/IPointsObserver.sol">IPointsObserver.sol</a></p></li></ul><h2 id="h-the-points-protocol" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Points Protocol</h2><p>The Points Protocol is a Solidity smart contract that enables the creation and management of point systems. It provides a flexible and modular approach to implementing point-based systems.</p><h2 id="h-features" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Features</h2><ul><li><p>Create multiple point systems, each with its own unique ID</p></li><li><p>Add and subtract points from user balances within a point system</p></li><li><p>Retrieve point balances and total points within a point system</p></li><li><p>Perform batch operations to add or subtract points for multiple users simultaneously</p></li><li><p>Manage administrators and external contracts (issuers)</p></li><li><p>Set and retrieve metadata (URI) for each point system</p></li><li><p>Observe point balance changes through onchain hooks</p></li></ul><h2 id="h-usage" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Usage</h2><p>To interact with the Points Protocol, you can use the <code>IPoints</code> interface. The contract is deployed at the address <code>0x000000000c2B4A5816cbb76e9bb3f70D175940A3</code>.</p><h3 id="h-creating-a-point-system" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Creating a Point System</h3><p>To create a new point system, call the <code>createPointSystem()</code> function. It will return the ID of the newly created point system.</p><h3 id="h-managing-points" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Managing Points</h3><ul><li><p><code>addPoints(uint256 systemId, address user, uint256 points)</code>: Add points to a user’s balance within a specific point system.</p></li><li><p><code>subtractPoints(uint256 systemId, address user, uint256 points)</code>: Subtract points from a user’s balance within a specific point system.</p></li><li><p><code>getPoints(uint256 systemId, address user)</code>: Retrieve the point balance of a user within a specific point system.</p></li><li><p><code>getTotalPoints(uint256 systemId)</code>: Retrieve the total points within a specific point system.</p></li></ul><h3 id="h-batch-operations" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Batch Operations</h3><ul><li><p><code>addPointsBatch(uint256 systemId, address[] calldata users, uint256[] calldata points)</code>: Add points to multiple users’ balances within a specific point system in a single transaction.</p></li><li><p><code>subtractPointsBatch(uint256 systemId, address[] calldata users, uint256[] calldata points)</code>: Subtract points from multiple users’ balances within a specific point system in a single transaction.</p></li><li><p><code>addPointsBatchMultipleSystems(uint256[] calldata systemIds, address[] calldata users, uint256[] calldata points)</code>: Add points to multiple users’ balances across different point systems in a single transaction.</p></li><li><p><code>subtractPointsBatchMultipleSystems(uint256[] calldata systemIds, address[] calldata users, uint256[] calldata points)</code>: Subtract points from multiple users’ balances across different point systems in a single transaction.</p></li></ul><h3 id="h-managing-administrators-and-issuers" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Managing Administrators and Issuers</h3><ul><li><p><code>addAdmin(uint256 systemId, address admin)</code>: Add an administrator to a specific point system.</p></li><li><p><code>removeAdmin(uint256 systemId, address admin)</code>: Remove an administrator from a specific point system.</p></li><li><p><code>addIssuer(uint256 systemId, address contractAddress)</code>: Add an external contract (issuer) to a specific point system.</p></li><li><p><code>removeIssuer(uint256 systemId, address contractAddress)</code>: Remove an external contract (issuer) from a specific point system.</p></li></ul><h3 id="h-observer-pattern" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Observer Pattern</h3><ul><li><p><code>setObserver(uint256 systemId, address observer)</code>: Set an observer contract for a specific point system. The observer will be notified when points are added or subtracted from a user’s balance.</p></li><li><p><code>getObserver(uint256 systemId)</code>: Retrieve the observer contract for a specific point system.</p></li></ul><h3 id="h-managing-metadata" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Managing Metadata</h3><ul><li><p><code>setURI(uint256 systemId, string calldata uri)</code>: Set the URI (metadata) for a specific point system.</p></li><li><p><code>getURI(uint256 systemId)</code>: Retrieve the URI (metadata) for a specific point system.</p></li></ul><h2 id="h-error-handling" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Error Handling</h2><p>The Points Protocol defines several custom errors to handle specific scenarios:</p><ul><li><p><code>OnlyAdmin(uint256 systemId, address user)</code>: Thrown when a non-admin user tries to perform an admin-only action.</p></li><li><p><code>OnlyIssuer(uint256 systemId, address user)</code>: Thrown when a non-issuer contract tries to perform an issuer-only action.</p></li><li><p><code>InsufficientPoints(uint256 systemId, address user, uint256 available, uint256 required)</code>: Thrown when a user doesn’t have enough points for a specific operation.</p></li><li><p><code>ArrayLengthMismatch()</code>: Thrown when the lengths of input arrays for batch operations don’t match.</p></li></ul><p>Make sure to handle these errors appropriately in your code.</p>]]></content:encoded>
            <author>stack-2@newsletter.paragraph.com (Stack)</author>
        </item>
        <item>
            <title><![CDATA[Introducing Stack]]></title>
            <link>https://paragraph.com/@stack-2/introducing-stack</link>
            <guid>fW7Zkvby4QeFyNNe1LSr</guid>
            <pubDate>Mon, 04 Mar 2024 17:41:57 GMT</pubDate>
            <description><![CDATA[Stack is introducing loyalty points as an onchain primitive and building tools for managing points programs.Loyalty point programs have long played a role in consumer applications, supporting industries from gaming, to beauty, to food. These programs encourage product usage and retention, as users are incentivized to earn points for certain behaviors and then redeem points for rewards. Blockchains are a natural platform for points programs, with built-in accounting, security, and the promise ...]]></description>
            <content:encoded><![CDATA[<h3 id="h-stack-is-introducing-loyalty-points-as-an-onchain-primitive-and-building-tools-for-managing-points-programs" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Stack is introducing loyalty points as an onchain primitive and building tools for managing points programs.</h3><p>Loyalty point programs have long played a role in consumer applications, supporting industries from gaming, to beauty, to food. These programs encourage product usage and retention, as users are incentivized to earn points for certain behaviors and then redeem points for rewards.</p><p>Blockchains are a natural platform for points programs, with built-in accounting, security, and the promise of <strong>using smart contracts to enforce rules for redeeming points for tokens</strong>. More importantly, blockchains allow <strong>composability of points programs</strong> by enabling interoperability among providers. The same open composability that has allowed tokens to flourish will pertain to points, too. Since the points protocol runs on a public blockchain, brands can collaborate without encountering any intermediary.</p><h3 id="h-developer-tooling" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Developer Tooling</h3><p>Stack provides simple developer tooling that makes it easy to integrate a point system into an application in just a few lines of code. The SDK comes with the ability to tag point assignments as events, which opens the ability for deeper analytics served in the Stack dashboard. It also allows fetching results in a leaderboard format. See our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.stack.so/overview.html">docs</a> for more details.</p><pre data-type="codeBlock" text="await stack.track(&quot;user_signup&quot;, {
  points: 10,
  account: &quot;0x627306090abaB3A6e1400e9345bC60c78a8BEf57&quot;
});

await stack.getPoints(&quot;0x627306090abaB3A6e1400e9345bC60c78a8BEf57&quot;);
// =&gt; 10
"><code>await stack.track(<span class="hljs-string">"user_signup"</span>, {
  points: <span class="hljs-number">10</span>,
  account: <span class="hljs-string">"0x627306090abaB3A6e1400e9345bC60c78a8BEf57"</span>
});

await stack.getPoints(<span class="hljs-string">"0x627306090abaB3A6e1400e9345bC60c78a8BEf57"</span>);
<span class="hljs-comment">// => 10</span>
</code></pre><h3 id="h-whats-next" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">What’s Next?</h3><p>Stack will open up the blockchain running these points programs to the public – a new virtual computer dedicated to loyalty programs that anyone can use to read, write, and own their own points programs. The points protocol will be checkpointed on all major Ethereum blockchains, allowing for trustless redemptions of points for assets.</p><h3 id="h-funding-and-support" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Funding and Support</h3><p>Stack kicks off this enterprise with support and funding from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://archetype.fund">Archetype</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coinbase.com/ventures">Coinbase Ventures</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://scalar.capital/">Scalar Capital</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://acapital.com/">A Capital</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.cooprecords.xyz/">CoopRecords</a> and other angel investors from within the web3 founder ecosystem, including Nadav Hollander, Balaji Srinivasan, Henri Stern, Dan Romero, and Colin Armstrong.</p><p>Visit <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://stack.so">stack.so</a> to get started and walk with us on the adventure via <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/stackdotso">X</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://warpcast.com/~/channel/stack">Farcaster</a>.</p>]]></content:encoded>
            <author>stack-2@newsletter.paragraph.com (Stack)</author>
        </item>
    </channel>
</rss>