Go to file
John Rinehart 0e5d25b019 feat: add a nix flake
nix flake init --template github:nixos/templates#rust
2022-08-07 21:07:53 -04:00
.github/workflows feat: add a nix flake 2022-08-07 21:07:53 -04:00
assets feat: add logo 2022-07-31 11:26:44 -04:00
crates Release 0.0.7 2022-08-05 13:15:26 -04:00
.envrc feat: add a nix flake 2022-08-07 21:07:53 -04:00
.gitignore Refactor tests, move them into integ folder 2022-06-26 19:03:17 -04:00
Cargo.lock Release 0.0.7 2022-08-05 13:15:26 -04:00
Cargo.toml Move program builder to uplc crate 2022-06-29 14:02:57 -04:00
LICENSE Create LICENSE 2022-06-14 18:47:40 -04:00
README.md chore: use max-height 2022-08-02 19:26:18 -04:00
add_integers.uplc flat encoding for list and pairs 2022-08-05 00:38:41 -04:00
default.nix feat: add a nix flake 2022-08-07 21:07:53 -04:00
flake.lock feat: add a nix flake 2022-08-07 21:07:53 -04:00
flake.nix feat: add a nix flake 2022-08-07 21:07:53 -04:00
shell.nix feat: add a nix flake 2022-08-07 21:07:53 -04:00

README.md

Aiken Aiken

Cardano smart contract language and toolchain

GitHub Crates.io GitHub Workflow Status

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