Skip to content

oralang/.github

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 

Repository files navigation

🌐 Ora β€” A System Language for Smart Contracts

Ora is a new language for the EVM, engineered from first principles.

  • 🧠 Built for precision, predictability, and control
  • ⚑ Driven by the core belief: comptime > runtime
  • πŸ›‘οΈ Designed to prevent entire classes of bugs through semantic rigor
  • ✨ Inspired by system languages like Zig and Rust β€” not by inheritance trees

πŸ”§ Why Ora?

Modern smart contract languages try to abstract too much β€” hiding costs, mutability, and storage behavior behind object-oriented conventions.

Ora takes the opposite approach:

We believe developers should see what’s happening, reason about it, and control it at the lowest level necessary.

Ora is not object-oriented. It doesn't come from a traditional academic compiler pipeline. It was born from real engineering pain in production smart contracts β€” multi-call reentrancy, accidental state corruption, gas inefficiency, and fragile formal tooling.


🧭 What Makes Ora Different?

βœ… Comptime > Runtime

Ora tries to fail as early as possible β€” during compilation.

  • Mutation guards (@lock, @unlock) verified statically
  • Path-based access analysis
  • Region tracking for memory/storage/tstore
  • Formal assertions (requires, ensures, invariant) with static validation
  • Type inference & validation at compile time, not in the EVM

🧠 Precise Semantics

No hidden memory regions. No "magical" fallback. Every variable in Ora has:

Region Mutability Lifetime
stack mutable local
memory mutable per-transaction
storage mutable persistent
tstore mutable transient (tx only)

This gives you deterministic understanding of state, and makes it easier to reason about security boundaries.


πŸ§ͺ Example: Safe Transfer with Mutation Lock

pub fn transfer(to: address, amount: u256) {
    @lock(balances[to]);

    balances[msg.sender] -= amount;
    balances[to] += amount;

    log Transfer(msg.sender, to, amount);
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published