Skip to content
not activeLanternSeaCoin is a non-active coin. There is no mainnet, no token sale, no exchange listing, and nothing to buy.

lsc.kil.ls / LSC

LanternSea­Coin

A stable-node ledger with offline-redeemable stamps, three physical carriers (NFC tokens, magnetic stripe vouchers and chip cards) and a chain-native clock. Specified in a reference paper and three RFCs, written as RPython reference code.

Status
Non-active coin
Specification
Reference Paper 2.0 + 3 RFCs
Code
RPython (PyPy2 toolchain)
Year
2026
Click the coin to flip it · AI-generated image (Grok Imagine)
24
LSC nodes
60 s
Block interval
2 MiB
Max block
16 of 24
Finality
60 blocks
Checkpoint
50 LSC
Block reward
2.1M blocks
Halving
≈ 210M LSC
Supply

Architecture · Reference Paper §0

Nine ideas, one ledger

Not an open miner race: a small, known cohort of producers, a segmented block body and a clock that never trusts a wall clock after genesis. There is deliberately no privacy layer. Sender, receiver and amount are plainly attributable on-chain.

  1. 01§1

    Stable node set

    A fixed cohort of 24 identified LSC nodes instead of an open miner race. At most 7 may act Byzantine.

  2. Segmented block data

    Blocks are many small, typed segments. LIGHT_PASS runs ChaCha20, HEAVY_PASS Argon2id. No compression, no reconstruction.

  3. 03§4

    Blink topology

    A quarter of each block carries aggregated latency probes: enough to spot a dark node, not a targeting map.

  4. 04§5

    Stamps

    Non-transferable claims baked into a coin's own definition. Claiming one produces a movable coin in a wallet.

  5. Chain-native clock

    Ten signed UTC samples once, then time is threaded from chain structure. Changing the formula needs all 24 nodes.

  6. Slots, fork choice, finality

    ECVRF (RFC 9381) picks the producer, a total order picks the chain, a 16-of-24 checkpoint makes it final.

  7. Auxiliary proof of work

    Small micro-proofs (NeoScrypt, RandomX, Equihash) split the block reward by proven work. Rewards mature for three hours.

  8. Banknote-inspired layers

    Fourteen independent features on three verification tiers, modelled on the security architecture of the Lesotho loti.

  9. Versioned series

    New features arrive as soft forks: new segment types, activation heights and a ParameterRegistry.

Two-layer coin economy · §5

Stamps travel with the coin

A stamp is not a snapshot stored elsewhere. It is minted into the coin's own definition: a fixed, non-transferable claim, redeemable once inside a window and checked against the OTP chain.
  • Non-movable until claimed

    Stamp-only coins live at the issuance layer. Claiming one produces a movable coin in a wallet, and wallets only ever hold movable coins.

  • Mining maturity is a stamp

    Block rewards are minted held for three chain-time hours and unlock on the next full hour. No separate contract system.

  • Carriers make stamps portable

    An NFC token, a stripe voucher or a chip card refers to a stamp. Each carrier only authorizes a claim; the ledger settles it once.

Pewter NFC token with lantern relief and an etched antenna coil
NFC token, RFC-001 · AI-generated image (Grok Imagine)

Redemption · Reference Paper §18

Two phases, three carriers

Every carrier redeems a stamp the same way. The offline phase creates and persists a locally verifiable claim request. The online phase reconciles it and settles it exactly once against the canonical ledger.
An offline NFC redeem is a locally persisted claim request; only canonical online reconciliation can establish ledger finality.
RFC-001 §20
Comparison of the three redemption carriers
CarrierOffline?Value limitCopying and clonesSpec
NFC tokenYes, as a pending request100 LSC per token, secure element above 50Copyable; replay table and idempotent settlementRFC-001
Magnetic stripe voucherNo, online onlyFace value ≤ ε_M (1 LSC without PIN)Fully copyable; second attempt is clone evidenceRFC-002
Chip cardYes, within card-enforced creditU_max 500 LSC, PIN from 20 LSCKey never leaves card; duplicate counter is evidenceRFC-003

01 / 04

RFC-001 §7 · no network needed

Offline redeem with an NFC token

Tap a token on a device with no connection. The device checks what it can check on its own, then stores a signed claim request. It never pretends the coin has moved, and it never reports success if the write to its encrypted store failed.

Simulated redeem

DECODED

Tap token

magic=LSCNFC version=1 network=lsc-main token_id=7f3a… stamp_id=c21e…

