Skip to main content

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_MAX
  • LON_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