メインコンテンツまでスキップ

Core Denomination Units

Status: Draft

Informational specification describing Core's denomination units, canonical source-of-truth file, and normative client behaviors for display, parsing, and conversion between units.

Abstract

This Informational CIP documents the standard denomination units for the Core Blockchain and defines normative behaviors for clients when presenting amounts, parsing user input, and calculating fees. The canonical registry of units is maintained in a machine-readable JSON file.

Motivation

Divergent unit handling leads to UX confusion, rounding drift, and inconsistent fee displays across wallets, explorers, and SDKs. This CIP provides a single point of reference and prescribes minimal client rules so that amounts render, parse, and convert consistently across the Core ecosystem.

Specification

Denomination Units table

namealiasunitsymbolSIvalue
oreoreø🔷atto (a)1E+00
wavfecore〰️femto (f)1E+03
gravpicorepico (p)1E+06
nuclenacore✴️nano (n)1E+09
atomμcore⚛️micro (μ)1E+12
molimicore❇️mili (m)1E+15
corecore🟢️️1E+18
aerkicore🌀️kilo (k)1E+21
orbMecore☄️mega (M)1E+24
planoGicore🪐️giga (G)1E+27
teraTecore🌐️tera (T)1E+30
solaPecore💫️peta (P)1E+33
galxExcoreǤ✨️exa (E)1E+36
clusterZecore💠️zetta (Z)1E+39
supermatterYocore🔱yotta (Y)1E+42

JSON structure (schema)

At a high level, the registry enumerates units from largest display units to the smallest base unit. Each entry specifies its name, symbol, exponent to the base, and any aliases suitable for parsing.

The following schema is illustrative; implementers MUST follow the fields and semantics of the canonical JSON file.

/**
* Denomination unit entry (example shape).
*
* - `name` : unit name (e.g., "moli")
* - `alias` : SI-style prefixed base unit (e.g., "micore")
* - `unit` : Unicode symbol for the unit (e.g., "₥")
* - `symbol`: emoji symbol (e.g., "❇️")
* - `si` : tuple [full SI name, short SI symbol] (e.g., ["mili","m"])
* - `value` : power-of-ten multiplier relative to the base unit (e.g., 1e15)
*/
export interface DenominationUnit {
name: string;
alias: string;
unit: string; // Unicode glyph
symbol: string; // Emoji
si: [name: string, symbol: string];
value: number; // e.g., 1e15
}

Rationale

  • A single, machine-readable registry prevents drift and hard-coded unit tables across clients.
  • Defining the units in a single file allows the ecosystem to evolve denominations without protocol forks.
  • Normative but minimal client rules (base for accounting, display for UX, strict parsing, precise integer conversions) balance safety and usability.

Backwards Compatibility

This CIP is non-breaking. It does not modify Core consensus or transaction formats. Existing applications may continue with embedded unit tables; however, they are RECOMMENDED to migrate to the canonical registry to ensure consistency across the ecosystem.

Security Considerations

  • Phishing/typos: Ambiguous or deceptive aliases MUST NOT be accepted in parsers. Wallets SHOULD present the symbol and code prominently.
  • Rounding drift: Always convert via the base unit and avoid floating-point arithmetic to prevent silent precision loss.
  • Staleness: Pin and periodically refresh the registry; stale unit tables can lead to inconsistent UX and fee suggestions.

References

Copyright and related rights waived via CC0.