Cambrian

One precise language from specification to implementation

Cambrian is OrdoCode's core language for specification and development. It is not a product you buy or a language you write — it is the layer that keeps the specification you approve, the contract you run, and the proofs you receive describing the same thing.

Why Cambrian?

A smart contract project moves through several representations: business rules in plain language, a specification, Solidity code, a test suite, formal proofs. Every hand-off between them is a place where meaning can drift. Cambrian is a single declarative representation of contract behavior that every stage reads from, so the AI agents generating code and the prover establishing properties are working against one source, not five loosely related documents.

It is built for stateful semantics — the way a contract's storage changes across transactions — and for formal translation, so a property written once can be carried into a machine-checked mathematical proof without being re-stated by hand.

What Cambrian connects

BUSINESS RULES APPROVED SPEC CAMBRIAN DECLARATIVE · STATEFUL · TRANSLATABLE SOLIDITY CODE LEAN PROOFS

The specification you approve is transpiled into one Cambrian description. The code you deploy and the proofs you keep are both generated from it — not two documents someone has to keep in sync.

One source, two renderings

A Cambrian description is the single thing every stage reads from. The Solidity you deploy and the Lean the proof runs in are generated from it — not written separately and then kept in sync by hand.

vault.camcambrian · source
m_balance: U256 {
  in deposit(amount)  => m_balance + amount
  in withdraw(amount) => m_balance - amount
}

routes {
  deposit(amount: U256) => []
  withdraw(amount: U256)
    where (m_balance >= amount)
      : throw InsufficientBalance()
  => [emit Withdrawal(msg::sender, amount)]
}

property never_overdraws:
  always (m_balance >= 0)
Vault.solsolidity · generated
uint256 public balance;

function withdraw(uint256 amount) external {
  require(balance >= amount, "InsufficientBalance");
  balance -= amount;
  emit Withdrawal(msg.sender, amount);
}
Vault.leanlean · generated
theorem never_overdraws (s : State) :
    0 ≤ s.balance := by
  induction s using reachable.rec <;>
    simp_all [deposit, withdraw]
Good to know
  • You don't write or install Cambrian — OrdoCode uses it for you.
  • It doesn't replace Solidity — it produces Solidity.
  • One description renders the code and the proofs — so they can't drift apart.

Go deeper

Bring us your smart contract idea

You describe the product. Cambrian keeps the specification, the code, and the proofs aligned underneath it.

Apply for beta