RFC-001 §7 Offline Redeem
  1. 1

    Read and decode the token

    The LSCNFC payload is decoded as strict TLV. A wrong magic, an unknown version, another network or any non-canonical byte is rejected, never repaired.

    token = NFCToken.decode(raw)
  2. 2

    Verify without a network

    Issuer signature, claim window against the local chain index, OTP checkpoint format, revocation list and snapshot reference above 50 LSC.

    token.verify(network_id, chain_index)
  3. 3

    Apply the offline policy

    Above 50 LSC a secure element is mandatory (E_SE_REQUIRED). Above 100 LSC per token the request is refused (E_OFFLINE_LIMIT).

  4. 4

    Check the local replay table

    A token already used on this device is refused before anything is signed. A burned one-time tag gives E_TOKEN_CONSUMED.

  5. 5

    Sign and persist the request

    request_id = H(network ‖ token ‖ stamp ‖ redeemer ‖ nonce). The request is written atomically to the encrypted store before the device reports anything.

    store.put(request) → PENDING_ONLINE

What the device can report

PENDING_ONLINE
Stored and queued for settlement. Not money yet.
LOCALLY_REJECTED
Decoding, signature, network, revocation or replay check failed.
EXPIRED_LOCALLY
The local chain index is outside the claim window.
SYNC_REQUIRED
The device is too far behind to judge the token.

02 / 04

RFC-001 §8 · against the canonical ledger

Online redeem and settlement

When a request reaches the network, the settlement service checks it again from scratch, claims the stamp on the real ledger and releases a movable coin. NFC requests, card requests and stripe vouchers all end here.

  • Idempotent on request_id: no double mint, no double claim.
  • Drift is judged in blocks against chain_time, never against a device clock.
  • A cloned tag can only produce a second request, never a second coin.
RFC-001 §8 Online Redeem
  1. 1

    Answer replays first

    A request_id that already settled returns the original response. The same request_id with a different payload is E_REQUEST_REPLAY.

    settled[request_id]
  2. 2

    Re-verify everything

    The service trusts nothing the device decided: request signature, token, network, issuer key and that the request matches the issued token.

  3. 3

    Bound the drift

    The device's chain context must lie within 5 blocks of the canonical ledger, otherwise the request stays PENDING.

    |local_index − canonical_index| ≤ 5
  4. 4

    Claim and transfer atomically

    The stamp moves CLAIMABLE → CLAIMED and a multi-output transfer pays the beneficiary and the fee collector. Any failure rolls back exactly.

    claim_stamp() + apply_transfer()

What the ledger answers

ACCEPTED
Stamp claimed, movable coin released to the beneficiary.
PENDING
Not yet mature, or the device drifted too far. Retry later.
ALREADY_CLAIMED
Another request claimed this stamp first.
REJECTED
Signature, network, revocation or ledger conflict.

03 / 04

RFC-002 · online only

Magnetic stripe vouchers

A stripe is static and fully copyable, so RFC-002 does not pretend it is secure. It bounds the damage instead: a 128-bit secret on the stripe, only a commitment in the register, one online redemption, and a face value no larger than the loss the issuer accepts.

A voucher is not a payment card and never touches payment networks.

ISSUEDACTIVEREDEEMED· LOCKED, EXPIRED, REVOKED
RFC-002 Magnetic Stripe Voucher Extension
  1. 1

    Read the raw track

    Track 1 carries the 128-bit voucher secret in Base32 with four check characters. It is deliberately not a bank-card layout, and the terminal never logs the secret.

    %F LSC1 ^ m ^ K(26) ^ X(4) ?
  2. 2

    Send a signed request

    The registered terminal signs version, network, its strictly increasing counter, the secret, payout address and an 8-byte nonce. TLS on top.

    request_id = H(net, C, terminal_id, nonce)
  3. 3

    Look up the commitment

    The register stores only C = H(DOM_CL, k, issuer_id), never k. A leaked register cannot redeem anything.

  4. 4

    Consume in one transaction

    State, validity and optional PIN are checked, then the voucher is set to REDEEMED and the payout is queued. The payout retries until it is in a block.

Value limit and exposure (§8.4, §10)

Value limit
v_M ≤ ε_M / p_clone, with p_clone = 1
Without PIN
at most 1 LSC (ε_M = 1 LSC)
Batch exposure
n vouchers lose at most n · v_M
Clone signal
second attempt → E_VOUCHER_CONSUMED

04 / 04

RFC-003 · offline within card credit

Chip card applet

The card holds no coins. It is a secure element that authorizes requests: a non-exportable Ed25519 key, a counter that can never repeat, an offline credit limit it enforces itself, and an optional PIN. A clone shows up as two requests with one counter, and its damage is bounded by c · (U_max − u₀).

Command set (§8.1)

00 A4SELECTAID F0 4C 53 43 01
80 10GET STATEpk, counter, credit, limit
00 20VERIFYPIN block
80 40SIGN REQUESTdigest + amount
80 50RESET CREDITservice-signed
80 52UNBLOCK PINservice-signed
RFC-003 Chip Card Extension
  1. 1

    Compute the request digest

    The terminal reads the NFC token or a QR code and hashes what the card will authorize: network, token, stamp, redeemer and amount.

    D = H(DOM_REQ, net, token_id, stamp_id, redeemer, amount)
  2. 2

    PIN on a certified PED

    From 20 LSC the card requires a successful VERIFY in the same session. Three wrong PINs block it until the service unblocks it.

  3. 3

    SIGN REQUEST, counter first

    The card checks state, the 100 LSC token limit and its credit, then commits counter and credit atomically to NVM. Only after that does the signature leave the card.

    80 40 00 00 D(32) amount(8) → c′(8) sig(64)
  4. 4

    Persist as an RFC-001 request

    The attestation reference becomes the nonce. From here the request travels the same way as an NFC redemption.

    nonce = se:<card_id>:<c′>
  5. 5

    Reconcile and reset credit

    The service checks the certificate, the attestation and that the counter is strictly greater, then signs a RESET CREDIT for the settled amount.

    80 50 00 00 r′ = r_d + 1

Chain-native clock · §6–§7

Time from the chain, not the device

Blocks 1–10 carry signed UTC from the first ten nodes. Their median becomes the genesis anchor G. After that every height has a fixed time, t(h) = G + 60·h + Ah, with a drift adjustment of at most 5 s per 10 blocks.

Simulated height
—
chain_time
—
Interval
60 s

Demonstration ticker · not a live network

Library

Papers and RFCs

One reference paper for the protocol, one RFC per physical carrier. Read them here or take them along as PDF or Markdown.
All papers

Paper 2.0

LanternSeaCoin Reference Paper 2.0

The complete protocol: stable nodes, segments, stamps, chain clock, fork choice and finality, mining, redemption, the terminal layer and the banknote-inspired security layers.

5 October 2026 · 55 pages · English · Draft

RFC-001

RFC-001: NFC Extension

NFC tokens, offline redeem requests, online settlement and ledger snapshots. Profile v1 fixes encodings, the secure-element profile and key records.

6 October 2026 · 28 pages · English · Draft

Primitive inventory · §14.1.3

Reviewed primitives, named assembly

The paper pins hashing, signatures, transforms and wallets to published standards. What still needs review is how they are assembled, not invented ciphers.
  • BLAKE2b-256

    RFC 7693

    Block, body and request hashes

  • Ed25519

    RFC 8032

    Every signature, domain-separated

  • ECVRF

    RFC 9381

    Slot lottery and leader selection

  • ChaCha20

    RFC 8439

    LIGHT_PASS, storage, terminal channel

  • Argon2id

    RFC 9106

    HEAVY_PASS, 64 MiB, 3 passes

  • SHA-256

    FIPS 180-4

    Dual-hash serial, wallet checksums

  • BIP-39 / SLIP-0010

    BIP-39

    Seed and key derivation

  • Bech32

    BIP-173

    Addresses, prefix lsc

Source

Read the code

The reference implementation in pure RPython: crypto stack, ledger, fork choice, peer discovery, JSON-RPC and both styles of the RFC-001 implementation. Meant to be translated with the PyPy2 toolchain into standalone binaries.

lscoin-rpython.zip (206 KB)

lscoin-rpython/

lscoin/consensus/
Ledger, chain_time, scheduling, checkpoints, governance
lscoin/crypto/
BLAKE2b, Ed25519, ChaCha20, Argon2id, ECVRF, BIP-39
lscoin/nfc/
RFC-001 twice: functional.py and classes.py
lscoin/network/
Peers, handshake, Blink probes, local-first discovery
lscoin/rpc/
bitcoind-style JSON-RPC server
lscoin/node, miner, client/
The three programs, incl. offline resync
pypy_goal_targets/
RPython entry points: node, miner, client, NFC
# translate into standalone binaries
pypy rpython/bin/rpython -O2   targetnode.py
pypy rpython/bin/rpython -Ojit targetminer.py
pypy rpython/bin/rpython -O2   targetnfcclasses.py

EU AI Act, Art. 50

Made with AI

This project was created with generative AI. Papers, RFCs, source code, this site and its images were produced by AI systems and directed, reviewed and published by a person. AI-generated images are labelled where they appear.

Claude

by Anthropic

Wrote the Reference Paper 2.0, RFC-001 to RFC-003, the RPython reference code and this static site.

Grok

by xAI

Built the first version of this website and generated the coin and NFC token images (Grok Imagine).

Concept, direction and review: Florian

non-active coin

Conceptual design, not a product

LanternSeaCoin is an engineering thought experiment with reference code. It is not an active, deployed or audited cryptocurrency: there is no mainnet, no issued supply, no token sale and no exchange listing. Nothing on lsc.kil.ls is an offer to sell, a solicitation to buy, or financial advice. The empirical validation of Reference Paper §15.9 (internal testnet, independent review, public testnet, economic audit) has not been carried out.