FAQ
What is Aiken?
Aiken is a modern programming language and toolkit for developing
smart contracts on the Cardano blockchain. It is geared towards robustness
and developer experience.
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.
Why build another smart contract platform?
We love functional programming. Yet, we couldn't help to think that the
current Haskell framework wasn't quite right in terms of developer
experience and felt we could do something about it. So we came up with a
set of shared goals we kept in mind while building Aiken:
- Writing smart contracts should be easy and
safe. You should be able to get started in minutes, not days,
and rapidly build confidence that your on-chain code is doing what is
intended.
- We want a complete and delightful experience. A modern
blockchain deserves a modern smart contract toolkit. You should
be and feel productive when writing contracts. This includes
editor integrations such as LSP and tree-sitter, beautiful error
messages, rapid and intuitive test feedback loop and easy-to-produce
documentation.
- We want there to be as little configuration as
possible. It should work out of the box and establish reasonable
opinionated conventions with the community.
- We want to have a modular design such
that components can be picked and chosen as needed. Like the Unix
philosophy. Aiken is only one part of a much bigger picture; While we
firmly believe it is a great tool, we want to encourage other approaches
and favour interoperability as much as possible.
I thought Cardano smart contracts had to be written in Haskell?
This is a common misconception. The current Cardano node implementation
does indeed happen to be written in Haskell. The virtual machine for
executing smart contracts that comes baked into the node is also
implemented in Haskell. But that does not mean that it is Haskell which
is executed by the smart contract virtual machine.
The virtual machine is a language interpreter which executes a
smart contract language called 'Untyped Plutus Core' (abbrev.
UPLC
) often referred to simply as 'Plutus'.
Yet UPLC isn't something developers are expected to write by hand.
Instead, it is a compilation target (like WebAssembly for the world wide
web). Oddly enough, until recently, the only established framework that
produced UPLC from a high-level syntax was called 'Plutus-Tx' and
happened to be a Haskell framework.
Aiken changes the game by providing a modern framework that compiles
straight to UPLC.
Can I write off-chain/backend code with Aiken?
Our main goal is to improve the smart contract development experience
for the Cardano blockchain. By developing Aiken as a
bespoke language, we can better align its features with what is truly
needed for on-chain development.
We want to keep the language simple and manageable. In a decentralized
architecture, smart contracts present a significant challenge where a
single flaw can escalate into a multi-million financial exploit. More so,
on-chain code typically represents a small fraction of an entire DApp
source code. While writing contracts should be as straightforward as possible,
smart contracts ought to be optimized for review, audit, and static
analysis.
Hence, Aiken is not intended as a general-purpose
language. Rather, it focuses on Cardano and aims for a high-quality
toolkit for developing reliable smart contracts with confidence.
Are there any projects using Aiken? Where can I find them?
We keep an Awesome List
of projects and resources built with and on Aiken. The list contains resources
that we are aware of.
If you have a cool project not listed but want to see it up there, do not hesitate to
make a pull request and introduce yourself!