Messages
QLYP signs canonical binary messages, not a loose description of a trade. One envelope, a handful of operations, one way to write each.
How do two programs, written separately, read the same bytes exactly the same way?
Every QLYP operation is a small binary message placed inside an ordinary Quantus transaction and signed with it. Binary by construction, unambiguous by validation: two correct implementations cannot read the same bytes two different ways.
Why it is built this way
Two readers must never disagree. If one program reads "send 250" and another reads "send 25", the ledger splits in two. So the format must allow exactly one reading.
Text formats allow many spellings. The same JSON object can be written with different key orders, spaces or number forms. Each spelling is different bytes, and signatures cover bytes.
So QLYP is canonical binary. Every field has a fixed order; integers have a fixed width and byte strings one canonical length prefix. A decoder must use every byte and re-encode to the identical message, or the message is invalid.
And every message says where it belongs. A name and version, the chain's genesis and your sequence number stop a message from being replayed on another network, under another version, or twice on the same one.
Byte by byte
- 01 / 05
It starts with a name and a version
Every QLYP message opens with the four bytes “QLYP” and a version byte. A remark that does not start this way is simply not a QLYP operation, and a future version cannot be mistaken for v1.
- 02 / 05
It names the chain
The next 32 bytes are the genesis hash of the network. A message signed for mainnet means nothing on a test network, and the reverse: it cannot be replayed on another chain.
- 03 / 05
It counts your operations
Eight bytes carry your account’s QLYP sequence, in little-endian order. Each accepted operation advances it by one, so the same message cannot be applied twice. A rejected operation does not advance it.
- 04 / 05
It says what to do
One tag byte selects the operation: 0 deploys a token, 1 mints, 2 transfers, 3 offers a lot to a named buyer. Tags 4 to 8 are reserved and rejected today.
- 05 / 05
Then the exact fields, nothing more
The fields follow in a fixed canonical layout, up to 1,024 bytes in total. Decoding must consume every byte, and re-encoding must give back the same bytes. There is one way to write each message.
The operations
| Tag | Operation | What it carries |
|---|---|---|
| 0 | Deploy | Symbol, decimals, maximum supply, per-mint limit, open or creator-only minting |
| 1 | Mint | The 40-byte asset ID and a positive amount |
| 2 | Transfer | Asset ID, amount and a 32-byte recipient |
| 3 | Offer | Asset, quantity, buyer, payout account, price, fee, fee account, expiry |
| 4–8 | Reserved | Rejected today; not a launchpad or AMM |
| 9 | Inscribe | Content type and content bytes, for Quarks |
| 13 | Fee rate | A new QTC-per-dollar rate and the block it applies from, posted by the fee operator |
| 14 | Fee admin | Cancel a pending rate, freeze the operator, or change a fee role |
| 15 | Reserved | Rejected today; held for a commit-then-reveal way to claim a symbol |
New operations, such as open listings and the bonding curve, use new tags that must be switched on explicitly at a published block. An indexer that does not know a tag rejects it; it never guesses.
Identity and limits
- An asset ID is its creator's 32-byte account ID followed by the 8-byte sequence used to create it. A symbol is a unique, readable label; the asset ID is what your wallet signs.
- Symbols use 1 to 12 uppercase letters or digits. Decimals range from 0 to 18.
- Amounts are whole numbers of base units, never floating point.
- The whole message is at most 1,024 bytes, envelope included.
Two counters, two jobs
Quantus keeps a nonce for your account, which stops a native transaction from being replayed. QLYP keeps its own sequence, which orders your accepted asset operations. They move differently: a rejected QLYP operation leaves the sequence where it was, even though the transaction that carried it used a nonce.