@helios-lang/compiler
Version:
Helios is a Domain Specific Language that compiles to Plutus-Core (i.e. Cardano on-chain validator scripts). Helios is a non-Haskell alternative to Plutus. With this library you can compile Helios scripts and build Cardano transactions, all you need to bu
74 lines (49 loc) • 2.81 kB
Markdown
# Helios Lang
Helios is a Domain Specific Language that compiles to Plutus-Core (i.e. Cardano on-chain validator scripts). Helios is a non-Haskell alternative to Plutus.
Helios is purely functional, strongly typed, and has a simple curly braces syntax. It notably supports closures, functions with optional arguments and multiple return values, OOP-like methods, enums as tagged unions, and generics.
The Helios library is written in Javascript, with complete Typescript type-coverage. This library lets you compile Cardano smart contracts and create Cardano transactions. Helios is all you need to build 100% client-side dApps for Cardano.
## Example: time-lock
```
spending time_lock
import { tx } from ScriptContext
struct Datum {
lock_until: Time
owner: PubKeyHash // the owner can always unlock the assets
beneficiary: PubKeyHash // beneficiary can only unlock the assets after 'lockUntil'
}
enum Redeemer {
Cancel
Unlock
}
func main(datum: Datum, redeemer: Redeemer) -> () {
redeemer.switch{
Cancel => {
assert(tx.is_signed_by(datum.owner), "not signed by owner")
},
Unlock => {
now: Time = tx.time_range.start
assert(now > datum.lock_until, "time lock not yet expired")
assert(tx.is_signed_by(datum.beneficiary), "not signed by beneficiary")
}
}
}
```
## User guide
The Helios language and Helios API are covered extensively by the online [book](https://www.hyperion-bt.org/helios-book).
## Online playground
There is an online coding [playground](https://www.hyperion-bt.org/helios-playground?share=bd071424ebb752c3bbb2e2e45074c195).
## VSCode plugin
There is a VSCode plugin called *Helios* that can be installed through the extensions marketplace. Currently it only supports syntax highlighting and syntax error diagnostics. Please help us improve this extension by contributing to the [*helios-ide-plugins* repository](https://github.com/hyperion-bt/helios-ide-plugins).
## Sponsoring
For sponsoring we prefer using the Cardano blockchain itself (instead of Patreon or Github's sponsor system).
Our Cardano address is the same one where the `helioslang` [adahandle](https://adahandle.com/) is located:
```
addr1qxyd3shxugqkrkdpwgjq522cu7h4lkr8qnz9uemd4w68p970n6h44fq8ujuyu807vll9atjpc8z6zl0pyv6n2neezysqv5rjvd
```
Please join our [Discord](https://discord.gg/XTwPrvB25q) and tell us what you'd like your sponsorship to be used for before sending funds.
## Acknowledgements
Early contributors who deserve special acknowledgement:
* [Ch1n3du](https://github.com/Ch1n3du): improved syntax, documentation
* [Tanyalouise](https://github.com/tanthehack): logo
* [Cnftacademy](https://cnftacademy.com/): testing
* [mikky-j](https://github.com/mikky-j): documentation