<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Blockchain on Selective Creativity</title>
    <link>https://blog.sebastiansastre.co/tags/blockchain/</link>
    <description>Recent content in Blockchain on Selective Creativity</description>
    <generator>Hugo -- 0.154.5</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 01 May 2026 00:00:00 -0300</lastBuildDate>
    <atom:link href="https://blog.sebastiansastre.co/tags/blockchain/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Thinking in Solana</title>
      <link>https://blog.sebastiansastre.co/posts/thinking-in-solana/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 -0300</pubDate>
      <guid>https://blog.sebastiansastre.co/posts/thinking-in-solana/</guid>
      <enclosure url="https://blog.sebastiansastre.co/img/thinking-in-solana-cover.jpg" type="image/jpeg" />
      <description><![CDATA[<figure><img src="https://blog.sebastiansastre.co/img/thinking-in-solana-cover.jpg" alt=""" loading="lazy" /></figure><p>There is a particular cognitive dissonance that hits you when you first study blockchain concepts and Solana&rsquo;s execution model in particular. It isn&rsquo;t confusion exactly — it&rsquo;s something closer to the feeling of a familiar room with the furniture rearranged. Everything is still there. But it&rsquo;s been deliberately separated.</p>
<p>Just checking our cognitive compass: in Software Engineering, what we do with libraries and clients and nodes is create enforceable abstractions that allow programs (automated computations) to scale and to have predictable output for a spectrum of valid inputs.</p>
<p>With that we have a definition that feels abstract until we apply it to a very concrete problem:</p>
<p>I want a gazillion valid transactions per second available all the time!</p>
<p>So what very concrete problem does Solana solve for us? Well — here&rsquo;s the precise technical challenge that gives us that throughput:</p>
<p>Solana solves the fundamental &ldquo;synchronization bottleneck&rdquo; of transactions in a decentralized network. Many nodes can process many transactions very fast without the overhead of nodes talking to each other to agree which transaction happened before the other.</p>
<p>Solana works as if it had a centralized global clock providing Proof of History but, with an elegant architectural approach and cryptographic Math, that&rsquo;s achieved in a way that doesn&rsquo;t require centralization. This makes it performant, doesn&rsquo;t introduce single points of failure, and is unfalsifiable (transparently backed by Math).</p>
<p>If you take a photo of yourself holding today&rsquo;s New York Times, you have proven that the photo was taken after that newspaper was printed.</p>
<p>If the New York Times then publishes that photo in tomorrow&rsquo;s paper, you have proven the photo existed before tomorrow&rsquo;s edition.</p>
<p>Solana does that but with Math functions to produce the Proof of History and keep the ledger consistent. This happens millions of times per second. Your transaction is the &ldquo;photo,&rdquo; and the PoH stream is the &ldquo;newspaper.&rdquo; By being sandwiched between two hashes, your transaction is chronologically locked. If a Leader tries to broadcast a &ldquo;fake&rdquo; clock (e.g., skips hashes to make it look like they worked faster), the parallel verification by the other nodes will immediately see the math doesn&rsquo;t add up, and the Leader&rsquo;s staked SOL is slashed — potentially millions of dollars — for providing a faulty proof.</p>
<p>So that&rsquo;s an interesting proposition, but what are the building blocks? Without them conveniently defined, it&rsquo;s hard to think about how it gets used and what all this is useful for.</p>
<h3 id="main-solana-concepts"><a href="https://solana.com/docs/references/terminology">Main Solana concepts</a></h3>
<p><strong>Account</strong>. A persistent data structure stored under a 32-byte address, with five fields:</p>
<pre tabindex="0"><code>{
    lamports: u64       // Balance in Lamports. Owner debits; any program credits.
    data: Vec&lt;u8&gt;       // State (when an Account) or BPF bytecode (when a Program). Owner-writable only.
    owner: Pubkey       // The Program with write authority over this Account.
    executable: bool    // false = data Account; true = Program.
    rent_epoch: u64     // Deprecated. Set to u64::MAX for rent-exempt Accounts.
}
</code></pre><p><strong><a href="https://solana.com/docs/programs/examples">Program</a></strong>. An Account with <code>executable = true</code>. Its <code>data</code> field is not state but compiled BPF bytecode — the immutable instructions the runtime processes when the Program is invoked.</p>
<p><strong>SOL</strong>. The network&rsquo;s native token. Used to pay transaction fees, the rent-exempt deposit on Accounts, and to stake with validators.</p>
<p><strong>Lamports</strong>. The smallest unit of SOL: <code>1 SOL = 1,000,000,000 Lamports</code> (1 Lamport = 10⁻⁹ SOL). Named after Leslie Lamport, a pioneer in distributed systems.</p>
<p><strong>Rent</strong>. The minimum SOL balance every Account must hold to remain stored on-chain, proportional to its data size. It is a refundable deposit, not a fee — the full balance is recovered when the Account is closed.</p>
<p><strong>Owner</strong>. Every Account has an <code>owner</code> Program. Only the owner can mutate the Account&rsquo;s <code>data</code> and debit Lamports from it. Any program can <em>credit</em> Lamports to a writable Account.</p>
<p><strong><a href="https://solana.com/docs/core/instructions">Instruction</a></strong>. The smallest unit of execution. A request to invoke a specific function on a Program, carrying the Program ID, the list of Accounts it will read or write, and a byte array whose format the target Program defines (typically a discriminator followed by serialized arguments).</p>
<p><strong><a href="https://solana.com/developers/guides/advanced/confirmation">Transaction</a></strong>. A bundle of one or more <code>Instruction</code>s executed atomically — all succeed or all revert. It carries the signatures that authorize the changes and a recent blockhash that anchors the Transaction in time and prevents replay.</p>
<p><strong>Proof of History (PoH)</strong>. The decentralized clock. A sequential hash chain that produces a <em>verifiable passage of time</em>, letting validators order transactions without round-tripping to agree on order.</p>
<p><strong>Sealevel</strong>. The parallel transaction processing engine (sometimes referred to today as the Solana runtime / SVM). Because every Transaction must declare upfront which Accounts it will read and which it will write, the runtime can build a dependency graph of pending Transactions before scheduling. Non-conflicting Transactions — those touching disjoint sets of Accounts — execute on separate CPU cores at the same time, locking only the specific Accounts they touch. Parallelism is not bolted on top of the system; it falls out of the model itself once state is external and dependencies are explicit.</p>
<p><strong><a href="https://solana.com/docs/core/pda">PDAs (Program Derived Addresses)</a></strong>. Account addresses derived deterministically from a Program ID and a set of seeds, and <em>guaranteed to lie off the Ed25519 curve</em> — which means no private key can exist for them. The runtime lets the Program whose ID was used in the derivation sign on a PDA&rsquo;s behalf via <code>invoke_signed</code>, enabling Programs to act as autonomous custodians of state and assets.</p>
<p><strong><a href="https://solana.com/docs/core/cpi">CPI (Cross-Program Invocation)</a></strong>. The mechanism by which one Program invokes a specific instruction on another Program during execution. CPIs are how composition happens on Solana: any Program&rsquo;s instructions can be called by any other Program.</p>
<h3 id="what-the-building-blocks-unlock">What the building blocks unlock</h3>
<p>The primitives above are inert until you start composing them. And once you do, the interesting question is no longer &ldquo;what is an Account?&rdquo; but &ldquo;what falls out when you compose Accounts and Programs in everyday situations?&rdquo;</p>
<p>Most of what we already do today with registries, ticket booths, loyalty desks, and intermediaries can be expressed as small compositions of these moves. Four examples, deliberately chosen from outside the crypto bubble, to make the design space visible.</p>
<p><strong>Concert and event tickets</strong></p>
<p>A ticket today is a row in a company&rsquo;s database. Whether you really own it depends on whether that company is still in business and willing to honor it. Resale is governed by whichever marketplace the company integrated with; usually the one that pays them the most, not the one that is best for you.</p>
<p>In Solana you can model it as the ticket being an <code>Account</code> and the &ldquo;box office&rdquo; being a <code>Program</code>. The <code>Program</code> owns the ticket <code>Account</code>s and defines the rules: how many can be issued, who can resell, what the maximum resale price is, whether the ticket is bound to your identity at the door. The venue scans the ticket by reading the <code>Account</code> directly. There is no central database to trust, because the <code>Account</code> <em>is</em> the record of truth. If the company that sold you the ticket disappears tomorrow, you still hold it — the <code>Program</code> is still on chain, the <code>Account</code> is still yours.</p>
<p>The shift is from &ldquo;the company keeps a record of your ticket&rdquo; to &ldquo;you hold the ticket, and the <code>Program</code> defines what can be done with it.&rdquo;</p>
<p><strong>Land titles and registries</strong></p>
<p>Today, owning a piece of property means a county office somewhere has a record with your name on it. Title insurance exists because everyone knows that record can be wrong, forged, or contested. An entire industry is a tax on the unreliability of the registry.</p>
<p>Model the deed as an <code>Account</code>. The local registry runs the <code>Program</code>. The <code>Program</code> <a href="https://blog.sebastiansastre.co/posts/explain-your-rules">enforces the rules</a>: only the current title-holder can authorize a transfer, the buyer must sign, the state change is recorded atomically. Every transfer is in the public history forever, and nothing outside the registry&rsquo;s <code>Program</code> can quietly alter a deed: the <code>Account</code>&rsquo;s <code>owner</code> field — pointing to the registry <code>Program</code> — is enforced by the runtime, not by a clerk.</p>
<p>The &ldquo;security guard&rdquo; the runtime provides (only the designated custodian can transform the state) is exactly what we pay notaries and title companies to do today, except now it is enforced by infrastructure instead of by trust.</p>
<p><strong>Loyalty and gift cards that work across stores</strong></p>
<p>Every coffee shop, airline, and bookstore runs its own loyalty program. Their points don&rsquo;t talk to each other because integrating two databases across two companies is a contract negotiation, not a technical exercise.</p>
<p>Model loyalty as a <code>Program</code>. Every customer&rsquo;s balance is an <code>Account</code>. A coffee shop&rsquo;s point-of-sale calls the <code>Program</code>; so does a bookstore&rsquo;s; so does an airline&rsquo;s. None of them need a side deal with the others. The points compose because the <code>Program</code> is shared and the <code>Account</code>s are public. A customer can spend points earned at one merchant on another in a single atomic <code>Transaction</code>, because the rules are the same <code>Program</code>.</p>
<p>This is the move that quietly removes &ldquo;integrations&rdquo; as a concept. There is no API to wire up. There is one <code>Program</code>, addressed by a public key, and any merchant can call it.</p>
<p><strong>Supply chain and product recalls</strong></p>
<p>This is the example that puts more of the model to work because the right programs model the desired state machine that renders its activity in the blockchain.</p>
<p>A bag of coffee beans gets a <code>Program</code>-owned <code>Account</code> when it is harvested. Each step in the chain — the roaster, the distributor, the retailer — calls the <code>Program</code> to transfer custody. The <code>Program</code> enforces the legal sequence of states: a bag cannot move from &ldquo;harvested&rdquo; directly to &ldquo;on the shelf&rdquo;; it has to pass through &ldquo;roasted&rdquo; and &ldquo;in transit.&rdquo; Only the current custodian recorded inside the <code>Account</code> can authorize the next step. The full history lives in the ledger, which is the changes file from earlier in this article. A consumer scanning the QR code on the bag at the supermarket reads not a marketing claim but a verifiable history.</p>
<p>Now the interesting part. A contamination is detected at a roaster&rsquo;s batch on March 14th. In a traditional system the company emails distributors, hopes retailers respond, prints recall notices, and waits weeks while affected product continues to be sold. With this model, a single <code>Transaction</code> queries every <code>Account</code> whose history includes that batch, calls the retail <code>Program</code> via CPI to flag every affected unit as recalled, and atomically updates all of them. <code>Sealevel</code> runs those updates in parallel because each affected <code>Account</code> is independent — no two of them touch the same memory.</p>
<p>The recall is not a workflow that has to be coordinated across companies. It is a <code>Transaction</code>. The same primitives that let you transfer a single ticket let you recall a million products in seconds, because the dependency graph is declared up front and the runtime knows what is independent of what.</p>
<p>Notice that none of these are novel ideas. They are traditional problems implemented with new primitives.</p>
<p>Primitives that do not require a coordinating intermediary at the center.</p>
<p>The pattern is the same across every example.</p>
<p>A <code>Program</code> defines the rules for a kind of thing — a ticket, a deed, a loyalty card, a bag of coffee. Accounts hold the individual instances. The runtime enforces who is allowed to change what. Transactions are the atomic, parallelizable units of change.</p>
<p>When that lands, the ergonomic shift lands with it: we stop asking <em><a href="https://blog.sebastiansastre.co/posts/model-the-reality-not-the-patterns">&ldquo;what does this object do?&rdquo;</a></em> and start asking <em>&ldquo;what are the valid transformations of this state, and who is authorized to invoke them?&rdquo;</em></p>
<p>Solana&rsquo;s answer is direct: divorce the state from the behavior, publish both, enforce custody at the infrastructure layer, and let parallelism emerge from the explicit dependency graph.</p>
<p>All deterministic, all independently verifiable by Math.</p>
<p>The room is not rearranged badly. It is rearranged so a million people can walk through it at once without bumping into each other — and the registrar, the box office, the loyalty desk, and the customs inspector are all the same kind of thing, expressed in code that anyone can read.</p>
]]></description>
      <content:encoded><![CDATA[<figure><img src="https://blog.sebastiansastre.co/img/thinking-in-solana-cover.jpg" alt=""" loading="lazy" /></figure><p>There is a particular cognitive dissonance that hits you when you first study blockchain concepts and Solana&rsquo;s execution model in particular. It isn&rsquo;t confusion exactly — it&rsquo;s something closer to the feeling of a familiar room with the furniture rearranged. Everything is still there. But it&rsquo;s been deliberately separated.</p>
<p>Just checking our cognitive compass: in Software Engineering, what we do with libraries and clients and nodes is create enforceable abstractions that allow programs (automated computations) to scale and to have predictable output for a spectrum of valid inputs.</p>
<p>With that we have a definition that feels abstract until we apply it to a very concrete problem:</p>
<p>I want a gazillion valid transactions per second available all the time!</p>
<p>So what very concrete problem does Solana solve for us? Well — here&rsquo;s the precise technical challenge that gives us that throughput:</p>
<p>Solana solves the fundamental &ldquo;synchronization bottleneck&rdquo; of transactions in a decentralized network. Many nodes can process many transactions very fast without the overhead of nodes talking to each other to agree which transaction happened before the other.</p>
<p>Solana works as if it had a centralized global clock providing Proof of History but, with an elegant architectural approach and cryptographic Math, that&rsquo;s achieved in a way that doesn&rsquo;t require centralization. This makes it performant, doesn&rsquo;t introduce single points of failure, and is unfalsifiable (transparently backed by Math).</p>
<p>If you take a photo of yourself holding today&rsquo;s New York Times, you have proven that the photo was taken after that newspaper was printed.</p>
<p>If the New York Times then publishes that photo in tomorrow&rsquo;s paper, you have proven the photo existed before tomorrow&rsquo;s edition.</p>
<p>Solana does that but with Math functions to produce the Proof of History and keep the ledger consistent. This happens millions of times per second. Your transaction is the &ldquo;photo,&rdquo; and the PoH stream is the &ldquo;newspaper.&rdquo; By being sandwiched between two hashes, your transaction is chronologically locked. If a Leader tries to broadcast a &ldquo;fake&rdquo; clock (e.g., skips hashes to make it look like they worked faster), the parallel verification by the other nodes will immediately see the math doesn&rsquo;t add up, and the Leader&rsquo;s staked SOL is slashed — potentially millions of dollars — for providing a faulty proof.</p>
<p>So that&rsquo;s an interesting proposition, but what are the building blocks? Without them conveniently defined, it&rsquo;s hard to think about how it gets used and what all this is useful for.</p>
<h3 id="main-solana-concepts"><a href="https://solana.com/docs/references/terminology">Main Solana concepts</a></h3>
<p><strong>Account</strong>. A persistent data structure stored under a 32-byte address, with five fields:</p>
<pre tabindex="0"><code>{
    lamports: u64       // Balance in Lamports. Owner debits; any program credits.
    data: Vec&lt;u8&gt;       // State (when an Account) or BPF bytecode (when a Program). Owner-writable only.
    owner: Pubkey       // The Program with write authority over this Account.
    executable: bool    // false = data Account; true = Program.
    rent_epoch: u64     // Deprecated. Set to u64::MAX for rent-exempt Accounts.
}
</code></pre><p><strong><a href="https://solana.com/docs/programs/examples">Program</a></strong>. An Account with <code>executable = true</code>. Its <code>data</code> field is not state but compiled BPF bytecode — the immutable instructions the runtime processes when the Program is invoked.</p>
<p><strong>SOL</strong>. The network&rsquo;s native token. Used to pay transaction fees, the rent-exempt deposit on Accounts, and to stake with validators.</p>
<p><strong>Lamports</strong>. The smallest unit of SOL: <code>1 SOL = 1,000,000,000 Lamports</code> (1 Lamport = 10⁻⁹ SOL). Named after Leslie Lamport, a pioneer in distributed systems.</p>
<p><strong>Rent</strong>. The minimum SOL balance every Account must hold to remain stored on-chain, proportional to its data size. It is a refundable deposit, not a fee — the full balance is recovered when the Account is closed.</p>
<p><strong>Owner</strong>. Every Account has an <code>owner</code> Program. Only the owner can mutate the Account&rsquo;s <code>data</code> and debit Lamports from it. Any program can <em>credit</em> Lamports to a writable Account.</p>
<p><strong><a href="https://solana.com/docs/core/instructions">Instruction</a></strong>. The smallest unit of execution. A request to invoke a specific function on a Program, carrying the Program ID, the list of Accounts it will read or write, and a byte array whose format the target Program defines (typically a discriminator followed by serialized arguments).</p>
<p><strong><a href="https://solana.com/developers/guides/advanced/confirmation">Transaction</a></strong>. A bundle of one or more <code>Instruction</code>s executed atomically — all succeed or all revert. It carries the signatures that authorize the changes and a recent blockhash that anchors the Transaction in time and prevents replay.</p>
<p><strong>Proof of History (PoH)</strong>. The decentralized clock. A sequential hash chain that produces a <em>verifiable passage of time</em>, letting validators order transactions without round-tripping to agree on order.</p>
<p><strong>Sealevel</strong>. The parallel transaction processing engine (sometimes referred to today as the Solana runtime / SVM). Because every Transaction must declare upfront which Accounts it will read and which it will write, the runtime can build a dependency graph of pending Transactions before scheduling. Non-conflicting Transactions — those touching disjoint sets of Accounts — execute on separate CPU cores at the same time, locking only the specific Accounts they touch. Parallelism is not bolted on top of the system; it falls out of the model itself once state is external and dependencies are explicit.</p>
<p><strong><a href="https://solana.com/docs/core/pda">PDAs (Program Derived Addresses)</a></strong>. Account addresses derived deterministically from a Program ID and a set of seeds, and <em>guaranteed to lie off the Ed25519 curve</em> — which means no private key can exist for them. The runtime lets the Program whose ID was used in the derivation sign on a PDA&rsquo;s behalf via <code>invoke_signed</code>, enabling Programs to act as autonomous custodians of state and assets.</p>
<p><strong><a href="https://solana.com/docs/core/cpi">CPI (Cross-Program Invocation)</a></strong>. The mechanism by which one Program invokes a specific instruction on another Program during execution. CPIs are how composition happens on Solana: any Program&rsquo;s instructions can be called by any other Program.</p>
<h3 id="what-the-building-blocks-unlock">What the building blocks unlock</h3>
<p>The primitives above are inert until you start composing them. And once you do, the interesting question is no longer &ldquo;what is an Account?&rdquo; but &ldquo;what falls out when you compose Accounts and Programs in everyday situations?&rdquo;</p>
<p>Most of what we already do today with registries, ticket booths, loyalty desks, and intermediaries can be expressed as small compositions of these moves. Four examples, deliberately chosen from outside the crypto bubble, to make the design space visible.</p>
<p><strong>Concert and event tickets</strong></p>
<p>A ticket today is a row in a company&rsquo;s database. Whether you really own it depends on whether that company is still in business and willing to honor it. Resale is governed by whichever marketplace the company integrated with; usually the one that pays them the most, not the one that is best for you.</p>
<p>In Solana you can model it as the ticket being an <code>Account</code> and the &ldquo;box office&rdquo; being a <code>Program</code>. The <code>Program</code> owns the ticket <code>Account</code>s and defines the rules: how many can be issued, who can resell, what the maximum resale price is, whether the ticket is bound to your identity at the door. The venue scans the ticket by reading the <code>Account</code> directly. There is no central database to trust, because the <code>Account</code> <em>is</em> the record of truth. If the company that sold you the ticket disappears tomorrow, you still hold it — the <code>Program</code> is still on chain, the <code>Account</code> is still yours.</p>
<p>The shift is from &ldquo;the company keeps a record of your ticket&rdquo; to &ldquo;you hold the ticket, and the <code>Program</code> defines what can be done with it.&rdquo;</p>
<p><strong>Land titles and registries</strong></p>
<p>Today, owning a piece of property means a county office somewhere has a record with your name on it. Title insurance exists because everyone knows that record can be wrong, forged, or contested. An entire industry is a tax on the unreliability of the registry.</p>
<p>Model the deed as an <code>Account</code>. The local registry runs the <code>Program</code>. The <code>Program</code> <a href="https://blog.sebastiansastre.co/posts/explain-your-rules">enforces the rules</a>: only the current title-holder can authorize a transfer, the buyer must sign, the state change is recorded atomically. Every transfer is in the public history forever, and nothing outside the registry&rsquo;s <code>Program</code> can quietly alter a deed: the <code>Account</code>&rsquo;s <code>owner</code> field — pointing to the registry <code>Program</code> — is enforced by the runtime, not by a clerk.</p>
<p>The &ldquo;security guard&rdquo; the runtime provides (only the designated custodian can transform the state) is exactly what we pay notaries and title companies to do today, except now it is enforced by infrastructure instead of by trust.</p>
<p><strong>Loyalty and gift cards that work across stores</strong></p>
<p>Every coffee shop, airline, and bookstore runs its own loyalty program. Their points don&rsquo;t talk to each other because integrating two databases across two companies is a contract negotiation, not a technical exercise.</p>
<p>Model loyalty as a <code>Program</code>. Every customer&rsquo;s balance is an <code>Account</code>. A coffee shop&rsquo;s point-of-sale calls the <code>Program</code>; so does a bookstore&rsquo;s; so does an airline&rsquo;s. None of them need a side deal with the others. The points compose because the <code>Program</code> is shared and the <code>Account</code>s are public. A customer can spend points earned at one merchant on another in a single atomic <code>Transaction</code>, because the rules are the same <code>Program</code>.</p>
<p>This is the move that quietly removes &ldquo;integrations&rdquo; as a concept. There is no API to wire up. There is one <code>Program</code>, addressed by a public key, and any merchant can call it.</p>
<p><strong>Supply chain and product recalls</strong></p>
<p>This is the example that puts more of the model to work because the right programs model the desired state machine that renders its activity in the blockchain.</p>
<p>A bag of coffee beans gets a <code>Program</code>-owned <code>Account</code> when it is harvested. Each step in the chain — the roaster, the distributor, the retailer — calls the <code>Program</code> to transfer custody. The <code>Program</code> enforces the legal sequence of states: a bag cannot move from &ldquo;harvested&rdquo; directly to &ldquo;on the shelf&rdquo;; it has to pass through &ldquo;roasted&rdquo; and &ldquo;in transit.&rdquo; Only the current custodian recorded inside the <code>Account</code> can authorize the next step. The full history lives in the ledger, which is the changes file from earlier in this article. A consumer scanning the QR code on the bag at the supermarket reads not a marketing claim but a verifiable history.</p>
<p>Now the interesting part. A contamination is detected at a roaster&rsquo;s batch on March 14th. In a traditional system the company emails distributors, hopes retailers respond, prints recall notices, and waits weeks while affected product continues to be sold. With this model, a single <code>Transaction</code> queries every <code>Account</code> whose history includes that batch, calls the retail <code>Program</code> via CPI to flag every affected unit as recalled, and atomically updates all of them. <code>Sealevel</code> runs those updates in parallel because each affected <code>Account</code> is independent — no two of them touch the same memory.</p>
<p>The recall is not a workflow that has to be coordinated across companies. It is a <code>Transaction</code>. The same primitives that let you transfer a single ticket let you recall a million products in seconds, because the dependency graph is declared up front and the runtime knows what is independent of what.</p>
<p>Notice that none of these are novel ideas. They are traditional problems implemented with new primitives.</p>
<p>Primitives that do not require a coordinating intermediary at the center.</p>
<p>The pattern is the same across every example.</p>
<p>A <code>Program</code> defines the rules for a kind of thing — a ticket, a deed, a loyalty card, a bag of coffee. Accounts hold the individual instances. The runtime enforces who is allowed to change what. Transactions are the atomic, parallelizable units of change.</p>
<p>When that lands, the ergonomic shift lands with it: we stop asking <em><a href="https://blog.sebastiansastre.co/posts/model-the-reality-not-the-patterns">&ldquo;what does this object do?&rdquo;</a></em> and start asking <em>&ldquo;what are the valid transformations of this state, and who is authorized to invoke them?&rdquo;</em></p>
<p>Solana&rsquo;s answer is direct: divorce the state from the behavior, publish both, enforce custody at the infrastructure layer, and let parallelism emerge from the explicit dependency graph.</p>
<p>All deterministic, all independently verifiable by Math.</p>
<p>The room is not rearranged badly. It is rearranged so a million people can walk through it at once without bumping into each other — and the registrar, the box office, the loyalty desk, and the customs inspector are all the same kind of thing, expressed in code that anyone can read.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
