chore: update readme and book
This commit is contained in:
parent
7ca276bad4
commit
e67aa7b943
61
README.md
61
README.md
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue