<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sealprotocol</title>
    <description>The latest articles on DEV Community by sealprotocol (@sealprotocol).</description>
    <link>https://dev.to/sealprotocol</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4199107%2F5ebe839f-3d37-4c0e-ba9e-0ae371231555.png</url>
      <title>DEV Community: sealprotocol</title>
      <link>https://dev.to/sealprotocol</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sealprotocol"/>
    <language>en</language>
    <item>
      <title>SEAL: one inscription per Bitcoin block height</title>
      <dc:creator>sealprotocol</dc:creator>
      <pubDate>Wed, 21 Oct 2026 20:40:02 +0000</pubDate>
      <link>https://dev.to/sealprotocol/seal-one-inscription-per-bitcoin-block-height-4a6a</link>
      <guid>https://dev.to/sealprotocol/seal-one-inscription-per-bitcoin-block-height-4a6a</guid>
      <description>&lt;p&gt;The body is text. The picture is not inscribed. It is drawn from the block named by that text. The first confirmed inscription of an exact text is the seal. A later copy of the same text is not a seal.&lt;/p&gt;

&lt;p&gt;The protocol does not set a price. It does not issue a token. It does not add a rule to Bitcoin consensus. It does not hold the seals. The holder is whoever holds that inscription.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://sealprotocol.art/0-seal/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsealprotocol.art%2Fog.png" height="420" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://sealprotocol.art/0-seal/" rel="noopener noreferrer" class="c-link"&gt;
            0.seal
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Only the first inscription is the seal. The picture is drawn from the block.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsealprotocol.art%2Ffavicon.svg" width="160" height="160"&gt;
          sealprotocol.art
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;0.seal, the seal of block 0.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The text&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The body is text/plain;charset=utf-8. It matches this and nothing else:&lt;/p&gt;

&lt;p&gt;^(0|[1–9][0–9]*).seal\n?$&lt;/p&gt;

&lt;p&gt;0.seal is the seal of block 0. 00.seal, 0.Seal, and 0.seal followed by a space are not seals. One trailing newline is allowed. A capital letter, a leading zero, or any other word is not a seal.&lt;/p&gt;

&lt;p&gt;The number is a block height that already exists when the inscription is confirmed. A text that names a height still ahead of the chain is not a seal. The full rule is the &lt;a href="https://github.com/sealprotocol/seal/blob/main/specification.md" rel="noopener noreferrer"&gt;specification&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First is first&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Index the inscriptions in confirmation order. For each exact text, keep the earliest one. That inscription is the seal of that height. Every later inscription of the same text is not a seal.&lt;/p&gt;

&lt;p&gt;There is no parent inscription and no child inscription. Copying this page does not create a seal. Only the text does.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvw0yh0qufotw2stsql9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvw0yh0qufotw2stsql9o.png" alt="[0.seal](https://ordinals.com/inscription/d4f7d96eb1d3ecc621c1d000f0be451d220bdee29921f6d799adb61b86c8e369i0). The picture is drawn from block 0. It is not stored in the inscription." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The picture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The picture belongs to the first inscription only. A later copy does not receive it. The inscription stays text. A wallet that follows the rule keeps the earliest inscription and draws the picture from the block: the block hash, the timestamp, the transaction count, and the height. The same drawing is &lt;a href="https://github.com/sealprotocol/seal/blob/main/js/glyph.js" rel="noopener noreferrer"&gt;glyphSvg&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The squares are the last 16 hexadecimal characters of the block hash. They fill the left five columns of a 9 by 9 grid, 45 bits. The right half is the mirror and adds none. There are 2⁴⁵ figures, 35184372088832. Each figure is one of them. That count is the same for every seal. The rule gives no rank and no score.&lt;/p&gt;

&lt;p&gt;The orange arc is the minute of the block inside its hour. It starts at the top. The vertical line is the transaction count, from 1 to 7000. The circles follow the first five subsidy eras, the early halvings. Block 0 has five. Each of those halvings removes one. From height 840000 on, only one circle remains.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwwc0hqer92ytty48x7rn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwwc0hqer92ytty48x7rn.png" alt="The same rule, five heights. Each early halving removes one circle." width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ordinals.com/inscription/f274b5c09da295913c0c5186fde3ce5ae7429e82c67793e00f5fdaf3ee139f5ei0" rel="noopener noreferrer"&gt;210000.seal&lt;/a&gt; still has four circles. &lt;a href="https://ordinals.com/inscription/fb4f7e346502e1d8994986f44a52750eb892b30eed63dd1fbbb1d8bec866ec53i0" rel="noopener noreferrer"&gt;840000.seal&lt;/a&gt; has one. Both texts are seals only because each was the first confirmed inscription of that exact text.&lt;/p&gt;

&lt;p&gt;The same arrangement is used by Bitmap. The file is text, and the picture is computed. {height}.bitmap is the ground of that block. {height}.seal is its crest. An application that reads both may show the seal on that district when one wallet holds the two first inscriptions. Building stays with Bitmap. Neither protocol requires the pair.&lt;/p&gt;

&lt;p&gt;For each seal, keep the inscription id, the height, and the confirmation order that made it first. A second inscription of the same text gets no seal. Two implementations that follow the rule keep the same first inscription and draw the same picture.&lt;/p&gt;

&lt;p&gt;The site is &lt;a href="https://sealprotocol.art/url" rel="noopener noreferrer"&gt;sealprotocol.art&lt;/a&gt;. &lt;a href="https://sealprotocol.art/how/" rel="noopener noreferrer"&gt;How a .seal works&lt;/a&gt; is the same rule, in short. The &lt;a href="https://github.com/sealprotocol/seal/blob/main/specification.md" rel="noopener noreferrer"&gt;specification&lt;/a&gt; and the reference drawing are published so anyone can implement them.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>ordinals</category>
      <category>bitmap</category>
    </item>
  </channel>
</rss>
