How a .seal works
Only the first inscription is valid. The rule is first is first. The text names a block height. A later copy of the same text is not a seal. The picture is computed from the block named by that first text.
The text
The body is UTF-8. It matches this and nothing else:
^(0|[1-9][0-9]*)\.seal\n?$
0.seal is the text of block 0. 00.seal, 0.Seal, and 0.seal are not seals. One trailing newline is allowed. A space, a capital letter, a leading zero, or any other word is not a seal.
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 first inscription
This is the rule. Only the first inscription of an exact text is valid. Inscriptions are taken in confirmation order. For each exact text, the earliest inscription is the seal of that height. A later copy of the same text is not a seal.
There is no parent inscription and no child inscription. One inscription has one body, and that body is the text. Copying this page does not create a seal. Only the text does.
The picture
The picture belongs to the first inscription only. A later copy of the same text does not receive it. The picture is not stored in the inscription. It is drawn from the block named by that text: the block hash, the timestamp, the number of transactions, and the height.
The canvas is 160 by 160. The background is #171b22.
- The squares are the last 16 hexadecimal characters of the block hash, not the leading zeros of the proof of work. Each character is four bits, high bit first. The bits fill the left five columns of a 9 by 9 grid, row by row. A bit of 1 lights that square and its mirror on the right. Each square has side 10 and is centered at
34 + x × 14,34 + y × 14, in#f7931a. - The orange arc is the minute of the block inside its hour,
(timestamp % 3600) / 3600. It starts at the top and runs clockwise on the outer circle, radius 72, stroke#f7931a, width 3. A minute near zero still leaves a short mark, 0.04 of the circle. - The vertical line is the transaction count, clamped from 1 to 7000. It passes through the center, stroke
#c9a227, width 2. A block with one transaction keeps a short line. - The outer circle is always present: center
80,80, radius 72, stroke#3a2a16, width 2. The inner rings follow the first five subsidy eras, the early halvings.era = floor(height / 210000)andrings = max(1, 5 - era). The inner circles are#c9a227, width 1.5, radii 60, 50, 40 and 30 from the outside inward. Block 0 has five circles. Each of those early halvings removes one. From height 840000 on, through every later halving, only the outer circle remains.
The picture has no fee mark. Fees belong to the block list, not to the face of the seal.
What is kept
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.
The inscription stays text. An explorer shows the file as it was inscribed. A wallet that follows the rule keeps the earliest inscription and draws the picture from the block. The same arrangement is used by Bitmap: the file is text, and the picture is computed.
The rule an indexer follows is the specification. The drawing in the page is the same rule. The specification and the reference drawing are published so anyone can implement them. Two implementations that follow the rule keep the same first inscription and draw the same picture.
This site
The front page reads recent blocks from the public block feed. A block that has not been mined has no hash, so it has no picture. Its card shows the fees waiting in the mempool. When the block is found, it crosses the line and the picture appears.
The inscribed list is the first inscription of each text. Any height that already exists can be drawn from its block, whether or not a seal of that text exists yet. The picture is a reading of the block. The seal is only the first inscription of its text.