Skip to main content
Asuka v0.2Proof-Carrying ContractsContributors Welcome

Ora Asuka v0.2

Asuka v0.2 - Proof-carrying Smart Contracts for EVM

Smart contract language and compiler with explicit regions, first-class Result values, SMT verification reports, and an inspectable Ora MLIR to Sensei-IR pipeline.

Ora Logo
Pipeline
Tokens → AST → Typed AST → Ora MLIR → Sensei-IR → EVM
Regions and effects are explicit
Refinements become guards or proofs
Result and ADT carriers stay explicit
SMT reports explain proof trust

Focus Areas

Practical docs and research artifacts, side by side.

Language

  • Region-aware types and effects
  • Refinement types and Result/error unions
  • Unified ADTs and exhaustive matching
Language Basics

Compiler

  • Ora MLIR lowering and verification ops
  • Sensei-IR backend integration
  • MLIR optimization, CFG, metrics, and Z3
Field Guide

Research

  • Type system spec v0.11 PDF
  • Comptime, SMT, and proof trust boundaries
  • Refinement strategy and guard semantics
Snapshot

Ora in Practice

Explicit errors, verification clauses, and predictable behavior.

error InsufficientBalance(required: u256, available: u256);

contract Vault {
    storage var balances: map<NonZeroAddress, u256>;

    pub fn withdraw(amount: MinValue<u256, 1>)
        -> Result<u256, InsufficientBalance>
        requires balances[std.msg.sender()] >= amount
        ensures_ok(balances[std.msg.sender()] == old(balances[std.msg.sender()]) - amount)
    {
        let sender: NonZeroAddress = std.msg.sender();
        let current: u256 = balances[sender];
        if (current < amount) {
            return Err(InsufficientBalance(amount, current));
        }
        balances[sender] -= amount;
        return Ok(balances[sender]);
    }
}

Research Backbone

Formal specs, implementation baselines, and proof-boundary docs are linked directly to source artifacts.

Join the Development

Focused contributions: tests, docs, and compiler work.

🐛 Report Issues

Found a bug or have a feature request?

Open an Issue →

📝 Improve Docs

Help us keep docs aligned with compiler reality.

Contributing Guide →

💬 Discuss

Share ideas and ask questions.

Join Discussion →