Specification
Version: 1.0.0
Status: Draft
Last updated: 2026-02-07
1. Scope and Purpose
This document defines the canonical, deterministic mapping from a geodetic
location expressed as fixed-point latitude and longitude into a LocateTile
identifier (level, ix, iy).
This specification is normative for all Scintilla Locate proofs and verifications that rely on LocateTile as the ProofRegion execution format.
The goals of this specification are:
- Determinism across implementations
- Integer-only arithmetic (no floating point)
- Bounded and auditable execution cost
- Replayability and dispute resolution years after issuance
- Compatibility with zero-knowledge proof systems
2. Definitions
- LocateTile: A rectangular cell in geodetic latitude/longitude
coordinates, addressed by
(level, ix, iy). - level: Non-negative integer defining grid resolution.
- ix: Horizontal tile index (longitude axis).
- iy: Vertical tile index (latitude axis).
- SCALE: Fixed-point scaling factor applied to all geodetic inputs.
- celestial_model: Identifier specifying the geodetic reference model under which latitude and longitude are interpreted.
3. Canonical Identifier
A LocateTile identifier SHALL be represented textually as
lt:<level>:<ix>:<iy>
using lowercase ASCII, with decimal integers and colon (:) separators.
Alternative encodings (e.g. path-based or quadtree encodings) MAY be defined but MUST round-trip exactly to the canonical form.
4. Coordinate System and Celestial Model (Normative)
All geodetic coordinates used as inputs to the LocateTile mapping MUST be interpreted according to an explicitly specified celestial model.
The celestial_model value MUST be included in all proof transcripts,
region definitions, and verification contexts that rely on LocateTile
derivation.
Unsupported celestial models MUST be rejected by verifiers.
4.1 Supported Celestial Models (v1)
For Scintilla Locate v1, exactly one celestial model is supported:
celestial_model = "wgs84_ellipsoid"
No other values are permitted in this version.
4.2 Semantics of wgs84_ellipsoid
When celestial_model = "wgs84_ellipsoid", the following conventions are
mandatory:
- Reference body: Earth
- Reference datum: WGS‑84 reference ellipsoid
- Latitude definition: Geodetic latitude on the WGS‑84 ellipsoid
- Longitude definition: Angle measured from the Greenwich prime meridian
- Longitude sign convention: Positive east, negative west
- Angular units: Decimal degrees
- Latitude range:
[-90°, +90°](inclusive) - Longitude range:
[-180°, +180°)(half-open)
All latitude and longitude values provided to the LocateTile mapping algorithm MUST conform to these definitions prior to fixed-point encoding.
Altitude is ignored in this version.
5. Fixed-Point Representation
All geodetic values are represented as signed integers:
lat_fp = latitude_degrees × SCALE
lon_fp = longitude_degrees × SCALE
5.1 Fixed Constants
Normative constants for version 1:
SCALE = 2^32
LAT_MIN = -90 × SCALE
LAT_MAX = +90 × SCALE
LON_MIN = -180 × SCALE
LON_MAX = +180 × SCALE (exclusive)
5.2 Validity Constraints
LAT_MIN ≤ lat_fp ≤ LAT_MAXLON_MIN ≤ lon_fp < LON_MAX
Inputs violating these constraints MUST be rejected.
6. Tile Grid Definition
For a given level:
NX = 2^level (number of longitude tiles)
NY = 2^level (number of latitude tiles)
Global spans:
- Longitude span:
360° - Latitude span:
180°
7. Canonical Mapping Algorithm
7.1 Longitude Index (ix)
Define:
A_x = (lon_fp + 180 × SCALE) × NX
D_x = 360 × SCALE
Compute (ix, r_x) such that:
A_x = ix × D_x + r_x
0 ≤ r_x < D_x
0 ≤ ix < NX
ix is the longitude tile index.
7.2 Latitude Index (iy)
Define:
A_y = (lat_fp + 90 × SCALE) × NY
D_y = 180 × SCALE
Compute provisional (iy_raw, r_y) such that:
A_y = iy_raw × D_y + r_y
0 ≤ r_y < D_y
0 ≤ iy_raw ≤ NY
7.3 North Pole Handling
If:
lat_fp == +90 × SCALE
then:
iy = NY - 1
Else:
iy = iy_raw
7.4 Final Output
The LocateTile is:
LocateTile(level, ix, iy)
with:
0 ≤ ix < NX
0 ≤ iy < NY
8. Boundary Semantics
- Longitude is half-open:
[-180°, +180°) - Latitude includes the poles:
[-90°, +90°] - Tile boundaries are resolved using floor semantics
- Points exactly on a tile edge map to the tile with the lower index
- The North Pole maps deterministically to the topmost tile row
These rules are mandatory to prevent ambiguity and verifier disagreement.
9. ZK Constraint Formulation (Normative)
Implementations inside zero-knowledge circuits MUST:
- Enforce quotient-remainder constraints for all divisions
- Enforce range constraints on all indices and remainders
- Use integer arithmetic only
- Explicitly handle the latitude
+90°special case
Floating-point arithmetic is strictly prohibited.
10. Test Vector Requirements
A conforming implementation MUST be validated against a published test corpus including:
- Randomly sampled locations
- Dense sampling near:
- Longitude ±180°
- Latitude ±90°
- Tile boundaries
- Multiple resolution levels
Test vectors MUST include fixed-point inputs and expected (ix, iy) outputs.
11. Versioning and Compatibility
Any change to:
- SCALE
- celestial model semantics
- boundary semantics
- grid dimensions
- arithmetic rules
MUST result in a new tile_derivation_version.
Verifiers MUST reject proofs using unsupported versions.
12. Security Considerations
This mapping:
- Prevents proof splicing by binding tile derivation to location witnesses
- Enables deterministic replay and dispute verification
- Avoids floating-point nondeterminism and platform variance
All arithmetic and constraints are fully auditable.
13. References
- WGS‑84 Coordinate Reference System
- Scintilla Locate Protocol Specification