Specification v0.1 · open source · no token sale
Space R&D funding is normally accounted for in dollars spent and reports filed. OrbitKG accounts for it in specific mechanical energy actually delivered to a payload. That gives a unit nobody can fake, nobody can vote on, and nobody has to be asked about — it follows from two physical constants.
Every target — a suborbital hop, a tether catch point, GEO, an escape trajectory — is expressed as a ratio of specific energies and lands on one continuous axis. Measured from a sea-level equatorial pad that already carries the Earth's rotation, with inertial (ECI) velocities:
Δε(h, v) = μ/R − μ/(R + h) + v²/2 − V_ROT²/2 μ = 3.986004418 × 10¹⁴ m³/s² Earth gravitational parameter R = 6 371 000 m mean radius V_ROT = 465 m/s equatorial rotation, credited to the vehicle
The scale is public pure. It reads no external state, so there is no oracle to bribe, stall or corrupt.
Nobody votes on how much a kilogram to orbit is worth in OKG. μ and R are not parameters.
Anyone can recompute every number on this page with a calculator, then diff it against the deployed contract.
Generated by the contract itself, not typed in by hand — reproduce it with npx hardhat run scripts/energy-table.js.
| Target | Δε, MJ/kg | OKG per kg | Share of the way to orbit |
|---|---|---|---|
| 30 km, ballistic | 0.293 | 0.00888 | 0.9% |
| 100 km (Kármán line), ballistic | 0.967 | 0.02928 | 2.9% |
| 100 km at 1 km/s | 1.359 | 0.04115 | 4.1% |
| 100 km at 3 km/s (HASTOL class) | 5.359 | 0.16228 | 16.2% |
| 150 km at 5 km/s | 13.831 | 0.41884 | 41.9% |
| LEO 400 km, circular | 33.022 | 1.00000 | 100.0% |
| LEO 800 km | 34.664 | 1.04972 | 105.0% |
| MEO 20 200 km (GPS) | 54.956 | 1.66421 | 166.4% |
| GEO 35 786 km | 57.729 | 1.74819 | 174.8% |
| Escape (11 186 m/s) | 62.455 | 1.89130 | 189.1% |
The gap between "reached the Kármán line" and "reached orbit" is 34× in energy. The scale makes it impossible to present the first as the second.
Lifting 30 km costs under 1% of reaching orbit. A mechanism that adds kilometres of altitude solves almost nothing; a mechanism that adds kilometres per second solves almost everything.
That factor is not a reason to peg anything to it. It is the subject matter of the protocol: for every kilogram there is roughly $2 700 lying between the physical floor and the market price, and any team that closes part of that gap on its own segment creates measurable value.
The scale must not be used as a price peg. It measures physics. Money lives separately and is never mixed into the scale contract.
Each segment has its own market level and its own physical floor. splitAtHandoff() computes how much energy is left for the boost stage when the carrier only reaches a handoff point:
| Carrier delivers to | Carrier share | Boost stage share |
|---|---|---|
| 100 km at 1 km/s | 4.1% | 95.9% |
| 100 km at 3 km/s | 16.2% | 83.8% |
| 150 km at 5 km/s | 41.9% | 58.1% |
This is why tether and electromagnetic schemes are interesting: they absorb the larger part of the total orbital energy, and they may restore it slowly from sunlight. A tether works like a flywheel — it accumulates cheap continuous energy and releases it in rare powerful impulses. A rocket cannot do that: its energy source is its propellant.
MilestoneRegistry pays for delivered energy, not for effort. The cost of a target in OKG is computed by the scale, never declared by the applicant.
fund() anyone contributes to the grant pool — IRREVERSIBLE
propose() any team declares a target (h, v, mass) + proposal CID + bond
approve() the DAO approves an amount and a deadline; funds are reserved
submitDelivery() the team submits a telemetry CID before the deadline
verify() a verifier enters the confirmed (h, v, mass) from telemetry
payout = grant × min(achieved, target) / target
propose() is open to any address. The founder's team walks the same path as everyone else: application, bond, public CID, independent verification, payment for confirmed work. There is no privileged route.
Neither approve(), verify() nor reject() can be called on your own application. This does not eliminate collusion between two addresses — no contract can — but it removes the one-party payout and leaves a trail in the events.
There is deliberately no withdraw, rescue, sweep or emergencyExit — not for the DAO, not for anyone. Funds leave by exactly one path: payment for a verified milestone. A test scans the ABI to enforce this.
Consequence for anyone who contributes: a contribution is irreversible by construction. A founder who puts their own money into the pool gets it back only as payment for confirmed work, in the general queue, with public proof.
As of specification v0.1, 10 August 2026.
There are no mainnet addresses, no token sale, no fundraising and no waiting list. The bonding-curve token economy that exists elsewhere in this repository (BondingCurveSale, POLManager, BuybackManager, LC) is not wired to this specification and is under separate review: as written, it directs funds toward defending a price rather than toward R&D.
OKG is a unit for measuring physical work, not a financial instrument.
The scale is physics. It states how much energy is required, and says nothing about what that costs or whether anyone will succeed.
The useful contribution here is not money. It is checking the numbers, and — if you build launch hardware — telling us where the unit breaks against reality.
git clone https://github.com/apbodrov/orbitkg npm install && npm test # 132 tests npx hardhat run scripts/energy-table.js # print the scale from the contract npx hardhat run scripts/demo-milestone.js # full milestone cycle on a local network