Skip to content

zypeh/aiken

 
 

Repository files navigation

Aiken Aiken

Cardano smart contract language and toolchain

Licence Crates.io Rust Build Nix Build


Install

For now you'll need rust installed, see rustup.

cargo install aiken

Usage

For now the command line application can only encode/decode Untyped Plutus Core to/from it's on chain format. See the roadmap below for a list of planned features and goals.

# help
aiken help

# compile an untyped plutus core program to flat
aiken uplc flat program.uplc

aiken uplc flat program.uplc --print

# output
00001011 00010110 00100001 01001000
00000101 10000001

aiken uplc flat program.uplc --out=something.flat

# decode an untyped plutus core program from flat
aiken uplc unflat program.flat

aiken uplc unflat program.flat --print

# output
(program
  11.22.33
  (con integer 11)
)

aiken uplc unflat program.flat --out=something.uplc

Roadmap

In general, the goal is to port everything we need for plutus to Rust. This will be needed if we ever want to build a full node in Rust. Since we will have these tools natively in Rust, we plan on building a new high level language for writing smart contracts on Cardano. These are generic milestones and the listed ordering is not necessariy the implementation order or full scope.

  • compile plutus core into it's on chain encoding
  • reverse the on chain encoding into plutus core
  • Plutus Core interpreter
  • create a higher level syntax with inspiration from
    • JS
    • ReasonML
    • Elm
    • Roc
    • Rust
    • Gleam
  • Language Server

Art Credit

We'd like to give a special thanks to @nkz for creating the logo and giving us the idea to name the project aiken.

Why Aiken?

The name comes from Howard Aiken, an American physicist and a pioneer in computing.

Resources

About

Cardano Smart Contracts

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.4%
  • Nix 0.6%