Go to file
alessandrokonrad fc92c40c3c
fixed typo
2022-09-14 18:52:05 -04:00
.github/workflows chore: change nix job name 2022-08-08 15:00:30 -04:00
assets chore: add more assets 2022-09-06 20:14:27 -04:00
crates fixed typo 2022-09-14 18:52:05 -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 added full evaluation; still fails because hashes mismatch regarding pallas 2022-09-14 18:52:04 -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: change nix job name 2022-08-08 15:00:30 -04:00
add_integers.uplc eval with inputs (#56) 2022-09-08 18:20:52 -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
thing.tx feat: print some info 2022-09-14 18:50:11 -04:00
thing_resolved_txins.tx ouput (#51) 2022-09-14 18:51:38 -04:00

README.md

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