Project

Aiken

Aiken is a modern and accessible programming language, specifically created to both simplify and enhance the development of smart contracts on Cardano. It comes in an easy to learn syntax, designed for effortless integration with other tools and languages, plus includes various state-of-the-art features that meet the current expectations of developers.

Goal

Foster growth in the Cardano ecosystem.

In true Open Source fashion, Aiken arose from the dedicated efforts of various individuals. After the original kickoff with the support of TxPipe on the foundational tooling, the Cardano Foundation helped in materialising the ideas behind a smart contract programming language. Both saw the potential of Aiken and how it could foster growth in the Cardano ecosystem. Over the course of its development, Aiken has rapidly grown to become one of the most loved frameworks for building smart-contracts on Cardano with many of the largest dApps migrating to it.

While Aiken-the-language has been mostly stable for a while, its ecosystem of tools keeps evolving and reshaping to ensure the best developer experience possible to its users. This is only truly achievable as a collaborative effort, with more than 40 code contributors and even more contributors providing feedback and ideas constantly. So it is only natural for Aiken to become one of the first projects hosted under PRAGMA as it already embodies the very core principles behind PRAGMA.

Maintainers
Roadmap

Recently

Important milestone recently completed.

Plutus V3 integration

Introduce new Plutus V3 crypto primitives for blst381-12, as detailed in CIP-0381, new bitwise primitives and revised Plutus virtual machine semantic.

Read more
Property-based testing framework

Supercharge the existing unit testing framework with built-in property-based testing capabilities for writing powerful tests executed directly on the Plutus virtual machine.

Read more
Improved safety and devX on boundaries

Perform additional checks to prevent common mistakes with unserialization of data provided to validators. Include also new mechanism for deferring deserialization while preserving useful type information.

Read more

Currently

Items currently being worked on.

Functions export

Export any Aiken function as a standalone Untyped Plutus Core (UPLC) program to be be evaluated via the virtual machine.

Read more
Separate pairs from 2-tuples

Ensure that UPLC pairs have a different syntax and semantic than 2-tuples. The latter are currently treated as pairs, leading to confusion down the line.

Read more
Marlowe acceptance

Marlowe is a great example of a non-trivial validator that comes with a large test suite agnostic to the implementation language. It is, therefore, an ideal test bench to ensure conformance of generated UPLC against an agnostic test suite.

Read more

Next

Upcoming steps already planned for development.

Road to β

Aiken is technically still in Alpha. There are various changes to be brought to the compiler which we've enumerated and gathered under a 'Road to Beta'.

Read more

Under discussion

Discussions and design under consideration.

Constraining generic type arguments
Read more
Function specialization
Read more
Wrapped redeemers in foreign validators
Read more
Constant reference to script hashes
Read more
Allow upper case constants
Read more
Getting started

Explore and contribute.