chore: update readme and book

This commit is contained in:
rvcas 2022-10-20 14:06:19 -04:00 committed by Lucas
parent 7ca276bad4
commit e67aa7b943
6 changed files with 91 additions and 68 deletions

View File

@ -18,73 +18,20 @@ For now you'll need rust installed, see [rustup](https://rustup.rs).
`cargo install aiken`
## Usage
## Docs
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.
```sh
# 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
```
For more information please see the [docs](https://txpipe.github.io/aiken).
## 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.
- [x] compile plutus core into it's on chain encoding
- [x] reverse the on chain encoding into plutus core
- [x] Plutus Core interpreter
- [x] create a higher level syntax with inspiration from
- JS
- ReasonML
- Elm
- Roc
- Rust
- Gleam
- [ ] Language Server
[see](https://txpipe.github.io/aiken/introduction.html#roadmap)
## Art Credit
We'd like to give a special thanks to [@nkz](https://twitter.com/nkzthecreator)
for creating the logo and giving us the idea to name the project aiken.
**Why Aiken?**
**Why the name Aiken?**
The name comes from [Howard Aiken](https://en.wikipedia.org/wiki/Howard_H._Aiken),
an American physicist and a pioneer in computing.
## Resources
- Encoding/Decoding https://github.com/input-output-hk/plutus/blob/master/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Core/Instance/Flat.hs
- Typing https://github.com/input-output-hk/plutus/blob/master/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Core/Type.hs
- Serialization https://hydra.iohk.io/build/14133599/download/1/plutus-core-specification.pdf

View File

@ -1,8 +1,8 @@
# Summary
- [Intro](./introduction.md)
- [Components](./components.md)
- [Untyped Plutus Core](./uplc.md)
- [Guides](./guides.md)
- [Transactions](./guides/transactions.md)
- [Fee estimation without a node](./guides/transactions/fee_estimation.md)
- [Resources](./resources.md)

View File

@ -1,9 +0,0 @@
# Components
The Aiken project is made up of a few different components. The two most important
ones are the high level Aiken language for writing smart contracts and a rust library
for working with Untyped Plutus Core.
## The Language
## Untyped Plutus Core

View File

@ -1,4 +1,48 @@
# Intro
Aiken is a new programming language for developing
Aiken is a new programming language and toolchain for developing
smart contracts on the [Cardano](https://cardano.org) blockchain.
## Philosophy
Our main goal is to improve the smart contract development experience for the Cardano blockchain. Aiken takes inspiration from many modern languages such as gleam, rust, and elm which are known for friendly error messages and an overall excellent developer experience. We believe Cardano deserves a dedicated language with these kinds of features, developed in the open with the community.
## Goals
- We want an easy and safe way to write Cardano smart contracts. We should be able to get started in minutes not days.
- We want a complete and delightful experience. A modern blockchain deserves a modern smart contract toolkit. This includes editor integrations such as LSP and tree-sitter along with fancy error messages.
- We want there to be as little configuration as possible. It should work out of the box and have opinionated reasonable conventions established with the community.
- We want to have a modular design so that components can be picked and chosen as needed. Like the unix philosophy.
## 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.
- [x] bare minimum toolkit for working with untyped plutus core
- [x] serialize plutus core into it's on chain encoding
- [x] deserialize the on chain encoding into plutus core
- [x] Plutus Core interpreter
- [ ] [v0.1.0 - Initial Alpha](https://github.com/txpipe/aiken/milestone/1)
- [x] define aiken as a language
- [x] implement lexing/parsing with pretty error messages
- [ ] type checking and inference
- [ ] uplc code gen
- [ ] [v0.2.0 - Implement standard library
](https://github.com/txpipe/aiken/milestone/2)
- [ ] [v0.3.0 - Testing Framework](https://github.com/txpipe/aiken/milestone/4)
- [ ] [v0.4.0 - Improved Tooling](https://github.com/txpipe/aiken/milestone/3)
- [ ] LSP 🚀
- [ ] syntax highlighting plugins for editors 🎨
## Components
The Aiken project is made up of a few different components. The two most important
ones are the high level Aiken language for writing smart contracts and a rust library
for working with Untyped Plutus Core.
### The Language
### Untyped Plutus Core

7
book/src/resources.md Normal file
View File

@ -0,0 +1,7 @@
# Resources
Below is a list of links to resources we used while building Aiken.
- Encoding/Decoding https://github.com/input-output-hk/plutus/blob/master/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Core/Instance/Flat.hs
- Typing https://github.com/input-output-hk/plutus/blob/master/plutus-core/untyped-plutus-core/src/UntypedPlutusCore/Core/Type.hs
- Serialization https://hydra.iohk.io/build/14133599/download/1/plutus-core-specification.pdf

View File

@ -1 +1,35 @@
# Untyped Plutus Core
## 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.
```sh
# 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
```